Curriculum Vitæ

Personalia

Name Ralph Meijer
Location Eindhoven
Contact via email or xa Jabber

Education

Master of Computer Science

Technische Universiteit Eindhoven — 2004

Focus on Distributed Systems.

Master's project

Philips Electronics, Eindhoven, The Netherlands — One year, 2003–2004
Sector Information and Software Technology, group Software Architecting

The design of a framework to test and experiment with different approaches to Quality of Service and graceful degradation in wireless video streaming. Implementation based on GStreamer, adding RTP network streaming and using layered video streams, with increasing quality. Thesis.

Internship

Ericsson Radio Labs, Stockholm, Sweden — Three months, 2000

The design of a robust Voice over IP application, resistant to packet loss as a result over radio (GSM) transmission. This application was to be used in existing test bed that simulates radio transmissions including interference. The goal of the larger project was to reduce traffic size made up by IP/UDP/RTP header information, while being able to resynchronize despite significant packet loss.

Employment

Software Developer

Mailgun / Rackspace — May 2013–present

San Francisco (CA) / San Antonio (TX), USA – Remote

Mailgun is a (transactional) email service for developers. Since 2012 it has been part of Rackspace, the leading managed cloud company.

As Software Engineer, I have been responsible for a variety of Mailgun's back-end services, most notably:

  • Setting up and maintaining our event logging infrastucture, based on Elasticsearch, Logstash and Kibana, both for customer-facing logs as well as internal application logs. This was initially based on an existing Redis based messaging bus, and later switched over to Kafka.
  • As part of this, introduced UDPLog (see below at Mochi Media), and made various improvements, including support for Syslog, Redis, and Kafka.
  • Setting up and maintaining our internal metrics infrastructure based on Graphite, StatsD and Grafana.
  • Setting up Jenkins, an automation system for building, testing and deploying software components. Part of this work was writing a script to build Jenkins job configuration files using templates, and set up integration with GitHub for triggering builds.
  • Managing our cloud infrastructure, including writing/improving a large number of Chef recipes/cookbooks, and setting up the integration with Rackspace Cloud Monitoring.

Platform Engineer

Mochi Media — December 2011–March 2013

San Francisco, California, USA – Remote

Mochi Media was the largest online games network in the world. They provided products and services for managing the distribution of games, to track usage and support in-game advertising and micro-transactions.

As Platform Engineer I was responsible for maintaining and improving the Python and Erlang based back-end systems for serving up ads and supporting services. Some larger projects I have been involved in are:

  • Moving ETL jobs, for log processing and reporting, from Vertica to Hadoop/HBase.
  • Enhancing the centralized logging infrastructure by complementing Scribe with logstash, Kibana and Graylog2. I also contributed several changes to logstash back to that project.
  • Standardising Python application logging using the Python Logging system and writing logging handlers to pass messages to logstash via RabbitMQ. The same was done for our Twisted based applications, using Twisted's logging system. After joining Mailgun (see above), this was released as UDPLog.
  • Setting up Graphite and txStatsD (a Twisted implementation of statsd), and modify applications to send metrics there.
  • Writing scripts for aggregating metrics from ElasticSearch and RabbitMQ.

The logging and graphing projects proved to significantly cut down on the amount of effort and time needed to track down issues and allow us to detect new problems faster. Besides that we were able to cut down on technical debt by replacing or removing related existing custom code and suboptimal services.

Senior Developer

Mediamatic Lab — November 2007–December 2011

Amsterdam, The Netherlands – Partially Remote

Mediamatic Lab builds web-based social networks, communities and connections with the physical world. The social networks are built on top of the Community Management System anyMeta.

My role was to architect and implement new features to PHP-based anyMeta. A large part of these has been to connect different instances of anyMeta into a federation using open technologies like Atom, OpenID, OAuth, XRDS and Jabber/XMPP. Related physical world projects involved RFID and Arduino controller boards. Parts of these enhancements have been built using Twisted in Python.

Software Engineer

Jaiku — March–October 2007

Helsinki, Finland – Remote

Jaiku was the name of an online service that was developed by a company with the same name, prior to being acquired by Google in October 2007. The service provided users the ability to share their online presence and location with other people, and keep them updated on new photos, trips, blog entries and other social objects they create within other services. All these updates are aggregated into a so-called activity streams. Aspects of Jaiku have influenced what eventually grew to be Google Plus

