Writings By: tag, popularity ⢠RSS
- 10 Jul 2026 I like using scrollbars
- 22 Jun 2026 Chesterton's middle finger
- 12 Jun 2026 Dependencies should be fetched directly from VCS
- 14 Apr 2026 Comparing compression tools
- 16 Nov 2024 Against best practices
- 28 Oct 2024 Jia Tanning Go code
- 22 May 2024 Safe terminal escape codes
- 20 Oct 2021 s/bash/zsh/g
- 29 Sep 2021 Getting started with RimWorld modding on Linux
- 25 Mar 2021 Stallman isn't great, but not the devil
- 22 Feb 2021 Go is not an easy language
- 18 Feb 2021 Downsides of working remotely
- 10 Dec 2020 Bitmasks for nicer APIs
- 29 Nov 2020 Stupid light software
- 28 Nov 2020 Empathy is required for democracy
- 25 Nov 2020 An API is a user interface
- 12 Aug 2020 Freedom is not simple
- Â 5 Aug 2020 Analytics on personal websites
- Â 3 Jul 2020 Letâs not be pedantic about âOpen Sourceâ
- 22 May 2020 Some zshrc tricks
- 17 May 2020 Experiences with email-based login
- 25 Apr 2020 Storing files in .git
- 20 Apr 2020 The problems with hard wrapping email body text
- 11 Apr 2020 Statically compiling Go programs
- 13 Feb 2020 The web as a GUI toolkit
- Â 5 Feb 2020 Running Go CLI programs in the browser with WASM
- Â 8 Jan 2020 Bookmarklets to deal with annoying designs
- Â 4 Jan 2020 Why GoatCounter ignores Do Not Track
- Â 3 Jan 2020 Scripting tmux
- 30 Dec 2019 Choosing a license for GoatCounter
- 12 Dec 2019 Better UX when reading from stdin
- Â 5 Dec 2019 Good comments read well and are to the point
- 21 Nov 2019 Goâs features of last resort
- Â 9 Nov 2019 Curl to shell isnât so bad
- Â 7 Nov 2019 Vim myths
- 31 Oct 2019 Effective VimScript
- Â 7 Oct 2019 On being the right size
- Â 5 Sep 2019 Itâs fine to be elitist, sometimes
- 22 Aug 2019 Tired of Stack Overflow
- 13 Aug 2019 Launching GoatCounter
- 10 Jun 2019 The other kind of censorship
- 27 May 2019 Why Iâm still using jQuery in 2019
- 26 May 2019 Copyright, culture, and democracy
- Â 1 May 2019 Using flags for configuration in Go
- 30 Apr 2019 Flags are great for configuration
- 29 Apr 2019 The value of negative arguments
- 28 Mar 2019 Anti-vaxers are not evil
- 22 Mar 2019 Easy means easy to debug
- 19 Mar 2019 Why ârape gamesâ are worse than violent games
- 13 Mar 2019 Why isnât Amazon.com signing their emails?
- 19 Feb 2019 Vested interest in mismanaging government
- 12 Feb 2019 Why Hello CSS doesnât use CSS variables
- 14 Jan 2019 You (probably) donât need Kubernetes
- 13 Jan 2019 Source code shame
- Â 7 Jan 2019 Testing isnât everything
- 22 Dec 2018 How to detect automatically generated emails
- Â 9 Dec 2018 Open source DIY ethics
- 15 May 2018 Learning a programming language
- 10 Apr 2018 Go testing style guide
- Â 5 Apr 2018 Being right
- 27 Dec 2017 Why write?
- 26 Dec 2017 The shell scripting trap
- 14 Jul 2017 Browsers and conflicts of interests
- 24 Jun 2017 Why teach kids to program?
- 22 Apr 2017 PHPâs fopen() is broken
- 26 Oct 2016 I donât like git, but Iâm going to migrate my projects to it
- Â 5 Sep 2016 Some thoughts on CDNs
- Â 4 Sep 2016 YAML: probably not so great after all
- Â 7 Feb 2016 The downsides of JSON for config files
- 15 Jan 2015 Making find -exec faster
- 14 Nov 2014 Security of Pythonâs pickle and marshal modules
- 20 Aug 2014 Intercept outgoing mails in Ruby on Rails
- 24 Jun 2014 Making FlagShihTzu work well with Formtastic
- 10 Feb 2014 A primer on the str and bytes types in Python 3
- Â 5 Dec 2013 Creating temporary files in PHP
Code projects
Vim stuff
complete_email.vim
â 3Allow completion of email addresses so you can use Vim as a basic "address book".
Go libraries and tools
zcache
â 80In-memory key:value store/cache library for Go, suitable for single-machine applications
zli
â 46Go library for writing CLI programs. Includes flag parsing, colours, testing, and various helpful utility functions