Status Update: September 2024

Published on to joshleeb's blog

G’day!

This month I wanted to start off working on something short, sweet and fun; something more akin to a typical weekend project that can be “completed” in a reasonable amount of time.

I found inspiration from Devine’s personal wiki, XXIIVV, on a page that contained a grid-based clock with lines scanning across the screen as time progressed. So, I built a replica. At first it was complete after a few days when I had a desktop app running. Then I returned to it at the end of the month to complete a port to WASM so it could run on this site. Now I see there are some features I’d like to add to make it even more “complete”.

I’ve written about this clock in Time as a Grid and you can play around with it on this page too.

The rest of my personal-project time this month has been put towards exploration for the Ica editor. More specifically, learning how to work with WGPU and building a very basic concept of a file viewer.

I’ve built similar concepts before that explore basic text rendering and editing but those either render on the CPU or rely on Skia to control the GPU. The goal with this concept was to understand the feasibility of using a lower level API to drive the GPU more directly.

Figure 1. Screenshot of file viewer concept.

In working on this concept I’ve learnt a lot about rendering and the GPU. It’s only been a month and I’m still very much new in this domain but I am beginning to settle on a rendering strategy for the editor. It’s something I’ll write about in more detail in the future but for now the high level is

The code for this concept, and all my other concepts, is up on Sourcehut.

With rendering feeling like a solvable piece of the puzzle my next focus for Ica will be on the more GUI-level concerns, such as lifecycle and state management. So far I’ve been finding great resources from the Zed blog and Xi docs. I also want to give a shout out to Nicolas Silva for his very helpful article GUIs on the GPU.

That’s all for now, see you next month!