<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Bug Repellent</title><description>The blog of @captainsafia</description><link>http://blog.safia.rocks/</link><language>en-us</language><item><title>How does Aspire expose resource connection info to the Azure Functions runtime?</title><link>http://blog.safia.rocks/2026/01/14/aspire-functions-references/</link><guid isPermaLink="true">http://blog.safia.rocks/2026/01/14/aspire-functions-references/</guid><description>A deep dive into IResourceWithAzureFunctionsConfig and how it enables Aspire to inject the right connection string references that Azure Functions expects.</description><pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Reporting for duty: the story of IPipelineActivityReporter</title><link>http://blog.safia.rocks/2026/01/08/publishing-activity-reporter/</link><guid isPermaLink="true">http://blog.safia.rocks/2026/01/08/publishing-activity-reporter/</guid><description>The story of how Aspire&apos;s activity reporting API evolved from sequential progress reporting to a concurrency-aware system that powers the deployment pipeline.</description><pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Running out of 2025: a retro post</title><link>http://blog.safia.rocks/2025/12/31/end-of-year/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/12/31/end-of-year/</guid><description>A look back at the year: blogging comebacks, principal engineer life, AI-assisted side projects, and gearing up to say goodbye to my 20s.</description><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate></item><item><title>There&apos;s no escaping it: an exploration of ANSI codes</title><link>http://blog.safia.rocks/2025/12/22/ansi-codes/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/12/22/ansi-codes/</guid><description>A brief history of ANSI escape codes, how they work under the hood, and why this decades-old standard still makes your terminal colorful today.</description><pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Fixing Aspire&apos;s image problem: a look at container registry support in 13.1</title><link>http://blog.safia.rocks/2025/12/15/aspire-image-push/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/12/15/aspire-image-push/</guid><description>Exploring the improvements to custom image registry support in Aspire 13.1, and why explicit modeling beats implicit behavior.</description><pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate></item><item><title>How does Aspire launch the Azure Functions runtime when you call aspire run?</title><link>http://blog.safia.rocks/2025/12/02/aspire-run-azure-functions/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/12/02/aspire-run-azure-functions/</guid><description>A behind-the-scenes look at how Aspire launches the Azure Functions runtime locally, leveraging a clever .NET SDK feature to make it all work seamlessly.</description><pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Anatomy of an API: an existential crisis with AsExisting()</title><link>http://blog.safia.rocks/2025/12/01/api-anatomy-asexisting/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/12/01/api-anatomy-asexisting/</guid><description>A blog post dissecting Aspire&apos;s RunAsExisting, PublishAsExisting, and AsExisting APIs, why the naming haunts me, and what I would&apos;ve done differently if I could turn back time.</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Anatomy of an API: three ways to stream with ServerSentEvents()</title><link>http://blog.safia.rocks/2025/11/24/api-anatomy-server-sent-events/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/11/24/api-anatomy-server-sent-events/</guid><description>A blog post exploring why minimal API&apos;s TypedResults.ServerSentEvents() has three different overloads, what each one does, and how to avoid mixing them up when you&apos;re streaming data to clients.</description><pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Anatomy of an API: the small but mighty MapOpenApi()</title><link>http://blog.safia.rocks/2025/11/20/api-anatomy-mapopenapi/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/11/20/api-anatomy-mapopenapi/</guid><description>A deep dive into the design decisions behind ASP.NET Core&apos;s MapOpenApi() method exploring why it&apos;s modeled as an endpoint, how route templating enables YAML support, and the thoughtful details that make this tiny API so powerful.</description><pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Adventures in over-engineering: using AI to watch my $200 walking pad</title><link>http://blog.safia.rocks/2025/11/17/treadmill-overengineering/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/11/17/treadmill-overengineering/</guid><description>How I used computer vision and GPT-4o to extract fitness stats from my walking pad&apos;s LED display, because wearing an Apple Watch on your ankle is for quitters.</description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate></item><item><title>And just like that .NET 10 ships tomorrow</title><link>http://blog.safia.rocks/2025/11/10/aspnetcore-ten/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/11/10/aspnetcore-ten/</guid><description>A look at key ASP.NET Core features shipping in .NET 10, including: model validation for Minimal APIs, OpenAPI 3.1 support with unified JSON Schema, improved integration testing with top-level programs, and new browser testing capabilities with WebApplicationFactory.</description><pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Pipe dreams to pipeline realities: an Aspire Pipelines story</title><link>http://blog.safia.rocks/2025/11/03/aspire-pipelines/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/11/03/aspire-pipelines/</guid><description>The behind-the-scenes chronicles of building Aspire&apos;s pipelines feature: from basic callbacks and progress reporting to a full-on concurrent pipeline concept.</description><pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate></item><item><title>How I used AI to redesign Aspire&apos;s deploy CLI command</title><link>http://blog.safia.rocks/2025/10/27/aspire-deploy-cli-ux/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/10/27/aspire-deploy-cli-ux/</guid><description>How I used Claude and Copilot to design the Aspire deploy CLI, moving from sequential steps to a concurrent-ready design that works in both interactive and CI/CD environments.</description><pubDate>Mon, 27 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Cache me if you can: a look at deployment state in Aspire</title><link>http://blog.safia.rocks/2025/10/20/aspire-deployment-state/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/10/20/aspire-deployment-state/</guid><description>Exploring the new deployment state caching feature in .NET Aspire that eliminates repetitive prompting during deployments and lays the foundation for more sophisticated deployment workflows and CI/CD integration.</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate></item><item><title>The docs write themselves: from XML doc comments to OpenAPI specs</title><link>http://blog.safia.rocks/2025/10/13/openapi-xml-generator/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/10/13/openapi-xml-generator/</guid><description>A deep dive into implementing XML documentation comment integration for ASP.NET Core&apos;s OpenAPI generator, exploring the technical challenges of bridging compile-time XML docs with runtime OpenAPI generation using source generators for AoT-friendly API documentation.</description><pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Design flashpoint: `aspire publish` vs `aspire deploy`</title><link>http://blog.safia.rocks/2025/10/06/aspire-publish-vs-deploy/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/10/06/aspire-publish-vs-deploy/</guid><description>Exploring the design decisions behind aspire publish and aspire deploy commands, and how they balance between ejecting from the Aspire ecosystem versus providing fine-grained deployment control.</description><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Verifying the source of (generator) truth</title><link>http://blog.safia.rocks/2025/09/29/source-generators-testing/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/09/29/source-generators-testing/</guid><description>A deep dive into testing infrastructure I built for incremental .NET source generators, covering compile-time validation, runtime behavior verification, and incremental compilation testing.</description><pubDate>Mon, 29 Sep 2025 00:00:00 GMT</pubDate></item><item><title>The anti-prompt shell prompt</title><link>http://blog.safia.rocks/2025/09/22/anti-prompt/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/09/22/anti-prompt/</guid><description>Embrace tradition, reject modernity, let go of that noisy crap in your shell.</description><pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Design flashpoint: Execution modes in Aspire apps</title><link>http://blog.safia.rocks/2025/09/15/aspire-modes/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/09/15/aspire-modes/</guid><description>Why Aspire has run-mode and publish-mode but no deploy-mode, and what this reveals about API design trade-offs in distributed applications.</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Building custom deployment pipelines with Aspire</title><link>http://blog.safia.rocks/2025/09/07/aspire-deploy/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/09/07/aspire-deploy/</guid><description>A blog post about how to use Aspire to deploy a static site to Azure Storage with Azure Front Door as a CDN and some exploration of Aspire&apos;s evolving deployment abstractions.</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Git worktrees for fun and profit</title><link>http://blog.safia.rocks/2025/09/03/git-worktrees/</link><guid isPermaLink="true">http://blog.safia.rocks/2025/09/03/git-worktrees/</guid><pubDate>Wed, 03 Sep 2025 00:00:00 GMT</pubDate></item><item><title>A deep dive into OpenAPI support in ASP.NET Core</title><link>http://blog.safia.rocks/2024/05/27/openapi-in-aspnetcore/</link><guid isPermaLink="true">http://blog.safia.rocks/2024/05/27/openapi-in-aspnetcore/</guid><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate></item><item><title>A deep dive into endpoint filters in ASP.NET Core 7</title><link>http://blog.safia.rocks/2022/10/19/endpoint-filters-exploration/</link><guid isPermaLink="true">http://blog.safia.rocks/2022/10/19/endpoint-filters-exploration/</guid><pubDate>Wed, 19 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Parameter optionality in Minimal APIs</title><link>http://blog.safia.rocks/2021/08/21/minimal-apis-optionality/</link><guid isPermaLink="true">http://blog.safia.rocks/2021/08/21/minimal-apis-optionality/</guid><pubDate>Sat, 21 Aug 2021 00:00:00 GMT</pubDate></item><item><title>Under the hood with debugging in Blazor WebAssembly</title><link>http://blog.safia.rocks/2020/11/10/blazor-wasm-debugging/</link><guid isPermaLink="true">http://blog.safia.rocks/2020/11/10/blazor-wasm-debugging/</guid><pubDate>Tue, 10 Nov 2020 05:00:00 GMT</pubDate></item><item><title>Rolling in render trees</title><link>http://blog.safia.rocks/2020/10/27/rolling-in-render-trees/</link><guid isPermaLink="true">http://blog.safia.rocks/2020/10/27/rolling-in-render-trees/</guid><pubDate>Mon, 26 Oct 2020 05:00:00 GMT</pubDate></item><item><title>Combing through ComponentBase</title><link>http://blog.safia.rocks/2020/10/14/combing-through-component-base/</link><guid isPermaLink="true">http://blog.safia.rocks/2020/10/14/combing-through-component-base/</guid><pubDate>Wed, 14 Oct 2020 00:00:00 GMT</pubDate></item><item><title>Under the hood with routing in Blazor</title><link>http://blog.safia.rocks/2020/10/08/routing-in-blazor/</link><guid isPermaLink="true">http://blog.safia.rocks/2020/10/08/routing-in-blazor/</guid><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate></item><item><title>Advent of Code Day 3</title><link>http://blog.safia.rocks/2018/12/03/advent-of-code-day-3/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/12/03/advent-of-code-day-3/</guid><pubDate>Tue, 04 Dec 2018 03:39:23 GMT</pubDate></item><item><title>Eh, ship it!</title><link>http://blog.safia.rocks/2018/12/02/eh-ship-it/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/12/02/eh-ship-it/</guid><pubDate>Mon, 03 Dec 2018 03:38:33 GMT</pubDate></item><item><title>Oh gosh, I’m blogging again</title><link>http://blog.safia.rocks/2018/12/01/oh-gosh-im-blogging-again/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/12/01/oh-gosh-im-blogging-again/</guid><pubDate>Sat, 01 Dec 2018 21:24:03 GMT</pubDate></item><item><title>Writing to win friends and influence people</title><link>http://blog.safia.rocks/2018/09/19/writing-to-win-friends-and-influence-people/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/09/19/writing-to-win-friends-and-influence-people/</guid><pubDate>Thu, 20 Sep 2018 05:05:51 GMT</pubDate></item><item><title>A purposeful hiatus</title><link>http://blog.safia.rocks/2018/05/18/a-purposeful-hiatus/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/18/a-purposeful-hiatus/</guid><pubDate>Fri, 18 May 2018 15:15:54 GMT</pubDate></item><item><title>Looking into curl: part 2</title><link>http://blog.safia.rocks/2018/05/16/looking-into-curl-part-2/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/16/looking-into-curl-part-2/</guid><pubDate>Thu, 17 May 2018 00:57:17 GMT</pubDate></item><item><title>Looking at the curl stack trace: part 1</title><link>http://blog.safia.rocks/2018/05/14/looking-at-the-curl-stack-trace-part-1/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/14/looking-at-the-curl-stack-trace-part-1/</guid><pubDate>Mon, 14 May 2018 17:00:46 GMT</pubDate></item><item><title>Looking at how `curl` works through stack traces</title><link>http://blog.safia.rocks/2018/05/11/looking-at-how-curl-works-through-stack-traces/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/11/looking-at-how-curl-works-through-stack-traces/</guid><pubDate>Fri, 11 May 2018 18:01:11 GMT</pubDate></item><item><title>What happens when you run `sudo !!`?</title><link>http://blog.safia.rocks/2018/05/09/what-happens-when-you-run-sudo/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/09/what-happens-when-you-run-sudo/</guid><pubDate>Thu, 10 May 2018 00:03:32 GMT</pubDate></item><item><title>Looking at the stack trace for `ls`</title><link>http://blog.safia.rocks/2018/05/07/looking-at-the-stack-trace-for-ls/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/07/looking-at-the-stack-trace-for-ls/</guid><pubDate>Mon, 07 May 2018 14:58:01 GMT</pubDate></item><item><title>What do `cp` and `mv` do under the hood?</title><link>http://blog.safia.rocks/2018/05/04/what-do-cp-and-mv-do-under-the-hood/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/04/what-do-cp-and-mv-do-under-the-hood/</guid><pubDate>Fri, 04 May 2018 15:27:29 GMT</pubDate></item><item><title>I finally figured out how Unix redirection works under the hood</title><link>http://blog.safia.rocks/2018/05/02/i-finally-figured-out-how-unix-redirection-works/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/05/02/i-finally-figured-out-how-unix-redirection-works/</guid><pubDate>Thu, 03 May 2018 01:48:51 GMT</pubDate></item><item><title>Reveling in redirects: exploring Unix input/output redirection</title><link>http://blog.safia.rocks/2018/04/30/reveling-in-redirects-exploring-unix-inputoutput/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/30/reveling-in-redirects-exploring-unix-inputoutput/</guid><pubDate>Tue, 01 May 2018 00:42:38 GMT</pubDate></item><item><title>What happens when you run `cp` on the command line?</title><link>http://blog.safia.rocks/2018/04/27/what-happens-when-you-run-cp-on-the-command/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/27/what-happens-when-you-run-cp-on-the-command/</guid><pubDate>Sat, 28 Apr 2018 00:13:35 GMT</pubDate></item><item><title>Peeking into `pwd`</title><link>http://blog.safia.rocks/2018/04/25/peeking-into-pwd/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/25/peeking-into-pwd/</guid><pubDate>Thu, 26 Apr 2018 03:41:29 GMT</pubDate></item><item><title>Unraveling `rm`: what happens when you run it?</title><link>http://blog.safia.rocks/2018/04/23/unraveling-rm-what-happens-when-you-run-it/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/23/unraveling-rm-what-happens-when-you-run-it/</guid><pubDate>Tue, 24 Apr 2018 02:05:37 GMT</pubDate></item><item><title>Digging further into the curl code base</title><link>http://blog.safia.rocks/2018/04/20/digging-further-into-the-curl-code-base/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/20/digging-further-into-the-curl-code-base/</guid><pubDate>Sat, 21 Apr 2018 02:25:10 GMT</pubDate></item><item><title>Figuring out how `curl` stores configurations</title><link>http://blog.safia.rocks/2018/04/18/figuring-out-how-curl-stores-configurations/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/18/figuring-out-how-curl-stores-configurations/</guid><pubDate>Wed, 18 Apr 2018 18:25:32 GMT</pubDate></item><item><title>Curling up with the `curl` code base</title><link>http://blog.safia.rocks/2018/04/16/curling-up-with-the-curl-code-base/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/16/curling-up-with-the-curl-code-base/</guid><pubDate>Mon, 16 Apr 2018 17:07:15 GMT</pubDate></item><item><title>Breathing room.</title><link>http://blog.safia.rocks/2018/04/13/breathing-room/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/13/breathing-room/</guid><pubDate>Fri, 13 Apr 2018 21:13:17 GMT</pubDate></item><item><title>Sliding into security with scrypt</title><link>http://blog.safia.rocks/2018/04/11/sliding-into-security-with-scrypt/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/11/sliding-into-security-with-scrypt/</guid><pubDate>Wed, 11 Apr 2018 16:34:19 GMT</pubDate></item><item><title>Answering “How do I write?”</title><link>http://blog.safia.rocks/2018/04/09/answering-how-do-i-write/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/09/answering-how-do-i-write/</guid><pubDate>Mon, 09 Apr 2018 18:53:06 GMT</pubDate></item><item><title>Doing user interviews while Black</title><link>http://blog.safia.rocks/2018/04/06/doing-user-interviews-while-black/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/06/doing-user-interviews-while-black/</guid><pubDate>Fri, 06 Apr 2018 16:15:59 GMT</pubDate></item><item><title>Back in style: Twitter Bootstrap</title><link>http://blog.safia.rocks/2018/04/04/back-in-style-twitter-bootstrap/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/04/back-in-style-twitter-bootstrap/</guid><pubDate>Wed, 04 Apr 2018 16:46:57 GMT</pubDate></item><item><title>A blast from the past: Node.JS</title><link>http://blog.safia.rocks/2018/04/02/a-blast-from-the-past-nodejs/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/04/02/a-blast-from-the-past-nodejs/</guid><pubDate>Mon, 02 Apr 2018 16:18:50 GMT</pubDate></item><item><title>Looking at the first commit of Redux</title><link>http://blog.safia.rocks/2018/03/30/looking-at-the-first-commit-of-redux/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/30/looking-at-the-first-commit-of-redux/</guid><pubDate>Fri, 30 Mar 2018 16:06:43 GMT</pubDate></item><item><title>How does `git add` work under the hood?</title><link>http://blog.safia.rocks/2018/03/28/how-does-git-add-work-under-the-hood/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/28/how-does-git-add-work-under-the-hood/</guid><pubDate>Wed, 28 Mar 2018 16:37:59 GMT</pubDate></item><item><title>A complete story of what happens when you run `git commit`</title><link>http://blog.safia.rocks/2018/03/26/a-complete-story-of-what-happens-when-you-run-git/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/26/a-complete-story-of-what-happens-when-you-run-git/</guid><pubDate>Mon, 26 Mar 2018 16:06:31 GMT</pubDate></item><item><title>Learning more about how commits are represented in Git</title><link>http://blog.safia.rocks/2018/03/23/learning-more-about-how-commits-are-represented-in/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/23/learning-more-about-how-commits-are-represented-in/</guid><pubDate>Fri, 23 Mar 2018 16:43:49 GMT</pubDate></item><item><title>36 lessons learned over 3.66 years</title><link>http://blog.safia.rocks/2018/03/21/36-lessons-learned-over-366-years/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/21/36-lessons-learned-over-366-years/</guid><pubDate>Wed, 21 Mar 2018 17:00:45 GMT</pubDate></item><item><title>Reading code late at night and realizing that it’s not a good idea</title><link>http://blog.safia.rocks/2018/03/19/reading-code-late-at-night-and-realizing-that-its/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/19/reading-code-late-at-night-and-realizing-that-its/</guid><pubDate>Mon, 19 Mar 2018 15:49:01 GMT</pubDate></item><item><title>What’s inside the `.git/objects` directory?</title><link>http://blog.safia.rocks/2018/03/16/whats-inside-the-gitobjects-directory/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/16/whats-inside-the-gitobjects-directory/</guid><pubDate>Fri, 16 Mar 2018 17:00:45 GMT</pubDate></item><item><title>How does Git know if you have uncommitted changes in the working tree? (Part 1)</title><link>http://blog.safia.rocks/2018/03/14/how-does-git-know-if-you-have-uncommitted-changes/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/14/how-does-git-know-if-you-have-uncommitted-changes/</guid><pubDate>Wed, 14 Mar 2018 17:41:00 GMT</pubDate></item><item><title>How does Git store working tree state?</title><link>http://blog.safia.rocks/2018/03/12/how-does-git-store-working-tree-state/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/12/how-does-git-store-working-tree-state/</guid><pubDate>Mon, 12 Mar 2018 16:30:43 GMT</pubDate></item><item><title>Trying to figure out how git-status works: a saga</title><link>http://blog.safia.rocks/2018/03/09/trying-to-figure-out-how-git-status-works-a-saga/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/09/trying-to-figure-out-how-git-status-works-a-saga/</guid><pubDate>Fri, 09 Mar 2018 17:08:47 GMT</pubDate></item><item><title>What’s in a git config?</title><link>http://blog.safia.rocks/2018/03/07/whats-in-a-git-config/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/07/whats-in-a-git-config/</guid><pubDate>Wed, 07 Mar 2018 16:30:26 GMT</pubDate></item><item><title>What’s inside the .git directory?</title><link>http://blog.safia.rocks/2018/03/05/whats-inside-the-git-directory/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/05/whats-inside-the-git-directory/</guid><pubDate>Mon, 05 Mar 2018 18:01:10 GMT</pubDate></item><item><title>Getting into git init</title><link>http://blog.safia.rocks/2018/03/02/getting-into-git-init/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/03/02/getting-into-git-init/</guid><pubDate>Fri, 02 Mar 2018 16:03:00 GMT</pubDate></item><item><title>Looking into ls</title><link>http://blog.safia.rocks/2018/02/28/looking-into-ls/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/28/looking-into-ls/</guid><pubDate>Wed, 28 Feb 2018 17:37:03 GMT</pubDate></item><item><title>What happens when you run sudo?</title><link>http://blog.safia.rocks/2018/02/23/what-happens-when-you-run-sudo/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/23/what-happens-when-you-run-sudo/</guid><pubDate>Fri, 23 Feb 2018 17:19:30 GMT</pubDate></item><item><title>Some thoughts on “productivity”</title><link>http://blog.safia.rocks/2018/02/21/some-thoughts-on-productivity/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/21/some-thoughts-on-productivity/</guid><pubDate>Wed, 21 Feb 2018 16:54:40 GMT</pubDate></item><item><title>Thoughts on Black Panther</title><link>http://blog.safia.rocks/2018/02/19/thoughts-on-black-panther/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/19/thoughts-on-black-panther/</guid><pubDate>Mon, 19 Feb 2018 17:12:14 GMT</pubDate></item><item><title>We have no idea what we’re doing.</title><link>http://blog.safia.rocks/2018/02/16/we-have-no-idea-what-were-doing/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/16/we-have-no-idea-what-were-doing/</guid><pubDate>Fri, 16 Feb 2018 18:30:44 GMT</pubDate></item><item><title>How do I get started contributing to open source?</title><link>http://blog.safia.rocks/2018/02/14/how-do-i-get-started-contributing-to-open-source/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/14/how-do-i-get-started-contributing-to-open-source/</guid><pubDate>Wed, 14 Feb 2018 23:04:37 GMT</pubDate></item><item><title>A retrospective on my tech job search</title><link>http://blog.safia.rocks/2018/02/12/a-retrospective-on-my-tech-job-search/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/12/a-retrospective-on-my-tech-job-search/</guid><pubDate>Mon, 12 Feb 2018 18:40:31 GMT</pubDate></item><item><title>Three easy pieces: data science</title><link>http://blog.safia.rocks/2018/02/09/three-easy-pieces-data-science/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/09/three-easy-pieces-data-science/</guid><pubDate>Fri, 09 Feb 2018 18:45:05 GMT</pubDate></item><item><title>Discovering async hooks</title><link>http://blog.safia.rocks/2018/02/07/discovering-async-hooks/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/07/discovering-async-hooks/</guid><pubDate>Wed, 07 Feb 2018 18:15:04 GMT</pubDate></item><item><title>Random thoughts on “heroes”</title><link>http://blog.safia.rocks/2018/02/05/random-thoughts-on-heroes/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/05/random-thoughts-on-heroes/</guid><pubDate>Mon, 05 Feb 2018 18:30:42 GMT</pubDate></item><item><title>In which I answer questions about conference speaking</title><link>http://blog.safia.rocks/2018/02/02/in-which-i-answer-questions-about-conference/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/02/02/in-which-i-answer-questions-about-conference/</guid><pubDate>Fri, 02 Feb 2018 17:34:20 GMT</pubDate></item><item><title>Solving a problem then thinking too hard about how you solved the problem</title><link>http://blog.safia.rocks/2018/01/31/solving-a-problem-then-thinking-too-hard-about-how/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/31/solving-a-problem-then-thinking-too-hard-about-how/</guid><pubDate>Wed, 31 Jan 2018 18:03:06 GMT</pubDate></item><item><title>Tips for reading new codebases</title><link>http://blog.safia.rocks/2018/01/29/tips-for-reading-new-codebases/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/29/tips-for-reading-new-codebases/</guid><pubDate>Mon, 29 Jan 2018 18:00:54 GMT</pubDate></item><item><title>How do Promises work under the hood?</title><link>http://blog.safia.rocks/2018/01/26/how-do-promises-work-under-the-hood/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/26/how-do-promises-work-under-the-hood/</guid><pubDate>Fri, 26 Jan 2018 18:27:44 GMT</pubDate></item><item><title>Problem solving with Safia: the optimizer’s dilemma</title><link>http://blog.safia.rocks/2018/01/24/problem-solving-with-safia-the/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/24/problem-solving-with-safia-the/</guid><pubDate>Wed, 24 Jan 2018 18:11:51 GMT</pubDate></item><item><title>How I learned to learn</title><link>http://blog.safia.rocks/2018/01/22/how-i-learned-to-learn/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/22/how-i-learned-to-learn/</guid><pubDate>Mon, 22 Jan 2018 18:23:55 GMT</pubDate></item><item><title>Node module deep-dive: os</title><link>http://blog.safia.rocks/2018/01/19/node-module-deep-dive-os/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/19/node-module-deep-dive-os/</guid><pubDate>Fri, 19 Jan 2018 18:00:27 GMT</pubDate></item><item><title>How does Node load built-in modules?</title><link>http://blog.safia.rocks/2018/01/17/how-does-node-load-built-in-modules/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/17/how-does-node-load-built-in-modules/</guid><pubDate>Wed, 17 Jan 2018 17:51:26 GMT</pubDate></item><item><title>How does the Node main process start?</title><link>http://blog.safia.rocks/2018/01/15/how-does-the-node-main-process-start/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/15/how-does-the-node-main-process-start/</guid><pubDate>Mon, 15 Jan 2018 17:21:07 GMT</pubDate></item><item><title>Node module deep-dive: EventEmitter</title><link>http://blog.safia.rocks/2018/01/12/node-module-deep-dive-eventemitter/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/12/node-module-deep-dive-eventemitter/</guid><pubDate>Fri, 12 Jan 2018 16:58:35 GMT</pubDate></item><item><title>How does process.binding() in Node work?</title><link>http://blog.safia.rocks/2018/01/10/how-does-processbinding-in-node-work/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/10/how-does-processbinding-in-node-work/</guid><pubDate>Wed, 10 Jan 2018 17:05:54 GMT</pubDate></item><item><title>Node module deep-dive: fs</title><link>http://blog.safia.rocks/2018/01/08/node-module-deep-dive-fs/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/08/node-module-deep-dive-fs/</guid><pubDate>Mon, 08 Jan 2018 17:18:39 GMT</pubDate></item><item><title>Node module deep-dive: child_process</title><link>http://blog.safia.rocks/2018/01/05/node-module-deep-dive-childprocess/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/05/node-module-deep-dive-childprocess/</guid><pubDate>Fri, 05 Jan 2018 17:03:09 GMT</pubDate></item><item><title>Node module deep-dive: module</title><link>http://blog.safia.rocks/2018/01/03/node-module-deep-dive-module/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/03/node-module-deep-dive-module/</guid><pubDate>Wed, 03 Jan 2018 17:31:25 GMT</pubDate></item><item><title>How to (re-)launch a product</title><link>http://blog.safia.rocks/2018/01/01/how-to-re-launch-a-product/</link><guid isPermaLink="true">http://blog.safia.rocks/2018/01/01/how-to-re-launch-a-product/</guid><pubDate>Mon, 01 Jan 2018 17:19:42 GMT</pubDate></item><item><title>Things I learned in 2017</title><link>http://blog.safia.rocks/2017/12/29/things-i-learned-in-2017/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/12/29/things-i-learned-in-2017/</guid><pubDate>Fri, 29 Dec 2017 19:16:31 GMT</pubDate></item><item><title>Vacuuming your app</title><link>http://blog.safia.rocks/2017/12/27/vacuuming-your-app/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/12/27/vacuuming-your-app/</guid><pubDate>Wed, 27 Dec 2017 17:53:00 GMT</pubDate></item><item><title>What I learned when I tried to hack my smart vibrator</title><link>http://blog.safia.rocks/2017/12/11/what-i-learned-when-i-tried-to-hack-my-smart/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/12/11/what-i-learned-when-i-tried-to-hack-my-smart/</guid><pubDate>Mon, 11 Dec 2017 17:37:45 GMT</pubDate></item><item><title>Node module deep-dive: Buffer</title><link>http://blog.safia.rocks/2017/12/04/node-module-deep-dive-buffer/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/12/04/node-module-deep-dive-buffer/</guid><pubDate>Mon, 04 Dec 2017 09:50:11 GMT</pubDate></item><item><title>My grandmother passed away today.</title><link>http://blog.safia.rocks/2017/11/30/my-grandmother-passed-away-today/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/30/my-grandmother-passed-away-today/</guid><pubDate>Thu, 30 Nov 2017 23:25:29 GMT</pubDate></item><item><title>Node module deep-dive: console</title><link>http://blog.safia.rocks/2017/11/27/node-module-deep-dive-console/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/27/node-module-deep-dive-console/</guid><pubDate>Mon, 27 Nov 2017 18:00:41 GMT</pubDate></item><item><title>Node module deep-dive: WriteableStream</title><link>http://blog.safia.rocks/2017/11/20/node-module-deep-dive-writeablestream/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/20/node-module-deep-dive-writeablestream/</guid><pubDate>Mon, 20 Nov 2017 18:00:50 GMT</pubDate></item><item><title>How to monetize open source</title><link>http://blog.safia.rocks/2017/11/17/how-to-monetize-open-source/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/17/how-to-monetize-open-source/</guid><pubDate>Fri, 17 Nov 2017 18:00:38 GMT</pubDate></item><item><title>Node module deep-dive: path</title><link>http://blog.safia.rocks/2017/11/13/node-module-deep-dive-path/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/13/node-module-deep-dive-path/</guid><pubDate>Mon, 13 Nov 2017 18:00:59 GMT</pubDate></item><item><title>Some ramblings on the future of web content</title><link>http://blog.safia.rocks/2017/11/10/some-ramblings-on-the-future-of-web-content/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/10/some-ramblings-on-the-future-of-web-content/</guid><pubDate>Fri, 10 Nov 2017 18:00:29 GMT</pubDate></item><item><title>Node module deep-dive: querystring</title><link>http://blog.safia.rocks/2017/11/06/node-module-deep-dive-querystring/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/06/node-module-deep-dive-querystring/</guid><pubDate>Mon, 06 Nov 2017 18:00:56 GMT</pubDate></item><item><title>Rules of engagement in an open source issue board</title><link>http://blog.safia.rocks/2017/11/03/rules-of-engagement-in-an-open-source-issue-board/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/11/03/rules-of-engagement-in-an-open-source-issue-board/</guid><pubDate>Fri, 03 Nov 2017 18:01:09 GMT</pubDate></item><item><title>Evangelizing for open source</title><link>http://blog.safia.rocks/2017/10/30/evangelizing-for-open-source/</link><guid isPermaLink="true">http://blog.safia.rocks/2017/10/30/evangelizing-for-open-source/</guid><pubDate>Mon, 30 Oct 2017 18:01:45 GMT</pubDate></item><item><title>So you wanna open source a project, eh?</title><link>http://blog.safia.rocks/2016/12/06/so-you-wanna-open-source-a-project-eh/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/12/06/so-you-wanna-open-source-a-project-eh/</guid><pubDate>Tue, 06 Dec 2016 20:42:10 GMT</pubDate></item><item><title>Open source: the other side of the contract</title><link>http://blog.safia.rocks/2016/12/03/open-source-the-other-side-of-the-contract/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/12/03/open-source-the-other-side-of-the-contract/</guid><pubDate>Sun, 04 Dec 2016 06:30:23 GMT</pubDate></item><item><title>The data fiend’s dilemma</title><link>http://blog.safia.rocks/2016/11/28/the-data-fiends-dilemma/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/11/28/the-data-fiends-dilemma/</guid><pubDate>Tue, 29 Nov 2016 06:43:14 GMT</pubDate></item><item><title>Micromaking kindness: an experiment</title><link>http://blog.safia.rocks/2016/11/26/micromaking-kindness-an-experiment/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/11/26/micromaking-kindness-an-experiment/</guid><pubDate>Sun, 27 Nov 2016 00:14:23 GMT</pubDate></item><item><title>How To Create A Welcoming and Inclusive Open Source Space</title><link>http://blog.safia.rocks/2016/03/30/how-to-create-a-welcoming-and-inclusive-open/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/03/30/how-to-create-a-welcoming-and-inclusive-open/</guid><pubDate>Wed, 30 Mar 2016 22:28:01 GMT</pubDate></item><item><title>Hacking My To-do List</title><link>http://blog.safia.rocks/2016/03/14/hacking-my-to-do-list/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/03/14/hacking-my-to-do-list/</guid><pubDate>Mon, 14 Mar 2016 11:39:22 GMT</pubDate></item><item><title>Programmers, Assemble!</title><link>http://blog.safia.rocks/2016/02/15/programmers-assemble/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/02/15/programmers-assemble/</guid><pubDate>Mon, 15 Feb 2016 17:26:28 GMT</pubDate></item><item><title>The Good, The Bad, The Unwanted</title><link>http://blog.safia.rocks/2016/02/08/the-good-the-bad-the-unwanted/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/02/08/the-good-the-bad-the-unwanted/</guid><pubDate>Mon, 08 Feb 2016 17:37:33 GMT</pubDate></item><item><title>6 non-code contributions you can make to open source</title><link>http://blog.safia.rocks/2016/02/07/6-non-code-contributions-you-can-make-to-open/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/02/07/6-non-code-contributions-you-can-make-to-open/</guid><pubDate>Mon, 08 Feb 2016 04:43:47 GMT</pubDate></item><item><title>Businesswoman Tips</title><link>http://blog.safia.rocks/2016/02/03/businesswoman-tips/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/02/03/businesswoman-tips/</guid><pubDate>Thu, 04 Feb 2016 06:08:02 GMT</pubDate></item><item><title>Future Fallacies</title><link>http://blog.safia.rocks/2016/01/30/future-fallacies/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/01/30/future-fallacies/</guid><pubDate>Sat, 30 Jan 2016 21:31:30 GMT</pubDate></item><item><title>Thanks for the Compliment!</title><link>http://blog.safia.rocks/2016/01/09/thanks-for-the-compliment/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/01/09/thanks-for-the-compliment/</guid><pubDate>Sun, 10 Jan 2016 00:51:48 GMT</pubDate></item><item><title>T is for Transitions</title><link>http://blog.safia.rocks/2016/01/07/t-is-for-transitions/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/01/07/t-is-for-transitions/</guid><pubDate>Fri, 08 Jan 2016 03:07:43 GMT</pubDate></item><item><title>The Definitive Story of How I Got Into Tech</title><link>http://blog.safia.rocks/2016/01/04/the-definitive-story-of-how-i-got-into-tech/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/01/04/the-definitive-story-of-how-i-got-into-tech/</guid><pubDate>Tue, 05 Jan 2016 01:12:15 GMT</pubDate></item><item><title>The Zen of Safia</title><link>http://blog.safia.rocks/2016/01/02/the-zen-of-safia/</link><guid isPermaLink="true">http://blog.safia.rocks/2016/01/02/the-zen-of-safia/</guid><pubDate>Sat, 02 Jan 2016 21:52:49 GMT</pubDate></item><item><title>What 2015 Taught Me About Running a Startup</title><link>http://blog.safia.rocks/2015/12/30/what-2015-taught-me-about-running-a-startup/</link><guid isPermaLink="true">http://blog.safia.rocks/2015/12/30/what-2015-taught-me-about-running-a-startup/</guid><pubDate>Thu, 31 Dec 2015 01:18:26 GMT</pubDate></item><item><title>How will the children of the future learn about science?</title><link>http://blog.safia.rocks/2015/12/27/how-will-the-children-of-the-future-learn-about/</link><guid isPermaLink="true">http://blog.safia.rocks/2015/12/27/how-will-the-children-of-the-future-learn-about/</guid><pubDate>Sun, 27 Dec 2015 18:47:55 GMT</pubDate></item><item><title>Let’s Hear It For Small Data</title><link>http://blog.safia.rocks/2015/12/13/lets-hear-it-for-small-data/</link><guid isPermaLink="true">http://blog.safia.rocks/2015/12/13/lets-hear-it-for-small-data/</guid><pubDate>Sun, 13 Dec 2015 18:53:59 GMT</pubDate></item><item><title>beyond the code talk sketch notes</title><link>http://blog.safia.rocks/2015/09/21/beyond-the-code-talk-sketch-notes/</link><guid isPermaLink="true">http://blog.safia.rocks/2015/09/21/beyond-the-code-talk-sketch-notes/</guid><pubDate>Tue, 22 Sep 2015 06:16:54 GMT</pubDate></item></channel></rss>