Besides the website, the service could be accessed through a mobile client for Nokia Series 60 phones, a mobile version of the website, SMS and Instant Messaging (IM). My work focused on the IM interface, based on Jabber/XMPP and more general backend programming on top of Twisted, a framework for networked applications in Python. I was also involved with developing a way to let the service interoperate with other social networking services using open protocols and formats, such as XMPP and Atom, in a near-real time fashion.

Scientific Programmer

Technische Universiteit Eindhoven — 2004–2007

Department Mechanical Engineering, group Systems Engineering
Eindhoven, The Netherlands

Aid researchers by designing and implementing software that supplements their research. Most of the work is focussed on developing models of (parts of) industrial machines. The χ modeling language is a formalism that borrows from process algebra and automata for describing descrete event, timed and hybrid systems. The χ tooling project provides tools to simulated χ models or translate them to other formalisms for analysis of properties. In addition, the models can be used as part of the design and execution of a new system. This is referred to as Model Based Engineering.

Worked on:

  • Python based simulator for χ.
  • Translations from χ to Promela, Uppaal and μCRL using ASF+SDF, a specification language for defining syntax and semantics of languages.
  • A way to execute parts of χ models in combination with realizations (e.g. in hardware) using Twisted and Jabber technologies.

Network Administrator and Software Developer

OLM and subsidiaries — 1998–2003

Eindhoven, The Netherlands

Worked as network administrator of the OLM server park, maintain web and database servers, e-mail, firewalls for the Virtual Communities developed by OLM like SmulWeb, ReisWeb, VrouwZijn, SportWeb and Born2Chill in the Netherlands, Belgium and Germany.

Also developed a Personal TV Guide (previously available at tvgids.nl) and a one-time login system and identity system for all communities called Wereld.

Relevant private projects

Jabber/XMPP — 2000–present

XMPP Council — 2004–2013

XSF Board — 2013–present

Jabber is a set of streaming XML protocols and technologies that enable any two entities on the Internet to exchange messages, presence, and other structured information in close to real time.

Jabber's base protocols have been standardised within the IETF as the eXtensible Messaging and Presence Protocol or XMPP. The XMPP Standards Foundation (XSF) builds open standards on top of XMPP in its XMPP Extension Protocol (XEP) series and is the unifying entity in the Jabber community.

I am a founding Member of the XSF, have served on its XMPP Council that manages the XMPP standards process for 9 years, and have been Director of the XSF since 2013. I have co-authored the Jabber Publish-Subscribe XEP and several related specifications. I also developed Wokkel, Idavoll, and Mimír, a hybrid Web/Jabber news service, and host several experiments at ralphm.net.

I give presentations and manage booths at conferences like FOSDEM and EuroOSCON.

Twisted — 2004–present

Twisted is an event-driven framework for building networked applications in Python. It implements several network protocols, and I am the module owner of the Jabber implementation.

DJOE — 1993–2001

De Jonge Onderzoekers Eindhoven (DJOE, The Young Scientists, Eindhoven) is a non-profit organisation that provides a laboratory for 12–20 year olds to get acquainted in various technical fields, among which Physics, Electronics, Chemistry, Mechanical Engineering and Computer Science. As a participant, I was UNIX system administrator from 1994–2000 and also served on the board for about three years.

Skills

Natural Languages
Dutch and English, both fluent in writing and speaking.
Programming languages
Python, Ruby, PHP, Javascript, Perl, C, and C++, among others including assembly for a number of architectures.
Database administration and development
Elasticsearch, PostgreSQL, SQLite, MySQL, Oracle.
Messaging systems
XMPP/Jabber, Kafka, RabbitMQ, Logstash, Syslog
System administration
FreeBSD, GNU/Linux, SunOS/Solaris, Novell.
Network administration
UTP and BNC cabling, Cisco Routers and Managed Switches, DHCP, firewalls, traffic shapers, bridges, DNS, NFS, Apache web server, Sendmail and Postfix mail servers.
Network Protocols
IP, TCP, UDP, RTP, HTTP, SMTP, Syslog, XMPP/Jabber.
Web development
(X)HTML, XML, XSLT, XPATH, CSS, RSS, Atom, SOAP, XML-RPC.
Workflow technologies
Jenkins, Travis-CI, Github, Trac, Buildbot
Configuration Management
Chef, Puppet, Make, Sphinx