Jakob's Blog Personal insights into technologies

Rust meets the web - a clash of programming paradigms

Most code running on the web is event-based, garbage-collected, and dynamically typed. In stark contrast, Rust is a compiled language with static type- and memory-safety without a garbage-collector. What are the implications for a project that compiles Rust to WebAssembly? I try to answer this question with a fictive story and hands-on code... Read more

Gamedev #4: Benefits of full-stack Rust

Efficiently synchronizing a client application with the server can be challenging. Today, I write about my recent experience on this topic and the benefits I found when using Rust for both the server and the client endpoints. Everything in this post is based on my long-term hobby project called Paddlers, an online multiplayer game playable in t... Read more

Gamedev #3: Fun with Rust and distributed systems

Programming an online multiplayer game is fun! Why, because programming is fun, especially in Rust. Not convinced? Let me show you. In this post, I will start to talk about the exciting technical stuff around Paddlers. If you haven’t read my other posts (#0, #1, #2), Paddlers is a game in which your goal is to make ducks happy. As of recently, ... Read more

Gamedev #2: Multiplayer and procedural map generation

Today, we define the basics of multiplayer in Paddlers and I walk you through the necessary steps to generate pseudo-random maps using procedural techniques. In previous posts, I have written about the single-player experience which happens inside a single village on a stream of water. The multi-player game mechanics should take place on a glo... Read more

Gamedev #1: Game mechanics

Gather a cult of followers around you and let them rise to become the most powerful empire in all of Paddland! After defining a theme for my game in the last post, let me now describe the gameplay from a player’s perspective. Entrance As you, as a player, start your journey in Paddland, you have a choice to make. From a set of ducks, you can ... Read more

Gamedev #0: Creating a new universe

I am working on a brand new massively multiplayer browser game! Three weeks ago, I decided it is finally time to put aside some of my other hobby projects and get to work on a game once again. The game is called Paddlers, as in a paddling of ducks, and the story description is presented in this post. Now, being the programming nerd that I am,... Read more

The struggle with API design

GraphQL could safe many software projects from failure because it reduces the total workload. With examples from my own work experience, I explain why I think like that. In this post, I am writing about the benefits of using GraphQL that have a positive effect on the development process of software projects. There may also be technical aspects ... Read more

My first master semester at ETHZ

Five months with much coffee, short nights and many amazing new insights that I could learn. Read this to find out which course selection kept me 100% motivated throughout the semester. After a full year of work as a software engineer, at a place that was full of friendly people, interesting challenges and great working conditions, I went back ... Read more

A custom time display for public transportation – Programming the Software

How I have replaced a wall clock by an LED matrix: A short look into the programming of a microchip. Overview The final product of this hobby project is a tram station board that displays visually how long I have to wait for the next connection to the city by public transportation. Previously, I have shown how I have assembled a small board w... Read more

A public transportation departures display in my home – The Hardware

The time until the departure of the next tram always displayed on my room's wall. How to build the hardware for it? In my last post, I have introduced the ESP-01S module and I showed how to program the integrated ESP8266. Now, I want to talk about a project I have realized, using that technology. This post covers the design thoughts behind the... Read more

Rust in a coding competition (Part 3) - Filling in the gaps

Python, Haskell, C, or Rust? Which do you like best to solve this task? This is the third post in a series. Follow the link to start reading part 1 first, where you can also find the problem statement and the first part of the solution. Second subtask: Guessing Okay, we are still trying to decrypt an encrypted message. From the task desc... Read more

ESP8266: A minimalistic, Internet-enabled computer chip

The central processing unit: Merely 5mm by 5mm! The complete module? 14mm by 25mm. The ESP8266 is a microprocessor natively speaking every protocol required to connect to the World Wide Web through a local WiFi network. In this post, I am writing about the ESP-01S module, one of the most common modules using this microprocessor. The picture ab... Read more

Versatile Rust - Part 2 of Rust in a coding competition

What does define a multi-paradigm programming language? And why should we care? This is the second post in a series. Follow the link to read part 1 first. Rust is imperative-procedural and functional at the same time. It also comes along with object-oriented features like methods, inheritance, and polymorphism, although it is technically ... Read more

Rust in a coding competition (Part 1)

What is the best programming language for a coding competition? What are the significant differences? And how does Rust fit in? The other Friday night, I attended a coding competition called Codecon. It has been organized by Bloomberg and hosted by ETHZ. Although I did not know what type of tasks will expect me, I knew that Rust would be am... Read more

Why this?

Why creating this public place in cyberspace? Why sharing personal ideas in a written form? Well, the Internet has quickly become a substantial part of human civilization. Both commercially and privately. But I have never been an active part of social media nor did I really participate actively in any online community. So far, I have almost exc... Read more