Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 21,834 posts.
Making Git and Jupyter Notebooks play nice
Summary: jq rocks for speedy JSON mangling. Use it to make powerful git clean filters, e.g. when stripping out unwanted cached-data from Jupyter notebooks. You can find the documentation of git 'clean' and 'smudge' filters buried in the page on git-attributes , or see my example setup below.
Castlevania III Password Algorithm
An explanation of the Castlevania III password algorithm, including name hashes, payload encoding, decoding, special names, and all valid passwords.
Waiting for Postgres 16: Cumulative I/O statistics with pg_stat_io
We talk about querying system wide I/O statistics in Postgres, show several use cases for pg_stat_io, and talk about the future of I/O observability in Postgres.
Highlights from Git 2.23
Take a look at some of the new features in the latest Git release.
A tale about fixing eBPF spinlock issues in the Linux kernel
A system freeze led us deep into Linux spinlock internals, where we helped find not one but three bugs in the kernel's resilient locking code used by eBPF.
How the kids stole the show: Young Coders tutorial at PyCon
Throughout the planning phases of PyCon 2013, for everything we did, we did it bigger than last year. Attendance? We raised the cap to 250...
Anatomy of a SQL Engine
Blog for DoltHub, a website hosting databases made with Dolt, an open-source version-controlled SQL database with Git-like semantics.
Design Issues in LLVM IR
On the whole, LLVM has a well-designed intermediate representation (IR), which is specified in the language reference . However, there are a number of areas where design mistakes have been made. And while the LLVM project is generally open to addressing such issues, mistakes in core IR design tend to be firmly…
Compiler Basics: LLVM
Writing a lisp compiler from scratch in JavaScript: 3. LLVM
A skeptic's first contact with Kubernetes
Key concepts & much deserved YAML ranting
Experiment: The costs of slow build times
How much does it really cost to buy more powerful cloud compute resources for development work? A lot less than you think.
Mistakes I see engineers making in their code reviews
In the last two years, code review has gotten much more important. Code is now easy to generate using LLMs, but it’s still just as hard to review. Many software…
Bringing the web up to speed with WebAssembly
Bringing the web up to speed with WebAssembly Haas et al., PLDI 2017 This is a joint paper from authors at Google, Mozilla, Microsoft and Apple describing the motivations for WebAssembly together w…
Go’s Major Versioning Sucks – From a Fanboy
Learn Go (Golang) by writing real code in this interactive course. Practice structs, interfaces, errors, concurrency, and idiomatic backend patterns.
We switched from Next.js to Astro (and why it might interest you)
Follow the first article of a series in which we'll try to summarize our journey with Astro, sharing many cool little tricks and details we found out (or totally came up with) in the process.
GPT-5.6 Luna vs. GPT-6 Astra: Is a $1.20 Model Good Enough for Code Review?
Run a cheap model on every PR and escalate to a stronger one: on 50 PRs it found 120 verified bugs for $4.13 versus 108 for GPT-5.6 Sol alone.
Ditch your version manager
Try Nix and don't look back.
Writing code with multiple overlapping side effects with a straight face
Practical development throughout the evolution of Windows.
Learning that you can use unions in C for grouping things into namespaces
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…
Why Codeless Software Is Doomed to Fail
Every couple of years, the hope surfaces that a simple graphical interface will replace teams of developers. Business people to quickly and easily create beautiful expressions of their ideas and launch them into production seamlessly. A handful of startups in every generation take up this challenge, and they mostly…
Lessons from Doom (2010)
A high-minded goal like “expand the boundaries of the medium” doesn’t always mean forging ahead in crazy new unknown directions. Sometimes it means examining lost evolutionary lines in game design – picking up ideas that were abandoned long ago and seeing if there’s any new life in them. The game I keep coming back to…
Mercurial: Onward and upward
Automating releases, semantic version bumps, and API calls often involves configuring branch permissions and storing long-lived credentials in pipeline variables. Managing credential rotation adds an ongoing maintenance burden. Today, we’re introducing granular step-level permissions and container tokens in Bitbucket…