This is the homepage of Martin Tournoij, also known as Carpetsmoker and arp242 on the web. You can also find me at GitHub, Stack Overflow, couchsurfing, Keybase, Lobste.rs, Hacker News, and reddit. Send an email to email@example.com or create a GitHub issue if you want to contact me.
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.
Writings (RSS feed)
- Vested interest in mismanaging government
- Why Hello CSS doesn’t use CSS variables
- You (probably) don’t need Kubernetes
- Source code shame
- Testing isn’t everything
- Open source DIY ethics
- Learning a programming language
- Go testing style guide
- Being right
- Why write?
- The shell scripting trap
- Browsers and conflicts of interests
- Why teach kids to program?
- PHP’s fopen() is broken
- Project status badges
- I don’t like git, but I’m going to migrate my projects to it
- Some thoughts on CDNs
- YAML: probably not so great after all
- JSON as configuration files: please don’t
- Security of Python’s pickle and marshal modules
- A primer on the str and bytes types in Python 3
- Generate passwords from the commandline
See GitHub for a full list.
- autofox – Automatically configure Firefox.
- battray – Battery status tray icon with scripting support.
- dotfiles – My configuration files.
- download-npo – Download episodes from npo.nl
- find-cursor – Highlight the cursor position.
- goimport – Add, remove, or replace imports in Go files.
- hello-css – A CSS template focused on readability.
- hubhub – Set of utility functions for working with the GitHub API.
- info – Texinfo made palatable.
- orgstat – List git author statistics for an entire GitHub organisation.
- pkg_clearleaves – Remove packages on which no other packages depend.
- readon.js – Continue reading a web page from where you left last time.
- robots – Reproduction of the 1980 “classic” robots game.
- sanitize_files – Basic cleanup of your code.
- sconfig – A simple and functional configuration file parser for Go.
- singlepage – Bundle external assets in a HTML file.
- trackwall – DNS proxy and filter − /etc/hosts on steroids.
- uni – Query the Unicode database from the commandline.
My employer lets me open source code; this is not everything we work on, just the parts where I contributed in a significant way. This is all Go stuff.
- asbyte – Print data as Go byte slices.
- easytpl – A very simple template system.
- godocgen – Generate self-contained HTML documentation with godoc.
- guru – Go errors with a Guru Meditation Number.
- kommentaar – Generate documentation for Go APIs.
- mailaddress – Mail address parsing library for Go.
- middleware – Collection of Go HTTP middleware.
- reload – Lightweight automatic application reloading for Go.
- spamc – Go client for SpamAssassin.
- test – Small Go testing helpers.
- toutf8 – Convert text to UTF-8.
- utils – Collection of often used extensions to Go's standard library.
- validate – Simple validation.
~/.vimdirectory – All sorts of stuff.
- My first vimrc – A simple vimrc generator for new users; see /my-first-vimrc.
- 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.
- git.vim – My small Vim git plugin.
- globedit.vim – Use globbing patterns for :edit, :tabedit, etc.
- helplink.vim – Link to Vim help pages with ease.
- listnav.vim – Navigate the quickfix or location list.
- matchjump.vim – Jump to next/previous matches added with matchaddpos().
- packman.vim – A simple Vim plugin/package manager.
- scomplete.vim – My simple completion plugin.
- softwrap.vim – Unobtrusive column highlight.
- startscreen.vim – Customize Vim's start screen.
- 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.