Fixing a Bug in Google Chrome as a First-Time Contributor

I recently finished up the process of fixing a bug in the Chromium/Google Chrome web browser. It was my first time contributing to the Chromium project or any other open source project of that scale, and it was a very unique experience compared to other open source work I've done … | Continue reading


@cprimozic.net | 2 months ago

My Favorite Tools + Techniques for Procedural Gamedev

For a couple of years now, I've been working on and off on some 3D scenes and levels that run in the browser. It started off as a scattering of self-contained demos for some custom shaders or similar that I wanted to try out, but over time the project has grown into a pretty subs … | Continue reading


@cprimozic.net | 3 months ago

Trying Kolmogorov-Arnold Networks in Practice

There's been a fair bit of buzz about Kolmogorov-Arnold networks online lately. Some research papers were posted around claiming that they offer better accuracy or faster training compared to traditional neural networks/MLPs for the same parameter count. I was compelled by these … | Continue reading


@cprimozic.net | 3 months ago

Computing Normals for "Smooth by Angle" Shading Like Blender

Background As part of some other work I was doing that involved programmatically manipulating 3D meshes, I encountered the need to compute normals for them from scratch. Usually this isn't necessary since applications like Blender handle doing this automatically. But in my case, … | Continue reading


@cprimozic.net | 4 months ago

A Process for Subdividing + Deforming Arbitrary 3D Meshes

Overview When I started off, my goal was simply to subdivide 3D meshes. I wanted to add more geometry to simple meshes so that I could apply programmatic deformation like greebling and noise to give them increased detail and realism in procedurally and semi-procedurally-generated … | Continue reading


@cprimozic.net | 4 months ago

What I've Learned Building Interactive Embedding Visualizations

Over the past few years, I've built several different interactive embedding visualizations. I have a big interest in exploring and understanding things in a free-form manner, and these kinds of tools feel to me like an extremely effective way of facilitating that sort of experien … | Continue reading


@cprimozic.net | 5 months ago

Trying Out Cloudflare's `foundations` Library for Rust

A couple of months ago, I happened across the announcement blog post from Cloudflare for their newly released library for Rust. It looked like something I'd definitely be interested in using, and I mentally marked it down as something to check out when a good opportunity came up. … | Continue reading


@cprimozic.net | 6 months ago

Wrapping Meshes With Geodesic Walks

Overview I've been working on building a game engine of sorts in Three.JS, and along the way I've been creating some levels and demos for it. My 3D modelling skills have come a long way but they're still quite bad, so I've been using procedural or semi-procedural generation a lot … | Continue reading


@cprimozic.net | 1 year ago

Growing Bonsai Networks with RNNs

This writeup introduces what I'm calling Bonsai Networks - extremely sparse computational graphs produced by training and pruning RNNs. They provide an interpretable view into the solutions learned by networks for simple logic problems, breaking out of the black box neural networ … | Continue reading


@cprimozic.net | 1 year ago

Building a Signal Analyzer with Modern Web Tech

I recently spent some time building a browser-based signal analyzer (spectrogram + oscilloscope) as part of one of my projects. I ended up using some very modern browser APIs and technologies that I'd not worked with before, and I discovered a lot of really interesting patterns a … | Continue reading


@cprimozic.net | 1 year ago

Reverse Engineering a Neural Network's Clever Solution to Binary Addition

There's a ton of attention lately on massive neural networks with billions of parameters, and rightly so. By combining huge parameter counts with powerful architectures like transformers and diffusion, neural networks are capable of accomplishing astounding feats. However, even s … | Continue reading


@cprimozic.net | 1 year ago

Speeding Up Three.js with Depth-Based Fragment Culling

Continue reading


@cprimozic.net | 2 years ago

Implementing Depth Pre-Pass Optimization for Three.JS

This is a follow-up post that improves upon one I wrote yesterday. The last post implemented this optimization in a manual way, but it turns out that it's possible to do it in a much simpler and more efficient manner using built-in WebGL/OpenGL features. Thanks to /u/kibakufuda a … | Continue reading


@cprimozic.net | 2 years ago

Logic Through the Lens of Neural Networks

Continue reading


@cprimozic.net | 2 years ago

Middle-End Development with SvelteKit and Tensorflow.js

Continue reading


@cprimozic.net | 2 years ago

Exploring Neural Networks Visually in the Browser

Continue reading


@cprimozic.net | 2 years ago

My Evaluation of SvelteKit for Full-Stack Web App Development

I recently tried out SvelteKit for the first time. This is a summary of my experience setting it up, some information I've collected while researching + learning it, and my thoughts on how it compares to other similar frameworks. If you're not familiar with it, SvelteKit is a fra … | Continue reading


@cprimozic.net | 2 years ago

Self-Hosting Dozens of Web Applications and Services on a Single Server

Continue reading


@cprimozic.net | 2 years ago

Habits I've Developed for Fast and Efficient Programming

Continue reading


@cprimozic.net | 3 years ago

Using Graph Embeddings for Music Visualization + Discovery with node2vec

