All blogs / Software / engineering practice
ntietz.com blog
- Posts
- 218 from 22 Feb 2015 to 17 Jun 2026
- Posting
- monthly (13 in the last year)
- Kind
- personal blog
- Feed
- https://ntietz.com/atom.xml
2026 11
- Where I've been, and the future of this blog
- Let yourself fall down more
- You can't always fix it
- Binding port 0 to avoid port collisions
- TIL: Docker log rotation
- Using an engineering notebook
- Some good English word datasets
- Making niche solutions is the point
- 3D printing my laptop ergonomic setup
- Bayes theorem and how we talk about medical tests
- Reflecting on 2025, preparing for 2026
2025 26
- A new system for organizing my writing and projects
- Automating updates to a digital vigil
- Interview with a new hosting provider founder
- Custom for designing, off-the-shelf for shipping
- Visualizing distributions with pepperoni pizza (and javascript)
- Covers as a way of learning music and code
- That boolean should probably be something else
- Proving that every program halts
- Taking a break
- Measuring my Framework laptop's performance in 3 positions
- The five stages of incident response
- Python is an interpreted language with a compiler
- Typing using my keyboard (the other kind)
- Shadowing in Python gave me an UnboundLocalError
- Big endian and little endian
- Who are your teammates?
- Stewardship over ownership
- Some things that make Rust lifetimes hard to learn
- Your product shouldn't require showing my legal name
- Can I ethically use LLMs?
- What's in a ring buffer? And using them in Rust
- Summarizing our recommendations for software documentation
- Bright lights in dark times
- My writing process, and how I keep it sustainable
- Beginning of a MIDI GUI in Rust
- Great things about Rust that aren't just performance
2024 60
- Reflecting on 2024, preparing for 2025
- Feel, don't think
- Estimating projects sells them short (and that's okay)
- Parsing MIDI messages in Rust
- Evolving my ergonomic setup (or, my laptop with extra steps)
- Terminology isn't universal
- Using Talon in a game jam
- Supporting coworkers, employees, and friends in this time
- Parsing arguments in Rust with no dependencies
- They want your ethics for $105
- Debugging my wife's alarm clock
- Making Rust builds fail from YAML config mistakes
- Licensing can be joyful (and legally dubious)
- Asheville
- Rust needs a web framework for lazy developers
- What I tell people new to on-call
- Personnel update
- Making progress on side projects with content-driven development
- Reasons to write design docs
- Using search as a primary datastore since the docs said not to
- Sometimes, I can't talk
- You should make a new programming language
- First impressions of Gleam: lots of joys and some rough edges
- Integrate rest into your work and practice
- Resting is hard
- TIL: testing in the future using the faketime command
- Approximating the Sierpinski Triangle on my CNC
- Why I kept my startup job for seven years (and counting)
- Testing a WebSocket that could hang open for hours
- TIL: 8 versions of UUID and when to use them
- If it never breaks, you're doing it wrong
- What's hidden behind "just implementation details"
- Affirmations for bloggers
- My portable ergonomic setup
- Instead of "auth", we should say "permissions" and "login"
- Rust's iterators optimize nicely—and contain a footgun
- Getting buy-in to get things done
- I'm hopeful but wary of "empathic" AI
- Gaining depth perception
- The only two log levels you need are INFO and ERROR
- The origin and virtues of semicolons in programming languages
- It's getting hard to use and recommend Firefox, I'm afraid for the free web
- Decaf is good, actually
- Start to finish on self-publishing a technical book
- When to use cute names or descriptive names
- Procrastinating on my side project by torturing databases
- Achieving awful compression with digits of pi
- Work on tasks, not stories
- Building a demo of the Bleichenbacher RSA attack in Rust
- "Help, I see a problem and no one is prioritizing it!"
- Go slow to go fast
- Great management and leadership books for the technical track
- Too much of a good thing: the trade-off we make with tests
- Automating my backups with restic and anacron
- I'm scared, and hopeful, and you can help
- The most important goal in designing software is understandability
- RSA is deceptively simple (and fun)
- Are any of your features the steak on the menu?
- TIL: enabling features on transitive dependencies (Rust)
- I found some of my first code! Annotating and reflecting on robotics code from 2009.
2023 56
- Reflecting on 2023, preparing for 2024
- My reference was dropped, why is the compiler complaining about multiple borrows?
- Three days of Advent of Code in Hurl
- Lessons from implementing Hurl
- Insights and questions from the original waterfall paper
- Profiling Rust programs the easy way
- Why do companies hire people to be idle a lot of the time?
- Building a digital vigil for those we've lost
- Introducing Yet Another Rust Resource (or YARR!)
- Accessibility is a requirement, not a feature
- That time I wrote malware and got caught
- Unpacking some Rust ergonomics: getting a single Result from an iterator of them
- Estimates are about time, so let's cut to the chase
- A student asked how I keep us innovative. I don't.
- What would a web app canary look like?
- Making it fast shouldn't be the last step
- "Help, iterators made my Rust program slower!"
- A systematic approach to debugging
- OpenAI fixed their unsafe policy around names
- Changing my relationship with GitHub Copilot
- The phrase "good enough" isn't fit for purpose
- Writing a basic code formatter
- Fiction as a lens into technological change
- A few weird ways of displaying git hashes
- Throw away your first draft of your code
- Recovering from a lost disk: how I setup, backup, and restore dev machines
- Writing Hurl's grammar, twice
- Impact of remote-code execution vulnerability in LangChain
- Using git mailmap when names change (or you mess up your email)
- Write more "useless" software
- Introducing Hurl, a terrible (but cute) idea for a language
- Optimize sprint points to get nowhere fast
- Units in Go and Rust show philosophical differences
- Email addresses are not primary user identities
- We deserve to know if something was generated by AI
- It's easier to code review Rust than Python
- Visualizing the FIDE World Chess Championship
- Your app doesn't need to know my gender
- You should be using hackdays to supercharge your roadmap
- Rust allows redeclaring local variables to great benefit
- Scheduling visits from the muse
- Feature flags and authorization abstract the same concept
- Coding with LLMs can lead to more and better software
- Different topologies for an org chart, wrong answers only
- Betraying vim for the IDEs of March
- Approximating pi using... a cake?
- Getting people to tell you you're wrong
- If software engineering roles were chess pieces, what would they be?
- What's in my software engineering tool belt?
- A systems design perspective on why chess.com's servers have been melting
- What's the difference between references and pointers in Rust?
- Does technology have a right to exist? (No.)
- Speeding up queries 1000x by sorting my bitmaps
- Why Rust's learning curve seems harsh, and ideas to reduce it
- Names should be cute, not descriptive
- A confusing lifetime error related to Rust's lifetime elision
2022 30
- Reflecting on 2022, Looking Ahead to 2023
- return "reflections on a batch";
- Working with Rust in (neo)vim
- RC Week 12: What's Next, and Speedrunning Crafting Interpreters
- Building Molecule Reader in one day
- RC Week 11: Learning is best when multiplayer
- Tech systems amplify variety and that's a problem
- RC Week 10: Thankful for Family, Missing my Family
- Measuring the overhead of HashMaps in Rust
- RC Week 9: Parallels of Proofs and Programs
- I'm moving my projects off GitHub
- RC Week 8: Life happens, and databases are hard
- Open source licenses as a reflection of values
- RC Week 7: Four habits to improve as a programmer
- Paper review: C-store
- RC Week 6: Halfway done, wrote a parser!
- My first impressions from a few weeks with Lean and Coq
- Paper review: Concurrency Control Performance Modeling
- RC Week 5: Wrapping up projects and starting a new one
- Alpha-beta pruning illustrated by the smothered mate
- RC Week 4: Gratitude and emotions
- Paper review: The Gamma Database Project
- RC Week 3: Returning to Math
- Starting my (overkill) homelab
- Paper Review: Architecture of a Database System
- RC Week 2: Pairing is Awesome
- Rounding in Python
- RC Week 1: Getting Unexpected Extrovert Energy
- I'm taking a sabbatical and attending Recurse Center!
- Running an Effective Book Club at Work