Introduction

Below you will find examples of my programming work and my resume.

Note: I am hosting this website on my personal server at home so I apologize if the loading of images, videos and other big files is slow.

Programming experience

Java

A Quake 3 BSP and MD3 renderer

Renders maps and player models from the Quake 3 game but also does a few other neat things. Features include collision detection and response, gravity physics and very simple networking allowing two players to join the same map and shoot each other. It is implemented in Java and OpenGL. All features have been implemented from scratch. Please see "A Quake 3 BSP and MD3 renderer - Documentation.pdf" for a description of all features and more details on the implementation. The source is included in "A Quake 3 BSP and MD3 renderer - Source files.rar". If you want to try and run the program on your computer download "A Quake 3 BSP and MD3 renderer - Compiled.zip", unzip it and run the cgq3.bat file if in Windows or navigate to the cgq3 folder and type the following command: java -jar -Djava.library.path=lib -Dsun.java2d.noddraw=true cgq3.jar (requires that you have the Java runtime environment installed).

Screenshots


C

An adaptive reliable deadlock-free overlay network

This is a multithreaded distributed application, written in C. I wrote it as part of the work for my Master's graduation thesis at the Chikayama & Taura Laboratory at the University of Tokyo. My thesis and the source can be downloaded below. The application provides a communication mechanism for use in high performance distributed computing environments where a large number of geographically disperse compute nodes need to be connected over heterogeneous wide-area networks. In these environments, simply establishing as many connections as required will lead to network contention, dropped packets and reduced performance.

The problem is that simply establishing all-to-all connections between the nodes is not scalable. The solution employed here is to construct a virtual network on top of the physical network where each compute node is only sparsely connection to a few of the other nodes. This way fewer connection on average have to be made but now each node has the added responsibility of forwarding traffic destined for other nodes. Each node needs to have a routing table it can use to decide on which connection to forward traffic. Since the overlay is dynamic it must allow for nodes leaving and joining the overlay and each time this happens the routing tables need to be updated.

The work of my graduation thesis extends the work described in the paper "High Performance Wide-area Overlay using Deadlock-free Routing" by Hironaka, Saito and Taura. The distributed application sets up a TCP based overlay network, where TCP guarantees node-to-node reliability and packets are never dropped to guarantee reliability of transfers along multiple nodes. The connection selection algorithm and deadlock free route calculation algorithm (Up/Down routing combined with Dijkstra's algorithm) are from Hironaka et al.'s paper, the ability to adapt to changes in the network is based on the OSPF routing protocol described in RFC 2328 [3] (one of the major routing protocols the internet is based on) and finally a termination detection algorithm guarantees FIFO packet ordering in the adaptive overlay.

Visual C++ / Win32

For a personal project I needed to get information out of another process. Using Visual C++ and Microsoft Detours I wrote a small application that injects my .dll into an existing process to hook into the functions that were processing the information that I needed.

Web development / Linux server

I wrote this simple blog for myself, not so much for personal use but more out of curiosity how it all works. It uses SQL, PHP, XHTML, CSS and a little JavaScript and has the following features:

  • Password protected login using PHP sessions
  • The possibility to post blog entries that can be edited or deleted later. The entries are stored in a database.
  • The possibility to upload images that have automatically generated thumbnails. The filenames of the images are stored in the database.

I host this website on my personal server which has given me some experience with managing a (web) server. I am using a headless version of Ubuntu Server edition on which I installed and configured the necessary services for the website and my home network. This includes the following:

  • Apache
  • MySQL
  • PHP
  • DNS
  • DHCP
  • FTP
  • SSH
  • NAT
  • IPtables
  • Samba

Other websites that I have written are:

www.huurdershulp.nl

www.lazzeri.nl

ActionScript

This is the only experience I have with ActionScript, but I wrote this Flash video player that plays back my HD XBox360 captures encoded in H.264. The user can play/pause, mute/unmute, toggle fullscreen and use the sliderbar to seek to any point in the buffered portion of the video. It also shows the current playtime, total video duration and the buffer progress. I included the .fla source file and an example video below. See the video's page for more videos.

Get Adobe Flash player

Resume

Personal information


Name Matthijs Ritman
City Amsterdam
Country The Netherlands
Email matthijsritman (AT) gmail (DOT) com
Date of birth 21-10-1984 in Amsterdam, The Netherlands

Experience


2011 Software Engineer (Java)
2011 (Jan - Oct) External IT support
SYS (Supporting Your Systems)
Tasks: Provide remote and on location support for small to medium sized businesses. Support activities range from end-user support to setup and maintenance of physical or hosted servers (Windows or Unix based) and network infrastructure.
2001-2010 Business administration
Lazzeri Servizi BV, a small facility management service company (a two man administration)
Tasks: invoicing, accounting, personnel administration, managing the IT facilities.

Education


2010-2011 Master Information Sciences
Graduation Thesis
Vrije Universiteit
Amsterdam, The Netherlands
2010 (6 months) Graduation Thesis: "An adaptive reliable deadlock-free overlay network"
Chikayama & Taura Laboratory
(High performance and distributed computing)
Department of Information and Communication Engineering
The University of Tokyo
Tokyo, Japan
2009-2010 Master Information Sciences
Vrije Universiteit
Amsterdam, The Netherlands
2007 (6 months) Study of the Japanese language
Kudan Japanese Institute of Language and Culture
Tokyo, Japan
2004-2009 Bachelor Information, Multimedia and Management
Vrije Universiteit
Amsterdam, The Netherlands
1997-2004 Vossiusgymnasium
Amsterdam, The Netherlands

Languages


Reading Writing Speaking
Dutch excellent excellent excellent
English excellent excellent excellent
Japanese Hiragana, katakana and roughly 100 kanji hiragana and katakana very basic