Welcome to my home, version 4.
The best ideas are both simple and outlandish.
Recent Posts
-
SnapFire FSR, Full Stack Runtime, First Look: full-stack TypeScript framework with no Node.js in it!
Sometimes the stars align, build
There is no Node.js in this stack. Not at build time, not at request time, not in the container. The build is a Rust binary, the server is a Rust binary, and the thing you deploy is one file with no
node_modulesnext to it.You still write TypeScript. You write
.tsxpages, aloadfunction per route, actions, layouts, middleware, all of it in the shapes you already know from Next.js and Remix. That part is deliberately unremarkable. What is underneath it is not.This is part ...
-
Upgraded Norman's Oven to Version 4
VERSION 4 of Norman's Oven is HERE!
It's been a while since I last updated this site (No more Leptos). I updated the API and internal management site as well. API and mgmt were still using node.js, until now! Now, we are all rust powered using Snapfire, XWM, HTMX, Actix Web and Tera 2. AI played a big part in why this worked so well and how the data transfer was so easy and fast.
Personally, I've never would've bothered with anything of this, but the advent of AI made me very ambitious. Snapfire and Snapfir...
-
Snapfire 0.5.0: Moving to Tera 2
When I announced Snapfire 0.4.0, the pitch was about the development loop: stop restarting your server every time you touch an
.htmlfile. That part hasn't changed, and it still works the same way.This release is about the engine underneath.
Tera 2 shipped and it isn't a version bump. It's a rewrite. The Rust API changed, the template language changed, and a handful of things that used to fail silently now fail loudly. Snapfire 0.5.0 moves to it.
Today I'm releasing Snapfire 0.5.0.
GitHub Repository: https:/...
-
Claude Opus 5 is great, but Fable 5 is Better Suited For Planning
Opus 4.8 and Opus 5 have been much better than Gemini Pro hands down. Fable is miles ahead, it can look at Opus output and break out of the mold of limited closed minded thinking. Opus will say these are the 3 choices and Fable will be like nah, you have another choice and Fable is always the better choice over Opus 5. Fable also knows when to stop which further highlights why it is better for planning.
Opus 5 likes to do way more than needed and forget your CLAUDE.md exists, it's annoying. It was a problem ...
-
RockSolid 3.0.0: A painless upgrade to rust-rocksdb from unmaintained rocksdb crate
RockSolid 3.0.0 brings a dependency update.We are now using rust-rocksdb with minimal changes needed. Enjoy the same API with updated underlying RocksDB 11 library.
Since the last RockSolid post, RockSolid has added TransactionDB, OptimisticTransactionDB, a more user friendly Iterator API that allows skipping.
rocksdb crate has not been published to for a year while the underlying rocksdb advances in version. RocksDB embedded has from 10 to 11 since the last time rocksdb crate was published....
-
Resurrection of Plaza: Building Multiplayer Servers for Games and Apps is Hard, Really Really REALLY Unbelievably Hard
Plaza is a set of foundational building blocks for correct, high performance, server authoritative applications. In Rust.
You implement one trait,
StateLogic, and Plaza owns the rest: the controller loop that serializes every change, the transports, and the per-client snapshots. Build a multiplayer game server, or a collaborative document, or a shared to-do list. Anything where many clients change one piece of state and the server has the final word.It ships as seven crates, and that ...
-
Chasing High Performance: Chickens Come Home to Roost
I've talked about how new libraries come in with high performance claims and how chasing high performance means making sacrifices here and there. Each little correctness compromise claws back each shortcut and regresses new library back. It plays out every once in a while. Knowing when to stop trying to optimize just because the AI told you so is for the best.
If I told you how many times AI was happy to optimize for the task and throw away constraints, I'd be a trillionaire. AI has no principles, it's there...
-
Orka 0.2.0: Simpler with the Same Functionality
Orka is an asynchronous, pluggable and type-safe workflow engine for Rust, designed to orchestrate complex multi-step business processes with robust context management and conditional logic. It simplifies the development of intricate, stateful workflows by providing a clear structure for defining steps, managing shared data, handling errors consistently, and enabling dynamic execution paths, thereby improving code organization and maintainability for complex operations.
Orka 0.2.0 is...
-
Dashmap is a Curse in "High Performance" Data Structures
High Performance is elusive, not because you can't reach it, but because the sacrifices you must make to get there. There's always some hidden sacrifice you must make, going fast is not cost-free no matter what library sells that snake oil to you.
Dashmap, a self declared high perf map, hands you a footgun, the worst kind of footgun in a concurrent hashmap. It doesn't matter what experience level you are, you will shoot yourself in the foot.
The footgun is in the form of a shard lock whenever you grab a value...
-
rzmq 0.5.24: Another Performance LEAP, Doubled Throughput (17 GB/s) on io_uring with sharded workers
rzmq 0.5.24: crates.io | Github - Async, Pure Rust ZeroMQ with Leading Performance on Linux
After some experimenting, I found that io uring was maxed out on a single thread meaning multiple connections could saturate it, so it's been a long time coming, io_uring sharded workers is here! Yes, rzmq's io_uring is no longer one single thread, it's multiple threads now and meets or beats Tokio in throughput.
I knew there was always more throughput on the table because Tokio could do it and I always had a plan to h...