Posts by tag
All posts by tag; some posts have multiple tags and may appear more than once.
Community
- 25 Mar 2021 Stallman isn't great, but not the devil
- 5 Sep 2019 It’s fine to be elitist, sometimes
- 22 Aug 2019 Tired of Stack Overflow
- 10 Jun 2019 The other kind of censorship
- 29 Apr 2019 The value of negative arguments
- 13 Jan 2019 Source code shame
- 9 Dec 2018 Open source DIY ethics
- 15 May 2018 Learning a programming language
- 26 Oct 2016 I don’t like git, but I’m going to migrate my projects to it
Config
- 1 May 2019 Using flags for configuration in Go
- 30 Apr 2019 Flags are great for configuration
- 4 Sep 2016 YAML: probably not so great after all
- 7 Feb 2016 The downsides of JSON for config files
Democracy
- 28 Nov 2020 Empathy is required for democracy
- 26 May 2019 Copyright, culture, and democracy
- 17 May 2020 Experiences with email-based login
- 20 Apr 2020 The problems with hard wrapping email body text
- 13 Mar 2019 Why isn’t Amazon.com signing their emails?
- 22 Dec 2018 How to detect automatically generated emails
- 20 Aug 2014 Intercept outgoing mails in Ruby on Rails
Go
- 28 Oct 2024 Jia Tanning Go code
- 22 Feb 2021 Go is not an easy language
- 10 Dec 2020 Bitmasks for nicer APIs
- 11 Apr 2020 Statically compiling Go programs
- 5 Feb 2020 Running Go CLI programs in the browser with WASM
- 21 Nov 2019 Go’s features of last resort
- 1 May 2019 Using flags for configuration in Go
- 10 Apr 2018 Go testing style guide
GoatCounter
- 5 Aug 2020 Analytics on personal websites
- 17 May 2020 Experiences with email-based login
- 4 Jan 2020 Why GoatCounter ignores Do Not Track
- 30 Dec 2019 Choosing a license for GoatCounter
- 13 Aug 2019 Launching GoatCounter
Open source
- 25 Mar 2021 Stallman isn't great, but not the devil
- 3 Jul 2020 Let’s not be pedantic about “Open Source”
- 30 Dec 2019 Choosing a license for GoatCounter
- 13 Aug 2019 Launching GoatCounter
- 13 Jan 2019 Source code shame
- 9 Dec 2018 Open source DIY ethics
PHP
- 22 Apr 2017 PHP’s fopen() is broken
- 5 Dec 2013 Creating temporary files in PHP
Politics
- 25 Mar 2021 Stallman isn't great, but not the devil
- 28 Nov 2020 Empathy is required for democracy
- 12 Aug 2020 Freedom is not simple
- 4 Jan 2020 Why GoatCounter ignores Do Not Track
- 26 May 2019 Copyright, culture, and democracy
- 28 Mar 2019 Anti-vaxers are not evil
- 19 Mar 2019 Why “rape games” are worse than violent games
- 19 Feb 2019 Vested interest in mismanaging government
- 5 Apr 2018 Being right
- 14 Jul 2017 Browsers and conflicts of interests
- 24 Jun 2017 Why teach kids to program?
Programming
- 16 Nov 2024 Against best practices
- 22 Feb 2021 Go is not an easy language
- 10 Dec 2020 Bitmasks for nicer APIs
- 29 Nov 2020 Stupid light software
- 25 Nov 2020 An API is a user interface
- 25 Apr 2020 Storing files in .git
- 5 Dec 2019 Good comments read well and are to the point
- 7 Oct 2019 On being the right size
- 22 Mar 2019 Easy means easy to debug
- 7 Jan 2019 Testing isn’t everything
- 4 Sep 2016 YAML: probably not so great after all
- 7 Feb 2016 The downsides of JSON for config files
Python
- 14 Nov 2014 Security of Python’s pickle and marshal modules
- 10 Feb 2014 A primer on the str and bytes types in Python 3
RimWorld
- 29 Sep 2021 Getting started with RimWorld modding on Linux
Ruby
- 20 Aug 2014 Intercept outgoing mails in Ruby on Rails
- 24 Jun 2014 Making FlagShihTzu work well with Formtastic
Ruby on Rails
- 20 Aug 2014 Intercept outgoing mails in Ruby on Rails
- 24 Jun 2014 Making FlagShihTzu work well with Formtastic
Security
- 28 Oct 2024 Jia Tanning Go code
- 9 Nov 2019 Curl to shell isn’t so bad
- 13 Mar 2019 Why isn’t Amazon.com signing their emails?
- 5 Sep 2016 Some thoughts on CDNs
- 14 Nov 2014 Security of Python’s pickle and marshal modules
UX
- 17 May 2020 Experiences with email-based login
- 20 Apr 2020 The problems with hard wrapping email body text
Unix
- 22 May 2024 Safe terminal escape codes
- 20 Oct 2021 s/bash/zsh/g
- 22 May 2020 Some zshrc tricks
- 3 Jan 2020 Scripting tmux
- 12 Dec 2019 Better UX when reading from stdin
- 9 Nov 2019 Curl to shell isn’t so bad
- 1 May 2019 Using flags for configuration in Go
- 30 Apr 2019 Flags are great for configuration
- 15 Jan 2019 The Art of Unix Programming, reformatted
- 26 Dec 2017 The shell scripting trap
- 15 Jan 2015 Making find -exec faster
Vim
- 7 Nov 2019 Vim myths
- 31 Oct 2019 Effective VimScript
Web
- 5 Aug 2020 Analytics on personal websites
- 13 Feb 2020 The web as a GUI toolkit
- 8 Jan 2020 Bookmarklets to deal with annoying designs
- 4 Jan 2020 Why GoatCounter ignores Do Not Track
- 27 May 2019 Why I’m still using jQuery in 2019
- 12 Feb 2019 Why Hello CSS doesn’t use CSS variables
- 14 Jul 2017 Browsers and conflicts of interests
Worklace
- 18 Feb 2021 Downsides of working remotely
zsh
- 20 Oct 2021 s/bash/zsh/g
- 22 May 2020 Some zshrc tricks