Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 1,001 posts.
What’s new in Emacs 28.1?
Learn what's new in Emacs 28.1
I became the world's most prolific DJ, using code
Or a clickbait title: How I became the world’s most prolific DJ, using code.This week I stumbled across a cool project: All The Music.Damien Riehl (programm...
Falsehoods programmers believe about email
In the spirit of falsehoods programmers believe about names and time, here’s some falsehoods about email which are all too common.
A tiny Docker image to serve static websites
The smallest Docker image to serve static websites
Why LSP?
LSP (language server protocol) is fairly popular today. There's a standard explanation of why that is the case. You probably have seen this picture before:
There’s No Such Thing as Clean Code
Everyone seems to be striving for ‘clean’ code at the moment. You can’t read a blog post without the author telling you how clean their approach is. Engineering teams get together and discuss which of the possible solutions is the cleanest. Other developers assure you that they practice ‘clean code’.
A neat XOR trick
Looking over the solutions mega-thread , it seems like not many people discovered this trick; when I posted about it , people found it to be noteworthy.
Distributed Systems Shibboleths
Shibboleths are historically a word or phrasing that indicate membership in a particular group or culture. I was introduced to the term in the West Wing where the President needed to verify the veracity of a person’s claims of religious persecution.
How UTF-8 Works
If you're anything like me, you love emojis! Emojis appear like an image on the screen, but they aren't an image like a PNG or JPEG. What do emojis look like to computers? 

0x820x820x980...
Copilot Internals
Hacky repo to see what the Copilot extension sends to the server
Accidentally making a language, for an engine, for a game
It's a wise saying, because we game developers have so much fun making the underlying foundations, that we never get around to adding the actual gameplay.
Software horror show: SAP Concur
From the highly eclectic blog of Mark Dominus
Dear sir, you have built a compiler
I am afraid to inform you that you have built a compiler. I know you wanted a “simple prototype” that would just add that one feature to your programming model. You said that “SSA is an overkill” and “it’s just way too much infrastructure to maintain for a simple task” and yet, six months later, you have pile of…
Rust is actually portable
Gautham's Blog
Automatic supercuts on the command line with Videogrep
I’ve been working on some long-needed updates to Videogrep , my command-line tool that automatically generates supercuts. These updates were motivated in part by a 10 week class I recently developed and taught at the School for Poetic Computation called Scrapism (web-scraping-as-art). The class includes a section on…
Git In Two Minutes (updated after 8 years)
A minimal guide to everyday Git for solo developers: initialize a repo, add files, commit changes, view history, and restore earlier versions.
What it takes to make a game by yourself
Macrocosm is a mobile game that takes you from atom to galactic empire across seven interconnected stages where making progress in one stage gives you a boost in the next! This post is a deep dive into the (nearly) four years of free time I spent making it.
Learn TLA+
tl;dr: online TLA+ manual/advanced techniques/examples here. TLA+ is a tool for testing abstract software designs. I first stumbled on it in 2016 and found it so useful I wrote a free online guide to help others learn it. Then I decided the guide wasn’t good enough and wrote Practical TLA+ in 2018. Then I decided the…
The joy of building a ray tracer, for fun, in Rust
TLDR? You can find the code and a bunch of examples on GitHub at dps/rust-raytracer. Over the holiday break, I decided to learn Rust. Rust is a modern systems programming language which has a really interesting type system. The type system can catch broad classes of common programming mistakes - e.g. ensuring memory…
I accidentally used YAML.parse instead of JSON.parse and it worked
How I stumbled upon the fact that YAML is a superset of JSON.
I 10x'd a TI-84 emulator's speed by replacing a switch-case
There’s a javascript emulator for the TI83+, TI84+, and TI84+CSE calculators called jsTIfied, which was written by Christopher Mitchell, founder of the calculator fan site cemetech.net. There’s not a whole lot of reasons to use it over something else if you’ve got a native option available, but if you don’t it’s…
Advice for the next dozen Rust GUIs
A few times a week, someone asks on the #gui-and-ui channel on the Rust Discord, “what is the best UI toolkit for my application?” Unfortunately there is still no clear answer to this question. Generally the top contenders are egui, Iced, and Druid, with Slint looking promising as well, but web-based approaches such…
How Uber Uses Zig
I talked at the first Zig meetup in Milan about Uber's early experience with Zig: a little about how Uber uses Zig and more about my experience of bringing Zig to Uber, from both technical and social aspects.
Pay attention to WebAssembly
Read in Japanese thanks to the folks at POSTD.
CRDT: Fractional Indexing
Collaborative peer-to-peer applications sometimes need to operate on sequences of objects with a consistent order across all peers. For example, a peer-to-peer photo album application might need to sync the order in which photos appear in an album.
Vim prank: alias vim='vim -y'
Vim easy mode is tough to use for seasoned users!
Go performance from version 1.2 to 1.18
Shows how much the performance of Go has improved from version 1.2 through to 1.18 -- in its compiler, runtime, and libraries.