paulca / paulca.com Public

Add blog post: AI as augmentation

OpenCode Agent 1841116fc182829fc40a64b1c738b85389ee26b0 parent afcdf2a
5 files changed, +84 −2
  • docs/ai.html +12 −2
  • docs/blog/ai-as-augmentation/index.html +36 −0
  • docs/index.html +1 −0
  • src/blog/ai-as-augmentation.md +26 −0
  • src/ledger/2026-07-26-01-augmentation.md +9 −0
diff --git a/docs/ai.html b/docs/ai.html
index 7cca1fc..feb34ed 100644
--- a/docs/ai.html
+++ b/docs/ai.html
@@ -29,6 +29,16 @@ the AI work cost. Newest first.</p>
<th>Est. CO&#8322;e</th>
<th>Roughly equivalent to</th>
</tr>
+<tr>
+ <td>July 26, 2026</td>
+ <td>Qwen3-Coder 30B (Ollama)</td>
+ <td>&quot;Write a blog post about AI as augmentation with the provided content.&quot;</td>
+ <td><p>Created blog post: &quot;AI as augmentation&quot; - Paul's reflections on how AI assistance enables better iteration and closure of the gap between intention and execution, using Tito's webhook implementation as a case study.</p>
+</td>
+ <td>~4 Wh</td>
+ <td>~1.6 g</td>
+ <td>A few minutes of a smartphone charging</td>
+</tr>
<tr>
<td>July 25, 2026</td>
<td>Claude Fable 5</td>
@@ -307,8 +317,8 @@ Pages. About 40 model invocations.</p>
</tr>
</table>
-<p><b>Running total:</b> ~199 Wh,
-~79 g CO&#8322;e &mdash;
+<p><b>Running total:</b> ~203 Wh,
+~81 g CO&#8322;e &mdash;
just shy of the energy it takes to boil two litres of water, or the emissions of driving a petrol car about 450 metres.</p>
<h2>Method</h2>
diff --git a/docs/blog/ai-as-augmentation/index.html b/docs/blog/ai-as-augmentation/index.html
new file mode 100644
index 0000000..204fa4b
--- /dev/null
+++ b/docs/blog/ai-as-augmentation/index.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>AI as augmentation &mdash; Paul Campbell</title>
+<link rel="icon" href="/icon.png" type="image/png">
+<link rel="icon" href="/icon.svg" type="image/svg+xml">
+</head>
+<body>
+
+<nav><a href="/">← Home</a></nav>
+
+<article style="max-width:80ch">
+<header>
+<small>Paul Campbell • July 26, 2026</small>
+<h1>AI as augmentation</h1>
+</header>
+
+<p>One of the first &quot;oh shit&quot; moments for me wasn't when an AI customer support agent solved my problem (to date, I don't believe any AI agent has solved any problem I've reported). It was when it helped me do a better job of something than I wouldn't otherwise have been able to do or able to afford.</p>
+<p>Tito is an interesting case for this. Tito is a pretty healthy business that has grown well beyond our initial &quot;€20k per month so we can quit our jobs&quot; dreamline. But it hasn't grown so much that we can afford to hire anyone full-time, and that's been true for a number of years. The status quo is, for any piece of work: who will do it, and do we have time?</p>
+<p>There's a third intangible factor though: where do we stop polishing?</p>
+<p>Along with the enshittification of everything, gradually there has been a rising tide in expectations for how certain software works. Slowly enshittifying companies like GitHub, Stripe, and Revolut add delight to mundane things like pushing code, consuming APIs, and transferring money. And that's great!</p>
+<p>But for a small team, the rising tide isn't always &quot;download a library and it will be delightful&quot;. There's still layers and layers of work required to take any one feature and polish it until it shines. For a product as rich in features as Tito, that simply means: compromise.</p>
+<p>One such feature for me was webhooks. Tito Classic has supported webhooks since almost day one (fun aside: in 2007 I attended something in California called &quot;Super Happy Dev House&quot;, where one of the talks was about this idea that some guy had to allow web apps to send messages and &quot;hook&quot; into other web apps).</p>
+<p>Webhooks are very clever, and very useful, but in general, the tooling around them is very bad. Most of my use of webhooks ends up just pushing buttons, catching the webhook somewhere, tweaking some code, and doing that over and over until things just about work.</p>
+<p>Tito Classic's webhooks are very much borne of that &quot;hack until it works&quot; philosophy: Did the webhook send? Can I trigger a new one easily? Can I inspect the payload sender-side without catching it? Is the schema webhook-specific or does it match the REST API?</p>
+<p>When it came to implementing webhooks in Tito Pro last year, with agentic assistance (who names this shit?), I was able to keep going on the webhooks feature until it had all the attributes that I would expect a webhook implementation to have of a service I expect. Pro's webhook implementation features previews, retries, logs, and the webhook schema exactly matches the API schema: in fact they're derived from the same implementation, so in theory they will never drift.</p>
+<p>That was my first &quot;oh shit&quot; moment, with receipts. I built the Tito Classic webhooks implementation in 2016, and when it was &quot;good enough&quot;, I dropped it and moved on to the next thing. The programming tools I had available didn't really change between 2015 and 2025, so it was fairly like for like. What changed was my ability to keep iterating without burning out, without getting distracted by another challenge, and without procrastinating on doing something because it was &quot;too hard&quot;.</p>
+<p>When working assisted allows me to a better version of myself and to close the gap between what I intend to do and what I end up doing, it's very hard to go back to working unassisted.</p>
+
+</article>
+
+
+</body>
+</html>
diff --git a/docs/index.html b/docs/index.html
index e7d5e0d..3f2d52b 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -28,6 +28,7 @@
<h2>Writing</h2>
<ul>
+<li><a href="/blog/ai-as-augmentation/">AI as augmentation</a> (July 26, 2026)</li>
<li><a href="/blog/using-an-llm-off-the-grid/">Using an LLM &quot;off-the-grid&quot;</a> (July 25, 2026)</li>
<li><a href="/microblog/">Microblog archive</a> (2024&ndash;2026)</li>
</ul>
diff --git a/src/blog/ai-as-augmentation.md b/src/blog/ai-as-augmentation.md
new file mode 100644
index 0000000..cc53847
--- /dev/null
+++ b/src/blog/ai-as-augmentation.md
@@ -0,0 +1,26 @@
+---
+title: AI as augmentation
+date: 2026-07-26
+---
+
+One of the first "oh shit" moments for me wasn't when an AI customer support agent solved my problem (to date, I don't believe any AI agent has solved any problem I've reported). It was when it helped me do a better job of something than I wouldn't otherwise have been able to do or able to afford.
+
+Tito is an interesting case for this. Tito is a pretty healthy business that has grown well beyond our initial "€20k per month so we can quit our jobs" dreamline. But it hasn't grown so much that we can afford to hire anyone full-time, and that's been true for a number of years. The status quo is, for any piece of work: who will do it, and do we have time?
+
+There's a third intangible factor though: where do we stop polishing?
+
+Along with the enshittification of everything, gradually there has been a rising tide in expectations for how certain software works. Slowly enshittifying companies like GitHub, Stripe, and Revolut add delight to mundane things like pushing code, consuming APIs, and transferring money. And that's great!
+
+But for a small team, the rising tide isn't always "download a library and it will be delightful". There's still layers and layers of work required to take any one feature and polish it until it shines. For a product as rich in features as Tito, that simply means: compromise.
+
+One such feature for me was webhooks. Tito Classic has supported webhooks since almost day one (fun aside: in 2007 I attended something in California called "Super Happy Dev House", where one of the talks was about this idea that some guy had to allow web apps to send messages and "hook" into other web apps).
+
+Webhooks are very clever, and very useful, but in general, the tooling around them is very bad. Most of my use of webhooks ends up just pushing buttons, catching the webhook somewhere, tweaking some code, and doing that over and over until things just about work.
+
+Tito Classic's webhooks are very much borne of that "hack until it works" philosophy: Did the webhook send? Can I trigger a new one easily? Can I inspect the payload sender-side without catching it? Is the schema webhook-specific or does it match the REST API?
+
+When it came to implementing webhooks in Tito Pro last year, with agentic assistance (who names this shit?), I was able to keep going on the webhooks feature until it had all the attributes that I would expect a webhook implementation to have of a service I expect. Pro's webhook implementation features previews, retries, logs, and the webhook schema exactly matches the API schema: in fact they're derived from the same implementation, so in theory they will never drift.
+
+That was my first "oh shit" moment, with receipts. I built the Tito Classic webhooks implementation in 2016, and when it was "good enough", I dropped it and moved on to the next thing. The programming tools I had available didn't really change between 2015 and 2025, so it was fairly like for like. What changed was my ability to keep iterating without burning out, without getting distracted by another challenge, and without procrastinating on doing something because it was "too hard".
+
+When working assisted allows me to a better version of myself and to close the gap between what I intend to do and what I end up doing, it's very hard to go back to working unassisted.
diff --git a/src/ledger/2026-07-26-01-augmentation.md b/src/ledger/2026-07-26-01-augmentation.md
new file mode 100644
index 0000000..aabd50d
--- /dev/null
+++ b/src/ledger/2026-07-26-01-augmentation.md
@@ -0,0 +1,9 @@
+---
+model: Qwen3-Coder 30B (Ollama)
+wh: 4
+co2_g: 1.6
+comparison: A few minutes of a smartphone charging
+prompt: >-
+ "Write a blog post about AI as augmentation with the provided content."
+---
+Created blog post: "AI as augmentation" - Paul's reflections on how AI assistance enables better iteration and closure of the gap between intention and execution, using Tito's webhook implementation as a case study.
\ No newline at end of file