<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
  <title>AI Toolbox Turnout</title>
  <subtitle>Fly.io staff on how they actually use AI: the real stack, the honest failures, and the workflows they'd defend to the death</subtitle>
  <id>https://fly.io/toolbox-turnout/</id>
  <link href="https://fly.io/toolbox-turnout/"/>
  <link href="https://fly.io/toolbox-turnout/" rel="self"/>
  <updated>2026-07-10T00:00:00+00:00</updated>
  <author>
    <name>Fly</name>
  </author>
  <entry>
    <title>AI Toolbox Turnout: Lubien</title>
    <link rel="alternate" href="https://fly.io/toolbox-turnout/lubien/"/>
    <id>https://fly.io/toolbox-turnout/lubien/</id>
    <published>2026-07-10T00:00:00+00:00</published>
    <updated>2026-07-10T10:49:39+00:00</updated>
    <media:thumbnail url="https://fly.io/toolbox-turnout/lubien/assets/toolbox-turnout.jpg"/>
    <content type="html">&lt;p&gt;Meet Lubien. Maker and fixer of all things. Sprites power user. Serial cat collector.&lt;/p&gt;
&lt;h2 id='on-a-normal-working-day-whats-actually-open-on-your-machine-walk-me-through-your-real-ai-stack' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#on-a-normal-working-day-whats-actually-open-on-your-machine-walk-me-through-your-real-ai-stack' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;On a normal working day, what&amp;rsquo;s actually open on your machine? Walk me through your real AI stack.&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been using Zed for quite a while now and it has my Claude API key, which makes it stupidly easy for me to get started using LLMs anywhere. If the repo is on my own machine I just open Zed and choose the repo from &amp;ldquo;Recent projects&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;When I&amp;rsquo;m in a Sprite, I use &lt;code&gt;zed ssh://sprite-name.sprite-org&lt;/code&gt;. I have a &lt;a href='https://gist.github.com/lubien/24f708e2292b3bafcfecc14d3003a510' title=''&gt;neat setup script&lt;/a&gt; that prepares Sprites for me to just SSH into them. Run the script once and I&amp;rsquo;m done.&lt;/p&gt;

&lt;p&gt;I do have a single exception: since I want to be able to easily edit my blog, I have a Sprite connected to my Tailscale tailnet, so I don&amp;rsquo;t use the script above, just &lt;code&gt;ssh machine-name.tailnet-subdomain&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id='wheres-your-line-between-letting-an-agent-run-wild-and-grabbing-the-wheel-yourself-has-that-line-moved-in-the-last-six-months' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#wheres-your-line-between-letting-an-agent-run-wild-and-grabbing-the-wheel-yourself-has-that-line-moved-in-the-last-six-months' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;Where&amp;rsquo;s your line between letting an agent run wild and grabbing the wheel yourself? Has that line moved in the last six months?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;For quick prototyping I let the agent run wild first, then I start yelling at it to do better. I&amp;rsquo;ll often say &amp;ldquo;write me this LiveView that has X and Y, make sure to add tests&amp;rdquo; or &amp;ldquo;we need a new controller route for /path/to, make sure to add tests&amp;rdquo;, and the model most often uses mock data. The magic here lies in &amp;ldquo;make sure to add tests&amp;rdquo;, because I can start a TDD red-green cycle without any trouble at all.&lt;/p&gt;

&lt;p&gt;I also ask it to componentize wherever possible. I pasted this on the Elixir Brasil Telegram group when asked about it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use components from core components or create new ones. The LiveView render function should be componentized as far as possible. If I see a lot of Tailwind classes it means you can componentize more and you should. Use slots to make it easy to position parts of the code. Instead of writing several Tailwind classes repeatedly you can also add collocated CSS with custom classes with @apply on Tailwind.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the last 6 months the major change is that I need to yell less at it. Agents are increasingly better at understanding existing patterns before doing stuff. Before, I&amp;rsquo;d have to explicitly add &amp;ldquo;do it just like path/to/file.ex does&amp;rdquo;, but nowadays I just ask for what I want and assume it will do the grunt work and give me reasonable enough results.&lt;/p&gt;
&lt;h2 id='when-did-you-last-spin-up-a-sprite-and-what-for-what-did-you-do-before-sprites' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#when-did-you-last-spin-up-a-sprite-and-what-for-what-did-you-do-before-sprites' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;When did you last spin up a Sprite, and what for? What did you do before Sprites?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;This past Sunday. I was recording a series of videos for my YouTube channel about supply chain attacks and how to protect yourself from them, so I spun up a Sprite to PWN myself (lubien/not-a-scam-trust-me) and also show how to use some tools. Tune in to &lt;a href='https://www.youtube.com/@lubiendev' title=''&gt;youtube.com/@lubiendev&lt;/a&gt; for more.&lt;/p&gt;

&lt;p&gt;Before that I would have blindly trusted that code I cloned was safe enough to run. But this year, daily supply chain attacks have taught me otherwise.&lt;/p&gt;

