My name is Georg Wicke-Arndt. I’m currently living in Aachen.

What I Did (professionally)

since 05/2022: Full-Stack Developer at gapzero mathematical decision support GmbH

Back in the days when I was studying, I was involved with a really interesting project about constituency redistricting using mathematical optimization (see below). The people involved wanted to make a living from this, but since there are not that many customers for constituency redistricting software, they’re now helping all kinds of companies to improve their processes using maths.

I’ve joined them and am now working on the full stack of their pipeline, from frontend to backend to devops.

Stack: TypeScript, React, Python, GitLab, Docker, MySQL

01/2022-04/2022: Software Developer at m3Connect GmbH (part-time, 16h/week)

Most of the time, I’ve been working on WiFi captive portals onboard of airplanes, but sometimes I’ve also been involved with captive portals in hotels or stores as well as TV applications.

I’ve been working in a Scrum team.

Stack: Vue.js, PHP, Docker, GitLab, MySQL, Node.js

09/2021-12/2021: Parental Leave

04/2021-09/2021: Software Developer at m3Connect GmbH (full-time)

See above

05/2020-12/2020: Master Thesis at Consentec GmbH

Topic: Solving Flow-Based Power Market Models Efficiently

I’ve helped making the solving process for a certain optimization problem faster. The problem is a simulation of the European power market.

Stack: C#, Mosek

04/2018-02/2022: M.Sc. Computer Science at RWTH Aachen

I started working way before I finished my M.Sc., having only a single exam left for over a year, which makes the dates a little confusing.

11/2016-03/2019: Student Worker at the Chair for Operations Research (8-10 h/week)

I’ve written software to help redistricting the constituencies for the German Parliament as well as some local parliaments based on mathematical criteria. The idea here is that maths can be pretty unbiased and can find optimal solutions given a set of constraints. This can make voting more fair by equalizing the size of the districts, but also increase MP accountability by minimizing the changes applied to equalize the districts. It can also help prevent gerrymandering by giving “objective” solutions.

We also created an interactive map where some of the results are shown.

Probably my favorite project until now.

Stack: QGIS, Python, Gurobi

10/2017-02/2018: Bachelor Thesis

Topic: Optimal Aiming Strategies in Solar Tower Power Plants

Another mathematical optimization problem, this time about solar tower power plants. These plants have a field of a few hundreds and up to thousands of mirrors that reflect sunlight onto a collector mounted on a giant tower, where the intense radiation is heating molten salt, which can be used in a steam turbine to generate electricity.

The issue here is that the mirrors can’t just all project their light at the same spot, since that would concentrate too much heat in too little area, causing permanent damage. But shining on the edge of the collector is also not ideal, since that causes a part of the sunlight to miss it, meaning that energy is lost. Also, whenever a cloud moves over a part of the field, the mirrors have to re-target, so the calculations shouldn’t take too long.

Finding the optimum can be done with various algorithms; I’ve used Mixed-Integer Programming (MIP) and Genetic Programming.

Stack: C++, Gurobi

10/2013-03/2018: B.Sc. Computer Science at RWTH Aachen University


What I Did (privately)

2022/01: redux-collaborative-state

Building collaborative applications with Redux is fun, as I learned in the bott-kaiser project. But the network code is a little tricky to get right, so I created this library that I can reuse in multiple projects.

Stack: Typescript, Redux (Toolkit), Express

Time invested: >25 hours

2021/12-: argumentationswippe.de

A tool to teach argumentation to school children. It turns out that when children first learn to argue in school, they often favour the side with the highest number of arguments. The idea that two bad arguments can be worse than a single good one is not immediately intuitive for many. That’s why Jonas Tumbrink had the idea of using a seesaw in class, where arguments can be placed on different positions on the bar to indicate their relevance. The technique has the problem of causing a lot of manual work, so Frederic Meyer thought that it would be much more useful to have a digital version of it, and asked me if I could make one.

It seems like it’s been well-received in its niche (the geography teacher’s community). I’m not doing any tracking, but judging from the request counts, it seems like there are a couple hundred people who are using it every week. I know that some schools have integrated it into their Moodle system. Also, it’s been featured in various teachers’s journals and blogs, e.g.:

Stack: Typescript, React, Redux (Toolkit)

Time invested: >41 hours, ongoing

2021/07-2021/10: bott-kaiser.wcke.de

