Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,544 posts.
I added some optimizations to my compiler that turns Lisp into JavaScript
Smaller programs that do less work.
Browser Engines 2015: Commit Rates and Active Developer Counts
I used to work as a developer in the “core” group at Opera that developed thePresto web engine. During this period, I often wondered just how many developers...
Writing HTTP Middleware in Go
In the context of web development, "middleware" usually stands for "a part of an application that wraps the original application, adding additional functionality". It's a concept that usually seems to be somewhat underappreciated, but I think middleware is great.
The Six Stages of Debugging (2012)
[ This is not mine. I posted it in the interest of personal archival because the oldest mention I could track down on the web appeared on a now-defunct weblog . In the meantime, Mike W. Cremer (who bills himself The Newton™ Scapegoat ☺ ) has claimed credit for coining it after a particularly frustrating DMA debugging…
Lock-Free Bugs
[ I wrote this post in mid-2014 for debuggers.co, which seems to have gone at least partly defunct, so I am reproducing it here. That site collected answers from programmers to the prompt “What’s the most interesting bug you’ve encountered?” ]
A Forth Vocabulary for Iteration
I recently wrote a small 16-bit Forth for 8086 PCs running DOS. I built the basic one-liner loop words that can trivially be built with j...
Rewriting my toy blockchain in Rust
Made in Notion, the connected workspace where AI agents and teams organize docs, projects and knowledge together.
Anatomy of a Compiler Bug
Some people have a favorite color or a favorite food. It may come as no surprise that I have a favorite compiler bug. Today, I'm going to demonstrate it and pick it apart, a topic suggested by reader Daniel Jalkut.
MySQL Text vs. Varchar Performance
Starting with MySQL 5.0.3, the maximum field length for VARCHAR fields was increased from 255 characters to 65,535 characters. This is good news, as VARCHAR fields, as opposed to TEXT fields, are stored in-row for the MyISAM storage engine (InnoDB has different characteristics). TEXT and BLOB fields are not stored…
Reducing code size in librsvg by removing an unnecessary generic struct
Someone mentioned cargo-bloat the other day and it reminded me that I have been wanting to measure the code size for generic functions in librsvg, and see if there are improvements to be made.
Using Pandoc and Typst to Produce PDFs
UPDATE MARCH 2025: This post, and the template attached, were written for Typst v 0.11 – Typst has upgraded twice since then, and this template will not work with the newer versions of Typst. Please see the new post (Mar 26, 2025) at A New Typst Template for Pandoc
Reverse Engineering Strike Commander
Back in the early 90s, one company was on the bleeding edge of PC gaming: Origin Systems . Their motto was "We Create Worlds" and boy did they deliver: With the Ultima series, Crusader series and Wing Commander series, they consistently took gamer's breath away. One of them took four years and more than a million man…
Small, Freestanding Windows Executables
Recently I’ve been experimenting with freestanding C programs on Windows. Freestanding refers to programs that don’t link, either statically or dynamically, against a standard library (i.e. libc). This is typical for operating systems and similar, bare metal situations . Normally a C compiler can make assumptions…
Needle: A DFA Based Regex Library That Compiles to JVM ByteCode
Many years ago, Kragen complained about the implementation and performance of Java regexes , and suggested that an implementation that emitted JVM bytecode could perform better. It's been a minute, but I'm happy to report that complaining on the Internet has served its purpose.
Augmenting Agile with Formal Methods
I really like the c2 wiki as a historical artifact: a lot of big names in Agile and Extreme Programming argued with each other there.1 One thing they did was the Extreme Programming Challenge, where people tried to test the limits of these approaches. They’d find edge problems (designing databases, remote teams, etc)…
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 ...
Zero-allocation Trie Traversal
As part of a demonstration in an upcoming article , I wrote a simple trie implementation. A trie is a search tree where the keys are a sequence of symbols (i.e. strings). Strings with a common prefix share an initial path down the trie, and the keys themselves are stored implicitly by the structure of the trie. It’s…
Generate QR Codes with Pure SQL in PostgreSQL
As my cat woke me up way too early for a Saturday morning, I decided to put all this extra time (and my ChatGPT Pro subscription) into good use and generated a QR-code generator for PostgreSQL, written as a single pure SQL statement. No external libraries or Postgres extension installation needed! The pqr.sql example…
How to write a tree-sitter grammar in an afternoon
This article was discussed on Hacker News.
Watgo – A WebAssembly Toolkit for Go
I'm happy to announce the general availability of watgo - the W eb A ssembly T oolkit for G o. This project is similar to wabt (C++) or wasm-tools (Rust), but in pure, zero-dependency Go.
Dave Prosser's C Preprocessing Algorithm (2006)
For about five years I've been trying to implement a fully conforming C preprocessor for the front end of the CScout refactoring browser. I've found this to be a fiendishly difficult task. Although what I have written can correctly process million-line real-life projects, every once in a while I come across a…
Create QR codes in Excel
Great to create and know the algorithm of QR code... very information! Thanx Bala
The .NET IL Interpreter
Whilst writing a previous blog post I stumbled across the .NET Interpreter, tucked away in the source code. Although, it I’d made even the smallest amount of effort to look for it, I’d have easily found it via the GitHub ‘magic’ file search:
Two types of C programmers
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Code Smell of the Day: Type Keys (2021)
Note: On the back of some feedback I’ve created a follow-up of this post where I refine the thesis. I’ve left this post as-is for the sake of comparison