Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 1,116 posts.

2024
241

Aerc: A well-crafted TUI for email

Aerc is a TUI email client. It had its first release ~4 years ago. This makes it a “baby” compared to most of its “competitors” (Pine was released in 1992, Mutt in 1995). I heard about this program shortly after its first release but ignored it at the time, because I was still reasonably happy with Thunderbird and it…

244

Speeding up Ruby by rewriting C in Ruby

There is a recent language comparison repo which has been getting shared a lot. In it, CRuby was the third slowest option, only beating out R and Python. The repo author, @BenjDicken, created a fun visualization of each language’s performance. Here’s one of the visualizations, which shows Ruby as the third slowest…

250

The Rust calling convention we deserve

I will often say that the so-called “C ABI” is a very bad one, and a relatively unimaginative one when it comes to passing complicated types effectively. A lot of people ask me “ok, what would you use instead”, and I just point them to the Go register ABI , but it seems most people have trouble filling in the gaps of…

251

What's New in Neovim 0.10

Neovim 0.10 was the longest release cycle since the heady days of the 0.5 release. There are a ton of new features in this release (as well as some breaking changes), so be sure to check the full release notes. You can view the release notes directly in Nvim with :h news. The news file includes information on new…

252

I wrote a new JIT compiler for PostgreSQL

Sometimes, I don’t know why I do things. It’s one of these times. A few months ago, Python 3.13 got its JIT engine, built with a new JIT compiler construction methodology (copy-patch, cf. research paper ). After reading the paper, I was sold and I just had to try it with PostgreSQL. And what a fun ride it’s been so…

253

Gnome Files: A detailed UI examination

A great amount of my writing on this site revolves around complaining about modern user interface design . Some people agree with me, some don't. Most probably don't care at all. That's fine. What I find interesting is that many (but not all!) people who disagree either present extremely specific non-argument nitpicks…

258

Conditional Git Configuration

Building on the earlier article on automatically transforming Git URLs, I’m back with another article on a (potentially powerful) feature of Git—the ability to conditionally include Git configuration files. This means you can configure Git to be configured (and behave) differently based on certain conditions, simply…

262

The Elegance of the ASCII Table

ASCII, a standard whose legacy defines to this day how most of the letters and numbers in your computer get encoded into ones and zeroes, is elegant and beautiful. Via lessons in computer history, punched tape, and typewriters, I'd love to share some of its logic with you.

266

Game Programming in Prolog

This article explains how a game can be made in Prolog by leveraging the hidden power of logic programming. Inspired by the elegance of data-driven design and declarative programming paradigms, I will be explaining a new way of designing game rules which can at the same time be used as the source code of the gameplay…

268

Programming Zero Knowledge Proofs: From Zero to Hero

Learn to write and modify Zero Knowledge Proofs from scratch. You'll build a digital signature scheme using hash-based commitments, gaining practical ZKP programming skills and intuition along the way. By the end, you'll have all the tools you need to implement things like group signatures.

270

Against Best Practices

I have come to believe that by and large “best practices” are doing more harm than good. Not necessarily because they’re bad advice as such, but because they’re mostly pounded by either 1) various types of zealots, idiots, and assholes who abuse these kind of “best practices” as an argument from authority, or 2)…