A risk-like game that can be played by multiple players over the internet. I like to play Risk every once in a blue moon with a bunch of friends, and since Corona was a thing we had to do it online. But the implementations of Risk that I found were either not free or had glaring bugs, and since this seemed like a project with just the right scope, I decided to try and create one myself.

Stack: Typescript, React, Redux (Toolkit), Express

Time invested: 100-200 hours (est.)

2021/01-2021/04: Unnamed Game About Dwarves

An unfinished game about dwarves that hide from orcs in a fantasy/medieval apocalyptic world. Feature-wise, it’s Not That Bad, Actually: it has an economy system, buildings, units, fights, a simple AI, savegames, a menu, … Sadly, a few things led me to abort this project:

  1. I started working full-time shortly after and
  2. The scope of this project was really big and
  3. Working out fresh game mechanics requires a lot of trial-and-error.

This led me to realize that I would need years to finish something that’s fun with the very limited time I had.

Stack: Typescript, React, immer.js

Time invested: 200-300 hours (est.)

2020/05-2020/06: dotnet-test-explorer MRs

During my master’s thesis, I needed this VSCode extension, and I was bothered by a few things about it, so I fixed them and submitted some MRs (252, 255, 256, 257, 260, 261, 263, 266, 268, 270).

Stack: VSCode, TypeScript

Time invested: Probably a few dozen hours that I should’ve spent on my master’s thesis instead :-)

2020/04: whohere.hoppe.io

A weekend project with a few friends created during the peak of the first Corona wave.

Stack: Typescript, React, Kotlin

Time invested: one weekend

2020/03-2020/04: SimpleECS

A simple entity-component system (ECS) for .NET.

ECS is a common pattern to structure objects in a game engine.

Stack: C#, IL (Sigil), NUnit

Time invested: 20 hours (est.)

2020/02: SharpSDL2

The default SDL wrapper that I used in C# is a very thin layer on top of C. This is mostly fine if you plan on building an engine with SDL anyway, but if you want to use it directly for a game without writing any engine code, you might want to have a little nicer interface. So I created this other wrapper.

Stack: C#, SDL

Time Invested: one day

2019/08-2019/09: ShaderTranslator

When I’m writing graphics code in C#, I’d love to re-use code in both shaders and on the host. To do so, the C# code needs to be translated to GLSL or HLSL, depending on the target.

I decided to compile the relevant IL bytecode in the binaries back into a C# syntax tree using ILSpy, then generate corresponding GLSL code from that syntax tree. ILSpy allows to target a subset of C# when decompiling, which greatly reduces the number of structures that need to be supported. At the same time, this approach allows to use arbitrary C# syntax, even from future versions, to be used in the shaders.

Stack: C#, ILSpy

Time invested: 20-30 hours (est.)

2018/12: The Terminator

I developed a tool to help solving simple equations manually, except that the entire copying part can be skipped.

This was before I learned React or anything. It doesn’t even use NPM or Webpack.

Stack: Typescript

Time invested: 40-60 hours (est.)


Projects with Benni

While studying, I collaborated a lot with a friend of mine, Benjamin Roth.

2019: Game Development Practical Course

This is technically not a free-time project, since we were actually graded for this, but since we invested far more time than required for the grade, I believe it is fair to list it here.

Again, we were required by the chair to work from scratch.

Here’s a video of the game we created.

Stack: C#, OpenGL, Bullet

2019: Bonus Project - Real Time Graphics

This is a small project that we worked on for some bonus points in a university course. I would not have needed the bonus points in the end, but the project was still great fun.

We developed a graphics system and a physics engine from scratch with C# and DirectX, building upon our Bengine experiences.

He also has some details on it on his website.

Stack: C#, DirectX

2016: Global Conflict

An unfinished strategy game that we developed on top of Bengine.

I was particularly involved in game logic, pathfinding, UI and networking code, but also did a bit of graphics.

More details can be found on my colleague’s website.

Stack: C#, DirectX, OpenGL

2013-2019: Bengine

An unfinished game engine that we developed.

I was mostly involved with the ECS, UI, debugging tools, serialization and networking code, but also did a bit of graphics.

More details can be found on my colleague’s website.

Stack: C#, DirectX, OpenGL, Vulkan, Bullet, PhysX


Older projects

I started programming way earlier and have had a few more projects than these, but I don’t quite feel like publishing them right now.