
The Low-level card
Make anything in C or Assembly, the back-bone of all software! Games, operating systems, apps, all qualify. Other languages count too if you reach system internals!
The Low-level card
Build something close to the machine. Anything where you are dealing with the hardware or your OS internals directly, rather than through something that hides them, counts!
The easiest thing that counts
A simple command line tool written in C works! You really don’t have to do black magic here, as long as you have to allocate memory yourself and don’t have all the luxuries a lot of the modern, high-level programming languages provide, that’s fine!
For example, a Unix-like tool that just plays a lil’ tune via a raw call to Windows is okay! …just be creative though, please!
Going further up
In rough order of how much evening they cost:
- A CLI tool, described above!
- An interpreter, for your very own language. Imagine a scripting language made by yourself… woah…
- A game. SDL or raylib and C are your best friends here!
- An emulator. CHIP-8 is surprisingly easy to emulate! And if you’re feeling brave… maybe a GameBoy or NES emulator…?
- A kernel. I know, I know. This sounds like dark magic. But it’s really not!! Using the Limine template, you can have a hello world OS in 5 minutes!
- Assembly. This is quite difficult, but nothing teaches you CPU architecture like writing CPU instructions!
You can use any language!
C and Assembly are indeed not the only languages that you can use, as long as you touch software or hardware internals!
- Rust is a pretty obvious choice! But a simple app wouldn’t suffice; it gives you so much luxury that it wouldn’t be in the spirit of low-level. But if you make a kernel with it? Hack yeah!!
- Zig, C++, Odin, Nim, D, Ada: same as above!
- C# counts if you are writing an operating system with something like Cosmos.
- Embedded counts here but your project needs to be centered around firmware. In that case, the language doesn’t matter at all!
