CRDTs and Collaborative Playground
Learn about Conflict-Free Replicated Data Types, Yjs, and how we built a collaborative, real-time playground in a web browser.
Monads are like burritos (2009)
From the highly eclectic blog of Mark Dominus
A dictionary of single-letter variable names
Haskell’s expressive type system means that type signatures can carry a lot of information. Haskell’s polymorphism means that you sometimes write functions that work across an enormous range of types, and are left wondering “what do I actually call my variables?”. It is often the case that there’s nothing to say…
Parsing Awk Is Tricky
A somewhat compact implementation of the awk programming language
Evolving GitHub Issues
GitHub Issues has been how the world’s best software teams collaborate since it first launched in 2009. Today we are excited to unveil a major evolution of issues and projects,…
The Law of Leaky Abstractions (2002)
There’s a key piece of magic in the engineering of the Internet which you rely on every single day. It happens in the TCP protocol, one of the fundamental building blocks of the Internet. TCP…
Design Patterns Are Temporary, Language Features Are Forever
Design patterns are these cool things that make you go 'hell yeah' because they make a certain problem easier to deal with. Whether it's applicable to all languages, or due to a language constraint, they're pretty nice. Of course, some people go crazy with them rather than doing the simple thing that works. Other…
I Built an Ld_preload Worm
Teenagers' hands are the devil's playthings.
Creating a matchmaker for your multiplayer game
Don't test in production. Test in simulation!
Serving a website from a Git repo without cloning it
It's fairly common to use git repositories as a vehicle for serving websites. The webdev pushes their changes to some branch of a publicly available git repository, and some web server somewhere serves the current tip of that branch as the website. Github Pages would be the most famous example of this.
An Overview of the Starlark Language
Laurent Le Brun's blog
Godot as an Embeddable Game Engine
Miguel de Icaza's Blog
Overview of cross-architecture portability problems
Ideally, you’d want your program to work everywhere. Unfortunately, that’s not that simple, even if you’re using high-level “portable” languages such as Python. In thi…
Inversion: Fast, Reliable Structured LLMs
We create the world's fastest and most efficient AI.
You can contribute to KDE with non-C++ code
Lots of underrated areas to work on
GitButler now supports first class conflicts, making rebasing less annoying
GitButler now supports first class conflicts, which makes rebasing much less annoying. What is "fearless rebasing"?
CADing and 3D printing like a software engineer
Fang-Pen Lin's blog about programming
YX Problem
Software people are always all up in the XY problem: someone asks about how to do X when what they're really trying to solve is Y. I find the YX problem much more frustrating: where software people decide that they want to answer question Y even though what someone asks is question X. I've seen...
Using the 5S Principle in Coding
A few years ago, I read The Toyota Way, driven by my curiosity about the origins of Agile software development. However, I became even more…
Generalizing Support for Functional OOP in R
R has built-in support for two functional Object Oriented Programming (OOP) systems: S3 and S4, corresponding to the third and fourth version of the S language, respectively. The two systems are largely compatible; however, they are two fundamentally distinct systems, two systems for a user to understand, two systems…
90x Faster Than Pgvector – Lantern's HNSW Index Creation Time
Index creation time is a critical database metric. Learn more about how Lantern enables 90x faster index creation times than pgvector, and how Lantern compares to Pinecone.
Introduction to Golang Preemption Mechanisms
A short explanation of what is preemption and how it works
Algebraic effects, ownership, and borrowing
Algebraic Effects are a useful abstraction for reasoning about effectful programs by letting us leave the interpretation of these effects to callers. However, most existing literature discusses these in the context of a pure functional language with pervasive sharing of values. What restrictions would we need to…
Rails 8.0 Released
Deploying modern web apps – with all the provisions needed to be fast and secure while easily updateable – has become so hard that many developers don’t dare do it without a PaaS (platform-as-a-service). But that’s ridiculous. Nobody should have to pay orders of magnitude more for basic computing just to make…
The Functional Programming Hiring Problem
If you've ever seen a discussion of functional programming languages on the Internet, you'll have probably noticed one talking point in particular that comes up frequently. For the sake of generalization, let's make up a hypothetical functional programming language called Gooby. In these discussions, often someone…
Performance Analysis of Python's Dict() and {}
Some time ago, during a code review, I had a discussion with a colleague of mine about preferring dict() over {} in new Python code. They argued that dict() is more readable — and expresses intent more clearly — therefore should be preferred. I wasn’t convinced by that, but at that time I didn’t have any…