Status Update: February 2024

Published on to joshleeb's blog

G’day! It’s been a month of travel and exploration, beyond just tech. I was in London for 2 weeks spending some time exploring the city and scoping out places we might live when we move in April.

In personal projects, I continued work on Pinto for the first half of the month. I haven’t written much about it as I want to get it to a state where I am using it regularly myself, but it’s essentially a bookmarking system with a few neat features planned.

The past couple of weeks I’ve been focusing on font rendering and building GUIs in Rust. I got this idea to build a code editor and it hasn’t really left my mind. At first I thought it was crazy, like the idea of building your own web browser, but it looks like a good few people have done this successfully enough to use their own editor day-to-day.

I’ve started by building a concept glyph atlas and figuring out how to use the font metrics to align each glyph correctly. I’m not worried about variable fonts here since the editor will be mostly monospace. Here’s a screenshot, and here’s the code.

Figure 1. Screenshot of a concept for building and using a glyph atlas for monospace fonts. The font used here is MonoLisa.

This concept is using winit for window management, and swash for rasterization. It’s all CPU rendering at the moment, but it’s easy to see how to translate this to the GPU with something like vello or skia. I’m sure there’ll be more to share about this soon.

Otherwise, I had another idea for a small project to visually represent different hashing functions. Something like Snowhash but where each byte digested produces a point on a 2D grid connected to the previous point. It might be an interesting way to build up an intuition about how hashing works, or it might just show a mess of random squiggles.

Lastly, while in a coffee shop in London I was reading through some old bookmarks for articles on distributed systems and consistency. One of my favorites is the Jepsen article on consistency models. It made me realize how I’ve missed doing research and learning on this in my spare time so it would be great to pick that up again.

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