41554 blogs · [ { "id": "01a0b68b-4cd2-7299-b5a9-1d74d53e7630", "title": "Casey Primozic / ameo", "url": "https://cprimozic.net", "published_at": "2026-09-07T05:20:44+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf80c71883", "title": "A Unique Performance Optimization for Geoscript", "url": "https://cprimozic.net/notes/posts/persistent-expr-memo-optimization-for-geoscript/", "published_at": "2026-01-11T01:32:45+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf81a4bddd", "title": "A Modern Recommender Model Architecture", "url": "https://cprimozic.net/blog/anime-recommender-model-architecture/", "published_at": "2025-12-28T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf824d8bb3", "title": "Generating 3D Meshes From Text", "url": "https://cprimozic.net/notes/posts/generating-3d-meshes-from-text/", "published_at": "2025-11-28T06:58:28+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf82b9d3d5", "title": "The Tech Behind Geotoy", "url": "https://cprimozic.net/blog/the-tech-behind-geotoy/", "published_at": "2025-08-17T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf8303b872", "title": "Compiling the Boundary-First-Flattening Library to Wasm", "url": "https://cprimozic.net/notes/posts/compiling-boundary-first-flattening-to-wasm/", "published_at": "2025-08-04T06:47:56+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf83979fc2", "title": "Non-Pointless Software Projects for New Devs in the LLM Age", "url": "https://cprimozic.net/blog/non-pointless-software-projects-for-new-devs-in-the-llm-age/", "published_at": "2025-05-26T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf848a82bb", "title": "Building Modular Audio Nodes in Web Audio", "url": "https://cprimozic.net/blog/building-modular-audio-nodes-in-web-audio/", "published_at": "2025-05-18T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf84ad593a", "title": "Optimizing Advent of Code D9P2 with High-Performance Rust", "url": "https://cprimozic.net/blog/optimizing-advent-of-code-2024/", "published_at": "2024-12-31T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf853171bd", "title": "Creating Constrained Bezier Curves for an Envelope Generator", "url": "https://cprimozic.net/notes/posts/creating-constrained-bezier-curves-for-an-envelope-generator/", "published_at": "2024-12-26T01:27:03+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf8585d03d", "title": "Notes on Self Hosting a Bluesky PDS Alongside Other Services", "url": "https://cprimozic.net/notes/posts/notes-on-self-hosting-bluesky-pds-alongside-other-services/", "published_at": "2024-11-14T03:03:37+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf85ae11bc", "title": "A Small Change to Significantly Improve Triplanar Mapping", "url": "https://cprimozic.net/notes/posts/a-small-change-to-improve-triplanar-mapping/", "published_at": "2024-09-01T22:25:14+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf85be3a3d", "title": "Fixing a Bug in Google Chrome as a First-Time Contributor", "url": "https://cprimozic.net/blog/fixing-a-bug-in-google-chrome/", "published_at": "2024-08-25T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf866590d8", "title": "My Favorite Tools + Techniques for Procedural Gamedev", "url": "https://cprimozic.net/blog/tools-and-techniques-for-procedural-gamedev/", "published_at": "2024-07-26T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf87154680", "title": "Trying Kolmogorov-Arnold Networks in Practice", "url": "https://cprimozic.net/blog/trying-out-kans/", "published_at": "2024-07-02T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf87a562ff", "title": "Computing Normals for \"Smooth by Angle\" Shading Like Blender", "url": "https://cprimozic.net/blog/computing-auto-smooth-shaded-normals-like-blender/", "published_at": "2024-06-20T22:59:51+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf87ba10fb", "title": "A Process for Subdividing + Deforming Arbitrary 3D Meshes", "url": "https://cprimozic.net/blog/subdividing-meshes-for-displacement/", "published_at": "2024-06-20T20:33:26+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf87d6d0ba", "title": "What I've Learned Building Interactive Embedding Visualizations", "url": "https://cprimozic.net/blog/building-embedding-visualizations-from-user-profiles/", "published_at": "2024-05-16T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf886a803b", "title": "Trying Out Cloudflare's `foundations` Library for Rust", "url": "https://cprimozic.net/blog/trying-out-cloudflare-foundations-library/", "published_at": "2024-04-15T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf8951fb3f", "title": "PIXI.JS Optimizations", "url": "https://cprimozic.net/notes/posts/pixi-js-optimizations/", "published_at": "2024-01-02T16:19:53+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf898207a6", "title": "Building a Realistic Raindrop-Covered Window Pane Material in Three.JS", "url": "https://cprimozic.net/notes/posts/building-realistic-rainy-window-pane-in-threejs/", "published_at": "2023-11-12T23:50:16+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf8a75ec19", "title": "Wrapping Meshes With Geodesic Walks", "url": "https://cprimozic.net/blog/wrapping-meshes-with-geodesic-walks/", "published_at": "2023-10-16T00:00:00+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf8ad00b95", "title": "Speeding Up Geodesic Tracing in geometry-central", "url": "https://cprimozic.net/notes/posts/speeding-up-geodesic-tracing-in-geometry-central/", "published_at": "2023-10-12T08:21:13+00:00" }, { "id": "01a08764-494e-72ff-8fcb-27bf8b3f415b", "title": "amdgpu_top: A Modern radeontop Alternative", "url": "https://cprimozic.net/notes/posts/amdgpu_top-a-modern-radeontop-alternative/", "published_at": "2023-08-24T04:57:55+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a66e476a", "title": "Generating 4K PBR Textures Using Stable Diffusion XL", "url": "https://cprimozic.net/notes/posts/generating-textures-for-3d-using-stable-diffusion/", "published_at": "2023-08-20T00:05:24+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a6f7c2cf", "title": "Building RNN Architecture Visualizations With TikZ", "url": "https://cprimozic.net/notes/posts/building-rnn-architecture-visualizations-with-tikz/", "published_at": "2023-08-15T07:42:47+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a7511802", "title": "Growing Bonsai Networks with RNNs", "url": "https://cprimozic.net/blog/growing-sparse-computational-graphs-with-rnns/", "published_at": "2023-07-23T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a76c6e2c", "title": "Machine Learning Benchmarks on the 7900 XTX", "url": "https://cprimozic.net/notes/posts/machine-learning-benchmarks-on-the-7900-xtx/", "published_at": "2023-07-01T17:09:06+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a7891ac0", "title": "Drawing Graphviz Edge Splines", "url": "https://cprimozic.net/notes/posts/graphviz-spline-drawing/", "published_at": "2023-06-01T04:32:17+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a7f2f296", "title": "Building a Signal Analyzer with Modern Web Tech", "url": "https://cprimozic.net/blog/building-a-signal-analyzer-with-modern-web-tech/", "published_at": "2023-05-16T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a890df0b", "title": "Reverse Engineering a Neural Network's Clever Solution to Binary Addition", "url": "https://cprimozic.net/blog/reverse-engineering-a-small-neural-network/", "published_at": "2023-01-15T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a98283ac", "title": "Implementing Depth Pre-Pass Optimization for Three.JS", "url": "https://cprimozic.net/blog/threejs-depth-pre-pass-optimization/", "published_at": "2022-09-27T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5a993236f", "title": "Speeding Up Three.JS with Depth-Based Fragment Culling", "url": "https://cprimozic.net/blog/depth-based-fragment-culling-webgl/", "published_at": "2022-09-26T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5aa4415ef", "title": "Logic Through the Lens of Neural Networks", "url": "https://cprimozic.net/blog/boolean-logic-with-neural-networks/", "published_at": "2022-07-19T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5aaadab04", "title": "Middle-End Development with SvelteKit + TensorFlow.JS", "url": "https://cprimozic.net/blog/fullstack-sveltekit-recommendation-app-middle-end-development/", "published_at": "2022-06-02T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5ab0a9355", "title": "Exploring Neural Networks Visually in the Browser", "url": "https://cprimozic.net/blog/neural-network-experiments-and-visualizations/", "published_at": "2022-04-02T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5abe1fa42", "title": "My Evaluation of SvelteKit for Full-Stack Web App Development", "url": "https://cprimozic.net/blog/trying-out-sveltekit/", "published_at": "2022-01-04T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5ac476399", "title": "My Setup for Self-Hosting Dozens of Web Applications + Services on a Single Server", "url": "https://cprimozic.net/blog/my-selfhosted-websites-architecture/", "published_at": "2021-12-29T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5ad1075d9", "title": "Habits I've Developed for Fast + Efficient Programming", "url": "https://cprimozic.net/blog/programming-speed-strategies/", "published_at": "2021-10-24T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5ae0661f9", "title": "Using Graph Embeddings for Music Visualization + Discovery with node2vec", "url": "https://cprimozic.net/blog/graph-embeddings-for-music-discovery/", "published_at": "2021-10-23T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5ae2bc9c1", "title": "Building Music Galaxy — An Interactive 3D Visualization of Musical Artists", "url": "https://cprimozic.net/blog/building-music-galaxy/", "published_at": "2021-10-17T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5aececa16", "title": "Speeding Up the Webcola Graph Viz Library with Rust + WebAssembly", "url": "https://cprimozic.net/blog/speeding-up-webcola-with-webassembly/", "published_at": "2021-05-24T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5af9b8b8f", "title": "FM Synthesis in the Browser with Rust, Web Audio, and WebAssembly with SIMD", "url": "https://cprimozic.net/blog/fm-synth-rust-wasm-simd/", "published_at": "2021-03-20T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5afe2787b", "title": "Finding + Fixing a AudioWorkletProcessor Performance Pitfall", "url": "https://cprimozic.net/blog/webaudio-audioworklet-optimization/", "published_at": "2020-11-12T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b01219cb", "title": "Building SPF420 x SYNC^UP - An Online Concert Experience", "url": "https://cprimozic.net/blog/building-spf420-syncup/", "published_at": "2020-07-19T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b063469a", "title": "Debugging a Hanging Apache2 Server on the Fly", "url": "https://cprimozic.net/blog/apache2-performance-debugging-journey/", "published_at": "2020-01-08T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b0cd633f", "title": "Building a Statically Linked `wasm-opt` for Continuous Deployment", "url": "https://cprimozic.net/blog/building-static-wasm-opt-for-ci-cd/", "published_at": "2019-12-07T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b1985f4c", "title": "Building a Wavetable Synthesizer from Scratch with Rust, WebAssembly, and Web Audio", "url": "https://cprimozic.net/blog/buliding-a-wavetable-synthesizer-with-rust-wasm-and-webaudio/", "published_at": "2019-12-04T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b27801d1", "title": "Using Rayon for Simple Parallelization of SQL Queries in Rust", "url": "https://cprimozic.net/blog/rust-parallelism-rayon-join/", "published_at": "2019-09-30T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b2ad501a", "title": "My Thoughts on Rust's Future: A Positive Outlook", "url": "https://cprimozic.net/blog/my-thoughts-on-rusts-future/", "published_at": "2019-08-03T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b363997f", "title": "Deploying a REST API with Rust, Diesel, Rocket, and MySQL on Google Cloud Run", "url": "https://cprimozic.net/blog/rust-rocket-cloud-run/", "published_at": "2019-04-23T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b3fea949", "title": "Phost: A Static Project Hosting Utility", "url": "https://cprimozic.net/blog/phost/", "published_at": "2018-12-30T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b492c879", "title": "A Rusty Advent of Code", "url": "https://cprimozic.net/blog/a-rusty-aoc/", "published_at": "2018-12-27T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b50aa5fa", "title": "Building Robintrack", "url": "https://cprimozic.net/blog/building-robintrack/", "published_at": "2018-09-03T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b5bb98a0", "title": "Creating a Noise Function Compositor", "url": "https://cprimozic.net/blog/creating-noise-function-compositor/", "published_at": "2017-09-04T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b616bc36", "title": "Writing a Hashmap-to-Struct Procedural Macro in Rust", "url": "https://cprimozic.net/blog/writing-a-hashmap-to-struct-procedural-macro-in-rust/", "published_at": "2017-01-13T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b632840c", "title": "Osu!Statistics - PP/Rank Over Time", "url": "https://cprimozic.net/blog/osu-statistics-1/", "published_at": "2016-10-02T00:00:00+00:00" }, { "id": "01a08764-494f-7277-80a1-52b5b66a0c3b", "title": "Building an Algorithmic Trading Platform in Rust", "url": "https://cprimozic.net/blog/building-an-algorithmic-trading-platform-in-rust/", "published_at": "2016-09-29T00:00:00+00:00" } ] posts Claim your blog
Back to Casey Primozic's Homepage
Blog · corpus.blog/blogs/cprimozic.net/posts

Casey Primozic's Homepage

cprimozic.net

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016