A Generic Type-Safe Intrusive Linked List in C
2026-06-07
Today I'm presenting a linked list written in C that is generic and type safe. It demonstrates two techniques that allow attaching type names and constants to a type definition, at compile-time, with zero runtime memory overhead.
Babbler
2024-10-02
Last week I worked on a little toy computing system based on my (mis)understanding of Dynamicland's Realtalk.
Orca Vector Graphics
2024-03-26 — orca-app.dev
Orca provides a canvas API out of the box, which allows apps to draw 2D vector graphics, and also powers the rendering of the UI system. Users can build paths from line segments and Bézier curves, and fill or stroke paths using a number of attributes such as the path color, gradient, texture, line width, etc.
Colors Learning Jam
2024-03-25
I participated in Handmade Network's Learning Jam, and picked the topic of color. Here are a couple videos where I explain color spaces and color systems, and apply the theory to Orca's vector graphics renderer.
A rule-based styling system for immediate-mode UIs
2023-03-10
A common design for immediate mode UIs styling APIs is to use style stacks. However, these comes with limitations on the ability to build and compose reusable and stylable widgets. In this post I discuss these limitations and present a rule-based styling system to address them.
Revisiting Vector Graphics on the GPU
2022-11-01
In a previous series I described how to fill or stroke paths using curve subdivision and polygon triangulation. In this post I explain another method that better uses the GPU and avoids subdivision tradeoffs.
What Time Is It: Time Synchronization
2022-10-17
Getting the time seems easy right? Someone has it, you ask them, and you're done. Well, it's a little more complicated than that.
Orca Jam Prototype
2022-08-22
I participated again in this year's Wheel Reinvention Jam, a 7 days programming jam where the goal is to revisit problems for which off-the-shelf solutions already exist. My prototype this year is called Orca, and it is a launcher and sandbox for applications based on WebAssembly.
Audio Workbench Prototype
2021-01-14
Last week I participated in the Wheel Reinvention Jam. This is a 7 day event where the goal is to prototype a new solution to a solved problem, ideally giving it a new spin in the process. I decided to work on an audio live-coding workbench to help me prototype synthesizers and audio effects.
A Vector Graphics Renderer — part 3
2018-01-14
Here's the third part in a series of posts describing my vector graphics renderer. It will discuss the practical aspects of passing down data to the GPU with OpenGL and trying to optimize the performance of the renderer.
A Vector Graphics Renderer — part 2
2017-12-21
This is the second part to my series of posts describing a 2D vector graphics system that I wrote to make graphical user interface applications. This one will focus on the triangulation of polygons, an essential operation when filling user-defined paths.
A Vector Graphics Renderer — part 1
2017-12-20
This post is a writeup of a vector graphics renderer I've been working on. It is part of an application engine I made to build GUI and graphics applications. I've been using it mostly on my work-in-progress show-controller, but also in small tools and demos.