If you listen to music using a modern platform like Spotify, YouTube, SoundCloud, or similar, chances are you've had songs programmatically recommended to you in some way or another. These recommendations were likely generated by a machine learning model or other data-driven appr … | Continue reading


@cprimozic.net | 3 years ago

Building Music Galaxy — An Interactive 3D Visualization of Musical Artists

Music Galaxy is is the culmination of several months of work with artist relationship data from Spotify. It is an interactive 3D visualization of the relationships between over 70,000 artists, positioning them in such a way that artists with similar audiences are closer together … | Continue reading


@cprimozic.net | 3 years ago

Speeding Up the Webcola Graph Viz Library with Rust and WebAssembly

Continue reading


@cprimozic.net | 3 years ago

FM Synthesis in the Browser with Rust, Web Audio, and WebAssembly with SIMD

As web browsers have grown and evolved over the years, they've gained many APIs and functionalities that have made them into incredibly capable application platforms in addition to their original role of web page renderers. One of the APIs that I've been particularly interested i … | Continue reading


@cprimozic.net | 3 years ago

Finding + Fixing a AudioWorkletProcessor Performance Pitfall

TL;DR: There is a non-zero cost that scales linearly with the number of parameters s have. If you are seeing issues with long execution times for with low execution times on the inner "(author script execution)" for the method itself, check if the total number of parameters you h … | Continue reading


@cprimozic.net | 3 years ago

Building SPF420 x SYNC^UP - An Online Concert Experience

Back at the beginning of 2020, I become involved with the people who founded SPF420 - a group of musicians and artists who had started hosting live concerts over an ancient video chat application called TinyChat years before virtual concerts or online events were really even a th … | Continue reading


@cprimozic.net | 4 years ago

Debugging a Hanging Apache2 Server on the Fly

Yesterday, I made a comment on Reddit that included a link to a screenshot I took using my personal screenshot hoster application. The comment was in a very active /r/worldnews thread about the Iranian missile attacks against US military bases, and it soon picked up a lot of stea … | Continue reading


@cprimozic.net | 4 years ago

Building a Statically Linked `wasm-opt` for Continuous Deployment

UPDATE 2021-06-26 Binaryen, the repository that contains , actually builds for alpine/statically linked as part of its CI Pipeline. Stealing their code for that, here's a very simple script that handles building statically, no extra work required: That's it! Verifying that the ge … | Continue reading


@cprimozic.net | 4 years ago

Building a Wavetable Synthesizer From Scratch with Rust, WebAssembly, and WebAudio

A spectrogram visualization of the output of a wavetable of which this article details the construction Overview Wavetable Synthesis is a method for synthesizing audio by interpolating between different pre-sampled waveforms stored in a table. It's a very neat way to generate sou … | Continue reading


@cprimozic.net | 4 years ago

Using Rayon for Simple Parallelization of SQL Queries in Rust

While working on the API backend for my Spotifytrack application, I encountered a situation where I needed to fetch two separate pieces of data from the database and combine them both into the response. The SQL queries that returned them could sometimes be non-trivial and take ne … | Continue reading


@cprimozic.net | 5 years ago

Thoughts on Rust's Future

Continue reading


@cprimozic.net | 5 years ago

Deploying a REST API with Rust, Diesel, Rocket, and MySQL on Google Cloud Run

Google Cloud has a service called Cloud Run, a platform for running stateless webservers via containers in the cloud. It combines the best aspects of both serverless architecures and hosted container solutions such as Amazon's EKS, making the process of deploying stateless web ap … | Continue reading


@cprimozic.net | 5 years ago

Phost: A Static Project Hosting Utility

Phost is a tool that I created for hosting small projects, static websites, and code sketches quickly and easily as subdomains of a website that I own. It can take a directory of files such as those produced by WebPack, documentation generators, or HTML reports and make them avai … | Continue reading


@cprimozic.net | 5 years ago

A Rusty Advent of Code

Continue reading


@cprimozic.net | 5 years ago

Building Robintrack

Robintrack is a website that I created to allow users to view how the popularity of various stocks held by Robinhood users change over time. I built the site along with Alex J as a side project and launched it live in June 2018. Design + Rationale I have a long history of creatin … | Continue reading


@cprimozic.net | 6 years ago

Creating a Noise Function Compositor

Over the past few months, I've been working on an application designed to create compositions of noise functions. While looking around for applications or utilities that accomplish this in the manner I envisioned, I couldn't find anything that did what I was looking for so I deci … | Continue reading


@cprimozic.net | 7 years ago

Writing a Hashmap-to-Struct Procedural Macro in Rust

ex0dus-0x has built a more complete library based off of this post that supports conversion both ways, check it out! https://github.com/ex0dus-0x/structmap In one of my projects, I recently had the need to take a HashMap filled with settings and configuration options and use it t … | Continue reading


@cprimozic.net | 7 years ago

Osu!Statistics - PP/Rank Over Time

Being the owner of osu!track, I'm in the unique position of having access to a ton of historical player data going back over two years. I decided to dig into this data and pull our some interesting statistics. I've uploaded the full osu!track database here for anyone to use! Also … | Continue reading


@cprimozic.net | 8 years ago