&lt;p&gt;I don&amp;rsquo;t code from my phone. I&amp;rsquo;m already doing it more than I should in my home office, so my phone is for talking to friends, watching brainrot and getting my data harvested by Big Ads.&lt;/p&gt;
&lt;h2 id='whats-accreted-on-your-setup-that-youd-be-gutted-to-lose-the-claude-md-the-skills-the-hooks-the-muscle-memory' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#whats-accreted-on-your-setup-that-youd-be-gutted-to-lose-the-claude-md-the-skills-the-hooks-the-muscle-memory' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;What&amp;rsquo;s accreted on your setup that you&amp;rsquo;d be gutted to lose? The CLAUDE.md, the skills, the hooks, the muscle memory.&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t use skills other than whatever is already in a Sprite. For my Fly.io work it&amp;rsquo;s AGENTS.md from the Phoenix Framework, plus a few edits I made to teach agents about our architecture. I prefer yelling at the agent over spending time writing skills. I know there are some great skills out there that can automate stuff like checking Sentry, preparing plans, creating PRs, etc. I&amp;rsquo;m just OK with writing that down. Sorta feels like rubber ducking, but with my keyboard instead of with my cats (all 6 of them).&lt;/p&gt;
&lt;h2 id='what-are-you-building-on-the-side-with-this-stuff-the-thing-that-has-nothing-to-do-with-fly' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#what-are-you-building-on-the-side-with-this-stuff-the-thing-that-has-nothing-to-do-with-fly' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;What are you building on the side with this stuff, the thing that has nothing to do with Fly?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href='https://comunidade.devsnorte.com/' title=''&gt;comunidade.devsnorte.com&lt;/a&gt;. It started on phoenix.new (I promise this is not an ad), then later I ejected it so I could do things on my own with my friends. We use it to list events and other projects from Brazil&amp;rsquo;s North region (we kinda divide ourselves into 5 geopolitical regions, you know &amp;hellip; continent-sized country stuff). I&amp;rsquo;m always coming up with new ideas to improve it and we get community feedback too, so our backlog is growing.&lt;/p&gt;
&lt;h2 id='where-has-ai-crept-into-the-parts-of-your-life-that-arent-code' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#where-has-ai-crept-into-the-parts-of-your-life-that-arent-code' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;Where has AI crept into the parts of your life that aren&amp;rsquo;t code?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;I hate AI support. It fails me 99% of the time. Surprisingly, I had one positive AI support case yesterday (after several failed ones) and it was from a driving school WhatsApp contact. Speaking of WhatsApp: Meta now has this feature that summarizes unread messages. It would be useful, since I have hundreds of them (all related to programming and communities), if I wasn&amp;rsquo;t chronically online.&lt;/p&gt;
&lt;h2 id='whats-the-part-of-your-workflow-a-colleague-thinks-is-unhinged-but-youd-defend-to-the-death' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#whats-the-part-of-your-workflow-a-colleague-thinks-is-unhinged-but-youd-defend-to-the-death' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;What&amp;rsquo;s the part of your workflow a colleague thinks is unhinged, but you&amp;rsquo;d defend to the death?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m that colleague. I keep AI usage low, so I think it&amp;rsquo;s unhinged when I see folks automating their lives down to wiring up integrations for task boards, time sheets, replying on Slack, etc. Seems odd to me.&lt;/p&gt;
&lt;h2 id='what-did-you-think-these-tools-were-useless-at-that-you-now-trust-them-with-and-the-reverse-what-did-you-overtrust-and-have-to-walk-back' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#what-did-you-think-these-tools-were-useless-at-that-you-now-trust-them-with-and-the-reverse-what-did-you-overtrust-and-have-to-walk-back' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;What did you think these tools were useless at that you now trust them with? And the reverse: what did you overtrust and have to walk back?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Back when ChatGPT first appeared, I tried to use it to port flyctl to Elixir, but it failed miserably from the beginning. I&amp;rsquo;m sure now Claude and friends could handle it given enough tokens and testing. Not that I want to do all that anymore. I don&amp;rsquo;t think I ever over-trusted AI. On the contrary, I downplayed it for a while.&lt;/p&gt;
&lt;h2 id='what-can-you-flat-out-do-now-that-you-just-couldnt-before-not-the-same-thing-faster-a-genuinely-new-capability' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'&gt;&lt;a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#what-can-you-flat-out-do-now-that-you-just-couldnt-before-not-the-same-thing-faster-a-genuinely-new-capability' aria-label='Anchor'&gt;&lt;/a&gt;&lt;span class='plain-code'&gt;What can you flat-out do now that you just couldn&amp;rsquo;t before? Not the same thing faster, a genuinely new capability.&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Pretty shell scripts. I can now make em all. All my test shell scripts sucked, but now I use AI to write them for me. I never bothered with (nor wanted to) learning shell scripting, to be honest. I just googled things as needed.&lt;/p&gt;
</content>
  </entry>
</feed>
