New
The latest blog posts to take off on Hacker News. 21,821 posts.
An interactive intro to CRDTs
CRDTs don't have to be all academic papers and math jargon. Learn what CRDTs are and how they work through interactive visualizations and code samples.
Strong static typing, a hill I'm willing to die on
This is a post about strong static typing, why I feel strongly about the topic, and some of the ways we utilize the Rust type system at Svix.
Honey, I shrunk the NPM package
Have you ever wondered what lies beneath the surface of an npm package? At its heart, it’s nothing more than a gzipped tarball. Working in software development, source code and binary artifacts are nearly always shipped as .tar.gz or .tgz files. And gzip compression is supported by every HTTP server and web browser…
Pgroll: zero-downtime, reversible schema migrations for Postgres
We are excited to ship the first version of pgroll, a command line tool that offers safe and reversible schema migrations for PostgreSQL
Extism makes WebAssembly easy
An exploration of how Extism makes it easy to use WebAssembly
The 300% Production Problem
Earlier this year, I attended CfgMgmtCamp in Ghent and listened to Adam Jacob’s “What if Infrastructure as Code never existed” keynote. Note: I’d like to extend a huge thanks to
My views on NeoHaskell
A rundown and critique of the NeoHaskell project
Python 3.12
The official home of the Python Programming Language
What every software developer must know about Unicode in 2023
Modern extension to classic 2003 article by Joel Spolsky
32 MiB Working Sets on a 64 GiB machine
Memory is a relatively scarce resource on many consumer computers, so a feature to limit how much memory a process uses seems like a good idea, and Microsoft did indeed implement such a feature. Ho…
Goodbye integers, hello UUIDv7
The journey Buildkite took from sequential integer primary keys, through randomly generated UUIDs, to adopting time-ordered UUIDv7 — and the database index tradeoffs along the way.
Using Emacs as $EDITOR
A post on how I configure ZSH and Emacs in order to use the latter as $EDITOR.
An easy-to-implement, arena-friendly hash map
My last article had tips for for arena allocation . This next article demonstrates a technique for building bespoke hash maps that compose nicely with arena allocation. In addition, they’re fast, simple, and automatically scale to any problem that could reasonably be solved with an in-memory hash map. To avoid…
-Werror Is not your friend (2017)
22 May 2017 by Phillip Johnston • Last updated 27 October 2023I want to make a few points up front to short-circuit common misunderstandings with this article: I have a zero warning policy on my projects. I turn on a lot of warnings. -Wall, -Wextra, and a whole host of specific warning flags. I supplement … Continue…
AdaCore Announces Gnat Pro for Rust
For the first time, AdaCore’s GNAT Pro subscribers will be able to develop safety- and security-certifiable embedded applications using Rust while…
Reorient GitHub pull requests around changesets
I've had the experience of using GitHub as a maintainer for very large open source projects (1000+ contributors), as an engineer for very large closed source corporate projects, and everything smaller. Through those experiences up to today, GitHub pull requests is where I spend almost all of my time while on GitHub…
Adding runtime benchmarks to the Rust compiler benchmark suite
This post describes the design and implementation of a runtime benchmark suite for measuring the performance of Rust programs, which was recently added into the Rust compiler suite. I have recently blogged about how the whole benchmark suite works, so feel free to read that post first if you want to gather a bit more…
Trains on another level
Hello! The code refactor of rails presented last week is great, but the motivation for such a task wasn't quite just some shape changes for rails. As explained last week, we can now define any kind of rail shape, and we had some very specific shapes in mind all along...
Publishing my first game using PICO-8
TL/DR; Play/Download a copy from itch.io I had always wanted to create games. In fact its one of the reasons I went down the development path. For various reasons I never invested enough time …
Draculark: Mudlarking and vampire hunting game in APL for the Commodore SuperPET
Mudlark on the River Thames foreshore by day, then hunt vampires at Carfax Abbey by night. A new game written in APL on the Commodore…
MMO Architecture: Source of truth, Dataflows, I/O bottlenecks and how to solve
More on MMO Architecture:- MMO Architecture: client connections, sockets, threads and connection-oriented servers- MMO Architecture: Optimizing Server Performance with Lockless Queues- MMO Architec…
Things Every Hacker Once Knew (2017)
One fine day in January 2017 I was reminded of something I had half-noticed a few times over the previous decade. That is, younger hackers don’t know the bit structure of ASCII and the meaning of the odder control characters in it.
What codegen is good for
Codegen isn't a replacement, but an extension of your programming. In this post, we share recommendations for using codegen to augment your workflows.
How async/await works internally in Swift
You probably know how to use async/await. But have you ever wondered how it works under the hood?
The saga of the Closure compiler, and why TypeScript won
This post looks at the Closure Compiler, Google's tool from the mid-2000s for adding types to JavaScript. It looks at how its focus on minification led to very different design choices than TypeScript, and how this and a few other factors led to TypeScript becoming the ubiquitous solution for JavaScript + types. The…
A gentle introduction to static analyzers for C
One of the great thing about C are the many fairly mature tools in the ecosystem. The bad news however is that most educational materials don't teach them and thus many beginners (and sometimes even experienced) developers have absolutely no awareness that these tools even exists.
Rust vs Go: A Hands-On Comparison
Rust versus Go is a controversial topic that pops up from time. In this post, we will compare both languages in the context of web development by writing a small web service which shows weather data in both languages.
Deno Queues
Introducing Deno Queues - zero config, scalable messaging with a guaranteed at-least-once delivery. This new primitive builds on the foundation set by Deno KV, and is available today in the Deno JavaScript runtime and Deno Deploy.