Drew DeVault's blog
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 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