Drew DeVault's blog
September 25, 2024
Neurodivergence and accountability in free software
August 30, 2024
Rust for Linux revisited
July 16, 2024
So you want to compete with or replace open source
May 24, 2024
Writing a Unix clone in about a month
April 19, 2024
Copyleft licenses are not “restrictive”
April 9, 2024
FDO's conduct enforcement actions regarding Vaxry
December 26, 2023
Why Prusa is floundering, and how you can avoid their fate
November 25, 2023
Richard Stallman's political discourse on sex
November 9, 2023
Can I be on your podcast?
October 31, 2023
On "real name" policies
October 13, 2023
Going off-script
September 29, 2023
The forbidden topics
September 17, 2023
Hyprland is a toxic community
August 29, 2023
AI crap
August 9, 2023
Hello from Ares!
July 31, 2023
The rc shell and its excellent handling of whitespace
July 25, 2023
Alpine Linux does not make the news
July 4, 2023
Seriously, don't sign a CLA
June 30, 2023
Social media and "parasocial media"
June 29, 2023
Burnout and the quiet failures of the hacker community
June 19, 2023
Reforming the free software message
June 16, 2023
Throwing in the towel on mobile Linux
June 12, 2023
How to go to war with your employer
May 1, 2023
Burnout
April 24, 2023
Who should lead us?
April 18, 2023
rc: a new shell for Unix
April 11, 2023
The Free Software Foundation is dying
April 8, 2023
Writing Helios drivers in the Mercury driver environment
March 9, 2023
When to comment that code
February 20, 2023
Porting Helios to aarch64 for my FOSDEM talk, part one
January 30, 2023
Should private platforms engage in censorship?
January 24, 2023
My plans at FOSDEM: SourceHut, Hare, and Helios
January 22, 2023
Setting a new focus for my blog
December 1, 2022
I shall toil at a reduced volume
November 26, 2022
Codegen in Hare v2
November 12, 2022
In praise of Plan 9
October 27, 2022
Notes from kernel hacking in Hare, part 3: serial driver
October 18, 2022
TOTP for 2FA is incredibly easy to implement. So what's your excuse?
October 15, 2022
Status update, October 2022
October 12, 2022
In praise of ffmpeg
October 3, 2022
Does Rust belong in the Linux kernel?
October 2, 2022
Notes from kernel hacking in Hare, part 2: multi-threading
September 16, 2022
The phrase "open source" (still) matters
September 15, 2022
Status update, September 2022
September 7, 2022
Notes from kernel hacking in Hare, part 1
September 2, 2022
In praise of qemu
August 28, 2022
powerctl: A small case study in Hare for systems programming
August 25, 2022
A review of postmarketOS on the Xiaomi Poco F1
August 18, 2022
PINE64 has let its community down
August 16, 2022
Status update, August 2022
August 10, 2022
How I wish I could organize my thoughts
July 26, 2022
Conciseness
July 25, 2022
Code review at the speed of email
July 25, 2022
The past and future of open hardware
July 18, 2022
Status update, July 2022
July 9, 2022
The Fediverse can be pretty toxic
July 1, 2022
Porting Doom to Helios
June 23, 2022
GitHub Copilot and open source laundering
June 15, 2022
Status update, June 2022
June 13, 2022
The Helios microkernel
May 30, 2022
bleh
May 25, 2022
Google has been DDoSing SourceHut for over a year
May 16, 2022
Status update, May 2022
May 14, 2022
A Hare code generator for finding ioctl numbers
May 12, 2022
When will we learn?
May 9, 2022
Implementing an SSH agent in Hare
April 25, 2022
Announcing the Hare programming language
April 15, 2022
Status update, April 2022
April 1, 2022
Announcing git snail-mail
March 24, 2022
The Netherlands so far
March 15, 2022
Status update, March 2022
March 14, 2022
It takes a village
March 13, 2022
Why am I building a programming language in private?
February 19, 2022
Plaid is an evil nightmare product from Security Hell
February 15, 2022
Status update, February 2022
February 13, 2022
Framing accessibility in broader terms
February 7, 2022
Free software licenses explained: MIT
January 28, 2022
Implementing a MIME database in XXXX
January 18, 2022
Pine64 should re-evaluate their community priorities
January 17, 2022
Status update, January 2022
January 15, 2022
The RISC-V experience
December 30, 2021
Breaking down a small language design proposal
December 28, 2021
Please don't use Discord for FOSS projects
December 25, 2021
Please use me as a resource
December 23, 2021
Sustainable creativity in a world without copyright
December 18, 2021
On commercial forks of FOSS projects
December 15, 2021
Status update, December 2021
December 14, 2021
Impressions of Linux Mint & elementary OS
December 5, 2021
How new Linux users can increase their odds of success
December 5, 2021
What desktop Linux needs to succeed in the mainstream
November 26, 2021
postmarketOS revolutionizes smartphone hacking
November 24, 2021
My philosophy for productive instant messaging
November 16, 2021
I will pay you cash to delete your npm module
November 16, 2021
Python: Please stop screwing over Linux distros
November 15, 2021
Status update, November 2021
November 5, 2021
Breaking down Apollo Federation's anti-FOSS corporate gaslighting
October 26, 2021
GitHub stale bot considered harmful
October 22, 2021
How SmarterEveryDay's 4privacy can, and cannot, meet its goals
October 17, 2021
Software developers have stopped caring about reliability
October 15, 2021
Status update, October 2021
October 5, 2021
How reflection works in ****
September 27, 2021
Developers: Let distros do their job
September 23, 2021
Nitter and other Internet reclamation projects
September 15, 2021
Status update, September 2021
September 11, 2021
visurf, a web browser based on NetSurf
August 15, 2021
Status update, August 2021
August 11, 2021
Tips for debugging your new programming language
August 5, 2021
In praise of PostgreSQL
July 28, 2021
My wish-list for the next YAML
July 15, 2021
Status update, July 2021
July 4, 2021
Is GitHub a derivative work of GPL'd software?
June 27, 2021
You can't capture the nuance of my form fields
June 24, 2021
A finger client
June 15, 2021
Status update, June 2021
June 14, 2021
Provided "as is", without warranty of any kind
June 7, 2021
I will be moving to the Netherlands
May 30, 2021
Build your project in our new language
May 19, 2021
How to write release notes
May 16, 2021
Status update, May 2021
May 14, 2021
Pinebook Pro review
May 7, 2021
godocs.io six months later
May 6, 2021
In praise of Alpine Linux
April 26, 2021
Cryptocurrency is an abject disaster
April 23, 2021
Recommended read: Why Lichess will always be free
April 22, 2021
Parsers all the way down: writing a self-hosting parser
April 15, 2021
Status update, April 2021
April 7, 2021
What should the next chat app look like?
April 2, 2021
Go is a great programming language
March 29, 2021
The world's stupidest IRC bot
March 23, 2021
The complete guide for open sourcing video games
March 19, 2021
We are building a new systems programming language
March 15, 2021
Status update, March 2021
March 6, 2021
The corporate surveillance machine is killing people
March 3, 2021
To make money in FOSS, build a business first
February 25, 2021
Gmail is a huge source of spam
February 21, 2021
A great alternative is rarely fatter than what it aims to replace
February 15, 2021
Status update, February 2021
February 9, 2021
How to make your downstream users happy
January 28, 2021
Use open platforms — or else
January 19, 2021
Elasticsearch does not belong to Elastic
January 19, 2021
Spooky action at a distance
January 15, 2021
Status update, January 2021
January 7, 2021
History will not remember us fondly
January 4, 2021
Fostering a culture that values stability and reliability
January 1, 2021
A megacorp is not your dream job
December 25, 2020
How to design a new programming language from scratch
December 18, 2020
godocs.io is now available
December 15, 2020
Status update, December 2020
December 12, 2020
Become shell literate
December 4, 2020
Web analytics should at least meet the standards of informed consent
November 20, 2020
A few ways to make money in FOSS
November 17, 2020
We can do better than DuckDuckGo
November 15, 2020
Status update, November 2020
November 6, 2020
Utility vs usability
November 1, 2020
What is this Gemini thing anyway, and why am I excited about it?
October 23, 2020
I'm handing over maintenance of wlroots and sway to Simon Ser
October 22, 2020
Firefox: The Jewel^WEmbarassment of Open Source
October 15, 2020
Status update, October 2020
October 9, 2020
Four principles of software engineering
October 1, 2020
Spamtoberfest
September 25, 2020
A tale of two libcs
September 21, 2020
TOFU recommendations for Gemini
September 20, 2020
The unrealized potential of federation
September 15, 2020
Status update, September 2020
September 2, 2020
Linux development is distributed - profoundly so
August 24, 2020
Alice in Wonderland and the theft of the public domain
August 17, 2020
Software engineers solve problems
August 16, 2020
Status update, August 2020
August 13, 2020
Web browsers need to stop
August 10, 2020
I want to contribute to your project, how do I start?
July 27, 2020
The falsehoods of anti-AGPL propaganda
July 15, 2020
Status update, July 2020
July 14, 2020
March 2nd, 1943
June 21, 2020
Introducing the BARE message encoding
June 19, 2020
Email service provider recommendations
June 15, 2020
Status update, June 2020
June 12, 2020
Can we talk about client-side certificates?
June 6, 2020
Add a "contrib" directory to your projects
May 15, 2020
Status update, May 2020
May 5, 2020
We are complicit in our employer's deeds
April 22, 2020
How to store data forever
April 20, 2020
Configuring aerc for git via email
April 15, 2020
Status update, April 2020
April 6, 2020
My unorthodox, branchless git workflow
March 25, 2020
Designing and 3D printing a new part for my truck
March 18, 2020
The reckless, infinite scope of web browsers
March 13, 2020
GitHub's new notifications: a case of regressive design
March 3, 2020
The Abiopause
February 21, 2020
Thoughts on performance & optimization
February 18, 2020
Fucking laptops
February 15, 2020
Status update, February 2020
February 6, 2020
Dependencies and maintainers
January 27, 2020
KnightOS was an interesting operating system
January 21, 2020
The happinesses and stresses of full-time FOSS work
January 17, 2020
A philosophy of project governance
January 15, 2020
Status update, January 2020
January 8, 2020
Following up on "Hello world"
January 4, 2020
Hello world
December 30, 2019
Managing my dotfiles as a git repository
December 18, 2019
PinePhone review
December 15, 2019
Status update, December 2019
December 9, 2019
Developers shouldn't distribute their own software
November 29, 2019
Take action to save .org and prosecute those who sold out the internet
November 26, 2019
Software developers should avoid traumatic changes
November 20, 2019
China
November 15, 2019
Status update, November 2019
October 30, 2019
An old-school shell hack on a line printer
October 15, 2019
Status update, October 2019
October 12, 2019
How to fuck up software releases
October 10, 2019
RaptorCS's redemption: the POWER9 machine works
September 23, 2019
RaptorCS POWER9 Blackbird PC review
September 17, 2019
Don't sacrifice the right ideas to win the right words
September 15, 2019
Status update, September 2019
September 8, 2019
How I decide between many programming languages
September 2, 2019
Building interactive SSH applications
August 19, 2019
Shell access for builds.sr.ht CI
August 15, 2019
Status update, August 2019
August 9, 2019
DRM leasing: VR for Wayland
July 29, 2019
FOSS contributor tracks
July 15, 2019
Status update, July 2019
July 8, 2019
Announcing code annotations for SourceHut
June 15, 2019
Status update, June 2019
June 13, 2019
My personal journey from MIT to GPL
May 15, 2019
Status update, May 2019
April 29, 2019
The "shut up and get back to work" coding style guide
April 23, 2019
Using Cage for a seamless remote Wayland session
April 19, 2019
Choosing a VPN service is a serious decision
April 15, 2019
Announcing first-class Mercurial support on Sourcehut
April 15, 2019
Status update, April 2019
April 2, 2019
NewPipe represents the best of FOSS
March 25, 2019
Rust is not a good C replacement
March 15, 2019
Status update, March 2019
March 11, 2019
Announcing the release of sway 1.0
March 4, 2019
Sourcehut's spartan approach to web design
February 25, 2019
Tips for a disciplined git workflow
February 18, 2019
Generics aren't ready for Go
February 10, 2019
Wayland misconceptions debunked
February 5, 2019
My experiences at FOSDEM 2019
January 30, 2019
Why I chose Flask to build sr.ht's mini-services
January 23, 2019
Why I use old hardware
January 15, 2019
I'm going to work full-time on free software
January 13, 2019
Backups & redundancy at sr.ht
January 1, 2019
Patches welcome
December 28, 2018
Anatomy of a shell
December 20, 2018
Porting Alpine Linux to RISC-V
December 4, 2018
How to abandon a FLOSS project
November 15, 2018
sr.ht, the hacker's forge, now open for public alpha
October 30, 2018
It's not okay to pretend your software is open source
October 29, 2018
How does virtual memory work?
October 20, 2018
Sway 1.0-beta.1 release highlights
October 8, 2018
Go 1.11 got me to stop ignoring Go
October 5, 2018
Don't sign a CLA
September 30, 2018
Sway & wlroots at XDC 2018
September 10, 2018
Getting started with qemu
September 4, 2018
Conservative web development
August 26, 2018
How to make a self-hosted video livestream
August 22, 2018
The Commons Clause will destroy open source
August 8, 2018
I don't trust Signal
August 5, 2018
Setting up a local dev mail server
July 29, 2018
Writing a Wayland compositor with wlroots: shells
July 23, 2018
Git is already federated & decentralized
July 17, 2018
Input handling in wlroots
July 9, 2018
Simple, correct, fast: in that order
July 2, 2018
The advantages of an email-driven git workflow
June 27, 2018
A quick review of my Let's Encrypt setup
June 5, 2018
Should you move from GitHub to sr.ht
June 1, 2018
How I maintain FOSS projects
May 29, 2018
Embedding files in C programs with koio
May 27, 2018
Why did we replace wlc?
May 13, 2018
Introducing scdoc, a man page generator
May 4, 2018
Redirecting stderr of a running process
May 3, 2018
Google embraces, extends, and extinguishes
April 28, 2018
Sway reporting in from KDE's Berlin development sprint
March 24, 2018
Achtung! Decentralize, decentralize, decentralize!
March 17, 2018
Hack everything without fear
March 10, 2018
How to write an IRC bot
February 28, 2018
Writing a Wayland Compositor, Part 3: Rendering a window
February 24, 2018
The path to sustainably working on FOSS full-time
February 22, 2018
Writing a Wayland Compositor, Part 2: Rigging up the server
February 17, 2018
Writing a Wayland Compositor, Part 1: Hello wlroots
February 13, 2018
The last years
February 5, 2018
Introduction to POSIX shell
January 27, 2018
Sway and client side decorations
January 16, 2018
Fee breakdown for various donation platforms
January 10, 2018
Learn about your package manager
January 2, 2018
fork is not my favorite syscall
December 28, 2017
wlroots whitepaper available
December 16, 2017
Firefox is on a slippery slope
December 2, 2017
A history of emergent intelligence
November 24, 2017
On taking good care of your phone
November 13, 2017
Portability matters
October 26, 2017
Nvidia sucks and I'm sick of it
October 9, 2017
The future of Wayland, and sway's role in it
September 13, 2017
Analyzing HN moderation & censorship
September 8, 2017
Killing ants with nuclear weapons
August 13, 2017
When not to use a regex
August 9, 2017
State of Sway August 2017
June 19, 2017
Archive it or you will miss it
June 10, 2017
An introduction to Wayland
June 5, 2017
Limited "generics" in C without macros or UB
May 5, 2017
Building a "real" Linux distro
April 29, 2017
State of Sway April 2017
March 15, 2017
Principles for C programming
February 22, 2017
Compiler devnotes: Machine specs
January 30, 2017
Lessons to learn from C
January 13, 2017
The only problem with Python 3's str is that you don't grok it
January 6, 2017
Actually, you CAN do it
December 27, 2016
State of Sway December 2016 - secure your Wayland desktop, get paid to work on Sway
December 6, 2016
A broad intro to networking
November 24, 2016
Electron considered harmful
November 16, 2016
Getting on without Google
November 5, 2016
I'm losing faith in America
September 17, 2016
Using the right tool for the job
September 9, 2016
What motivates the authors of the software you use?
August 2, 2016
Sway 0.9 & One year of Sway
July 19, 2016
Using -Wl,--wrap for mocking in C
June 29, 2016
Life, liberty, and the pursuit of privacy
May 28, 2016
Understanding pointers
May 11, 2016
In Memoriam - Mozilla
April 20, 2016
State of Sway - April 2016
April 12, 2016
How to write a better bloom filter in C
April 11, 2016
Please use text/plain for email
March 22, 2016
Integrating a VT220 into my life
December 20, 2015
State of Sway - December 2015
November 11, 2015
Bring more Tor into your life
November 1, 2015
Please don't use Slack for FOSS projects
July 20, 2015
A practical understanding of Flux
June 14, 2015
osu!web - WebGL & Web Audio
April 19, 2015
Hooks - running stuff on Github hooks
November 30, 2014
Porting an assembler, debugger, and more to WebAssembly
October 10, 2014
On the profitability of image hosting websites
September 2, 2014
Process scheduling and multitasking in KnightOS
June 28, 2014
Python's datetime sucks
June 7, 2014
Go's error handling doesn't sit right with me
February 25, 2014
Hacking on your TI calculator
February 2, 2014
The bug that hides from breakpoints
August 24, 2013
Custom Music Syncing on Android
August 19, 2013
You don't need jQuery