Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 21,828 posts.
OCaml: what you gain
Way back in June, in Replacing Python: second round, I wrote: The big surprise for me in these tests was how little you lose going from Python to …
The Design of Software is a Thing Apart
Why code can't replace design docs: three examples (testing, coupling, intent) of design information that cannot be recovered from code alone.
What senior engineers do: fix knowledge holes
I had a bad week a few weeks back, and got together with a friend and former colleague. We started trading war stories. He mentioned one time when he was working for a company which had both a desktop client and a server component. The communication between the two pieces of the system was completely, utterly…
A Pipeline Made of Airbags
Immutable infrastructure and its tooling has obvious benefits, but the way its current adoption is being done is locking us up in a room whose walls are padded with yaml and we could be losing a lot.
OpenJDK now available for Windows
We are pleased to announce the availability of OpenJDK 8 for Windows. OpenJDK is a fully open-source implementation of the Java SE specification. It is comparable in performance to Oracle and IBM
AngularJS 1.0 released
AngularJS lets you write web applications as if you had a smarter browser. It lets you extend HTML's syntax to express your application's components clearly and succinctly and lets use standard HTML as your template language. And it automatically synchronizes data from your UI (view) with your JavaScript objects…
Use Git tactically
How you can use micro-commits to effectively apply the Strangler Fig pattern.
Using AI for Coding: My Journey with Cline and LLMs
How I leveraged AI tools like Cline to enhance the UI/UX of a website and streamline backend tasks. From redesigning pages and translating content to navigating the benefits and challenges of AI-assisted development, this blog post highlights the potential of using large language models to boost productivity while…
Emacs 31: An unofficial guide to Markdown-ts-mode
Rahul's Blog
Why I'm writing a Scheme implementation in 2025: Async Rust
I really love Rust. I’ve been using it as my language of choice for about ten years now. I believe that it is a remarkably well designed language, and that includes the parts that are often most criticized, most notably async.
Wasmer 5.0
We are thrilled to announce the release of **Wasmer 5.0**, the latest milestone in our journey to make WebAssembly the greatest tool for executing softw...
PyPy v7.0.0: triple release of 2.7, 3.5 and 3.6-alpha
The PyPy team is proud to release the version 7.0.0 of PyPy, which includes three different interpreters: PyPy2.7, which is an interp...
My new favorite vim/tmux bug
This week, I'm grateful that my coworkers know to come grab me if something seriously weird is going on, because it...
Emacs standing alone on a Linux Kernel
Nano How-To explaining how to setup a root file system with only emacs.
Representing SHA-256 Hashes as Avatars
How to turn 256 bits of entropy into a beautiful, avatar-friendly circular SVG: the Hashvatar.
Found a program I wrote in 1981 and decided to bring it back to life
When you find a weird program from four decades ago and realize that it's yours.
Zig language server and cancellation
I already have a dedicated post about a hypothetical Zig language server. But perhaps the most important thing I've written so far on the topic is the short note at the end of Zig and Rust.
Using a Raspberry Pi as a Bluetooth Speaker with PipeWire
Using PipeWire, WirePlumber and a Raspberry Pi, you can create an audio bridge between a Bluetooth® device and an analog speaker system. Here's how.
Structuring Clojure applications
Dmitri's blog about programming, Clojure, and software development
Setting the TZ environment variable avoids thousands of system calls (2017)
In this article, you can find how setting the TZ environment variable can prevent thousands of system calls.
Clojure is Capable
So, given all of that, lets dive into the meat of the article. What are we going to accomplish in Clojure today?