Safia Abdalla
@captainsafia.com
2K followers 200 following 420 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
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 😆
captainsafia.com
My deepest and sincerest respect to release engineers because I'm working on setting up a release pipeline for this side project and there are so many little details to think through.

I discovered goreleaser and I am really vibing with it though ❤️

goreleaser.com
GoReleaser
Release engineering, simplified.
goreleaser.com
captainsafia.com
OK -- now I really wanna see yours! Doooo it!
captainsafia.com
Saw someone made this cute little GitHub contribution graph on Reddit and I used it to visualziation the last 10 years of open source I've done 🥲

postspark.app/github-contr...
Visualization of contribution graph for GitHub user captainsafia from 2015 to 2025
captainsafia.com
As part of this, I took on the work to update the nteract site from Flow (yes, lol) to TypeScript.

I distinctly remember trying to do this 6 years ago and getting tired of the tedium.

I just threw Claude Code at it and it one-shotted the migration in a single prompt. Amazing!
captainsafia.com
OK, so I literally haven't done anything on nteract/Jupyter in years and despite how terrifying it is to step back into a project you feel guilty about lowkey kind of abandoning, I'll literally get over those feelings just so I can start moving things off of Vercel.
Reposted by Safia Abdalla
dot.net
.NET @dot.net · 10d
AI agents without the complexity.
The Microsoft Agent Framework lets you:
• Build agents quickly
• Orchestrate multiagent workflows
• Deploy with .NET hosting
• Monitor with OpenTelemetry
Start building smarter → msft.it/63325svaSW
#dotnet 🤖
spot art.
text reads: Introducing Microsoft Agent Framework (Preview): Making AI Agents Simple for Every Developer
captainsafia.com
One of the reasons I've been blogging more lately is because my motivation around it has changed.

I want a journal of the things I spent time working on so that when I am old I can read back through it all and marvel at the adventures. :')
captainsafia.com
A lot of nteract's projects took a bet on next.js/zeit back in the day but there's nothing I'm more committed to than the stance that open source is more about people/philosophy than it is about code. So here we are.
captainsafia.com
OK, so I literally haven't done anything on nteract/Jupyter in years and despite how terrifying it is to step back into a project you feel guilty about lowkey kind of abandoning, I'll literally get over those feelings just so I can start moving things off of Vercel.
captainsafia.com
Ah nice! For the RDG scenario, I wanted to check that syntax trees of a certain shape still no-oped so dummies weren’t an option. They are good for testing that external edits don’t trigger the source generator though!
captainsafia.com
The entry point that the RDG tests use accepts a collection of "updated sources" that it reruns the compilation against: github.com/dotnet/aspne...

I haven't done something similar for the other generator test implementations, TBH. But it can be plugged in a similar way.
captainsafia.com
@chris.sienkiewi.cz I think this was something that you were looking into?
captainsafia.com
...solution and Verify worked well for this. Before I realized I could use Verify, RDG had its own snapshot testing functionality that was a bit brittle to maintain.

I think there are plans to make it easier to use the testing library for runtime verification so I'd lean on it in those cases.