In the previous post I talked about how we test Materialize. This time I’ll describe how I significantly sped up our Continuous Integration (CI) Test pipeline in July, especially for pull requests that require a build and full test run. The goal is to make developers more productive by reducing the time waiting for CI to complete.| hookrace.net
In our last blog about our Quality Assurance (QA) team, we gave an overview of the QA process, including our software and testing methods. One of our key tools during testing is the Materialize Emulator, a Docker image that allows you to maintain a locally hosted version of Materialize.| hookrace.net
The CI Flake| hookrace.net
Testing Materialize| hookrace.net
Or how to make naïve hosters shut down your victim’s server.| HookRace Blog
In my previous post 8 months ago I described how our open source online game DDraceNetwork has been suffering under DoS attacks for about 8 years, basically since its inception. Recently the attacks have gotten much worse, forcing us to work on further approaches. Since many players made suggestions recently, I’m writing this blog post to summarize what we are attempting and to ask for help again.| HookRace Blog
DDraceNetwork is an open source online game I’ve been running since 2013 with a community of volunteers. The game is available for free, I’m hosting servers for it in many countries around the world so that we have trusted official ranks. The servers are paid for by donations, which I stop collecting once the cost of the servers for the current year is covered. I wrote about DDNet in a previous post in 2016 and also a bit about the game history in 2013.| HookRace Blog
Today I lost access to my home server. As I described in a previous post I depend heavily on the server to fetch my emails, as a file server, to synchronize files, for newsbeuter and irssi sessions and many other things. As no one was going to be in proximity of the server for the next few hours, my goal for today was to solve the problem remotely.| HookRace Blog
Nearly two years ago I posted this endless GIF that always shows the current time in UTC:| HookRace Blog
Some people really liked the dark DDNet theme for Halloween by Soreu, so we decided to keep it possible to use the default bright or the dark theme.| HookRace Blog
I have recently received a job offer to work on a blockchain implementation. While the offer was very generous, I had to turn it down. In this post I want to collect the thoughts that went into my decision process leading to this conclusion.| HookRace Blog
I started working as a C++ developer in the HANA Core Platform team at SAP in Walldorf, Germany more than a year ago. In this time I have gotten some insights into the development environment and processes. I will use this post to illustrate them by the example of adding a small new feature and explaining the steps on the way of getting it released. Some of this will be specific to HANA, some to my team inside HANA, some to my own system.| HookRace Blog
This is an endless GIF that always shows the current time in UTC:| HookRace Blog
In this post I want to highlight a few fun aspects of the Haskell programming language. The purpose is to give you a taste of Haskell so that you will want to learn more of it. Don’t consider this as a tutorial or guide but rather as a starting point, as it is based on a short talk I held at work, which in turn is based on my favorite material from holding practical courses about Haskell at university.| HookRace Blog
In my latest post I showed some| HookRace Blog
Japanese Translation| HookRace Blog
Introduction to the Introduction (Meta-Introduction)| HookRace Blog
Surprisingly I’m working on HookRace again. I might| HookRace Blog
Last night I had an idea and implemented it, soo let’s see what will happen.| HookRace Blog
The size of binaries in the Nim programming language seems to be apopulartopicrecently. Nim’s slogan is expressive, efficient, elegant, so let’s examine the efficient part in this post by exploring a few ways to reduce the size of a simple Nim Hello World binary on Linux. Along the way we will:| HookRace Blog
Let me get this straight. We have an emulator for 1985 hardware that was written in a pretty new language (Go), ported to a language that isn’t even 1.0 (Nim), compiled to C, then compiled to JavaScript? And the damn thing actually works? That’s kind of amazing.| HookRace Blog
I spent the last weekend working through the amazing| HookRace Blog
In my last post I showed what makes the Nim programming language special. Today, let’s consider Nim from another angle: What makes Nim a practical programming language?| HookRace Blog
Russian Translation by frol, Chinese Translation by JiyinYiyong, Japanese Translation by Mutsuha Asada| HookRace Blog
To learn some Nim I held a talk about it at the GPN14 (in German, Slides).| HookRace Blog
What is HookRace?| hookrace.net
macOS Setup after 15 Years of Linux| hookrace.net
€9 Ticket| hookrace.net
Nim is not the fastest language, it’s not the easiest language to write in and it surely has some flaws that should be fixed. Nim has no single “killer feature” like go’s goroutines or Rust’s memory management. But Nim doesn’t need a killer feature. Instead it strikes a reasonable balance that makes it the most efficient language for me:| hookrace.net
Haskell: Game Programming with GIF Streams| hookrace.net
YugabyteDB is a cloud-native database for business-critical enterprise applications. It is designed to provide continuous availability as well as horizontal scalability, while retaining a strong set of RDBMS features. This objective creates a strong quality incentive for us in the Yugabyte Quality Assurance (QA) team. As a member of this team, I am giving an overview of the testing philosophy, approaches, and implementations for YugabyteDB.| hookrace.net
Nim Code Coverage| hookrace.net
Since today Nim 0.11 has been released, I guess it’s a good time to| hookrace.net
My most recent post goes in another direction (no, it’s still about Nim): How I| hookrace.net
Consider the wave-particle duality in quantum mechanics. Every particle behaves as a wave, as long as you haven’t interacted with it. Thanks to Haskell’s lazy evaluation values are also only evaluated once they are accessed (interacted with particles), and stay unevaluated thunks (waves) in the meantime.| hookrace.net
Linux Desktop Setup| hookrace.net
One year of cycling to work| hookrace.net
The preliminaries are simple:| hookrace.net
Broken Hardware, Fixes and Hacks over 8 Years| hookrace.net
Experiences of Running an Online Game for 3 Years| hookrace.net
DDNet Server Statistics with ServerStatus, RRDtool and Nim| hookrace.net