That time I recreated Photoshop in C++ • F055
As I’m getting older I look back on all the things I’ve done as a creative...
Decoding JSON sum types in Go without panicking
14 March, 2025 The Go programming language doesn't have native support for sum types, but we'll...
Is your Rails application special?
Legacy Rails applications can be unpredictable, so never assume anything about their behavior. The first step...
did u ever read so hard u accidentally wrote?
Owning a production Postgres database is never boring. The other day, I’m looking for trouble (as...
A look at Firefox forks [LWN.net]
This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and...
An introduction to Magit, an Emacs mode for Git
Magit is the sweetener that masks the bitter taste you get when you have to commune...
What are you doing this weekend? | Lobsters
Feel free to tell what you plan on doing this weekend and even ask for help...
Enhancing CA Practices: Key Updates in Mozilla Root Store Policy, v3.0 – Mozilla Security Blog
Mozilla remains committed to fostering a secure, agile, and transparent Web PKI ecosystem. The new Mozilla...
Typestate Programming - The Embedded Rust Book
The concept of typestates describes the encoding of information about the current state of an object...
What Programming Concepts do you Struggle to Grok or Use in Production? | Lobsters
For me, type magic whether Haskelly or Idrisy dependent types evades me. A lot of modern...
It's not cheating if you write the video game solver yourself | Robert Heaton
My wife and two little boys sometimes go on trips to see friends or family for...
Solving the world's oldest board game
A friend of mine worked on this, and it’s crazy, 275 million game states later, the...
WebAssembly from the Ground Up – learn WASM by building a compiler | Lobsters
Hi! We (pdubroy & marianoguerra) just launched an online book called WebAssembly from the Ground Up....
Something Is Rotten in the State of Cupertino
In the two decades I’ve been in this racket, I’ve never been angrier at myself for...
Semgrep | Upgrading Semgrep from OCaml 4 to OCaml 5
OCaml 5 introduced numerous changes. Perhaps the largest and most-anticipated was the introduction of multicore support,...
Traversal-resistant file APIs - The Go Programming Language
Damien Neil 12 March 2025 A path traversal vulnerability arises when an attacker can trick a...
Carefully But Purposefully Oxidising Ubuntu
This article was originally posted on the Ubuntu Discourse, and is reposted here. I welcome comments...
Blend2D
It's been some time I have written about a High-Performance QOI Codec, which joined other codecs...
Haiku Activity & Contract Report, February 2025
This report covers hrev58584 through hrev58696. Applications jscipione fixed opening folders by double-clicking the “Location” column...
The Art of Formatting Code · mcyoung
Every modern programming language needs a formatter to make your code look pretty and consistent. Formatters...
Translating bzip2 with c2rust - Blog - Tweede golf
The work on the project is kindly funded by NLnet Foundation.This article was originally posted on...
(Re)writing an interpreter in Rust
Two years ago I wrote my first interpreter for a toy programming language called Monkey, in...
How AfterHour built an ultra-scalable chat service in one month with Rama
"I built my first chat system in 1999 on the IRC protocol, cofounded a startup for...
Every line of code is always documented
Every line of code comes with a hidden piece of documentation. Whoever wrote line 4 of...
On Naming Things
So far as I’ve bothered to think, there are two modes of naming things. The first...