The Curious Engineer

All blogs / Rust

nickb.dev

nickb.dev

A blog by developer Nick Babcock, who has been documenting his journey through web development, performance, Rust, Wasm, and homelab management for a decade.

RustPerformance / optimizationWeb developmentJavaScript / TypeScript

Posts
166 from 21 Aug 2012 to 18 Jul 2026
Posting
now and then (3 in the last year)
Kind
personal blog
Feed
https://nickb.dev/index.xml

2026 2

  1. There's always a niche: rawzip and the cost of ergonomics
  2. When React strict mode meets a one-way door

2025 10

  1. Wasm is not an implementation detail
  2. The serde optimization gauntlet: Wasm and arenas
  3. Life after wasm-pack: an opinionated deconstruction
  4. Top-level await is a footgun: The Wasm worker edition
  5. Are SIMD gather instructions underrated?
  6. The DuckDB and Arrow rabbit hole: data modeling adventures
  7. A Bevy app entirely off the main thread
  8. Wasm's curious word size and the SWAR advantage
  9. Default musl allocator considered harmful (to performance)
  10. The right tool for the job: positioned IO for Zip archives

2024 12

  1. Keeping up with the fronted Joneses: streaming server side rendering
  2. Cloudflare's forbidden Steam
  3. The hidden nuance of the JavaScript File API
  4. SQL reduction: ask for forgiveness
  5. Next.js on Cloudflare: a gem with rough edges
  6. The accidental journey to TrueNAS Scale
  7. Dot or Not? A type safety story about file extensions
  8. Practical responsive image sprites for the web
  9. Pitfalls of React Query
  10. You might not need a React animation library: transitions
  11. The composition king: compound components
  12. The WebAssembly value proposition is write once, not performance

2023 11

  1. The dark side of inlining and monomorphization
  2. Split Next.js across hosting providers and advocate for direct S3 uploads
  3. MySQL text ID collation: tread carefully
  4. Decapitation: a migration from antd to headless story
  5. Advantages of opaque types over value objects
  6. Too edgy, a serverless search
  7. There and back again with zstd zips
  8. New browser APIs unlock new possibilities
  9. CycleList: a cyclical activity tracker
  10. Designing Responsive React Components for 2023
  11. Wasm compression benchmarks and the cost of missing compression APIs

2022 11

  1. Rethinking web workers and edge compute with Wasm
  2. Cloudflare Tunnel saved my home server when my apartment got a new ISP
  3. Avoiding allocations in Rust to shrink Wasm modules
  4. Favoring SQL over Redis for an evergreen leaderboard
  5. DEFLATE yourself for faster Rust ZIPs
  6. Avoiding dynamic CSS-in-JS styles in React
  7. The footgun with Docker Compose shared configurations
  8. The subjective nature of JS libraries exposing an off the main thread API
  9. Recommendations when publishing a Wasm library
  10. Don't freak, but our Rust web server is now Node.js
  11. Accessing public and private B2 S3 buckets in Rust

2021 10

  1. Authoring a SIMD enhanced Wasm library with Rust
  2. Replacing an unavailable ZFS drive
  3. A workaround for Rust's lack of structural subtyping
  4. Reality check for Cloudflare Wasm Workers and Rust
  5. Simulating the EU4 map in the browser with WebGL
  6. Git Rebase to Squash Commits to Most Recent Message
  7. Wasm and Native Node Module Performance Comparison
  8. Stumbling with WebGL Image Processing
  9. Cargo Workspace and the Feature Unification Pitfall
  10. Leveraging Rust to Bundle Node Native Modules and Wasm into an Isomorphic NPM Package

2020 10

  1. Writing a Secure Systemd Service with Sandboxing and Dynamic Users
  2. A Quick Tour of Trade-offs Embedding Data in Rust
  3. Designing a Decaying Leaderboard with Redis
  4. Results of Authoring a JS Library with Rust and Wasm
  5. Migrating a 160k Word Jekyll Blog to Hugo
  6. Backblaze B2 as a Cheaper Alternative to Github's Git LFS
  7. My Bet on Rust has been Vindicated
  8. Reasons to Migrate away from Gatsby
  9. Opinionated Guide for Web Development with Rust Web Workers
  10. Parsing Performance Improvement with Tapes and Spatial Locality

2019 5

  1. Monitoring Remote Sites with Traefik and Prometheus
  2. Downsampling Timescale Data with Continuous Aggregations
  3. SQLite: Dropping an index for a 300x speedup
  4. Azure Pipelines for Rust Projects
  5. Guidelines on Benchmarking and Rust

2018 13

  1. Quick investment advice for the smart and lazy
  2. Leaning on Algo to route Docker traffic through Wireguard
  3. Exploring TimescaleDB as a replacement for Graphite
  4. Hashing strings bytewise in C#
  5. IPv6 only networking not viable in 2018
  6. Satisfying NAS share and backup solution
  7. Migrating to Actix Web from Rocket for Stability
  8. Viewing WireGuard Traffic with Tcpdump
  9. Lessons learned: ZFS, databases, and backups
  10. Routing Select Docker Containers through Wireguard VPN
  11. Integrating Kotlin with a Dropwizard App
  12. Dropwizard 1.3 Upcoming TLS Improvements
  13. Fighting Instability and Rust

