Talks

thoughtbot defaults with suspenders

Railshöck ·

A dive into the internals of the suspenders project. Suspenders uses Rails generators to quickly configure a Rails app in line with practices agreed and refined at thoughtbot.

Icecast stream parsing

Railshöck ·

Icecast is an audio streaming format often used by Internet radios. I show how it can be read to extract metadata about the currently played song.

Elm in production

Elm Zurich ·

I present an Elm application which aims to make surgery safer with checklists. Surgeons prepare a list of steps and procedures before the operation. In the operating room they see the checklist on a tablet connected to a foot pedal. With the pedal they can advance through the checklist or note problems. I talk about the data structures used, the good side of shipping an Elm app to production and some pain points.

Writing a Ruby test framework from scratch

Railshöck ·

In this live coding session, I implement assertions using fundamental concepts of the Ruby programming language, then create a test runner. I spend some time on testing the framework using itself. The final result is a small library which is used similarly to Ruby's minitest.

Multitenancy with Rails (2nd version)

Railshöck ·

This presentation about multi-tenant applications is very similar to the one given at Geneva.rb.

Writing a game with Elm

Elm Zurich ·

In the Elm 0.17 days I made a "breakout" clone. In this presentation I demo the game. Then I show the code for the game loop, including the rudimentary collision detection and collision response. In the end I discuss the unit tests and property-based tests.

Multitenancy with Rails

Geneva.rb ·

I explain how we combined 3 applications which had very similar code bases (started as forks from each other), but were deployed separately. In the new architecture, multiple customers are served from the same application. Data separation at the database level is managed with PostgreSQL schemas and the apartment gem. There is also separation on the file system (e.g. uploads) and some intricacies around the configuration of background jobs, email delivery and caching. In the end I also show how one can still customize the design, translations and even features for each tenant.

Developing Ruby gems with native extensions

Geneva.rb ·

Ruby provides a way to use code written in other languages (e.g. Rust, C, Java) within Ruby libraries. In this talk I introduce how to get started with integrating such an extension into a Ruby gem.