Today I talk about editor extensions for my language server project, and adding image support to a terminal slide viewer project.


Beacon (code)

I worked a little bit on the VSCode extension for Beacon. I didn't know there was an entire icon font you could use for the status bar. The extension uses the sparkly lightbulb for the ready state (interpolated as $(lightbulb-sparkle):

There was a gap in the tree-sitter implementation for the project that was causing important typeshed stubs (os, pathlib for example) not to be loaded properly which was causing some false positives.

I'm finding myself backtracking on a couple of more aggressive warnings and diagnostics that I implemented in the static analyzer and linter.

  • The one that frustrated me was how collection type inference was handled. Python allows heterogeneous collection types (like values in dicts can be different types) so I refactored the solver to compute the union of element types instead of forcing equality constraints because of this flexibility.

  • The other is enforcing an annotation for self. Right now it doesn't warn or error if self isn't annotated but I may add Self in to strict mode.

Lantern (code)

Today I worked on actually implementing nested lists and...

IMAGES! 🎉

How cool is that?? This screenshot was taken on a mac while lantern was running in Ghostty. The presentation featured is one I'm working on related to the small/indie web.

A primer on recursive descent (🌱)

I posted my notes about recursive descent parsing on my digital garden but thought it would be interesting to share this small primer to demonstrate what kind of stuff I like to toss in to my digital garden.

Basically my garden is a personal wiki for information I may need, like splitting up git repos into submodules. When it started it was meant to house my book notes (not unlike Derek Sievers') but since starting the project, my book notes are all over the place (index cards, journals, random text files, basically wherever I can find a space to write while reading, I will do so).