He Chunhui's Tiny386 Turns an ESP32-S3 into a Fully-Functional 386-Powered PC
Judge says Education Dept partisan out-of-office emails violated First Amendment
Court Judge Rules Flock Safety camera data is not exempt from PRA [WA State]
Characterizing the American Upper Paleolithic
Humanity's Endgame
OpenAI: Our new model GPT-5-Codex-Mini – a more cost-efficient GPT-5-Codex
Ironclad – formally verified, real-time capable, Unix-like OS kernel
IP blocking the UK is not enough to comply with the Online Safety Act
Debugging BeagleBoard USB boot with a sniffer: fixing omap_loader on modern PCs
Largest cargo sailboat completes first Atlantic crossing
Avería: The Average Font (2011)
WriterdeckOS
Marko – A declarative, HTML‑based language
Opencloud – An alternative to Nextcloud written in Go
Cloudflare scrubs Aisuru botnet from top domains list
52 Year old data tape could contain Unix history
Ticker: Don't die of heart disease
An Algebraic Language for the Manipulation of Symbolic Expressions (1958) [pdf]
Study identifies weaknesses in how AI systems are evaluated
Making Democracy Work: Fixing and Simplifying Egalitarian Paxos
Valdi – A cross-platform UI framework that delivers native performance
OpenAI employees… are you okay?
Why is Zig so cool?
Myna: Monospace typeface designed for symbol-heavy programming languages
GPS 'kill' switch allows state police cruisers to go dark and disable tracking
When a “feature” is worse than a bug
Otto Nemenz, Supplier and Designer of Cameras and Lenses for Hollywood, Dies
Control structures in programming languages: from goto to algebraic effects
Open-source communications by bouncing signals off the Moon
Summary of changes for October 2025
Syntax and Semantics of Programming Languages
My first fifteen compilers (2019)
What's up with FUTO?
Summary of changes for September 2025
Cloudflare bankrolls fascists
A better future for JavaScript that won't happen
Summary of changes for August 2025
Embedding Wren in Hare
What's new with Himitsu 0.9?
Summary of changes for July 2025
Just speak the truth
Unionize or die
Summary of changes for May 2025
The British Airways position on various border disputes
Generating JOOQ sources using Flyway and Testcontainers
Summary of changes for June 2025
Summary of changes for April 2025
Generating tables for Google Docs using shell scripts
Resistance from the tech sector
A shortcut to create Google Docs
A Firefox addon for putting prices into perspective
Summary of changes for March 2025
Using linkhut to signal-boost my bookmarks
Please stop externalizing your costs directly into my face
Summary of changes for February 2025
A holistic perspective on intellectual property, part 1
Summary of changes for January 2025
Join us to discuss transparency and governance at FOSDEM '25
FOSDEM '25 protest
No billionaires at FOSDEM
Summary of changes for December 2024
Summary of changes for November 2024
Summary of changes for October 2024
Git aliases for CI notifications
Summary of changes for September 2024
Neurodivergence and accountability in free software
Summary of changes for August 2024
Rust for Linux revisited
Summary of changes for July 2024
New Features for ActivityPub.Academy
So you want to compete with or replace open source
Testcontainers in Spring Boot
An IntelliJ plugin for GitHub permalinks
Focus change for the blog
Summary of changes for June 2024
Summary of changes for May 2024
Writing a Unix clone in about a month
Summary of changes for April 2024
Copyleft licenses are not “restrictive”
FDO's conduct enforcement actions regarding Vaxry
systemd by example - Part 5: Timers
Summary of changes for March 2024
Summary of changes for February 2024
Summary of changes for January 2024
Summary of changes for December 2023
Why Prusa is floundering, and how you can avoid their fate
Understanding ActivityPub - Part 4: Threads
Summary of changes for November 2023
Richard Stallman's political discourse on sex
Can I be on your podcast?
Summary of changes for October 2023
On "real name" policies
Going off-script
Summary of changes for September 2023
The forbidden topics
Hyprland is a toxic community
Summary of changes for August 2023
AI crap
Understanding ActivityPub - Part 3: The State of Mastodon
Hello from Ares!
The rc shell and its excellent handling of whitespace
Alpine Linux does not make the news
Understanding ActivityPub - Part 2: Lemmy
Seriously, don't sign a CLA
Summary of changes for July 2023
Social media and "parasocial media"
Burnout and the quiet failures of the hacker community
Reforming the free software message
Throwing in the towel on mobile Linux
How to go to war with your employer
Summary of changes for June 2023
Understanding ActivityPub - Part 1: Protocol Fundamentals
ActivityPub.Academy
Summary of changes for May 2023
Burnout
Who should lead us?
rc: a new shell for Unix
The Free Software Foundation is dying
Writing Helios drivers in the Mercury driver environment
Summary of changes for April 2023
Summary of changes for March 2023
When to comment that code
Summary of changes for February 2023
Porting Helios to aarch64 for my FOSDEM talk, part one
Summary of changes for January 2023
Should private platforms engage in censorship?
My plans at FOSDEM: SourceHut, Hare, and Helios
Setting a new focus for my blog
Summary of changes for December
I shall toil at a reduced volume
Summary of changes for November
Codegen in Hare v2
In praise of Plan 9
Summary of changes for October
Notes from kernel hacking in Hare, part 3: serial driver
TOTP for 2FA is incredibly easy to implement. So what's your excuse?
Status update, October 2022
In praise of ffmpeg
Does Rust belong in the Linux kernel?
Notes from kernel hacking in Hare, part 2: multi-threading
The phrase "open source" (still) matters
Status update, September 2022
Notes from kernel hacking in Hare, part 1
Summary of changes for September
In praise of qemu
Summary of changes for August
powerctl: A small case study in Hare for systems programming
A review of postmarketOS on the Xiaomi Poco F1
PINE64 has let its community down
Status update, August 2022
How I wish I could organize my thoughts
Conciseness
Code review at the speed of email
The past and future of open hardware
Status update, July 2022
The Fediverse can be pretty toxic
Summary of changes for July
Summary of changes for June
Porting Doom to Helios
GitHub Copilot and open source laundering
Introducing the Himitsu keyring & password manager for Unix
Status update, June 2022
The Helios microkernel
Summary of changes for May
bleh
Google has been DDoSing SourceHut for over a year
systemd by example - Part 4: Installing units
Status update, May 2022
A Hare code generator for finding ioctl numbers
When will we learn?
Implementing an SSH agent in Hare
Summary of changes for April
Announcing the Hare programming language
Status update, April 2022
Announcing git snail-mail
Summary of changes for March
It is important for free software to use free software infrastructure
The Netherlands so far
Status update, March 2022
It takes a village
Why am I building a programming language in private?
systemd by example - Part 3: Defining services
Open Source is defined by the OSI's Open Source Definition
Summary of changes for February
Plaid is an evil nightmare product from Security Hell
Status update, February 2022
Framing accessibility in broader terms
Free software licenses explained: MIT
Summary of changes for January
Implementing a MIME database in XXXX
systemd by example - The Playground
Pine64 should re-evaluate their community priorities
Status update, January 2022
The RISC-V experience
Summary of changes for December
Breaking down a small language design proposal
Please don't use Discord for FOSS projects
Please use me as a resource
Sustainable creativity in a world without copyright
On commercial forks of FOSS projects
Status update, December 2021
Impressions of Linux Mint & elementary OS
systemd by example - Part 2: Dependencies
How new Linux users can increase their odds of success
What desktop Linux needs to succeed in the mainstream
Summary of changes for November
postmarketOS revolutionizes smartphone hacking
My philosophy for productive instant messaging
systemd by example - Part 1: Minimization
I will pay you cash to delete your npm module
Python: Please stop screwing over Linux distros
Status update, November 2021
Breaking down Apollo Federation's anti-FOSS corporate gaslighting
Summary of changes for October
GitHub stale bot considered harmful
How SmarterEveryDay's 4privacy can, and cannot, meet its goals
Software developers have stopped caring about reliability
Status update, October 2021
How reflection works in ****
Summary of changes for September
Developers: Let distros do their job
Nitter and other Internet reclamation projects
Status update, September 2021
visurf, a web browser based on NetSurf
Summary of changes for August
Status update, August 2021
Tips for debugging your new programming language
Police to begin regular, warrant-free searches of homes for child abuse material
proxy.golang.org allows many Go packages to be silently broken
In praise of PostgreSQL
Summary of changes for July
My wish-list for the next YAML
Dry Toilet Installation
Status update, July 2021
Is GitHub a derivative work of GPL'd software?
How does IRC's federation model compare to ActivityPub?
Summary of changes for June
You can't capture the nuance of my form fields
A finger client
Status update, June 2021
Provided "as is", without warranty of any kind
Summary of changes for May
I will be moving to the Netherlands
Build your project in our new language
Performance optimizations for the shell prompt
Using io_uring to make a high-performance... finger server
How to write release notes
aerc, mbsync, and postfix for maximum comfy offline email
Status update, May 2021
Pinebook Pro review
I try not to make unlikable software (and features)
godocs.io six months later
In praise of Alpine Linux
cd is not a program
Cryptocurrency is an abject disaster
Recommended read: Why Lichess will always be free
Parsers all the way down: writing a self-hosting parser
Wood stove installation
Status update, April 2021
The Developer Certificate of Origin is a great alternative to a CLA
What should the next chat app look like?
Go is a great programming language
Improving shell workflows with fzf
The world's stupidest IRC bot
The complete guide for open sourcing video games
We are building a new systems programming language
Status update, March 2021
The corporate surveillance machine is killing people
To make money in FOSS, build a business first
Summary of changes for April
Summary of changes for March
Summary of changes for February
Gmail is a huge source of spam
GitHub CI status notifications
A great alternative is rarely fatter than what it aims to replace
Status update, February 2021
How to make your downstream users happy
Summary of changes for January
Use open platforms — or else
Open source means surrendering your monopoly over commercial exploitation
Elasticsearch does not belong to Elastic
Spooky action at a distance
Status update, January 2021
History will not remember us fondly
Fostering a culture that values stability and reliability
A megacorp is not your dream job
Summary of changes for December
How to design a new programming language from scratch
godocs.io is now available
Status update, December 2020
Become shell literate
Web analytics should at least meet the standards of informed consent
Summary of changes for November
A few ways to make money in FOSS
We can do better than DuckDuckGo
Status update, November 2020
Utility vs usability
What is this Gemini thing anyway, and why am I excited about it?
Summary of changes for October
I'm handing over maintenance of wlroots and sway to Simon Ser
Firefox: The Jewel^WEmbarassment of Open Source
Status update, October 2020
Working offgrid efficiently
Four principles of software engineering
Spamtoberfest
A tale of two libcs
TOFU recommendations for Gemini
The unrealized potential of federation
Status update, September 2020
Linux development is distributed - profoundly so
Embrace, extend, and finally extinguish - Microsoft plays their hand
Alice in Wonderland and the theft of the public domain
Software engineers solve problems
Status update, August 2020
Web browsers need to stop
I want to contribute to your project, how do I start?
pkg.go.dev is more concerned with Google's interests than good engineering
North Pacific Logbook
The falsehoods of anti-AGPL propaganda
Status update, July 2020
March 2nd, 1943
General-purpose OS, special-purpose OS, and now: vendor-purpose OS
Introducing the BARE message encoding
Status update, June 2020
Can we talk about client-side certificates?
Add a "contrib" directory to your projects
Status update, May 2020
We are complicit in our employer's deeds
How to store data forever
Configuring aerc for git via email
Status update, April 2020
My unorthodox, branchless git workflow
Designing and 3D printing a new part for my truck
The reckless, infinite scope of web browsers
GitHub's new notifications: a case of regressive design
An open letter to Senator Bob Casey on end-to-end encryption
The Abiopause
Typhoons and mold
Thoughts on performance & optimization
Fucking laptops
Status update, February 2020
Dependencies and maintainers
KnightOS was an interesting operating system
The happinesses and stresses of full-time FOSS work
A philosophy of project governance
Status update, January 2020
Following up on "Hello world"
Hello world
Managing my dotfiles as a git repository
PinePhone review
Status update, December 2019
Developers shouldn't distribute their own software
Take action to save .org and prosecute those who sold out the internet
Software developers should avoid traumatic changes
China
Status update, November 2019
An old-school shell hack on a line printer
Status update, October 2019
How to fuck up software releases
RaptorCS's redemption: the POWER9 machine works
Why Collabora really added Digital Restrictions Management to Weston
RaptorCS POWER9 Blackbird PC review
Don't sacrifice the right ideas to win the right words
Status update, September 2019
How I decide between many programming languages
Building interactive SSH applications
Shell access for builds.sr.ht CI
Status update, August 2019
a home for pino
DRM leasing: VR for Wayland
FOSS contributor tracks
tools ecosystem
Status update, July 2019
Announcing code annotations for SourceHut
Absence of certain features in IRC considered a feature
Status update, June 2019
My personal journey from MIT to GPL
Initial pre-release of aerc: an email client for your terminal
What is a fork, really, and how GitHub changed its meaning
Status update, May 2019
Webcast: Reviewing git & mercurial patches with email
Calculating your donation's value following Patreon's fee changes
Announcing Wio: A clone of Plan 9's Rio for Wayland
The "shut up and get back to work" coding style guide
Using Cage for a seamless remote Wayland session
Choosing a VPN service is a serious decision
Announcing first-class Mercurial support on Sourcehut
Status update, April 2019
NewPipe represents the best of FOSS
Rust is not a good C replacement
Status update, March 2019
hello fujisan
Announcing the release of sway 1.0
Sourcehut's spartan approach to web design
goji no chaimu
Tips for a disciplined git workflow
Generics aren't ready for Go
Wayland misconceptions debunked
My experiences at FOSDEM 2019
Why I chose Flask to build sr.ht's mini-services
Why I use old hardware
I'm going to work full-time on free software
Backups & redundancy at sr.ht
Patches welcome
Anatomy of a shell
Porting Alpine Linux to RISC-V
How to abandon a FLOSS project
the promise of pancakes
doldrumming
sr.ht, the hacker's forge, now open for public alpha
It's not okay to pretend your software is open source
How does virtual memory work?
Sway 1.0-beta.1 release highlights
Go 1.11 got me to stop ignoring Go
Don't sign a CLA
Sway & wlroots at XDC 2018
Getting started with qemu
leleuvia
Conservative web development
How to make a self-hosted video livestream
The Commons Clause will destroy open source
where is the turtle farm
I don't trust Signal
Setting up a local dev mail server
Writing a Wayland compositor with wlroots: shells
Git is already federated & decentralized
Input handling in wlroots
Simple, correct, fast: in that order
The advantages of an email-driven git workflow
A quick review of my Let's Encrypt setup
captain what is this
Should you move from GitHub to sr.ht
projects and pain
How I maintain FOSS projects
an island to oneself
Embedding files in C programs with koio
Why did we replace wlc?
Introducing scdoc, a man page generator
Redirecting stderr of a running process
Google embraces, extends, and extinguishes
Sway reporting in from KDE's Berlin development sprint
Achtung! Decentralize, decentralize, decentralize!
Hack everything without fear
How to write an IRC bot
Writing a Wayland Compositor, Part 3: Rendering a window
The path to sustainably working on FOSS full-time
Writing a Wayland Compositor, Part 2: Rigging up the server
Writing a Wayland Compositor, Part 1: Hello wlroots
The last years
Introduction to POSIX shell
Sway and client side decorations
Fee breakdown for various donation platforms
Learn about your package manager
fork is not my favorite syscall
wlroots whitepaper available
Firefox is on a slippery slope
A history of emergent intelligence
On taking good care of your phone
Portability matters
Nvidia sucks and I'm sick of it
The future of Wayland, and sway's role in it
Analyzing HN moderation & censorship
Killing ants with nuclear weapons
When not to use a regex
State of Sway August 2017
the rock of polynesia
internet in paradise
Archive it or you will miss it
An introduction to Wayland
Limited "generics" in C without macros or UB
Rotating passwords in bulk in the wake of security events
Building a "real" Linux distro
State of Sway April 2017
MSG_PEEK is pretty common, CVE-2016-10229 is worse than you think
rainy with a chance of mosquitoes
Principles for C programming
Compiler devnotes: Machine specs
Lessons to learn from C
The only problem with Python 3's str is that you don't grok it
Actually, you CAN do it
State of Sway December 2016 - secure your Wayland desktop, get paid to work on Sway
A broad intro to networking
Electron considered harmful
Getting on without Google
I'm losing faith in America
Using the right tool for the job
What motivates the authors of the software you use?
[VIDEO] Arch Linux with full disk encryption in (about) 15 minutes
Sway 0.9 & One year of Sway
Using -Wl,--wrap for mocking in C
Life, liberty, and the pursuit of privacy
Understanding pointers
In Memoriam - Mozilla
State of Sway - April 2016
How to write a better bloom filter in C
Please use text/plain for email
Integrating a VT220 into my life
State of Sway - December 2015
Bring more Tor into your life
Please don't use Slack for FOSS projects
A practical understanding of Flux
osu!web - WebGL & Web Audio
Hooks - running stuff on Github hooks
Porting an assembler, debugger, and more to WebAssembly
On the profitability of image hosting websites
Process scheduling and multitasking in KnightOS
Python's datetime sucks
Go's error handling doesn't sit right with me
Hacking on your TI calculator
The bug that hides from breakpoints
Custom Music Syncing on Android
You don't need jQuery