I love a good cloud infrastructure bargain. For a long time, my go-to was the fantastic (and cheap!) int128 NAT module to handle routing without paying the dreaded AWS Managed NAT Gateway premium. But as it with tech, things inevitably break. When I tried pairing the module with newer AMIs, it started causing some issues, specifically, it flat-out refused to reboot on failure. I went digging and…
Game design is an art, but balancing a game? That is pure math. Recently, I decided to put my algorithm skills to the test and entered the 2025 Tabletop Games Balancing Competition . The goal was straightforward but quite difficult: write an algorithm that automatically finds the fairest, most balanced set of rules for a variety of popular board games. I’m thrilled to announce that my…
Recently I have tried to upgrade from Ubuntu 22.04 LTS to Ubuntu 24.04.1. After the infamous do-release-upgrade my system was bricked and I had to reinstall the Ubuntu 24.04.1 the old fashioned way. That’s when I hit my next roadblock. During the installation, I noticed that the checkbox to format my home partition was grayed out. That’s right - Ubuntu was essentially telling me, “You will…
The beginning This summer I offered my local shop to teach Android:Netrunner . It is a dynamic two-player asymmetric card game where one side plays an evil corporation and the other one a “runner” - a hacker that tries to breach the corp’s servers and steal their hidden agendas. The shop loved the idea, and I was thrilled to get started. The plan seemed simple enough. I needed at…
After the release of CheerpJ 3.0 and exploring the realm of the Tabletop Games Framework I decided to port the TAG framework—a desktop Java application—to a web browser. Surely no one has ever thought about running Java in the browser, have they ? Seeing that CheerpJ supports both Java Swing and multi-threading, I had to test it out. Think about how cool it would be to take an application crafted…
As a big fan of the Ark Nova board game , I’ve spent countless hours immersed in its strategic gameplay. This winter, with some extra free time for personal projects, I decided to bring Ark Nova to life within the Tabletop Games Framework (TAG) . To get started, I dove into the resources available, beginning with these helpful videos: TAG: Pandemic Competition (Presentation for IEEE CoG…
The other day I wanted to compare the speed between the different implementations for the solution to the 0-1 knapsack problem . There would be three possible implementations: with a python dictionary with a python list with a numpy array and vectorized operations The solutions are evaluated on the data from the Discrete Optimization course . First we see the implementation for each and then the…
I wrote my last game 10 years ago in college. It was a 3D multiplayer tank shooting game that I initially wrote in Java + OpenGL and then switched to Unity. Since then, I have barely touched a game engine except to play around with it . So it was a pretty surprising decision to participate in my first game jam Bevy jam #2 . I found a fellow developer Peter Hebden in the Bevy Discord channel and…
I have always found simulations interesting. It breaks up the monotonous day of working on libraries and has something visually s(t)imulating about it. This time I tried to implement a cloth simulation in the Bevy Engine using Rust. For the simulation I took a simple mass-spring approach. The final equations came from the paper A hybrid evolutionary algorithm for tuning a cloth-simulation model .…
Using Reaper on Linux with 4k can be quite frustrating. The menu font is very small by default and any googling for the issue usually suggests increasing the UI scale in Preferences . However this increases only the elements in the main section - everything but the font size of the menus, making you squint to change anything. I went through couple of iterations to get the best result.
Imagine we have a 2D array of values from which we want to create a 3D height map mesh. I was playing with Blender 3.0 recently, which also supports python scripting and even numpy library. I was determined to create a 3D model of the boring 2D array. 1. Start Blender When running Linux, we should start blender through terminal to get the python execution errors. The below script will delete all…
Setting up audio on Ubuntu can be quite daunting. I spent a few days researching many threads to figure it out. On the surface, my goal is pretty simple. I have a MIDI controller Nektar Impact 61+ and wanted to create sounds with it. More specifically in the order: it should be recognized by Ubuntu. I needed a software that plays the sound when I press a key on the controller. find any sound font…
The first problem in Project PI goes as follows: Using only basic operations $+$, $-$, $\cdot$, $/$ calculate the value of $\sqrt{2}$! The number $\sqrt{2}$ is a real number $x$, for which the square equals $2$: $x^2=2$! The submitted answer has to have a precision of 10 significant digits . I wanted to solve this problem without much researching to avoid yeah-I-totally-knew-that moments of…
Observing our dog from spy can get us only so far. What if it becomes a vicious beast? But most importantly if it sleeps all day it certainly deserves a treat. To top it all off I decided to build a simple remote dog treat dispenser to reward her if she is being a good dog: In addition to the Raspberry PI in the previous project, I bought a simple plastic cereal food dispenser , which can dispense…
“What is our lil’ doggo up to while I am away?” I thought to myself commuting to work. “Does she nibble on the door frame?” “Or maybe she feasts on some mattresses? “Naah,” I would not notice that. I always regarded her as a good dog. Such a calm and collected creature. Unless there is a cat. Or a traffic sign. Or a gate barrier. Or anything for that…