Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 1,001 posts.
Using Mypy in Production
At Spring, we maintain a large Python monorepo with complete Mypy coverage configured under Mypy’s strictest available settings. In short, that means every function signature is annotated and implicit Any conversions are disallowed.
The Musl Preprocessor Debate
Today, I would like to discuss a project that I care very deeply about: the musl libc. One of the most controversial and long-standing debates in the musl community is that musl does not define a p…
You say “cave dweller debugging”, I say debug logging
There are still many situations where it's not feasible to stop a process, attach the debugger, and start futzing with memory. We can argue over whether this is because the industry didn't learn enough from the Pharo folks later. For now, let's pretend that's axiomatic: a certain amount of debugging (and even testing)…
They Called It LISP for a Reason: List Processing (2005)
Lists play an important role in Lisp--for reasons both historical and practical. Historically, lists were Lisp's original composite data type, though it has been decades since they were its only such data type. These days, a Common Lisp programmer is as likely to use a vector, a hash table, or a user-defined class or…
WebAssembly and C++
C/C++-specific WebAssembly notes.
The state of Flow-based Programming
Where Flow-based Programming stands after 50 years since its introduction. What problems it solves today. And what problems it can solve tomorrow for broader Software Engineering industry
Loopr: A Loop/Reduction Macro for Clojure
I write a lot of reductions: loops that combine every element from a collection in some way. For example, summing a vector of integers:
Babashka Clojure nREPL as a system interface
Dmitri's blog about programming, Clojure, and software development
How I learned to stop worrying and love the YAML
Something I miss after emigrating from the UK to the USA is the using the name of a yeast extract based spread as an adjective. To describe something as “marmite”
My Elm Experience
I've been using Elm since about one year back now. At the start of 2021 I began working with a client that had an existing Elm frontend code base and an early stage backend built in Elixir and Phoenix. This post will be about my experiences running face first into Elm. I'll be vague on some details as I can't share…
Piet-GPU Progress: Clipping
Recently piet-gpu has taken a big step towards realizing its vision, moving the computation of path clipping from partially being done on the CPU to entirely being done on the GPU.
A System-Witch’s Package Manager Murder Mystery
It was a calm day on the puppy-linux thinkpad. The CPU was cool, the RAM was operating at double data rate, and a gentle breeze flowed through the chassis as the fan whirred away. A girl wanted to log onto Discord to chat with her friends, but much to her dismay, Discord needed a package update! No matter, such things…
New in Go 1.20: wrapping multiple errors
Go 1.20, which is expected to be released in February 2023, comes with a small change that can possibly improve error handling in applications which heavily use …
Safety: A comparaison between Rust, C++ and Go
Memory safety is a hot topic, but what do we mean by it?
Build Unix, Not Uber
I spent the last three weeks in Seoul, partly visiting family I hadn’t seen in years and partly taking a vacation from my usual work in my usual city in my usual context of life. While I haven’t been able to work much at all, I spent my subway rides and waiting-in-line times reading the Singularity Sky series of…
GNU ed ate my homework
If you have ever ventured into the archives of old UNIX books and mailing lists, you will have undoubtedly come across the legend of ed. ed (pronounced /iː …
GNU/Linux shell related internals
What every SRE should know about GNU/Linux shell related internals: file descriptors, pipes, terminals, user sessions, process groups and daemons # Last updated: Oct 2025 Contents File descriptor and open file description Pipes Process groups, jobs and sessions Terminals and pseudoterminals Despite the era of…
C23 Implications for C Libraries
The upcomming standard C23 has a lot of additions to the C library clause. Most of them are small, some of them are big but optional.
What's in a good error message?
As software developers, we’ve all come across those annoying, not-so-useful error messages when using some library or framework: "Couldn’t parse config file", "Lacking permission for this operation", …
Converting integers to decimal strings faster with AVX-512
In most systems, integers are stored using a fixed binary representation. It is common to store integers using 32-bit or 64-bit words. You sometimes need to convert it to a string. For example, the integer 12345 might need to be converted to the five characters '12345'. In an earlier blog post, I presented the simpler…
Prefix Sum with SIMD
In other words, the $k$-th element of the output sequence is the sum of the first $k$ elements of the input sequence.
Depending in Common Lisp
A while ago I was working on a Common Lisp library that makes use of the Metaobject Protocol . I ran into a few edge cases around dependencies between classes and it took a while for me to figure out how to solve them, so I wanted to write down what I learned in case anyone else might find it useful. This post is an…
Rewriting my toy blockchain in Rust
Made in Notion, the connected workspace where AI agents and teams organize docs, projects and knowledge together.
Generate Python extensions using Nim language
A Python Extension is generally some code written in language other than python to extend the python ecosystem by exposing an interface compatible with Python API.Such extensions are generally in form of compiled code and loaded dynamically by the Python runtime ...