Have you ever found yourself in a situation where you needed to generate unique identifiers (UIDs) for objects, records, or entities within a system? It's a common problem in software development, and there are different schemes to generate UIDs. Each of these schemes has its …
Since I heard a number of people interested in extracting the data from their Twitter archive, I thought it would be beneficial to describe the steps. Assumptions you have already requested your account's Twitter archive via the Twitter site your Twitter archive is …
It was a cold and blustery day, and Susan sat huddled in front of her recent birthday present to herself - a ThinkPad running NixOS - her fingers numb with cold. She had been struggling for hours - well, at least 3 minutes which felt like hours - to establish a connection with …
This part 0 post should work for any developer who wants to get started with Flix. Flix is a programming language that supports constructs native to functional programming languages like Scala and Haskell while supporting row polymorphic extensible records like PureScript and …
One common question I see from developers using Git is how they can review the history of one function, method, or class over time through Git's history of the project. In codebases that have evolved over years, a developer just wants to know how one particular semantic …
Originally published as a Twitter thread starting here. Anyone who has spent any time in either a technical or people management leadership position in software development knows that you need to make seemingly difficult decisions frequently. This week I coached a coworker …
Today I found that there is a difference between enum and const enum in TypeScript in the generated JavaScript. Namely: with a non-const enum the compiler generates an object with key-value pairs. with a const enum the definition alone doesn't generate any code, only …
It recently came to my attention that not everyone overrides the default merge.conflictStyle git-config setting. So in case anyone here wanted to try something new out that would provide more context during a Git conflict resolution scenario here you go. I use diff3 which you …
Note: the code for the TypeScript (to help you follow along) is available here: Encoding Algebraic Data Types in TypeScript code Background Recently I've been reviewing TypeScript code at work. A common pattern I've observed in pull requests and some open source projects …
This was initially published as a section of one of my substack posts. You might be wondering why the term algebraic data types has the word algebra in it. Don’t sweat it if you hated algebra in high school, I will not call on you to solve simultaneous equations or prove by …
/images/car-dashboard-small.webp Photo by Dawid Zawiła on Unsplash This was adapted from a tweet thread on June 3rd, 2020. Notes: all references to $ (dollars) is in reference to US Dollars (USD) latencies are quoted in milliseconds (ms) unless otherwise noted this …
This is an adaptation of a Slack chat explanation from work (slightly reworded to read better for the audience) from work in 2017. Random notes on unikernels Introducing unikernels You might have heard terms like unikernel, nanokernel, or library operating systems. These …
Introduction This post introduces concepts and principles used to design DynamoDB tables as I have been learning how to leverage this technology in a new project. This introduction will compare and contrast the core concepts and ideas with those found in relational database …
One of my favorite subjects as a layperson is economics. I have found many useful applications of methods and concepts to my work in software development, technical leadership, and reliability engineering roles. This is a post to share some of these. A few ideas from economics: …
Originally published as a Gist here: https://gist.github.com/mbbx6spp/60577af8dc4106d6e710cd804292ce20 Minor modifications in formatting and an extra line of no-judgement was added to this text from the original Gist. Purpose, Disclaimer and Confessions This is the (mostly) no …
Introduction What software developer likes surprises, especially in production? Not me. At least not when I am on call. ;) Wouldn't it be great if we were able to reason about our code to make our lives as simple as possible when debugging or eliminate debugging …
An algebraic data type can take many forms: Sum type Product type Hybrid Sum/Product type Recursive type (not covered in this post) Sum Types (aka Tagged Unions) A sum type is a type that has a known and exhaustive list of constructors where a value of that type must …
I am sure most developers (whether Java, Ruby, Python, or other) have used Subversion, Perforce or CVS to manage and control their projects' source, but have you used darcs or git? I'm sure most of you would have heard of git it hosts the Linux kernel code currently. …