Christian Semmler

https://d33wubrfki0l68.cloudfront.net/32ede64addea7d9000698fe5b916f78918337d68/ab3be/assets/images/blog/blog-post-8-thumb.jpg

Archiving a vBulletin forum using HTTrack and Netlify

Apr 7, 2023
For many years, I've maintained and hosted a vBulletin forum that I've created to provide a platform for the vaultmp project. Eventually, development has ceased due to time constraints on my part, and I took the forums offline in 2015. Now they have returned as an archived, read-only copy on the same domain.
Read more →
https://d33wubrfki0l68.cloudfront.net/c24e0c4fc8ebeb141cda7ebb449e41c4412333ac/d794a/assets/images/blog/blog-post-7-thumb.jpg

Working for a Purpose Economy company: the sweet spot

Jun 15, 2022
We have finished restructuring our company dyve, and, among other things, have provided it with the underpinning of a legal framework that was required to fully articulate (and legally secure) our shared vision and purpose for ourselves and the company. We are now part of the Purpose Economy.
Read more →
https://d33wubrfki0l68.cloudfront.net/999961cffbcc434f18537884d85adde32cba4e49/21277/assets/images/blog/blog-post-6-thumb.jpg

Building a mobile app using Flutter in two weeks (iOS + Android)

Nov 20, 2021
This summer, we decided to architect and implement a mobile app accommodating the e-learning platform of one of our clients, troodi. We have chosen the Flutter framework, which allowed us to rapidly build a production-grade app within two weeks, ready to be deployed on both the iOS and Google Play app stores.
Read more →
https://d33wubrfki0l68.cloudfront.net/bf022d45026ddc94f38f5d77f9630e8290246984/6f962/assets/images/blog/blog-post-5-thumb.jpg

sidekiq_workflows: a workflows API on top of Sidekiq Pro

Sep 24, 2021
Sidekiq is one of the most popular background job processing systems in the Ruby ecosystem, which I’ve been using for almost a decade in at least half a dozen projects. The basic version is open-source and available under the LGPL license. A major feature introduced with Sidekiq Pro are batches - which I've written a gem for.
Read more →
https://d33wubrfki0l68.cloudfront.net/21035e1f02aa8752e75818269e2bce9af3ecd004/00981/assets/images/blog/blog-post-3-thumb.jpg

How to set up a 24/7 live stream radio on YouTube (for free)

Nov 21, 2020
Have you ever come across a YouTube video that endlessly loops a playlist of music? This post outlines a way to launch such a live radio using ffmpeg, the swiss army knife when it comes to any kind of media streaming or transformation, and a simple Docker image. You can even host the entire setup for free on services like Heroku.
Read more →
https://d33wubrfki0l68.cloudfront.net/dbaa2835c4b18625d2db8ae70aeadbb88d67b980/f36f8/assets/images/blog/blog-post-1-thumb.jpg

Reflections on 10 years as a software engineer

Sep 3, 2020
10 years ago, I started working professionally as a software engineer. Now, in 2020, it's time to take a look back. In this post, which is more personal than technical, I'm exploring how I turned my hobby into a profession, including examples of both personal and commercial projects, and how my perspectives changed along the way.
Read more →
https://d33wubrfki0l68.cloudfront.net/6004863cb684c1916018ced23614e4e588b1e4f4/f94a2/assets/images/blog/blog-post-2-thumb.jpg

Fast JSON Schema validation in Ruby

Aug 30, 2018
Defining JSON APIs using JSON Schema is growing in popularity, and for good reason. A schema can help with validation, documentation, and type definition. When it becomes an integral part of your stack, it's important to make sure that validation in particular is performing well enough not to slow down your API.
Read more →
https://d33wubrfki0l68.cloudfront.net/0be81eb336a3bf7211ce03a506fb847969344824/6fe20/assets/images/blog/blog-post-0-thumb.jpg

Why C++ (is fun to me): template metaprogramming

Jul 1, 2017
If you need to expose a number of functions in C++ to an interface, template metaprogramming may be of tremendous help. This post outlines one such case. Here is the entire working code example (GCC's optimizer is good enough to optimize all of the program away, that's why the compiled version is blank!)
Read more →