<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>cprimozic.net Blog</title>
<link>https://cprimozic.net</link>
<description>Personal website of Casey Primozic / ameo</description>
<item><title>A Unique Performance Optimization for Geoscript</title><link>https://cprimozic.net/notes/posts/persistent-expr-memo-optimization-for-geoscript/</link><guid>https://cprimozic.net/notes/posts/persistent-expr-memo-optimization-for-geoscript/</guid><pubDate>Sun, 11 Jan 2026 01:32:45 GMT</pubDate></item>
<item><title>A Modern Recommender Model Architecture</title><link>https://cprimozic.net/blog/anime-recommender-model-architecture/</link><guid>https://cprimozic.net/blog/anime-recommender-model-architecture/</guid><pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate><description>I&#39;ve recently finished developing, training, and deploying a neural network-based recommender model.  It takes a user profile (consisting of a set of entities and optionally ratings for those entities) and outputs values that can be used to create an ordered list of recommendations based on it. It does this by learning patterns across both different users as well as different entities at the same…</description></item>
<item><title>Generating 3D Meshes From Text</title><link>https://cprimozic.net/notes/posts/generating-3d-meshes-from-text/</link><guid>https://cprimozic.net/notes/posts/generating-3d-meshes-from-text/</guid><pubDate>Fri, 28 Nov 2025 06:58:28 GMT</pubDate></item>
<item><title>The Tech Behind Geotoy</title><link>https://cprimozic.net/blog/the-tech-behind-geotoy/</link><guid>https://cprimozic.net/blog/the-tech-behind-geotoy/</guid><pubDate>Sun, 17 Aug 2025 00:00:00 GMT</pubDate><description>Geotoy is a Shadertoy-inspired web app for building 3D meshes with code.  It includes a custom DSL called Geoscript which provides a syntax and wide set of built-in functions for generating, combining, and manipulating 3D geometry. Geotoy wasn&#39;t really something I set out with the goal of building at the beginning.  It emerged as the natural progression of my experiments and other projects…</description></item>
<item><title>Compiling the Boundary-First-Flattening Library to Wasm</title><link>https://cprimozic.net/notes/posts/compiling-boundary-first-flattening-to-wasm/</link><guid>https://cprimozic.net/notes/posts/compiling-boundary-first-flattening-to-wasm/</guid><pubDate>Mon, 04 Aug 2025 06:47:56 GMT</pubDate></item>
<item><title>Non-Pointless Software Projects for New Devs in the LLM Age</title><link>https://cprimozic.net/blog/non-pointless-software-projects-for-new-devs-in-the-llm-age/</link><guid>https://cprimozic.net/blog/non-pointless-software-projects-for-new-devs-in-the-llm-age/</guid><pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate><description>I, like many other devs, learned most of my coding by building projects.  I&#39;ve never been one to read textbooks or tutorials through chapter by chapter - I prefer to start something and then look stuff up along the way and trial-and-error my way to the end. Building a portfolio of projects to show off your skills is still highly recommended to college-age devs trying to land their first job,…</description></item>
<item><title>Building Modular Audio Nodes in Web Audio</title><link>https://cprimozic.net/blog/building-modular-audio-nodes-in-web-audio/</link><guid>https://cprimozic.net/blog/building-modular-audio-nodes-in-web-audio/</guid><pubDate>Sun, 18 May 2025 00:00:00 GMT</pubDate><description>For the past several years, I&#39;ve been working on and off on a browser-based DAW and audio synthesis tool which is still stuck with the placeholder name Web Synth.  When the project first started off, it was a wrapper around native Web Audio nodes with a MIDI editor.  As I continued to work on it, the platform gained more and more custom nodes and modules to add functionality beyond that which was…</description></item>
<item><title>Optimizing Advent of Code D9P2 with High-Performance Rust</title><link>https://cprimozic.net/blog/optimizing-advent-of-code-2024/</link><guid>https://cprimozic.net/blog/optimizing-advent-of-code-2024/</guid><pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate><description>I took part in Advent of Code 2024 this year.  It&#39;s a yearly event where a new holiday-themed programming puzzle is released every day of December through Christmas, and people from all across the internet compete to see who can solve them the fastest. It&#39;s a great place to experiment around with writing low-level, high-performance Rust - as well as learn from the extremely smart people who also…</description></item>
<item><title>Creating Constrained Bezier Curves for an Envelope Generator</title><link>https://cprimozic.net/notes/posts/creating-constrained-bezier-curves-for-an-envelope-generator/</link><guid>https://cprimozic.net/notes/posts/creating-constrained-bezier-curves-for-an-envelope-generator/</guid><pubDate>Thu, 26 Dec 2024 01:27:03 GMT</pubDate></item>
<item><title>Notes on Self Hosting a Bluesky PDS Alongside Other Services</title><link>https://cprimozic.net/notes/posts/notes-on-self-hosting-bluesky-pds-alongside-other-services/</link><guid>https://cprimozic.net/notes/posts/notes-on-self-hosting-bluesky-pds-alongside-other-services/</guid><pubDate>Thu, 14 Nov 2024 03:03:37 GMT</pubDate></item>
<item><title>A Small Change to Significantly Improve Triplanar Mapping</title><link>https://cprimozic.net/notes/posts/a-small-change-to-improve-triplanar-mapping/</link><guid>https://cprimozic.net/notes/posts/a-small-change-to-improve-triplanar-mapping/</guid><pubDate>Sun, 01 Sep 2024 22:25:14 GMT</pubDate></item>
<item><title>Fixing a Bug in Google Chrome as a First-Time Contributor</title><link>https://cprimozic.net/blog/fixing-a-bug-in-google-chrome/</link><guid>https://cprimozic.net/blog/fixing-a-bug-in-google-chrome/</guid><pubDate>Sun, 25 Aug 2024 00:00:00 GMT</pubDate><description>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&#39;ve done in the past. I figured that I&#39;d write up an overview of the whole process from beginning to end to give some…</description></item>
<item><title>My Favorite Tools + Techniques for Procedural Gamedev</title><link>https://cprimozic.net/blog/tools-and-techniques-for-procedural-gamedev/</link><guid>https://cprimozic.net/blog/tools-and-techniques-for-procedural-gamedev/</guid><pubDate>Fri, 26 Jul 2024 00:00:00 GMT</pubDate><description>For a couple of years now, I&#39;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 substantial interconnected game-like thing. One of the unifying themes of the work is the use procedural and generative…</description></item>
<item><title>Trying Kolmogorov-Arnold Networks in Practice</title><link>https://cprimozic.net/blog/trying-out-kans/</link><guid>https://cprimozic.net/blog/trying-out-kans/</guid><pubDate>Tue, 02 Jul 2024 00:00:00 GMT</pubDate><description>There&#39;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 claims and decided to test them out myself.  Here are my main findings if you&#39;re not interested in reading through the…</description></item>
<item><title>Computing Normals for &#34;Smooth by Angle&#34; Shading Like Blender</title><link>https://cprimozic.net/blog/computing-auto-smooth-shaded-normals-like-blender/</link><guid>https://cprimozic.net/blog/computing-auto-smooth-shaded-normals-like-blender/</guid><pubDate>Thu, 20 Jun 2024 22:59:51 GMT</pubDate><description>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&#39;t necessary since applications like Blender handle doing this automatically.  But in my case, I was doing these transformations dynamically and in the web browser for my Three.JS application.  If I wanted normals to shade…</description></item>
<item><title>A Process for Subdividing + Deforming Arbitrary 3D Meshes</title><link>https://cprimozic.net/blog/subdividing-meshes-for-displacement/</link><guid>https://cprimozic.net/blog/subdividing-meshes-for-displacement/</guid><pubDate>Thu, 20 Jun 2024 20:33:26 GMT</pubDate><description>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 scenes. It turns out that basic mesh subdivision is indeed very simple and can be implemented in a few dozen lines of code.…</description></item>
<item><title>What I&#39;ve Learned Building Interactive Embedding Visualizations</title><link>https://cprimozic.net/blog/building-embedding-visualizations-from-user-profiles/</link><guid>https://cprimozic.net/blog/building-embedding-visualizations-from-user-profiles/</guid><pubDate>Thu, 16 May 2024 00:00:00 GMT</pubDate><description>Over the past few years, I&#39;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 experience. My work in this area started out as an experiment using data I collected for a different project.  I then repeated…</description></item>
<item><title>Trying Out Cloudflare&#39;s `foundations` Library for Rust</title><link>https://cprimozic.net/blog/trying-out-cloudflare-foundations-library/</link><guid>https://cprimozic.net/blog/trying-out-cloudflare-foundations-library/</guid><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate><description>A couple of months ago, I happened across the announcement blog post from Cloudflare for their newly released foundations library for Rust.  It looked like something I&#39;d definitely be interested in using, and I mentally marked it down as something to check out when a good opportunity came up. Well, that opportunity recently came around - so I went ahead and tried it out! I set up a small,…</description></item>
<item><title>PIXI.JS Optimizations</title><link>https://cprimozic.net/notes/posts/pixi-js-optimizations/</link><guid>https://cprimozic.net/notes/posts/pixi-js-optimizations/</guid><pubDate>Tue, 02 Jan 2024 16:19:53 GMT</pubDate></item>
<item><title>Building a Realistic Raindrop-Covered Window Pane Material in Three.JS</title><link>https://cprimozic.net/notes/posts/building-realistic-rainy-window-pane-in-threejs/</link><guid>https://cprimozic.net/notes/posts/building-realistic-rainy-window-pane-in-threejs/</guid><pubDate>Sun, 12 Nov 2023 23:50:16 GMT</pubDate></item>
<item><title>Wrapping Meshes With Geodesic Walks</title><link>https://cprimozic.net/blog/wrapping-meshes-with-geodesic-walks/</link><guid>https://cprimozic.net/blog/wrapping-meshes-with-geodesic-walks/</guid><pubDate>Mon, 16 Oct 2023 00:00:00 GMT</pubDate><description>I&#39;ve been working on building a game engine of sorts in Three.JS, and along the way I&#39;ve been creating some levels and demos for it.  My 3D modelling skills have come a long way but they&#39;re still quite bad, so I&#39;ve been using procedural or semi-procedural generation a lot as part of my work. For one level I was working on, I wanted to cover the surface of a large building with decorations to help…</description></item>
<item><title>Speeding Up Geodesic Tracing in geometry-central</title><link>https://cprimozic.net/notes/posts/speeding-up-geodesic-tracing-in-geometry-central/</link><guid>https://cprimozic.net/notes/posts/speeding-up-geodesic-tracing-in-geometry-central/</guid><pubDate>Thu, 12 Oct 2023 08:21:13 GMT</pubDate></item>
<item><title>amdgpu_top: A Modern radeontop Alternative</title><link>https://cprimozic.net/notes/posts/amdgpu_top-a-modern-radeontop-alternative/</link><guid>https://cprimozic.net/notes/posts/amdgpu_top-a-modern-radeontop-alternative/</guid><pubDate>Thu, 24 Aug 2023 04:57:55 GMT</pubDate></item>
<item><title>Generating 4K PBR Textures Using Stable Diffusion XL</title><link>https://cprimozic.net/notes/posts/generating-textures-for-3d-using-stable-diffusion/</link><guid>https://cprimozic.net/notes/posts/generating-textures-for-3d-using-stable-diffusion/</guid><pubDate>Sun, 20 Aug 2023 00:05:24 GMT</pubDate></item>
<item><title>Building RNN Architecture Visualizations With TikZ</title><link>https://cprimozic.net/notes/posts/building-rnn-architecture-visualizations-with-tikz/</link><guid>https://cprimozic.net/notes/posts/building-rnn-architecture-visualizations-with-tikz/</guid><pubDate>Tue, 15 Aug 2023 07:42:47 GMT</pubDate></item>
<item><title>Growing Bonsai Networks with RNNs</title><link>https://cprimozic.net/blog/growing-sparse-computational-graphs-with-rnns/</link><guid>https://cprimozic.net/blog/growing-sparse-computational-graphs-with-rnns/</guid><pubDate>Sun, 23 Jul 2023 00:00:00 GMT</pubDate><description>This writeup introduces what I&#39;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 networks typically reside in. I give an overview of the process I use to create these networks which includes several custom…</description></item>
<item><title>Machine Learning Benchmarks on the 7900 XTX</title><link>https://cprimozic.net/notes/posts/machine-learning-benchmarks-on-the-7900-xtx/</link><guid>https://cprimozic.net/notes/posts/machine-learning-benchmarks-on-the-7900-xtx/</guid><pubDate>Sat, 01 Jul 2023 17:09:06 GMT</pubDate></item>
<item><title>Drawing Graphviz Edge Splines</title><link>https://cprimozic.net/notes/posts/graphviz-spline-drawing/</link><guid>https://cprimozic.net/notes/posts/graphviz-spline-drawing/</guid><pubDate>Thu, 01 Jun 2023 04:32:17 GMT</pubDate></item>
<item><title>Building a Signal Analyzer with Modern Web Tech</title><link>https://cprimozic.net/blog/building-a-signal-analyzer-with-modern-web-tech/</link><guid>https://cprimozic.net/blog/building-a-signal-analyzer-with-modern-web-tech/</guid><pubDate>Tue, 16 May 2023 00:00:00 GMT</pubDate><description>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&#39;d not worked with before, and I discovered a lot of really interesting patterns and techniques that I&#39;d never seen before in a web app. This inspired me to write about the individual APIs that I…</description></item>
<item><title>Reverse Engineering a Neural Network&#39;s Clever Solution to Binary Addition</title><link>https://cprimozic.net/blog/reverse-engineering-a-small-neural-network/</link><guid>https://cprimozic.net/blog/reverse-engineering-a-small-neural-network/</guid><pubDate>Sun, 15 Jan 2023 00:00:00 GMT</pubDate><description>There&#39;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 small networks can be surprisingly effective - especially when they&#39;re specifically designed for a specialized…</description></item>
<item><title>Implementing Depth Pre-Pass Optimization for Three.JS</title><link>https://cprimozic.net/blog/threejs-depth-pre-pass-optimization/</link><guid>https://cprimozic.net/blog/threejs-depth-pre-pass-optimization/</guid><pubDate>Tue, 27 Sep 2022 00:00:00 GMT</pubDate><description>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&#39;s possible to do it in a much simpler and more efficient manner using built-in WebGL/OpenGL features. Thanks to /u/kibakufuda and /u/cesium-sandwich in the reddit comments for sharing that info! As I mentioned in my previous post, I&#39;ve been…</description></item>
<item><title>Speeding Up Three.JS with Depth-Based Fragment Culling</title><link>https://cprimozic.net/blog/depth-based-fragment-culling-webgl/</link><guid>https://cprimozic.net/blog/depth-based-fragment-culling-webgl/</guid><pubDate>Mon, 26 Sep 2022 00:00:00 GMT</pubDate><description>Since releasing this article, I&#39;ve been informed that there is actually an even easier and more efficient way of achieving the optimization detailed in this post. It turns out that the main concept implemented here is already commonly used in game engines and other 3D applications, and it&#39;s known as a depth pre-pass.  Additionally, rather than writing custom shader code to read from the depth…</description></item>
<item><title>Logic Through the Lens of Neural Networks</title><link>https://cprimozic.net/blog/boolean-logic-with-neural-networks/</link><guid>https://cprimozic.net/blog/boolean-logic-with-neural-networks/</guid><pubDate>Tue, 19 Jul 2022 00:00:00 GMT</pubDate><description>Recently, I was experimenting with building small neural networks for sequence-to-sequence use cases.  My goal was to create a visualization of how the inner state of a RNN changes as it processes inputs - similar to the browser-based neural network visualization I built previously. I was inspired to explore this area after reading a very interesting blog post called Differentiable Finite State…</description></item>
<item><title>Middle-End Development with SvelteKit + TensorFlow.JS</title><link>https://cprimozic.net/blog/fullstack-sveltekit-recommendation-app-middle-end-development/</link><guid>https://cprimozic.net/blog/fullstack-sveltekit-recommendation-app-middle-end-development/</guid><pubDate>Thu, 02 Jun 2022 00:00:00 GMT</pubDate><description>I&#39;ve been building a project over the past month or so — an interactive recommendation web app powered by a relatively basic neural network.  Building it has been one of my most unique, engaging, and memorable dev experiences in recent memory. There are multiple reasons for this, and after thinking about it I figure it boils down to two technology choices that underpin the whole project:…</description></item>
<item><title>Exploring Neural Networks Visually in the Browser</title><link>https://cprimozic.net/blog/neural-network-experiments-and-visualizations/</link><guid>https://cprimozic.net/blog/neural-network-experiments-and-visualizations/</guid><pubDate>Sat, 02 Apr 2022 00:00:00 GMT</pubDate><description>While teaching myself the basics of neural networks, I was finding it hard to bridge the gap between the foundational theory and a practical &#34;feeling&#34; of how neural networks function at a fundamental level.  I learned how pieces like gradient descent and different activation functions worked, and I played with building and training some networks in a Google Colab notebook. Modern toolkits like…</description></item>
<item><title>My Evaluation of SvelteKit for Full-Stack Web App Development</title><link>https://cprimozic.net/blog/trying-out-sveltekit/</link><guid>https://cprimozic.net/blog/trying-out-sveltekit/</guid><pubDate>Tue, 04 Jan 2022 00:00:00 GMT</pubDate><description>I recently tried out SvelteKit for the first time.  This is a summary of my experience setting it up, some information I&#39;ve collected while researching + learning it, and my thoughts on how it compares to other similar frameworks. If you&#39;re not familiar with it, SvelteKit is a framework for building full stack web apps.  It builds on top of Svelte and provides a Jamstack environment with support…</description></item>
<item><title>My Setup for Self-Hosting Dozens of Web Applications + Services on a Single Server</title><link>https://cprimozic.net/blog/my-selfhosted-websites-architecture/</link><guid>https://cprimozic.net/blog/my-selfhosted-websites-architecture/</guid><pubDate>Wed, 29 Dec 2021 00:00:00 GMT</pubDate><description>Over the years, I&#39;ve accumulated quite a collection of websites, web applications, APIs, and other services that I&#39;ve built and continue to host publicly.  I&#39;ve experimented with a lot of different hosting methods for them, switched between several different providers, and have finally arrived at something that I feel comfortable with that meets all my needs. There are nearly infinite options…</description></item>
<item><title>Habits I&#39;ve Developed for Fast + Efficient Programming</title><link>https://cprimozic.net/blog/programming-speed-strategies/</link><guid>https://cprimozic.net/blog/programming-speed-strategies/</guid><pubDate>Sun, 24 Oct 2021 00:00:00 GMT</pubDate><description>There&#39;s been a lot of discussion recently about working fast and being productive in software development, and I thought I&#39;d share some of my own strategies that I&#39;ve developed for that purpose. There&#39;s a lot more than just writing code that goes into being an effective software developer, and there&#39;s naturally a lot of discussion that goes on about what those other things are.  However, the core…</description></item>
<item><title>Using Graph Embeddings for Music Visualization + Discovery with node2vec</title><link>https://cprimozic.net/blog/graph-embeddings-for-music-discovery/</link><guid>https://cprimozic.net/blog/graph-embeddings-for-music-discovery/</guid><pubDate>Sat, 23 Oct 2021 00:00:00 GMT</pubDate><description>If you listen to music using a modern platform like Spotify, YouTube, SoundCloud, or similar, chances are you&#39;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 approach that takes information about you and what you listen to and predicts other songs or artists you&#39;ll also like. In…</description></item>
<item><title>Building Music Galaxy — An Interactive 3D Visualization of Musical Artists</title><link>https://cprimozic.net/blog/building-music-galaxy/</link><guid>https://cprimozic.net/blog/building-music-galaxy/</guid><pubDate>Sun, 17 Oct 2021 00:00:00 GMT</pubDate><description>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 in space.  It also supports connecting to users&#39; Spotify accounts to visualize where their personal favorite artists…</description></item>
<item><title>Speeding Up the Webcola Graph Viz Library with Rust + WebAssembly</title><link>https://cprimozic.net/blog/speeding-up-webcola-with-webassembly/</link><guid>https://cprimozic.net/blog/speeding-up-webcola-with-webassembly/</guid><pubDate>Mon, 24 May 2021 00:00:00 GMT</pubDate><description>For a recent project I&#39;ve been working on, I wanted to include a graph showing the relationships between different artists on Spotify.  Spotify provides the data directly from their API, and I had everything set up to pull it for a user&#39;s top artists and into the browser. This is the story of how I took the initial unoptimized graph visualization - which ran at &#60;10 FPS on my powerful desktop -…</description></item>
<item><title>FM Synthesis in the Browser with Rust, Web Audio, and WebAssembly with SIMD</title><link>https://cprimozic.net/blog/fm-synth-rust-wasm-simd/</link><guid>https://cprimozic.net/blog/fm-synth-rust-wasm-simd/</guid><pubDate>Sat, 20 Mar 2021 00:00:00 GMT</pubDate><description>As web browsers have grown and evolved over the years, they&#39;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&#39;ve been particularly interested in is the Web Audio API and its capabilities as a foundation for browser-based audio synthesis and DSP programming.…</description></item>
<item><title>Finding + Fixing a AudioWorkletProcessor Performance Pitfall</title><link>https://cprimozic.net/blog/webaudio-audioworklet-optimization/</link><guid>https://cprimozic.net/blog/webaudio-audioworklet-optimization/</guid><pubDate>Thu, 12 Nov 2020 00:00:00 GMT</pubDate><description>TL;DR: There is a non-zero cost that scales linearly with the number of parameters AudioWorkletProcessors have. If you are seeing issues with long execution times for AudioWorkletProcessor::Process with low execution times on the inner &#34;(author script execution)&#34; for the process() method itself, check if the total number of parameters you have on your AWPs is high. In my case, I reduced it from…</description></item>
<item><title>Building SPF420 x SYNC^UP - An Online Concert Experience</title><link>https://cprimozic.net/blog/building-spf420-syncup/</link><guid>https://cprimozic.net/blog/building-spf420-syncup/</guid><pubDate>Sun, 19 Jul 2020 00:00:00 GMT</pubDate><description>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 thing. With the situation created by COVID-19, there was an explosion in activity in the digital events space and they…</description></item>
<item><title>Debugging a Hanging Apache2 Server on the Fly</title><link>https://cprimozic.net/blog/apache2-performance-debugging-journey/</link><guid>https://cprimozic.net/blog/apache2-performance-debugging-journey/</guid><pubDate>Wed, 08 Jan 2020 00:00:00 GMT</pubDate><description>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 steam. Within an hour after posting, I was getting hundreds of requests per minute to the image from Reddit users and of…</description></item>
<item><title>Building a Statically Linked `wasm-opt` for Continuous Deployment</title><link>https://cprimozic.net/blog/building-static-wasm-opt-for-ci-cd/</link><guid>https://cprimozic.net/blog/building-static-wasm-opt-for-ci-cd/</guid><pubDate>Sat, 07 Dec 2019 00:00:00 GMT</pubDate><description>Binaryen, the repository that contains wasm-opt, actually builds wasm-opt for alpine/statically linked as part of its CI Pipeline.  Stealing their code for that, here&#39;s a very simple script that handles building wasm-opt statically, no extra work required: That&#39;s it!  Verifying that the generated wasm-opt binary is actually statically linked: Here&#39;s the original blog post for posterity: When…</description></item>
<item><title>Building a Wavetable Synthesizer from Scratch with Rust, WebAssembly, and Web Audio</title><link>https://cprimozic.net/blog/buliding-a-wavetable-synthesizer-with-rust-wasm-and-webaudio/</link><guid>https://cprimozic.net/blog/buliding-a-wavetable-synthesizer-with-rust-wasm-and-webaudio/</guid><pubDate>Wed, 04 Dec 2019 00:00:00 GMT</pubDate><description>A spectrogram visualization of the output of a wavetable of which this article details the construction Wavetable Synthesis is a method for synthesizing audio by interpolating between different pre-sampled waveforms stored in a table. It&#39;s a very neat way to generate sounds that change over time, allowing the different waveforms to morph into each other slowly in order to create rich and…</description></item>
<item><title>Using Rayon for Simple Parallelization of SQL Queries in Rust</title><link>https://cprimozic.net/blog/rust-parallelism-rayon-join/</link><guid>https://cprimozic.net/blog/rust-parallelism-rayon-join/</guid><pubDate>Mon, 30 Sep 2019 00:00:00 GMT</pubDate><description>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 nearly a second to complete, and running them both in series was causing a noticeable wait period in the UI while waiting…</description></item>
<item><title>My Thoughts on Rust&#39;s Future: A Positive Outlook</title><link>https://cprimozic.net/blog/my-thoughts-on-rusts-future/</link><guid>https://cprimozic.net/blog/my-thoughts-on-rusts-future/</guid><pubDate>Sat, 03 Aug 2019 00:00:00 GMT</pubDate><description>I&#39;m feeling really positive about Rust&#39;s prospects of popularity and wide-spread adoption in the future. I&#39;ve been a part of the Rust community for three years now, and it feels like the stars are starting to align in order to let Rust jump into a position of dominance in the programming language world. There are several different, wide-spread, and mostly unrelated trends that I&#39;ve noticed are…</description></item>
<item><title>Deploying a REST API with Rust, Diesel, Rocket, and MySQL on Google Cloud Run</title><link>https://cprimozic.net/blog/rust-rocket-cloud-run/</link><guid>https://cprimozic.net/blog/rust-rocket-cloud-run/</guid><pubDate>Tue, 23 Apr 2019 00:00:00 GMT</pubDate><description>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&#39;s EKS, making the process of deploying stateless web applications to the cloud easier than ever before. In addition, it&#39;s extremely flexible with regard to the actual…</description></item>
<item><title>Phost: A Static Project Hosting Utility</title><link>https://cprimozic.net/blog/phost/</link><guid>https://cprimozic.net/blog/phost/</guid><pubDate>Sun, 30 Dec 2018 00:00:00 GMT</pubDate><description>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 available publicly at a url like https://gol.ameo.design/ instantly. I&#39;ve found that having this tool available is very…</description></item>
<item><title>A Rusty Advent of Code</title><link>https://cprimozic.net/blog/a-rusty-aoc/</link><guid>https://cprimozic.net/blog/a-rusty-aoc/</guid><pubDate>Thu, 27 Dec 2018 00:00:00 GMT</pubDate><description>For the first time, I took part in the Advent of Code this year. If you haven&#39;t heard of it, it&#39;s a daily programming challenge that can be solved in any programming language. People compete to be in the first 100 to make it on the leaderboard, or just use it as an opportunity to learn a new programming language. I used Rust for every day&#39;s challenges. On the unofficial Rust programming language…</description></item>
<item><title>Building Robintrack</title><link>https://cprimozic.net/blog/building-robintrack/</link><guid>https://cprimozic.net/blog/building-robintrack/</guid><pubDate>Mon, 03 Sep 2018 00:00:00 GMT</pubDate><description>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. I have a long history of creating *-track websites. I don&#39;t know what it is about them, but I really enjoy both using and making them. I was originally inspired by the…</description></item>
<item><title>Creating a Noise Function Compositor</title><link>https://cprimozic.net/blog/creating-noise-function-compositor/</link><guid>https://cprimozic.net/blog/creating-noise-function-compositor/</guid><pubDate>Mon, 04 Sep 2017 00:00:00 GMT</pubDate><description>Over the past few months, I&#39;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&#39;t find anything that did what I was looking for so I decided to build it myself! Before getting into the details of how I built it and the cool technologies I used along the…</description></item>
<item><title>Writing a Hashmap-to-Struct Procedural Macro in Rust</title><link>https://cprimozic.net/blog/writing-a-hashmap-to-struct-procedural-macro-in-rust/</link><guid>https://cprimozic.net/blog/writing-a-hashmap-to-struct-procedural-macro-in-rust/</guid><pubDate>Fri, 13 Jan 2017 00:00:00 GMT</pubDate><description>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 to populate the fields of a struct. If a certain setting wasn&#39;t in the hashmap, then the default value for the struct…</description></item>
<item><title>Osu!Statistics - PP/Rank Over Time</title><link>https://cprimozic.net/blog/osu-statistics-1/</link><guid>https://cprimozic.net/blog/osu-statistics-1/</guid><pubDate>Sun, 02 Oct 2016 00:00:00 GMT</pubDate><description>Being the owner of osu!track, I&#39;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&#39;ve uploaded the full osu!track database here for anyone to use! Also, the scripts I used to parse the data and create the graphs in this post can be found here. To start things off,…</description></item>
<item><title>Building an Algorithmic Trading Platform in Rust</title><link>https://cprimozic.net/blog/building-an-algorithmic-trading-platform-in-rust/</link><guid>https://cprimozic.net/blog/building-an-algorithmic-trading-platform-in-rust/</guid><pubDate>Thu, 29 Sep 2016 00:00:00 GMT</pubDate><description>For almost a year now, I&#39;ve been working on creating an algorithmic trading platform that I can use to create automated strategies for trading. It started out as an experiment - just a fun little idea that I could explore, but it quickly blew up into a full-scale project into which I&#39;ve poured hundreds of hours. I&#39;m currently on version 4 of the platform. Versions 1, 2, and 3 were completely…</description></item>
</channel>
</rss>