Novi

Novi is a structured data inspector and validation system. A core library built in Rust provides a unified interface for parsing many different data types into a unified structured format. Included with the core library is a validation system, allowing for user provided Lua scripts (or builtin ones) which are given the structured data and can perform arbitrary validations and tests on the data, producing a validation report highlighting any issues with the data. Several client applications are also included such as a CLI, Web, and Desktop interface, which all provide interactive interfaces for exploring the parsed structured data, and the validation reports. ...

May 1, 2026 · 5 min · 853 words

Bookshelf

Bookshelf is a focused self hosted e-book manager. It is primarily focused on the server side, providing a well organized e-book database, and exposing those through an Open Publication Distribution System (OPDS) API for third party clients to consume (such as e-readers like Kindle, or mobile or desktop applications). The server is written in Go with a strictly defined OpenAPI schema making it easy for third party clients to integrate with the server backend. Bookshelf handles detecting new or modified files through file system watching, and automatically reads the metadata from the EPUB, MOBI, or PDF file (or if present a sidecar metadata file). Using that metadata it builds a database of all the books and series. ...

April 16, 2026 · 4 min · 692 words

Nand to Tetris

Nand to Tetris is a course from the book The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken. The course covers the design and implementation of a simplified computer model, starting from first principles of a single NAND gate, and using that to build up more complex logic gates. Gradually expanding on the previous chapters to introduce more complex structures ultimately culminating in the construction of a basic computer. ...

February 23, 2026 · 1 min · 199 words

GD Snake

GD Snake is a fully featured implementation of the classic Snake game, built using the Godot game engine. The aim of the project was primarily a learning experience for game development and how to use the Godot game engine. So it implements all features of a full sized game, just applied to the smaller scope of Snake. The main menu, includes a real-time game of snake running in the background using AI snakes, to provide visual interest while the user is in the menus. Along with a standard settings allowing for the adjusting audio levels (which is persisted) and dynamic rebinding controls. The game includes a palettes swap shader allowing for multiple themes and styles to be easily applied to the full game, and includes a selection a builtin color palettes the user can pick from. ...

October 18, 2025 · 2 min · 426 words

Cerebri

Cerebri is a framework and setup for training, hosting, and exploring Large Language Models (LLMs). It was created by following the Neural Networks: Zero to Hero course by Andrej Karpathy. Building up a backpropagation algorithm in python, and then expanding that to build up to a deep neural networks and a GPT model. The goal of Cerebri is primarily for learning about the inner workings of a large language model, and all the components of that, so a large focus was on the development and the different phases that were a part of that. Then it also extends that by training some custom tokenizers and a very basic GPT using the FineWeb2 dataset and local hardware. ...

August 31, 2025 · 3 min · 460 words

Astri

Astri is a satellite tracking and visualizer. It automatically pulls the list of all publicly tracked satellites from CelesTrak (as of writing $\sim 15,000$ satellites). Then using the Simplified General Perturbations-4 (SGP4) model developed by the United States Department of Defense (DoD) for predicting satellite position and velocity for any given point in time. Astri also includes an interactive user interface, which renders simplified models for each of the satellites and visualizes their position relative to the earth and the other satellites. The user interface includes an explorer list for sorting and filtering the satellites and controlling which ones are displayed. And it automatically groups satellites into their constellations both in the explorer list and using the same colors to represent satellites from the same constellation. ...

May 9, 2025 · 2 min · 400 words

TRM v2

Tiny Ray March v2 is a reworking of the previous version of TRM v1, with an emphasis on data collection to analytically quantify the quality and performance improvements of different features. It is designed as a simple and lightweight ray marcher for educational purposes and as a test platform for understanding ray marching and the performance improvements that come from various features. TRM is written as a C++ library, and the scene definition is a C++ structure which can be either statically defined in a runtime, or dynamically created by a runtime. It implements a minimal set of features initially, and only supports a small set of material types (Emissive, Diffuse, Specular, Refractive, and Fresnel). And as more features are implemented, the performance and quality improvements of each feature are tested with the included example scenes, and the results are recorded in a spreadsheet for analysis. ...

September 2, 2024 · 4 min · 704 words

Weekly Blender Render

I tasked myself to make a new render using blender once a week. I decided to to this to help improve my skills with blender, and to produce some interesting images that. The eventual goal of this project is to learn how to use Blender more fluently, so that I am able to integrate the Specula with Blender more effectively. Since Specula is not intended to be a modeling software, I intend to use blender to do the modeling, and then load the scenes into the Specula renderer. So the first step of that process is to learn how to use Blender effectively. ...

March 18, 2020 · 1 min · 103 words

TRM v1

TRM (Tiny Ray Marcher) is a C++ project that implement a very small ray marching algorithm. The project implements the fundamental components of a path tracer, and even provides an easy to use scene definition file. Efficiency By changing specific key configuration values in a rendered image, it is possible to significantly alter the quality of the image, in direct relation to the runtime of the program. However some settings will produce a better output image, for less cost to runtime. The main two settings that we consider here, is the spp and the resolution. By doubling the spp it can be considered that we are rendering twice as many images, and combining the images after the fact. While doubling the resolution is equivalent to rendering four times the number of images, and connecting the images as the four quadrants of the output image. ...

March 6, 2020 · 2 min · 387 words

Specula V1

This ray tracer implements the basis of a ray tracing rendering engine in C++. It is possible to render still images, or sequences of images. Multi threading has also been implemented allowing for significantly faster render times. Warning A complete overhaul of the Specula rendering engine is currently in progress. This rewrite is focused on implementing path tracing into the renderer, and implementing PBR techniques. ...

March 4, 2020 · 2 min · 342 words