I’m Pablo, telecommunications engineer with a PhD in electromagnetic simulation, currently working in systems engineering for the defense and space sector (satellite infrastructure and mission-critical systems).

I got into low-level programming because I wanted to understand what was actually happening. Not the abstraction, not the API, the thing itself. How memory gets handed out. How a dynamic array decides to grow. What free() actually does with those bytes. This blog is where I work through those questions by building the answers from scratch, in C.

What I write about

Allocators, data structures, OOP patterns in C, and a small language called Zinc that I’m building from the ground up (interpreter, bytecode VM, and eventually a compiler) all in C99. Two ongoing series right now: one building a memory allocator and garbage collector, another implementing dynamic arrays with all the edge cases most tutorials skip.

Projects

  • Zinc: a minimal, statically-typed language targeting a safe subset of C semantics. Explicit ownership, no runtime GC, readable C output as compilation target.
  • bitstream.h: single-header C library for reading and writing packed bitstreams. Useful for protocol parsers and compression codecs.
  • dynamic-arrays-c: companion repo for the Dynamic Arrays series. Every post compiles and runs.

The code

Everything on this blog compiles and is tested. If it doesn’t, that’s a bug, open an issue on GitHub.

Elsewhere

When I’m not writing C I’m usually on a road bike, on a climbing wall, or somewhere in the mountains with a camera.

GitHub: @ansuzgs LinkedIn: pablogonzalez21191