It has been a difficult few days for me due to some personal/family matters. I'm doing my best to move forward with my projects and have a few updates to talk about.

Baseball API

GitHub - stormlightlabs/baseball: baseball data api
baseball data api. Contribute to stormlightlabs/baseball development by creating an account on GitHub.
https://github.com/stormlightlabs/baseball

Retrosheet has some curated datasets of person data and since Lahman doesn't cover beyond 2024 (yet), the ETL pipeline has been extended to include these. Prior to this, the plays and gamelogs table were queried to get umpire information and 2025 rookies, though mentioned in logs and plays, didn't have a lot of data in the player specific endpoints. This also allowed me to add a set of dedicated coaches endpoints.

There's a testing chassis with testcontainers which has been really straightforward to use. Basically, I created a small slice/toy instance of the postgres database with some csvs constructed from specific queries, pass the connection information into the server and then test against actual endpoints. It's helped me improve examples (Dave Roberts for example, is a great coach, manager, and player to use for some of these). In fact, I'd say it's helped me with the design of the API a fair bit. Because of how quickly I blazed through this project's MVP, there are inconsistencies in response structures and not enough examples added to the swagger docs. By the time this is out I think the API docs will be useful and pretty helpful.

Inkfinite

desertthunder.dev/inkfinite
web based infinite canvas
https://tangled.org/desertthunder.dev/inkfinite

This is another rebooted project from the past year. I've messed with XyFlow's libraries in both React & Svelte a lot. They've made a really cool set of tools for node based UIs. I have a tabled project that allows annotating PDFs by constructing an overlay on top of a PDF with these nodes. This project however, is more in line with something like tldraw or excalidraw. It uses rxjs as the framework agnostic reactivity engine and has a separate rendering engine to handle canvas operations. It works pretty well and I'm pretty happy with it.

Volkara
Comprehensive productivity application with task management, time tracking, and decision-making tools.
https://volkara.stormlightlabs.org

Persistence is handled through Dexie (for IndexedDb), chosen because it has a migration system. My app, Volkara, uses PGlite with Drizzle but initially I ran into some roadblocks setting up a migration engine with Automerge. A nice indexeddb abstraction with a migration API has been nice to use. I find CDRTs particularly interesting and powerful with respect to local first applications. This article is definitely worth a read if you're interested!

Local-first software: You own your data, in spite of the cloud
A new generation of collaborative software that allows users to retain ownership of their data.
https://www.inkandswitch.com/essay/local-first/

The hardest part about this project has to do with the build system. Workspaces don't operate as intuitively as separate packages or crates in Go and Rust respectively, so I find myself rebuilding the core and renderer packages quite often. There are likely ways to solve this problem but I don't want to deal with the build system so much as building the actual application.

Tailwind has also made me forget a little bit of CSS syntax. The easiest example to point to is the order of padding/margin shorthand. I'm so used to utilities like {style}-x or {style}-y.

There are a few more refinements I'd like to make and plan to have this open-sourced in the next few days!

Beacon

GitHub - stormlightlabs/beacon: Python LSP & Type Checker
Python LSP & Type Checker. Contribute to stormlightlabs/beacon development by creating an account on GitHub.
https://github.com/stormlightlabs/beacon

Astral released its type checker and LSP called ty! I mention it as an inspiration for Beacon! For the record, I'm not ceasing development on this, I was just burnt out for a bit. In its current state its not tested well enough for me to say you can use it with a project you're working on, but its getting there! The CLI can do a lot and its really a labor of love. I could say that about all my projects this year (maybe I'll do a year in review or something).

Introduction - Beacon.rs
Beacon is an experimental Python type checker and developer experience platform written in Rust. This documentation set describes the architecture, design decisions, and research that power the project. Whether you are contributing to the codebase, evaluating the language server, or exploring the type system, start here to orient yourself.
https://stormlightlabs.github.io/beacon/

The docs can give you some context on what features are available now (some refactoring capabilities, type inference, linting and pep-8 compliant formatting to name a few).

I know this section is light on my actual development work, but with ty being out now, it would be cool to turn this into a more collaborative and community driven effort. The feature set and roadmap cover my pain points and preferences but I'm sure there are other issues in the tooling department that I'm completely ignoring.


Feel free to reach out with any requests or feedback you have for any of my projects.

Thanks for reading! Happy Holidays!