Martin Tournoij

Last update: 7 May 2022;
Located in the Netherlands; open to relocating. Dutch nationality.

Key skills

Go (“Golang”) Advanced 6 years Main focus in the last six years
Python Advanced 10+ years Focus on shell tools and daemons; some TKinter, GTK, Qt
SQL Intermediate 10+ years Mostly PostgreSQL; also SQLite and MySQL/MariaDB
JavaScript Intermediate 10+ years TypeScript, CoffeeScript, jQuery, KnockoutJS
Ruby Intermediate 2 years Ruby on Rails, rspec, Sinatra
PHP Intermediate 6 years Zend Framework, Laravel, Symfony
Shell scripting Advanced 10+ years POSIX & zsh; some bash and ksh
Linux/Unix Advanced 10+ years Alpine, CentOS, Debian, Ubuntu, OpenBSD, FreeBSD
Standard practices 10+ years Good working knowledge of standard tools and practices such as git, mercurial, Docker, AWS, CI, TDD, etc.
Other Have jumped in on many other technologies when needed: Perl, C, MongoDB, RabbitMQ, etc.

Work experience

January 2022–May 2022: Timescale

Timescale is a time-series database for PostgreSQL. I worked on Timescale’s Cloud offering, which is a collection of microservices written in Go/gRPC.

March 2019–Present: GoatCounter

Founder of GoatCounter, an open source privacy-friendly web analytics platform. It aims to offer easy to use and meaningful privacy-friendly web analytics as an alternative to Google Analytics or Matomo.

I wrote most of the code, do the server management, support, etc. Essentially it’s a one-person operation.

May 2016–March 2019:

Worked on Teamwork Desk for two years, an email based helpdesk system. I programmed the API and email processing in Go and some frontend in CoffeeScript and Knockout.js.

I took the initiative to start various other projects now in use by many of our products: an OpenAPI documentation solution, standard Travis CI pipeline, internal godoc system, dev-env in Vagrant and later Docker, and I took the lead in rewriting various Desk packages to be more reusable.

In June 2018 I transferred to the Platform Team to work with all five product teams to create generic solutions, such as standard tooling/libraries and an app to manage cross-product users and settings.

Mar 2014–Oct 2015: LICO

I did most of the design and implementation for De Woningbeheerder – a management solution for house owners, brokers, and tenants – and Buzz – an email-based support app. Both are Ruby on Rails applications and extensively tested with rspec. I also jumped in on other Rails projects when needed.

Apr 2013–Dec 2013: AuguSoft

I added a CMS interface to VillaXL, a website to rent holiday homes. This involved updating and modernizing the internally developed PHP framework and writing a corresponding frontend with CoffeeScript and jQuery. I also worked on miscellaneous features and bugfixes for VillaXL and occasionally helped out on other projects.

Nov 2011–Apr 2013: Jibr

Designed and implemented WeRemind, an agenda application with automatic reminders via email or phone. This was a new application in Python and I also set up and managed the CentOS hosting environment.

Worked on various PHP/Zend Framework applications and hosting for then, including email hosting.

Jul 2008–Oct 2011: Aragorn

I initially started out as a repair technician for desktops and servers and took the initiative to write several Python tools to make this easier.

I worked on maintaining and expanding the intranet full-time for about a year. I expanded the intranet with new features and tools, integrated it with Exact Globe (the ERP and accounting package), created a new website with a Webshop, and did the server management.

Other experience