Drew DeVault's blog
Drew DeVault's blog - Blog
Linux / UnixSociety / politics / economySoftware / engineering practiceOS / kernelEngineering blogs
- Posts
- 397 from 11 Dec 2010 to 23 Sep 2026
- Posting
- monthly (14 in the last year)
- Kind
- personal blog
- Feed
- https://drewdevault.com/blog/index.xml
2026 13
- Why is Hacker News like that?
- AI in Linux
- The circus freaks of open source
- Vim Classic 8.3.0 released
- New blog design
- Add an LLM policy for rust-lang/rust
- I can't cancel GitHub Copilot
- Addressing the harassment
- Rewrote my blog with Zine
- tar: a slop-free alternative to rsync
- A eulogy for Vim
- The cults of TDD and GenAI
- Redesigning my microkernel from the ground up
2025 17
- OpenAI employees… are you okay?
- What's up with FUTO?
- Cloudflare bankrolls fascists
- A better future for JavaScript that won't happen
- Embedding Wren in Hare
- What's new with Himitsu 0.9?
- Just speak the truth
- Unionize or die
- The British Airways position on various border disputes
- Resistance from the tech sector
- A Firefox addon for putting prices into perspective
- Using linkhut to signal-boost my bookmarks
- Please stop externalizing your costs directly into my face
- A holistic perspective on intellectual property, part 1
- Join us to discuss transparency and governance at FOSDEM '25
- FOSDEM '25 protest
- No billionaires at FOSDEM
2024 6
2023 27
- Why Prusa is floundering, and how you can avoid their fate
- Richard Stallman's political discourse on sex
- Can I be on your podcast?
- On "real name" policies
- Going off-script
- The forbidden topics
- Hyprland is a toxic community
- AI crap
- Hello from Ares!
- The rc shell and its excellent handling of whitespace
- Alpine Linux does not make the news
- Seriously, don't sign a CLA
- 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
- 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
- When to comment that code
- Porting Helios to aarch64 for my FOSDEM talk, part one
- Should private platforms engage in censorship?
- My plans at FOSDEM: SourceHut, Hare, and Helios
- Setting a new focus for my blog
2022 51
- I shall toil at a reduced volume
- Codegen in Hare v2
- In praise of Plan 9
- 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
- In praise of qemu
- 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
- 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
- Bleh
- Google has been DDoSing SourceHut for over a year
- Status update, May 2022
- A Hare code generator for finding ioctl numbers
- When will we learn?
- Implementing an SSH agent in Hare
- Announcing the Hare programming language
- Status update, April 2022
- Announcing git snail-mail
- 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?
- Open Source is defined by the OSI's Open Source Definition
- Plaid is an evil nightmare product from Security Hell
- Status update, February 2022
- Framing accessibility in broader terms
- Free software licenses explained: MIT
- Implementing a MIME database in XXXX
- Pine64 should re-evaluate their community priorities
- Status update, January 2022
- The RISC-V experience
2021 69
- 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
- How new Linux users can increase their odds of success
- What desktop Linux needs to succeed in the mainstream
- postmarketOS revolutionizes smartphone hacking
- My philosophy for productive instant messaging
- 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
- 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 Hare
- Developers: Let distros do their job
- Nitter and other Internet reclamation projects
- Status update, September 2021
- visurf, a web browser based on NetSurf
- 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
- My wish-list for the next YAML
- Status update, July 2021
- Is GitHub a derivative work of GPL'd software?
- How does IRC's federation model compare to ActivityPub?
- 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
- I will be moving to the Netherlands
- Build your project in our new language
- 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
- Cryptocurrency is an abject disaster
- Parsers all the way down: writing a self-hosting parser
- 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
- 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
- Gmail is a huge source of spam
- A great alternative is rarely fatter than what it aims to replace
- How to make your downstream users happy
- 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
- History will not remember us fondly
- Fostering a culture that values stability and reliability
- A megacorp is not your dream job
2020 56
- 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
- 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?
- I'm handing over maintenance of wlroots and sway to Simon Ser
- Firefox: The Jewel^WEmbarassment of Open Source
- Status update, October 2020
- 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
- Linux development is distributed - profoundly so
- Embrace, extend, and finally extinguish - Microsoft plays their hand
- 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
- 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
- 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
2019 51
- 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
- DRM leasing: VR for Wayland
- FOSS contributor tracks
- 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
- 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
- Announcing the release of sway 1.0
- Sourcehut's spartan approach to web design
- 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
2018 41
- Anatomy of a shell
- Porting Alpine Linux to RISC-V
- How to abandon a FLOSS project
- 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
- Conservative web development
- How to make a self-hosted video livestream
- The Commons Clause will destroy open source
- 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
- Should you move from GitHub to sr.ht
- How I maintain FOSS projects
- 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
- 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
- Learn about your package manager
- fork is not my favorite syscall
2017 23
- 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
- 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
- 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
2016 16
- 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?
- 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
2015 5
2014 6
2013 2
2012 3
2011 10
- Miners' Guild Site
- Umbraco Certification
- Free Software Abounds
- The Cheap Way To Fix a GameBoy Game
- On the Use of Internet Filtering
- Creating an Integrated Development Environment
- Redmond with the Microsoft Student Insiders
- Post-Session: Windows Phone 7 @ RMTT
- Rocky Mountain Tech Trifecta
- Colorado Springs Give Camp