Below are some of my self-developed projects. They are all available on my GitHub page, as well as others.

Procedural World Generator

A procedural open-world game.

Blocky world with trees, a river and a cloudy, starry night sky In-game screenshot

This is an early project of mine, where I learned how to develop OpenGL applications, and algorithms such as DDA. It also meant I had to explore different optimization tricks, allowing the application to reach sub-millisecond frame times.

This game consists of a procedurally generated world (64-bit limits, so you can go quintillions of blocks out without any issue) and a dynamic skybox, as you can see in the image. It also can be easily modded to change the textures and shaders during runtime.

Portable C utilities library

A heavily customizable and portable C utilities library.

Having to write #ifdef and such around your C code does get annoying after a while. As a result, I decided to write a utilizes library that wraps around OS-specific functions such as threading, timing, file management and TCP/UDP networking to make your programming life much easier. It also comes with other commonly used structures such as a custom string handler and dynamic array and hash map containers. It can also retrieve some information about the current hardware and system, such as CPU usage and info, OS info and memory availability.

This comes in the form of a static library so you just have to compile it alongside your program and include the header. Building the library yourself is also easy as it consists of a single file that Clang compiles in ~0.4s, but pre-compiled binaries are also available. There are also some examples available which can be compiled separately that demonstrate usage of some of the library's features.

The library is also optimized heavily for size! With the provided build tools, the resulting library comes in at ~30KB on Linux and ~70KB on Windows. In fact, the library is designed modularly, so you can choose to only compile what you need. This ensures the library has a small overhead when used in your own projects rather than accepting the cost of the entire library.

Modern C Math library

A header-only modern addition to libm.

Although people appreciate the simplicity of the C programming language, due to how long it's been around, it does house some rather outdated ideas. When you think of the standard library, you think of libc, which contains string formatting, memory management, time management, and so on. But you won't find many mathematical functions in there - those belong to libm, an entire library separate from the main one which has to be linked in manually for GCC/Clang if the assembly ends up calling anything in math.h or similar. This library works as both an addition or a replacement, containing your favourite trigonometric functions as well as macros for common operations.

But there's more: Random functions, both pseudo and cryptographic to replace the infamous rand, Perlin noise functions for all your random noise generation needs, and linear algebra (vectors and matrices) made to closely match GLSL and to be a C alternative to GLM for C++, all with no dependencies whatsoever - it will check for availability of certain headers and features so you can even use it in C89 projects.