Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,544 posts.
On Cache Invalidation: Why Is It Hard? (2018)
Many people must have heard this quote (by Phil Karlton) many times: There are only two hard things in Computer Science: cache invalidation and naming things. Two days ago, Nick Tierney mentioned it …
Writing a competitive BZip2 encoder in Ada from scratch in a few days (2024)
Spoiler : it is also likely already the best BZip2 encoder for a given block size. See the green charts below. Note for subscribers: if you...
Transcoding Unicode with AVX-512: AMD Zen 4 vs. Intel Ice Lake
Most systems today rely on Unicode strings. However, we have two popular Unicode formats: UTF-8 and UTF-16. We often need to convert from one format to the other. For example, you might have a database formatted with UTF-16, but you need to produce JSON documents using UTF-8. This conversion is often called…
Sed challenge: join cal -y months into a single column
This is a little sed challenge that ocurred to me somewhat recently, when I wondered how many weeks were between 2 dates. Of course, I just looked at the calendar and counted, but then I wondered what kind of sed script I’d need in the middle of a cal -y | ... | wc -l pipeline to get the same answer.
What canceled my Go context?
How Go 1.20's WithCancelCause and Go 1.21's WithTimeoutCause let you attach a reason to context cancellation, plus a gotcha with manual cancel and the stdlib pattern that covers every path.
Tokio internals: Understanding Rust's async I/O framework
Tokio is a Rust framework for developing applications which perform asynchronous I/O — an event-driven approach that can often achieve better …
Design Patterns Are Temporary, Language Features Are Forever
Design patterns are these cool things that make you go 'hell yeah' because they make a certain problem easier to deal with. Whether it's applicable to all languages, or due to a language constraint, they're pretty nice. Of course, some people go crazy with them rather than doing the simple thing that works. Other…
Translation Units Considered Harmful?
area being the function you really care about it is defined first - after all, code reads from top to bottom.
Things that have a bigger impact than coding assistants
Here are 5 factors that make a bigger difference to software development outcomes than “A.I.” coding assistants, but teams don’t address because they’re “old news, gra…
Oh, Go Ahead, Overthink FizzBuzz (2008)
I gave the best programming interview answer I may have ever given last Friday. The interviewer hauled out FizzBuzz and asked me to solve it. It took me a minute to stop laughing. FizzBuzz is a brain-dead simple programming problem, used pretty much to tell if a developer has a pulse at all. It is…
Notes on Virtual Threads and Clojure
Virtual Threads are an excellent addition to Java platform and here's how Clojure is going to benefit from it.
I Built an Ld_preload Worm
Teenagers' hands are the devil's playthings.
Strange C Syntax
In my attempts to learn the C programming language well enough to write my own C compiler , I've encountered some very interesting examples of C syntax that you generally don't see every day. All of these examples you'll see here will compile without warnings or errors even with very strict compiler flags in gcc and…
D’s Garbage Collector Problem
One of the biggest issues with Higgs, the JIT compiler I’m working on, is that the compilation times are too slow. The performance of the compiled machine code that Higgs produces is now fair…
Keeping Passwords in Source Control
I learned a neat tip from my co-worker, Craig Silverstein ( more on Craig joining Khan Academy ), recently and I thought others might find it to be useful.
Inverting the Xorshift128 random number generator
CVE-2025-7783 is a very recent vulnerability affecting a lot of applications in the Node.js ecosystem including those which use axios or the deprecated request library. In all honesty, this vulnera…
Serving a website from a Git repo without cloning it
It's fairly common to use git repositories as a vehicle for serving websites. The webdev pushes their changes to some branch of a publicly available git repository, and some web server somewhere serves the current tip of that branch as the website. Github Pages would be the most famous example of this.
Things Reacters do that Re-framers avoid
JavaScripters often complain about the complexity of React. But to ClojureScripters, React is very nice. What's the difference? In this article, we explore 6 mistakes Reacters make, including mutable state everywhere, Lifecycle Methods and, non-reusable components.
An Overview of the Starlark Language
Laurent Le Brun's blog
How to make Flappy Bird with C++
A little much about C++, Game Development, Programming and Web
Software engineering books to read and reread
Advanced Web Application Architecture allows you to spot what kind of code you're dealing with:
Running Python code in a sandbox with MicroPython and WASM
I’ve been experimenting with different approaches to running code in a sandbox for several years now, but my latest attempt feels like it might finally have all of the characteristics …