Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 1,551 posts.
Take Advantage of Git Rebase
Tap into the Git rebase features to improve your workflow.
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…
Java BitSet performance-flicker mystery
Why does the performance of this prime sieve, using a Java BitSet, flicker between either decent performance and half of that?
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ː …
Deno 1.26 Release Notes
Deno 1.26 adds Cache Web API; improves permission system, experimental npm support, Node.js compatibility; ships with TypeScript 4.8, and more.
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", …
Delayed Job vs. Sidekiq
Let's take a look at the pros and cons of Delayed Job and Sidekiq, two major job processing systems for Rails apps.
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.
Magical Handler Functions in Rust
In this post we take a deeper look into one of the most popular design patterns in Rust web frameworks, the magical handler function.
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…
Racket 8.4
_posted by John Clements_ Racket version 8.4 is now available from https://download.racket-lang.org. Command-line Racket provides a new expression editor by default for its read-eval-print loop (REPL). The new REPL is based on the Chez Scheme expr...
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 ...
How to write a tree-sitter grammar in an afternoon
This article was discussed on Hacker News.
On Device Learning
Before asking the question, how do I build AGI, you first must ask the question, what would I recognize as AGI?
The Tower of Weakenings: Memory Models for Everyone
In my previous article I looked at the ways that Rust could be better at pointers. Half of the problems were fundamental issues that affect basically every programming language that lets you mess with pointers directly, and the other half were rust-specific issues. My article also proposed two solutions: for the…
Compilers and IRs: LLVM IR, SPIR-V, and MLIR
Overall discussion on compilers and IRs (LLVM IR, SPIR-V, and MLIR): why they are in their current manner and how they would evolve
Range joins in DuckDB
DuckDB has fully parallelized range joins that can efficiently join millions of range predicates.
Why is the terminal input so weird?
Learn about the technical architecture of the terminal that makes it very hard to implement rich – or even “normal” – editing features like you’d find in an IDE.
Tailwind CSS v3.2: revisiting my “feature creep” warning
Only nine months after I suggested Tailwind might someday hit an unpleasant inflection point, that may now be happening.
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.
How to make Flappy Bird with C++
A little much about C++, Game Development, Programming and Web