https://martinfowler.com/feed.atomMartin FowlerMaster feed of news and updates from martinfowler.comMartin Fowler[email protected]https://martinfowler.com2025-07-31T10:16:00-04:00Partner with the AI, throw away the code2025-07-31T10:16:00-04:00tag:martinfowler.com,2025-07-31:Partner-with-the-AI--throw-away-the-code
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/partner-with-ai-and-throw-away-the-code.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p><b class = 'author'>Matteo Vaccari</b> shows why the common metric of AI code
acceptance has big hole. An LLM <a href = 'https://martinfowler.com/articles/exploring-gen-ai/partner-with-ai-and-throw-away-the-code.html'>can be helpful</a> even if you throw away its
code.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/partner-with-ai-and-throw-away-the-code.html'>more…</a></p>Who is LLM2025-07-22T13:38:00+05:30tag:martinfowler.com,2025-07-22:Who-is-LLM
<p>It's become a common habit for developers to give Large Language Models
(LLMs) a persona when working with them. I <a href = 'https://martinfowler.com/articles/who-is-llm.html'>describe four of them</a>, a
stubborn donkey, a genie, a slot machine, and Uriah Heep.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/who-is-llm.html'>more…</a></p>Generative AI in software and essaying2025-07-21T14:58:00-04:00https://martinfowler.com/articles/20250721-links.htmlMartin Fowler[email protected]https://martinfowler.com<p>Korny Sietsma has a <a href="https://blog.korny.info/2025/07/18/a-real-world-ai-coding-case-sample">great example</a> of how using an LLM for coding is very helpful but with limitations…</p>
<p>and a <a href="https://blog.korny.info/2025/07/19/clowns-to-the-left-of-me">thoughtful general essay</a> on why the hype and the immovable skeptics are both missing the train.</p>
<p>While here, a professor of poetry <a href="https://www.nytimes.com/2025/07/18/opinion/ai-chatgpt-school.html?unlocked_article_code=1.YE8.FbMs.W6XRxpJ6UEyg&smid=url-share">ponders</a> (gift link) on the value and limits of AI with writing:</p>
<blockquote>
<p>One of the real challenges here is the way that A.I. undermines the human value of attention, and the individuality that flows from that.</p>
<p>What we stand to lose is not just a skill but a mode of being: the pleasure of invention, the felt life of the mind at work.</p>
</blockquote>
Three worthwhile articles yesterday2025-07-10T10:58:00-04:00https://martinfowler.com/articles/202507-three-links.htmlMartin Fowler[email protected]https://martinfowler.com<p>Three articles I enjoyed yesterday:</p>
<p><a href="https://redmonk.com/sogrady/2025/07/09/promiscuity-of-modern-developers/">Stephen O’Grady</a> talks about how Gen AI tools break two common constants with developer tools: they are willing to flit between Gen AI tools and they are willing to pay for them. This implies that it’s not too late for new tools to appear, and that enterprise adoption will be slowed by a lack of consensus on which direction to go.</p>
<p><a href="https://blog.thepete.net/blog/2025/06/26/leading-your-engineers-towards-an-ai-assisted-future/">Pete Hodgson</a> continues his excellent writing on Gen AI by proposing an approach to leading engineers towards an AI-assisted future, centered around a the concept of aligned autonomy. He advocates an explicit experimentation phase, followed by supporting adoption and measuring their impact.</p>
<p><a href="https://charity.wtf/2025/07/09/thoughts-on-motivation-and-my-40-year-career/">Charity Majors</a> reflects on her career. I really resonated with her words: “I think I’m less interested in my own happiness (whatever that means) than I am interested in <em>doing work that feels worth doing</em>.”</p>
I still care about the code2025-07-09T10:33:00-04:00tag:martinfowler.com,2025-07-09:I-still-care-about-the-code
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p>Even with LLMs, <b class = 'author'>Birgitta Böckeler</b> still cares about
the code: “LLMs are NOT compilers, interpreters, transpilers or assemblers
of natural language, they are <b>inferrers</b>. </p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html'>more…</a></p>Why Organizations Need Expert Generalists2025-07-02T10:05:00-04:00tag:martinfowler.com,2025-07-02:Why-Organizations-Need-Expert-Generalists
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/expert-generalist.html#WhyOrganizationsNeedExpertGeneralists'><img src = 'https://martinfowler.com/articles/expert-generalist/card.png' width = '350px'></img></a></div>
<p>In complex environments, the characteristics of Expert Generalists lead
Gitanjali, and I thus complete our article by summarizing the value of
them to be particularly valuable in driving tasks to completion. Unmesh,
this skill.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/expert-generalist.html#WhyOrganizationsNeedExpertGeneralists'>more…</a></p>Expert Generalists need specialists (and LLMs)2025-07-01T09:17:00-04:00tag:martinfowler.com,2025-07-01:Expert-Generalists-need-specialists--and-LLMs-
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/expert-generalist.html#ExpertGeneralistsStillNeedSpecialists'><img src = 'https://martinfowler.com/articles/expert-generalist/card.png' width = '350px'></img></a></div>
<p>While we've spent this article praising the Expert Generalist, Unmesh,
Gitanjali, and I simultaneously do not deny the value of specialist
knowledge. To be the most efficient, a team needs some specialist skill.
We've also observed that Expert Generalist capabilities are considerably
more valuable when working with LLMs.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/expert-generalist.html#ExpertGeneralistsStillNeedSpecialists'>more…</a></p>Growing Expert Generalists2025-06-25T08:48:00-04:00tag:martinfowler.com,2025-06-25:Growing-Expert-Generalists
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/expert-generalist.html#GrowingExpertGeneralists'><img src = 'https://martinfowler.com/articles/expert-generalist/card.png' width = '350px'></img></a></div>
<p>To <a href = 'https://martinfowler.com/articles/expert-generalist.html#GrowingExpertGeneralists'>grow Expert Generalists</a> we need to focus attention on fundamentals
rather tools. As an example, Unmesh, Gitanjali, and I describe a workshop we've used to
break silos of application development, data engineering, and devops</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/expert-generalist.html#GrowingExpertGeneralists'>more…</a></p>LLMs bring new nature of abstraction2025-06-24T10:02:00-04:00tag:martinfowler.com,2025-06-24:LLMs-bring-new-nature-of-abstraction
<p>Like most loudmouths in this field, I’ve been paying a lot of attention
to the role that generative AI systems may play in software development. I
think the appearance of LLMs will change software development to a similar
degree as the change from assembler to the first high-level programming
languages. The further development of languages and frameworks increased
our abstraction level and productivity, but didn’t have that kind of
impact on the nature of programming. LLMs are making that degree of
impact, but with the distinction that it isn't just raising the level of
abstraction, but also forcing us to consider what it means to program with
non-deterministic tools.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/2025-nature-abstraction.html'>more…</a></p>Assessing Expert Generalists2025-06-24T09:45:00-04:00tag:martinfowler.com,2025-06-24:Assessing-Expert-Generalists
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/expert-generalist.html#AssessingExpertGeneralists'><img src = 'https://martinfowler.com/articles/expert-generalist/card.png' width = '350px'></img></a></div>
<p>We have two crucial checkpoints for spotting — and then nurturing —
expert generalists. Unmesh, Gitanjali, and I look at hiring and career
progression.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/expert-generalist.html#AssessingExpertGeneralists'>more…</a></p>Expert Generalists: three more characteristics2025-06-19T08:48:00-04:00tag:martinfowler.com,2025-06-19:Expert-Generalists--three-more-characteristics
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/expert-generalist.html#FavorFundamentalKnowledge'><img src = 'https://martinfowler.com/articles/expert-generalist/card.png' width = '350px'></img></a></div>
<p>Unmesh, Gitanjali, and I finish our list of characteristics of an
Expert Generalist by describing how these folks favor fundamental
knowledge in a domain, possess a blend of broad and deep skills, and know
how to build a rough, perceptive sense - a sympathy - for related domains.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/expert-generalist.html#FavorFundamentalKnowledge'>more…</a></p>Expert Generalists: first three characteristics2025-06-18T09:13:00-04:00tag:martinfowler.com,2025-06-18:Expert-Generalists--first-three-characteristics
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/expert-generalist.html'><img src = 'https://martinfowler.com/articles/expert-generalist/card.png' width = '350px'></img></a></div>
<p>As computer systems get more sophisticated we've seen a growing trend
to value deep specialists. But we've found that our most effective
colleagues have a skill that comes from spanning many specialties. We are thus starting
to explicitly recognize this as a first-class skill of “Expert
Generalist”. This is the first installment of an article detailing how we
think about this skill, starting with the first three characteristics of an
Expert Generalist.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/expert-generalist.html'>more…</a></p>Autonomous coding agents: A Codex example2025-06-04T09:50:00-04:00tag:martinfowler.com,2025-06-04:Autonomous-coding-agents--A-Codex-example
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/autonomous-agents-codex-example.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p>In the past few weeks, multiple “autonomous background coding agents”
have been released. <b class = 'author'>Birgitta Böckeler</b> tried out giving a
task to OpenAI Codex to see what she could learn. Here she describes one
particular Codex run, to help us look behind the scenes, and make some
observations about its contribution to our work.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/autonomous-agents-codex-example.html'>more…</a></p>Should I still use analytics?2025-06-03T09:23:00-04:00https://martinfowler.com/articles/202506-whither-analytics.htmlMartin Fowler[email protected]https://martinfowler.com
<p>I set up Google Analytics on my site in 2010, and since then use it to track page views to my site. I only care about page views, which I find useful to figure out which pages get the most traffic. It’s interesting data, and sometimes rather useful. But Google collects much more information than just page views, and it’s tracking is more intrusive than I would like. But I had other things I’d rather spend to spend my time on, so doing anything about it never made it high enough up my todo list.</p>
<p>But last month I finally did something, having come across some information that did I thought did what I wanted. Essentially I want things set up so that I don’t need to bother with a cookie banner because I only track things that are trackable when someone says “deny all”. Based on <a href="https://developers.google.com/tag-platform/security/guides/consent?consentmode=basic">some google documentation</a>, I changed my google analytics fragment to:</p>
<pre><code><script async src="https://www.googletagmanager.com/gtag/js?id=G-6D51F4BDVF"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'ad_storage': 'denied',
'analytics_storage': 'denied',
'wait_for_update': 500,
});
gtag('js', new Date());
gtag('config', 'G-6D51F4BDVF');
</script>
</code></pre>
<p>As I understand the documentation, this should turn off the most problematic tracking, but still send a page view event. I took a look at it the following day, and everything seemed to be ok, but now, a couple of weeks later, page views reported by Google Analytics have dropped drastically. Not to zero, but to near zero.</p>
<p>I’ve spent a bit of time trying to figure out what’s happening. I used <a href="https://tagassistant.google.com">google tag assistant</a> and it indicates the page view events are being sent correctly. But that doesn’t explain why I’m not seeing the page views in my Google data.</p>
<p>I’m not sure what to do next. I don’t want to spend too much time on this, after all I’d rather work on writing and editing. I did consider other services to do the tracking, but it looks we’re talking about $100s a month - and it’s just not worth that much to me. There are open source setups I could try an configure on my server, but again that’s effort I don’t really want to go into. Maybe I just live without analytics data.</p>
Bliki: Say Your Writing2025-05-28T09:50:00-04:00https://martinfowler.com/bliki/SayYourWriting.html
<p>Here's one of the best tips I know for writers, which was told to me by
Bruce Eckel.</p>
<p>Once you've got a reasonable draft, read it out loud. By doing this you'll
find bits that don't sound right, and need to fix. Interestingly, you don't
actually have to vocalize (thus making a noise) but your lips have to
move.
<sup>1</sup>
</p>
<p>This advice is for those who, like me, strive to get a conversational tone
to their writings. A lot of people are taught to write in a different way
than they speak, but I find prose much more engaging with this conversational
tone. I imagine I'm sitting in pub, explaining the concepts to my companions.
I've heard people say that when reading my work, they can hear me speaking it
- which is exactly the effect I'm after. </p>
<p>Too often I read prose that feels flabby. Two kinds of flab stand out:
corporate prose and academic prose. I often tell people that if they read
their prose and it sounds like it could have come from Accenture
<sup>2</sup>
, then they are doing it wrong. And, of course, the passive
voice is rarely preferred. Speaking makes this flab noticeable, so we can cut
it out.</p>
<p>In my case I find I constantly (silently) speak the words as I'm writing.</p>
<div class="footnote-list">
<h2>Notes</h2>
<div class="footnote-list-item" id="footnote-vocalize">
<p><span class="num">1: </span>
I suspect what matters here is that you need to trigger the part of your
brain that processes spoken word as opposed to written word - and that
part is sensitive to blandness.
</p>
</div>
<div class="footnote-list-item" id="footnote-accenture">
<p><span class="num">2: </span>
I pick on Accenture since they are a big consulting company, and thus do
all the things needed to sound blandly corporate. The worst case I ran
into was many years ago when some sparkling prose by a colleague of mine
was turned by editors at Microsoft into a tasteless pudding. There is a
perceptible corporate way of writing, often learned subconsciously, that is rife
and ruinous.
</p>
</div>
</div>
Interviewed by James Lewis at goto Copenhagen2025-05-23T13:48:00-04:00tag:martinfowler.com,2025-05-23:Interviewed-by-James-Lewis-at-goto-Copenhagen
<div class = 'img-link'><a href = 'https://www.youtube.com/watch?v=xsMUuOwv7IA'><img src = 'https://martinfowler.com/img/catalog/2024-goto-chat.png' width = ''></img></a></div>
<p>At goto copenhagen last year, my friend James Lewis <a href = 'https://www.youtube.com/watch?v=xsMUuOwv7IA'>interviewed
me</a> and Goto have just released the video. I talk about when I
learned about iterative design from Kent Beck, the dangers of product
owners interfering with business-developer communication, and writing the
agile manifesto. During this he specifically asked about my essay Is
Design Dead. There's also a some audience questions asking if pair
programming is a bad thing for introverts like us (no), and (inevitably)
the role of LLMs for programmers today.</p>
<p><a class = 'more' href = 'https://www.youtube.com/watch?v=xsMUuOwv7IA'>more…</a></p>Refresh of Agile Threat Modeling2025-05-20T09:20:00-04:00tag:martinfowler.com,2025-05-20:Refresh-of-Agile-Threat-Modeling
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/agile-threat-modelling.html'><img src = 'https://martinfowler.com/articles/agile-threat-modelling/card.png' width = '350px'></img></a></div>
<p>Threat modeling is a systems engineering practice where teams examine
how data flows through systems to identify what can go wrong - a
deceptively simple act that reveals security risks that automated tools
cannot anticipate. Often this is done by security analysts as a separate
or upfront activity, but <b class = 'author'>Jim Gumbley</b> wrote an article in
2020 explaining how it could be done by teams through small and regular
work.</p>
<p>Now <b class = 'author'>Gayathri Mohan</b> has joined Jim to <a href = 'https://martinfowler.com/articles/agile-threat-modelling.html'>rewrite the
article</a>, incorporating what both have them learned about doing and
teaching this practice in the last few years. In particular they have
extended their approach to perform threat modeling with platform
teams.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/agile-threat-modelling.html'>more…</a></p>Building Custom Tooling with LLMs2025-05-14T10:10:00-04:00tag:martinfowler.com,2025-05-14:Building-Custom-Tooling-with-LLMs
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/16-building-custom-tooling-with-llms.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p>Tools that treat diagrams as code, such as PlantUML, are invaluable
for communicating complex system behavior. But <b class = 'author'>Unmesh
Joshi</b> often wished for an extension to walk through these
diagrams step-by-step. Yet, extending established tools like PlantUML
often involves significant initial setup - parsing hooks, build scripts,
viewer code, packaging - enough “plumbing” to deter rapid prototyping.</p>
<p>He narrates now he <a href = 'https://martinfowler.com/articles/exploring-gen-ai/16-building-custom-tooling-with-llms.html'>used an LLM to build a small extension</a>
adding step-wise playback to PlantUML sequence diagrams. This illustrates
how syntax design, parsing, SVG generation, build automation, and an HTML
viewer were iteratively developed through a conversation with an LLM -
turning tedious tasks into manageable steps.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/16-building-custom-tooling-with-llms.html'>more…</a></p>Coding Assistants Threaten the Software Supply Chain2025-05-13T09:11:00-04:00tag:martinfowler.com,2025-05-13:Coding-Assistants-Threaten-the-Software-Supply-Chain
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/software-supply-chain-attack-surface.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p>We have long recognized that developer environments represent a weak
point in the software supply chain. <b class = 'author'>Jim Gumbley and Lilly
Ryan</b> explore how agentic coding assistants <a href = 'https://martinfowler.com/articles/exploring-gen-ai/software-supply-chain-attack-surface.html'>expand the attack
surface</a> of software supply chains and what measures we need to do to
safeguard security when using them.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/software-supply-chain-attack-surface.html'>more…</a></p>Function calling using LLMs2025-05-06T09:02:00-04:00tag:martinfowler.com,2025-05-06:Function-calling-using-LLMs
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/function-call-LLM.html'><img src = 'https://martinfowler.com/articles/function-call-LLM/card.png' width = '350px'></img></a></div>
<p>While LLMs excel at generating cogent text based on their training
data, they may also need to interact with external systems. <b class = 'author'>Kiran
Prakash</b> describes how we get them to construct external <a href = 'https://martinfowler.com/articles/function-call-LLM.html'>function
calls</a> to do this. The LLM does not execute these calls directly, instead
it creates a data structure that describes the call, passing that to a
separate program for execution and further processing. The LLM's prompt
includes details about possible function calls and when they should be
used.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/function-call-LLM.html'>more…</a></p>Building TMT Mirror Visualization with LLM2025-04-30T09:54:00-04:00tag:martinfowler.com,2025-04-30:Building-TMT-Mirror-Visualization-with-LLM
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/15-building-tmt-mirror-visualization.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p>Creating a user interface that visualizes a real-world structure —
like the Thirty Meter Telescope's mirror — might seem like a task that
demands deep knowledge of geometry, D3.js, and SVG graphics. But with a
Large Language Model (LLM) like Claude or ChatGPT, you don't need to know
everything upfront. <b class = 'author'>Unmesh Joshi</b> describes how working
with an LLM <a href = 'https://martinfowler.com/articles/exploring-gen-ai/15-building-tmt-mirror-visualization.html'>gave him a working prototype</a> even when he's
unfamiliar with the underlying tech. </p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/15-building-tmt-mirror-visualization.html'>more…</a></p>Additional explanatory material for the Deepseek Overview2025-04-21T09:07:00-04:00tag:martinfowler.com,2025-04-21:Additional-explanatory-material-for-the-Deepseek-Overview
<p>A couple of months ago, my colleague <b class = 'author'>Shayan Mohanty</b>
published a <a href = 'https://martinfowler.com/articles/deepseek-papers.html'>technical overview</a> of the series of papers describing
the deepseek AI models. He's now gone through that article, adding
more explanations to make it more digestible for those of us who don't
have a background in building these kinds of models.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/deepseek-papers.html'>more…</a></p>Guiding an LLM for Robust Java ByteBuffer Code2025-04-17T09:39:00-04:00tag:martinfowler.com,2025-04-17:Guiding-an-LLM-for-Robust-Java-ByteBuffer-Code
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai/14-guiding-llm-java-bytebuffer.html'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/donkey-card.png' width = ''></img></a></div>
<p>AI editors like Cursor can generate code with remarkable speed using
LLMs, handling boilerplate and providing functional snippets for various
tasks. However, when building robust systems, functional correctness is
only the starting point. Code must also be safe, predictable,
maintainable, and free from subtle side effects. <b class = 'author'>Unmesh
Joshi</b> demonstrates, through a <a href = 'https://martinfowler.com/articles/exploring-gen-ai/14-guiding-llm-java-bytebuffer.html'>dialogue between a developer and an
LLM</a>, how expert guidance is crucial to transform an initial, potentially
unsafe code snippet into a robust, system-ready component.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai/14-guiding-llm-java-bytebuffer.html'>more…</a></p>Updating yesterday's post on social media engagement2025-04-04T14:32:00-04:00tag:martinfowler.com,2025-04-04:Updating-yesterday-s-post-on-social-media-engagement
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/2025-social-traffic.html'><img src = 'https://martinfowler.com/articles/2025-social-traffic/card.png' width = '350px'></img></a></div>
<p>Some people asked about how many people clicked through the links on
these social media posts. I've added <a href = 'https://martinfowler.com/articles/2025-social-traffic.html'>some more to the article</a>, partly to
explain why I don't have that information, and partly to show overall
source data for traffic to the site. </p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/2025-social-traffic.html'>more…</a></p>Social Media Engagement in Early 20252025-04-03T09:41:00-04:00tag:martinfowler.com,2025-04-03:Social-Media-Engagement-in-Early-2025
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/2025-social-traffic.html'><img src = 'https://martinfowler.com/articles/2025-social-traffic/card.png' width = '350px'></img></a></div>
<p>A few years ago, whenever I published a new article here, I would just
announce it on Twitter, but since the Muskover its importance has
declined, and now I post updates to several services. To compare
engagement on these services, I've looked at reposts, likes, and replies
to two dozen of my recent posts.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/2025-social-traffic.html'>more…</a></p>I've been kidnapped by Robert Caro2025-04-01T17:22:00-04:00tag:martinfowler.com,2025-04-01:I-ve-been-kidnapped-by-Robert-Caro
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/2025-caro.html'><img src = 'https://martinfowler.com/articles/power-broker-card.png' width = ''></img></a></div>
<p>I've always enjoyed reading, and for most of my life I've particularly
enjoyed reading history. I've head many great things about Robert
Caro's books, but was deterred by their size. Finally, with his
first book newly available as an ebook, I decided to dip my toes in. The
books <a href = 'https://martinfowler.com/articles/2025-caro.html'>are too good for me to escape</a>.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/2025-caro.html'>more…</a></p>The role of developer skills in agentic coding2025-03-25T10:39:00-04:00tag:martinfowler.com,2025-03-25:The-role-of-developer-skills-in-agentic-coding
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/exploring-gen-ai.html#memo-13'><img src = 'https://martinfowler.com/articles/exploring-gen-ai/ai-missteps-overview.png' width = ''></img></a></div>
<p>As agentic coding assistants get more capable,
<b class = 'author'>Birgitta Böckeler</b> is trying them to change existing
codebases. This has led to some impressive collaboration sessions, but
she's needed to intervene, correct and steer all the time. In <a href = 'https://martinfowler.com/articles/exploring-gen-ai.html#memo-13'>her latest
post</a>, she describes examples of these interventions, giving ideas of the
types of skills we currently need to correct the tools' missteps. </p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-gen-ai.html#memo-13'>more…</a></p>Commenting on removing "X" on US passports2025-02-26T11:49:00-05:00https://martinfowler.com/articles/2025-passport-x.htmlMartin Fowler[email protected]https://martinfowler.com<p>The new US administration has decided to eliminate the “X” option for gender/sex on passports. I have several non-binary friends, and I don’t see why they should have to select an option that makes no sense for them. I also don’t see how an “X” option on identity documents causes a material problem for anyone else. There’s not much I can do to object to this change, but one little thing is to add a comment on the Federal Register for such rule changes. There are three such pages:</p>
<p>DS-11 new passport application: (deadline 3/17/25) <a href="https://www.federalregister.gov/documents/2025/02/14/2025-02648/30-day-notice-of-proposed-information-collection-application-for-a-us-passport">https://www.federalregister.gov/documents/2025/02/14/2025-02648/30-day-notice-of-proposed-information-collection-application-for-a-us-passport</a></p>
<p>DS-82 passport renewal: (deadline 3/20/25)
<a href="https://www.federalregister.gov/documents/2025/02/18/2025-02697/30-day-notice-of-proposed-information-collection-us-passport-renewal-application-for-eligible">https://www.federalregister.gov/documents/2025/02/18/2025-02697/30-day-notice-of-proposed-information-collection-us-passport-renewal-application-for-eligible</a></p>
<p>DS-5504 name change or data corrections: (deadline 3/20/25)
<a href="https://www.federalregister.gov/documents/2025/02/18/2025-02696/30-day-notice-of-proposed-information-collection-application-for-a-us-passport-for-eligible">https://www.federalregister.gov/documents/2025/02/18/2025-02696/30-day-notice-of-proposed-information-collection-application-for-a-us-passport-for-eligible</a></p>
<p>It didn’t take me more than a few minutes to make a brief comment (essentially the first three sentences of this post) on all three. Pretty inconsequential compared to the problems facing my non-binary friends.</p>
GenAI Patterns: Fine Tuning2025-02-25T07:20:00-05:00tag:martinfowler.com,2025-02-25:GenAI-Patterns--Fine-Tuning
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/gen-ai-patterns/#fine-tuning'><img src = 'https://martinfowler.com/articles/gen-ai-patterns//card.png' width = '350px'></img></a></div>
<p>While RAG is the most common way to focus a foundation model on
material outside its training set, <b class = 'author'>Bharani Subramaniam</b>
and I now finish our current batch of patterns by examining our experience
with <a href = 'https://martinfowler.com/articles/gen-ai-patterns/#fine-tuning'>Fine Tuning</a> where we learned to prioritize
curating high-quality data.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/gen-ai-patterns/#fine-tuning'>more…</a></p>GenAI Patterns: Guardrails and RAG overview2025-02-19T07:02:00+07:00tag:martinfowler.com,2025-02-19:GenAI-Patterns--Guardrails-and-RAG-overview
<div class = 'img-link'><a href = 'https://martinfowler.com/articles/gen-ai-patterns/#guardrails'><img src = 'https://martinfowler.com/articles/gen-ai-patterns//card.png' width = '350px'></img></a></div>
<p>Gen AI systems are gullible, and can easily be tricked into responding
in ways that are contrary to an enterprise's policies or leak
confidential information. <b class = 'author'>Bharani
Subramaniam</b> and I describe how we can counter this by adding
<a href = 'https://martinfowler.com/articles/gen-ai-patterns/#guardrails'>guardrails</a> at the boundaries of the request/response flow. We also
conclude our discussion of RAG with an overview of how all the RAG
component patterns fit together.</p>
<p><a class = 'more' href = 'https://martinfowler.com/articles/gen-ai-patterns/#guardrails'>more…</a></p>