Today, I show how to cheat the halting problem and why Web3 of all industries popularized the underlying principles. We will look at how untrusted user code is sanitized in eBPF as used in the Linux kernel, in Bitcoin script, in EVM, and, of course, in Wasm. This is part 4 of the Wasm in the Wild series, which now has a nice series overview ... Read more 11 Jul 2024 - 39 minutes read
Why and how are people running WebAssembly on the backend? I make the case it's simply the best way to run sandboxed code written in systems languages and why you should consider using it in your applications. Examples will be in Rust but the lesson applies to many languages. This is part 3 of the Wasm in the Wild series. Each post can be re... Read more 21 Jun 2024 - 25 minutes read
In this article, I look at the history of running untrusted code in browsers, contrasting WebAssembly to Java and Flash on an architectural level. To top it off, I will also show a Rust code example to demonstrate the sandboxing techniques of Wasm. I hope by reading this article, you will gain a new appreciation for the design decisions behind... Read more 13 Jun 2024 - 24 minutes read
Join me on a guided journey through the wild world of Wasm. Learn the secret sauce that enables Wasm runtimes to be fast and secure. At the end of this article, you will understand why Wasm was designed as a stack machine and what basic memory regions exist in Wasm. Introduction Welcome, welcome! Before we start our hike into the WebAssemb... Read more 05 May 2024 - 15 minutes read
A traditional benchmark decides which of two implementations is superior in a controlled lab environment. But what if you have a system with soft real-time constraints? How can you proof they won't fail the real-time constraint? And how wide is the margin? Byzantine-Benchmarking is one possible approach to assess it. I am in search of a perfo... Read more 29 Jan 2023 - 14 minutes read
Today, I'm writing about what types can be used for other than checking code properties. It will involve a good chunk of dynamic typing, and yes it's in Rust. There are some wild ideas in it, so fasten your seatbelt and get ready for a ride! Overview The article is divided into introduction, background, three sections containing the main cont... Read more 28 May 2021 - 40 minutes read
Have you ever spent time writing boilerplate code around enums? With Rust, you don't have to! In this article, I want to show how easy it has become in Rust to use a single enum type across many application domains. From SQL databases, through a web server and a GraphQL interface, all the way to a web client, we will use a single enum definitio... Read more 13 Mar 2021 - 11 minutes read
Paddlers 0.2.1 is online and brings a ton of new features! Among other features, I present a new take on the tower defense aspect of the game, custom shaders for improved graphics, a skill-tree, and quests to guide the players through the game mechanics. Play the demo here! (Register with a fake email, it is still not used in any way.) It is n... Read more 28 Feb 2021 - 10 minutes read
Finally, with the completion of the transition to a new web-oriented game engine, Paddlers version 0.2 is ready. In this short post, I summarize the changes and what they mean for the Paddlers browser game. This milestone has been a lot of work, although it barely shows in the demo. For the past seven months, I implemented zero new features. No... Read more 01 Jan 2021 - 3 minutes read
An editor from SitePoint reached out to me, asking me if I can write an article for them. They have decided to add some Rust content and wanted me to write an introduction to the language. To make a long story short, the article has now been published. It is primarily directed towards JavaScript programmers with little to no Rust experience. Bu... Read more 15 Dec 2020 - less than 1 minute read
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 ex... Read more 03 Oct 2020 - 30 minutes read
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 13 May 2020 - 18 minutes read
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 16 Nov 2019 - 19 minutes read
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 11 Sep 2019 - 8 minutes read
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 07 Aug 2019 - 5 minutes read
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 17 Jul 2019 - 5 minutes read
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 19 Feb 2019 - 10 minutes read
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 13 Feb 2019 - 10 minutes read
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 17 Sep 2018 - 9 minutes read
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 02 Jul 2018 - 8 minutes read
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 09 Jun 2018 - 14 minutes read
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 31 May 2018 - 7 minutes read
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 20 May 2018 - 6 minutes read
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 18 May 2018 - 9 minutes read
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 24 Apr 2018 - 1 minute read