- 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
- 15 Jan 2019 The Art of Unix Programming, reformatted
- 14 Jan 2019 You (probably) don’t need Kubernetes
- 13 Jan 2019 Source code shame
- 7 Jan 2019 Testing isn’t everything
- 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
- 17 Dec 2016 Project status badges
- 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
- 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
- 3 Feb 2014 Generate passwords from the commandline
See GitHub for a full list.
- find-cursor – Highlight the cursor position.
- hello-css – A CSS template focused on readability.
- info – Texinfo made palatable.
- pkg_clearleaves – Remove packages on which no other packages depend.
- readon.js – Continue reading a web page from where you left last time.
- sanitize_files – Basic cleanup of your code.
- singlepage – Bundle external assets in a HTML file.
- uni – Query the Unicode database from the commandline.
Go libraries and tools
- formam – Scan HTML forms in to a struct.
- goimport – Add, remove, or replace imports in Go files.
- guru – Go errors with a Guru Meditation Number.
- hubhub – Set of utility functions for working with the GitHub API.
- mailaddress – Mail address parsing library for Go.
- sconfig – A simple and functional configuration file parser for Go.
- reload – Lightweight automatic application reloading for Go.
- spamc – Go client for SpamAssassin.
- utils – Collection of often used extensions to Go's standard library.
- validate – Simple validation.
- zhttp – Martin's HTTP package.
- zlog – Go logging library.
~/.vim– All sorts of stuff.
- My first vimrc – A simple vimrc generator for new users; see /my-first-vimrc.
- VimLog – A ChangeLog for vim; see /vimlog.
- auto_mkdir2.vim – Automatically create directories.
- confirm_quit.vim – Ask for confirmation before quitting Vim.
- default2.vim – Vim's default colour scheme with some small enhancements.
- globedit.vim – Use globbing patterns for :edit, :tabedit, etc.
- gopher.vim – Plugin for the Go programming language.
- helplink.vim – Link to Vim help pages with ease.
- jumpy.vim – Filetype-specific mappings for
- packman.vim – A simple Vim plugin/package manager.
- startscreen.vim – Customize Vim's start screen.
- switchy.vim – Switch to related files.
- testing.vim – Small testing framework for Vim.
- undofile_warn.vim – Warn when using the undofile.
- xdg_open.vim – Run xdg-open from Vim; re-implements netrw's gx.
Also see the archives. I archive things based on “interestingness” to the general reader, rather than age. “How to detect automatically generated emails” is useful if you’re creating an email system, but most people aren’t. Archived does not mean outdated.