This is the homepage of Martin Tournoij, also known as arp242 and Carpetsmoker on the web. You can also find me at GitHub, Stack Overflow, couchsurfing, Keybase, Lobste.rs, Hacker News, and reddit. Send an email to firstname.lastname@example.org or create a GitHub issue if you want to contact me. Also see my CV.
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.
- It’s fine to be elitist, sometimes
- Tired of Stack Overflow
- Launching GoatCounter; or: let's try and make a living from this Open Source thing
- The other kind of censorship
- Why I'm still using jQuery in 2019
- Copyright, culture, and democracy
- Using flags for configuration in Go
- Flags are great for configuration
- The value of negative arguments
- Anti-vaxers are not evil
- Easy means easy to debug
- Why “rape games” are worse than violent games
- Why isn't Amazon.com signing their emails?
- Vested interest in mismanaging government
- Why Hello CSS doesn’t use CSS variables
- The Art of Unix Programming, reformatted
- 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
- The downsides of JSON for config files
- 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.
- aurgit – A simple way to manage AUR packages.
- autofox – Automatically configure Firefox.
- bestasciitable.com – Or, why does Ctrl+i insert a Tab in my terminal?
- dotfiles – My configuration files.
- find-cursor – Highlight the cursor position.
- hello-css – A CSS template focused on readability.
- 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.
- sanitize_files – Basic cleanup of your code.
- 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.
Go libraries and tools
- goimport – Add, remove, or replace imports in Go files.
- hubhub – Set of utility functions for working with the GitHub API.
- sconfig – A simple and functional configuration file parser for Go.
- formam – Scan HTML forms in to a struct.
- zhttp – Martin's HTTP package.
- zlog – Go logging library.
Things I created/maintained at my previous employer; I still try to maintain these (as I continue to use some of these packages myself).
- asbyte – Print data as Go byte slices.
- 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.
- 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.
- 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.