<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on the Pirate Baby</title><link>http://pirate.baby/posts/</link><description>Recent content in Posts on the Pirate Baby</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 11 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://pirate.baby/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>An AI Agent Restores A Sailboat</title><link>http://pirate.baby/posts/sailboat_ai/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/sailboat_ai/</guid><description>&lt;img src="http://pirate.baby/images/stubb.png"/>
&lt;p>If your algo has even a dash of AI in it, always-on agents have probably flooded your feed harder than cauliflower-based hors d&amp;rsquo;oeuvres at a &lt;em>Lululemon&lt;/em> company offsite. Everyone seems to have a personal robot that handles every aspect of their lives - from screening emails to scheduling oil changes, nothing says &amp;ldquo;I &lt;em>AI&lt;/em> better than you&amp;rdquo; than beach meditation humblebrags while your agent crushes today&amp;rsquo;s outbound. The LinkedIn echo chamber says that if you were truly &lt;em>AI Native,&lt;/em> you&amp;rsquo;d already be both a 100x developer and a solocorn founder, and your awesome digital empire would be executed by an agent army so autonomous that you are touching more grass than Tommy Chong.&lt;/p></description></item><item><title>The Pull Request Needs To Die</title><link>http://pirate.baby/posts/the_pull_request_needs_to_die/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/the_pull_request_needs_to_die/</guid><description>&lt;p>This month marks one year of ubiquitous agentic coding in the software world. Early adopters may have dabbled with pre-harness harnesses (remember Cursor? Github Copilot?) going all the way back to 2021, but agentic coding as we know it was really birthed late February of 2025 with the launch of Claude Code.
I struggle to find an accurate historical analog for the rapidity and completeness in which agentic coding has resequenced Software Engineering’s DNA; the cliche’ analogy of horse =&amp;gt; automobile is useless here - that transition took nearly half a century. I don’t dare to contemplate what another twelve months at this pace of change will bring us.&lt;/p></description></item><item><title>Bad News About Those Vanishing Barriers</title><link>http://pirate.baby/posts/bad_news_about_those_vanishing_barriers/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/bad_news_about_those_vanishing_barriers/</guid><description>&lt;p>There is an old Doug Stanhope bit where a news channel polled their viewers “&lt;em>Will there be a terrorist attack at this year’s Olympics?&lt;/em>&amp;quot; and the results were:&lt;/p>
&lt;ul>
&lt;li>70% no&lt;/li>
&lt;li>28% yes&lt;/li>
&lt;li>2% I don’t know.&lt;/li>
&lt;/ul>
&lt;p>The punchline is that &lt;strong>none of these people know&lt;/strong>, and what the survey really tells us is that 98% of people will have strong opinions about things they can’t possibly know anything about. This is what it feels like reading post after article after blog written by Software Engineers and Linkedin pundits on “AI changing everything” and/or “AI not changing anything.” All those click-hunting posts can be summed up in one simple fact: Unless they have a time machine, nobody alive now definitively knows what effect the big AI butterfly flapping its wings will have on our collective futures.&lt;/p></description></item><item><title>GDD: Generative Driven Design</title><link>http://pirate.baby/posts/generative_driven_design/</link><pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/generative_driven_design/</guid><description>&lt;p>&lt;em>Reflective generative AI software components as a development paradigm&lt;/em>&lt;/p>
&lt;p>Nowhere has the proliferation of generative AI tooling been more aggressive than in the world of software development. It began with &lt;a href="https://github.com/features/copilot">GitHub Copilot’s supercharged autocomplete&lt;/a>, then exploded into direct code-along integrated tools like &lt;a href="https://aider.chat/">Aider&lt;/a> and &lt;a href="https://www.cursor.com/">Cursor&lt;/a> that allow software engineers to dictate instructions and have the generated changes applied live, in-editor. Now tools like &lt;a href="https://devin.ai">Devin.ai&lt;/a> aim to build autonomous software generating platforms which can independently consume feature requests or bug tickets and produce ready-to-review code.&lt;/p></description></item><item><title>Of Ducks, Types, and Identity</title><link>http://pirate.baby/posts/dreaming_of_a_dynamcially_typed_world/</link><pubDate>Wed, 23 Oct 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/dreaming_of_a_dynamcially_typed_world/</guid><description>&lt;figure>
&lt;img src="http://pirate.baby/images/duck_typing.png"/>
&lt;figcaption>A Duck, Typing&lt;/figcaption>
&lt;/figure>
&lt;p>In 1967 computer scientist Melvin Conway made an observation that came to be known as &lt;em>Conway&amp;rsquo;s Law&lt;/em>.&lt;/p>
&lt;blockquote>
&lt;p>Organizations which design systems (in the broad sense used here) are constrained to produce designs which are copies of the communication structures of these organizations.&lt;/p>
&lt;/blockquote>
&lt;p>Conway&amp;rsquo;s Law is why you often find rigid, silo&amp;rsquo;ed tables modeled into the data architecture of rigid companies with silo&amp;rsquo;ed business departments, or scrambled and unplanned relationships across software entities at bootstrap startups; code reflects the human environment in which it is developed.&lt;/p></description></item><item><title>The Hindsight Guide to Replatforming</title><link>http://pirate.baby/posts/replatforming/</link><pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/replatforming/</guid><description>&lt;img src="http://pirate.baby/images/evolving_powerplant.png" alt="image of an internal combustion engine next to a hypothetical fusion powerplant" />
&lt;p>I was sketching out architectural recommendations for a client project that, after a successful POC, was ready for the prime-time of production software. I stopped to ask myself &lt;em>why&lt;/em> the new arch diagram I was creating looked vastly different from the architecture of the existing concept software; even when my answers seemed solid (they included specific measures of reliability, speed, scale, and security), I could not shake the feeling that this felt familiar in a bad way. I counted the number of replatforms I have either been directly responsible for (i.e. several Modern Data Stack conversions) or indirectly impacted by (Data Warehouse reconciliations between the &amp;ldquo;old&amp;rdquo; and &amp;ldquo;new&amp;rdquo; systems) over the last fifteen years. I came up with thirteen replatforms. Of those thirteen, only four eventually yielded positive product or engineering outcomes; that is a &lt;strong>roughly 70% failure rate&lt;/strong> among replatforms I have personally witnessed. It is no wonder that anything resembling a re-write, re-architecture, or re-thinking gives me immediate pause.&lt;/p></description></item><item><title>GenAI Sanity Check</title><link>http://pirate.baby/posts/sanity_check/</link><pubDate>Fri, 31 May 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/sanity_check/</guid><description>&lt;p>For a little while now our LinkedIn feeds have been littered with &lt;strong>AI Takeaways;&lt;/strong> a highlighted, prompt-toned text blurb wedged under selected posts and adorned with a little star (to let you know this is an important new feature).
Premium users can click on the prompt and be treated to what &amp;ldquo;an AI&amp;rdquo; has to say on the subject at hand. Here&amp;rsquo;s one now!&lt;/p>
&lt;figure>
&lt;img src="http://pirate.baby/images/worthless-prompt.png" alt="Worthless Prompt">
&lt;figcaption>&lt;i>Note: the lopsided toast is not sloppy screenshot cropping on my part, that is actually how AI Takeaways appear on the screen, intentionally misaligned to the right.&lt;/i>&lt;figcaption>
&lt;/figure>
&lt;p>If you&amp;rsquo;re unfamiliar with Marc Randolph, he&amp;rsquo;s the &lt;em>OG&lt;/em> founder of Netflix and a great source of startup inspiration. This post is typical of what he shares; brief, insightful, honest, and credible. Did you notice that little gem on the bottom, just below his content? Paying customers can click and discover what a generative model adds to the discussion, with such insightful prompts as &amp;ldquo;how can following rules lead to success?&amp;rdquo; This is a product that a $30B+ Microsoft company has brought to market, and seemingly thinks consumers will actually &lt;em>pay for&lt;/em>.&lt;/p></description></item><item><title>Restoring the 'Product' in AI Products</title><link>http://pirate.baby/posts/restoring_the_product_in_ai_products/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/restoring_the_product_in_ai_products/</guid><description>&lt;p>&lt;em>grounding your ML development lifecycle in commercial reality&lt;/em>&lt;/p>
&lt;p>If you subscribe to the Gartner predictive model for AI impact and adoption (a.k.a the &amp;ldquo;AI Hype Cycle&amp;rdquo;) we are still far from peak (inflated) AI expectations.
&lt;img loading="lazy" src="https://emt.gartnerweb.com/ngw/globalassets/en/newsroom/images/graphs/swe-hc-image.png" alt="Gartner AI Hype Cycle 2023" />
Casual observation supports the Gartner timeline; every week it seems a new Generative AI breakthrough sends techno-pundits and content creators into a frenzy. This week, the breakthrough is multimodal OpenAI GPT-4o: the long-awaited technological leap forward which will no doubt &lt;em>fianally&lt;/em> render the human race obsolete 🙄.&lt;/p></description></item><item><title>50 First Dates With MemGPT</title><link>http://pirate.baby/posts/50_first_dates_with_memgpt/</link><pubDate>Sun, 25 Feb 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/50_first_dates_with_memgpt/</guid><description>&lt;h2 id="preamble">preamble&lt;/h2>
&lt;p>The drive home from the movie theater was not going well. My then-girlfriend sat arms crossed in the passenger seat, the red glow from the traffic light matching her mood. &amp;ldquo;You can&amp;rsquo;t just let it be romantic. Why do you have to ruin everything!?!&amp;rdquo; We had just seen &lt;em>50 First Dates&lt;/em>, a classic Sandler/Barrymore romance about a woman who&amp;rsquo;s brain injury prevents her from forming long-term memories. In the movie, Lucy (Barrymore) constructs her own &amp;ldquo;external memory&amp;rdquo; via her diary; a clever plot device, but one that required suspension of disbelief that I just could not abide. I had done shorthand math while the credits were rolling: If Lucy&amp;rsquo;s average diary entry took 20 minutes to write (that is less than most people, and most people aren&amp;rsquo;t trying to compensate for brain damage), each entry would take roughly half that time - so about 10 minutes - to read. Reading a week&amp;rsquo;s entries would take more than an hour. By the 6 month mark, the daily catch-up on her past would require more hours of reading than are in a day. Romantic? Yes. Realistic? No. And so we argued.
I believe the conversation went something like this:&lt;/p></description></item><item><title>An Indian Summer for Old Programmers</title><link>http://pirate.baby/posts/an_indian_summer_for_old_programmers/</link><pubDate>Tue, 20 Feb 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/an_indian_summer_for_old_programmers/</guid><description>&lt;h3 id="history">History&lt;/h3>
&lt;p>The most money I have ever made was my years spent selling motorcycles. Software Engineering is by all means a lucrative profession, and I&amp;rsquo;ve never been the starving artist developer who prizes a compelling mission over a compelling paycheck. But the years I sold motorcycles - between 2003 and 2008 - coincided with a wave of temporary insanity in the US real estate market. Heretofore normal people became mad with the sudden access to &amp;ldquo;wealth,&amp;rdquo; in the form of massive home equity reserves they could spend as easily as cash via HELOC checkbooks. And spend they did - in my dealership, to the tune of $100,000 boats, $50,000 Harley Davidsons, and $30,000 jetskis, often two or three at a time (&amp;ldquo;get the pair or the garage will look lopsided&amp;rdquo;). This was a time when ex-convict, high-school dropout motorcycle salesman would net twice the income of the Ivy-league lawyer to whom they were selling an overpriced jetboat. As salespeople we assumed this prosperity to be an eternal constant, and we planned, spent, and generally behaved accordingly. The day after Lehman Brothers toppled in the fall of 2008, I checked that the front doors of the dealership were unlocked. Twice. Before that day, I could look out the window of my elevated office and see thousands of customers spread across our dealership floor, a football field of motorcycle commerce in action. From that day forward, the customers numbered in single digits and the floor was populated only by listless, terrified salespeople. Salespeople that saw their incomes vanish and their savings evaporate; most went from six-figure incomes to earning little more than minimum wage overnight. But a short time into this barren economic winter, there was a sudden reprieve in the form of the Southern California gas price explosion. Economic forces combined to send the price of a gallon to just under $5 (that&amp;rsquo;s over $7 a gallon today), and Angelinos again panicked - this time stampeding to our dealership to purchase 70-plus-mpg scooters and motorcycles. At one point we partnered with a local car dealer so customers could trade in their massive SUVs and lifted trucks (for a sizable loss) and pay top dollar for a Vespa clone. By all accounts the gravy days were back, and most of the salespeople resumed decadence as usual. But the seasoned ones, the wise old oaks (probably in their 30&amp;rsquo;s now that I think of it) maintained caution. They used this temporary reprieve to right-size, to reposition themselves. One sold his mansion (there is no other word for that house) to an eager young co-worker for a sizable, but still tolerable, loss. Many left management roles and returned to the showroom floor, preparing for the impending downsizing (and reduced need for management overhead). Of course the scooter bubble quickly burst, and what was left was nearly half a decade of the worst sales and slowest rebound in the history of power sports. It was only the seasoned veterans that survived.&lt;/p></description></item><item><title>Langchain is a Ticking Timebomb</title><link>http://pirate.baby/posts/langchain_is_ticking_timebomb/</link><pubDate>Tue, 09 Jan 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/langchain_is_ticking_timebomb/</guid><description>&lt;p>Let me preface this by saying that I very much appreciate the entire Lang* ecosystem. At my shop we rely heavily on Langfuse for development as well as the tagging interface for our training strategy. More than a few platforms have tried to be &lt;em>the&lt;/em> framework for language model applications (think Guidance, Haystack etc), and the Lang* team has arguably made the most headway, and done it OSS &amp;#x1f918;. So try not to disregard these observations as contrarian or success-hating; I really &lt;em>want&lt;/em> to love LangChain.&lt;/p></description></item><item><title>Prompt Engineering</title><link>http://pirate.baby/posts/prompt_engineering/</link><pubDate>Fri, 05 Jan 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/prompt_engineering/</guid><description>&lt;p>The world never ceases to be filled with new things, and that is exciting. New things are great, but as they come with a learning curve - not the least of which is the language surrounding them. Like when the first coffee shop opened in the little town where I went to college in the late 90s, and we learned to order “express-o” (which was named that, logically, because it was like coffee but &lt;em>faster&lt;/em>).&lt;/p></description></item><item><title>Caffeine</title><link>http://pirate.baby/posts/caffeine/</link><pubDate>Wed, 03 Jan 2024 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/caffeine/</guid><description>&lt;p>There is a well-warn platitude that &amp;ldquo;debt is stealing from your future self.&amp;rdquo; The logic follows that instead of (or worse, in addition to) spending the resources you currently have, debt is the act of spending against resources you &lt;em>will have&lt;/em> down the road. Debt functions on highly optimistic principals, namely that future you will be so very well off that not only will that version of yourself have enough means to cover your then-current expenses, but also surplus to cover the now-current expenses present-day you is unwilling or unable to afford.&lt;/p></description></item><item><title>The one where a picture of your dog broke your CD pipeline</title><link>http://pirate.baby/posts/the_one_where_a_picture_of_your_dog_broke_the_cd_pipeline/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/the_one_where_a_picture_of_your_dog_broke_the_cd_pipeline/</guid><description>&lt;p>It starts out innocent enough, on a frozen New Year&amp;rsquo;s Eve afternoon. You are doing some final documentation cleanup - because it is New Year&amp;rsquo;s Eve and not the best time for the team to be rolling out fresh feature code, and because updating the repo docs is usually a worthwhile endeavor in moments like this as part of good code hygiene. Being the clever and hilarious documentation author that you are, you hyperlink a picture of your dog Bash to a bash code block (pure pun magnificence, I might add). Happy with your updates, you wait for CI to pass testing, linting, scanning etc. and solicit a pull request rubber stamp from the team.&lt;/p></description></item><item><title>Fun with SQLAlchemy Mapped forward refs</title><link>http://pirate.baby/posts/fun_with_sqlalchemy_mapped_forward_refs/</link><pubDate>Sat, 30 Dec 2023 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/fun_with_sqlalchemy_mapped_forward_refs/</guid><description>&lt;p>&lt;a href="https://docs.sqlalchemy.org/en/14/orm/internals.html#sqlalchemy.orm.Mapped">SQLAlchemy&lt;/a> has nifty declarative mapping type support with the &lt;code>Mapped&lt;/code> typing descriptor.
If you are in the habit of typing your Python, this is a welcome tool that reduces boilerplate while still feeling quite natural:&lt;/p>
&lt;pre tabindex="0">&lt;code>class Banana(SqlalchemyBase):
is_squishy:Mapped[Optional[bool]] = mapped_column(server_default=text(&amp;#34;TRUE&amp;#34;))
picked_date:Mapped[datetime]
belongs_to: Mapped[&amp;#34;User&amp;#34;] = relationship(&amp;#34;User&amp;#34;, lazy=&amp;#34;selectin&amp;#34;, back_references=&amp;#34;bananas&amp;#34;)
&lt;/code>&lt;/pre>&lt;p>But interestingly, &lt;code>Mapped&lt;/code> does not support forward refs outside the ORM. so
&lt;code>picked_date:Mapped[&amp;quot;datetime&amp;quot;]&lt;/code> will error with an &lt;em>ArgumentError&lt;/em> if &lt;code>datetime&lt;/code> was not otherwise imported in the module. However, our
forward ref to &lt;code>&amp;quot;User&amp;quot;&lt;/code> will be fine as long as you&amp;rsquo;ve imported &lt;code>User&lt;/code> via &lt;code>TYPE_CHECKING&lt;/code>.&lt;/p></description></item><item><title>A Complete Containerized CD Pipeline With AWS and Cloudflare for 2024</title><link>http://pirate.baby/posts/complete_cd_with_aws_codepipeline_ecs_and_cloudflare/</link><pubDate>Wed, 27 Dec 2023 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/complete_cd_with_aws_codepipeline_ecs_and_cloudflare/</guid><description>&lt;p>Recently I went about standing up a fresh Continuous Delivery pipeline for a new project. The project is a relatively standard containerized stack with nothing exceptional to speak of, and as our exploratory work was already in AWS I decided to launch this CD in AWS CodePipeline. Furthermore, we wanted to dogfood our long-term infra management (this project is infra abstraction/automation software) and so opted &lt;em>not&lt;/em> to use TerraForm or CloudFormation templates - that way we could have a fully &amp;ldquo;Clickops&amp;rsquo;d&amp;rdquo; infrastructure for our tools to reclaim and manage. Besides, Clickops is easy right?&lt;/p></description></item><item><title>On Having Enough Time</title><link>http://pirate.baby/posts/on_having_enough_time/</link><pubDate>Sun, 24 Dec 2023 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/on_having_enough_time/</guid><description>&lt;p>It is difficult to argue substantially that there is not enough time if there is a TV on your wall or TikTok on your phone.&lt;/p>
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbMTU1NDI1OTkwMF19
--></description></item><item><title>Data Science Nomenclature</title><link>http://pirate.baby/posts/why_data_scientists_are_so_bad_at_naming_things/</link><pubDate>Wed, 13 Dec 2023 00:00:00 +0000</pubDate><guid>http://pirate.baby/posts/why_data_scientists_are_so_bad_at_naming_things/</guid><description>&lt;p>I have a working theory that most of the Data Scientists
working today developed their naming conventions by watching
Star Trek: The Next Generation in the 90s.&lt;/p>
&lt;p>&lt;img loading="lazy" src="http://pirate.baby/images/riker2.jpg" alt="Riker 1" />
&lt;img loading="lazy" src="http://pirate.baby/images/laforge7.jpg" alt="LaForge 7" />
&lt;img loading="lazy" src="http://pirate.baby/images/picardalphatwo.jpg" alt="Picard Alpha Two" />
&lt;/p></description></item></channel></rss>