2017 14

  1. Replacing Elasticsearch with Rust and SQLite
  2. Back to the Register: Distilling the Federal Register for All
  3. WireGuard VPN Walkthrough
  4. Robust systemd Script to Store Pi-hole Metrics in Graphite
  5. Building a Home Server
  6. Investigation into the Inefficiencies of Node.js Http Streams
  7. Writing a high performance TLS terminating proxy in Rust
  8. Creating a parallel AMP site with Jekyll
  9. Introduction to Journald and Structured Logging
  10. Migrating to the new NET SDK MSBuild Project Files
  11. The Difficulty of Performance Evaluation of HikariCP in Dropwizard
  12. First Impressions of the Google Pixel
  13. The Last Hooray, Bye Windows Phone
  14. The Cost of TLS in Java and Solutions

2016 19

  1. Exporting Open Hardware Data into Graphite
  2. Monitoring Windows system metrics with Grafana
  3. Exploring Data: Michigan Traffic Accidents
  4. Another Year, Another Site Refresh
  5. Waning F#
  6. Dropwizard 1.1 and Let's Encrypt with no Downtime
  7. Dropwizard Multipart Form Quickstart
  8. Boxcars: an Example Rocket League Replay Parser Using Rust and Nom
  9. Know Thy Threadpool: A Worked Example with Dropwizard
  10. Dropwizard 1.0 TLS Checklist
  11. Fun with Pfarah: a Paradox Clausewitz Parser
  12. ISO 8601 and Nanosecond Precision Across Languages
  13. Visualizing Ann Arbor Incidents
  14. Introduction to IMAP
  15. Initial Impressions of a Website with Modern Build Tools
  16. A Java Result Algebraic Data Type Worth Using
  17. Turning Dropwizard Performance up to Eleven
  18. Federal Register Data Exploration with R
  19. Modern Website over HTTP 2 and SSL with Nginx and Let's Encrypt

2015 9

  1. Trading Beauty for Performance: F# active patterns vs Nullable
  2. Most Popular Electron UI Libraries
  3. Disecting the Postgres Bulk Insert and Binary Format
  4. XSLT 2.0 Processing in Postgres
  5. Guide and Explanation for Metrics in Dropwizard
  6. Processing arbitrary amount of data in Python
  7. Getting Started with Dropwizard: Testing
  8. F# and Data go Hand in hand
  9. Writing a Dropwizard JSON App

2014 12

  1. Optimizing Innodb for Bulk Insert
  2. Announcing EU4 Stats
  3. Continuous Integration and Delpoyment with .NET/Mono
  4. C#, Mono, Nuget, Nunit, T4, CI, Oh My!
  5. C# and Threading: Explicit Synchronization isn't Always Needed
  6. Await Async in C# and Why Synchrony is Here to Stay
  7. Deathmark Postmortem: a Game Where Everyone Dies
  8. Migrating from GoDaddy/IIS/WCF/C#/MySQL to DigitalOcean/Apache/Flask/Python/SQLite
  9. Computer Game Development at Michigan: Zelda Postmortem
  10. Computer Game Development at Michigan Week 2: Start of Unity
  11. Computer Game Development at Michigan Week 1: Introduction
  12. Linux Virtualization with a Mounted Windows Share on Client Hyper-V

2013 15

  1. A New Way In Writing Documents With Markdown and Pandoc
  2. Software Engineering Interview Questions that Make an Impact
  3. Distributing and Deploying a Linux Python Application
  4. Design Dilemma: Configuration Files
  5. On Résumés
  6. Design Pattern Dilemma: A Localizable Object
  7. High Performance Unsafe C# Code is a Lie Redux
  8. The Two Extremes of a Startup and a Corporation
  9. The Perfect Blogging Workflow
  10. Premier of Perl and Stocks
  11. Chicago Calls
  12. The Legacy and Opportunity of 1.5 Million Lines of Code
  13. Designing a REST API: Unix time vs ISO-8601
  14. The Joys and Woes of a Forever Project
  15. Adventures with WriteableBitmap and Bit Manipulation

2012 13

  1. Create a Simple Session Aware SSL Bottle Login
  2. A Lesson in Algorithms and Data Structures: the Traveling Salesman
  3. The Devils that are Unsigned Numbers
  4. I Did Not Cheat
  5. Woes of Linux Virtualization on Windows 8
  6. C# Refactoring and Failure
  7. C# For Loops and Iterators Uncovered
  8. NBSoftSolutions Now Runs on Jekyll
  9. ENGR151++: Google AI Challenge
  10. High Performance Unsafe C# Code is a Lie
  11. Optimizing Code and Why We Should All be Language Agnostic
  12. Windows 8: Lesser of the Evil
  13. All Beautiful Code Starts Ugly