Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 21,834 posts.
Improve developer habits by showing time cost of DB queries
This is the first in a series of posts where I share a quick, easy to implement tip that I’ve found useful in my development career
Datasette Apps: Host custom HTML applications inside Datasette
Today we launched a new plugin for Datasette, datasette-apps, with this launch announcement post on the Datasette project blog. That post has the what, but I’m going to expand on …
Covariance and Contravariance
Subtypes and supertypes are a common part of modern programming. Covariance and contravariance tell us where subtypes are accepted and where supertypes are accepted in place of the original type. This shows up frequently in most of the programming most of us do, but many developers are unaware of the concepts beyond a…
Improving Emacs Isearch Usability with Transient
Emacs incremental search (isearch) has an embarrassingly rich feature set. That said, I rarely use isearch beyond its basics for the twofold reasons: There are many isearch commands that are...
Xanadu was waiting for agents
From the Zed Blog: Ted Nelson specified the docuverse sixty years ago. The technology finally arrived, and so did its native users.
Announcing the new Roslyn-powered .NET Framework Reference Source
In 2007 ScottGu's team announced they were releasing the .NET Framework source ...
Self-Enforcing Protocols
There are several ways two people can divide a piece of cake in half. One way is to find someone impartial to do it for them. This works, but it requires another person. Another way is for one person to divide the piece, and the other person to complain (to the police, a judge, or his parents) if he doesn’t think it’s…
When URL parsers disagree
Discovery and walkthrough of CVE-2023-38633 in librsvg, when two URL parser implementations (Rust and Glib) disagree on file scheme parsing leading to path traversal.
FogBugz goes dark
Today I got an email titled ‘Your Manuscript Account Balance’ which said: Your Manuscript account is now in arrears in the amount of $31.25. Use this link to specify a credit card for y…
What happens when you open a terminal and enter `ls’
This article explores how terminal emulators function, decoding the process of sending commands to the shell for execution. Unveil the mystery behind what happens when you open a terminal and enter Is.
The back cover of C++: The Language raises questions not answered by front cover
Not doing the reading.
Ideas for Game Clones to Code (2012)
So you know a little bit about programming (perhaps you've read the free book, "Invent Your Own Computer Games with Python" , a free programming book for beginners whose author shamelessly plugs at every chance) but you want to get better at coding. You can't seem to find any open source projects that are at your…
Hotpatching a C Function on x86
In this post I’m going to do a silly, but interesting, exercise that should never be done in any program that actually matters. I’m going write a program that changes one of its function definitions while it’s actively running and using that function. Unlike last time , this won’t involve shared libraries, but it will…
Typed Python: new Mypy release
I just uploaded version 0.4 of mypy-lang to PyPI ! This release focuses on performance improvements, usability improvements and bug fixes....
A first look at Django's new background tasks
Django 6.0 introduces a built-in background tasks framework in `django.tasks`. But don't expect to phase out Celery, Huey or other preferred solutions just yet.
Evolving the Go Standard Library with math/rand/v2
Go 1.22 adds math/rand/v2 and charts a course for the evolution of the Go standard library.
Building a lower-latency GC
We’ve been doing a bunch of work recently on improving the responsiveness of OCaml’s garbage collector. I thought it would be worth discussing these developm...
Why does Sattolo's algorithm produce a permutation with exactly one cycle?
I recently had a problem where part of the solution was to do a series of pointer accesses that would walk around a chunk of memory in pseudo-random order. Sattolo's algorithm provides a solution to this because it produces a permutation of a list with exactly one cycle, which guarantees that we will reach every…
Introducing pgzx: create PostgreSQL extensions using Zig
We are excited to introduce pgzx, a framework for creating Postgres extensions using the Zig programming language.