Male. Born AD 1985. About 1.85m tall.

Primarily a frontend developer with deep knowledge of JavaScript, the DOM, W3C standards and everything else around web browsers. Has strong interests in functional programing languages, in particular Haskell. Builds simple but functional user interfaces.

Education

Lucerne University of Applied Sciences and Arts, Bachelor in Computer Engineering
My bachelors thesis was about an intelligent traffic tracking and control system. Our goal was to track the car traffic using mobile phones (we used a simple website and the W3C geolocation API to access the the position) and map that to street data from the OpenStreetMap project. Using historical data and the current state allowed us to detect traffic bottlenecks, and even provide alternative routes to drivers.
To this date I hold the record of most ECTS credit points earned in a single semester.

Work experience

Everyglobe, Frontend developer
Technologies: TypeScript, Backbone, Marionette.
Everyglobe is an online travel agency. At the time I joined the company had no dedicated frontend developer. After analyzing the existing frontend code I came up with a plan of action to clean it up and improve its structure. The first big part of that was the migration of the codebase from JavaScript to TypeScript. Using TypeScript gave us much more confidence when changing code or adding new features. Then I focused my work on capturing and reducing the complexity of the whole application. From experience in previous projects, I decided to put as much state as possible into a central object and write the view rendering functions as pure code. In most cases this approach made the code cleaner. However, the frameworks used in the frontend (Backbone and Marionette), as well as extensive use of jQuery plugins didn't make it always easy or efficient.
Better, Frontend developer
Technologies: TypeScript, Angular.js, Less, Haskell.
Better was a startup in the enterprise e-learning space. Our platform consisted of an online course editor (large single page application) and a learner-facing user interface (mostly static HTML pages generated by the server).
The course editor was an Angular.js application, with most of the core data structures and logic written in TypeScript. For the communication with the server we used a custom protocol based on Operational Transformation (OT). It allowed us to implement features such as collaborative editing and completely get rid of a 'save' button. That, coupled with the fact that the editor ran in the browser and thus was cross-platform, provided a superior user experience to competing products.
The learner-facing user interface was generated by the server, which was written in Haskell. I was part of the team which designed the UX, then took the designs and implemented them in the backend. Part of that work was to come up with a sensible component structure which was both easy and safe to use. This was my first collaborating on a Haskell project. While the language has a steep learning curve, I quickly became comfortable in it. Being part of a world-class Haskell team gave me valuable experience, and today it is my preferrred language when writing server-side code.
kooaba AG (acquired by Qualcomm), Ruby on Rails developer
Technologies: Ruby on Rails, MySQL, JavaScript, Scala, Play Framework, AWS.
Ruby on Rails was used as an integral part of the image recognition pipeline. The application served two roles: A traditional user-facing application where regular users could see and manage images and queries. The second role was to provide an API to clients who wished to use the image recognition service in their own applications.
We realized that monetizing a user-facing application is much more difficult than being a pure service proider (SaaS). The more important our API became, the more we started seeing bottlenecks, and the legacy started showing in the Ruby on Rails application. We decided to transition to a more service oriented architecture with small services written in Scala using the Play Framework.
We made heavy use of AWS services. Our infrastructure started in a single AWS region, but we were able to scale it up to run across multiple regions across the whole world.

Projects

Here is a selection of projects which I've recently worked on. The full list is available on GitHub.

Mudbath
Continuous integration and deployment server. Tightly integrated with GitHub.
The current version is the third iteration of a tool which I initially wrote to provide continuous integration services at Kooaba. It evolved into a general purpose task runner which can be triggered through GitHub events.
Haskell RethinkDB driver
Haskell driver for RethinkDB with strong focus on type safety. Makes use of Haskell extensions (TypeFamilies, GADTs) to achieve that.
Avers
JavaScript library which aims to provide a better model (the M in MVC) abstraction than traditional libraries such as Backbone. The implementation makes heavy use of modern web technologies, such as Object.observe.
The Avers ecosystem has grown from this simple library to a whole set of client and server side components. The ecosystem now includes: Haskell library which provides the glue between an JSON API and a database (RethinkDB), client-side implementation of that JSON API to synchronize and manage these objects on the client. Using these components makes it very easy to create rich client-side applications.
Encounter - The Game
Browser game modeled after World of Warcraft boss fights. Serves as a playground to test the latest browser technologies (WebGL, WebSockets, Object.observe, ...), JavaScript libraries (ReactJS) and engineering practices. The code is written in a mix of TypeScript and Haskell. I maintain the infrastructured and am the project lead.