On C++ Modules and Containers for Build Systems

We recently rebooted the development of our toy game engine annileen. Teo really wanted to make it with modern C++ and he spent some good time converting it to use C++20 modules. However, the current state of modules in the compilers is a bit complicated, and that requires a big effort to make it compile in any platform but Windows. I also wasn’t very happy with all the libraries we were using in the engine and decided to start from scratch and make a renderer with Vulkan and not BGFX.

Simple Vector Implementation in C

I’ve been watching the excellent series Creating a Compiler from Scratch, Recreationally by nashiora where he’s writing a compiler for his language Laye, that is C-compatible, in C. I’m having so much fun and I’m learning so much watching that, that I couldn’t recommend more. Please go there, subscribe to his channel, and watch the videos if you’re interested in programming languages, or just want to watch a skilled C programmer writing code.

Prosperity and Self Help

Unfortunately there wasn’t many books in the house I grew up. My parents weren’t exactly readers and there’s nothing wrong with it. But I remember once my dad bought a “prosperity” book from a newspaper stand and brought home, very excited, to my mom: “we should read that and maybe our life will improve”. I’m not sure if they read it, but spoiler: our life didn’t improve. Years later, however, I was so bored that I decided to read that book myself.

Installing Portaudio for Racket on Windows

I recently wanted to play with some procedural audio generation in Racket. So, after some research, I found that there’s a port of the cross-platform audio I/O library Portaudio. However, installing it through raco was not doing the job for me, on Windows. I investigated the issue and figure a problem with the compiled libraries that were out of date with the Racket interface and then I rebuilt it and submitted to another repository.

My First Gameboy

It is 2023 and I got my first Gameboy. My parents never had the finnancial condition to get me one when I was a kid, and to be really honest, nor did most of the families of my street friends and school colleagues. It was probably only by the early 2000’s when I first heard about it. Pokémon Yellow was the reason I downloaded my first emulator and pirate roms.

Analog is a Privilege

I recently posted about my rather recent hobby of film photography. Since I moved to Germany, I’ve been thinking a lot about the current rise of analog technologies and what that means. I’m from Brazil and I lived there for 28 years of my life. I left for Ireland in 2019 and now have been living in Germany for almost four years, and the culture clash has been a profound and impactful experience for me.

Lisp Adventures #2 - One, Two, Three... Infinity

Imagine you want to count the sum of the numbers from 1 to 1,000,000,000 (one billion). If you come from an imperative programming background, you might be already thinking on a loop and what number type to hold that value. You might come up with something similar to this if you’re writing C: uint64_t sum = 0; for (int i = 1; i <= 1000000000; i++) sum += i; printf("%lu\n", sum); Good, it runs quite fast and we get the solution.

Investigating a touch screen issue on the Steam Deck

Last year I bought a Steam Deck to play the long list of games in my Steam library, most of which I got from indie bundles. The idea of being able to play even the ones targeting mouse and keyboard in the comfort of my bed with very ergonomic controls sounded amazing. Another reason was to explore a bit the technology behind this miraculous mobile device that can play Elden Ring in solid 30fps, on Linux!

Retrospective 2022

For the last few years I’ve been writing a tweet in the end of the year with some of my life achievements, projects and professional changes. This year, based on other blogs I read, I decided to make a more complete post and include also other interesting things like some of the book I read and events that happened this year. https://t.co/6EdAKUE9Hd — Bruno Croci (@CrociDB) January 15, 2023 Projects Blog This is, of course, one of the most important project and achievement of this year: I finally decided to write more to this blog.

Lisp Adventures #1 - Racket: A brainfuck interpreter

Lisp is the second oldest programming language and is considered one of the most powerful, despite the fact that it is absolutely the most simple. I’ve always had admiration for it, but never quite got into it because it seems that, except for Clojure, there was no other popular version of lisp with real-world use. And I really don’t like anything related to Java–which is a shame because I think Scala is also a fantastic language, but that’s subject for another text.