-
Software Engineering Interviewing
In August 2020, I made the decision to leave a job without having another one lined up. This post unpacks my experience going through the interviewing wringer with a dozen companies, and details my approach for engaging with software engineering interviews, from beginning to end.
-
Go Learnings and Gotchas
I've spent the latter half of 2019 ramping up on and then using the Go language to write a service in a production environment. Along the way, I kept track of the aspects I struggled with the most and of the features I found helpful to express myself well in that language.
-
AWS Infrastructure Offerings
AWS is ubiquitous in the infrastructure world but the learning curve for other software engineers can be steep. The reference documentation has its merits but lacks a narrative which would allow to learn progressively and pragmatically. This post is the result of my own recent learning experience and summarizes the concepts I've found the most relevant as well as their relationships.
-
The Unicode Algorithms
Beyond the likes of character sets and encodings, Unicode also encompasses abstractions for manipulating text in software. These algorithms are ubiquitous—you use them when you sort the rows of a spreadsheet, or when a filesystem guarantees the uniqueness of a filename.
-
The Unicode Encodings
Unlike most other character sets that predate it, there is no direct equivalence between bytes and a Unicode code point. For programmers, encodings are perhaps the most accessible aspect of the Unicode standard because they are used—explicitly or implicitly—in the vast majority of I/O that involves text.
-
The Unicode Character Set
The character set is the most tangible manifestation of the goal that Unicode set for itself from the very start: providing a unique number for every character. It is the basis for dozens of data formats and other standards that allow software to be more featureful and accessible to people, regardless of their native tongue.
-
I � Unicode
Unicode has risen to become the ruling standard for handling text on billions of computing devices. The role it holds and its growth in scope and complexity make it an indispensable tool for programmers in any capacity to understand and gain control of.
-
I find your lack of 🎉 disturbing
Today's software generally comes out of the box with full Unicode support but that was not always the case. Incompatibilities in terms of character support can occur at any step of the way: from the persistence layer to the programming language to the data format used on the wire.
-
On string lengths
Most programming languages surface the concept of string length in their toolkits as a top-level API. In spite of being a simple concept for humans, it is not as straightforward for computers, and misunderstandings on the developer side can lead to subtle bugs.