Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,546 posts.
The C++ programmer and educator Rainer Grimm has passed away
Dear readers, we are extremely sad to inform you that Rainer passed away on October 6, 2025, surrounded by his closest family. After suffering from life-threatening pneumonia, Rainer decided against further life-sustaining measures that would have severely restricted his life. He passed away peacefully, accompanied by…
Fuzzy string search
Intro Fuzzy search algorithms (also known as similarity search algorithms) are a basis of spell-checkers and full-fledged search engines lik...
Playing with Lasp and CRDTs
For a long time I was looking for some time to play with Lasp: Lasp is a suite of libraries aimed at providing a comprehensive programming system for planetary scale Elixir and Erlang applications. Ye
SQLite transactions and virtual tables
In my previous post I introduced SQL virtual tables and how to use them in Go—registering modules per connection, defining schemas, and querying external sources as regular tables.
Layers in Software: From Data to Value
Then Back in the 2000s, we wrote applications in layers. Presentation layer, client, data transfer, API, business logic, data access, database. We maintained strict separation bet ween these layers…
Type information for faster Python C extensions
Update: The paper version of this post is accepted at PLDI SOAP 2024. Take a look at the preprint (PDF).
Code School is Amazing
My thoughts on Code School, an interactive online marketplace where you can learn to code directly in the browser.
Basic MetaProgramming in Zig
Getting started with Zig's meta programming capabilities by leveraging a few useful functions
Creatively Misusing TLA+
Five not-quite-normal uses
Simple Guide to Finding a JavaScript Memory Leak in Node.js (2015)
Please consider reviewing this guide on Amazon, if you’ll find it helpful. Few months ago, I had to debug a memory leak in Node.js. I found a good number of articles dedicated to the subject…
Compiler basics (5): LLVM system calls
Writing a lisp compiler from scratch in JavaScript: 6. LLVM system calls
The structure of a GCC back end
This is part one of a series “ Writing a GCC back end ”. The GCC back end is configured in gcc/config.host and the implementation is p...
Why we still can't stop plagiarism in undergraduate computer science (2018)
Lessons on incentives and scaling from two years as a teaching assistant
How expensive is integer-overflow trapping in C++?
Integers in programming languages have a valid range but arithmetic operations can result in values that exceed such ranges. For example, adding two large integers can result in an integer that cannot be represented in the integer type. We often refer to such error conditions as overflows. In a programming languages…
Python 2 Is Dead
It's kicked the bucket, it's shuffled off its mortal coil, run down the curtain and joined the bleedin' choir invisible!!
Gaming CS Interviews
Dream of developing software at a prestigious tech company like Google or Facebook, but don't have a CS background? We got your back!
The Changing "Guarantees" Given by Python's Global Interpreter Lock
A look into the implementation details of CPython's Global Interpreter Lock (GIL) and how they changed between Python 3.9 and the current development branch that will become Python 3.13.
Leetcode Considered Harmful
Using an industry wide perspective I will show you the unseen downsides of using leetcode for interviewing software engineers
Why I don’t use CSS preprocessors
I don’t use CSS preprocessors they way many people do. Here’s an attempt to explain why.
Move semantics in Rust, C++, and Hylo
I just finished reading the paper Borrow checking Hylo . It outlines the basic design of Hylo . Hylo is an early-stage programming language, but unlike other contenders of C++, it provides memory safety like rust. Specifically it merges rust’s borrow checking ideas into the framework of moveable value semantics (MVS)…
What is wrong with “A successful Git branching model”?
Update 2018-07. The branching model described here is called trunk based development. I and other people who I collaborated with did not know about the articles that used this name. Nowadays there are excellent web resources about the subject, like trunkbaseddevelopment.com. They have a lot of...
Object Oriented Programming is an expensive disaster which must end
Zet Casino 2026: tysiące gier, bonus powitalny, wpłaty BLIK i krypto, wypłaty w minutach oraz polskie wsparcie 24/7. Sprawdź naszą ofertę.
Types are a basic tool of software design (2018)
Static or dynamic, a program's design is written in its types.
Notes on a Smaller Rust
Many people who use Rust for a bit - especially those who like the language but do not fall in love with it - feel a sense that there must be a smaller, simpler variation on the same theme which would maybe be a little less powerful, but would also be much easier to use. I agree with them, but I think they are almost…