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
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 😆
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.