Safia Abdalla
@captainsafia.com
2K followers 200 following 430 posts
👩🏾‍💻: helping people build cloud services with oss at @microsoft.com. ✨: dream big and follow through even bigger. 📝: writing things at blog.safia.rocks
Posts Media Videos Starter Packs
captainsafia.com
With .NET 10 GA around the corner, I’m writing on things I built this cycle: starting with XML doc comment support for OpenAPI.

The source generator approach is novel/quirky and I’m excited by how doc IDs can bridge runtime and compile time. 🤔

blog.safia.rocks/2025/10/13/o...

#dotnet #aspnetcore
The docs write themselves: from XML doc comments to OpenAPI specs
A deep dive into implementing XML documentation comment integration for ASP.NET Core’s OpenAPI generator, exploring the technical challenges of bridging compile-time XML docs with runtime OpenAPI gene...
blog.safia.rocks
captainsafia.com
Hmm…the link I posted is to a CLI tool written in Go.

It looks like you might’ve cloned my blog repo instead? That’s using Jekyll pages.
captainsafia.com
This feature is so awesome Carbon couldn’t even handle rendering the code 😆
captainsafia.com
The first PR to support deployment pipelines in Aspire just landed! 🌟

Model pipelines for your AppHost resources with support for parallel execution + dependency resolution.

PR: github.com/dotnet/aspir...

Notes from one of our design discussions: github.com/dotnet/aspir...

#aspire @aspire.dev
Screenshot of a code sample showing deployment pipelines modeled in Aspire
captainsafia.com
Yes, and I think we’re on the same page here. Sneezing or coughing into your hands is not containing germs. Always go for a napkin or your elbow.
captainsafia.com
Airport observations:

1. If you sneeze or cough into your hands, you’re awful. Sorry not sorry.

2. How long before they add AI to those background noise meme slop channels they play in chain bars and restaurants? You know the ones I’m talking about!
captainsafia.com
Yes, some of these other tools are definitely cooking with the recipe but not the sauce. 🔑
captainsafia.com
That’s fair. Experiences vary, doubly so when you’re dealing with a non-deterministic entity. I think approaching it with a recognition that it’s a model producing the statistically most likely sequence of tokens tempers expectations and workflows enough.
captainsafia.com
I won’t pretend to know the future. I can only speak from my own experience and principles. However, I’d argue that being able to communicate the intent behind the syntax has always been more important. Interacting with LLMs just requires you to be more literal about it.
captainsafia.com
Probably the biggest loss is not having the muscle memory around typing out Go syntax but reading through the generated code gave me enough of an understanding of the overall shape that I could figure it out. Syntax is minor in the grand scheme of things anyways...
captainsafia.com
I'l actually respond to this in earnest: I think so, yes.

I learned some practical things about multi-platform builds and cross-plat APIs (e.g. around creation time) and sussed out some things in the space around when I might lean on process calls vs. libgit for functionality depending on perf.
captainsafia.com
I'm really enjoying how much Claude Code helps me overcome inertia around building tools and learning new things. I used it to build a Go CLI for my Git worktrees workflow and it made iterating and learning the ecosystem at the same time so easy.

github.com/captainsafia...
GitHub - captainsafia/grove: CLI tool for managing git worktree-based workflows
CLI tool for managing git worktree-based workflows - captainsafia/grove
github.com
captainsafia.com
omg i forgot how good real housewives of potomac is and how beautiful these women are 🌸
captainsafia.com
thank you kristoffer! I'm glad you enjoyed the discussion 🫶
captainsafia.com
omg thank you this is such a wonderful compliment :)
captainsafia.com
If you create a Codespace from a PR that was started by the GitHub Copilot agent, the clone of the git repo/branch that will be in the codespace will be a *shallow* clone which makes it difficult to rebase/merge against the branch.

You can fix this by running `git fetch --unshallow`.
a cat with its paws up in front of a purple background that says the more you know
ALT: a cat with its paws up in front of a purple background that says the more you know
media.tenor.com
captainsafia.com
Thanks for sharing (and trying out the new stuff) — glad you found it useful.
captainsafia.com
It’s a Jekyll blog hosted on GitHub Pages!
captainsafia.com
Today’s blog post is a behind-the-scenes look around Aspire's publish and deploy commands: how they differ, where the tension lies (e.g. “ejecting” vs “auditing”), and how we might evolve them to be more composable, debuggable, and transparent.

blog.safia.rocks/2025/10/06/a...

#aspire @aspire.dev
Design flashpoint: aspire publish vs aspire deploy
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.
blog.safia.rocks
captainsafia.com
Found at the local whiskey bar.
Photo of a beach with dark sand and small ice chunks near the shoreline. White waves roll in from a blue ocean under a pale sky. Text on the image reads: ‘There’s nothing you can’t do. As long as it doesn’t have to be any good.’
captainsafia.com
Wait — why would they through hands?!!
captainsafia.com
Nice! Thanks for all your contributions 🫶🏽

By the way, Juno looks pretty neat. There’s an old project I’m trying to redeploy that it might be a good candidate for.
captainsafia.com
I believe I succumbed to that darkness on May 15th, 2025 at 3:44pm 😆