Kevin's blog

How to set up a Windward server on GCP and some insight into systemd

Windward is an action-filled multiplayer sandbox game that puts you in control of a ship sailing the high seas of a large procedurally-generated world.

Thanks to the recent Steam Pirate Sale and my friend Alex, I started playing Windward. For technical reasons, we had to set up a dedicated server which turned out to be fairly simple and has the added benefit of asynchronous play that since then lured in more players (shout out to Patrick!).

Building a mechanical keypad from scratch

Zen mind, beginner’s mind.

Keyboards are a fascinating topic. We interact with them on a daily basis without the need for a deep understanding of how they work. I consider myself a keyboard enthusiast, yet, I had never built one myself.

Comprehending monads

In this post, we explore the relationship between Monads and list comprehension and implement some ideas from Haskell in Python.

Refined simple group structures via templates in C++

This is a follow-up to a post from last year called “Simple group structures via templates in C++” in which we implemented a compile-time O(1) group structure. Now we want to revisit the code and use a nice pattern that can be learned in “C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond” by Abrahams and Gurtovoy.

A good Git workflow or how to correctly rebase your PR

Git is the tool when it comes to collaborative work. GitHub with its nice UI and its mechanism of forking and pull requests can boost a team’s productivity even more. Unfortunately, there isn’t just one way to get things done with Git and GitHub. Here I present an approach to working with pull requests that has proven to cause little friction if done correctly.

Simple group structures via templates in C++

If you enjoyed the previous post on Simple Higher Order Functions in C++ you already got a taste of templates in C++. In this post we have a look at how we can implement compile-time groups in C++11. If you are unfamiliar with the concept of groups, you can read about them on Wikipedia or Wolfram MathWold.

Simple higher order functions in C++

Here is a question from a friend of mine that I will try to answer in this post:

I have the problem that I want to pass a function to a function. Until now, I have used std::function but I know there is also the possibility of function pointers and also you said something about templates and who knows what else. The question is of course: What’s the difference and what is best?

In technical terms the question is: “How do higher-order functions work in C++ and which way to implement them is recommended?”. I will examine the problem in two steps and then discuss the alternatives.

Memory management of C libraries in C++

Today, I had some time to play around with libgit2, an excellent C-library for Git. But since I was thinking about using it together with the freshly released Proxygen, the fast HTTP-framework from Facebook, I wanted to use the library functions from C++ from the start.

This was a perfect opportunity to play around with C++ memory management objects in the context of a C-library.

ROOT installation on OS X

In particle physics, when it comes to data analysis, CERN’s ROOT often is the tool of choice. It is a big and powerful framework that can do a lot of magical things. In this post, I don’t want to discuss its advantages or disadvantages but rather explain how I install it on Mac OS and why I do so.