All blogs / Software / engineering practice
Bug Repellent
The blog of @captainsafia
- Posts
- 123 from 22 Sep 2015 to 14 Jan 2026
- Posting
- monthly (12 in the last year)
- Kind
- personal blog
- Feed
- https://blog.safia.rocks/atom.xml
2026 2
2025 19
- Running out of 2025: a retro post
- There's no escaping it: an exploration of ANSI codes
- Fixing Aspire's image problem: a look at container registry support in 13.1
- How does Aspire launch the Azure Functions runtime when you call aspire run?
- Anatomy of an API: an existential crisis with AsExisting()
- Anatomy of an API: three ways to stream with ServerSentEvents()
- Anatomy of an API: the small but mighty MapOpenApi()
- Adventures in over-engineering: using AI to watch my $200 walking pad
- And just like that .NET 10 ships tomorrow
- Pipe dreams to pipeline realities: an Aspire Pipelines story
- How I used AI to redesign Aspire's deploy CLI command
- Cache me if you can: a look at deployment state in Aspire
- The docs write themselves: from XML doc comments to OpenAPI specs
- Design flashpoint: `aspire publish` vs `aspire deploy`
- Verifying the source of (generator) truth
- The anti-prompt shell prompt
- Design flashpoint: Execution modes in Aspire apps
- Building custom deployment pipelines with Aspire
- Git worktrees for fun and profit
2024 1
2022 1
2021 1
2020 4
2018 63
- Advent of Code Day 3
- Eh, ship it!
- Oh gosh, I’m blogging again
- Writing to win friends and influence people
- A purposeful hiatus
- Looking into curl: part 2
- Looking at the curl stack trace: part 1
- Looking at how `curl` works through stack traces
- What happens when you run `sudo !!`?
- Looking at the stack trace for `ls`
- What do `cp` and `mv` do under the hood?
- I finally figured out how Unix redirection works under the hood
- Reveling in redirects: exploring Unix input/output redirection
- What happens when you run `cp` on the command line?
- Peeking into `pwd`
- Unraveling `rm`: what happens when you run it?
- Digging further into the curl code base
- Figuring out how `curl` stores configurations
- Curling up with the `curl` code base
- Breathing room.
- Sliding into security with scrypt
- Answering “How do I write?”
- Doing user interviews while Black
- Back in style: Twitter Bootstrap
- A blast from the past: Node.JS
- Looking at the first commit of Redux
- How does `git add` work under the hood?
- A complete story of what happens when you run `git commit`
- Learning more about how commits are represented in Git
- 36 lessons learned over 3.66 years
- Reading code late at night and realizing that it’s not a good idea
- What’s inside the `.git/objects` directory?
- How does Git know if you have uncommitted changes in the working tree? (Part 1)
- How does Git store working tree state?
- Trying to figure out how git-status works: a saga
- What’s in a git config?
- What’s inside the .git directory?
- Getting into git init
- Looking into ls
- What happens when you run sudo?
- Some thoughts on “productivity”
- Thoughts on Black Panther
- We have no idea what we’re doing.
- How do I get started contributing to open source?
- A retrospective on my tech job search
- Three easy pieces: data science
- Discovering async hooks
- Random thoughts on “heroes”
- In which I answer questions about conference speaking
- Solving a problem then thinking too hard about how you solved the problem
- Tips for reading new codebases
- How do Promises work under the hood?
- Problem solving with Safia: the optimizer’s dilemma
- How I learned to learn
- Node module deep-dive: os
- How does Node load built-in modules?
- How does the Node main process start?
- Node module deep-dive: EventEmitter
- How does process.binding() in Node work?
- Node module deep-dive: fs
- Node module deep-dive: child_process
- Node module deep-dive: module
- How to (re-)launch a product
2017 13
- Things I learned in 2017
- Vacuuming your app
- What I learned when I tried to hack my smart vibrator
- Node module deep-dive: Buffer
- My grandmother passed away today.
- Node module deep-dive: console
- Node module deep-dive: WriteableStream
- How to monetize open source
- Node module deep-dive: path
- Some ramblings on the future of web content
- Node module deep-dive: querystring
- Rules of engagement in an open source issue board
- Evangelizing for open source
2016 15
- So you wanna open source a project, eh?
- Open source: the other side of the contract
- The data fiend’s dilemma
- Micromaking kindness: an experiment
- How To Create A Welcoming and Inclusive Open Source Space
- Hacking My To-do List
- Programmers, Assemble!
- The Good, The Bad, The Unwanted
- 6 non-code contributions you can make to open source
- Businesswoman Tips
- Future Fallacies
- Thanks for the Compliment!
- T is for Transitions
- The Definitive Story of How I Got Into Tech
- The Zen of Safia