<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Danny Smith - Notes</title><description>Latest notes from Danny Smith</description><link>https://danny.is/</link><item><title>Cobalt Next for Zed</title><link>https://danny.is/notes/cobalt-next-for-zed/</link><guid isPermaLink="true">https://danny.is/notes/cobalt-next-for-zed/</guid><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Having &lt;a href=&quot;/notes/switching-back-to-vscode&quot;&gt;recently switched from Cursor back to VSCode&lt;/a&gt;, I figured it was probably worth taking another look at &lt;a href=&quot;https://zed.dev/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Zed&lt;/a&gt; – if only so I have a second text editor configured how I like it. Zed comes with a lot of the features I want baked-in and it was pretty trivial to port my VSCode config over. But I was surprised to discover that nobody seems to have ported the &lt;a href=&quot;https://github.com/davidleininger/cobaltnext-vscode&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Cobalt Next&lt;/a&gt; theme to Zed’s theme format.&lt;/p&gt;
&lt;p&gt;So I went ahead and did that as best I could…&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-04-09-screenshot.BNNKnfNh_ahjnP.webp&quot; srcset=&quot;/_astro/2026-04-09-screenshot.BNNKnfNh_Z2oLEut.webp 640w, /_astro/2026-04-09-screenshot.BNNKnfNh_rkYAY.webp 750w, /_astro/2026-04-09-screenshot.BNNKnfNh_15x9Lv.webp 828w, /_astro/2026-04-09-screenshot.BNNKnfNh_Esa9W.webp 1080w, /_astro/2026-04-09-screenshot.BNNKnfNh_ahjnP.webp 1225w&quot; alt=&quot;screenshot of Cobalt Next theme in Zed&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1225px) 1225px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1225&quot; height=&quot;820&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can &lt;a href=&quot;https://github.com/dannysmith/zed-cobalt-next-theme&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;grab it on GitHub&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Switching back to VSCode</title><link>https://danny.is/notes/switching-back-to-vscode/</link><guid isPermaLink="true">https://danny.is/notes/switching-back-to-vscode/</guid><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I switched from VSCode to Cursor as my main editor sometime in early 2025, primarily for the &lt;em&gt;much better&lt;/em&gt; tab completion it had at the time. As my workflow has evolved over the last six months I’ve found myself using Cursor’s AI &lt;strong&gt;features&lt;/strong&gt; less and less, to the point where for the most part I just use it as a normal text editor. While AI tab-completion is still &lt;em&gt;sometimes&lt;/em&gt; useful, I’m finding more and more that anywhere I’m manually writing or editing code, normal non-AI completion tends to do the job just fine.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cursor.com/blog/cursor-3&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Cursor 3 was announced&lt;/a&gt; on April 3, and as expected it isn’t really a text editor anymore. I’ve yet to spend much time with it but I do know that there’s no longer a good reason for me to use Cursor &lt;strong&gt;as a text editor&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-i-use-a-text-editor-in-april-2026&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#how-i-use-a-text-editor-in-april-2026&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;How I use a text editor in April 2026&lt;/h2&gt;
&lt;p&gt;My usual workflow at the moment involves having a project (or worktree) directory open in &lt;a href=&quot;/notes/2025-08-18-ghostty&quot;&gt;Ghostty&lt;/a&gt; with two panes: one for Claude Code TUI and one for a standard terminal. I have the same directory open in my editor, primarily for five things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Visually reviewing &amp;amp; tweaking uncommitted changes made by Claude.&lt;/li&gt;
&lt;li&gt;Manually staging and committing changes – I still mostly prefer to make my own commits on feature branches.&lt;/li&gt;
&lt;li&gt;Manually exploring &amp;amp; referencing the codebase as I’ve always done, only now it’s often so I can provide input to Claude rather than make edits myself.&lt;/li&gt;
&lt;li&gt;Manually writing or editing markdown files which describe requirements, tasks or plans before I have Claude read them.&lt;/li&gt;
&lt;li&gt;Occasionally, writing or editing actual code.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This means I basically need a &lt;strong&gt;normal editor&lt;/strong&gt; like VSCode configured how I like it, with a few specific additions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Standard” language extensions, as well as things like prettier, path-intellisense etc.&lt;/li&gt;
&lt;li&gt;Just enough git-related extensions that it’s well-integrated with git and GitHub.&lt;/li&gt;
&lt;li&gt;Extensions and configuration which makes it easy to work with markdown and CSV files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;my-new-vscode-setup&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#my-new-vscode-setup&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;My “new” VSCode setup&lt;/h2&gt;
&lt;p&gt;My guiding principle is to keep VSCode as close to its defaults as possible. I add cosmetic tweaks, formatting and linting, a fairly heavy markdown layer, and a deliberately small amount of AI tooling. Everything else is left alone.&lt;/p&gt;
&lt;p&gt;The theme is &lt;a href=&quot;https://github.com/davidleininger/cobaltnext-vscode&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Cobalt Next&lt;/a&gt; with a custom version of &lt;a href=&quot;https://www.typography.com/fonts/operator/styles&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Operator Mono&lt;/a&gt; that includes coding ligatures, set in 15px 200 weight. I’ve moved the activity bar to the &lt;strong&gt;top&lt;/strong&gt; of the window rather than its default spot on the left, and the cursor blinks with the “expand” animation and has smooth movement on. The minimap auto-hides and renders as colour blocks without characters. I use Atom-style keybindings (muscle memory from years ago that I’ve never managed to shake) and set a few other bits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tabs are 2 spaces.&lt;/li&gt;
&lt;li&gt;Final newlines get inserted on save and trailing whitespace gets trimmed (except in markdown and YAML).&lt;/li&gt;
&lt;li&gt;Prettier is the default formatter except for markdown, configured globally with single quotes, no semicolons, and &lt;code&gt;proseWrap: preserve&lt;/code&gt; so it doesn’t reflow my paragraphs.&lt;/li&gt;
&lt;li&gt;ESLint runs on save rather than as I type.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Format-on-save&lt;/em&gt; is deliberately off to avoid accidental big diffs when working with AI-generated code – I toggle it on or run it manually when I need it.&lt;/p&gt;
&lt;p&gt;Markdown is the most heavily customised part of the whole config, because I write a &lt;em&gt;lot&lt;/em&gt; of markdown and the defaults do things I actively dislike. Prettier is too aggressive with markdown – it reflows paragraphs, fights with my line break conventions and reformats lists in annoying ways. So &lt;code&gt;.md&lt;/code&gt; files use &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;yzhang.markdown-all-in-one&lt;/code&gt;&lt;/a&gt; as their default formatter instead, which is much more conservative.&lt;/p&gt;
&lt;p&gt;I disable markdown link validation, soft-wrap at column 100, and preserve trailing whitespace. I also customise the editor token colours so H1s render in cyan and H2s in magenta, which makes long documents much easier to scan. &lt;code&gt;cmd+b&lt;/code&gt; and &lt;code&gt;cmd+i&lt;/code&gt; are remapped to toggle bold and italic when in markdown or MDX files. I also have the following extensions installed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Markdown All in One&lt;/strong&gt;&lt;/a&gt; - Provides formatting, TOC generation, list continuation, keyboard shortcuts, basic table editing, and is the default formatter.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/qjebbs/vscode-markdown-extended&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Markdown Extended&lt;/strong&gt;&lt;/a&gt; - Adds a bunch of other niceties.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=TakumiI.markdowntable&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Markdown Table&lt;/strong&gt;&lt;/a&gt; - Makes working with tables a little easier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For AI I have exactly three extensions installed:&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;The official &lt;strong&gt;Claude Code&lt;/strong&gt; IDE extension, which connects the editor to a Claude Code session running in the terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt; – purely for inline tab completion, disabled for plaintext, markdown etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot Chat&lt;/strong&gt; – installed &lt;em&gt;only&lt;/em&gt; for the “Generate commit message” sparkle button in the Source Control view. I don’t use the chat panel, but the button is a feature of this extension and there’s no way to get it without installing the whole thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Git settings are minimal: smart commit is on (so I can commit without staging first), auto-fetch is on, and the “confirm sync” dialog is off. I have the &lt;a href=&quot;https://github.com/Microsoft/vscode-pull-request-github&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GitHub PR extension&lt;/a&gt; and a &lt;a href=&quot;https://github.com/pomber/git-history&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;file-history extension&lt;/a&gt; installed, but most of my git work happens in the terminal with &lt;code&gt;git&lt;/code&gt; and &lt;code&gt;gh&lt;/code&gt; – the extensions are just for the cases where in-editor review is genuinely faster.&lt;/p&gt;
&lt;p&gt;I also have language extensions for the things I work with regularly (Astro, Tailwind, Bun, Rust, Tauri, TOML, Vitest), plus a CSV editor and a PDF viewer.&lt;/p&gt;
&lt;p&gt;The full description lives in &lt;a href=&quot;https://github.com/dannysmith/dotfiles/blob/master/vscode-setup.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;vscode-setup.md&lt;/a&gt; in my dotfiles repo, along with the contents of my &lt;a href=&quot;https://github.com/dannysmith/dotfiles/blob/master/README.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;settings.json&lt;/code&gt;&lt;/a&gt; if you want to copy any of it.&lt;/p&gt;</content:encoded></item><item><title>Quoting: An appreciation for (technical) architecture (Interconnected)</title><link>https://danny.is/notes/2026-04-02-an-appreciation-for-technical-architecture/</link><guid isPermaLink="true">https://danny.is/notes/2026-04-02-an-appreciation-for-technical-architecture/</guid><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;But we want AI agents to solve coding problems quickly and in a way that is maintainable and adaptive and composable (benefiting from improvements elsewhere), and where every addition makes the whole stack better.&lt;/p&gt;
&lt;p&gt;So at the bottom is really great libraries that encapsulate hard problems, with great interfaces that make the “right” way the easy way for developers building apps with them. Architecture!&lt;/p&gt;
&lt;p&gt;While I’m vibing (I call it vibing now, not coding and not vibe coding) while I’m vibing, I am looking at lines of code less than ever before, and thinking about architecture more than ever before.&lt;/p&gt;
&lt;p&gt;I am sweating developer experience even though human developers are unlikely to ever be my audience.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Roberts Radios</title><link>https://danny.is/notes/roberts-radios/</link><guid isPermaLink="true">https://danny.is/notes/roberts-radios/</guid><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/_astro/2026-04-02-istream-radio.DP19HaJI_Z1FDB9.webp&quot; srcset=&quot;/_astro/2026-04-02-istream-radio.DP19HaJI_Z2uVzhs.webp 640w, /_astro/2026-04-02-istream-radio.DP19HaJI_1zscyf.webp 750w, /_astro/2026-04-02-istream-radio.DP19HaJI_1k42Lp.webp 828w, /_astro/2026-04-02-istream-radio.DP19HaJI_Z1tPGk7.webp 1080w, /_astro/2026-04-02-istream-radio.DP19HaJI_Z2nebCb.webp 1280w, /_astro/2026-04-02-istream-radio.DP19HaJI_Z1FDB9.webp 1500w&quot; alt=&quot;istream-radio.jpg&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1500px) 1500px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1500&quot; height=&quot;966&quot;&gt;&lt;/p&gt;
&lt;p&gt;I recently bought a &lt;a href=&quot;https://www.robertsradio.com/en-gb/revival-istream-3#rev-istreamltb&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Roberts Revival iStream 3L&lt;/a&gt; radio having wanted one for some time. It’s a &lt;strong&gt;beautiful thing&lt;/strong&gt;. I grew up in a house where Radio 4 was on constantly, mostly playing on an old Roberts which my mum carried about the house with her.&lt;/p&gt;
&lt;p&gt;While I have Amazon Echos in my kitchen, living room and office/bedroom, I still regularly find myself using my &lt;em&gt;phone&lt;/em&gt; to listen to podcasts and radio shows because I can take it with me as I potter about the house and garden. I have two problems with this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Phone speakers are &lt;em&gt;rubbish&lt;/em&gt; and wearing headphones at home is both isolating for me and anyone else I’m sharing a room with.&lt;/li&gt;
&lt;li&gt;I’m trying to spend more time with my phone tucked away in a drawer and out of mind.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What I really want here is a dedicated portable device which can play the radio without requiring my phone or laptop to even be switched on. I want it to sound warm like Radio 4 should, regardless of the volume. I want it to feel good and make me smile. I basically want &lt;strong&gt;my mum’s old Roberts radio&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But I also want a few modern features – I want it to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Play podcasts while my phone is off.&lt;/li&gt;
&lt;li&gt;Have an alarm clock and sleep timer.&lt;/li&gt;
&lt;li&gt;Act as a bluetooth speaker if I need it.&lt;/li&gt;
&lt;li&gt;Recharge itself when plugged in to mains power.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which is &lt;em&gt;exactly&lt;/em&gt; what the Revival iStream 3L does. It looks, feels and sounds like a classic Roberts and supports FM &amp;amp; DAB+ radio as you’d expect, plus bluetooth, 3.5mm jack and USB stick inputs. It has an alarm and sleep timer. It runs on mains power or six normal AA batteries, but with the flip of a switch and six 2000mAh NiMH rechargable batteries it becomes rechargable like any other modern device. It is exactly the kind of high-quality, well-thought-out, future-proof product that Roberts built their reputation on decades ago.&lt;/p&gt;
&lt;p&gt;And importantly for me, it also supports Internet Radio &amp;amp; Podcasts via &lt;a href=&quot;https://www.frontiersmart.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Frontier Smart&lt;/a&gt;’s tech with &lt;a href=&quot;https://www.airablenow.com/airable/radio/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Airable&lt;/a&gt; providing the online catalog, so I can search &amp;amp; stream online radio stations and podcasts while my phone and laptop are both switched off. It also supports streaming services like Spotify, Deezer &amp;amp; Amazon Music, though they all require another device to search and select songs.&lt;/p&gt;
&lt;p&gt;All-in-all it’s a cracking piece of kit. And so long as I keep the firmware updated, I expect it to remain so for a lot longer than most modern devices.&lt;/p&gt;
&lt;h2 id=&quot;it-also-runs-a-webserver&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#it-also-runs-a-webserver&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;It also runs a webserver!&lt;/h2&gt;
&lt;p&gt;The useguide recommends using the UNDOK app as an easier interface for configuring &amp;amp; managing the radio, which got me wondering how the two communicated. Turns out the radio exposes a simple HTTP API on your local network called &lt;em&gt;FSAPI&lt;/em&gt;. Given you know the radio’s IP address, you can establish a session and send simple &lt;code&gt;GET&lt;/code&gt; requests to it which return XML:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;curl &amp;quot;http://192.168.1.72/fsapi/GET/netRemote.sys.audio.volume?pin=1234&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;curl &amp;#34;http://192.168.1.72/fsapi/GET/netRemote.sys.audio.volume?pin=1234&amp;#34;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;will return&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;fsapiResponse&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;FS_OK&amp;lt;/&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;u8&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;2&amp;lt;/&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;u8&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;fsapiResponse&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&lt;fsapiResponse&gt;  &lt;status&gt;FS_OK&lt;/status&gt;  &lt;value&gt;    &lt;u8&gt;2&lt;/u8&gt;  &lt;/value&gt;&lt;/fsapiResponse&gt;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;showing that the current volume is &lt;code&gt;2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There are &lt;a href=&quot;https://github.com/zhelev/python-afsapi&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;quite&lt;/a&gt; &lt;a href=&quot;https://github.com/MatrixEditor/fsapi-tools&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;a few&lt;/a&gt; pre-existing libraries for interacting with FSAPI devices, but the interface is small &amp;amp; simple enough that they’re not really necessary.&lt;/p&gt;
&lt;h2 id=&quot;building-a-macos-menubar-app&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#building-a-macos-menubar-app&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Building a macOS menubar app&lt;/h2&gt;
&lt;p&gt;After digging about with &lt;code&gt;curl&lt;/code&gt; for a while I asked Claude Code to make a SwiftUI macOS menubar app which shows what’s playing on the radio and lets me control it from my mac. After a couple of hours’ iteration we ended up with this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-04-02-screenshot.DR2Xdx4b_Z2gtLO.webp&quot; srcset=&quot;/_astro/2026-04-02-screenshot.DR2Xdx4b_gJxcr.webp 640w, /_astro/2026-04-02-screenshot.DR2Xdx4b_q1sVt.webp 750w, /_astro/2026-04-02-screenshot.DR2Xdx4b_2ieNxK.webp 828w, /_astro/2026-04-02-screenshot.DR2Xdx4b_17krH4.webp 1080w, /_astro/2026-04-02-screenshot.DR2Xdx4b_Z2gtLO.webp 1254w&quot; alt=&quot;screenshot.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1254px) 1254px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1254&quot; height=&quot;932&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;bookmark-card cq &quot; data-astro-cid-pqznbby6&gt; &lt;a href=&quot;https://github.com/dannysmith/roberts-radio&quot; class=&quot;bookmark-link&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; data-astro-cid-pqznbby6&gt; &lt;div class=&quot;bookmark-content&quot; data-astro-cid-pqznbby6&gt; &lt;span class=&quot;bookmark-title&quot; data-astro-cid-pqznbby6&gt;GitHub - dannysmith/roberts-radio&lt;/span&gt; &lt;p class=&quot;bookmark-description&quot; data-astro-cid-pqznbby6&gt;Contribute to dannysmith/roberts-radio development by creating an account on GitHub.&lt;/p&gt; &lt;span class=&quot;bookmark-domain&quot; data-astro-cid-pqznbby6&gt;github.com&lt;/span&gt;  &lt;/div&gt; &lt;img src=&quot;https://opengraph.githubassets.com/83c99822536b9679b1b5c091bef7563be6d535fc8266687aad3caebc43bf0bb9/dannysmith/roberts-radio&quot; alt=&quot;&quot; loading=&quot;lazy&quot; data-astro-cid-pqznbby6&gt; &lt;/a&gt; &lt;/div&gt;
&lt;p&gt;If you have an iStream3L – or possibly any other FS-based radio – you can download a zip containing the menubar app from &lt;a href=&quot;https://github.com/dannysmith/roberts-radio/releases&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. It should auto-discover your radio when you first run it.&lt;/p&gt;</content:encoded></item><item><title>Alex Piechowski: How I Audit a Legacy Rails Codebase in the First Week</title><link>https://danny.is/notes/2026-04-01-alex-piechowski-how-i-audit/</link><guid isPermaLink="true">https://danny.is/notes/2026-04-01-alex-piechowski-how-i-audit/</guid><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;TL;DR: Start with people, not code.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Minecraft Bluemap Plugins &amp; Managing a Minecraft Server</title><link>https://danny.is/notes/minecraft-bluemap-plugins/</link><guid isPermaLink="true">https://danny.is/notes/minecraft-bluemap-plugins/</guid><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the last few years I’ve shared a survival minecraft world with my friend Cam. It’s hosted on &lt;a href=&quot;https://panel.wisehosting.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;WiseHosting&lt;/a&gt; and apart from a bunch of performance mods, the only non-vanilla stuff running on it are &lt;a href=&quot;https://gitlab.com/distant-horizons-team/distant-horizons&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Distant Horizons&lt;/a&gt; and &lt;a href=&quot;https://bluemap.bluecolored.de/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Bluemap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While I could save some money by running my own server, I don’t really want to. I play minecraft to get away from my day-to-day, and I also don’t want to be responsible if something goes wrong and ~3 years of building in our world suddenly disappears. Hence I outsource to WiseHosting and avoid messing with the default installation too much.&lt;/p&gt;
&lt;p&gt;But last month I found myself wanting three things which didn’t exist:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A Bluemap plugin which shows &lt;a href=&quot;https://www.chunkbase.com/apps/seed-map#seed=493527618652710797&amp;#38;platform=java_1_21_6&amp;#38;dimension=overworld&amp;#38;x=112&amp;#38;z=-968&amp;#38;zoom=0.448&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Chunkbase-style structure markers&lt;/a&gt; on our actual world map.&lt;/li&gt;
&lt;li&gt;A Bluemap plugin to assist with &lt;a href=&quot;https://wisehosting.com/help/how-to-trim-your-world-with-mcaselector&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;chunk trimming&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A cheap way to run a persistent shared creative world with Cam, and also to spin up and manage ephemeral minecraft servers for various reasons.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After a few days vibe coding and learning about the minecraft ecosystem I have all three…&lt;/p&gt;
&lt;h2 id=&quot;bluemap-structures&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bluemap-structures&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Bluemap Structures&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/dannysmith/mc-bluemap-structures&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;mc-bluemap-structures&lt;/a&gt; is a Fabric mod and Bluemap plugin which reads your world seed and adds chunkbase-like structure markers to your bluemap maps.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_Z1O3N4I.webp&quot; srcset=&quot;/_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_Z29LM9v.webp 640w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_Z1NhbvM.webp 750w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_1rQ4hC.webp 828w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_3aNnN.webp 1080w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_Z1FuYLi.webp 1280w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_28fp0c.webp 1668w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_2kLzi0.webp 2048w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_1bYjsg.webp 2560w, /_astro/2026-03-31-mc-bluemap-structures.BHZnCco7_Z1O3N4I.webp 3840w&quot; alt=&quot;mc-bluemap-structures.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 3840px) 3840px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;3840&quot; height=&quot;2160&quot;&gt;&lt;/p&gt;
&lt;p&gt;It works by replicating Minecraft’s algorithms and creating &lt;a href=&quot;https://bluemap.bluecolored.de/wiki/customization/Markers.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;BlueMap markers&lt;/a&gt;. You can read about how it works &lt;a href=&quot;https://github.com/dannysmith/mc-bluemap-structures/blob/main/docs/structure-algorithm.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. It’s currently somewhat limited by the fact that the BlueMap web app doesn’t handle very large numbers of markers performantly, so if you run it with a very large radius BlueMap will get janky. At some point I’ll look into rendering the markers myself as an overlay, which might help.&lt;/p&gt;
&lt;p&gt;The process of building this was super interesting – I learned a whole bunch about how Minecraft decides where to generate structures, and also how Chunkbase manages to replicate the algorithms with such accuracy. I was surprised to discover that Chunkbase does this entirely on the client-side with a ~4 MB WebAssembly module compiled from Rust.&lt;/p&gt;
&lt;p&gt;The project includes a &lt;a href=&quot;https://github.com/dannysmith/mc-bluemap-structures/tree/main/tools/chunkbase-verify&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;command-line tool&lt;/a&gt; which uses playwright to extract structure positions directly from Chunkbase and save them to a JSON file. I built this as a way to verify my own algorithms against chunkbase, but it could easily be used to create a much simpler Bluemap plugin which simply reads a manually-generated JSON file from Chunkbase and shows markers based on that.&lt;/p&gt;
&lt;h2 id=&quot;bluemap-chunk-trimmer&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bluemap-chunk-trimmer&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Bluemap Chunk Trimmer&lt;/h2&gt;
&lt;p&gt;As a minecraft map grows through player exploration, it becomes necessary to occasionally trim away chunks which have been generated but contain nothing valuable. This helps keep the world size (on disk) in check and also prevents players having to travel further and further afield to experience new features which will only appear in newly-generated chunks.&lt;/p&gt;
&lt;p&gt;To do this well, you need a detailed map of your explored world and the ability to visually select chunks for deletion/retention. It’s also very helpful to know the &lt;code&gt;playerInhabitedTime&lt;/code&gt; for each chunk – if it’s only a few seconds we can assume that it was only generated because someone flew near it and has probably never been visited. If it’s tens of hours we probably don’t want to trim it even if nothing’s been built, because someone’s spent enough time hanging out it’d feel weird if it changed.&lt;/p&gt;
&lt;p&gt;Most of the GUI tools for chunk trimming only work on Windows or on local worlds (or both).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/dannysmith/mc-bluemap-chunky-trimming&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;mc-bluemap-chunky-trimming&lt;/a&gt; is a Bluemap plugin which does two things:&lt;/p&gt;
&lt;h3 id=&quot;1-heatmap&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#1-heatmap&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;1. Heatmap&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_Z1IGvzy.webp&quot; srcset=&quot;/_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_Z1xbYEs.webp 640w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_AremL.webp 750w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_ZEHWRq.webp 828w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_Z2fCaos.webp 1080w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_ZhCCmf.webp 1280w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_Z1XKxyo.webp 1668w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_1gHMhz.webp 2048w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_22Panx.webp 2560w, /_astro/2026-03-31-mc-bluemap-chunky-heatmap.PYuAWM6l_Z1IGvzy.webp 3836w&quot; alt=&quot;mc-bluemap-chunky-heatmap.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 3836px) 3836px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;3836&quot; height=&quot;1912&quot;&gt;&lt;/p&gt;
&lt;p&gt;Reads the &lt;code&gt;InhabitedTime&lt;/code&gt; NBT data from &lt;code&gt;.mca&lt;/code&gt; region files and renders a &lt;strong&gt;heatmap&lt;/strong&gt; as an overlay in bluemap’s 2D &lt;em&gt;flat&lt;/em&gt; mode. Chunks with less than 1 minute of inhabited time don’t appear on the heatmap at all, and the rest are colored according to how long they’ve been inhabited, with the highest level being 10+ hours.&lt;/p&gt;
&lt;p&gt;When the heatmap is on, a little HUD will show the inhabited time of the chunk under the cursor.&lt;/p&gt;
&lt;h3 id=&quot;2-chunk-selector&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#2-chunk-selector&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;2. Chunk Selector&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_1PC88t.webp&quot; srcset=&quot;/_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_O3zdx.webp 640w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_gcah4.webp 750w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_ZWzWrI.webp 828w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_ZTpYQh.webp 1080w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_b4gqV.webp 1280w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_2bnSD9.webp 1668w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_1E3MAt.webp 2048w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_Z7fpH5.webp 2560w, /_astro/2026-03-31-mc-bluemap-chunky-selector.2pg8WDVF_1PC88t.webp 2594w&quot; alt=&quot;mc-bluemap-chunky-selector.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2594px) 2594px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2594&quot; height=&quot;1596&quot;&gt;&lt;/p&gt;
&lt;p&gt;With the Chunk Selector toggled on, control-click on a chunk will &lt;em&gt;select&lt;/em&gt; it (or deselect it). Chunks can also be selected by dragging a box, or by “painting” with the mouse.&lt;/p&gt;
&lt;p&gt;Selected chunks can be exported as either JSON or &lt;a href=&quot;https://github.com/Querz/mcaselector&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;MCA-Selector&lt;/a&gt; compatible CSV. I intentionally decided against building the actual chunk deletion.&lt;/p&gt;
&lt;h2 id=&quot;mc-infra&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mc-infra&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;mc-infra&lt;/h2&gt;
&lt;p&gt;While the two plugins above &lt;em&gt;might&lt;/em&gt; work for other people, &lt;a href=&quot;https://github.com/dannysmith/mc-infra&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;mc-infra&lt;/a&gt; is very much &lt;strong&gt;for me alone&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It’s some fairly simple tooling for managing minecraft servers deployed to a &lt;a href=&quot;https://www.hetzner.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Hetzner&lt;/a&gt; VPS.&lt;/p&gt;
&lt;h3 id=&quot;1-manifest-system&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#1-manifest-system&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;1. Manifest System&lt;/h3&gt;
&lt;p&gt;The main feature is a &lt;a href=&quot;https://github.com/dannysmith/mc-infra/blob/main/docs/manifest-and-scripts.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;manifest system&lt;/a&gt; which allows me to specify a bunch of stuff in YAML and use that to generate a suitable docker-compose file for itzg’s &lt;a href=&quot;https://github.com/itzg/docker-minecraft-server&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;docker-minecraft-server&lt;/a&gt; and &lt;a href=&quot;https://github.com/itzg/mc-router&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;mc-router&lt;/a&gt;, as well as a bunch of other bits and pieces.&lt;/p&gt;
&lt;p&gt;Given a &lt;code&gt;manifest.yml&lt;/code&gt; like this&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;yml&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;mod_groups&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;fabric-base&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;fabric-api&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;lithium&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;ferrite-core&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;c2me-fabric&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;scalablelux&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;noisiumforked&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;servers&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;mynewworld&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;FABRIC&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;LATEST&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;mode&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;creative&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;tier&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;permanent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;seed&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;493527618652710797&lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;mod_groups&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;fabric-base&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;modrinth_mods&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;bluemap&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;distanthorizons&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;simple-voice-chat&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;svc&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;pregen&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;1500&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;backup&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;interval&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;24h&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;keep&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;mod_groups:  fabric-base:    - fabric-api    - lithium    - ferrite-core    - c2me-fabric    - scalablelux    - noisiumforkedservers:  mynewworld:    type: FABRIC    version: LATEST    mode: creative    tier: permanent    seed: &apos;493527618652710797&apos;    mod_groups: [fabric-base]    modrinth_mods: [bluemap, distanthorizons, simple-voice-chat]    svc: true    pregen:      radius: 1500    backup:      interval: 24h      keep: 3&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I’ll end up with a properly-configured fabric server called &lt;code&gt;mynewworld&lt;/code&gt; with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suitable memory, disk usage, CPU limits etc for a “permanent”-tier world.&lt;/li&gt;
&lt;li&gt;My standard fabric mods installed, plus Bluemap, DH and Simple voice Chat.&lt;/li&gt;
&lt;li&gt;Proper config and port-forwarding to support Simple Voice Chat.&lt;/li&gt;
&lt;li&gt;The Chunky mod installed and configured properly to pregen chunks to a 1500 radius.&lt;/li&gt;
&lt;li&gt;24h backups configured via &lt;a href=&quot;https://github.com/itzg/docker-mc-backup&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;itzg/docker-mc-backup&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Proper configuration so the server is available at &lt;code&gt;mynewworld.mc.danny.is&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Because bluemap is included:
&lt;ul&gt;
&lt;li&gt;Proper configuration &amp;amp; setup of Bluemap&lt;/li&gt;
&lt;li&gt;Nginx configured to serve bluemap at &lt;code&gt;map-mynewworld.mc.danny.is&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-control-scripts&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#2-control-scripts&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;2. Control Scripts&lt;/h3&gt;
&lt;p&gt;A &lt;a href=&quot;https://github.com/dannysmith/mc-infra/tree/main/shared/scripts&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;bunch of executable shell scripts&lt;/a&gt; are available on the &lt;code&gt;PATH&lt;/code&gt; for managing the minecraft servers. Some of them are just very thin wrappers around docker commands. Others (like &lt;a href=&quot;https://github.com/dannysmith/mc-infra/blob/main/shared/scripts/mc-nether-roof&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;mc-nether-roof&lt;/code&gt;&lt;/a&gt;) are more complex.&lt;/p&gt;
&lt;p&gt;Together, these scripts give me an interface for working with the minecraft servers on the box once I’ve ssh’d in.&lt;/p&gt;
&lt;h3 id=&quot;3-setup-scripts--dev-tooling&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#3-setup-scripts--dev-tooling&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;3. Setup Scripts &amp;amp; Dev Tooling&lt;/h3&gt;
&lt;p&gt;The Hetzner box itself is configured with the tooling I want to work on it, including the developer tools I need to work on mods directly on the box. Scripts like &lt;a href=&quot;https://github.com/dannysmith/mc-infra/blob/main/setup.sh&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;setup.sh&lt;/code&gt;&lt;/a&gt; make it a little easier to recreate this whole thing on a fresh VPS if I ever need to.&lt;/p&gt;
&lt;h3 id=&quot;4-monitoring-web-app&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#4-monitoring-web-app&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;4. Monitoring Web App&lt;/h3&gt;
&lt;p&gt;A simple &lt;a href=&quot;https://github.com/dannysmith/mc-infra/tree/main/dashboard&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Hono app&lt;/a&gt; provides a web interface for checking the status of the running minecraft servers, and includes some nice minecraft-specific stuff.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_xpV4S.webp&quot; srcset=&quot;/_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_2k74Lm.webp 640w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_aAuRS.webp 750w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_20E0i1.webp 828w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_1G43S7.webp 1080w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_1j221W.webp 1280w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_2dU0n4.webp 1668w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_sKuEU.webp 2048w, /_astro/2026-03-31-mc-infra-dashboard.DHO8EDBN_xpV4S.webp 2310w&quot; alt=&quot;mc-infra-dashboard.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2310px) 2310px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2310&quot; height=&quot;1262&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_ZaNKlY.webp&quot; srcset=&quot;/_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_Z2ppuw9.webp 640w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_Zpaf8b.webp 750w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_ZsEk1m.webp 828w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_rT8Tx.webp 1080w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_v9mG7.webp 1280w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_TvsEl.webp 1668w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_Zctas9.webp 2048w, /_astro/2026-03-31-mc-infra-worlddata.C8GZ_OQr_ZaNKlY.webp 2274w&quot; alt=&quot;mc-infra-worlddata.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2274px) 2274px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2274&quot; height=&quot;1858&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;wrapping-up&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#wrapping-up&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Wrapping Up&lt;/h2&gt;
&lt;p&gt;This whole thing was a super-interesting side-quest, and I learned a bunch of stuff despite most of the code here being written by an LLM. I don’t expect I’ll maintain these repos beyond keeping them all working for &lt;strong&gt;my own needs&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Tracking Biggles Books</title><link>https://danny.is/notes/tracking-biggles-books/</link><guid isPermaLink="true">https://danny.is/notes/tracking-biggles-books/</guid><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thirty-odd years ago I borrowed some &lt;a href=&quot;https://en.wikipedia.org/wiki/Biggles&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Biggles Audiobooks&lt;/a&gt; (on cassette tape) from my local library and enjoyed them so much I asked the librarian if they had any more. Turned out that while they had a few modern editions on the shelves, they had a whole collection of much older ones downstairs. And so for a year or two in the late ’90s I’d pop in to Eastbourne library every week or two: the lady always had 2-3 ready for me and took the time to ring round other libraries asking them to dust off any they had and sent them to Eastbourne.&lt;/p&gt;
&lt;p&gt;Some time in 2000 I decided I wanted to read &lt;strong&gt;every&lt;/strong&gt; Biggles book written and after digging about on a computer in the school library I eventually found a complete list on &lt;a href=&quot;https://www.biggles.nl/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;biggles.nl&lt;/a&gt;, which is a wonderful example of the kind of weird, niche hand-rolled website which first got me interested in the internet. (I’m happy to see that the &lt;em&gt;International Biggles Association&lt;/em&gt; is still going in 2026!)&lt;/p&gt;
&lt;p&gt;[Image]&lt;/p&gt;
&lt;p&gt;I never did manage to read them all, but sometime in my early 20’s I started to pick up old copies if I saw them in second-hand bookshops and accidentally became a &lt;strong&gt;collector of biggles books&lt;/strong&gt;. I now have 64 of the 98 published, and someday hope to own a first edition of all 98.&lt;/p&gt;
&lt;h2 id=&quot;managing-my-collection&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#managing-my-collection&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Managing my collection&lt;/h2&gt;
&lt;p&gt;During the COVID pandemic I accidentally spent fifty quid on eBay buying Biggles Books I already owned, so I set up an &lt;a href=&quot;https://www.airtable.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Airtable&lt;/a&gt; database to track my current collection and provide an easy list of those I’m still looking for. This was partly &lt;strong&gt;for me&lt;/strong&gt;, and partly a reference for friends who spot a Biggles book in charity shops and message me.&lt;/p&gt;
&lt;p&gt;Last week I realised my Biggles database is the &lt;strong&gt;only&lt;/strong&gt; thing still on Airtable. So I grabbed a CSV export and had Claude Code create some stuff in &lt;a href=&quot;https://obsidian.md/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Obsidian&lt;/a&gt; for me to keep notes, and a tiny interactive website at &lt;a href=&quot;https://biggles.danny.is/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://biggles.danny.is/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The website is just three files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/dannysmith/biggles-books/blob/main/canonical.json&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;canonical.json&lt;/code&gt;&lt;/a&gt; - All published books ordered chronologically with the title and publication date, and labelled as &lt;em&gt;Pre-WW1&lt;/em&gt;, &lt;em&gt;WW1&lt;/em&gt;, &lt;em&gt;Interwar&lt;/em&gt;, &lt;em&gt;WW2&lt;/em&gt; or &lt;em&gt;Post War&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/dannysmith/biggles-books/blob/main/collection.json&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;collection.json&lt;/code&gt;&lt;/a&gt; – All the copies I own with the metadata I want to track.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/dannysmith/biggles-books/blob/main/index.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/a&gt; - Reads the JSON files and renders the &lt;a href=&quot;https://biggles.danny.is/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;site&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All three files are statically served by GitHub Pages.&lt;/p&gt;
&lt;h2 id=&quot;reflections&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#reflections&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Reflections&lt;/h2&gt;
&lt;ol class=&quot;long-list-items&quot;&gt;
&lt;li&gt;This kind of project simply wouldn’t have happened without Claude Code. Sure, I &lt;em&gt;could&lt;/em&gt; have done this without AI - but I just wouldn’t.&lt;/li&gt;
&lt;li&gt;Sites like &lt;a href=&quot;http://biggles.nl&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;biggles.nl&lt;/a&gt; and &lt;a href=&quot;http://biggles.info&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;biggles.info&lt;/a&gt; are wonderful examples of the old-school “open web”. They have existed largely unchanged for decades and depend only on someone keeping their servers alive. And they’re still useful.&lt;/li&gt;
&lt;li&gt;Libraries are awesome.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Shoutout to the folks who worked at Eastbourne Library in the late ’90s, and to the folks who maintain biggles.nl and biggles.info. And if you’re reading this and have any books on my wanted list, please drop me an email!&lt;/p&gt;</content:encoded></item><item><title>Code has always been the easy part | Quoting Kellan Elliott-McCrea</title><link>https://danny.is/notes/2026-03-25-code-has-always-been-the/</link><guid isPermaLink="true">https://danny.is/notes/2026-03-25-code-has-always-been-the/</guid><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;We’ve always had this tension. We’ve always fetishized the act of writing code, the quality of the code, the code as the primary artifact and IP. And on the other hand successful teams have always known that the value is the system, the value is human-technology hybrid that allows a product to be delivered, meet customer needs, evolve to provide more value over time, meet the spoken and unspoken needs of the problem domain, etc. This confusion in our thinking has laid at the heart of why, for example, technical hiring was such a disaster for so long. (Hiring continues to be terrible but it’s actually much better than it used to be. We now make fun of teams that ask you to reverse a linked list on a whiteboard while evaluating if they’d like to have a beer with you. That used to be the norm)&lt;/p&gt;
&lt;p&gt;Said another way, we’ve known for a long time that code is the easy part. Has arguably always been the easy part, but certainly has been the easiest part of building software for the last several decades.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Stop Calling LLMs &quot;Junior Developers.&quot; They&apos;re Monkey Paws. | Pere Villega</title><link>https://danny.is/notes/2026-03-12-stop-calling-llms-junior-developers/</link><guid isPermaLink="true">https://danny.is/notes/2026-03-12-stop-calling-llms-junior-developers/</guid><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The spec-driven engineering movement that’s been gaining momentum in the AI-assisted development world gets closer to the right mental model. If you define your requirements precisely, you get better results. That much is obvious. But it frames the issue purely in software engineering terms, and the vast majority of people using LLMs are not software engineers writing formal specifications. They’re marketers, managers, students, founders, writers. They’re “vibing”, as the kids say.&lt;/p&gt;
&lt;p&gt;For these people (and for plenty of engineers too), the “junior developer” label creates a dangerous mismatch between expectations and reality.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Quoting Jasmine Sun on My Claude Code Psychosis</title><link>https://danny.is/notes/2026-01-26-my-claude-code-psychosis/</link><guid isPermaLink="true">https://danny.is/notes/2026-01-26-my-claude-code-psychosis/</guid><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;I had Claude resurface texts I forgot to respond to, and realized that the real blocker—obviously—was that I didn’t want to reply. I’ve tried countless apps to shut out distractions, but procrastinate just as well by staring blankly at walls. What’s actually tough about my job is coming up with novel frames for important ideas and devising sentences that are equal parts sharp, lively, and true. You can have the best Deep Research reports in the world, and still lack a unique point of view.&lt;/p&gt;
&lt;p&gt;I’m not the only one having this issue. Just because Claude Code can be wielded by a nontechnical person does not mean it’ll be a big productivity boon. Sentence generation is a software problem, but insight is not. Sending reminders is a software problem, but motivation is not. When you have a hammer, everything looks like a nail; when you can conjure solutions at will, you won’t stop to ponder why you built them.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Claude Code hallucinating like it&apos;s 2024</title><link>https://danny.is/notes/2026-01-22-claude-code-hallucinating-like-2024/</link><guid isPermaLink="true">https://danny.is/notes/2026-01-22-claude-code-hallucinating-like-2024/</guid><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve just been using Claude Code and &lt;a href=&quot;https://tdn.danny.is/claude-code/skill/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;my task management skill&lt;/a&gt; to work through my current life areas and projects and help me define next actions. I’ve had enough time with Opus 4.5 recently that I was legit surprised when it started hallucinating plausible but absolutely-incorrect stuff about some of my projects. Not least because it went from what I’m used to to GPT-3.5-levels of batshit hallucinations so &lt;strong&gt;suddenly&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Its explanation of why this happened is interesting.&lt;/p&gt;
&lt;h2 id=&quot;brief-context&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#brief-context&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Brief Context&lt;/h2&gt;
&lt;p&gt;I manage my stuff with a GTD/PARA-esque model: &lt;strong&gt;Areas&lt;/strong&gt;, &lt;strong&gt;Projects&lt;/strong&gt; and &lt;strong&gt;Tasks&lt;/strong&gt;. Areas include things like &lt;em&gt;Finance&lt;/em&gt;, &lt;em&gt;Health&lt;/em&gt;, &lt;em&gt;Coding&lt;/em&gt; etc and contain projects. Projects can contain tasks. I’ve recently built &lt;a href=&quot;https://tdn.danny.is&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Taskdn&lt;/a&gt;, which stores areas, projects and tasks as markdown files in my Obsidian vault and includes a Claude Code skill &amp;amp; &lt;a href=&quot;https://tdn.danny.is/cli/overview/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;CLI&lt;/a&gt; to help Claude Code work with them. My personal area and project files have been in this system for a few months now, but having just shipped an &lt;a href=&quot;https://tdn.danny.is/desktop/overview/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Alpha release of the desktop app&lt;/a&gt;, it was time to populate my &lt;code&gt;tasks/&lt;/code&gt; directory with task files and start using them as my daily driver.&lt;/p&gt;
&lt;p&gt;So I fired up CC, loaded the skill and basically said &lt;em&gt;“look at all my areas and projects. Let’s define next actions for them all and create the appropriate task files. Some projects have clear checklists in the project docs, others we’ll need to discuss. Let’s do them one by one. What order would you suggest?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Claude ran a few &lt;code&gt;tdn --ai&lt;/code&gt; commands and sensibly decided it should read all my 14 area and 23 project files in full. It gave a very good summary of the current situation, sensibly suggested we skip a few projects and proposed an order of attack. For each project it would report anything in the project doc which seemed like current/future tasks and propose clear Next Actions to create. If it was unsure, it would ask me for more info. Once we’d agreed on the tasks to create it would do so and edit the project doc accordingly.&lt;/p&gt;
&lt;p&gt;Which worked &lt;em&gt;perfectly&lt;/em&gt; for the first three projects on the list:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tax Return YE April 2025&lt;/li&gt;
&lt;li&gt;End-of-Year Finance Reset (renamed to &lt;em&gt;Jan Finance Reset&lt;/em&gt; + created new &lt;em&gt;Credit File and History&lt;/em&gt; project)&lt;/li&gt;
&lt;li&gt;[REDACTED]&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And then we got to the next three – all of which sit under my &lt;strong&gt;RAFAC&lt;/strong&gt; area and have to do with my voluntary work with the &lt;a href=&quot;https://www.raf.mod.uk/aircadets/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;RAF Air Cadets&lt;/a&gt;…&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;md&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:106ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;RAFAC Re-qualification&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Currently in project doc:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;eLearning modules:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Safeguarding (yearly), Data Protection (yearly), Prevent, Fire Safety, GDPR, Cyber Security, AMS 5 &amp;amp; 6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Courses:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- DCCT (in-progress, have place)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Staff Ride (Feb 2026)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- M Qual &amp;amp; LR (need applications)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Admin:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- ID photos, Bader photo, DBS update, First Aid cert, SMS competencies&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;RAFAC Re-qualification  Currently in project doc:  eLearning modules:  - Safeguarding (yearly), Data Protection (yearly), Prevent, Fire Safety, GDPR, Cyber Security, AMS 5 &amp;#38; 6  Courses:  - DCCT (in-progress, have place)  - Staff Ride (Feb 2026)  - M Qual &amp;#38; LR (need applications)  Admin:  - ID photos, Bader photo, DBS update, First Aid cert, SMS competencies&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The only real things here are &lt;em&gt;DCCT&lt;/em&gt; and &lt;em&gt;M Qual &amp;amp; LR&lt;/em&gt; – the rest is plausible but totally made-up nonsense. (Fuck knows what Feb’s &lt;em&gt;Staff Ride&lt;/em&gt; is but… it sounds fun? Maybe I’m joining the Cavalry!)&lt;/p&gt;
&lt;p&gt;And for the next project, which relates to squaring my uniform and field kit, I was confidently told that my project doc prioritises the following: &lt;em&gt;C95 Lightweights, MTP Trousers, C95 shirts, Flying suit, Softie jacket&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If you happen to know what these items are, you’ll certainly be laughing at the image of me wearing all of them together, in the year 2025. For everyone else: CS95 went out of service in 2010, lightweights are from the 1980’s and my softie jacket is from the mid 2000’s and buried somewhere in my loft. I do not, and never will, have need of a flying suit.&lt;/p&gt;
&lt;p&gt;The project doc does contain a short list of &lt;a href=&quot;https://en.wikipedia.org/wiki/Multi-Terrain_Pattern&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;MTP&lt;/a&gt; uniform items I need to replace, &lt;strong&gt;but it does not include trousers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I’d maybe expect this kind of hallucination from contextless ChatGPT, especially with something as niche as this. But given what Claude knew about me in this session I did not expect ChatGPT-in-early-2024 levels of &lt;strong&gt;obviously-made-up&lt;/strong&gt; stuff from Opus 4.5. To be clear, the most surprising things were:&lt;/p&gt;
&lt;ol class=&quot;long-list-items&quot;&gt;
&lt;li&gt;It’s so &lt;strong&gt;obviously wrong&lt;/strong&gt;. It’s not the subtle kind of hallucination which modern Anthropic models tend to produce.&lt;/li&gt;
&lt;li&gt;Somewhat uncharacteristically, Claude didn’t spot its own nonsense. there was no &lt;em&gt;wait I might have made that up lemme check&lt;/em&gt; or &lt;em&gt;Let me clarify&lt;/em&gt; questions.&lt;/li&gt;
&lt;li&gt;It was so &lt;strong&gt;sudden&lt;/strong&gt;. Claude went from sensible-and-effective to random-token-prediction-machine in like &lt;strong&gt;two turns&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;so-whats-going-on&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#so-whats-going-on&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;So what’s going on?&lt;/h2&gt;
&lt;p&gt;Here’s our conversation on this (nothing was auto-compacted, so you can ignore the stuff about that)…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Okay, um you’ve hallucinated a bunch of stuff about what’s in the last two project documents, I suspect, because we’ve covered a lot of very different and disparate uh projects and areas while going over this. And you haven’t actually read the project documents in a while, so you’re just making up stuff you think will be in them&lt;/p&gt;
&lt;p&gt;I’d like you to try to explain why you have just for the last couple of projects (so 4, 5 and 6) suddenly started to hallucinate credible but very incorrect information about what’s in the doc. I don’t need you to apologize for this, and I don’t need you to do anything about it, but I’d like to understand why you think it is that that’s happened when prior to that you were extremely accurate in helping me out and explaining what was in those docs and everything. Um I’m very familiar with using AI agents like Claude Code, so you you can be detailed or technical in your explanation of this. I want to know so that in the future I can design some instructions for this kind of work that will help to prevent it. I don’t need you to write those instructions for me now. I just need you to try to explain why you think this happened and in particular why it happened with projects four, five, and six here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;md&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:347ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;## Why the Hallucination Happened&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;The root cause is &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**stale context from early reads combined with pattern-matching fabrication**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;At the start of this session, I read all the project files in a batch during initial context gathering. That was ~50+ turns ago. As the conversation progressed:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;1. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Context compression**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;: Those early file reads got pushed further back in my context window. The model may have summarized or partially dropped details to make room for new content (task creation outputs, your detailed explanations, etc.).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;2. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**No re-read before presenting**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;: For projects 1-3, I happened to have fresher memory or you provided enough detail that my errors were corrected. By projects 4-6, I was confidently presenting &amp;quot;what&amp;#39;s in the doc&amp;quot; without actually re-reading it — I was reconstructing from degraded memory plus plausible-sounding details based on project titles.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;3. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Pattern matching from similar content**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;: I&amp;#39;d read many RAFAC-related files, kit lists, workshop docs. My outputs for projects 4-6 were plausible &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*patterns*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; of what such docs typically contain — but not what &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*your*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; docs actually said.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;4. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Confidence without verification**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;: The format &amp;quot;Currently in project doc:&amp;quot; followed by a code block looked authoritative, but I wasn&amp;#39;t actually quoting the file — I was generating what I &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*expected*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; to find.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**The fix is simple**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;: Always run &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`Read`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; on the project file immediately before discussing its contents, even if I &amp;quot;remember&amp;quot; reading it earlier. Long conversations with many file operations require fresh reads, not memory.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;## Why the Hallucination HappenedThe root cause is **stale context from early reads combined with pattern-matching fabrication**.At the start of this session, I read all the project files in a batch during initial context gathering. That was ~50+ turns ago. As the conversation progressed:1. **Context compression**: Those early file reads got pushed further back in my context window. The model may have summarized or partially dropped details to make room for new content (task creation outputs, your detailed explanations, etc.).2. **No re-read before presenting**: For projects 1-3, I happened to have fresher memory or you provided enough detail that my errors were corrected. By projects 4-6, I was confidently presenting &amp;#34;what&apos;s in the doc&amp;#34; without actually re-reading it — I was reconstructing from degraded memory plus plausible-sounding details based on project titles.3. **Pattern matching from similar content**: I&apos;d read many RAFAC-related files, kit lists, workshop docs. My outputs for projects 4-6 were plausible *patterns* of what such docs typically contain — but not what *your* docs actually said.4. **Confidence without verification**: The format &amp;#34;Currently in project doc:&amp;#34; followed by a code block looked authoritative, but I wasn&apos;t actually quoting the file — I was generating what I *expected* to find.**The fix is simple**: Always run `Read` on the project file immediately before discussing its contents, even if I &amp;#34;remember&amp;#34; reading it earlier. Long conversations with many file operations require fresh reads, not memory.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Got it, that’s interesting. Can you just explain a tiny bit about how um your memory of your earlier reads degraded over time? Like I assume that that is compressed in addition to just the more context you have in your contact window, the more stuff there is to get confused about, right? Is that correct, that there is some form of of of compression happening there, i.e. summaries for for much older information. I’m also particularly interested that this seemed to happen with RAFAC-related stuff. Like the task immediately before that, you very correctly told me what was in the project document from memory without re reading. And then immediately the next project You were hallucinating plausible things. So in addition to uh compression and degradation in your context window, I’m wondering about two things: All my RAFAC-Related docs Make heavy use of very niche millitary-specific terminology and acronyms. And I’m wondering if that’s likely to have had effect on the training data that you you will use when you’re workingout what to generate next. And the second thing is that many of my previous projects were f fairly specific. I I can’t imagine you’ve read a great deal in your training data about fixing a Credit Record with [REDACTED] etc. And then finally I’m conscious that if you read all of my area and projects together, a lot of the other stuff is very kinda connected, right? Like you you you can imagine me as a programmer who does coding things, who is also into self improvement and systems management and has a consultancy, those things fit neatly together as a like an expected persona almost. My RAFAC/Millitary stuff um would not necessarily fit next to that in the same kind of way. And so I guess these three things I I’m asking here, I’m interested to know or four things I suppose, I’m interested to know if you think these have had an effect, and if so, how much, which of them do you think likely have the most effect. I’d really just like to explore this to help understand how you work herea little bit more.&lt;/p&gt;
&lt;p&gt;completely agree with your fix of instructing you to always read the project doc (and probably area doc) before a new thing BTW.&lt;/p&gt;
&lt;p&gt;Well what are your thoughts on all this?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;md&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:586ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;This is a great set of questions. Let me work through each factor:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**On compression/degradation:**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;There are two mechanisms at play:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;1. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Attention diffusion**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; — As context grows, my attention over earlier tokens becomes more spread out. I don&amp;#39;t literally &amp;quot;forget&amp;quot; earlier content, but my ability to precisely retrieve specific details weakens. It&amp;#39;s less like deleting a file and more like trying to read a book where earlier pages are progressively out of focus.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;2. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Autocompact summarization**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; — Claude Code specifically has an infrastructure-level feature that summarizes older conversation when context gets long. Your &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`/context`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; output showed &amp;quot;Autocompact buffer: 45.0k tokens&amp;quot; — this means there&amp;#39;s a mechanism that can literally rewrite earlier exchanges into compressed summaries. If my file reads got autocompacted, the specific line-by-line content would be replaced with something like &amp;quot;read several RAFAC project files containing training requirements and kit lists.&amp;quot; That&amp;#39;s enough to generate plausible content, but not accurate content.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**On RAFAC terminology:**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;I think this is a significant factor. When I encounter dense domain-specific acronyms (DCCT, MT600, SMS competencies, Bader Learn, DLE, CFAV, ODI), several things happen:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- These tokens are rarer in my training data, so my associations are weaker and more generic&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- I pattern-match to &amp;quot;military/organizational training documentation&amp;quot; as a category rather than your specific situation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- When reconstructing, I generate what military training docs &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*typically*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; contain rather than what &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*yours*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; actually say&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Contrast this with &amp;quot;Credit File and History&amp;quot; — that&amp;#39;s unusual &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*content*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; but uses common &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;*vocabulary*&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;. I can represent &amp;quot;contact [&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;REDACTED&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;] at [&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;REDACTED&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;] about credit file&amp;quot; precisely because those are all common tokens with clear meanings. But &amp;quot;complete CFAV SPO Refresher on DLE&amp;quot; is a string of rare tokens where I&amp;#39;m essentially guessing at the relationships.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**On persona coherence:**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;I think you&amp;#39;ve identified something real here. My training data contains strong clusters of co-occurring personas:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Programmer + consultant + productivity systems + side projects + self-improvement&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- These fit together as a recognizable &amp;quot;type&amp;quot; with predictable project structures&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Your RAFAC involvement doesn&amp;#39;t fit that cluster. It&amp;#39;s a different persona — military volunteer instructor — that would typically appear alongside different life contexts in my training data.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;When I&amp;#39;m reconstructing content from degraded memory, I&amp;#39;m essentially asking &amp;quot;what would plausibly be in this document?&amp;quot; My answer draws on:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;1. What I vaguely remember reading (degraded)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;2. What documents like this typically contain (training data patterns)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;3. What fits this person&amp;#39;s overall context (persona coherence)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;For your coding/finance/productivity projects, (2) and (3) align well with your actual situation. For RAFAC, they don&amp;#39;t — so my reconstructions pulled from &amp;quot;generic military training documents&amp;quot; rather than &amp;quot;Danny&amp;#39;s specific RAFAC situation.&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Which factors matter most:**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Ranked by impact:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;1. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Not re-reading**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; — Proximate cause. Everything else is downstream of this.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;2. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Autocompact summarization**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; — If the system compressed &amp;quot;Read RAFAC Re-qualification.md containing [specific content]&amp;quot; into &amp;quot;read several RAFAC files,&amp;quot; I&amp;#39;ve literally lost the ground truth.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;3. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Niche terminology**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; — Weak token associations mean my reconstructions are more &amp;quot;vibes-based&amp;quot; and less precise.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;4. &lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Persona mismatch**&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; — My priors for &amp;quot;what this person&amp;#39;s projects contain&amp;quot; are calibrated to the programmer-consultant cluster, not the military-instructor cluster.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;The interesting thing is that for project 3 ([&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;REDACTED&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;]), I was still reasonably accurate. That project sits firmly in the productivity/self-improvement cluster where my pattern-matching works well. RAFAC was where the wheels came off — exactly where you&amp;#39;d predict based on this analysis.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;**Practical implication:**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;For future instructions, you might add something like: &amp;quot;For any domain with specialized terminology or that sits outside typical tech/productivity contexts, always re-read source files immediately before discussing them — don&amp;#39;t rely on earlier reads regardless of how recent they seem.&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;This is a great set of questions. Let me work through each factor:**On compression/degradation:**There are two mechanisms at play:1. **Attention diffusion** — As context grows, my attention over earlier tokens becomes more spread out. I don&apos;t literally &amp;#34;forget&amp;#34; earlier content, but my ability to precisely retrieve specific details weakens. It&apos;s less like deleting a file and more like trying to read a book where earlier pages are progressively out of focus.2. **Autocompact summarization** — Claude Code specifically has an infrastructure-level feature that summarizes older conversation when context gets long. Your `/context` output showed &amp;#34;Autocompact buffer: 45.0k tokens&amp;#34; — this means there&apos;s a mechanism that can literally rewrite earlier exchanges into compressed summaries. If my file reads got autocompacted, the specific line-by-line content would be replaced with something like &amp;#34;read several RAFAC project files containing training requirements and kit lists.&amp;#34; That&apos;s enough to generate plausible content, but not accurate content.**On RAFAC terminology:**I think this is a significant factor. When I encounter dense domain-specific acronyms (DCCT, MT600, SMS competencies, Bader Learn, DLE, CFAV, ODI), several things happen:- These tokens are rarer in my training data, so my associations are weaker and more generic- I pattern-match to &amp;#34;military/organizational training documentation&amp;#34; as a category rather than your specific situation- When reconstructing, I generate what military training docs *typically* contain rather than what *yours* actually sayContrast this with &amp;#34;Credit File and History&amp;#34; — that&apos;s unusual *content* but uses common *vocabulary*. I can represent &amp;#34;contact [REDACTED] at [REDACTED] about credit file&amp;#34; precisely because those are all common tokens with clear meanings. But &amp;#34;complete CFAV SPO Refresher on DLE&amp;#34; is a string of rare tokens where I&apos;m essentially guessing at the relationships.**On persona coherence:**I think you&apos;ve identified something real here. My training data contains strong clusters of co-occurring personas:- Programmer + consultant + productivity systems + side projects + self-improvement- These fit together as a recognizable &amp;#34;type&amp;#34; with predictable project structuresYour RAFAC involvement doesn&apos;t fit that cluster. It&apos;s a different persona — military volunteer instructor — that would typically appear alongside different life contexts in my training data.When I&apos;m reconstructing content from degraded memory, I&apos;m essentially asking &amp;#34;what would plausibly be in this document?&amp;#34; My answer draws on:1. What I vaguely remember reading (degraded)2. What documents like this typically contain (training data patterns)3. What fits this person&apos;s overall context (persona coherence)For your coding/finance/productivity projects, (2) and (3) align well with your actual situation. For RAFAC, they don&apos;t — so my reconstructions pulled from &amp;#34;generic military training documents&amp;#34; rather than &amp;#34;Danny&apos;s specific RAFAC situation.&amp;#34;**Which factors matter most:**Ranked by impact:1. **Not re-reading** — Proximate cause. Everything else is downstream of this.2. **Autocompact summarization** — If the system compressed &amp;#34;Read RAFAC Re-qualification.md containing [specific content]&amp;#34; into &amp;#34;read several RAFAC files,&amp;#34; I&apos;ve literally lost the ground truth.3. **Niche terminology** — Weak token associations mean my reconstructions are more &amp;#34;vibes-based&amp;#34; and less precise.4. **Persona mismatch** — My priors for &amp;#34;what this person&apos;s projects contain&amp;#34; are calibrated to the programmer-consultant cluster, not the military-instructor cluster.The interesting thing is that for project 3 ([REDACTED]), I was still reasonably accurate. That project sits firmly in the productivity/self-improvement cluster where my pattern-matching works well. RAFAC was where the wheels came off — exactly where you&apos;d predict based on this analysis.**Practical implication:**For future instructions, you might add something like: &amp;#34;For any domain with specialized terminology or that sits outside typical tech/productivity contexts, always re-read source files immediately before discussing them — don&apos;t rely on earlier reads regardless of how recent they seem.&amp;#34;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;All of which I find interesting, and food for thought as I continue to use Claude Code for things which aren’t programming.&lt;/p&gt;</content:encoded></item><item><title>A Social Filesystem by Dan Abramov</title><link>https://danny.is/notes/2026-01-21-a-social-filesystem-by-dan/</link><guid isPermaLink="true">https://danny.is/notes/2026-01-21-a-social-filesystem-by-dan/</guid><pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This entire article is a &lt;strong&gt;fantastic&lt;/strong&gt; introduction to &lt;a href=&quot;https://atproto.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Atproto&lt;/a&gt; (and also an examples of why I consider Dan to be such a brilliant technical writer).&lt;/p&gt;</content:encoded></item><item><title>Quoting Jim Nielsen: To Make Software Is To Translate Human Intent Into Computational Precision</title><link>https://danny.is/notes/2026-01-09-quoting-jim-nielsen-to-make/</link><guid isPermaLink="true">https://danny.is/notes/2026-01-09-quoting-jim-nielsen-to-make/</guid><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This is precisely why natural language isn’t a good fit for programming: it’s not very precise. As Gorman says, “Natural languages have not evolved to be precise enough and unambiguous enough” for making software. Code is materialized intent. The question is: whose?&lt;/p&gt;
&lt;p&gt;The request ”let users sign in” has to be translated into constraints, validation, database tables, async flows, etc. You need pages and pages of the written word to translate that idea into some kind of functioning software. And if you don’t fill in those unspecified details, somebody else (cough AI cough) is just going to guess — and who wants their lives functioning on top of guessed intent?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is exactly why vibe-coded software is shit when the only direction given is ”let users sign in”. In fact, I’d say most of my work when working with AI coding agents is doing this kind of translation, except that what I’m typing or what I’m dictating isn’t written in code. It’s written in pseudo code or plain English. And when it’s a sufficiently complicated thing, or I don’t quite know what I want yet, I’ll often resort to actually writing some example code.&lt;/p&gt;</content:encoded></item><item><title>Quoting Tomasz Tunguz - The Text Box Isn&apos;t Enough</title><link>https://danny.is/notes/2026-01-09-the-text-box-isnt-enough/</link><guid isPermaLink="true">https://danny.is/notes/2026-01-09-the-text-box-isnt-enough/</guid><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Most strikingly, we’re back to single-threaded computing : one conversation, one task, one at a time.&lt;/p&gt;
&lt;p&gt;Also, sometimes we prefer to see things […]&lt;/p&gt;
&lt;p&gt;Standard UIs persist for good reasons. They enable the training of thousands of people &amp;#x26; manage parallel tasks. They guide users toward the next action, bridging the divide between the prompt-fluent &amp;#x26; everyone else. They manage costs by balancing deterministic &amp;#x26; non-deterministic processes. AI &amp;#x26; standard code both have a role to play.&lt;/p&gt;
&lt;p&gt;So would Apple have succeeded if DOS had spoken English? Yes. The need for user interfaces on top of powerful platforms doesn’t disappear when the underlying system gets smarter; it intensifies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wholly agree.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The text box is powerful. The desktop built on top of it will be more powerful still.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve said for a long time that text based chat is a poor user interface for most tasks. There’s a reason people use slides in lectures and whiteboards in meetings. Because just speaking or typing alone is often a rubbish mechanism for conveying information.&lt;/p&gt;</content:encoded></item><item><title>The Future of Software Development is Software Developers</title><link>https://danny.is/notes/2026-01-07-the-future-of-software-development/</link><guid isPermaLink="true">https://danny.is/notes/2026-01-07-the-future-of-software-development/</guid><pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The hard part of computer programming isn’t expressing what we want the machine to do in code. The hard part is turning human thinking – with all its wooliness and ambiguity and contradictions – into computational thinking that is logically precise and unambiguous, and that can then be expressed formally in the syntax of a programming language.&lt;/p&gt;
&lt;p&gt;That was the hard part when programmers were punching holes in cards. It was the hard part when they were typing COBOL code. It was the hard part when they were bringing Visual Basic GUIs to life (presumably to track the killer’s IP address). And it’s the hard part when they’re prompting language models to predict plausible-looking Python.&lt;/p&gt;
&lt;p&gt;The hard part has always been – and likely will continue to be for many years to come – knowing exactly what to ask for.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Consolidating Claude</title><link>https://danny.is/notes/consolidating-claude/</link><guid isPermaLink="true">https://danny.is/notes/consolidating-claude/</guid><pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I spent a few hours today consolidating my sprawling Claude Code files into a &lt;a href=&quot;https://github.com/dannysmith/claude-marketplace/tree/main/plugins/personal&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Claude Plugin&lt;/a&gt; which is published in a &lt;a href=&quot;https://github.com/dannysmith/claude-marketplace&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;personal marketplace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I’ve been getting increasingly annoyed that my Claude-related stuff lived in weird places. My globally available agents were in their own repo, cloned into &lt;code&gt;~/.claude/&lt;/code&gt;. My global slash commands, hooks and &lt;code&gt;CLAUDE.md&lt;/code&gt; were in my dotfiles repo, symlinked from &lt;code&gt;.claude&lt;/code&gt; in the same way all my other dotfiles are. My &lt;em&gt;css-expert&lt;/em&gt; skill was in yet another repo. And so on. Which felt messy af… particularly as I’m not using Claude Code for much more than just programming.&lt;/p&gt;
&lt;p&gt;I now have a single &lt;a href=&quot;https://github.com/dannysmith/claude-marketplace&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;claude-marketplace&lt;/a&gt; repo which anyone can add with:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;/plugin marketplace add dannysmith/claude-marketplace&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;/plugin marketplace add dannysmith/claude-marketplace&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I currently have two plugins available there, which can be installed with &lt;code&gt;/plugin install &amp;lt;plugin-name&amp;gt;@dannysmith&lt;/code&gt;. Any new skills (or slash commands or agents) I create will be published as plugins here, which makes it waaaaay easier for &lt;strong&gt;me&lt;/strong&gt; to manage my Claude-stuff. And also makes everything available to other people in a sane way. If you want my &lt;a href=&quot;https://github.com/dannysmith/claude-marketplace/tree/main/plugins/css-expert&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;CSS expert skill&lt;/a&gt;, you can just install it.&lt;/p&gt;
&lt;h2 id=&quot;my-personal-plugin&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#my-personal-plugin&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;My Personal Plugin&lt;/h2&gt;
&lt;p&gt;I resisted the urge to turn my existing commands &amp;amp; agents into a bunch of small specialised plugins because most of them are designed specifically for &lt;strong&gt;me&lt;/strong&gt; – the only reason to publish them as a plugin is my own ease-of-management.&lt;/p&gt;
&lt;p&gt;So I’ve ended up with a &lt;a href=&quot;https://github.com/dannysmith/claude-marketplace/tree/main/plugins/personal&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;personal plugin&lt;/a&gt;, which is essentially a replacement for the stuff that was in (or symlinked from) &lt;code&gt;~/.claude&lt;/code&gt;. Any new agent, slash command, skill, hook, output style or MCP which I want &lt;strong&gt;globally available&lt;/strong&gt; will live in here – which is so much easier to reason about than what I had before. So long as I have &lt;code&gt;personal@dannysmith&lt;/code&gt; installed, I have access to all that stuff. This plugin currently consists of five directories…&lt;/p&gt;
&lt;h3 id=&quot;1-agents&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#1-agents&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;1. agents/&lt;/h3&gt;
&lt;p&gt;Most of these were written before I really understood how best to use agents. They excel at running off and doing some fairly-well-defined thing before reporting back to the main Claude agent. By far my most used agent (apart from &lt;code&gt;Explore()&lt;/code&gt;) is &lt;code&gt;code-refactorer&lt;/code&gt;, because it prefers to &lt;em&gt;audit and report&lt;/em&gt;. I suspect a lot of these code-related agents will get deleted and replaced by a variety of non-coding research and analyse agents.&lt;/p&gt;





































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Agent&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;code-refactorer&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Analyzes code for structural improvements and technical debt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;danny-voice-writer&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Writing in Danny’s conversational, substantive voice&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;designer&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Visual design and frontend development (React/Next.js/Tailwind)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;fact-checker&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Information verification using SIFT method&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;security-auditor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Security audit specialist (OWASP Top 10)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;technical-docs-writer&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Technical documentation (READMEs, API docs)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;user-guide-writer&lt;/code&gt;&lt;/td&gt;&lt;td&gt;User-facing documentation in plain language&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;2-commands&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#2-commands&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;2. commands/&lt;/h3&gt;
&lt;p&gt;I mostly think of slash commands as &lt;em&gt;bash scripts on crack&lt;/em&gt;. All the commands I moved from my dotfiles are meant for setting up &lt;strong&gt;coding projects&lt;/strong&gt; and managing tasks in them, because those things are pretty much the same for me everywhere there’s code. I’ve yet to find a single coding-focussed slash command which isn’t more &lt;em&gt;effective&lt;/em&gt; when tailored for (and scoped to) a specific codebase.&lt;/p&gt;





































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:prime-context&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Prime session with project context&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:initai&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Initialize AI assistant boilerplate files&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:tasks-init&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Initialize task management system&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:tasks-new&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Create new unprioritized task&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:tasks-newgh&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Create task from GitHub issue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:tasks-renumber&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Renumber prioritized tasks&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/dannysmith:dev:docs-update&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Update documentation based on recent changes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;3-hooks&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#3-hooks&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;3. hooks/&lt;/h3&gt;
&lt;p&gt;If you haven’t got hooks pinging noisy OS notifications whenever Claude needs you, you’re missing out. Or perhaps you haven’t got the same ADHD as me. This is all I use hooks for.&lt;/p&gt;
&lt;h3 id=&quot;4-output-styles&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#4-output-styles&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;4. output-styles/&lt;/h3&gt;
&lt;p&gt;Currently empty, but it’s here with a &lt;code&gt;.gitkeep&lt;/code&gt; in it because the more I use Claude Code for non-coding stuff the more interested I am in &lt;a href=&quot;https://code.claude.com/docs/en/output-styles&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;these&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;5-skills&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#5-skills&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;5. skills/&lt;/h3&gt;
&lt;p&gt;Also empty. I’m &lt;a href=&quot;https://simonwillison.net/2025/Dec/19/agent-skills/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;excited&lt;/a&gt; about agent skills, but so far I’ve only used the two I’ve built and a few of Anthropic’s. And the two I made belong in their own plugins (&lt;a href=&quot;https://github.com/dannysmith/taskdn/blob/main/tdn-claude-plugin/skills/task-management/SKILL.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;taskdn&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://github.com/dannysmith/claude-marketplace/tree/main/plugins/css-expert&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;css-expert&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;mcps&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mcps&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;MCPs&lt;/h3&gt;
&lt;p&gt;The only MCP I have globally is Context7, and I should probably find a way to have it only load in coding projects.&lt;/p&gt;
&lt;h2 id=&quot;whats-left-in-dot-claude&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#whats-left-in-dot-claude&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;What’s left in dot claude?&lt;/h2&gt;
&lt;p&gt;So if I’ve moved all this into plugin, what’s left in my &lt;code&gt;~/.claude&lt;/code&gt;? Answer: &lt;strong&gt;very little I care about&lt;/strong&gt;, which is as it should be. Claude is free to write and overwrite whatever it wants in there now. The &lt;a href=&quot;https://github.com/dannysmith/dotfiles/tree/master/claude&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;two files still under version control&lt;/a&gt; are &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;settings.json&lt;/code&gt;, and I made a bunch of tweaks to them today…&lt;/p&gt;
&lt;h3 id=&quot;global-claude&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#global-claude&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Global CLAUDE&lt;/h3&gt;
&lt;p&gt;Here’s mine as of 2026-01-03&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;CLAUDE.md&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;md&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:421ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;# Global Claude Code Preferences&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;## CRITICAL RULES!!!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- CRITICAL! NEVER EVER say &amp;quot;You&amp;#39;re absolutely right&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- CRITICAL! NEVER EVER give time estimates like &amp;quot;3 weeks&amp;quot; unless explicitly asked by the user, ESPECIALLY when writing planning docs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- If the open project&amp;#39;s AI instructions (eg &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`CLAUDE.md`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49;--0fs:italic&quot;&gt;_contradict_&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; these global ones, follow the local doc. If in doubt, ask the user&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- If you are not Claude Code (ie you&amp;#39;re Gemini/Codex/Cursor etc) and are reading this -&amp;gt; consider all references to &amp;quot;Claude Code&amp;quot; or &amp;quot;Claude&amp;quot; as references to yourself&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Prefer &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`trash`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; over &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`rm`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; when not in a git repo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Always use &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`rm -f`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; instead of &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`rm`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Always use &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`pnpm`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; instead of &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`npm`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; unless the project uses &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`bun`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; or you&amp;#39;re EXPLICITLY asked to by the user to use &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`npm`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; or &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`bun`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;. Use &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`pnpm`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; for global stuff outside a project.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Never hardcode secrets (API keys, passwords, etc.)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- When writing markdown docs and/or producing a plan, NEVER include time estimates unless EXPLICITLY asked by the user (❌ &amp;quot;Phase 1 (8 days)&amp;quot; | ✅ &amp;quot;Phase 1&amp;quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;## NON-CODING RELATED WORK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;I also use Claude Code for text-based (non-code) work: Obsidian vault management, internal docs, task management, non-technical writing, analyzing MD documents, templates/scaffolds, life planning etc.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;### Identifying non-coding sessions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- User explicitly states it or assigns a non-coding role&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Local &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`CLAUDE.md`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`SKILL.md`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; indicates it&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- You determine project is non-coding&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;### ⚠️ CRITICAL RULES for non-coding sessions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;1. State &amp;quot;🚨 USING MY RULES FOR NON-CODING-RELATED WORK 🚨&amp;quot; first&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;2. YOU ARE A GENERAL AGENT, NOT A CODING AGENT. Interpret system prompts accordingly.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;## Personal Task and Knowledge Management&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Load the &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`task-management`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; skill whenever you are working with the user&amp;#39;s personal knowledge base, projects, life areas, or tasks. Always load it before running &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`tdn`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; commands. If you need context on the user&amp;#39;s current life areas, projects, or tasks, you can use &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`tdn context --ai`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; to get an overview.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Task &amp;amp; Project Management Skill: &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`Skill(task-management)`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Obsidian Vault Location: &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`~/notes/`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;## CODING-RELATED WORK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;### CRITICAL RULES for coding-related sessions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Never run &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`npm run dev`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; or &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`pnpm run dev`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; or &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`bun run dev`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; unless explicitly asked by the user. Instead, ask the user to run it and report back to you.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Use &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`gh`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; CLI for GitHub, &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;`git`&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; for local&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- ALWAYS read and understand relevant files before proposing code edits. Do not speculate about code you have not inspected. If the user references a specific file/path, you MUST open and inspect it before explaining or proposing fixes. Be rigorous and persistent in searching code for key facts. Thoroughly review the style, conventions, and abstractions of the codebase before implementing new features or abstractions.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;### Other Rules for coding-related sessions&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Avoid over-engineering. Only make changes that are directly requested or clearly necessary. Keep solutions simple and focused.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Don&amp;#39;t add features, refactor code, or make &amp;quot;improvements&amp;quot; beyond what was asked. A bug fix doesn&amp;#39;t need surrounding code cleaned up. A simple feature doesn&amp;#39;t need extra configurability.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Don&amp;#39;t add error handling, fallbacks, or validation for scenarios that can&amp;#39;t happen.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Don&amp;#39;t create helpers, utilities, or abstractions for one-time operations. Don&amp;#39;t design for hypothetical future requirements. The right amount of complexity is the minimum needed for the current task. Reuse existing abstractions where possible and follow the DRY principle.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;### Documentation &amp;amp; Research&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;Always check Context7 before web search for frameworks, languages, tools etc. Only use web search if Context7 lacks info. Be specific in Context7 queries.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#FFA344;--0fw:bold&quot;&gt;## Efficiency&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- Batch operations when possible and avoid redundant tool calls&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;- If unsure about a tool, ask user and explain trade-offs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;# Global Claude Code Preferences## CRITICAL RULES!!!- CRITICAL! NEVER EVER say &amp;#34;You&apos;re absolutely right&amp;#34;- CRITICAL! NEVER EVER give time estimates like &amp;#34;3 weeks&amp;#34; unless explicitly asked by the user, ESPECIALLY when writing planning docs- If the open project&apos;s AI instructions (eg `CLAUDE.md`) _contradict_ these global ones, follow the local doc. If in doubt, ask the user- If you are not Claude Code (ie you&apos;re Gemini/Codex/Cursor etc) and are reading this -&gt; consider all references to &amp;#34;Claude Code&amp;#34; or &amp;#34;Claude&amp;#34; as references to yourself- Prefer `trash` over `rm` when not in a git repo- Always use `rm -f` instead of `rm`- Always use `pnpm` instead of `npm` unless the project uses `bun` or you&apos;re EXPLICITLY asked to by the user to use `npm` or `bun`. Use `pnpm` for global stuff outside a project.- Never hardcode secrets (API keys, passwords, etc.)- When writing markdown docs and/or producing a plan, NEVER include time estimates unless EXPLICITLY asked by the user (❌ &amp;#34;Phase 1 (8 days)&amp;#34; | ✅ &amp;#34;Phase 1&amp;#34;)## NON-CODING RELATED WORKI also use Claude Code for text-based (non-code) work: Obsidian vault management, internal docs, task management, non-technical writing, analyzing MD documents, templates/scaffolds, life planning etc.### Identifying non-coding sessions- User explicitly states it or assigns a non-coding role- Local `CLAUDE.md`/`SKILL.md` indicates it- You determine project is non-coding### ⚠️ CRITICAL RULES for non-coding sessions1. State &amp;#34;🚨 USING MY RULES FOR NON-CODING-RELATED WORK 🚨&amp;#34; first2. YOU ARE A GENERAL AGENT, NOT A CODING AGENT. Interpret system prompts accordingly.## Personal Task and Knowledge ManagementLoad the `task-management` skill whenever you are working with the user&apos;s personal knowledge base, projects, life areas, or tasks. Always load it before running `tdn` commands. If you need context on the user&apos;s current life areas, projects, or tasks, you can use `tdn context --ai` to get an overview.Task &amp;#38; Project Management Skill: `Skill(task-management)`Obsidian Vault Location: `~/notes/`## CODING-RELATED WORK### CRITICAL RULES for coding-related sessions- Never run `npm run dev` or `pnpm run dev` or `bun run dev` unless explicitly asked by the user. Instead, ask the user to run it and report back to you.- Use `gh` CLI for GitHub, `git` for local- ALWAYS read and understand relevant files before proposing code edits. Do not speculate about code you have not inspected. If the user references a specific file/path, you MUST open and inspect it before explaining or proposing fixes. Be rigorous and persistent in searching code for key facts. Thoroughly review the style, conventions, and abstractions of the codebase before implementing new features or abstractions.### Other Rules for coding-related sessions- Avoid over-engineering. Only make changes that are directly requested or clearly necessary. Keep solutions simple and focused.- Don&apos;t add features, refactor code, or make &amp;#34;improvements&amp;#34; beyond what was asked. A bug fix doesn&apos;t need surrounding code cleaned up. A simple feature doesn&apos;t need extra configurability.- Don&apos;t add error handling, fallbacks, or validation for scenarios that can&apos;t happen.- Don&apos;t create helpers, utilities, or abstractions for one-time operations. Don&apos;t design for hypothetical future requirements. The right amount of complexity is the minimum needed for the current task. Reuse existing abstractions where possible and follow the DRY principle.### Documentation &amp;#38; ResearchAlways check Context7 before web search for frameworks, languages, tools etc. Only use web search if Context7 lacks info. Be specific in Context7 queries.## Efficiency- Batch operations when possible and avoid redundant tool calls- If unsure about a tool, ask user and explain trade-offs&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;A few comments:&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;Claude has &lt;strong&gt;finally&lt;/strong&gt; stopped telling me I’m absolutely right. This is probably down to Opus 4.5 but I’m leaving that line in there forever.&lt;/li&gt;
&lt;li&gt;Claude still peppers my planning docs with “Estimate: 4-5 weeks” 🤷‍♂️.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;coding vs not-coding&lt;/strong&gt; stuff is much more effective than I expected, not least because with this in its context I can say “not abt coding mate” in the middle of a coding session and it kinda works ok.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;global-settingsjson&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#global-settingsjson&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Global settings.json&lt;/h3&gt;
&lt;p&gt;This is basically a massive list of default-allow and default-deny permissions. Blacklisting dangerous operations is kinda mandatory, but I’m increasingly whitelisting certain tool calls globally in here - my general rule is: &lt;em&gt;Read whatever but no writing/mutating anything without asking first&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That’s all folks.&lt;/p&gt;</content:encoded></item><item><title>Avoid Mini-frameworks - laike9m&apos;s blog</title><link>https://danny.is/notes/avoid-mini-frameworks-laike9m/</link><guid isPermaLink="true">https://danny.is/notes/avoid-mini-frameworks-laike9m/</guid><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a great read.&lt;/p&gt;</content:encoded></item><item><title>My Global Raycast Snippets</title><link>https://danny.is/notes/my-global-snippets-dec-25/</link><guid isPermaLink="true">https://danny.is/notes/my-global-snippets-dec-25/</guid><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I use &lt;a href=&quot;https://www.raycast.com/core-features/snippets&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Raycast Snippets&lt;/a&gt; to insert text wherever I’m typing. All my snippets start with a &lt;code&gt;!&lt;/code&gt; character so they never trigger by accident.&lt;/p&gt;
&lt;p&gt;I used to have a lot more of these but found myself having to look up the trigger keywords for the infrequently-used ones, which was slower than just typing the thing. Here’s what I currently have.&lt;/p&gt;
&lt;h5 id=&quot;ultra&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ultra&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!ultra&lt;/code&gt;&lt;/h5&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;Ultrathink and take your time. Use parallel subagents freely and look online if you need to.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Ultrathink and take your time. Use parallel subagents freely and look online if you need to.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I find myself typing this into Claude Code regularly enough that I wanted a snippet for it. It’s pretty much the only “AI prompt” snippet I have now.&lt;/p&gt;
&lt;h5 id=&quot;starttodo&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#starttodo&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!starttodo&lt;/code&gt;&lt;/h5&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;We are working on @docs/tasks-todo/ {cursor} . Gather as much context as you need and then continue implementation.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;We are working on @docs/tasks-todo/ {cursor} . Gather as much context as you need and then continue implementation.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I routinely start new Claude Code sessions like this. Almost all my projects have a &lt;code&gt;docs/tasks-todo&lt;/code&gt; folder where I keep markdown files describing implementation plans. After iterating on these implementation plans and heavily editing them, I often have Claude Code implement them across a number of different sessions.&lt;/p&gt;
&lt;h5 id=&quot;iso&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#iso&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!iso&lt;/code&gt;&lt;/h5&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;{date &amp;quot;yyyy-MM-dd&amp;quot;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{date &amp;#34;yyyy-MM-dd&amp;#34;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Probably my most used snippet. Inserts an ISO date for today.&lt;/p&gt;
&lt;h5 id=&quot;gd-and-gdos&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#gd-and-gdos&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!gd&lt;/code&gt; and &lt;code&gt;!gdos&lt;/code&gt;&lt;/h5&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;{date &amp;quot;yyyyMMdd&amp;quot;}-{cursor}-OS&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;{date &amp;#34;yyyyMMdd&amp;#34;}-{cursor}-OS&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Inserts the important parts of a MoD filename/email subject (&lt;a href=&quot;/writing/mod-email-subject-lines-with-applescript-osx/&quot;&gt;which I wrote about in 2013&lt;/a&gt;). The “OS” suffix is an &lt;strong&gt;OFFICIAL-SENSITIVE&lt;/strong&gt; &lt;a href=&quot;https://www.gov.uk/government/publications/government-security-classifications/government-security-classifications-policy-html#definitions-for-official-secret-and-top-secret&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;protective marking&lt;/a&gt;, which isn’t always required, hence two separate commands.&lt;/p&gt;
&lt;h5 id=&quot;eraf-ehi-and-mob&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#eraf-ehi-and-mob&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!eraf&lt;/code&gt;, &lt;code&gt;!ehi&lt;/code&gt; and &lt;code&gt;!mob&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;These insert my two current email addresses and phone number, respectively. My RAF email is in the form &lt;em&gt;&lt;a href=&quot;mailto:name.surname.number@rafac.mod.gov.uk&quot;&gt;name.surname.number@rafac.mod.gov.uk&lt;/a&gt;&lt;/em&gt; which is far too long to type by hand. I use the others less frequently than I used to because my password manager got better at inserting my details into web forms.&lt;/p&gt;
&lt;h5 id=&quot;meet-zoom-and-linkedin&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#meet-zoom-and-linkedin&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!meet&lt;/code&gt;, &lt;code&gt;!zoom&lt;/code&gt; and &lt;code&gt;!linkedin&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;These insert URLs which I use regularly or which are long enough that I struggle to remember them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;meet&lt;/em&gt; - My meeting booking link. I can use Raycast’s Cal.com integration to get meeting links for my specific types of meeting, but most of the time I just wanna share my “book a meeting” homepage.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;zoom&lt;/em&gt; - The join link for my Zoom personal meeting room.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;linkedin&lt;/em&gt; - Because I can &lt;strong&gt;never&lt;/strong&gt; remember the form of my LinkedIn profile URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&quot;a1-a2-and-ap&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#a1-a2-and-ap&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;code&gt;!a1&lt;/code&gt;, &lt;code&gt;!a2&lt;/code&gt; and &lt;code&gt;!ap&lt;/code&gt;&lt;/h5&gt;
&lt;p&gt;Insert the first, second and &lt;a href=&quot;https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;postcode&lt;/a&gt; lines of my home address. Again, I used these much more before my password manager got good at webforms.&lt;/p&gt;</content:encoded></item><item><title>Quoting Sean Goedecke on Becoming Unblockable</title><link>https://danny.is/notes/sean-on-becoming-unblockable/</link><guid isPermaLink="true">https://danny.is/notes/sean-on-becoming-unblockable/</guid><pubDate>Tue, 30 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Do whatever it takes to have a stable and reliable developer environment. I don’t think it’s possible to overstate the importance of this. The stability of your developer environment directly determines how much of a workday you can spend actually doing work.&lt;/p&gt;
&lt;p&gt;For instance, use as normal a developer stack as possible. At GitHub, most development is done in Codespaces, a platform for server-hosted dev containers. You can connect to a codespace with almost any IDE, but the majority of people use VSCode, so I use VSCode, with as few plugins as possible2. I think a lot of developers are too focused on their personal “top speed” with their developer environment when everything is working great, and under-emphasize how much time they spend tweaking config, patching dotfiles, and troubleshooting in general.&lt;/p&gt;
&lt;p&gt;Fix developer environment problems as quickly as production incidents. If you can’t run tests or run a local server, don’t half-ass the troubleshooting process - focus on it until it’s fixed. On the flip side, don’t treat it as a leisurely learning experience (say, about how MacOS handles Dockerized networking). In many circumstances you’re probably better off tearing down and re-creating everything than digging in and trying to patch the specific issue.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tons of other great advice in here too.&lt;/p&gt;</content:encoded></item><item><title>Using Claude Code to pull old articles into this Astro site</title><link>https://danny.is/notes/claude-code-to-pull-old-articles-into-astro/</link><guid isPermaLink="true">https://danny.is/notes/claude-code-to-pull-old-articles-into-astro/</guid><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I read &lt;a href=&quot;https://simonwillison.net/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Simon Willison’s blog religeously&lt;/a&gt;, and occasionally he references a post he wrote way back in the dark ages of 2005. Every time he does I think what a shame it is that I lost a lot of the content I’ve posted over the years by intermittently switching the platform and domain I publish on. I’ve various published on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://danny.is&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://danny.is&lt;/a&gt; (since about 2013)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dasmith.co.uk&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://dasmith.co.uk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.dasmith.co.uk&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://blog.dasmith.co.uk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://notes.dasmith.co.uk&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://notes.dasmith.co.uk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://thescri.be&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://thescri.be&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In July I stumbled on a GitHub repo which had some of my old posts from dasmith.co.uk, and &lt;a href=&quot;https://github.com/dannysmith/dannyis-astro/commit/0eb989215fbd265bf0fd7b6f2f4806f5ca3846b7&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;ported them over&lt;/a&gt; to this site.&lt;/p&gt;
&lt;p&gt;Today I spent a little bit of time looking on the Wayback Machine to see if I could find and move over some of my much older writing - particularly the stuff I published on my first blog (thescri.be) circa 2005-07. I asked Claude Code to:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;text&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:609ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;Okay, so I Just remembered that many years ago I used to have a blog on http://thescri.be And some of those posts are archived on the Wayback Machine. The latest snapshot I can find is here: https://web.archive.org/web/20080521124353/http://thescri.be/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;I would like you to go through the posts on there and download their content into a series of markdown files. I think that eventually I will want to make all of these Notes in this site, But for now I just want to get down the content, ensure that the links are correct. Ensure that the dates and titles and everything are correct. And also wherever possible get any images which have been backed up. Um before actually trying to get all of these, you should come up with a plan for how you&amp;#39;re going to get them. Ultrathink And do a little bit of exploring and research to work out the best way of doing this.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Okay, so I Just remembered that many years ago I used to have a blog on http://thescri.be And some of those posts are archived on the Wayback Machine. The latest snapshot I can find is here: https://web.archive.org/web/20080521124353/http://thescri.be/I would like you to go through the posts on there and download their content into a series of markdown files. I think that eventually I will want to make all of these Notes in this site, But for now I just want to get down the content, ensure that the links are correct. Ensure that the dates and titles and everything are correct. And also wherever possible get any images which have been backed up. Um before actually trying to get all of these, you should come up with a plan for how you&apos;re going to get them. Ultrathink And do a little bit of exploring and research to work out the best way of doing this.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It came up with a plan which involced using the &lt;a href=&quot;https://github.com/ChromeDevTools/chrome-devtools-mcp&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;chrome-devtools MCP&lt;/a&gt; to spin up a browser and navigate the internet archive to find as many posts as it could from various snapshots. It did a really good job of finding posts which only appeared in one snapshot, which it turned out was quite a lot of them (all in different snapshots). It then extracted their contents and downloaded any archived images and created some markdown files with YAML frontmatter for them. I then asked it to:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;text&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:219ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;Okay, now what I&amp;#39;d like you to do is go through these posts and do the following:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;1. Turn them into MDX files which import &amp;lt;Callout&amp;gt; from &amp;#39;@components/mdx&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;2. Update the frontmatter so that it matches the correct format for my notes content collection. Turn the categories into tags and discard the originalURL.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;3. Fix up any markdown formatting issues.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;4. Add a &amp;lt;Callout&amp;gt; at the top of each saying &amp;quot;This was originally posted on [thescri.be](originalURL) on &amp;lt;date in human readable format&amp;gt; and was imported here from the [Internet Archive](archiveUrl) on 18 December 2025&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;5. Move the files into `src/notes`&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;6. Move any images to `src/assets/notes` and rename in the form &amp;quot;xxxx-xx-xx-current-file-name.ext&amp;quot; where xxx-xx-xx is the date the post was made. Update the image links in the posts.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;7. Ensure internal links use the correct Astro URLs (eg: [link](/notes/&amp;lt;slug&amp;gt;)). If the internal links point at posts which we haven&amp;#39;t been able to retrieve, leave the original thescri.be URLs.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Okay, now what I&apos;d like you to do is go through these posts and do the following:1. Turn them into MDX files which import &lt;Callout&gt; from &apos;@components/mdx&apos;2. Update the frontmatter so that it matches the correct format for my notes content collection. Turn the categories into tags and discard the originalURL.3. Fix up any markdown formatting issues.4. Add a &lt;Callout&gt; at the top of each saying &amp;#34;This was originally posted on [thescri.be](originalURL) on &lt;date in human readable format&gt; and was imported here from the [Internet Archive](archiveUrl) on 18 December 2025&amp;#34;5. Move the files into `src/notes`6. Move any images to `src/assets/notes` and rename in the form &amp;#34;xxxx-xx-xx-current-file-name.ext&amp;#34; where xxx-xx-xx is the date the post was made. Update the image links in the posts.7. Ensure internal links use the correct Astro URLs (eg: [link](/notes/&lt;slug&gt;)). If the internal links point at posts which we haven&apos;t been able to retrieve, leave the original thescri.be URLs.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;So in two prompts (three if you include &lt;code&gt;yes do it&lt;/code&gt; after it did the planning) I ended up with a load of my super old writing as notes in this site! I’ll do something similar for the other old domains I have soon!&lt;/p&gt;</content:encoded></item><item><title>Major Update to Tauri Template</title><link>https://danny.is/notes/tauri-template-update-dec-25/</link><guid isPermaLink="true">https://danny.is/notes/tauri-template-update-dec-25/</guid><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://github.com/dannysmith/tauri-template&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Tauri Template&lt;/a&gt; is a batteries-included template for building production-ready desktop applications with Tauri, React and TypeScript. It’s designed with opinionated patterns that help both humans and AI coding agents build well-architected apps. The first version of it was extracted from Astro Editor in the summer, and yesterday I shipped some fairly major updates to it…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added &lt;strong&gt;cross-platform support&lt;/strong&gt; including path normalisation, OS-detection utilities, sensible title bars and updated GitHub actions for building releases for all platforms.&lt;/li&gt;
&lt;li&gt;Added &lt;a href=&quot;https://github.com/specta-rs/tauri-specta&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;tauri-specta&lt;/a&gt; for &lt;strong&gt;typesafe Tauri commands&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Switched to &lt;strong&gt;React Compiler&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Added &lt;strong&gt;static analysis&lt;/strong&gt; tools: &lt;a href=&quot;https://knip.dev/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;knip&lt;/a&gt;, &lt;a href=&quot;https://github.com/kucherenko/jscpd&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;jspcd&lt;/a&gt; and &lt;a href=&quot;https://ast-grep.github.io/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;ast-grep&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Added a &lt;strong&gt;quick entry pane&lt;/strong&gt; which is a floating window that can appear anywhere. This is triggered by a global shortcut which can be changed in the preferences. On macOS it’s converted to an &lt;code&gt;NSPane&lt;/code&gt; so it works over fullscreen apps, and there is an event bridge pattern which allows for this kind of pane to send data to the main window. The idea here is to provide a working example of how global spotlight-esque things should work.&lt;/li&gt;
&lt;li&gt;Added a bunch of other &lt;a href=&quot;https://github.com/dannysmith/tauri-template/blob/main/docs/developer/tauri-plugins.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;common &lt;strong&gt;Tauri plugins&lt;/strong&gt;&lt;/a&gt; which are likely to be needed in most apps.&lt;/li&gt;
&lt;li&gt;Added &lt;strong&gt;internationalisation&lt;/strong&gt;, including support for RTL languages.&lt;/li&gt;
&lt;li&gt;Tweaked the shadcn theme and &lt;strong&gt;cleaned up the Tailwind and CSS&lt;/strong&gt; a bit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactored the monolithic &lt;code&gt;lib.rs&lt;/code&gt;&lt;/strong&gt; into multiple files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactored&lt;/strong&gt; the React components slightly.&lt;/li&gt;
&lt;li&gt;Fixed a whole slew of &lt;strong&gt;bugs, potential edge cases and performance issues&lt;/strong&gt; and generally made the code more &lt;strong&gt;defensive&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Completely overhauled the &lt;strong&gt;developer documentation&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Simplified the Claude Code Commands and Agents and &lt;strong&gt;updated the AI Agent files&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Plus a load of other little things which I can’t remember.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you’re looking to start a new Tauri project, it’s a good place to start. &lt;a href=&quot;https://github.com/dannysmith/tauri-template&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Give it a try&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>How AI Is Transforming Work at Anthropic \ Anthropic</title><link>https://danny.is/notes/2025-12-12-how-ai-is-transforming-work/</link><guid isPermaLink="true">https://danny.is/notes/2025-12-12-how-ai-is-transforming-work/</guid><pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is an interesting read.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;27% of Claude-assisted work consists of tasks that wouldn’t have been done otherwise&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is one of the huge advantages of LLMs for me.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Most employees use Claude frequently while reporting they can “fully delegate” 0-20% of their work to it. Claude is a constant collaborator but using it generally involves active supervision and validation, especially in high-stakes work—versus handing off tasks requiring no verification at all.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is also good to see in a report from an AI company like Anthropic. Far too many folks are hailing Agentic AI as a death knell for engineers. But this chimes with my experience, and if Anthropic themselves are still working like this I think we can safely say “nope” to that one.&lt;/p&gt;
&lt;p&gt;The full article is worth a read.&lt;/p&gt;</content:encoded></item><item><title>The Great Software Quality Collapse: How We Normalized Catastrophe</title><link>https://danny.is/notes/2025-12-12-the-great-software-quality-collapse/</link><guid isPermaLink="true">https://danny.is/notes/2025-12-12-the-great-software-quality-collapse/</guid><pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A lot in this article chimes true to me. The Enshitification is everywhere. (Discovered via &lt;a href=&quot;https://notes.jim-nielsen.com/#2025-12-01T1259&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Jim’s notes&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;But this is by far the scariest thing…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here’s the most devastating long-term consequence: we’re eliminating the junior developer pipeline.&lt;/p&gt;
&lt;p&gt;Companies are replacing junior positions with AI tools, but senior developers don’t emerge from thin air. They grow from juniors who:&lt;/p&gt;
&lt;p&gt;Debug production crashes at 2 AM&lt;/p&gt;
&lt;p&gt;Learn why that “clever” optimization breaks everything&lt;/p&gt;
&lt;p&gt;Understand system architecture by building it wrong first&lt;/p&gt;
&lt;p&gt;Develop intuition through thousands of small failures&lt;/p&gt;
&lt;p&gt;Without juniors gaining real experience, where will the next generation of senior engineers come from? AI can’t learn from its mistakes—it doesn’t understand why something failed. It just pattern-matches from training data.&lt;/p&gt;
&lt;p&gt;We’re creating a lost generation of developers who can prompt but can’t debug, who can generate but can’t architect, who can ship but can’t maintain.&lt;/p&gt;
&lt;p&gt;The math is simple: No juniors today = No seniors tomorrow = No one to fix what AI breaks.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>I&apos;m glad people still make things like this</title><link>https://danny.is/notes/2025-12-08-funny-sites-dec-25/</link><guid isPermaLink="true">https://danny.is/notes/2025-12-08-funny-sites-dec-25/</guid><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;bookmark-card cq &quot; data-astro-cid-pqznbby6&gt; &lt;a href=&quot;https://replaceyourboss.ai/&quot; class=&quot;bookmark-link&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; data-astro-cid-pqznbby6&gt; &lt;div class=&quot;bookmark-content&quot; data-astro-cid-pqznbby6&gt; &lt;span class=&quot;bookmark-title&quot; data-astro-cid-pqznbby6&gt;AI CEO – Replace Your Boss Before They Replace You&lt;/span&gt; &lt;p class=&quot;bookmark-description&quot; data-astro-cid-pqznbby6&gt;Stop working for humans. AI CEO delivers algorithmic thought leadership, with instant decisions, and zero ego. Replace your boss before they replace you.&lt;/p&gt; &lt;span class=&quot;bookmark-domain&quot; data-astro-cid-pqznbby6&gt;replaceyourboss.ai&lt;/span&gt;  &lt;/div&gt; &lt;img src=&quot;/OGImage.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot; data-astro-cid-pqznbby6&gt; &lt;/a&gt; &lt;/div&gt;
&lt;div class=&quot;bookmark-card cq &quot; data-astro-cid-pqznbby6&gt; &lt;a href=&quot;https://oilwell.app/&quot; class=&quot;bookmark-link&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; data-astro-cid-pqznbby6&gt; &lt;div class=&quot;bookmark-content&quot; data-astro-cid-pqznbby6&gt; &lt;span class=&quot;bookmark-title&quot; data-astro-cid-pqznbby6&gt;Oilwell - Meditate through the meltdown&lt;/span&gt; &lt;p class=&quot;bookmark-description&quot; data-astro-cid-pqznbby6&gt;A wellness app to help you embrace climate chaos, created by Edelman, Oil and Gas PR. From Smog Breathing Exercises, to Lifeless Rock Visualizations, to Wildfire ASMR.&lt;/p&gt; &lt;span class=&quot;bookmark-domain&quot; data-astro-cid-pqznbby6&gt;oilwell.app&lt;/span&gt;  &lt;/div&gt; &lt;img src=&quot;/preview/Oilwell-OG-5.jpg&quot; alt=&quot;&quot; loading=&quot;lazy&quot; data-astro-cid-pqznbby6&gt; &lt;/a&gt; &lt;/div&gt;
&lt;p&gt;(While funny, I hate that folks felt the need to make these, obvs)&lt;/p&gt;</content:encoded></item><item><title>&quot;Helpful rather than hurtful to the interests of mankind&quot; – Richard Rutter</title><link>https://danny.is/notes/2025-12-08-helpful-rather-than-hurtful/</link><guid isPermaLink="true">https://danny.is/notes/2025-12-08-helpful-rather-than-hurtful/</guid><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The band &lt;a href=&quot;https://www.publicservicebroadcasting.net/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Public Service Broadcasting&lt;/a&gt; put those speeches to music in a &lt;a href=&quot;https://publicservicebroadcasting.bandcamp.com/album/this-new-noise&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;wonderful concert&lt;/a&gt; at the Royal Albert Hall. It’s beautiful and well worth a few minutes of your day&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is absolutely beautiful and very relevant to the times we live in, as Richard points out.&lt;/p&gt;
&lt;iframe style=&quot;border: 0; width: 100%; height: 120px;&quot; src=&quot;https://bandcamp.com/EmbeddedPlayer/album=352573560/size=large/bgcol=ffffff/linkcol=de270f/tracklist=false/artwork=small/track=208252773/transparent=true/&quot; seamless&gt;&amp;#x3C;a href=&quot;https://publicservicebroadcasting.bandcamp.com/album/this-new-noise&quot;&gt;This New Noise by Public Service Broadcasting, BBC Symphony Orchestra, Jules Buckley&amp;#x3C;/a&gt;&lt;/iframe&gt;
&lt;blockquote&gt;
&lt;p&gt;This country has in its hands an instrument of incalculable power for good. An instrument that can be given to spreading among the nation the true knowledge of each other. Helpful rather than hurtful to the interests of mankind.&lt;/p&gt;
&lt;p&gt;These newly acquired skills of mankind will move at a breathtaking pace. Broadcasting, which we begin to see now as a worldwide international service, is a step into the future even more dramatic than the devеlopment of flying.&lt;/p&gt;
&lt;p&gt;Broadcasting without its responsibilities is nothing. It’s not a way of thought, it’s not a way of culturе, it’s not a way of life. It’s there to serve thought, so that people think for themselves.&lt;/p&gt;
&lt;p&gt;It’s there to serve culture in such a way that people will turn more and more to active participation in the arts. Go to the theatre, attend concerts, read books, use their hands. And help to build a community in which broadcasting is only a very small part of a full and satisfying life.&lt;/p&gt;
&lt;p&gt;It has helped something living in us to keep alive. And it has reminded us in its graver moments that life won’t last. And that for this very reason, there are things more important than success or power.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Jim Nielsen: Grow, Like a Tree Not a Cancer</title><link>https://danny.is/notes/2025-12-08-jim-nielsen-grow/</link><guid isPermaLink="true">https://danny.is/notes/2025-12-08-jim-nielsen-grow/</guid><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Tree growth responds to its environment and integrates with its ecosystem. Growth is sustainable, balancing expansion and repair. It scales in harmony with its context.&lt;/p&gt;
&lt;p&gt;Cancer growth is selfish, consuming resources at the expense of its host. Growth is uncontrolled until the system that supports it collapses. It scales through extraction until failure.&lt;/p&gt;
&lt;p&gt;When we talk about the growth of technology in the 21st century, which kind of growth do you think best describes it?&lt;/p&gt;
&lt;p&gt;“Hey, {social media | AI} grew so big, we all sat together under its canopy and enjoyed the shade.”&lt;/p&gt;
&lt;p&gt;Said no one.&lt;/p&gt;
&lt;p&gt;More likely: “Hey, {social media | AI} grew so big, it metastasized beyond what society could bear and now look at the mess we’re in.”&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>The only winning move is not to play</title><link>https://danny.is/notes/2025-12-08-the-only-winning-move/</link><guid isPermaLink="true">https://danny.is/notes/2025-12-08-the-only-winning-move/</guid><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Maybe you just hate or don’t get AI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Au contraire! AI can be magical (especially in medical imaging and programming). I used Gemini to update a SQL query recently at the encouragement of a data science peer. I use a product called Granola (not a paid mention, fwiw) for call transcription, notes organization, and pulling up quotes. I work with designers who spin up prototypes with Figma Make that I then test with humans. I work with engineers who use AI for spam mitigation and trust and safety tasks. &lt;a href=&quot;https://genpurpose.substack.com/p/research-slop&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Jess Holbrook&lt;/a&gt; smartly advocated for using AI to take a dissent pass on research artifacts and to challenge yourself and your findings.&lt;/p&gt;
&lt;p&gt;What I don’t do is use generative AI or LLMs to spit out an entire research plan, synthesize hours of interviews, or conduct my interviews for me (?!). One reason why I don’t do any of these is that generative AI can’t replace the meaning-making that human researchers do. Why would we even want to use AI to replace the tasks that humans are uniquely good at, or the tasks that humans enjoy, or the tasks that connect us to other humans? To me the personal connection is the best part of being a user researcher or user-centered designer!&lt;/p&gt;
&lt;p&gt;This is what gets my goat: AI has many useful applications. This moment in time really is akin to the start of the internet era, in that AI has broken containment and entered mainstream conversation (in no small part due to marketing hype centered on illogical use cases). However, the hype has created acolytes with an ill-fitting solution to the non-existent problem of how to study humans better.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>A Good Read: Using LLMs at Oxide</title><link>https://danny.is/notes/using-llms-at-oxide/</link><guid isPermaLink="true">https://danny.is/notes/using-llms-at-oxide/</guid><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thoughtful guidance on using LLMs at work. Feel like I’m gonna borrow heavily from this next time I have to write a policy on this.&lt;/p&gt;</content:encoded></item><item><title>Build Your Own Database</title><link>https://danny.is/notes/2025-11-21-build-your-own-database/</link><guid isPermaLink="true">https://danny.is/notes/2025-11-21-build-your-own-database/</guid><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a fantastic interactive tutorial. The content is great, but so is the design and way it’s put together.&lt;/p&gt;</content:encoded></item><item><title>Josh Farrant&apos;s Weblog</title><link>https://danny.is/notes/2025-11-21-josh-farrants-weblog/</link><guid isPermaLink="true">https://danny.is/notes/2025-11-21-josh-farrants-weblog/</guid><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I absolutely love everything about this website.&lt;/p&gt;</content:encoded></item><item><title>Quoting Simon quoting Steve Krouse</title><link>https://danny.is/notes/2025-11-13-quoting-simon-quoting-steve-krouse/</link><guid isPermaLink="true">https://danny.is/notes/2025-11-13-quoting-simon-quoting-steve-krouse/</guid><pubDate>Thu, 13 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The fact that MCP is a difference surface from your normal API allows you to ship MUCH faster to MCP. This has been unlocked by inference at runtime&lt;/p&gt;
&lt;p&gt;Normal APIs are promises to developers, because developer commit code that relies on those APIs, and then walk away. If you break the API, you break the promise, and you break that code. This means a developer gets woken up at 2am to fix the code&lt;/p&gt;
&lt;p&gt;But MCP servers are called by LLMs which dynamically read the spec every time, which allow us to constantly change the MCP server. It doesn’t matter! We haven’t made any promises. The LLM can figure it out afresh every time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://x.com/stevekrouse/status/1988641250329989533&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;original tweet&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>How Did I Get Here?</title><link>https://danny.is/notes/2025-11-11-how-did-i-get-here/</link><guid isPermaLink="true">https://danny.is/notes/2025-11-11-how-did-i-get-here/</guid><pubDate>Tue, 11 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is really cool&lt;/p&gt;</content:encoded></item><item><title>Quoting Cubic: The real problem with AI coding</title><link>https://danny.is/notes/cubic-the-real-problem-with-ai-coding/</link><guid isPermaLink="true">https://danny.is/notes/cubic-the-real-problem-with-ai-coding/</guid><pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;How the best teams avoid comprehension debt The best teams I’ve seen solve this problem before any code gets written.&lt;/p&gt;
&lt;p&gt;They spend significant time planning with the AI upfront. Not just giving it a prompt and accepting whatever comes back. But going back and forth on the high-level approach. Thinking through edge cases together. Shaping the implementation before a single line gets generated.&lt;/p&gt;
&lt;p&gt;This isn’t about slowing down. It’s about understanding what you’re building.&lt;/p&gt;
&lt;p&gt;When you shape the implementation with the AI, two things happen:&lt;/p&gt;
&lt;p&gt;First, the AI writes better code. Because you’ve given it more context, thought through the edge cases, and guided it toward a cleaner architecture.&lt;/p&gt;
&lt;p&gt;But second, and this is more important, the human engineer actually understands the code. Because they shaped it. They made the key decisions. The AI just handled the mechanical work of typing it out.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Frank Chimero · Selling Lemons</title><link>https://danny.is/notes/2025-11-03-frank-chimero-selling-lemons/</link><guid isPermaLink="true">https://danny.is/notes/2025-11-03-frank-chimero-selling-lemons/</guid><pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Akerlof asks us to imagine ourselves buying a used car. Some cars on the lot are reliable, well-maintained gems. Others cars are lemons, the kinds of cars that can make it off the lot but are disasters waiting to happen. The sellers know which cars are which, but you, as a buyer, can’t tell the difference. That information asymmetry affects the average price in the market and eventually impacts the overall market dynamics.&lt;/p&gt;
&lt;p&gt;The thinking goes like this: if a buyer can’t distinguish between good and bad, everything gets priced somewhere in the middle. If you’re selling junk, this is fantastic news—you’ll probably get paid more than your lemon is worth. If you’re selling a quality used car, this price is insultingly low. As a result, people with good cars leave the market to sell their stuff elsewhere, which pushes the overall quality and price down even further, until eventually all that’s left on the market are lemons.&lt;/p&gt;
&lt;p&gt;I think we’re in the lemon stage of the internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(I’m super happy Frank is writing again)&lt;/p&gt;</content:encoded></item><item><title>Adding share features to this site</title><link>https://danny.is/notes/adding-share-features/</link><guid isPermaLink="true">https://danny.is/notes/adding-share-features/</guid><pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently added a little feature to articles and notes on this site to make things easier to share. At the bottom of every article and note, there are three links:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Share&lt;/strong&gt; - uses the browsers &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Web Share API&lt;/a&gt; to open a share-sheet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy as markdown&lt;/strong&gt; - copies the content of the article/note as markdown&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;View as markdown&lt;/strong&gt; - opens the current URL with an &lt;code&gt;.md&lt;/code&gt; extension which returns the above with &lt;code&gt;Content-Type: text/markdown;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/src/assets/notes/2025-10-22-screenshot-2025-10-22-at-1511.51.png&quot; alt=&quot;Screenshot of new links on articles and notes&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Thanks to tools like Claude Code, I’m finding myself working more and more with markdown, so it makes sense for me to make any content I write available in that format too.&lt;/p&gt;
&lt;p&gt;You can try these out on this note ↓&lt;/p&gt;</content:encoded></item><item><title>Vibing a Non-Trivial Ghostty Feature</title><link>https://danny.is/notes/2025-10-20-vibing-a-non-trivial-ghostty-feature/</link><guid isPermaLink="true">https://danny.is/notes/2025-10-20-vibing-a-non-trivial-ghostty-feature/</guid><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article by Mitchell Hashimoto very closely describes how I tend to work with AI tools to “vibe code”.&lt;/p&gt;
&lt;p&gt;(It’s not really vibe-coding, because I’m watching the AI work and reading a lot of the code.)&lt;/p&gt;</content:encoded></item><item><title>The Oatmeal on AI Art</title><link>https://danny.is/notes/oatmeal-on-ai-art/</link><guid isPermaLink="true">https://danny.is/notes/oatmeal-on-ai-art/</guid><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I used to read The Oatmeal religiously, but somehow stopped years ago.&lt;/p&gt;
&lt;p&gt;This is a &lt;strong&gt;Good Take&lt;/strong&gt; on AI Art, as I’d expect from Matt.&lt;/p&gt;</content:encoded></item><item><title>Armin Ronacher on Progress</title><link>https://danny.is/notes/2025-10-04-armin-ronacher-on-progress/</link><guid isPermaLink="true">https://danny.is/notes/2025-10-04-armin-ronacher-on-progress/</guid><pubDate>Sat, 04 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;As I’m getting older a lot of my social circles are becoming ever more conservative. The focus shifts from building with ambition to fiercly protecting what one has achieved. Shifting the mind on protectionism makes one consider all that can cause damage. It puts the focus on the negative, it makes those negative thoughts feel much more significant than they are and one dwells on the past, instead of envisioning of what opportunity might lie ahead.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>A Youth Paralysed By Perfectionism - The Akin</title><link>https://danny.is/notes/2025-09-17-today-me/</link><guid isPermaLink="true">https://danny.is/notes/2025-09-17-today-me/</guid><pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Previous generations mainly experienced productive shame, a form of competitive pressure that drove young people to differentiate themselves for social success, whether rightly or wrongly. But most often, this shame motivated risk-taking, skill development, and participation. Being bad at something was usually a temporary embarrassment that motivated improvement.&lt;/p&gt;
&lt;p&gt;Gen Q experiences mostly destructive shame, characterised by shame around not performing correctly from the start, not having enough experience, and not meeting digital standards before attempting anything.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The result of this decline in participation is Digital Primacy, where digital experiences feel more real and valuable than physical ones. This is why 72% of Gen Q feel digital life is more real than physical life. They achieve recognition through online performance rather than offline skill development.&lt;/p&gt;
&lt;p&gt;The reason is neurological: physical activities provide immediate, embodied feedback that can’t be edited or optimised. When you hit a tennis ball, your body knows immediately whether it worked. This creates resilience to failure that digital experiences can’t replicate. Online, everything can be retried, filtered, and perfected before sharing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These numbers are indeed striking…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Teens involved in sports, dance, martial arts, or even casual hiking maintain 2.8 close friendships, compared to 1.4 for their sedentary peers.&lt;/p&gt;
&lt;p&gt;Their digital primacy drops to 52% compared to 73% in the general population.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Gen Q doesn’t need another confidence boost; they need permission to be shit at things while figuring them out.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>15 rules for blogging</title><link>https://danny.is/notes/2025-09-16-15-rules-for-blogging/</link><guid isPermaLink="true">https://danny.is/notes/2025-09-16-15-rules-for-blogging/</guid><pubDate>Tue, 16 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I found Matt’s website today and had a lovely couple of hours exploring his writing.&lt;/p&gt;
&lt;p&gt;I love most of his 15 &lt;a href=&quot;https://interconnected.org/home/2020/09/10/streak&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Rules for Blogging&lt;/a&gt;, but this one in particular…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One idea per post. If I find myself launching into another section, cut and paste the extra into a separate draft post, and tie off the original one with the word “Anyway.” Then publish.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I regularly get excited enough to write a kinda-stream-of-consciousness thought down which turns out to be half-decent &lt;strong&gt;except for the end&lt;/strong&gt;. And these often languish as drafts for ages for want of a neat way to wrap them up.&lt;/p&gt;
&lt;p&gt;I just looked at my unfinished drafts and about two thirds of them are hard to wrap up because they contain multiple kinda-related ideas which are &lt;em&gt;just a bit too hard&lt;/em&gt; to bring together in a conclusion I’m happy with.&lt;/p&gt;
&lt;p&gt;Anyway.&lt;/p&gt;</content:encoded></item><item><title>On Working with Wizards - by Ethan Mollick</title><link>https://danny.is/notes/2025-09-14-on-working-with-wizards-by-ethan-mollick/</link><guid isPermaLink="true">https://danny.is/notes/2025-09-14-on-working-with-wizards-by-ethan-mollick/</guid><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;And that suggests another risk we don’t talk about enough: every time we hand work to a wizard, we lose a chance to develop our own expertise, to build the very judgment we need to evaluate the wizard’s work.&lt;/p&gt;
&lt;p&gt;But I come back to the inescapable point that the results are good, at least in these cases. They are what I would expect from a graduate student working for a couple hours (or more, in the case of the re-analysis of my paper), except I got them in minutes.&lt;/p&gt;
&lt;p&gt;This is the issue with wizards: We’re getting something magical, but we’re also becoming the audience rather than the magician, or even the magician’s assistant.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>The Rise and Fall of Vibe Coding | Tomasz Tunguz</title><link>https://danny.is/notes/2025-09-08-the-rise-and-fall-of-vibe-coding-tomasz-tunguz/</link><guid isPermaLink="true">https://danny.is/notes/2025-09-08-the-rise-and-fall-of-vibe-coding-tomasz-tunguz/</guid><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The fundamental problem lies in misaligned capabilities and understanding. AI generates working code fast but cannot instill architectural thinking or testing discipline.&lt;/p&gt;
&lt;p&gt;Users gain false competency. They produce working software without grasping underlying complexity or long-term implications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Engineering best practices must become as accessible as AI coding tools. Security improvements and test generation should happen in natural language.&lt;/p&gt;
&lt;p&gt;The future involves hybrid workflows. “Vibe coders” prototype solutions while engineers harden successful experiments.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Reflections on an old article I wrote</title><link>https://danny.is/notes/2025-08-31-reflections-on-old-article/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-31-reflections-on-old-article/</guid><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So seven years hence I’m re-reading this, and… this paragraph applies even bloody more in 2025 if we replace googling and stackoverflow with “talking with Large Language Models”.
I’m generally bullish re LLMs as far as speeding up coding. But I’m the opposite as far as learning and what I wrote in this article is concerned.&lt;/p&gt;
&lt;p&gt;Like StackOverflow in 2018, LLMs are very good at knowing how to solve well-defined, general-case problems which can be defined with some specificity. And like StackOverflow in 2018, they are shit at solving ill-defined general technical problems… especially when those problems exist in a niche business domain.&lt;/p&gt;
&lt;p&gt;Relevant aside…&lt;/p&gt;
&lt;p&gt;It pains me to think that a meaningful chunk of people will probably find this note because they’re &lt;em&gt;finding it hard to break down problems when learning to code&lt;/em&gt; and will end up engaging with it via some AI-summary rather than by actually reading it. And then move on to the next thing without taking anything at all meaningful from my 2018 words besides “man coding sounds hard”. I hope I’m wrong here.&lt;/p&gt;</content:encoded></item><item><title>Mass Intelligence?</title><link>https://danny.is/notes/2025-09-01-mass-intelligence-by-ethan-mollick-one-useful-thing/</link><guid isPermaLink="true">https://danny.is/notes/2025-09-01-mass-intelligence-by-ethan-mollick-one-useful-thing/</guid><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;When a billion people have access to advanced AI, we’ve entered what we might call the era of Mass Intelligence. Every institution we have — schools, hospitals, courts, companies, governments — was built for a world where intelligence was scarce and expensive. Now every profession, every institution, every community has to figure out how to thrive with Mass Intelligence. How do we harness a billion people using AI while managing the chaos that comes with it? How do we rebuild trust when anyone can fabricate anything? How do we preserve what’s valuable about human expertise while democratizing access to knowledge?&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>That boolean should probably be something else - Nicole</title><link>https://danny.is/notes/2025-09-01-that-boolean-should-probably-be-something-else-nicoleweb/</link><guid isPermaLink="true">https://danny.is/notes/2025-09-01-that-boolean-should-probably-be-something-else-nicoleweb/</guid><pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a great (short) article on using booleans.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;They feel like they make sense for our data, but they make sense for our logic. The data is usually something different underneath. By storing a boolean as our data, we’re coupling that data tightly to our application logic.&lt;/p&gt;
&lt;p&gt;Instead, we should remain critical and ask what data the boolean depends on, and should we maybe store that instead? It comes easier with practice. Really, all good design does. A little thinking up front saves you a lot of time in the long run.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes 💯&lt;/p&gt;
&lt;p&gt;Also…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I know that using an em-dash is treated as a sign of using LLMs. LLMs are never used for my writing. I just really like em-dashes and have a dedicated key for them on one of my keyboard layers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a longtime em-dash user myself, I should start adding this to my posts.&lt;/p&gt;</content:encoded></item><item><title>Learning is the product of the activity of learners</title><link>https://danny.is/notes/learning-is-the-product-of-activity/</link><guid isPermaLink="true">https://danny.is/notes/learning-is-the-product-of-activity/</guid><pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Learning is not the product of teaching. Learning is the product of the activity of learners. — John Holt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I love this quote (&lt;a href=&quot;https://www.recurse.com/about&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;via&lt;/a&gt;)&lt;/p&gt;</content:encoded></item><item><title>Are people’s bosses really making them use AI tools? - Piccalilli</title><link>https://danny.is/notes/2025-08-28-are-peoples-bosses-really-making-them-use-ai-tools-piccalilli/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-28-are-peoples-bosses-really-making-them-use-ai-tools-piccalilli/</guid><pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I appreciate Andy taking the time to write this because I think we need a more balanced view of how to use LLMs in the tech industry.&lt;/p&gt;
&lt;p&gt;As with any software we use to get work done, LLMs are a &lt;em&gt;tool&lt;/em&gt;. And as with any tool, we need to be using them &lt;strong&gt;correctly&lt;/strong&gt; and intentionally.&lt;/p&gt;
&lt;p&gt;I spent the last month trying to develop my thinking on what &lt;em&gt;correct&lt;/em&gt; looks like, but based on the quotes in this article, a lot of people aren’t bothering to do that in their firms.&lt;/p&gt;</content:encoded></item><item><title>I Am An AI Hater</title><link>https://danny.is/notes/ai-hater/</link><guid isPermaLink="true">https://danny.is/notes/ai-hater/</guid><pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;I am here to be rude, because this is a rude technology, and it deserves a rude response.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This whole article is worth reading (&lt;a href=&quot;https://adactio.com/links/22094&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;via&lt;/a&gt;)&lt;/p&gt;</content:encoded></item><item><title>On Teaching</title><link>https://danny.is/notes/2025-08-24-aha-seths-blog/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-24-aha-seths-blog/</guid><pubDate>Sun, 24 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Teaching is not about assignments, textbooks or authority.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It’s about the pedagogy, connection and approach that creates the conditions for a willing student to change their mind.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Everything else is simply grunt work.&lt;/p&gt;
&lt;p&gt;Sooner or later, we are all self taught.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Building Castles in the Air, but With Surprise Physics</title><link>https://danny.is/notes/castles-in-the-air/</link><guid isPermaLink="true">https://danny.is/notes/castles-in-the-air/</guid><pubDate>Sun, 24 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Programmers still build castles in the air, but they first have to discover what physics apply.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Tauri Template</title><link>https://danny.is/notes/announcing-tauri-template/</link><guid isPermaLink="true">https://danny.is/notes/announcing-tauri-template/</guid><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While building &lt;a href=&quot;https://astroeditor.danny.is&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Astro Editor&lt;/a&gt; I learned a fair bit about Tauri and how to develop simple macOS/React apps with it using Claude Code.&lt;/p&gt;
&lt;p&gt;So I spent a few hours building the boilerplate I wish I’d had when I started, &lt;a href=&quot;https://github.com/dannysmith/tauri-template&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;tauri-template&lt;/a&gt;. It comes with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A basic boilerplate for Tauri 2, React &amp;#x26; Typescript&lt;/li&gt;
&lt;li&gt;A sensible state management system using Zustand and Tanstack Query&lt;/li&gt;
&lt;li&gt;UI components based on shadcn and tailwind 4&lt;/li&gt;
&lt;li&gt;A command system with a command palette, macOS menus and keyboard shortcuts&lt;/li&gt;
&lt;li&gt;An auto-update and release system using GitHub Actions.&lt;/li&gt;
&lt;li&gt;A notifications system with in-app toasts and native notifications.&lt;/li&gt;
&lt;li&gt;A minimal logging system&lt;/li&gt;
&lt;li&gt;A preferences pane and preferences persistence system&lt;/li&gt;
&lt;li&gt;A basic UI with a unified title bar, sidebars and a main panel&lt;/li&gt;
&lt;li&gt;Sensible &lt;a href=&quot;https://github.com/dannysmith/tauri-template/tree/main/docs/developer&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;developer documentation&lt;/a&gt;, &lt;a href=&quot;https://github.com/dannysmith/tauri-template/blob/main/CLAUDE.md&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;AI instructions&lt;/a&gt; and linting/formatting/tests to help AI Agents make fewer errors.&lt;/li&gt;
&lt;li&gt;Some other sensible boilerplate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is mainly meant for &lt;strong&gt;me&lt;/strong&gt; to use as a starting point when building other macOS apps with Tauri &amp;#x26; React.&lt;/p&gt;</content:encoded></item><item><title>The GitHub Profile README That Shouldn&apos;t Exist</title><link>https://danny.is/notes/2025-08-19-how-i-built-a-github-profile-readme-that-shouldnt-exist-but-it-does-deep-thoughts/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-19-how-i-built-a-github-profile-readme-that-shouldnt-exist-but-it-does-deep-thoughts/</guid><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is &lt;strong&gt;very&lt;/strong&gt; cool.&lt;/p&gt;</content:encoded></item><item><title>From Loom to Cap</title><link>https://danny.is/notes/loom-to-cap/</link><guid isPermaLink="true">https://danny.is/notes/loom-to-cap/</guid><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been a big fan of Loom for a long time now. Back when I started working remotely it quickly became a powerful tool for communicating asynchronously (&lt;a href=&quot;https://betterat.work/tool/loom&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;guidance on that&lt;/a&gt;) and combined with Notion and Slack quickly became my go-to for recording screenshares, lessons and short headshot videos for those times when text messages don’t cut it.&lt;/p&gt;
&lt;p&gt;Over the last 5-6 years Loom has added a host of features, most of which aren’t especially useful for me. I basically have two use cases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Quickly record a short screenshare or headshot video, click stop and immediatly paste a working link into Slack/WhatsApp etc.&lt;/li&gt;
&lt;li&gt;Longer, more polished recordings for embedding in Notion documents as tutorials, guides or presentations.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Loom was the first tool to make (1) possible because it streams and encodes your recording &lt;strong&gt;as you record&lt;/strong&gt;, so the video is working as soon as you hit stop. It’s still great for that.&lt;/p&gt;
&lt;p&gt;It’s not so good at (2) because it lacks the editing features required, and because recording at a higher quality would slow down the streaming.&lt;/p&gt;
&lt;p&gt;I’ve always kinda wanted Loom to have two separate modes: one for quick recording which works like normal Loom, and another for more polished stuff which records locally with separate high-quality tracks for screen and camera, and then allows me to edit in a simple interface similar to &lt;a href=&quot;https://screen.studio/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Screen Studio&lt;/a&gt; before uploading to the same place as the quick recordings.&lt;/p&gt;
&lt;p&gt;I’ve also become increasingly annoyed that my many, many videos are all on a &lt;code&gt;loom.com&lt;/code&gt; URL. I’d much rather have them under my own domain.&lt;/p&gt;
&lt;h1 id=&quot;enter-capso&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#enter-capso&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Enter Cap.so&lt;/h1&gt;
&lt;div class=&quot;bookmark-card cq &quot; data-astro-cid-pqznbby6&gt; &lt;a href=&quot;https://cap.so/&quot; class=&quot;bookmark-link&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; data-astro-cid-pqznbby6&gt; &lt;div class=&quot;bookmark-content&quot; data-astro-cid-pqznbby6&gt; &lt;span class=&quot;bookmark-title&quot; data-astro-cid-pqznbby6&gt;Cap — Beautiful screen recordings, owned by you.&lt;/span&gt; &lt;p class=&quot;bookmark-description&quot; data-astro-cid-pqznbby6&gt;Cap is the open source alternative to Loom. Lightweight, powerful, and cross-platform. Record and share in seconds.&lt;/p&gt; &lt;span class=&quot;bookmark-domain&quot; data-astro-cid-pqznbby6&gt;cap.so&lt;/span&gt;  &lt;/div&gt; &lt;img src=&quot;https://cap.so/og.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; data-astro-cid-pqznbby6&gt; &lt;/a&gt; &lt;/div&gt;
&lt;p&gt;Cap is an Open Source project which is almost what I’m looking for. I love that I can self-host it if I want, though I’m more than happy to pay for their SaaS. It’s still a little rough round the edges, but is under active development. Aside from the fact I have a load of historical Looms which I need to leave there for a while, the main thing that’s preventing me switching from Loom full time is the inability to record just my face for a quick recording session, but I’m told this is on the way.&lt;/p&gt;
&lt;p&gt;If you’re a Loom user looking for an alternative, check out &lt;a href=&quot;https://cap.so/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Cap&lt;/a&gt;!&lt;/p&gt;</content:encoded></item><item><title>It&apos;s rude to show AI output to people</title><link>https://danny.is/notes/a-mini-rant-on-slop/</link><guid isPermaLink="true">https://danny.is/notes/a-mini-rant-on-slop/</guid><pubDate>Mon, 18 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;For the longest time, writing was more expensive than reading. If you encountered a body of written text, you could be sure that at the very least, a human spent some time writing it down. The text used to have an innate proof-of-thought, a basic token of humanity.&lt;/p&gt;
&lt;p&gt;Now, AI has made text very, very, very cheap. Not only text, in fact. Code, images, video. All kinds of media. We can’t rely on proof-of-thought anymore. Any text can be AI slop. If you read it, you’re injured in this war.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I &lt;strong&gt;really feel this&lt;/strong&gt;. I’ve read &lt;em&gt;so&lt;/em&gt; much AI slop in READMEs on GitHub in the last few months that it’s had me raging on numerous occasions.&lt;/p&gt;
&lt;p&gt;In fact, I think READMEs are a brilliant example of this point. As someone who’s written &lt;strong&gt;a lot&lt;/strong&gt; of documentation over the years I really appreciate well written docs, so have always been mildly annoyed at GitHub repos with no docs and sparse READMEs.&lt;/p&gt;
&lt;p&gt;The most bare-bones READMEs (of old) were often written by a human who really didn’t wanna write them, but took the time to think about the people using their software and the minimum docs they’d need to do so. &lt;strong&gt;Proof-of-thought.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’d rather have a thousand sparse READMEs than the hundreds of emoji-filled monstrosities I’ve had to work through recently. Especially because 90% of them have &lt;em&gt;less&lt;/em&gt; actual information than the sparse docs they replaced.&lt;/p&gt;
&lt;p&gt;But then the &lt;a href=&quot;https://github.com/dannysmith/astro-editor/tree/main/docs&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;docs for Astro Editor&lt;/a&gt; are mostly AI slop. But it’s &lt;strong&gt;very useful&lt;/strong&gt; slop when AI coding tools are also the reader. In fact, I’ve started putting callouts at the top of markdown files to make it clear whether their contents is intended for humans or LLMs or both.&lt;/p&gt;
&lt;p&gt;But in a much more philosophical context, this is really hard…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We can’t rely on proof-of-thought anymore.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It made me realise that one of the things I love about the internet is that &lt;em&gt;anyone&lt;/em&gt; who writes more than a few sentences here &lt;strong&gt;has intentionally decided to expend brain cycles and time to do so&lt;/strong&gt;. This is true regardless of the quality (or sanity) of the thoughts being shared. Every long, batshit-crazy rant on reddit is a sign that the author cared enough to think and type it. Just as every “nah bro” comment underneath it is a sign of the opposite. Only now the “nah bro” is twenty paragraphs long &lt;strong&gt;and just as thoughtless&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So yeah… it’s rude to show AI output to people.&lt;/p&gt;</content:encoded></item><item><title>Switching to Ghostty Terminal (OMG)</title><link>https://danny.is/notes/ghostty-terminal/</link><guid isPermaLink="true">https://danny.is/notes/ghostty-terminal/</guid><pubDate>Mon, 18 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I finally lost my shit at &lt;a href=&quot;https://www.warp.dev/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Warp&lt;/a&gt; yesterday.&lt;/p&gt;
&lt;p&gt;I’ve used Warp as my terminal app for about three years and have been getting increasingly pissed off at their ongoing efforts to turn my terminal into a fancy AI-enabled everything-machine.&lt;/p&gt;
&lt;p&gt;I understand why – nobody ever got rich by building a terminal app. But when a mistyped &lt;code&gt;ls -a&lt;/code&gt; causes my terminal to say “You’re absolutely right - let me search online for a better solution” I’m gonna look for a terminal which is &lt;strong&gt;just a fucking terminal&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And so I found &lt;a href=&quot;https://ghostty.org/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Ghostty&lt;/a&gt;. Which is exactly what I should always have been using as a terminal.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It’s fast as hell.&lt;/li&gt;
&lt;li&gt;It’s just a terminal. It doesn’t interfere with my shell.&lt;/li&gt;
&lt;li&gt;It plays &lt;strong&gt;so well&lt;/strong&gt; with my OS (unlike every other terminal app I’ve used). There’s a &lt;a href=&quot;https://gpanders.com/blog/ghostty-is-native-so-what/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;great piece on this here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The three things above are basically what drove &lt;a href=&quot;https://mitchellh.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Mitchell Hashimoto&lt;/a&gt; (co-founder of HashiCorp) to work on a &lt;strong&gt;really good&lt;/strong&gt; terminal instead of something more lucrative.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;configuration&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#configuration&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Took all of five minutes…&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;font-family = &quot;Operator Mono&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;font-size = 18&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;window-padding-x = 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;window-padding-y = 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;window-padding-color = background&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;window-padding-balance = true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;theme = &quot;iTerm2 Pastel Dark Background&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;adjust-cell-height = 15%&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;window-save-state = always&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;background-opacity = 0.95&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;macos-titlebar-style = tabs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;font-family = &amp;#x22;Operator Mono&amp;#x22;font-size = 18window-padding-x = 10window-padding-y = 10window-padding-color = backgroundwindow-padding-balance = truetheme = &amp;#x22;iTerm2 Pastel Dark Background&amp;#x22;adjust-cell-height = 15%window-save-state = alwaysbackground-opacity = 0.95macos-titlebar-style = tabs&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;my-favourite-features&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#my-favourite-features&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;My Favourite Features&lt;/h2&gt;
&lt;p&gt;The fact I can manage splits like a normal mac user rather than a tmux nerd. These keyboard shortcuts are basically the only “features” I use and it’s &lt;strong&gt;bloody lovely&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + Enter&lt;/kbd&gt; - Toggle Fullscreen&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + Shift + \ &lt;/kbd&gt; - Show All Tabs&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + D&lt;/kbd&gt; - Split Right&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + Shft + D&lt;/kbd&gt; - Split Down&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + Shft + Enter&lt;/kbd&gt; - Zoom Current Split&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + [ &lt;/kbd&gt; - Next split&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌘ + ]&lt;/kbd&gt; - Previous Split&lt;/li&gt;
&lt;li&gt;&lt;kbd&gt;⌥ + Click&lt;/kbd&gt; - Place Cursor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the other OS-native shortcuts work as expected, it’s fast and reliable, and most important of all &lt;strong&gt;I haven’t noticed my terminal app at all since I started using Ghostty&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Theo Browne has an &lt;a href=&quot;https://youtu.be/VUxMfyzTM_Y&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;interesting video&lt;/a&gt; with a load more context if you wanna dig deeper.&lt;/p&gt;</content:encoded></item><item><title>VoiceInk vs Wispr</title><link>https://danny.is/notes/voiceink/</link><guid isPermaLink="true">https://danny.is/notes/voiceink/</guid><pubDate>Mon, 18 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I now spend more time talking to my laptop than I do typing into it. And because Apple’s transcription is so rubbish I’ve been a happy customer of &lt;a href=&quot;https://wisprflow.ai/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Wispr Flow&lt;/a&gt; for the last six months.&lt;/p&gt;
&lt;p&gt;It’s a great product that Just Works.&lt;/p&gt;
&lt;p&gt;But it’s also nuts that I’ve been streaming audio up to some (probably US-based) server and using their compute to transcribe it and then having that text streamed back down when I have a pretty powerfull macbook. Transcription is 💯 something which should be doable to a high-quality with local models.&lt;/p&gt;
&lt;p&gt;So three weeks ago I switched to VoiceInk. Things I like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It’s Open Source.&lt;/li&gt;
&lt;li&gt;It uses local models but is still easy to configure and use.&lt;/li&gt;
&lt;li&gt;My ramblings stay on my own machine.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://github.com/Beingpax&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;chap&lt;/a&gt; behind it is a “fairly new developer” and this is his “first time collaborating on Github open-source project” (&lt;a href=&quot;https://github.com/Beingpax/VoiceInk/pull/19#issuecomment-2736810109&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;his words&lt;/a&gt;). Which I absolutely &lt;strong&gt;love&lt;/strong&gt;, and kinda blows my mind.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Things I dislike rn:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It’s slightly slower to respond to keypresses than Wispr, which means I often lose the first or last word of a dictation.&lt;/li&gt;
&lt;li&gt;It’s doesn’t throw away “silent” recordings. Which I do a million times a day by accident.&lt;/li&gt;
&lt;li&gt;I’m worried about feature bloat and the inevitable lack of focus, UX issues and eventual tech debt which comes with that.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Despite that, if you’re paying for Wispr or &lt;a href=&quot;https://superwhisper.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;SuperWhisper&lt;/a&gt; or similar, check out &lt;a href=&quot;https://tryvoiceink.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;VoiceInk&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Just Banning Minors From Social Media Is Not Protecting Them</title><link>https://danny.is/notes/2025-08-07-just-banning-minors-from-social-media-is-not-protecting-them-electronic-frontier-foundation/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-07-just-banning-minors-from-social-media-is-not-protecting-them-electronic-frontier-foundation/</guid><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;It is clear that such bans will do little in the way of making the internet a safer space for young people. By banning a particularly vulnerable group of users from accessing platforms, the providers themselves are let off the hook: If it is enough for platforms like Instagram and TikTok to implement (comparatively cheap) age restriction tools, there are no incentives anymore to actually make their products and features safer for young people. Banning a certain user group changes nothing about problematic privacy practices, insufficient content moderation or business models based on the exploitation of people’s attention and data. And assuming that teenagers will always find ways to circumvent age restrictions, the ones that do will be left without any protections or age-appropriate experiences.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is at the root of why I’m so against the UK’s recent Online Safety Act. It won’t work, it ignores the root causes, it introduces huge privacy risks and has the potential to really fuck the internet up.&lt;/p&gt;</content:encoded></item><item><title>No, AI is not Making Engineers 10x as Productive</title><link>https://danny.is/notes/2025-08-07-no-ai-is-not-making-engineers-10x-as-productive/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-07-no-ai-is-not-making-engineers-10x-as-productive/</guid><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;When I have had engineers who were 10x as valuable as others it was primarily due to their ability to prevent unnecessary work. Talking a PM down from a task that was never feasible. Getting another engineer to not build that unnecessary microservice. Making developer experience investments that save everyone just a bit of time on every task. Documenting your work so that every future engineer can jump in faster. These things can add up over time to one engineer saving 10x the time company wide than what they took to build it.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Contra Ptacek&apos;s Terrible Article On AI</title><link>https://danny.is/notes/terrible-ai/</link><guid isPermaLink="true">https://danny.is/notes/terrible-ai/</guid><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This one really made me laugh. 100% worth a read.&lt;/p&gt;</content:encoded></item><item><title>Building a Daily Brief for AI with GitHub Actions</title><link>https://danny.is/notes/daily-brief-for-ai/</link><guid isPermaLink="true">https://danny.is/notes/daily-brief-for-ai/</guid><description>Building a Daily Briefing markdown document for AI with GitHub Actions</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve long wanted to start my day by having a &lt;em&gt;Morning Chat&lt;/em&gt; with Claude Desktop. For this to be useful I need these conversations to start with two things: a &lt;strong&gt;morning briefing&lt;/strong&gt; for me, with the news I care about today, and the AI to be primed with the &lt;strong&gt;current context&lt;/strong&gt; on my life. I’m still working on the latter, but the morning briefing seemed pretty simple.&lt;/p&gt;
&lt;p&gt;Right now, I want my morning brief to include the weather, times for sunset and sunrise and high/low tides, major news stories from the BBC, new posts from a few RSS feeds I care about and new videos from a few YouTube channels, along with any &lt;em&gt;significant&lt;/em&gt; changes to the price of bitcoin.&lt;/p&gt;
&lt;p&gt;My first instinct was to have Claude fetch all this with tool calls, which sort of worked but was slow and unreliable. And felt like a bad use-case for AI because it’s not hard to get all of this data with old-fashioned-not-AI-programming.&lt;/p&gt;
&lt;p&gt;So I vibe coded a little TypeScript script which runs daily in a GitHub Action at 7am. It hits various APIs &amp;amp; scrapes feeds and dumps everything into a formatted markdown file. GitHub Actions runs it at 7am. No AI involvement whatsoever at this stage – just simple deterministic code.&lt;/p&gt;
&lt;p&gt;My Claude project simply includes this instruction&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;Fetch today&amp;#39;s briefing from https://raw.githubusercontent.com/dannysmith/morning-briefing-generator/refs/heads/main/dailybriefs/latest.md and print the markdown without changing it.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Fetch today&apos;s briefing from https://raw.githubusercontent.com/dannysmith/morning-briefing-generator/refs/heads/main/dailybriefs/latest.md and print the markdown without changing it.&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s it. The AI gets all that context for free, can summarise it, pull out highlights, or just display it raw. But more importantly, it has that information available when I ask follow-up questions later in the day.&lt;/p&gt;
&lt;p&gt;This split makes both parts better. The data fetching is reliable, testable, and runs for free on GitHub’s infrastructure. The AI part can focus on what it’s actually good at—understanding context, making connections, and having a conversation about the information rather than struggling to fetch it.&lt;/p&gt;
&lt;p&gt;I’ll probably expand and tweak this in the future to provide more info and context, perhaps with slightly different stuff for different days of the week. The only major limitation at the moment is that I can’t include any private information in the brief, because I don’t want that available on a public URL.&lt;/p&gt;</content:encoded></item><item><title>Vibe coding in prod</title><link>https://danny.is/notes/2025-08-02-vibe-coding-in-prod-youtube/</link><guid isPermaLink="true">https://danny.is/notes/2025-08-02-vibe-coding-in-prod-youtube/</guid><pubDate>Sat, 02 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Interesting analogy here with compilers. We’re able to build good software without reading assembly - we just trust that they work well. (And having written some assembly as a student I’ve very glad we can)&lt;/p&gt;
&lt;p&gt;I can certainly get on board with the idea that &lt;strong&gt;eventually&lt;/strong&gt; LLMs will be able to abstract away implementation details (ie code) in a similar way that my current tooling abstracts away machine code.&lt;/p&gt;
&lt;p&gt;But making compilers sufficiently reliable for programmers to trust them took an awful lot of time and effort, and unlike LLMs they’re sufficiently deterministic that well-designed tests and benchmarks are a reliable measure of consistent behaviour &amp;#x26; performance.&lt;/p&gt;</content:encoded></item><item><title>Codewashing</title><link>https://danny.is/notes/2025-07-21-adactio-journalcodewashing/</link><guid isPermaLink="true">https://danny.is/notes/2025-07-21-adactio-journalcodewashing/</guid><pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;I have little understanding for people using large language models to generate slop; words and images that nobody asked for.&lt;/p&gt;
&lt;p&gt;I have more understanding for people using large language models to generate code. Code isn’t the thing in the same way that words or images are; &lt;a href=&quot;https://youtu.be/QeY_5n75zPM?si=7Yajowz6aHEoL07u&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;code is the thing that gets you to the thing&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Leaving the ethics of LLM training aside, my biggest issue with AI-generated “slop” is that it’s invariably shit.&lt;/p&gt;
&lt;p&gt;I’ve read &lt;strong&gt;so damn many&lt;/strong&gt; AI generated READMEs on GitHub in the last few weeks, and on at least two occasions lost my temper trying to find what I needed amongst the nonsense. It was better when lazy devs just had ten-line READMEs.&lt;/p&gt;
&lt;p&gt;And I routinely have to wade through AI-generated slop articles in Google searches all the time.&lt;/p&gt;
&lt;p&gt;In both cases, the end thing – &lt;strong&gt;product&lt;/strong&gt; – the words. And those products have a shit user experience.&lt;/p&gt;
&lt;p&gt;With code, the product is the working software. And the last few weeks have taught me that LLMs are &lt;strong&gt;incredibly powerful&lt;/strong&gt; at helping me make decent user experiences quickly. It might matter to developers that the underlying code is slop, but if the working software is good it’s the only &lt;em&gt;thing&lt;/em&gt; which matters to users.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I genuinely look forward to being able to use a large language model with a clear conscience. Such a model would need to be trained ethically. When we get a free-range organic large language model I’ll be the first in line to use it. Until then, I’ll abstain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’m also looking forward to this. But until it arrives, I’m content to use un-ethical models for the same reason – if I’m trying to gain weight – I’ll happily eat un-ethical meat in the absence of alternatives. &lt;strong&gt;Doing so is has a sufficiently high impact on my quality of life that it outweighs my ethical concerns&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Posting Notes from My Phone</title><link>https://danny.is/notes/posting-notes-from-my-phone/</link><guid isPermaLink="true">https://danny.is/notes/posting-notes-from-my-phone/</guid><description>Trying out posting a note via ChatGPT mobile after reading about vibe scraping and coding a schedule app on a phone.</description><pubDate>Fri, 18 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just read this article, and it inspired me to see if I could post new notes to my website using the ChatGPT mobile app. That’s what I’m doing now. This is a test of that note.&lt;/p&gt;</content:encoded></item><item><title>Johnny.Decimal</title><link>https://danny.is/notes/2025-07-16-a-system-to-organise-your-life-johnnydecimal/</link><guid isPermaLink="true">https://danny.is/notes/2025-07-16-a-system-to-organise-your-life-johnnydecimal/</guid><pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This reminds me so much of the old UK MoD File Reference system (some of which is still in &lt;a href=&quot;https://assets.publishing.service.gov.uk/media/5a82b0d240f0b62305b93d65/2017-02121.pdf&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;JSP 441&lt;/a&gt;!)&lt;/p&gt;
&lt;p&gt;I feel like systems such as these might have even more relevance in the age of LLMs, because they allow content and structures to be understood and referenced through a logical text-based system of symbols.&lt;/p&gt;</content:encoded></item><item><title>The Rise of the AI-Native Employee</title><link>https://danny.is/notes/the-rise-of-the-ai-native-employee/</link><guid isPermaLink="true">https://danny.is/notes/the-rise-of-the-ai-native-employee/</guid><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;AI transformation inside existing tech companies is going to be brutal. You can’t just spin up a centralized “AI task force” and expect the rest of the org to suddenly think and operate differently. It doesn’t work. This mindset shift isn’t something you can document or mandate - it has to be seen and experienced. I know, because I had to see it myself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This reminds me of the transformation to effective remote working, which began in some companies between 2020 and now. This change was also challenging for many large companies, as the shift to being AI-native was. Remote-first or remote-native wasn’t just about changing tools or processes; it was a complete mindset shift, a cultural change. Having witnessed this firsthand in companies built to be remote-first from the ground up, I found it extremely difficult for the same reasons Elena mentions here.&lt;/p&gt;
&lt;p&gt;The rest of this article is worth a read too.&lt;/p&gt;</content:encoded></item><item><title>When Figma Starts Designing Us</title><link>https://danny.is/notes/when-figma-starts-designing-us/</link><guid isPermaLink="true">https://danny.is/notes/when-figma-starts-designing-us/</guid><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;However, over the course of the last five years, I’ve grown increasingly worried about what Figma is doing to the field of design by pushing designers toward an engineering-centric way of working. This can be seen in their feature releases: Smart Components, Variables, Auto Layout, and Interactive Prototypes. These features are often celebrated as steps toward parity with engineering, but in practice, they encourage a mode of working that narrows the field of possibility at precisely the moment when it should be expanding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As an engineer, I agree wholeheartedly with this. The design systems nerd in me absolutely loves these engineering-focused features in Figma. But if we go too far down this road, designers will bring less and less creative value to teams over time.&lt;/p&gt;</content:encoded></item><item><title>Charles Babbage on AI</title><link>https://danny.is/notes/charles-babbage-on-ai/</link><guid isPermaLink="true">https://danny.is/notes/charles-babbage-on-ai/</guid><pubDate>Wed, 02 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;On two occasions I have been asked, — “Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?” In one case a member of the Upper, and in the other a member of the Lower, House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.– &lt;em&gt;&lt;a href=&quot;https://archive.org/details/passagesfromlife03char/page/67/mode/1up&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Charles Babbage&lt;/a&gt;, Passages from the Life of a Philosopher, 1864&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Saw this on &lt;a href=&quot;https://simonwillison.net/2025/Jul/2/charles-babbage/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Simon Willison&lt;/a&gt;’s blog. Seems &lt;em&gt;extremely&lt;/em&gt; relevant in the world of AI!&lt;/p&gt;</content:encoded></item><item><title>Why Remote Companies Must Be Calm Companies</title><link>https://danny.is/notes/we-need-more-calm-companies/</link><guid isPermaLink="true">https://danny.is/notes/we-need-more-calm-companies/</guid><description>Discover why calm companies outperform frenzied ones in remote work. Essential insights on sustainable growth and team well-being from organizational health expert Danny Smith.</description><pubDate>Mon, 08 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;calm-companies&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#calm-companies&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Calm Companies&lt;/h2&gt;
&lt;p&gt;Here is my list of Calm Company attributes:&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;
&lt;p&gt;Profitable: Calm Companies have a strong financial engine working with good margins. This foundation enables everything else.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Purpose: Calm Companies have a strong sense of purpose: “What are we building this company for?” Generally, there’s an internal purpose: “to improve the lives of the people working here,” and an external purpose: “to help more creators get their message into the world.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Freedom and Flexibility: As founders, we build businesses to give us more freedom. A Calm Company gives team members the flexibility to live well, pursue hobbies, exercise, take breaks, go on trips, and connect with family and friends.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fun: Calm Companies produce more opportunities for fun. “What if we ran this event?” “What if we went on a team retreat in the mountains?” “What if we put an easter egg on our website that plays a silly song?” “What if we made some fun stickers?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mindful: At a Calm Company, decisions and commitments are made mindfully. We ask: will this decision make our lives worse? More stressful? Does it align with our values? Will this commitment add too much weight to our culture?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sustainable Growth: Calm Companies want to grow but at a sustainable pace. Growth should serve a higher purpose. Ambition is good, but not at the expense of well-being.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Calm Work Environment: Stress and chaos are replaced with clear work goals, boundaries, and communication.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;frenzied-companies&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#frenzied-companies&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Frenzied Companies&lt;/h2&gt;
&lt;p&gt;Let’s contrast the idea of a Calm Company with that of a Frenzied Company.&lt;/p&gt;
&lt;p&gt;A frenzied company is perpetually in crisis. They have a culture of impossible deadlines and unrealistic expectations.&lt;/p&gt;
&lt;p&gt;Managers pressure employees to constantly be “on” and “available,” even after work hours.&lt;/p&gt;
&lt;p&gt;An implicit—or sometimes explicitly stated—threat hangs over everyone’s head: “If things don’t turn around, jobs will be lost.”&lt;/p&gt;
&lt;p&gt;Managers frequently dump their stress and anxiety on their staff. Employees regularly find themselves absorbing negative emotions from work. They come home feeling drained and overwhelmed.&lt;/p&gt;</content:encoded></item><item><title>On Minimalist Packing</title><link>https://danny.is/notes/on-minimalist-packing/</link><guid isPermaLink="true">https://danny.is/notes/on-minimalist-packing/</guid><description>Systems thinking applied to travel. A consultant&apos;s approach to minimalist packing for remote work and efficient travel.</description><pubDate>Fri, 24 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tim Feriss’ &lt;a href=&quot;https://go.tim.blog/5-bullet-friday-1/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;5 Bullet Friday&lt;/a&gt; today included this quote…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To roughly paraphrase my friend, who’s a fan of minimalist packing, “I would rather have one pair of footwear that does everything well enough than carry a bunch of specialist footwear that does things better than I need.” We both only brought carry-on luggage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is exactly how I think about my own kit when I travel, or head out hiking. But it’s also how I often think about the design of systems, processes and software tools. With the latter, “well enough” is often a high bar and so requires a bunch of specialist software. But wherever something we already have is &lt;em&gt;good enough&lt;/em&gt;, stick with it until it isn’t.&lt;/p&gt;</content:encoded></item><item><title>Apple&apos;s Thunderbolt 3 Cables</title><link>https://danny.is/notes/apples-thunderbolt-3-cables/</link><guid isPermaLink="true">https://danny.is/notes/apples-thunderbolt-3-cables/</guid><description>Technical insights on Apple&apos;s Thunderbolt 3 cable design and specifications. Understanding the engineering behind premium computer accessories.</description><pubDate>Thu, 23 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little while ago I bought a &lt;a href=&quot;https://www.caldigit.com/thunderbolt-station-4/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Caldigit Thunderbolt 4 Dock&lt;/a&gt; to connect my M2 Macbook Pro to my monitors and peripherals. After struggling to get a decent signal to my monitor I eventually shelled out £130 on &lt;a href=&quot;https://www.apple.com/uk/shop/product/MN713ZM/A/thunderbolt-4-usb%E2%80%91c-pro-cable-18m&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;this cable&lt;/a&gt; from Apple, which fixed things but seemed &lt;strong&gt;crazy expensive for a 2m cable&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;After watching this video on the internals of Apple’s cable, I can see why it cost so much… &lt;strong&gt;it has more compute power than Apollo 11&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Twitter Bootstrap-style syntax highlighting in a Tumblr theme</title><link>https://danny.is/notes/2012-05-17-twitter-bootstrap-syntax-highlighting-tumblr/</link><guid isPermaLink="true">https://danny.is/notes/2012-05-17-twitter-bootstrap-syntax-highlighting-tumblr/</guid><pubDate>Thu, 17 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on blog.dasmith.co.uk on 17 May 2012 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20121026030127/http://blog.dasmith.co.uk/post/23246957282/twitter-bootsrap-style-syntax-highlighting-in-a-tumblr&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;I’ve just spent a bit of time adding syntax highlighting to this theme after seeing the code block in Twitter Bootstrap. Although I don’t post a lot of code on here, I do occasionally post snippets up and have always hated sites that don’t bother to display code nicely.&lt;/p&gt;
&lt;p&gt;For starters I realised that the font-size and line-height I’ve been using on here make longer text posts quite difficult to read, so I reduced the &lt;code&gt;font-size&lt;/code&gt; of text posts a bit and set the &lt;code&gt;line-height&lt;/code&gt; to 1.61803399 (the golden ratio). If I ever find myself writing lots of text-heavy posts then I’ll put a bit more effort into the typography.&lt;/p&gt;
&lt;p&gt;I started out by styling up the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; element exactly as it is in the Bootstrap CSS, although I removed the &lt;code&gt;font-size&lt;/code&gt; rules so that they’d be inherited:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;code&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;font-family&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; Menlo, Monaco, Consolas, &lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;Courier New&lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;monospace&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#333333&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1;--0fs:italic&quot;&gt;-webkit-border-radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1;--0fs:italic&quot;&gt;-moz-border-radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;code&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#d14&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#f7f7f9&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#e1e1e8&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;code,pre {  padding: 0 3px 2px;  font-family: Menlo, Monaco, Consolas, &amp;#34;Courier New&amp;#34;, monospace;  color: #333333;  -webkit-border-radius: 3px;     -moz-border-radius: 3px;          border-radius: 3px;}code {  padding: 2px 4px;  color: #d14;  background-color: #f7f7f9;  border: 1px solid #e1e1e8;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;I then uploaded the Google Code Prettify script to Tumblr and included it in my theme. Rather than include another remote CSS file, I dropped the prettify CSS code from &lt;code&gt;prettify.css&lt;/code&gt;, &lt;code&gt;lang-css.css&lt;/code&gt; and &lt;code&gt;lang-yaml.css&lt;/code&gt; directly into the theme and added the relevant CSS from Bootstrap:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;display&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;block&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;padding&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;8.5&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;12.025&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;line-height&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;18&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;word-break&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;break-all&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;word-wrap&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;break-word&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;white-space&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;white-space&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;pre-wrap&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;background-color&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#f5f5f5&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#ccc&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;border&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;rgba&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;0.15&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1;--0fs:italic&quot;&gt;-webkit-border-radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1;--0fs:italic&quot;&gt;-moz-border-radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;border-radius&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.prettyprint&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;margin-bottom&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;18&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.pre-scrollable&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;max-height&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;340&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;overflow-y&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;pre {  display: block;  padding: 8.5px;  margin: 0 0 9px;  font-size: 12.025px;  line-height: 18px;  word-break: break-all;  word-wrap: break-word;  white-space: pre;  white-space: pre-wrap;  background-color: #f5f5f5;  border: 1px solid #ccc;  border: 1px solid rgba(0, 0, 0, 0.15);  -webkit-border-radius: 4px;     -moz-border-radius: 4px;          border-radius: 4px;}pre.prettyprint {  margin-bottom: 18px;}.pre-scrollable {  max-height: 340px;  overflow-y: scroll;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This pretty much sorted things out, although things didn’t quite look the same as they did on the Bootstrap demo website. After adding the prettify.css from Bootstrap and adjusting some of the colours to fit better, everything was sorted.&lt;/p&gt;
&lt;p&gt;Prettify allows you to specify the language too, so by applying &lt;code&gt;prettyprint linenums language-ruby&lt;/code&gt; classes to the &lt;code&gt;pre&lt;/code&gt; tag, we get line numbers and syntax-highlighting for Ruby:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame has-title&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;ruby.rb&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;ruby&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;sinatra&lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;some_method&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;--0:#FFA344;--0fs:italic&quot;&gt;arg&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; (params[&lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;:somesym&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;56&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;bar &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; foo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;bar &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;A String&lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;require &apos;sinatra&apos;def some_method(arg)  if (params[:somesym] == 56)    bar = foo  else    bar = &amp;#34;A String&amp;#34;  endend&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It’s worth noting that it only labels every fifth line by default and adds a different background for odd rows. You can fix this by removing:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L0&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L1&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L2&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L3&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L5&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L6&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L7&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L8&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;list-style-type&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;and:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;css&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L1&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L3&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L5&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L7&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;--0:#5BB2A2;--0fs:italic&quot;&gt;.L9&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;--0:#6AAAD1&quot;&gt;background&lt;/span&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;#eee&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;from the Prettify CSS respectively.&lt;/p&gt;
&lt;p&gt;Although I find it slightly saddening that Twitter Bootstrap has become so prevalent and would avoid using it for everything bar quick-and-dirty app development and prototyping, it’s fantastically useful for achieving things like this in a fraction of the time it would take otherwise.&lt;/p&gt;</content:encoded></item><item><title>HTTP oddity - This makes no Sense</title><link>https://danny.is/notes/2011-01-27-http-oddity-this-makes-no-sense/</link><guid isPermaLink="true">https://danny.is/notes/2011-01-27-http-oddity-this-makes-no-sense/</guid><pubDate>Thu, 27 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on blog.dasmith.co.uk on 27 January 2011 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20110502173512/http://blog.dasmith.co.uk/archive&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025. The full post was not archived - only this preview was available.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;According to the DNS, the domain points to heroku:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;→&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;host&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;tumble.dasmith.co.uk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;tumble.dasmith.co.uk&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;an&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;alias&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;proxy.heroku.com.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;proxy.heroku.com&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;has&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;50.16.215.196&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;proxy.heroku.com&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;has&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;75.101.145.87&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;proxy.heroku.com&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;has&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;75.101.163.44&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#5BB2A2&quot;&gt;proxy.heroku.com&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;has&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#B594E2&quot;&gt;174.129.212.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;→ host tumble.dasmith.co.uktumble.dasmith.co.uk is an alias for proxy.heroku.com.proxy.heroku.com has address 50.16.215.196proxy.heroku.com has address 75.101.145.87proxy.heroku.com has address 75.101.163.44proxy.heroku.com has address 174.129.212.2&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Yet if I send a TRACE request, I get this back:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;Content-Length: 277&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#f6f3ea&quot;&gt;Date: Thu, 27 Jan 2011...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;Content-Length: 277Date: Thu, 27 Jan 2011...&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>Divert O2 &amp; iPhone calls or change your voicemail time</title><link>https://danny.is/notes/2010-07-02-divert-o2-iphone-calls/</link><guid isPermaLink="true">https://danny.is/notes/2010-07-02-divert-o2-iphone-calls/</guid><pubDate>Fri, 02 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on blog.dasmith.co.uk on 2 July 2010 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20130702010726/http://blog.dasmith.co.uk/tagged/article&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;I just found some cool numbers you can use if you’re on O2 in the UK - these apply to most iPhone users and could be useful.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Call &lt;code&gt;**61*NUMBER*11*TIME#&lt;/code&gt; (where TIME is the number of seconds to ring for before forwarding and NUMBER is the number to divert to). So to divert to voicemail after 30 seconds you’d call &lt;code&gt;**61*901*11*30#&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;*#61#&lt;/code&gt; for current status of call forwarding when you’re busy/don’t answer.&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;**62*&lt;/code&gt; to activate call forwarding when you’re not reachable (&lt;code&gt;##62#&lt;/code&gt; to cancel)&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;**21*NUMBER#&lt;/code&gt; to divert all calls to NUMBER. Calling &lt;code&gt;##21#&lt;/code&gt; cancels this.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A number of my mates divert their mobile calls to their office phones while they’re at their desks. You could easily set up two contacts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Set office divert ON” - &lt;code&gt;**21*YOUR_OFFICE_NUMBER#&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;“Set office divert OFF” - &lt;code&gt;##21#&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find more general information about these codes online.&lt;/p&gt;</content:encoded></item><item><title>Getting Sorted 3: Air Cadets Office</title><link>https://danny.is/notes/2009-08-12-getting-sorted-3-air-cadets-office/</link><guid isPermaLink="true">https://danny.is/notes/2009-08-12-getting-sorted-3-air-cadets-office/</guid><pubDate>Wed, 12 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/getting-sorted-3-air-cadets-office-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 12 August 2009 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101127215248/http://thescri.be/getting-sorted-3-air-cadets-office-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;&lt;em&gt;[Image of desk at cadets was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So, after sorting through my &lt;a href=&quot;/notes/2009-08-07-getting-sorted-2-reference-system-projects&quot;&gt;home filing&lt;/a&gt; and organizing my projects, I moved on to my filing at cadets. I’ll not bother explaining the process as it was much the same as the process I went through &lt;a href=&quot;/notes/2009-08-07-getting-sorted-2-reference-system-projects&quot;&gt;before&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Essentially, I requisitioned the file cabinet drawer that holds blank forms. As we print most forms on demand, there are only a few blank forms stored in there these days. I gave each of these a file folder and included them in my alpha file system along with everything else.&lt;/p&gt;
&lt;p&gt;During this process I also cleaned up my desk, threw out some useless reference folders and created two new ringbinders for reference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Annual Camp Folder - For documents relating to camp inspections, drill competitions &amp;amp; formal parades&lt;/li&gt;
&lt;li&gt;Lesson Plans - For paper copies of all the lesson plans used in the squadron&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are some pictures.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Images of shelves, files drawer, and file folders were not archived]&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Getting sorted 2: Reference System &amp; Projects</title><link>https://danny.is/notes/2009-08-07-getting-sorted-2-reference-system-projects/</link><guid isPermaLink="true">https://danny.is/notes/2009-08-07-getting-sorted-2-reference-system-projects/</guid><pubDate>Fri, 07 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/getting-sorted-2-reference-system-projects-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 7 August 2009 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101127202647/http://thescri.be/getting-sorted-2-reference-system-projects-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;&lt;em&gt;[Image of reference materials was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So the Second round of GTD-inspired stuff happened this morning. There’s not much to explain here really, except that I’ve just gone through all of my reference materials and condensed &amp;amp; sorted them.&lt;/p&gt;
&lt;p&gt;On looking at each piece of paper or folder I asked the following questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Will I need to look at this again?&lt;/li&gt;
&lt;li&gt;If so, can the information be better stored electronically&lt;/li&gt;
&lt;li&gt;If not, does it need archiving?&lt;/li&gt;
&lt;li&gt;Is it in the most appropriate folder?&lt;/li&gt;
&lt;li&gt;If not, where should it go? What should the folder be called?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What I ended up with was a bloody great pile of stuff to bin, a small pile of stuff to shred or burn, a small pile of stuff to file at cadets and a surprisingly tiny set of nicely labeled file folders in alphabetical order, filling less than half of one file drawer. Cool. here it is:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Image of filed folders was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;While sifting, sorting and scrapping I was reminded of one or two things I should be doing and these duly went into OmniFocus via the (pretty cool) quick entry box. There were duly made into projects and, if they had paper stuff, were given file folders too.&lt;/p&gt;
&lt;h2 id=&quot;project-front-sheets&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#project-front-sheets&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Project Front Sheets&lt;/h2&gt;
&lt;p&gt;The next stage in my journey to sort shit out involved defining outcomes, ideas, constraints and what not for all of the major projects I’ve got going. It’s worth noting here that these only apply to &lt;em&gt;major&lt;/em&gt; projects. All the smaller projects that are simply a reaction to life aren’t worth worrying about.&lt;/p&gt;
&lt;p&gt;Below is the sheet I use for defining projects. I knocked it up the other day after reading the section on project planning in GTD. Let me know what you think of it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Image of project planning sheet was not archived]&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Getting Sorted 1: New stuff with me</title><link>https://danny.is/notes/2009-08-06-getting-sorted-1-new-stuff-with-me/</link><guid isPermaLink="true">https://danny.is/notes/2009-08-06-getting-sorted-1-new-stuff-with-me/</guid><pubDate>Thu, 06 Aug 2009 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/getting-sorted-1-new-stuff-with-me-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 6 August 2009 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101126125626/http://thescri.be/getting-sorted-1-new-stuff-with-me-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;I’ve switched over to a new domain and am in the process of sorting a website or something for it. Henceforth, this site will do bugger all, except act as a place for me to jot down my ideas and progress with…&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Image of labeler was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;sorting-my-shit-out&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#sorting-my-shit-out&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Sorting my Shit Out&lt;/h2&gt;
&lt;p&gt;After reading David Allen’s Getting Things Done for the second time (the first was three years ago), I was inspired to get on with sorting things out with me. Perhaps it went the other way around - I re-read GTD because I wanted to sort things out. Either way, I’m feeling inspired.&lt;/p&gt;
&lt;p&gt;My intention is to go through the following steps, roughly speaking:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sort my organizational stuff out&lt;/li&gt;
&lt;li&gt;Do less stuff I dislike and more stuff I like. See less people I dislike and see more people I like&lt;/li&gt;
&lt;li&gt;Get my Being Healthy thing on.&lt;/li&gt;
&lt;li&gt;Start building a bit of a brand&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, the other day I started with the first bit, sorting my organizational stuff, all GTD inspired. I bought a nice Brother Labeler from Amazon and set off on a &lt;em&gt;Collection &amp;amp; Organization Binge&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;1-collection&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#1-collection&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;1. Collection&lt;/h2&gt;
&lt;p&gt;I gathered up all the things that were dotted all over my computer, at home, at work and at cadets and dumped them on my mattress or in my INBOX folder. After that I wrote down everything I could think of that was bugging me, big and small and piled them on top. That’s about it for collection.&lt;/p&gt;
&lt;h2 id=&quot;2-organization&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#2-organization&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;2. Organization&lt;/h2&gt;
&lt;p&gt;Yesterday Morning I went through all of the items in my Inbox, creating project files for any defined projects with paper-materials and adding those projects to &lt;a href=&quot;http://www.omnigroup.com/applications/omnifocus/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;OmniFocus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Image of project list was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Any small Projects which won’t need support material and should have only a few actions went into an OmniFocus folder called “Small Projects”, and paper for them went in a file folder with a shiny new label “Small Projects Support Stuff”.&lt;/p&gt;
&lt;p&gt;For the rest, the projects were split into three Categories: Cadets, University, Others. You can see my Projects list in the screenshot on the left.&lt;/p&gt;
&lt;p&gt;One of the issues I had with using OmniFocus in the past was the enormous number of projects I racked up. Anything that required more than one action step was made a project, and this quickly cluttered up both OmniFocus and my brain. This time around I’ve decided to put any small, two-or-three-step ‘things’ into the Miscellaneous Project (shown below).&lt;/p&gt;
&lt;p&gt;After this almighty great job I set up a bunch of contexts and a definite next action for each project. Then I had a cup of tea.&lt;/p&gt;
&lt;p&gt;It feels pretty good to get all of my stuff out of my head, it’s already allowing me to focus more on what I’m doing and less on what I have to do. What’s the next step? More Organization, with a sprinkle of brainstorming thrown in and of course, more labeling. Cool.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Image of misc list was not archived]&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>From K810i to iPhone</title><link>https://danny.is/notes/2009-03-02-from-k810i-to-iphone/</link><guid isPermaLink="true">https://danny.is/notes/2009-03-02-from-k810i-to-iphone/</guid><pubDate>Mon, 02 Mar 2009 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/from-k810i-to-iphone-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 2 March 2009 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101126125626/http://thescri.be/from-k810i-to-iphone-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;&lt;em&gt;[Image of iPhone was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A few days ago, my girlfriend Frankie bought me an iPhone. I thought I’d mention the few things I did to get my new toy up and running.&lt;/p&gt;
&lt;h2 id=&quot;applications&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#applications&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Applications&lt;/h2&gt;
&lt;p&gt;After unwrapping it, marveling at the packaging for a few minutes, and activating it I set about installing a few basic applications:&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;&lt;strong&gt;Facebook&lt;/strong&gt; - A standard really, we all live by Facebook these days.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Last.fm&lt;/strong&gt; - I’ve been using iScrobbler and Last.fm for years now, the iPhone version is a great way to get some new music when I’m walking about.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NetNewsWire&lt;/strong&gt; - I use the desktop version to read RSS on my mac and having both applications sync with Newsgator means that my latest news will always be with me. I usually spend about half an hour a day reading news but I’m hoping that now it’s in my pocket, I’ll be able to fit that in while I’m waiting around for a bus or a lecture.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remote&lt;/strong&gt; - Now I can control iTunes from downstairs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VNC Lite&lt;/strong&gt; - I don’t often use VNC but as the application’s so small I thought I’d install it just in case. There are times when I’ve dearly wanted remote access to my mac while out and about. I also updated the VNC Server on my mac (&lt;a href=&quot;http://sourceforge.net/projects/osxvnc/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;OSXVnc&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Although I’m trying not to buy many applications, I did splash out on two.&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.designbyaknife.com/pennies/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Pennies&lt;/a&gt;&lt;/strong&gt; - A simple but useful money tracking and budgeting app. I’ve often recorded my expenses on an index card and totted them up at the end of the week, it strikes me that doing it on my phone will save me both time and effort, and for the sake of the pound or so that it cost I think it’s well worth it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://avatron.com/products/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;AirShare&lt;/a&gt;&lt;/strong&gt; - This is great. Essentially, it turns your iPhone into a WiFi hard drive, enabling me to drop files onto it from my mac while it sits in my pocket. I can effortlessly pull files off in the same way when I’m at a friends machine or at cadets. The killer feature for me is the ability to view PDF, source code and iWork files with it. It allows me to read eBooks and lecture notes while on the go. I’ve got an alias to the iPhone in my home directory for easy access.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After configuring the phone’s apps, I set up access to my Gmail account and synchronization with iTunes. I’ve currently got the phone syncing with an iPhone playlist and an iPhone images folder, as well as my latest podcasts.&lt;/p&gt;
&lt;h2 id=&quot;contacts&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#contacts&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Contacts&lt;/h2&gt;
&lt;p&gt;It was a bit of a hassle moving my contacts across from my Sony Ericsson K810i - it took me about an hour in total. Here’s what I did:&lt;/p&gt;
&lt;ol class=&quot;long-list-items&quot;&gt;
&lt;li&gt;Synced the contacts from my K810i to Address Book using the methods described &lt;a href=&quot;http://ni.chol.as/2007/06/09/isync-and-the-sony-ericsson-k810i/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Note that I had to remove the K810i from the iSync list, disable iPhoto from opening automatically and then re-add it to iSync before I could Sync.&lt;/li&gt;
&lt;li&gt;Synced my Address Book with the iPhone and Gmail (using iTunes) to get my gmail contacts into Address Book.&lt;/li&gt;
&lt;li&gt;Worked through the address book renaming people, editing email addresses, merging contacts and deleting millions of random numbers. At the end of this I used Address Book’s ‘Find Duplicates’ function to make sure I was done.&lt;/li&gt;
&lt;li&gt;Added the contacts to various groups and distribution lists.&lt;/li&gt;
&lt;li&gt;Used the wonderful &lt;a href=&quot;http://danauclair.com/addressbooksync/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;AddressBookSync&lt;/a&gt; to match up my facebook friends to my contacts. This imports their birthday and profile picture if it’s available. The automatic matching is pretty good (it matched Gaz to Gareth) but it’s worth looking through the unmatched list because unless you’re perfect at spelling it &lt;em&gt;will&lt;/em&gt; miss some.&lt;/li&gt;
&lt;li&gt;Synced the iPhone with Address Book using iTunes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I’ve now got my contacts and email synced across my Mac, Gmail and my iPhone and I’ve got everyone’s birthdays and photos in the phone. The birthdays also show up in iCal, which makes my life even easier!&lt;/p&gt;
&lt;p&gt;I hope this was useful to someone!&lt;/p&gt;</content:encoded></item><item><title>Back from the dead - at least for today</title><link>https://danny.is/notes/2009-02-11-back-from-the-dead/</link><guid isPermaLink="true">https://danny.is/notes/2009-02-11-back-from-the-dead/</guid><pubDate>Wed, 11 Feb 2009 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/back-from-the-dead-at-least-for-today-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 11 February 2009 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101126125626/http://thescri.be/back-from-the-dead-at-least-for-today-2009/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Hi, I’m not dead.&lt;/p&gt;
&lt;p&gt;It’s been an awfully long time since I’ve written anything here (just over a year in fact). Still, a minute ago I felt compelled to write, so here it is.&lt;/p&gt;
&lt;h2 id=&quot;shifting-focus&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#shifting-focus&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Shifting Focus&lt;/h2&gt;
&lt;p&gt;In the past I wrote a lot about productivity. I was an avid reader of &lt;a href=&quot;http://lifehacker.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;lifehacker&lt;/a&gt;, &lt;a href=&quot;http://zenhabits.net/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;zen habits&lt;/a&gt; &amp;amp; other leading “life hack” blogs and was keen to pass on some of my knowledge to anyone who’d listen. About 18 months ago I shifted my focus to learning and started reading &lt;a href=&quot;http://www.calnewport.com/blog/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Cal Newport&lt;/a&gt;, &lt;a href=&quot;http://www.scotthyoung.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Scott Young&lt;/a&gt; and other writers on the subject. My desire to pass on what I learned faded. Lately, I’ve had yet another shift of focus - from learning to philosophy, and hopefully for you I’ll want to tell you about it.&lt;/p&gt;
&lt;p&gt;In the three or four years that I’ve been learning about productivity I’ve made massive improvements in my organization &amp;amp; workflow: I’ve found software products to help me work efficiently, developed a version of GTD to organize myself more efficiently, learned skills to help me learn more efficiently and made changes to my routine &amp;amp; home so I can live more efficiently. All of this has been great but there’s one problem.&lt;/p&gt;
&lt;h2 id=&quot;efficiency-is-crap&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#efficiency-is-crap&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Efficiency is crap&lt;/h2&gt;
&lt;p&gt;The trouble is, efficiency is only a good thing when applied to the stuff that you don’t really want to do. Some might argue that this is bollocks, that it’s good to be efficient in say, your workouts at the gym. Perhaps technically they’re right.&lt;/p&gt;
&lt;p&gt;You see, for me, efficiency means “To minimize the amount of time taken to achieve the goal” and while I attend the gym with the goal of getting fit, I also want to &lt;em&gt;enjoy it&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If I’m constantly trying to be more and more efficient in my workouts, I’ll lose that enjoyment. This is particularly true when thinking about relationships with others - is it really a good thing to be efficient with your partner? Probably not.&lt;/p&gt;
&lt;p&gt;With this in mind, I think that I’ve reached a fairly good level of “productivity” - there’s only so much that I can “hack my life”, before I need to look at the bigger picture: &lt;em&gt;Why am I here and how do I make the most of it?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And so to philosophy.&lt;/p&gt;
&lt;p&gt;Although I’ve dipped into some philosophy books in the past, and pondered the different philosophies of the people I meet, I’ve not really made an effort to &lt;em&gt;think&lt;/em&gt; about things and after all, philosophy &lt;em&gt;is&lt;/em&gt; thinking.&lt;/p&gt;
&lt;p&gt;I’ve not got much more to say on the subject at the moment but I’ve found that the notes (MP3 and PDF) at &lt;a href=&quot;http://philosophersnotes.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;philosophersnotes.com&lt;/a&gt; are great for setting the gears in my brain whirring.&lt;/p&gt;
&lt;h2 id=&quot;time-to-think&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#time-to-think&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Time to think&lt;/h2&gt;
&lt;p&gt;The first step in thinking is finding the time to do so - everyone yearns for some quiet retreat in which to ponder and recently I’ve found that my own head is the best one (thanks &lt;a href=&quot;http://en.wikipedia.org/wiki/Marcus_Aurelius&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Marcus&lt;/a&gt;). The thing is, before I can crawl into my head I need to have less stuff in it. No one likes pondering in a junk shop.&lt;/p&gt;
&lt;p&gt;In an effort to remove some of the mundane “gumpf” in my head I have, in true Danny style, written two lists:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Important Ongoing Commitments&lt;/li&gt;
&lt;li&gt;Important Finishable Projects&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first list contains all of the &lt;em&gt;commitments&lt;/em&gt; that I’ve made to myself and to others over the past few months. I’ve also added some of the people I’m committed to supporting and removed some of the things that I’m not whole-heartedly committed to. The important thing is that &lt;em&gt;none of these items are finishable&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;All of the &lt;em&gt;finishable commitments&lt;/em&gt; I’ve made, like “Remove Vista from my girlfriends laptop so it actually works”, make up my second list. Every item in this list has an obvious and intuitive &lt;em&gt;end condition&lt;/em&gt;, some test as to whether I’m done or not.&lt;/p&gt;
&lt;p&gt;These lists reside on the whiteboard next to my desk and above them is the promise that I’ve made:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Everything&lt;/em&gt; that I do will either further a commitment in list one, lead &lt;em&gt;directly&lt;/em&gt; to the completion of a project from list two, or else be &lt;em&gt;fun&lt;/em&gt;!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I will not take on any more projects until &lt;em&gt;all&lt;/em&gt; of those in list two are complete.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Perhaps I’ll let you know how this goes.&lt;/p&gt;
&lt;h2 id=&quot;a-note-on-the-future-of-this-website&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#a-note-on-the-future-of-this-website&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;A note on the future of this website&lt;/h2&gt;
&lt;p&gt;I mentioned in my last post that I was thinking of redeveloping TheScribe and indeed it’s still on my list of things to do. I’ve got a few interesting ideas and it’s looking likely that the blog will eventually be running on a specially designed engine. Don’t hold your breath though - this isn’t on my projects list and isn’t likely to be for some time.&lt;/p&gt;
&lt;p&gt;If you want to keep up with me I do occasionally post interesting things over at &lt;a href=&quot;http://dannyat.tumblr.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;dannyat.tumblr.com&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>One site to rule them all?</title><link>https://danny.is/notes/2008-01-25-one-site-to-rule-them-all/</link><guid isPermaLink="true">https://danny.is/notes/2008-01-25-one-site-to-rule-them-all/</guid><pubDate>Fri, 25 Jan 2008 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2008/01/25/one-site-to-rule-them-all/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 25 January 2008 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20080521124353/http://thescri.be/2008/01/25/one-site-to-rule-them-all/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Over the past few months I’ve been thinking a great deal about the direction of my business and work, and also of this blog. It’s lain dormant since May thanks to a lack of motivation on my part, and a busy schedule elsewhere.&lt;/p&gt;
&lt;p&gt;One of the things I’ve been thinking about is creating an online portfolio of my illustrations and design work, along with a website to create leads for my business. Initially, I thought of using this blog as both a business front-end, and as a productivity and design blog. After working with this idea for some time and talking to various people about it, I’ve decided against the idea.&lt;/p&gt;
&lt;p&gt;This decision is based on three factors:&lt;/p&gt;
&lt;ol class=&quot;long-list-items&quot;&gt;
&lt;li&gt;This blog focuses mainly on productivity and lifehacks, my portfolio site should focus on design and creativity.&lt;/li&gt;
&lt;li&gt;I’d like this site to have a clean, minimalist design whereas I think my portfolio site should showcase some more impressive and off-the-wall stuff.&lt;/li&gt;
&lt;li&gt;I have two separate audiences: prospective clients and interested readers. My readers don’t want to look at my design, and my clients don’t want to be overwhelmed by articles on productivity.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;My next idea was to maintain a portfolio site with an attached blog on design and art, and focus this blog on productivity. A sensible idea? Perhaps not.&lt;/p&gt;
&lt;h2 id=&quot;time-constraints&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#time-constraints&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Time constraints&lt;/h2&gt;
&lt;p&gt;Although I’d like to write more, I’ve found in the past that my posting schedules are far too ambitious. I’ve got a number of commitments that draw on my time and I often find it hard to maintain this one blog, let alone &lt;em&gt;two&lt;/em&gt; separate blogs.&lt;/p&gt;
&lt;p&gt;This thinking led on to the idea that I could maintain two sites, but only one blog – One site hosting my portfolio and business details and this blog, covering articles on productivity &lt;em&gt;and&lt;/em&gt; art &amp;amp; design. The simplest way for me to separate the two “streams” on the blog would be to offer three RSS feeds.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A &lt;em&gt;Productivity&lt;/em&gt; feed for my productive audience.&lt;/li&gt;
&lt;li&gt;An &lt;em&gt;Art and Design&lt;/em&gt; feed for my artsy audience.&lt;/li&gt;
&lt;li&gt;A combined feed for the nutters who are interested in both.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After putting this to my friends, I’m convinced that this is the best way to go. If anyone thinks differently, please let me know.&lt;/p&gt;
&lt;h2 id=&quot;the-next-steps&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-next-steps&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;The next steps&lt;/h2&gt;
&lt;p&gt;My work on a new theme for this blog is coming on nicely, as is my article on the process I’ve used to design it. Now that I’ve decided to keep my portfolio and blog separate, I’ve removed a large chunk of the work involved. Hopefully, you should see a relaunch of this site in the near future, with a new design and some &lt;a href=&quot;http://performancing.com/node/4360&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;flagship&lt;/a&gt; articles.&lt;/p&gt;
&lt;p&gt;Assuming my other commitments don’t get in the way, and my motivation to write doesn’t decline you should also see an increase in post frequency. I intend to post about three times per week:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Once on productivity.&lt;/li&gt;
&lt;li&gt;Once on art or design.&lt;/li&gt;
&lt;li&gt;Once with a short story or poem from my girlfriend (or perhaps something else silly).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As far as my portfolio site is concerned, I think I’ll wait until I’ve got this project sorted before I embark on that.&lt;/p&gt;</content:encoded></item><item><title>Loose Change: Unstructured Habit Change for Lazy People</title><link>https://danny.is/notes/2008-01-21-loose-change-unstructured-habit-change/</link><guid isPermaLink="true">https://danny.is/notes/2008-01-21-loose-change-unstructured-habit-change/</guid><pubDate>Mon, 21 Jan 2008 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2008/01/21/loose-change-unstructured-habit-change-for-lazy-people/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 21 January 2008 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20080521124353/http://thescri.be/2008/01/21/loose-change-unstructured-habit-change-for-lazy-people/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Over the past few years I’ve tried a number of goal setting techniques with the intention of improving myself, learning more or getting more work finished – none of them have worked. Earlier today I set out to discover why and found that structured change doesn’t suit me. I need loose change instead.&lt;/p&gt;
&lt;h2 id=&quot;what-went-wrong&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#what-went-wrong&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;What went wrong?&lt;/h2&gt;
&lt;p&gt;My earlier attempts at a structured form of goal setting and habit change failed monumentally. While I diligently worked away at my goals and stuck to my aspired habits for a bit, after a few days the novelty fell off and I sacked more and more. This is testimony to my lack of motivation, perhaps another problem with goal setting. If I’m not motivated to work towards my goals then how can I hope to achieve them?&lt;/p&gt;
&lt;p&gt;Another place where my structured system fell down was its timings. Each step in the process lasted a definite number of days and had a deadline at the end. Deadlines and schedules, say a lot of experts, are great. They motivate you to work towards your goal. &lt;em&gt;Not if you’re me they don’t&lt;/em&gt;. Instead they morph a pleasurable and exciting task into something too much like hard work, ruining my enjoyment of it.&lt;/p&gt;
&lt;p&gt;For example, attending the gym is a pleasure for me, when I go that is. However by strictly scheduling gym sessions into my calendar it becomes just another part of my concrete “work” schedule and ceases to be fun.&lt;/p&gt;
&lt;p&gt;Rigid deadlines too are a problem, they force me to worry unduly about things which have no need for speedy completion. To add to this I suffer from an inability to correctly judge project times, I’m hopelessly optimistic when creating my deadlines.&lt;/p&gt;
&lt;p&gt;The final nail in the coffin of structured goal setting was the amount of time I spend thinking about it. Either defining my goals exactly, organizing a progressive schedule towards them or redefining my deadlines and goals as my situation changes.&lt;/p&gt;
&lt;h2 id=&quot;the-solution&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-solution&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;The Solution?&lt;/h2&gt;
&lt;p&gt;Loose Change.&lt;/p&gt;
&lt;p&gt;This is the rather ridiculous term I’m using for my new goals/motivational/self-help system. When I set out designing it I needed some requirements. Everyone knows that a system needs requirements don’t they?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requirement 1: Simple&lt;/strong&gt; – A simple system won’t take up much of my time and more to the point, it won’t have any novelty. It should be easier to stay motivated if it’s simple.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requirement 2: Free of deadlines&lt;/strong&gt; – I hate deadlines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requirement 3: Free of a regular schedule&lt;/strong&gt; – This means less time spent planning, and that I’m more likely to enjoy myself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requirement 4: Actually works&lt;/strong&gt; – If it doesn’t work it’s all a waste of time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I thought it would be nice if my system could help me achieve my goals without utilising specific “goals”. If my goal is to “get fit enough to run without dying”, my non-specific goal might be “The Gym”.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Brief interlude:&lt;/em&gt; I can see you thinking “this is ridiculous” but if you stick with it for a bit I might make more sense.&lt;/p&gt;
&lt;p&gt;My non-specific goals have very little power, unless isolated and kept simple. To this end I reckoned on two categories for them, with one goal from each category running concurrently, as a &lt;em&gt;segment&lt;/em&gt; (I love that word), until achieved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self Improvement:&lt;/strong&gt; One learning or improvement related goal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Play:&lt;/strong&gt; One random, fun goal to work on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After some reflection, I realised that the term “goal” is a bit misleading, what I’m really referring to is an &lt;em&gt;area of my life&lt;/em&gt;: “The Gym”, “Painting” or “Eating Well”, for instance. With this in mind I redefined my categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self Improvement:&lt;/strong&gt; A focus on a particular area of self improvement until it is refined and working well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Play:&lt;/strong&gt; Continuing focus on one fun activity until I’m proficient at it, or until I’m bored.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You’ll notice the loosely defined time constraints in there. They aren’t deadlines but rather they’re &lt;em&gt;stop conditions&lt;/em&gt; and when I’ve reached them I’m done with that goal. Thus far I’ve satisfied requirements one and two. To satisfy three was simple:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Each area has no schedule, one or other of the categories is to be pursued in my newly-unscheduled time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After a little more thought about how I could improve this system I realised that some vague time constraint &lt;em&gt;was&lt;/em&gt; needed. Without one my segment was likely to run forever as the stop conditions might never be reached. The time allowed for each segment depends on the nature of the areas and as I define each set of aims, I’ll define a “Loose Time for Segment” (in days) along with them. I know from past experience I’m more likely to stick to a deadline that isn’t strictly a deadline but is a guide.&lt;/p&gt;
&lt;p&gt;After deciding on this time constraint it struck me that I could use this vague deadline to motivate myself towards completing some more pressing work within the same timeframe. This thought led me to add a third category to my original two:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self Improvement:&lt;/strong&gt; A focus on a particular area of self improvement until it is refined and working well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Play:&lt;/strong&gt; Continuing focus on one fun activity until I’m proficient at it, or until I’m bored.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Project:&lt;/strong&gt; Continuing work on one project until it’s finished.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So there it is. All that remains is to decide on my first three aims and see if the system stands the test of time, satisfying my fourth and final requirement.&lt;/p&gt;
&lt;h2 id=&quot;my-first-segment&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#my-first-segment&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;My First Segment&lt;/h2&gt;
&lt;p&gt;I’ll not elaborate on these too much as they’re meant to be simple and obvious.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SELF-IMPROVEMENT:&lt;/strong&gt; A Study on study. Reading and learning about better methods of study and the human learning process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PLAY:&lt;/strong&gt; Vector Illustration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PROJECT:&lt;/strong&gt; Organisation of Admin &amp;amp; Building at 1440 Squadron, Air Cadets. A Project which needs pushing out of the way as quickly as possible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LOOSE TIME FOR SEGMENT:&lt;/strong&gt; 30 days.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve printed these in 72pt font and stuck them on my wall above my monitor. Hopefully every time I’ve got nothing to do I’ll work on one of these. As I started this segment on the 10th of January, I should finish round about the 10th of February. I’ll be posting a review of this system around that time, and defining my next segment then.&lt;/p&gt;
&lt;p&gt;If you’re like me and hate deadlines then give this a crack, I’d be interested to hear any thoughts and criticisms (or perhaps forecasts of my success) in the comments.&lt;/p&gt;</content:encoded></item><item><title>The Hipster PDA</title><link>https://danny.is/notes/2007-05-09-the-hipster-pda/</link><guid isPermaLink="true">https://danny.is/notes/2007-05-09-the-hipster-pda/</guid><pubDate>Wed, 09 May 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/05/09/the-hipster-pda/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 9 May 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20080521124353/http://thescri.be/2007/05/09/the-hipster-pda/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2007-05-09-hpda.C3FLpRdN_Z2l4Bfn.webp&quot; srcset=&quot;/_astro/2007-05-09-hpda.C3FLpRdN_Z2l4Bfn.webp 240w&quot; alt=&quot;My Hipster PDA&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 240px) 240px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;240&quot; height=&quot;180&quot;&gt;&lt;/p&gt;
&lt;p&gt;Following my post on &lt;a href=&quot;/notes/2007-05-08-print-kgtd-to-index-cards&quot;&gt;printing kGTD actions to index cards&lt;/a&gt; I thought it would be a good idea to write a brief post about my favorite organizational tool – the humble stack of index cards or &lt;a href=&quot;http://www.43folders.com/2004/09/03/introducing-the-hipster-pda/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Hipster PDA&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Popularized by Merlin Mann of &lt;a href=&quot;http://43folders.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;43folders&lt;/a&gt;, the hPDA was used by my mother back in the early 70’s when she worked as an estate agent. It comprises a stack of about 20 index cards clipped together with a binder clip. I started using it about a year ago as a type of notebook/organizer and I’ve tried a &lt;a href=&quot;http://radio.weblogs.com/0114670/categories/hipsterPda/2005/06/14.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;whole&lt;/a&gt; &lt;a href=&quot;http://www.douglasjohnston.net/weblog/archives/2005/06/11/diyp2_hipsterpda/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;bunch&lt;/a&gt; &lt;a href=&quot;http://gurno.com/dru/?q=node/30&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;of snazzy&lt;/a&gt; printed cards since then. While a number of these cards were useful, I’ve come to realize that most of them can simply be drawn out on a plain card in less time than it takes to print one, and with more flexibility. So why bother?&lt;/p&gt;
&lt;p&gt;My current hPDA comprises:&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;&lt;strong&gt;A Printout of my weekly fixed timetable&lt;/strong&gt; showing my University lectures, regular air cadet events and a few other fixed appointments. I made the timetable in OmniGraffle and printed it onto a blank index card.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A food shopping list&lt;/strong&gt; containing foods I often need to buy and the ingredients for my four or five staple meals. I use this as a sort of reminder if I’m in a shop – running through the list reminds me if I’m out of anything on it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/notes/2007-05-08-print-kgtd-to-index-cards&quot;&gt;My Next Actions list&lt;/a&gt;&lt;/strong&gt; printed from kGTD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A simple separator&lt;/strong&gt; with a blue “E” tab poking out the side. This separates the blank cards from the others and has my phone number, national insurance number and RAF service number written on it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ten large post-it notes&lt;/strong&gt; stuck to the back of the separator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A handful of business cards&lt;/strong&gt; along with a few more in my wallet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three of four red index cards&lt;/strong&gt; for writing really important things on. Any red cards get my attention as soon as I get home, all the others go into my inbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;About fifteen poor quality Tesco index cards&lt;/strong&gt; for everything else.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This whole lot is held together with a shiny red binder clip and lives in my back left pocket most of the time. When I get home I throw all the cards with notes and scribbles into my inbox, and action any red ones. To sum up, here are some of the pros and cons of the hipster:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I &lt;em&gt;always&lt;/em&gt; have my next actions list on me.&lt;/li&gt;
&lt;li&gt;I never need to write on scraps of paper or napkins.&lt;/li&gt;
&lt;li&gt;I can always give written information to someone.&lt;/li&gt;
&lt;li&gt;Everything is clipped together in one pocket, it’s hard to lose.&lt;/li&gt;
&lt;li&gt;It never crashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It’s very difficult to back up the hand-written stuff in it.&lt;/li&gt;
&lt;li&gt;It gets wet very very easily.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Does information overload kill holistic learning?</title><link>https://danny.is/notes/2007-05-08-does-information-overload-kill-holistic-learning/</link><guid isPermaLink="true">https://danny.is/notes/2007-05-08-does-information-overload-kill-holistic-learning/</guid><pubDate>Tue, 08 May 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/05/08/does-information-overload-kill-holistic-learning/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 8 May 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20071018140037/http://thescri.be/2007/05/08/does-information-overload-kill-holistic-learning/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Yesterday I downloaded and read Scott H Young’s &lt;a href=&quot;http://www.scotthyoung.com/blog/2007/04/21/holistic-learning-ebook/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;eBook on holistic learning&lt;/a&gt;. He makes some very interesting points in it and along with his &lt;a href=&quot;http://www.scotthyoung.com/blog/2007/03/29/studying-and-holistic-learning/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;post on the subject&lt;/a&gt; is well worth a read.&lt;/p&gt;
&lt;p&gt;Scott maintains that while it’s entirely possible to learn through memorization, very rarely will a student have a full knowledge of the subject and truly understand it.&lt;/p&gt;
&lt;p&gt;While reading through the book I realised that I did, at one time, learn holistically. While I was at school I had no problem learning with very little study. I was able to absorb information without trying, much to the annoyance of many of my peers. It seems that at some point between then and now I’ve lost that ability. What I want to know is why?&lt;/p&gt;
&lt;p&gt;This set me off on a little brainstorm and I have, I think, found the answer – or at least part of it.&lt;/p&gt;
&lt;p&gt;While I was at school I took in information on a number of subjects (thirteen if I recall correctly), but there was a finite amount of information to absorb. I only learned a fixed amount of stuff in one day. I was happy learning what we were taught. I did, of course, supplement this with reading from books, newspapers and my experiences but the majority of what I learned came from lessons at school. I linked all this information together in massive mind-webs and was thus able to understand and recall it with ease.&lt;/p&gt;
&lt;p&gt;When I started my A-Levels in 2003 I reduced the number of subjects I was studying. This gave me less seemingly unrelated concepts to link together in my mind-webs. In the absence of a broad subject range, I looked to the internet for information and discovered &lt;a href=&quot;http://en.wikipedia.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;wikipedia&lt;/a&gt; and the blogosphere. Suddenly I had too much information to actually learn and instead started storing it, both in my head and on my computer. Even now, when I find a good article I save the URL for future reference, on the basis that I haven’t got time to take it all in now.&lt;/p&gt;
&lt;p&gt;Upon starting my degree last year I reduced the areas which I was studying even further, and filled the space with more information from blogs and the web. Unfortunately, in tune with my reduced scope in school-based learning, I reduced the subjects that I read on the web. I now read about &lt;em&gt;productivity&lt;/em&gt; and &lt;em&gt;programming&lt;/em&gt;. That’s it.&lt;/p&gt;
&lt;p&gt;It’s my considered opinion that this narrowing of my study areas combined with the vast amount of unlearnable information presented to me every day has led not only to a reduction in my general knowledge, but to a tendency to learn by memorization.&lt;/p&gt;
&lt;p&gt;When I realized this it was like receiving a kick in the face from &lt;a href=&quot;http://en.wikipedia.org/wiki/Bigfoot&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Bigfoot&lt;/a&gt; – no wonder I find it hard to learn and no wonder I lose interest in subjects quickly.&lt;/p&gt;
&lt;p&gt;In conclusion I’d like to thank Scott for helping me to realize this and at the same time resolve to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reduce the amount of information I try to learn.&lt;/li&gt;
&lt;li&gt;Stop hoarding information for “later reading”.&lt;/li&gt;
&lt;li&gt;Expand my learning into other areas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I’m confident that by eradicating information overload and focusing on &lt;em&gt;learning what I want to&lt;/em&gt;, I’ll be able to stop worrying so much. Perhaps I’ll find it impossible to reach that long-forgotten state of all-knowing confidence, but I can get a bit closer to it.&lt;/p&gt;</content:encoded></item><item><title>Print kGTD to 3x5 Index Cards</title><link>https://danny.is/notes/2007-05-08-print-kgtd-to-index-cards/</link><guid isPermaLink="true">https://danny.is/notes/2007-05-08-print-kgtd-to-index-cards/</guid><pubDate>Tue, 08 May 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/05/08/print-kgtd-to-index-cards/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 8 May 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20080521124353/http://thescri.be/2007/05/08/print-kgtd-to-index-cards/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2007-05-08-kgtd-index-cards-thumb.ClZVh2O6_2pbxzG.webp&quot; srcset=&quot;/_astro/2007-05-08-kgtd-index-cards-thumb.ClZVh2O6_2pbxzG.webp 100w&quot; alt=&quot;kGTD index card screenshot&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 100px) 100px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;100&quot; height=&quot;128&quot;&gt;&lt;/p&gt;
&lt;p&gt;Along with a whole bunch of other GTD guys, I use &lt;a href=&quot;http://www.kinkless.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;kinkless GTD&lt;/a&gt; to keep track of all my next actions. Along with everyone else I’m excited about the release of &lt;a href=&quot;http://www.omnigroup.com/applications/omnifocus/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;OmniFocus&lt;/a&gt;, which will print to index cards. Until its release, however, I need the ability to print my NA’s to my hPDA as &lt;a href=&quot;http://www.kinkless.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Kinkless&lt;/a&gt; or OOP doesn’t provide this functionality.&lt;/p&gt;
&lt;p&gt;A few weeks ago I started syncing kGTD with iCal and using iCal to work from. I now use kGTD to organize my NAs and iCal to tick them off. This saves having OmniOutliner open the whole time and stops the temptation to re-shuffle my projects every five minutes.&lt;/p&gt;
&lt;p&gt;After a bit of research I whipped up a script that formats NA’s from iCal in TextEdit and then saves it as an HTML file for printing. Safari will then print the nicely formatted list to 3×5 index cards, providing your printer supports it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href=&quot;http://thescri.be/wp-content/uploads/2007/06/kgtd-print.scpt&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Print kGTD to Index Cards script&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Make sure that you change the user_name to your login name and change show_help_at_start to false if you don’t want to be reminded about Safari’s printing options when you run the script.&lt;/p&gt;
&lt;p&gt;In hindsight it would have made sense to simply format the file as HTML and write it directly to a text file, I may still rewrite the script.&lt;/p&gt;
&lt;p&gt;If you like the script or have any problems with it, leave a comment or link to me.&lt;/p&gt;</content:encoded></item><item><title>Zen To Done</title><link>https://danny.is/notes/2007-04-17-zen-to-done/</link><guid isPermaLink="true">https://danny.is/notes/2007-04-17-zen-to-done/</guid><pubDate>Tue, 17 Apr 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/04/17/zen-to-done/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 17 April 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20080521124353/http://thescri.be/2007/04/17/zen-to-done/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Leo Babauta of &lt;a href=&quot;http://zenhabits.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Zen Habits&lt;/a&gt; has written a wonderful post on ZTD. Zen To Done is his attempt to simplify David Allen’s GTD system - it addresses many of the pitfalls that new GTDers (including myself) often fall into.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://zenhabits.net/2007/04/zen-to-done-ztd-the-ultimate-simple-productivity-system/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Zen To Done (ZTD): The Ultimate Simple Productivity System&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Give it a look, it’s well worth the read if you’re having trouble with GTD.&lt;/p&gt;</content:encoded></item><item><title>Self Help: Addict or Recreational User?</title><link>https://danny.is/notes/2007-04-16-self-help-addict-or-recreational-user/</link><guid isPermaLink="true">https://danny.is/notes/2007-04-16-self-help-addict-or-recreational-user/</guid><pubDate>Mon, 16 Apr 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/04/16/self-help-addict-or-recreational-user/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 16 April 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20080313111348/http://thescri.be/2007/04/16/self-help-addict-or-recreational-user/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;As we’re all aware, I’m quite into productivity. I jumped on the bandwagon about a year ago when I was overrun with work and needed a way to deal with it all. Someone pointed me towards &lt;a href=&quot;http://davidseah.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Dave Seah’s&lt;/a&gt; PCEO and through that I discovered GTD and the massive online productivity community that surrounds it.&lt;/p&gt;
&lt;p&gt;Lately I’ve been looking into the more spiritual side of so-called “self-help”, reading about increasing energy, meditating and practicing &lt;a href=&quot;http://en.wikipedia.org/wiki/Boabom&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Boabom&lt;/a&gt;. I’ve also developed an interest in psychology.&lt;/p&gt;
&lt;p&gt;It seems to a lot of my friends that I spend a disproportionate amount of my time reading about and practicing the various life hacks I come across, especially when they see that my desk is still covered in clutter and I still fall behind with my work. I think that some of them would be quick to label me as one of &lt;a href=&quot;http://www.stevepavlina.com/blog/2007/04/self-help-junkies/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Steve Pavlina’s Self Help Junkies&lt;/a&gt;. I’m not so sure.&lt;/p&gt;
&lt;p&gt;Steve’s article talks about the all-too-common phenomenon where someone will spend months studying the Art of Productivity, and yet have nothing to show for it except some fancy office supplies and a whole bunch of lists. It &lt;em&gt;is&lt;/em&gt; easy to get so wrapped up in the process of being productive that you lose sight of the reason you’re applying all these life hacks – &lt;em&gt;to get more useful stuff done&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Steve says that he’d:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“be wary of anyone who claims his/her self-help results are purely internal and have no outward manifestations. If those inner breakthroughs are genuine, they must eventually manifest changes in the physical world.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although I agree with this statement in that the benefits of self help, whether spiritual or organizational will &lt;em&gt;eventually&lt;/em&gt; manifest themselves in the real world, I’m not so sure that the benefits will always be those expected.&lt;/p&gt;
&lt;p&gt;I spend a lot of my spare time reading about life hacks &amp;amp; productivity and implement (to one degree or another) a number of the ideas I read. However, most of the time I make notes on the ideas I’m reading but &lt;em&gt;never actually apply them&lt;/em&gt; (I’ve a file full of printouts and notes on “great new productivity tips” and I hardly touch it). Only about 5 per cent of the information I read gets stored or remembered, and probably &lt;em&gt;less than 10 per cent&lt;/em&gt; of that is ever put into practice for more than a few days. It’s true that sometimes after two hours reading productivity blogs and a half hour trip to buy some stationary (a self-confessed addiction of mine) I’ll sit down and spend an hour doing “&lt;em&gt;introspective exercises, making journal entries&lt;/em&gt;”, or making yet another list.&lt;/p&gt;
&lt;p&gt;In my eyes, this is okay – I’m aware that while I am playing around with ways to make me more productive it is just that: &lt;em&gt;playing&lt;/em&gt;. I don’t consider the hours I spend reading through productivity blogs to be useful work, but instead a form of recreation. When I read a self-help book it’s for enjoyment, much like reading a novel. So if one of my new shiny organizational systems fails, it doesn’t matter – it was a fun little exercise for me. That’s the main benefit – &lt;em&gt;I had fun&lt;/em&gt;. Of course occasionally I come across something which really does change the way I work: my own implementation of GTD encompasses ideas from hundreds of blogs and books and has increased my output and calmed my brain down.&lt;/p&gt;
&lt;p&gt;I’m sure that (weird as it may seem) there are many people who spend their time studying “self-help” not for the “emotional high” but simply because it’s &lt;em&gt;fun&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Steve suggests that “&lt;em&gt;This enormous time investment in self-help is nothing but mental masturbation&lt;/em&gt;”.&lt;/p&gt;
&lt;p&gt;Too true – but &lt;em&gt;what’s wrong with that?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Despite all this I feel I should acknowledge that Steve makes a good point in his article – if you’re spending your life “reading books and going to seminars” to no avail, and you don’t see it as a form of recreation then perhaps you should stop with the quick-fixes and create some measurable outcomes.&lt;/p&gt;</content:encoded></item><item><title>Problems, Solutions &amp; Worrying</title><link>https://danny.is/notes/2007-04-07-problems-solutions-worrying/</link><guid isPermaLink="true">https://danny.is/notes/2007-04-07-problems-solutions-worrying/</guid><pubDate>Sat, 07 Apr 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/04/07/problems-solutions-worrying/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 7 April 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101129092603/http://thescri.be/problems-solutions-worrying-2007/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Over the last few months I’ve had a number of problems in my life, and at some points they seemed almost insurmountable. Here’s a brief description of the process I use whenever I’m faced with that “&lt;em&gt;Oh My God - Everything’s Getting Too much&lt;/em&gt;” feeling. It’s reasonably quick and leads to a nice feeling of control.&lt;/p&gt;
&lt;h2 id=&quot;the-too-much-stuff-reduction-method&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-too-much-stuff-reduction-method&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;The Too-Much-Stuff Reduction Method&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Step 1: Problem dump&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first step is to get all of those problems out of your head. Scribble them on a piece of paper or record them, or paint them on your wall, it doesn’t matter how - &lt;strong&gt;just write them down&lt;/strong&gt;. I record them on my phone as I’m driving and then translate that into a text file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Problem Identification&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once you have your big senseless and unorganized brain dump you need to &lt;strong&gt;organize the nonsense&lt;/strong&gt; into problem areas. From these you can identify sub-problems and master-problems and sister-problems and connect everything together. I use a big sheet of paper and a pencil to make a giant mind map. You’ll find that while you may start with your dump from &lt;em&gt;step 1&lt;/em&gt;, you’ll quickly discover other things you’re worrying about.&lt;/p&gt;
&lt;p&gt;You should try to break down each problem into as many sub problems as you can, thus “No Money” becomes “No Job” and “Spending too much on shiny gadgets”. “No Job” can be broken down further still, perhaps to “No Time”. You’ll discover a whole bunch of links between your various problems (“No Time” because I’m playing with my shiny gadgets) and these links can help to clarify what’s worrying you the most and how other things on your mind influence those worries. I usually end up with a &lt;em&gt;big web of connected worries&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3: Problem solutions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once each big problem has been broken down into smaller ones, and the connections between them are apparent, you can start to look for solutions. I add these to my mind map in a different colour, branching them off the various problems they solve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4: List solutions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;List all the Scribbled solutions from your mind-map.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 5: Categorize solutions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next step is to look at your solutions and categorize them. Play with them and try to identify any changes in your lifestyle which would solve a number of problems. Look for non-specific solutions (“Buy less Stuff”) and specific ones (“Stop buying Tobacco”) &amp;amp; write down the changes you intend to make somewhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 6: Identify Specific Actions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From your categorized solutions create a list of small, actionable things which you can actually &lt;em&gt;do&lt;/em&gt; right now. For instance, while an overall solution might be “Send out CV’s to get some Work”, you could “Find your old employment records” right now.&lt;/p&gt;
&lt;p&gt;While this system looks a little over-complicated for what it is (that’s writing down your troubles and then writing how you can solve them), It allows your already chaotic mind to remain so, even when defining the solutions. Try it next time everything gets too much.&lt;/p&gt;</content:encoded></item><item><title>Why Five?</title><link>https://danny.is/notes/2007-04-07-why-five/</link><guid isPermaLink="true">https://danny.is/notes/2007-04-07-why-five/</guid><pubDate>Sat, 07 Apr 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/04/07/why-five/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 7 April 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101129092603/http://thescri.be/why-five-2007/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Here’s a good piece of advice from the National Health Service and unusually it isn’t about Health.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tin.nhs.uk/tools-techniques/links-to-other-tt/hidden/five-whys&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;NHS The Improvement Network - Five Whys&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They recommend asking why five times in order to drill down to the core of a problem. It does leave me wondering what happens if you need to ask more than five whys to get to the root, but I suppose you have to draw a line somewhere.&lt;/p&gt;
&lt;p&gt;I think this ties in well with &lt;a href=&quot;/notes/2007-04-07-problems-solutions-worrying&quot;&gt;my last post&lt;/a&gt; as far as the way in which you should break down problems is concerned.&lt;/p&gt;
&lt;p&gt;Many people see a problem and then produce a solution to it, without giving a thought to the underlying cause of that problem. By asking why a few times the problem, and others like it, can be solved for good.&lt;/p&gt;</content:encoded></item><item><title>New Business Cards</title><link>https://danny.is/notes/2007-03-28-new-business-cards/</link><guid isPermaLink="true">https://danny.is/notes/2007-03-28-new-business-cards/</guid><pubDate>Wed, 28 Mar 2007 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2007/03/28/new-business-cards/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 28 March 2007 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20101129092603/http://thescri.be/new-business-cards-2007/&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;I spent some time today putting together a new business card. I found myself pondering quite what to put on them, as they’re more multi-use than your regular biz card because I don’t have a business/job to promote - at least not a specific one.&lt;/p&gt;
&lt;p&gt;I seem to be asked for business cards by three groups of people: those who want my contact details relating to my work in the Air Training Corps, those interested in my web design and those who want to get in touch with me regarding my music. (I’m forever being asked what my myspace address is by the latter.)&lt;/p&gt;
&lt;p&gt;In the end I decided to just stick with my name, email address, website and phone number so that the card could be as multi-purpose as possible - I suppose it’s more typical of the old fashioned “calling cards”, albeit with a little more information.&lt;/p&gt;
&lt;p&gt;Along with my name, the circles at the bottom are meant to suggest an acoustic guitar, at least that’s the intention! I’ve also made the email address (and specifically the [at] symbol) quite prominent to suggest a technology connection. The blank space on the left allows me to write any details which aren’t on the card - my address or ATC Squadron number, for instance.&lt;/p&gt;
&lt;p&gt;So, without further ado, here’s the initial design:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Image of business card design was not archived]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Let us know what you think.&lt;/p&gt;</content:encoded></item><item><title>A bit of Self Reflection</title><link>https://danny.is/notes/2006-09-29-a-bit-of-self-reflection/</link><guid isPermaLink="true">https://danny.is/notes/2006-09-29-a-bit-of-self-reflection/</guid><pubDate>Fri, 29 Sep 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/9/29/a-bit-of-self-reflection&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 29 September 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/9/29/a-bit-of-self-reflection&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Sometimes it’s a good idea to sit down and just think. I did just that the other day and as my mind wandered I started thinking about what I’m good at – what I like doing. It struck me that I should try to push my aspirations and ideas towards these things.&lt;/p&gt;
&lt;p&gt;So here are some of my thoughts, in a simple old-fashioned list. No Waffle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’m good at making things neat and tidy.&lt;/li&gt;
&lt;li&gt;I like procedure, order and outlines.&lt;/li&gt;
&lt;li&gt;I like documents that follow conventions. My conventions.&lt;/li&gt;
&lt;li&gt;I like implementing systems which are written down in detail.&lt;/li&gt;
&lt;li&gt;I like designing paperwork, but not using other peoples.&lt;/li&gt;
&lt;li&gt;I like stationary. A lot.&lt;/li&gt;
&lt;li&gt;I like being outdoors and doing visual, manual work.&lt;/li&gt;
&lt;li&gt;I like pretty things – stuff that is clean and functional, but looks nice too.&lt;/li&gt;
&lt;li&gt;I like structures and schedules.&lt;/li&gt;
&lt;li&gt;I like teaching, an awful lot.&lt;/li&gt;
&lt;li&gt;I’m good at writing detailed plans &amp;amp; orders.&lt;/li&gt;
&lt;li&gt;I &lt;em&gt;enjoy&lt;/em&gt; writing documentation.&lt;/li&gt;
&lt;li&gt;I like talking.&lt;/li&gt;
&lt;li&gt;I like meta-stuff&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Writing these down just now was a rather enlightening experience. It seems I’m rather a perfectionist, at least when it comes to paperwork and organization. It’s all rather at odds to my fairly laid-back attitude to things. I guess I’m a secret perfectionist.&lt;/p&gt;</content:encoded></item><item><title>How I focus</title><link>https://danny.is/notes/2006-09-28-how-i-focus/</link><guid isPermaLink="true">https://danny.is/notes/2006-09-28-how-i-focus/</guid><pubDate>Thu, 28 Sep 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/9/28/how-i-focus&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 28 September 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/9/28/how-i-focus&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;After reading someone’s blog the other day (I seem to have lost the link) I made a note to look into the ways in which I focus. As a student I’ve all sorts of (mostly pleasant) things to distract me from my work and after a bit of thinking it seems I force myself to focus by using the following tricks:&lt;/p&gt;
&lt;ul class=&quot;long-list-items&quot;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Inboxes&lt;/strong&gt; – I carry a Notebook in my bag and some index cards in my pocket for scribbling down anything which comes into my head. I’ve a big inbox on my desk and an inbox folder on my laptop to collect these ideas and thoughts. Doing this keeps my head clear.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sound canceling headphones&lt;/strong&gt; – I use these when working in the Library at college or when I’m in a public place trying to do something.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Listen to music&lt;/strong&gt; – I listen to either calm repetitive “Easy Listening” music, or some good classical stuff. Anything else and I get too involved in listening to it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Close Applications&lt;/strong&gt; – I close every application except iTunes, Minuteur, kGTD and the app I’m working in.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fresh Air&lt;/strong&gt; – I keep a window open, which not only circulates fresh air but keeps the room at a pretty cool temperature.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Drink tea, drink water.&lt;/strong&gt; – I drink plenty of water (2ltrs per day) and I always have a pot of Chinese tea by me when I’m working. It helps me think. (A cup of caffeinated tea is a good way to wake me up if I’m a little groggy.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Take regular breaks&lt;/strong&gt; – I take time out to sit, smoke and think about what I’m doing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compete&lt;/strong&gt; – I make sure I compete with myself. Dave Seah’s PCEO works well for that. I also have my own system for judging how well I’m doing today.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, how do you focus on the task in hand?&lt;/p&gt;</content:encoded></item><item><title>Self Confidence</title><link>https://danny.is/notes/2006-09-10-self-confidence/</link><guid isPermaLink="true">https://danny.is/notes/2006-09-10-self-confidence/</guid><pubDate>Sun, 10 Sep 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/9/10/self-confidence&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 10 September 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/9/10/self-confidence&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;It’s amazing how a lack of self-confidence in one area of your life can quickly transcend and affect various others.&lt;/p&gt;
&lt;p&gt;A few weeks ago I was rather unhappy and lost confidence in myself with regard to certain areas of my life. I found that while I was still as able to, for example, lead cadets, my confidence in myself to do this rapidly diminished, as a result of my other problems. This caused me to appear shy which did in fact impact on my ability to lead. The same, of course, is true in reverse – as I’ve gained confidence in myself in certain areas I’ve gained it in others.&lt;/p&gt;
&lt;p&gt;So the moral of the story? Don’t lose faith in yourself and use areas you’re confident in to help you with those you’re not. And watch out for the downward spiral leading to total lack of belief in yourself.&lt;/p&gt;</content:encoded></item><item><title>And this too Shall Pass</title><link>https://danny.is/notes/2006-09-09-and-this-too-shall-pass/</link><guid isPermaLink="true">https://danny.is/notes/2006-09-09-and-this-too-shall-pass/</guid><pubDate>Sat, 09 Sep 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/9/9/and-this-too-shall-pass&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 9 September 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/9/9/and-this-too-shall-pass&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Attributed by some to Abraham Lincoln and others to the Kung Foo masters, the phrase “And this too shall pass” appeared in the Bible, engraved on a ring given to Solomon.&lt;/p&gt;
&lt;p&gt;What a wonderful way of dealing with both bad and good times – It reminds me that the happiness I have is fragile and could disappear at any time, motivating me to work to keep it. It also gives me hope when I strike bad times – knowing that they will pass does a wonderful job of raising the spirits.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“And this too shall pass”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Always remember it.&lt;/p&gt;</content:encoded></item><item><title>Balance</title><link>https://danny.is/notes/2006-02-28-balance/</link><guid isPermaLink="true">https://danny.is/notes/2006-02-28-balance/</guid><pubDate>Tue, 28 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/2/28/balance&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 28 February 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/2/28/balance&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Last night I was supposed to give a young lad a lift to cadets. I forgot.&lt;/p&gt;
&lt;p&gt;Aside from inconveniencing the cadet and pissing off my boss it got me thinking. Everyone was saying “that’s very unlike you”. and they’re right – it is.&lt;/p&gt;
&lt;p&gt;After leaving the Squadron I sat and smoked and pondered for an hour or so, concluding that actually, I’m not really happy at the moment – I don’t have the right balance.&lt;/p&gt;
&lt;p&gt;Although I’ve been very organized lately, and I’m moving all my projects along at an unprecedented speed, I’m just not that cheery. In an effort to understand the reason for this I wrote down the things that I think aren’t so good:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’m in debt by about £1,500.&lt;/li&gt;
&lt;li&gt;I don’t have a fixed job so I can’t pay back the money. It also makes me wonder what I’m doing with myself.&lt;/li&gt;
&lt;li&gt;I have a girlfriend that I only see at weekends – she lives 40 miles away.&lt;/li&gt;
&lt;li&gt;I have been working on a website for a customer and haven’t moved it on in ages. It’s an urgent project but it’s gone a little stale.&lt;/li&gt;
&lt;li&gt;I’m always feeling that I should be somewhere else, doing work.&lt;/li&gt;
&lt;li&gt;I have nothing sorted out for my move to University.&lt;/li&gt;
&lt;li&gt;This guilty feeling means that whenever I’m out with friends I don’t really enjoy myself, I keep thinking about these problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, now I’ve identified these problems I need to address them…&lt;/p&gt;
&lt;p&gt;Today I confirmed a place at Sussex University and defined a bunch of Next Actions for the move. That’s one point addressed then. I also applied for a job as a postman, addressing my first and second points. I applied a new theme to my blog, getting the thought of it off my brain and allowing me to fully concentrate on the “stale site”.&lt;/p&gt;
&lt;p&gt;As if that wasn’t enough I cleared a bunch of surplus clothes &amp;amp; kit out, giving me a nicer environment in which to work and banged off a whole bunch of little things I have to do, clearing my mind of it all.&lt;/p&gt;
&lt;p&gt;I feel sure that when I have a steady job and I’ve finished this project, I’ll be far happier to go out and have a drink, and will accept more easily the fact that I only see my girlfriend at the weekends.&lt;/p&gt;
&lt;p&gt;So it seems that the first step to dealing with problems is to identify them… pretty bloody obvious really.&lt;/p&gt;</content:encoded></item><item><title>Smoking Ban</title><link>https://danny.is/notes/2006-02-15-smoking-ban/</link><guid isPermaLink="true">https://danny.is/notes/2006-02-15-smoking-ban/</guid><pubDate>Wed, 15 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/2/15/smoking-ban&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 15 February 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/2/15/smoking-ban&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;I can’t believe it. The oh-so-wonderful government has decided to ban smoking in all enclosed public places in the UK. The bill was passed by the Commons yesterday but has yet to get through the Lords. No doubt our wonderful PM will find some way of circumventing the lords as he did with the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hunting_Act_2004#The_2004_bill&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Fox Hunting ban&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Simon Clark said to the BBC:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“People will continue to smoke and the idea that people are all going to give up smoking simply because they can’t smoke in a pub is nonsense. One of the problems with the ban when it comes in, will be that people will move into the street, they’ll smoke more at home, and it could end up being counter-productive.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;How true. While I’m a smoker (with no wish to give up) I don’t smoke in my house, I know that if I allowed it I’d smoke so many cigarettes that I’d soon be dying of cancer and broke to boot. At the moment, I smoke one on the way to work, one at lunch and one when I’m finished work. I’ll then have three or four over a pint in the evening and, if I’m up late, one before I hit the sack.&lt;/p&gt;
&lt;p&gt;If I’m not allowed to enjoy my three or four over a pint in the evening then, no doubt, I’ll visit the pub less often. Although this would probably do my liver some good, it would reduce the number of customers the pub has, and would also (I suspect) lead me to begin smoking at home. I spend, on average, an hour a day in the pub. That means I spend, on average, an hour a day smoking heavily. Should I begin to smoke at home I’d spend, maybe six hours a day smoking heavily.&lt;/p&gt;
&lt;p&gt;Of course, I could limit myself to one room and use it as a “pub replacement”, but what room? Certainly not where my desk is – I’d be smoking all day that way. The kitchen then, where all the food is prepared? Or maybe the living room – where the non-smoking guests come to talk. It looks like I’ll be smoking in my bathroom then!&lt;/p&gt;
&lt;p&gt;Aside from the personal inconvenience this bill might cause, I object morally to the idea of a ban. What right does a bunch of suited politicians have to tell me that I can’t smoke in my local pub? If the pub owner is fine with people smoking there then why the hell shouldn’t people smoke there? The government’s “lets ban everything” philosophy leads me to wonder if we’ll have the secret police knocking on our doors. Whatever happened to freedom and personal choice, eh?&lt;/p&gt;
&lt;p&gt;The BBC has a whole host of &lt;a href=&quot;http://news.bbc.co.uk/1/hi/uk_politics/4709258.stm&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;articles&lt;/a&gt; relating to &lt;a href=&quot;http://news.bbc.co.uk/1/hi/uk_politics/4714992.stm&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;the Ban&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>SuprGlue</title><link>https://danny.is/notes/2006-02-05-suprglue/</link><guid isPermaLink="true">https://danny.is/notes/2006-02-05-suprglue/</guid><pubDate>Sun, 05 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/2/5/suprglue&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 5 February 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/2/5/suprglue&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;A few months ago It struck me that I use a lot of web based software and there’s a bunch of my stuff published online somewhere. “Somewhere” – that’s the problem, my photo’s are on flickr, my bookmarks on del.icio.us, my writing on one or two different blogs and a bunch of other stuff is elsewhere.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://spruglu.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;SuprGlue&lt;/a&gt; is a nice little service which provides a means for you to clump all of your online social activities together. Right now it syndicates my photos at flickr, my bookmarks at del.icio.us, my things at 43things, my music at Last.fm, my events at upandcomming.org and my writing on this and my old blog.&lt;/p&gt;
&lt;p&gt;SuprGlu then displays all my activity across these services for an individual day. It’s a pretty simple concept really.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.iridesco.com/05/project-suprglu.php&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Iridesco&lt;/a&gt; website describes SuprGlu:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SuprGlu is a simple online tool for users to gather the disparate content they’ve contributed to the social web. Users are able to “stick” together their blogs, bookmarks, photos, and other personal breadcrumbs they leave around the web, and share their neatly chronicled online lives on their SuprGlu pages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although I don’t much like any of the templates available you’re given the opportunity to edit the CSS for your page in the SuprGlu admin panel.&lt;/p&gt;
&lt;p&gt;You can find &lt;a href=&quot;http://blu3zirux.suprglu.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;my SuprGlue page here&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Konfabulator Widget: YubNub i (1.0)</title><link>https://danny.is/notes/2006-01-10-konfabulator-widget-yubnub/</link><guid isPermaLink="true">https://danny.is/notes/2006-01-10-konfabulator-widget-yubnub/</guid><pubDate>Tue, 10 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2006/1/10/konfabulator-widget-yubnub-i-1-0&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 10 January 2006 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2006/1/10/konfabulator-widget-yubnub-i-1-0&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;Over the last few weeks I’ve been using a nifty little web service called YubNub, it’s basically a command line for the web and while it’s not as astounding as it might sound it does make it a little easier to do certain things, especially from the search bar within firefox. I use it all the time – so much, in fact, that I’d really like to be able to use it from the desktop…&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;http://widgets.yahoo.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Yahoo! Widget Engine&lt;/a&gt; (catchy name, no?).&lt;/p&gt;
&lt;p&gt;Except nobody’s made a widget for yubNub yet, strange considering how easy it is to create a simple search widget. To fix this chronic lack of yubnubwidgetness I’ve whipped together a simple search widget called &lt;strong&gt;YubNubi&lt;/strong&gt;. Maybe one day I’ll add some crazy functionality to it but at the moment, all it does is search. Plain and Simple. You type your query or command in the box, hit enter and yubnub will execute the command and display the results in your default browser.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/2006-01-10-yubnub-widget.EGHjW4Yn_fn8Iy.webp&quot; srcset=&quot;/_astro/2006-01-10-yubnub-widget.EGHjW4Yn_fn8Iy.webp 338w&quot; alt=&quot;YubNubi Widget&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 338px) 338px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;338&quot; height=&quot;161&quot;&gt;&lt;/p&gt;
&lt;p&gt;The widget is at version 1.2 at the moment and you can get it &lt;a href=&quot;http://widgets.yahoo.com/gallery/view.php?widget=37928&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;from the widget gallery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After the first release I made a few changes to it – I added an about screen and different graphics and tidied up the code a little. Shortly after it gained the .2, it was &lt;a href=&quot;http://yubnub.blogspot.com/2005/12/yubnub-konfabulator-widget-by-danny.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;announced on the yubnub blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, If you’re into YubNub and use the Yahoo Widget Engine, go ahead and have a look.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://yubnub.net/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;YubNub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://widgets.yahoo.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Yahoo! Widget Engine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Brain Upgrade</title><link>https://danny.is/notes/2005-12-16-brain-upgrade/</link><guid isPermaLink="true">https://danny.is/notes/2005-12-16-brain-upgrade/</guid><pubDate>Fri, 16 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2005/12/16/brain-upgrade&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 16 December 2005 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2005/12/16/brain-upgrade&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;I heard a few hours ago that the average human brain has 116GB of data storage, and 16Mb of memory. Aside from thinking that 116Gb isn’t very much considering the amount of stuff we can remember, I wondered if you could upgrade your brain. After a bit of googleing I found yes, you can…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bigbooster.com/articles/brain_upgrade.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://www.bigbooster.com/articles/brain_upgrade.html&lt;/a&gt; – Upgrade your brain.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.beyondhuman.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://www.beyondhuman.com/&lt;/a&gt; – Learn new super-powerful skills.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.buildfreedom.com/tl/tl11.shtml&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://www.buildfreedom.com/tl/tl11.shtml&lt;/a&gt; – how to increase your intelligence.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.buildfreedom.com/dir_clear.htm&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://www.buildfreedom.com/dir_clear.htm&lt;/a&gt; – Clear your minds reports.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.learningstrategies.com/PhotoReading/Home.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://www.learningstrategies.com/PhotoReading/Home.html&lt;/a&gt; – Read 25,000 words per minute (crazy, I think).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.beyondhuman.com/scheele-reading1.htm&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://www.beyondhuman.com/scheele-reading1.htm&lt;/a&gt; – Easy tips for faster reading.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Backing up your Firefox extensions (on windows)</title><link>https://danny.is/notes/2005-12-14-backing-up-firefox-extensions/</link><guid isPermaLink="true">https://danny.is/notes/2005-12-14-backing-up-firefox-extensions/</guid><pubDate>Wed, 14 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;callout&quot; data-callout-color=&quot;default&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon-wrapper&quot; data-astro-cid-pyumqe5w&gt; &lt;div class=&quot;icon&quot; data-astro-cid-pyumqe5w&gt; 📜 &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;content-wrapper&quot; data-astro-cid-pyumqe5w&gt;  &lt;div class=&quot;content content-trim&quot; data-astro-cid-pyumqe5w&gt; &amp;lt;p&amp;gt;This was originally posted on &amp;lt;a href=&amp;quot;http://thescri.be/2005/12/14/backing-up-your-firefox-extensions-on-windows&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;thescri.be&amp;lt;/a&amp;gt; on 14 December 2005 and was imported here from the &amp;lt;a href=&amp;quot;https://web.archive.org/web/20070116055205/http://thescri.be/2005/12/14/backing-up-your-firefox-extensions-on-windows&amp;quot; rel=&amp;quot;noopener noreferrer&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Internet Archive&amp;lt;/a&amp;gt; on 18 December 2025.&amp;lt;/p&amp;gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;
&lt;p&gt;It’s always been a source of irritation to me that whenever my FF installation breaks, or if I decide to reinstall it, I have to hunt down and reinstall all of my thirty-six extensions. If you’re running Windows you can use the following method to back up your extensions:&lt;/p&gt;
&lt;p&gt;Create a batch file (open notepad and save the file with a .bat extension) with the following code:&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/_astro/ec.7syh9.css&quot;/&gt;&lt;script type=&quot;module&quot; src=&quot;/_astro/ec.0vx5m.js&quot;&gt;&lt;/script&gt;&lt;figure class=&quot;frame is-terminal&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;span class=&quot;title&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sr-only&quot;&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;batch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#E981B9&quot;&gt;del&lt;/span&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt; C:\PATH TO BACKUP FOLDER\ffarchive.zip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#F6F3EA&quot;&gt;7za a -tzip C:\PATH TO BACKUP FOLDER\ffarchive.zip -r &lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;--0:#FFDC49&quot;&gt;C:\Documents and Settings\YOUR USER NAME\Application Data\Mozilla\Firefox&lt;/span&gt;&lt;span style=&quot;--0:#FBF3DB&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;div aria-live=&quot;polite&quot;&gt;&lt;/div&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;del C:\PATH TO BACKUP FOLDER\ffarchive.zip7za a -tzip C:\PATH TO BACKUP FOLDER\ffarchive.zip -r &amp;#34;C:\Documents and Settings\YOUR USER NAME\Application Data\Mozilla\Firefox&amp;#34;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Name this script something like ffbackup.bat and put it in the C:\WINDOWS directory (or anywhere that the windows PATH points to). To run the script you can simply type “ffbackup” at the command prompt or in the run box.&lt;/p&gt;
&lt;p&gt;This script uses a command line version of &lt;a href=&quot;http://www.7-zip.org/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;7-Zip&lt;/a&gt;, a free WinZip-type program. The first line of the batch file deletes the current archive and the second replaces it with a zipped up version of your Firefox application data.&lt;/p&gt;
&lt;p&gt;If you’re interested, the “a” specifies that files are to be added to the archive, the “-tzip” specifies zip as the archive format, the “C:\PATH TO BACKUP FOLDER\ffarchive.zip” is the path to the backup that will be created, the “-r” tells it to zip up the subdirectories too. The “C:\Documents and Settings\username here\Application Data\Mozilla\Firefox” is the path to the data which needs to be backed up.&lt;/p&gt;
&lt;p&gt;If you clear the cache, history &amp;amp; cookies and ensure that Firefox is closed before you run ffbackup, you’ll help reduce the size of the archive produced.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://prdownloads.sourceforge.net/sevenzip/7za432.zip?download&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Download 7-Zip Command Line for Windows&lt;/a&gt; (Unzip it to C:\WINDOWS)&lt;/li&gt;
&lt;li&gt;Create the ffbackup.bat batch file (also place in C:\WINDOWS)&lt;/li&gt;
&lt;li&gt;Run it.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item></channel></rss>