| 1 | <!DOCTYPE html> |
| 2 | <html lang="en"> |
| 3 | <head> |
| 4 | <meta charset="utf-8"> |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 6 | <title>Prompt & carbon ledger — Paul Campbell</title> |
| 7 | <link rel="icon" href="/icon.png" type="image/png"> |
| 8 | <link rel="icon" href="/icon.svg" type="image/svg+xml"> |
| 9 | </head> |
| 10 | <body> |
| 11 | |
| 12 | <h1>Prompt & carbon ledger</h1> |
| 13 | |
| 14 | <p>This site is built and maintained by <a href="https://claude.com/claude-code">Claude Code</a> |
| 15 | (model: Claude Fable 5). Nothing here was written by hand except the prompts below. |
| 16 | Each row records an instruction given to the agent, what came of it, and a rough |
| 17 | estimate of the energy and carbon the AI work cost. Newest first.</p> |
| 18 | |
| 19 | <table border="1" cellpadding="6"> |
| 20 | <tr> |
| 21 | <th>Date</th> |
| 22 | <th>Prompt (verbatim)</th> |
| 23 | <th>What happened</th> |
| 24 | <th>Est. energy</th> |
| 25 | <th>Est. CO₂e</th> |
| 26 | <th>Roughly equivalent to</th> |
| 27 | </tr> |
| 28 | <tr> |
| 29 | <td>July 26, 2026</td> |
| 30 | <td>“Switching from Claude to GPT-OSS on my gaming rig in the home office.”</td> |
| 31 | <td>Switched to a local open‑source LLM running on an RTX 3090 GPU. No data leaves home and energy per prompt is roughly 2 Wh.</td> |
| 32 | <td>~2 Wh</td> |
| 33 | <td>~0.8 g</td> |
| 34 | <td>A half‑hour of a 5 W LED bulb</td> |
| 35 | </tr> |
| 36 | <tr> |
| 37 | <td>July 25, 2026</td> |
| 38 | <td>“Remove all the formatting. Just use semantic HTML tags. I don't want any formatting.”</td> |
| 39 | <td>Stripped the blog post of every CSS class, stylesheet link, Stimulus controller, |
| 40 | and <em>/<strong> formatting — just bare <code><article></code>, <code><p></code>, |
| 41 | <code><a></code>.</td> |
| 42 | <td>~5 Wh</td> |
| 43 | <td>~2 g</td> |
| 44 | <td>Four minutes of a smartphone charging</td> |
| 45 | </tr> |
| 46 | <tr> |
| 47 | <td>July 25, 2026</td> |
| 48 | <td>“Can the post get a back link to the homepage?”</td> |
| 49 | <td>Added a plain <code><nav></code> with a “← Home” anchor at the top |
| 50 | of the post.</td> |
| 51 | <td>~3 Wh</td> |
| 52 | <td>~1 g</td> |
| 53 | <td>Ten seconds of an e-bike motor</td> |
| 54 | </tr> |
| 55 | <tr> |
| 56 | <td>July 25, 2026</td> |
| 57 | <td>“Let's add a "blog post" to the "Writing"” |
| 58 | — and I wrote the wording.</td> |
| 59 | <td>Publishing Paul's first proper blog post: “Using an LLM ‘off-the-grid’&rdquo. |
| 60 | Also added a link under the Writing section on the index page.<br> |
| 61 | <i>(Committed as <a href="https://github.com/paulca/paulca.com/commit/aa30a29">aa30a29</a>)</i></td> |
| 62 | <td>~15 Wh</td> |
| 63 | <td>~6 g</td> |
| 64 | <td>A full phone charge, then a little more</td> |
| 65 | </tr> |
| 66 | <tr> |
| 67 | <td>July 21, 2026</td> |
| 68 | <td>“Prompts should be sorted bottom up not top down”</td> |
| 69 | <td>Reversed the table: newest entries now sit at the top. About 5 model |
| 70 | invocations.</td> |
| 71 | <td>~5 Wh</td> |
| 72 | <td>~2 g</td> |
| 73 | <td>Ten minutes of a 30 W laptop</td> |
| 74 | </tr> |
| 75 | <tr> |
| 76 | <td>July 21, 2026</td> |
| 77 | <td>“ALong with Est. energy and Est. CO₂e, can we have a column that |
| 78 | does a random comparison like the ‘boiling water’ |
| 79 | comparison?”</td> |
| 80 | <td>Added this column. About 6 model invocations.</td> |
| 81 | <td>~6 Wh</td> |
| 82 | <td>~2.5 g</td> |
| 83 | <td>45 minutes of a home Wi-Fi router</td> |
| 84 | </tr> |
| 85 | <tr> |
| 86 | <td>July 21, 2026</td> |
| 87 | <td>Quoting this page’s method section — “> Anthropic doesn't |
| 88 | publish per-request energy figures” — “Anthropic, in their |
| 89 | cowardice, doesn't”.</td> |
| 90 | <td>Sharpened the editorial line below. About 5 model invocations.</td> |
| 91 | <td>~5 Wh</td> |
| 92 | <td>~2 g</td> |
| 93 | <td>Half a kilometre on an e-bike</td> |
| 94 | </tr> |
| 95 | <tr> |
| 96 | <td>July 21, 2026</td> |
| 97 | <td>Four short follow-ups while waiting on the HTTPS certificate, ending with |
| 98 | “Oh, it's done”.</td> |
| 99 | <td>Pointed Paul at the GitHub Pages settings page (he pressed “Check”, |
| 100 | which unstuck certificate provisioning), supplied DNS verification commands, |
| 101 | then enabled HTTPS enforcement and verified every URL against the Pages edge. |
| 102 | About 15 model invocations.</td> |
| 103 | <td>~15 Wh</td> |
| 104 | <td>~6 g</td> |
| 105 | <td>One full phone charge</td> |
| 106 | </tr> |
| 107 | <tr> |
| 108 | <td>July 21, 2026</td> |
| 109 | <td>“Can I add a prompt and carbon-use ledger to this site?”</td> |
| 110 | <td>Added this page. About 8 model invocations.</td> |
| 111 | <td>~8 Wh</td> |
| 112 | <td>~3 g</td> |
| 113 | <td>35 seconds of an 800 W microwave</td> |
| 114 | </tr> |
| 115 | <tr> |
| 116 | <td>July 21, 2026</td> |
| 117 | <td>“Put Mastodon https://mastodon.social/@paulca above BlueSky, lose |
| 118 | Twitter.”</td> |
| 119 | <td>Reordered the links on the home page. About 6 model invocations.</td> |
| 120 | <td>~6 Wh</td> |
| 121 | <td>~2.5 g</td> |
| 122 | <td>An hour of a 6 W LED bulb</td> |
| 123 | </tr> |
| 124 | <tr> |
| 125 | <td>July 21, 2026</td> |
| 126 | <td>“I want to replace paulca.com with a static site, default browser styles, |
| 127 | like those old original sites that college professors used to have. It will just |
| 128 | be a short bio, and link out to various profiles that I have. Let's capture a |
| 129 | static copy of the microblog that's there already, and host it on GitHub pages. |
| 130 | I think you have all the access on GitHub and DNSimple required to make it |
| 131 | happen.”</td> |
| 132 | <td>Mirrored the Pterodon microblog (113 posts plus replies), built this site, |
| 133 | created the <a href="https://github.com/paulca/paulca.com">paulca/paulca.com</a> |
| 134 | repo, enabled GitHub Pages, and switched DNS from the old Rails server to |
| 135 | GitHub Pages. About 40 model invocations.</td> |
| 136 | <td>~40 Wh</td> |
| 137 | <td>~16 g</td> |
| 138 | <td>Charging a phone from flat, three times over</td> |
| 139 | </tr> |
| 140 | </table> |
| 141 | |
| 142 | <p><b>Running total:</b> ~110 Wh, ~44 g CO₂e — just shy of the energy it takes to boil a litre of water, or the emissions of driving a petrol car about 260 metres.</p> |
| 143 | takes to boil a litre of water, or the emissions of driving a petrol car about 260 |
| 144 | metres.</p> |
| 145 | |
| 146 | <h2>Method</h2> |
| 147 | |
| 148 | <p>Anthropic, in their cowardice, doesn't publish per-request energy figures, so these are |
| 149 | order-of-magnitude estimates, not measurements. The arithmetic: |
| 150 | <i>(model invocations in the session) × 1 Wh per invocation × |
| 151 | 400 g CO₂e per kWh</i> (a rough global-average grid intensity). Published |
| 152 | measurements for single chat queries are around 0.24–0.33 Wh |
| 153 | (Google's 2025 Gemini disclosure); 1 Wh per invocation is deliberately |
| 154 | generous because agentic coding calls carry much longer contexts than chat. |
| 155 | Training-run amortisation, network transfer, and this page being served are not |
| 156 | counted. Treat every number as right to within a factor of ten, at best.</p> |
| 157 | |
| 158 | <p>The ledger is append-only: each time the agent works on this site, it adds a row |
| 159 | at the top.</p> |
| 160 | |
| 161 | <hr> |
| 162 | |
| 163 | <p><a href="/">Home</a></p> |
| 164 | |
| 165 | </body> |
| 166 | </html> |
| 167 | |