<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>The Cyanote blog — notes, tasks and calmer software</title>
    <link>https://cyanote.app/blog/</link>
    <atom:link href="https://cyanote.app/blog/feed.xml" rel="self" type="application/rss+xml" />
    <description>Plain writing about keeping notes, running a week and owning your own data — from the person who builds Cyanote, a local-first Mac app you pay for once.</description>
    <language>en</language>
    <lastBuildDate>Tue, 18 Aug 2026 09:00:00 +0000</lastBuildDate>
    <image>
      <url>https://cyanote.app/og-image.png</url>
      <title>The Cyanote blog — notes, tasks and calmer software</title>
      <link>https://cyanote.app/blog/</link>
    </image>
    <item>
      <title>When the clipboard ate the database</title>
      <link>https://cyanote.app/blog/when-the-clipboard-ate-the-database/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/when-the-clipboard-ate-the-database/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>On a real install the clipboard was 42.8 MB of a 44.8 MB database, and 80 screenshots were all of it. A row limit does not bound bytes. What replaced it.</description>
      <content:encoded><![CDATA[<p>I opened a real Cyanote database to look at something unrelated and found that the clipboard history was 42.8 MB of a 44.8 MB file.</p>
<p>Ninety-five per cent. Not notes, not tasks, not a year of habit ticks. Eighty copied images, averaging 521 KB each, the largest of them 5 MB.</p>
<p>The number that actually frightened me came after: the history limit counts <em>rows</em>. Five hundred rows against a 6 MB per-image cap is about three gigabytes, and nothing in the design said otherwise. Nobody had hit it yet. Somebody would.</p>
<h2 id="a-row-limit-does-not-bound-bytes">A row limit does not bound bytes</h2>
<p>This is the whole bug in one sentence, and it is an easy one to write.</p>
<p>"Keep the last 500 clipboard entries" is a completely reasonable rule when you picture a clipboard entry — a URL, a paragraph, a command you copied out of a terminal. Kilobytes. Five hundred of those is a rounding error.</p>
<p>Then you support images, because a clipboard manager that forgets your screenshots is not much of a clipboard manager. And on a Retina Mac an ordinary full-screen grab is 2880×1800. The unit of the limit and the unit of the cost have quietly stopped being the same thing, and every subsequent decision inherits that.</p>
<p>What made it invisible is that the app worked fine. Nothing was slow in a way anyone would report, nothing crashed, no user wrote in. The database was just steadily becoming a screenshot archive nobody asked for, on machines I would never see, because <a href="/blog/the-features-i-said-no-to/">there is no telemetry in this app</a> to tell me otherwise. It surfaced because I went and looked at a real file. That is not a repeatable process, and it is most of the reason I now open one on purpose every few weeks.</p>
<h2 id="the-same-decision-costing-twice">The same decision, costing twice</h2>
<p>Storage was the visible half. The popup was paying for it too.</p>
<p>Full-resolution image data lived in the same column as text content, base64-encoded. Listing the history selected that column. The popup then drew 36-pixel-tall thumbnails out of it.</p>
<p>Roughly 12 MB crossing the bridge between the Rust side and the interface to paint one screenful of a list — and decoded at full resolution on the other side to be drawn a tenth of an inch tall.</p>
<p>Both problems have the same root: one representation of an image, at full fidelity, used for every purpose. Storing it, listing it, previewing it and pasting it are four jobs with wildly different fidelity requirements, and they were all being served by the largest possible answer.</p>
<figure><img src="/images/clipboard-budget.svg" alt="A 44.8 MB database with 42.8 MB of clipboard history, and the design that replaced it: a small thumbnail read by the list, full-resolution bytes fetched only on paste" width="1200" height="480" loading="lazy" decoding="async" /><figcaption>Four jobs, four fidelities. The list never asks for the megabytes.</figcaption></figure>
<h2 id="what-replaced-it">What replaced it</h2>
<p><strong>Every image gets a thumbnail, about 384 pixels, stored beside the original.</strong> The list reads only that. Paste and the hover preview fetch the full row by id at the moment they actually need the pixels — which is the moment a user has chosen one specific entry, rather than the moment they opened a list of forty.</p>
<p><strong>A byte budget, not a row count.</strong> <code>CLIP_IMAGE_BUDGET</code> caps what the full-resolution copies may occupy between them. Past the cap, the oldest images give up their full-resolution data and keep their thumbnail. That is the part I am happiest with, because of what it does <em>not</em> do: an old screenshot does not disappear. It still appears in the list, and it still pastes. It pastes the thumbnail rather than the original, so it is no longer pixel-exact — a degradation, honestly, but an enormously better one than a gap where your screenshot used to be.</p>
<p><strong>A rule that saved every existing user's history.</strong> Rows stored before this change have no thumbnail, and cannot be given one after the fact from the Rust side. Without a special case, the first trim would have looked at those rows, seen an image over budget, dropped the full-resolution data, and left nothing at all — destroying every image already in every user's history, in the update that was meant to fix image handling.</p>
<p>So: a row whose thumbnail is NULL is never emptied, whatever the budget says. Those images keep their pixels until the popup gets around to backfilling a thumbnail for them.</p>
<p>I did not spot that from reading. I spotted it writing out what the trim would do to a row that predates the column, which is a habit worth having whenever a migration adds something that later code assumes is present. Migration 26 in <a href="/blog/one-sqlite-file-the-whole-data-model/">the schema</a> is that column; the NULL rule is the thing that made shipping it safe.</p>
<p><strong>And a check where I had assumed.</strong> Thumbnails encode as WebP, which is dramatically smaller — but only where the webview can genuinely encode WebP. The awkward part is that <code>toDataURL</code> does not fail when it cannot; it hands you back a PNG and says nothing. So the app verifies what it actually got rather than trusting what it asked for, and falls back to JPEG where WebP is unavailable. An API that silently substitutes something else is the most expensive kind to trust.</p>
<h2 id="the-one-that-got-away-for-a-while">The one that got away for a while</h2>
<p>Related, and found the same week: pasting a screenshot <em>into</em> a note took four seconds.</p>
<p>All of it was one call. Handing an image object across the bridge takes a JSON path, and the encoder ran a conversion once per element — 14.7 million calls for a single screenshot. Isolated, the same serialisation was 43ms without that step and 2,672ms with it. It was never bandwidth. The Rust side, at 243ms, was never the bottleneck either.</p>
<p>Sending the PNG bytes and letting Rust decode them removed the JavaScript decode, a canvas round trip and a full pixel copy along with it. A 2560×1440 paste went from 3,151ms to 256ms. On a Retina Mac the four-second case was the <em>common</em> one, because a full-screen grab is exactly that size.</p>
<p>Correctness got checked at the byte level rather than by eye: a known image round-tripped through the pasteboard came back pixel-identical, and the pasteboard was dumped from outside the app to confirm that what any other application receives on ⌘V is a valid, complete PNG. Looking right is not the same as being right, particularly with images, where an off-by-one in a stride produces something that looks perfect and is subtly wrong.</p>
<h2 id="what-i-would-tell-the-version-of-me-who-wrote-the-original">What I would tell the version of me who wrote the original</h2>
<p><strong>State the limit in the unit of the cost.</strong> If what you are protecting is disk, the limit is bytes. A row count is a proxy that holds exactly until one row can be a thousand times bigger than another, which — for anything touching user-supplied media — is immediately.</p>
<p><strong>Degrade instead of deleting.</strong> The budget could have dropped whole entries. Keeping a lower-fidelity version means the history stays complete and the user never encounters an unexplained hole. People forgive fuzzy. Nobody forgives missing.</p>
<p><strong>Check what an API gave you, not what you asked for.</strong> WebP that is silently a PNG. A <code>from_bytes</code> call that returns a stub because a build feature was not enabled. Both were caught by verifying the result; neither would have failed loudly on its own.</p>
<p>All of this shipped in 1.0.3, where the public note says the clipboard takes up far less space and its list opens faster when it holds screenshots. Both true. The <a href="/clipboard-manager-mac/">clipboard manager page</a> covers what it does; <a href="/blog/when-a-free-clipboard-manager-stops-being-enough/">when a free clipboard manager stops being enough</a> covers why you would want unlimited history in the first place — a promise that is only honest if somebody has done this arithmetic.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Clipboard</category>
      <category>Performance</category>
    </item>
    <item>
      <title>The sidebar read every note to draw a list of titles</title>
      <link>https://cyanote.app/blog/the-sidebar-read-every-note-to-draw-a-list/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-sidebar-read-every-note-to-draw-a-list/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>10,001 database statements and 101 MB to render 140 characters of text, four times a launch. Six measured performance problems, and what each one cost.</description>
      <content:encoded><![CDATA[<p>On a database with 10,000 notes, drawing the sidebar took 10,001 statements and moved 101 MB, in order to render about 140 characters of visible text.</p>
<p>Four times per launch.</p>
<p>None of that was a mystery once I looked, and looking was the entire trick. What follows is six problems found in one sitting, all of them measured rather than suspected, several of them in code I had written and read a dozen times without noticing anything wrong.</p>
<h2 id="the-sidebar">The sidebar</h2>
<p>The list query was <code>SELECT *</code>.</p>
<p>Every row therefore carried its whole rich-text document — the full note, as JSON — across the bridge from the database to the interface, where it was parsed into an object and thrown away, because a sidebar row needs a title and a short snippet. Then, for each note, a second query fetched that note's tags. Hence 10,001 statements: one list, ten thousand tag lookups.</p>
<p>The fix has nothing clever in it. Select the four columns a list row actually needs. Let SQLite cut the snippet, rather than shipping 8 KB of document to take 60 characters off the front. Read a code note's file path with <code>json_extract</code> instead of parsing the entire document in JavaScript to reach one field. Fetch every note's tags in one grouped query instead of ten thousand.</p>
<p>Same database: 2 statements, 1.4 MB, and 527ms became 47ms.</p>
<p>Backlinks got the same treatment, because that one runs on <em>every note open</em> rather than at launch, and was doing the same thing for the same reason.</p>
<h2 id="the-idle-costs">The idle costs</h2>
<p>The sidebar at least happened when something happened. These four ran while the app sat there doing nothing.</p>
<p><strong>The reminder sweep read everything, every 30 seconds.</strong> Every to-do and every calendar event, in full, twice a minute, forever, to find out whether anything was due. On the test database — 767 events — that is 1.18 GB a day of reading to almost always learn that the answer is no. It asks for armed rows only now: the ones with a reminder set, in the window. Ninety-nine per cent of that traffic was learning nothing.</p>
<p><strong>The clipboard poll read the clipboard twice a second.</strong> Including, if an image was on the pasteboard, a full owned RGBA copy of it. Every half second. Forever. macOS offers <code>NSPasteboard.changeCount</code> — a single integer that increments when the contents change. The poll reads the integer and touches the actual contents only when it moves. A copied screenshot now costs something once, when you copy it, instead of 172,800 times a day.</p>
<p><strong>The status bar split the entire note into words on every keystroke.</strong> Word count. On a long document, on every character typed. That is the sort of thing that feels free in a small test note and turns a 5,000-word document into a typing experience people describe as "laggy" without being able to say why.</p>
<p><strong>And the editor re-rendered on any state change at all</strong>, because it subscribed to the whole state store rather than the parts it uses. Toggle a setting in a modal on the other side of the app and the heaviest subtree in the application rebuilt itself.</p>
<figure><img src="/images/perf-six-wins.svg" alt="Six measured problems and what each cost: 527ms to 47ms on the sidebar, 1.18 GB a day on reminders, a clipboard poll reading an integer instead of an image" width="1200" height="500" loading="lazy" decoding="async" /><figcaption>Every number here was measured before and after. None of them were where I would have guessed.</figcaption></figure>
<h2 id="two-more-in-the-writing-path">Two more, in the writing path</h2>
<p><strong>Saving a note deleted and rewrote its links every time.</strong> Every debounced save issued a DELETE plus one INSERT per link — to usually change nothing at all, because the links in a note are stable across most keystrokes. Compare first, write only on a difference.</p>
<p><strong>And startup re-read and re-rendered the entire tree after a housekeeping pass that had deleted nothing.</strong> The pass was correct; the unconditional refresh after it was not. If nothing changed, nothing needs redrawing.</p>
<h2 id="the-indexes-and-the-one-i-did-not-add">The indexes, and the one I did not add</h2>
<p>Three indexes went in for lookups whose column was not the leading column of any existing key: note nesting, tag lookups, backlink targets. The nesting one took a query from 7.1ms to 0.007ms.</p>
<p>A fourth looked equally obvious — an index covering the sidebar's own list query — and it was a trap. That query already had a plan SQLite was happy with, and the index would have cost a write on every single save in exchange for a read that was no longer slow. It is not there, and <a href="/blog/one-sqlite-file-the-whole-data-model/">the migration says why, with numbers</a>, because in six months I will look at that query and think the same obvious thought again.</p>
<h2 id="what-actually-generalises">What actually generalises</h2>
<p><strong>The bottleneck was never where I thought.</strong> I would have guessed rendering — long lists, virtualisation, React. Every one of these was data access: how much was read, how often, and how much of it was thrown away on arrival. Not one of the six was fixed by making the drawing faster.</p>
<p><strong>"It feels fine" means your test data is too small.</strong> Every one of these was invisible on the 40-note database I develop against and obvious on a 10,000-note one. Generating a large database and running against it occasionally is the cheapest performance tool there is, and I had not been doing it. <a href="/blog/why-a-notes-app-should-open-instantly/">Why a notes app should open instantly</a> is the promise; a realistic test database is what makes it true for someone with eight years of notes rather than eight.</p>
<p><strong>Idle cost is invisible and adds up.</strong> Nobody files a bug that says "your app read 1.18 GB today while I wasn't using it". They notice their battery, blame something else, and quit the app that happened to be open. A poll that reads one integer instead of copying an image is not a clever optimisation — it is the difference between a menu-bar app that costs nothing and one that quietly costs you an hour of battery.</p>
<p><strong>Measure in the running app, not in a benchmark.</strong> The image-paste problem in <a href="/blog/when-the-clipboard-ate-the-database/">the clipboard work</a> looked like bandwidth right up until it was isolated and turned out to be a serialisation step costing 2,672ms against 43ms. Anything you believe about where the time goes, without a number beside it, is a guess with good posture.</p>
<p>None of this appears in a changelog. The public note for the release that carried it says "bug fixes and improvements", because <a href="/blog/where-your-notes-actually-live/">the notes are deliberately vague</a> and nobody outside can see any of it directly. What they can see is an app that opens in well under a second on a database with ten years in it, which was the entire point.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Performance</category>
      <category>macOS</category>
    </item>
    <item>
      <title>The paste that landed in the wrong app</title>
      <link>https://cyanote.app/blog/the-paste-that-landed-in-the-wrong-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-paste-that-landed-in-the-wrong-app/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>The popup synthesised Cmd-V into whatever was frontmost and assumed it was your app. Sometimes it was Cyanote. The race, and how it was made impossible.</description>
      <content:encoded><![CDATA[<p>A clipboard manager has one job at the end: put the thing you picked into the app you were working in. Cyanote's got that wrong, occasionally, in a way that could paste a password into a note.</p>
<p>Here is how, because the shape of the mistake is more useful than the mistake.</p>
<h2 id="the-design-that-was-wrong">The design that was wrong</h2>
<p>Picking an entry did two things. It put the content on the system pasteboard, then it synthesised a ⌘V keystroke — posted to the system, delivered to whatever application happened to be frontmost at that instant.</p>
<p>The assumption baked into that second step: whatever is frontmost is the app the popup opened over. Usually true. It is the app you were in a moment ago, and the popup is a floating panel that deliberately does not take over.</p>
<p>Usually. A mouse click on the popup could hand Cyanote the foreground first, and then the keystroke went to Cyanote — which pasted the entry into whichever note happened to be open. Keyboard selection mostly won the race. Mouse selection sometimes lost it.</p>
<p>Read that back with the contents of a clipboard history in mind. The entries most worth protecting are exactly the ones you copy and paste immediately: a password out of a manager, an API key, a card number. The failure landed those in a document, silently, in the app that had just promised to be careful with them.</p>
<p>Nobody reported it. I found it while chasing something else, which is the ordinary way these are found, and is an argument for reading your own code paths on purpose rather than waiting.</p>
<h2 id="guarding-versus-making-it-impossible">Guarding versus making it impossible</h2>
<p>The obvious fix is a guard. Before posting the keystroke, check whether Cyanote is frontmost; if it is, bail out or restore the other app first and try again.</p>
<p>I had guards. That is what the original design needed to work at all, and one of them had started refusing a legitimate case — pasting into Cyanote itself, which is a completely reasonable thing to want. The guards were accumulating, each one narrowing a broadcast that was wrong in principle.</p>
<p>Broadcasting a keystroke to "whoever is in front" is a message with no addressee. Every guard is an attempt to reason about who might receive it, from a process that cannot actually know.</p>
<p><code>CGEvent::post_to_pid</code> takes an addressee. The event goes to one named process, whatever is in front.</p>
<p>So the popup now captures the process id of the app that was active at the moment it opened, and the paste is delivered to that pid. Where a paste lands stops being a race and becomes a value recorded up front. The wrong-app paste is not guarded against; it is unrepresentable — there is no longer a code path that can express "send this to whoever is in front", so no future refactor can reintroduce it by accident. The guards came out with it, and pasting into Cyanote works again, because it is now just another pid.</p>
<figure><img src="/images/paste-target-pid.svg" alt="Two designs: a keystroke broadcast to whatever is frontmost, versus one addressed to the process id captured when the popup opened" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>A guard narrows a wrong design. An addressee replaces it.</figcaption></figure>
<h2 id="what-fell-out-of-the-accessibility-grant">What fell out of the Accessibility grant</h2>
<p>Synthesising keystrokes on macOS requires the Accessibility permission, and that grant is per-binary — a detail with two consequences the app had never said out loud.</p>
<p><strong>Restoring the foreground needed the same permission, and used to fail with it.</strong> The old code asked System Events to bring the previous app forward, which is Apple Events, which needs the very grant that was missing. So on a build without it, the paste failed <em>and</em> the restore failed together, and the popup looked simply broken rather than blocked. <code>NSRunningApplication.activate</code> needs no permission at all and does the same job. Restoring the window you came from is now unconditional.</p>
<p><strong>A paste that cannot happen says so.</strong> If the grant is missing, the popup reports it, offers to open the right settings pane, and points out that the entry is on the clipboard already — so you can press ⌘V yourself and get on with your day. Before, it closed and nothing arrived. Silence is the worst possible response to a permission problem, because the user's only theory is that your software is broken. <a href="/blog/why-a-mac-app-asks-for-accessibility/">Why a Mac app asks for Accessibility</a> is the longer version of that argument.</p>
<p><strong>And the order of the two final steps matters more than it looks.</strong> The foreground is handed back <em>before</em> the popup's panel is ordered out, not after. When a panel goes away, AppKit has to move key status somewhere, and it picks the app's main window — which raises Cyanote in front of whatever you were doing, one beat after you asked it to get out of the way. Restoring first means that reassignment happens inside an app that is no longer active, so nothing is raised. The same ordering fixes Escape: dismissing the popup without picking anything now puts you back where you were too.</p>
<p>That last one took an embarrassing while to see. I kept reading the activation code, because that is where the bug obviously was, and the bug was in a line of window teardown two functions away that I had never once suspected.</p>
<h2 id="what-i-took-from-it">What I took from it</h2>
<p>The clipboard is the part of the app with the most exposure to the rest of the system — it opens over other applications, reads what they put on the pasteboard, and types into them. Every one of those is a boundary where "usually true" hides.</p>
<p>Two rules came out of it, and they now apply well beyond the clipboard:</p>
<p><strong>If the code can express the wrong outcome, it will eventually produce it.</strong> Not through malice or carelessness — through a race, a refactor, or a user doing something reasonable in an order nobody tried. Deleting the expression beats adding a check.</p>
<p><strong>A silent failure at a permission boundary is worse than a loud one.</strong> The user cannot see the boundary. If the app does not name it, the app is what looks broken.</p>
<p>All of this shipped in 1.0.4, described in the public notes as pasting "always landing in the app you were working in", which is accurate and considerably less alarming than the paragraph above. The <a href="/clipboard-manager-mac/">clipboard manager page</a> covers what it does day to day; <a href="/blog/when-a-free-clipboard-manager-stops-being-enough/">when a free clipboard manager stops being enough</a> covers why you would want history at all.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Clipboard</category>
      <category>macOS</category>
    </item>
    <item>
      <title>The half-second that left a locked note in the clear</title>
      <link>https://cyanote.app/blog/the-half-second-that-left-a-locked-note-in-the-clear/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-half-second-that-left-a-locked-note-in-the-clear/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>Locking a note took 138 milliseconds. The save it raced was scheduled 500 milliseconds earlier, and the gap wrote the plaintext back to disk underneath it.</description>
      <content:encoded><![CDATA[<p>You type a password into a note. You lock the note. The app shows the lock screen, asks for your password, and refuses to show the content without it.</p>
<p>On disk, in the version before 1.0.3, the plaintext was sitting right there beside the encrypted copy. Searchable. Showing as the note's own title in the sidebar.</p>
<p>It took two numbers to produce, and they are the most instructive pair in the whole codebase.</p>
<h2 id="500-against-138">500 against 138</h2>
<p>Typing in a note does not write to the database on every keystroke. It schedules a write 500 milliseconds later, and each new keystroke pushes that out — an ordinary debounce, in every editor ever built.</p>
<p>The save function decided, at the moment it was <em>scheduled</em>, whether the note was locked. If unlocked, write the plaintext. If locked, encrypt. Sensible-looking code. The decision was captured in a closure, and the closure ran half a second afterwards.</p>
<p>Locking a note took about 138 milliseconds, measured.</p>
<p>So: you type. A write is scheduled for 500ms from now, carrying a captured decision that says <em>this note is unlocked, write it in the clear</em>. At 138ms you finish locking. At 500ms the stale closure runs and does exactly what it was told half a second ago.</p>
<p>The row it left behind: <code>is_locked = 1</code>, a valid encrypted blob, and the plaintext in <code>content_json</code> and <code>content_text</code> beside it. Both true at once.</p>
<h2 id="why-that-was-worse-than-it-sounds">Why that was worse than it sounds</h2>
<p>Plaintext on disk under a lock is bad enough. The full-text index is what made it serious.</p>
<p>Cyanote's search index <a href="/blog/one-sqlite-file-the-whole-data-model/">is kept in step with the notes by triggers</a>. A write to <code>content_text</code> fires the trigger. So the secret was not merely on disk — it was indexed, and a search for a word inside a locked note would find it, without the password, while the note itself still showed the lock gate.</p>
<p>The sidebar draws a note's title from the same text. Whatever you had typed in those last few seconds became the note's visible title.</p>
<p>None of that is subtle once you see it, and none of it was visible from inside the app. The interface was completely honest: the lock was on, the gate appeared, the password was required to open it. Every user-facing signal said the note was protected. The disk disagreed.</p>
<figure><img src="/images/lock-race-timeline.svg" alt="A 500ms debounce window with the lock completing at 138ms, and the stale write landing afterwards to put plaintext beside the encrypted blob" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>Both states were true at once: is_locked = 1, and the plaintext beside it.</figcaption></figure>
<h2 id="the-same-bug-pointing-the-other-way">The same bug, pointing the other way</h2>
<p>Chasing the leak turned up its mirror image, which lost data instead of exposing it.</p>
<p>"Lock now" deleted the in-memory session key synchronously. If a write was already queued, it ran a moment later, found no key, and hit the guard that stops a locked note being written in the clear. The guard worked. The edit was dropped — no toast, no retry, gone.</p>
<p>Unrecoverable, too, and for a deliberate reason: the app keeps an unsaved snapshot to recover from a crash, and that snapshot is withheld for locked notes, because a plaintext recovery file for an encrypted note is the same bug in a different place. The safety mechanism removed the safety net.</p>
<p>So one race leaked the last words you typed, and one lost them. Both from the same root: <strong>a decision about lock state made at schedule time and acted on at run time.</strong></p>
<h2 id="the-fix-in-three-parts">The fix, in three parts</h2>
<p><strong>Locking cancels the pending write rather than flushing it.</strong> This is the part I got wrong in my first attempt. Flushing feels safer — do not lose the edit, write it first, then encrypt. But flushing writes plaintext to disk on the way past, which is precisely the thing being fixed. The newest text is already going into the encrypted blob, because locking reads the live editor content. So the pending write has nothing to contribute and everything to leak. Cancel it.</p>
<p><strong>Ending a session flushes before the key goes.</strong> The opposite order, for the opposite reason. Here the note stays locked and the key is being dropped from memory; the queued write can still be encrypted, so let it complete first.</p>
<p><strong>And the write closures now re-read the lock state when they run, instead of trusting the flag they captured.</strong> This is the actual fix; the other two are the specific paths. Any decision that can change during a debounce window must be made inside the window, not before it. That one line also covers the case I would never have thought to test: a write queued while the note was locked, running after the lock was removed.</p>
<h2 id="what-i-actually-take-from-this">What I actually take from this</h2>
<p><strong>Two independent representations of one fact will disagree.</strong> <code>is_locked</code> said one thing, the presence of plaintext said another, and nothing in the schema prevented both being true. The lasting fix would be a shape where they cannot both exist — where the encrypted blob and the plaintext columns are not simultaneously expressible. I have that on the list, and I am aware that "check it more carefully" is a weaker answer than "make it impossible", which is <a href="/blog/the-paste-that-landed-in-the-wrong-app/">the lesson from the clipboard</a> arriving again in a different costume.</p>
<p><strong>A debounce is a promise to act on stale information.</strong> Every scheduled callback in a UI carries a snapshot of the world from before the user's most recent action. That is what it is for. Any security decision inside one is a decision made in the past about a present it cannot see.</p>
<p><strong>The interface being right is not evidence.</strong> Everything on screen behaved correctly throughout. If I had verified this the way a user would — lock a note, confirm it asks for a password — it passes. It only appears if you look at the row on disk, which is why the check that now guards it queries the database directly and asserts the plaintext columns are empty.</p>
<p>This shipped in 1.0.3, where the public note reads: <em>locking a note now keeps everything you just typed, including the words written in the moments right before you locked it.</em> True, and about a tenth of the story. <a href="/blog/where-your-notes-actually-live/">The changelog is deliberately vague</a> about which code paths were unreliable, which is the right call for a public release page — and the reason a blog exists is so the full version has somewhere to go.</p>
<p>If you use locked notes: this was fixed before the app went on sale, in the 1.0.x series, and <a href="/blog/password-protect-notes-on-mac/">the note protection design</a> covers what the lock does and does not claim.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Security</category>
      <category>Privacy</category>
    </item>
    <item>
      <title>The features I said no to</title>
      <link>https://cyanote.app/blog/the-features-i-said-no-to/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-features-i-said-no-to/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>Sync, an iPhone app, collaboration, AI, plugins and telemetry. Six things people ask for, the reason each one is a no, and what saying no actually costs me.</description>
      <content:encoded><![CDATA[<p>The most useful sentence in Cyanote's description is a list of things it does not do: no sync, no iPhone app, no collaboration, no AI, no plugins, no telemetry.</p>
<p>That reads like modesty. It is closer to a budget. Each of those noes is load-bearing, and I would like to go through them one at a time, because "we decided to stay focused" is the kind of thing every product says and almost none of them mean specifically.</p>
<h2 id="sync">Sync</h2>
<p>The most requested, by a distance, and the one I am most confident about.</p>
<p>Sync is not a feature you add. It is a distributed systems problem you adopt. The moment two machines can both edit a note, you own conflict resolution, offline queues, partial failures, clock skew, and a class of bug where the wrong version wins and someone's afternoon disappears. Ask anyone who has shipped it. The demo is a weekend; the correctness is years.</p>
<p>And it needs a server, permanently, per user. Go back to <a href="/blog/the-arithmetic-of-a-ten-dollar-app/">the arithmetic of a $10 app</a>: a one-time payment against a recurring per-user cost has exactly one ending, and it is a subscription announcement dressed up as a "sustainability update".</p>
<p>So the no here is not "sync is hard". It is: a synced Cyanote could not be a $10 app you buy once, and if I have to choose between those two things, the pricing is the part people cannot get elsewhere.</p>
<p>What exists instead: the database is a single file, and Settings will put it wherever you like — including a folder that Dropbox or iCloud Drive already syncs. That works if you are careful about not running both Macs at once, and I say so plainly rather than pretending it is a feature. <a href="/blog/two-macs-one-system/">Two Macs, one system</a> is the honest guide to the trade-offs.</p>
<h2 id="an-iphone-app">An iPhone app</h2>
<p>The second most requested, and the answer is arithmetic again, of a different kind.</p>
<p>A native iOS app is a second codebase. Not a port — a different interface, different interaction model, a review process with its own timeline, and a permanent doubling of every future change. One person maintaining two platforms ships each of them half as well.</p>
<p>There is a worse version of this that I want to name, because it is the trap. A mobile app that is useful needs to see your notes, which means it needs sync, which means the server, which means the subscription. The iPhone request and the sync request are the same request, and answering it turns Cyanote into a different company.</p>
<p>If you need your notes in your pocket, Cyanote is the wrong app, and I would rather you learn that from a blog post than from a refund form. <a href="/blog/getting-a-note-to-your-phone-without-sync/">Getting a note to your phone without sync</a> covers what actually works when it is occasional rather than constant.</p>
<h2 id="collaboration">Collaboration</h2>
<p>Shared notes need identity: who are you, what may you see, who changed this. Identity means accounts. Accounts mean a user database, a password reset flow, a breach surface, and a server that has to be up for you to open your own notes.</p>
<p>Cyanote has no account because it has nothing to sign into, and that is the single strongest privacy property it has — not a policy, an absence. <a href="/blog/notes-app-without-an-account/">What an account actually buys you</a> goes through what disappears along with it.</p>
<p>It is a desktop app for one person on their own machine. If two people need the same document, use something built for that; there are good ones, and this is not one of them.</p>
<figure><img src="/images/features-said-no.svg" alt="Six requested features, what each one would require, and the property of the app it would consume" width="1200" height="480" loading="lazy" decoding="async" /><figcaption>Every no is a yes to something else. These are the somethings.</figcaption></figure>
<h2 id="ai-features">AI features</h2>
<p>The interesting no, because I do not think AI in a notes app is stupid. Summarising a long meeting note is genuinely useful.</p>
<p>The problem is the direction the data flows. Any model worth using runs on someone else's hardware, which means your notes leave your machine to be useful. The app's whole promise is that they do not. You cannot hold both. "We only send the note you asked about, and we don't train on it" is a policy — revocable, unverifiable from where you sit, and a completely different kind of assurance from <em>the app makes one network request ever, and it is a version check</em>.</p>
<p>A local model would keep the promise, and someday that may be genuinely good enough on ordinary hardware for a specific job. It is not a no forever. It is a no while the honest version of the feature is "your notes get uploaded". <a href="/blog/ai-features-and-private-notes/">AI features and private notes</a> has the longer argument.</p>
<h2 id="plugins">Plugins</h2>
<p>Plugins look free. Other people write the features, users get what they want, nobody is asking me for a Kanban swimlane.</p>
<p>What a plugin API actually does is turn your internals into a public contract. Every table shape, every state store, every editor node that a plugin can reach is now something you may not change without breaking somebody's setup. Cyanote has <a href="/blog/one-sqlite-file-the-whole-data-model/">26 shipped database migrations</a> and I have edited the data model on a dozen ordinary afternoons. That freedom is what has kept it moving. A plugin ecosystem trades it away permanently, at exactly the stage when I still get the shape wrong regularly.</p>
<p>There is also the security half: a plugin runs inside an app holding an unencrypted clipboard history. "Install this handy extension" is not a sentence I want anywhere near that.</p>
<p>Themes were the compromise, and the right one. Fifteen built in, plus <a href="/blog/customising-a-notes-app/">an editor for the seven colours the whole app is drawn from</a> — real customisation, no API surface, nothing executing.</p>
<h2 id="telemetry">Telemetry</h2>
<p>No analytics, no crash reporting, no "anonymous usage statistics to help us improve".</p>
<p>This one costs me the most, and I want to be straight about it rather than noble. I have no idea which features get used. I do not know how many notes a typical database holds, whether anybody opens the board view, or which of the fifteen themes is anyone's favourite. Every product decision is made without the data that every other product team considers a baseline.</p>
<p>I took that trade because a searchable index of everything you copy sits in this app, and "we collect anonymous usage data" is where the erosion always begins. Not with a scandal. With a reasonable-sounding paragraph in a privacy policy, then a slightly wider one.</p>
<p>The replacement is worse and slower: people email me. That is a biased sample, it is a fraction of a percent of users, and it is what I have. <a href="/blog/supporting-an-app-that-does-not-know-who-you-are/">Support for an app with no accounts</a> covers what that is actually like.</p>
<h2 id="what-the-noes-cost">What the noes cost</h2>
<p>Every one of these loses sales. Sync and mobile lose the most, and they lose them silently — people read the page, see what is missing, and close the tab, and I never learn their names.</p>
<p>What is left is an app that opens instantly, works with the wifi off, keeps everything in <a href="/blog/where-your-notes-actually-live/">one file you can copy to a USB stick</a>, and costs $10 once. Those four properties are downstream of the six noes. Add sync and you lose the price. Add AI and you lose the privacy. Add plugins and you lose the ability to fix things quickly.</p>
<p>I would rather be exactly right for a smaller number of people than approximately right for everyone. That is a real position with real costs, and this is the list of them.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Design</category>
      <category>Local-first</category>
    </item>
    <item>
      <title>The arithmetic of a $10 app</title>
      <link>https://cyanote.app/blog/the-arithmetic-of-a-ten-dollar-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-arithmetic-of-a-ten-dollar-app/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>Apple takes $99 a year before a single copy sells. Here is what the ten dollars actually has to pay for, and the obligation that starts the moment someone buys.</description>
      <content:encoded><![CDATA[<p>Apple charges $99 a year for the right to sign software that opens without a warning on someone else's Mac. That bill arrives whether I sell nothing or sell ten thousand copies, and it arrived before Cyanote had a name.</p>
<p>At $10 a copy, with the payment processor's cut taken out, that is eleven sales a year to stand still.</p>
<p>I want to lay out the rest of the numbers, because "one-time purchase" gets discussed almost entirely from the buyer's side — as a nicer line on a bank statement — and almost never as the constraint it puts on the person on the other end. The constraint is the interesting part. It shapes what the app is allowed to be.</p>
<h2 id="where-the-ten-dollars-goes">Where the ten dollars goes</h2>
<p>Take one sale. Lemon Squeezy is the merchant of record, which means they handle sales tax in every jurisdiction that wants some, and they charge 5% plus 50¢ for the service. On a $10 sale that is a dollar, near enough, so about $9 lands.</p>
<p>Against that, the recurring costs:</p>
<p><strong>Apple Developer Program, $99/year.</strong> Not optional. Without it there is no Developer ID certificate, which means no notarisation, which means every buyer meets <a href="/blog/macos-cannot-verify-this-app/">the warning that macOS cannot verify the app</a> and a meaningful share of them stop right there.</p>
<p><strong>A domain, about $12/year.</strong> Boring, unavoidable.</p>
<p><strong>Hosting, near zero.</strong> The site is static and sits on GitHub Pages. The update payload goes to a Cloudflare R2 bucket, which is free until a level of traffic I would be delighted to reach.</p>
<p>So the floor is roughly $111 a year, or about thirteen copies. That is the whole cash side. It is small enough that I could pay it out of pocket forever and never notice, which tells you immediately that money is not the real cost here.</p>
<h2 id="the-obligation-the-buyer-never-sees">The obligation the buyer never sees</h2>
<p>The moment someone pays $10, they get free updates for life. That is on the pricing page, and I meant it when I wrote it.</p>
<p>Now count what "life" contains. macOS ships a major version every autumn. Each one has, historically, been able to break something: a permission prompt that used to appear once and now appears every launch, a window behaviour that changes, a system API that gets deprecated with two years' notice. None of that generates a single new sale. All of it has to be fixed, for people who paid once, three years ago, and are entirely right to expect the app to keep opening.</p>
<p>The surface that has to survive those autumns is about 36,000 lines of TypeScript and 3,500 lines of Rust, sitting on a webview that Apple ships and I do not control.</p>
<p>This is the honest asymmetry of buy-once software, and the reason so many good apps drifted to subscriptions: revenue is a spike at launch and a long tail after, while the maintenance is flat forever. Anyone who tells you the model is simply better for everyone is selling you something. It is better for the buyer, plainly. For the developer it is a bet that enough new people keep arriving to fund work that existing customers have already paid for.</p>
<figure><img src="/images/ten-dollar-math.svg" alt="One $10 sale against the fixed yearly costs: about $9 net, $111 a year in floor costs, and the maintenance that the price does not scale with" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>The cash side is small. The obligation is the part with no ceiling.</figcaption></figure>
<h2 id="what-the-price-makes-impossible">What the price makes impossible</h2>
<p>Here is where the arithmetic stops being accounting and starts being product design.</p>
<p>$10 once cannot fund a server. Not a sync server, not an account system, not a licence server that phones home on every launch. Run the numbers on any of those and you get a per-user, per-month cost against a one-time payment that was already spent — the classic way a buy-once app becomes insolvent about eighteen months in, quietly degrades, and then announces a subscription.</p>
<p>So the architecture had to make servers unnecessary rather than cheap. Everything lives in <a href="/blog/one-sqlite-file-the-whole-data-model/">one SQLite file on your own disk</a>. There is no account because there is nothing for an account to sign into. The licence key is checked once, on first launch, and never again — <a href="/blog/supporting-an-app-that-does-not-know-who-you-are/">which creates its own support problems</a>, and I would rather have those than the alternative.</p>
<p>I did not arrive at local-first from an ideology about data ownership, though I have since acquired one. I arrived at it because it is the only shape that a $10 payment can actually sustain. <a href="/blog/what-local-first-means-for-your-notes/">What local-first means for your notes</a> is the buyer-facing version of that argument; this is the ledger underneath it.</p>
<p>$10 also cannot fund a support team, which is why the app tries hard to explain itself in place — a paste that cannot happen <a href="/blog/why-a-mac-app-asks-for-accessibility/">says what permission is missing</a> rather than failing silently and generating an email.</p>
<h2 id="the-refund-line">The refund line</h2>
<p>14 days, no reason required, no proof of uninstall.</p>
<p>The received wisdom is that a no-questions refund policy on a cheap product invites abuse. Maybe. What it definitely does is remove the reason a person hesitates at a checkout for a $10 app from a developer they have never heard of, with no free trial, that they cannot try before buying. That hesitation costs far more than the refunds will.</p>
<p>There is also a version of this that is just self-interest: a refund tells me something. A stream of them clustered around one feature is the most direct signal I will ever get, given that there is no telemetry in the app and I have deliberately given up every other way of knowing what people do inside it.</p>
<h2 id="what-i-would-tell-someone-pricing-their-own">What I would tell someone pricing their own</h2>
<p>Three things, learned mostly by doing them in the wrong order.</p>
<p><strong>Price the maintenance, not the build.</strong> The build is finite and mostly already spent by the time you have a price. The maintenance runs until you stop, and the price is the only thing funding it. $10 is defensible for Cyanote because the app has no per-user running cost. If yours does, $10 is a slow way to lose money and no amount of goodwill fixes that.</p>
<p><strong>Make the promise you can keep, and write it down narrowly.</strong> "Free updates for life" is a promise about updates to this app on this platform. It is not a promise that every future thing I build is free, and the pricing page says so in plain words. Vague generosity at the point of sale becomes a bitter argument in year three.</p>
<p><strong>Do not pretend the model has no downside.</strong> The <a href="/blog/what-ten-dollars-once-buys/">thing a one-time price genuinely buys</a> is real and worth having — no renewal date, nothing taken away for lapsing, an app that still opens if I disappear. The thing it cannot promise is an infinite runway. Anyone who has watched a beloved buy-once app go quiet knows the failure mode, and pretending otherwise on a pricing page insults the reader.</p>
<p>The arithmetic is not comfortable and it is not a secret. Eleven sales a year covers Apple. Everything after that funds the autumn when macOS changes something and a few thousand people who paid once, years ago, expect their notes to open exactly as they did the day before.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Pricing</category>
      <category>One-time purchase</category>
    </item>
    <item>
      <title>Supporting an app that doesn&#x27;t know who you are</title>
      <link>https://cyanote.app/blog/supporting-an-app-that-does-not-know-who-you-are/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/supporting-an-app-that-does-not-know-who-you-are/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>No account means no password reset, no dashboard and no way to look you up. What support actually looks like when the app knows nothing about its users.</description>
      <content:encoded><![CDATA[<p>Someone emails to say something is wrong. I open the message and that is everything I will ever have: their words, and whatever they thought to include.</p>
<p>There is no account to look up. No dashboard showing their version, their settings, their last twelve sessions. No error report that arrived before their email did. No record that this person exists, beyond a payment receipt in a system I do not control.</p>
<p>This is the direct consequence of the choices on the front of the site — <a href="/blog/notes-app-without-an-account/">no account</a>, <a href="/blog/the-features-i-said-no-to/">no telemetry</a>, everything on your own machine — and I want to describe what it is actually like, because those choices get sold as pure wins and they are not.</p>
<h2 id="what-disappears-along-with-the-account">What disappears along with the account</h2>
<p>A user database is not only a privacy liability. It is the substrate half of modern software support runs on.</p>
<p>Gone with it: password resets, because there is no password. Account recovery, because there is no account. "Let me check your subscription status." "I can see the error in your logs." "I've pushed a fix to your instance." Every one of those sentences requires a server that knows who you are, and there isn't one.</p>
<p>Some of that absence is straightforwardly good. Nobody can ever email me and ask me to hand over a customer's notes, because I do not have them. There is no breach that exposes what you write, because there is nowhere for it to leak from. A company that cannot be compelled to produce something has a much simpler relationship with the question than one that promises not to look.</p>
<p>And some of it is just harder. If you lose the file that holds your work, I cannot restore it. There is no copy. That is the same property, read from the other side, and it is why <a href="/blog/backing-up-local-notes/">the backup story</a> gets more attention in this app than it does in one where the cloud quietly holds a version for you.</p>
<h2 id="the-one-thing-that-replaced-logs">The one thing that replaced logs</h2>
<p>You cannot print your way out of a problem in a shipped desktop app. A GUI binary has no console attached — the diagnostic line you carefully wrote goes nowhere at all on the platform where the bug actually reproduces.</p>
<p>So the app writes a small diagnostic file locally. Not analytics; it is never sent anywhere. It is a file on the user's own disk, which the user can read, that says what the app did on launch — so that when someone writes in, there is one thing I can ask them to attach that turns "it did not work" into a sequence of events.</p>
<p>Three constraints on it, all learned rather than designed:</p>
<p><strong>Bounded.</strong> 32 KB, capped. An unbounded diagnostic file on a machine you cannot reach is a disk-space bug waiting for the one user who leaves the app running for eleven months.</p>
<p><strong>Best-effort throughout.</strong> Every write can fail silently. A diagnostic that can fail a launch is strictly worse than no diagnostic at all, and it is very easy to write the version that throws on a read-only directory and takes the app down with it.</p>
<p><strong>It records the questions, not just the answers.</strong> This is the part I got wrong first. Logging what happened is not enough when the interesting case is a step that <em>never ran</em>. If the record shows the app asked a question and got an answer, the problem is in what it did next. If the line is absent entirely, the problem is that it never asked, which is a different bug in a different place. Without that distinction the two are indistinguishable from the outside, and I spent nine round trips with a tester learning that the hard way.</p>
<figure><img src="/images/support-without-accounts.svg" alt="What the app knows about a user: nothing on a server, a bounded local diagnostic file, and a payment receipt held by the processor" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>The record lives on the user's machine, and only moves if they choose to send it.</figcaption></figure>
<h2 id="instrument-first-then-fix">Instrument first, then fix</h2>
<p>The habit that came out of that: when a bug arrives that I cannot reproduce, the first change I ship is not an attempt at a fix. It is the thing that will tell me which of two explanations is true.</p>
<p>That feels like a delay. It is faster nearly every time, because the alternative — guessing, shipping a plausible fix, and asking a volunteer to try again — costs a full round trip per guess, and a round trip with a real person is a day, not a minute. Three guesses is a week. One instrument is an afternoon.</p>
<p>It has a second benefit I did not anticipate. A fix shipped on a guess, which appears to work, leaves you unsure forever whether you fixed the bug or moved it. A fix shipped against a recorded sequence of events is a fix you can prove. When the bug is in a path that touches somebody's data, "it seems fine now" is not a standard I am willing to ship against — <a href="/blog/the-half-second-that-left-a-locked-note-in-the-clear/">the locked-note race</a> is the case that settled that for me permanently.</p>
<h2 id="support-that-happens-inside-the-app">Support that happens inside the app</h2>
<p>The cheapest support ticket is the one that never gets written, and with no team to answer them, that stops being a platitude and becomes the design constraint.</p>
<p>So the app tries to explain itself at the exact moment it fails. The clearest example: pasting from the clipboard history needs the macOS Accessibility permission, and without it the paste simply cannot happen. The old behaviour was to close the popup and do nothing — which is indistinguishable from broken software, and generates an email that begins "your clipboard doesn't work". Now it names the missing permission, offers to open the right settings pane, and points out that the entry is already on your clipboard so you can paste it yourself. <a href="/blog/why-a-mac-app-asks-for-accessibility/">Why a Mac app asks for Accessibility</a> exists for the same reason: the question is predictable, so answer it before it is asked.</p>
<p>Every silent failure is a support ticket with a delay on it. That is the rule, and it has changed how I write error paths more than any other single idea in the project.</p>
<h2 id="the-refund-policy-is-an-admission">The refund policy is an admission</h2>
<p>14 days, no reason needed, no proof of uninstall.</p>
<p>That last clause is not generosity. It is honesty about capability. I could not verify an uninstall if I wanted to — there is no phone-home, so there is nothing to observe. A policy demanding proof I cannot check would be theatre, and the sort of theatre that makes a person feel accused on their way out the door.</p>
<p>The same absence shapes what a refund <em>tells</em> me. With no analytics, a cluster of refunds mentioning the same feature is one of the very few real signals I get about what the app is like to use. It is a terrible instrument — tiny sample, self-selected, arriving only from people annoyed enough to act. It is also nearly all of it, along with email, and I would rather work from a biased sample than hold a database of everything everyone does inside their own notes.</p>
<p>That is the trade, stated plainly. I know less about my users than any product manager would consider acceptable, and in exchange the app can promise something almost nobody else in this category can: it makes one network request, ever, and it is a check for a new version. Everything else stays on your Mac, including the record of what went wrong.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Privacy</category>
      <category>Support</category>
    </item>
    <item>
      <title>Signing and notarising, from the developer&#x27;s side</title>
      <link>https://cyanote.app/blog/signing-and-notarising-from-the-developers-side/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/signing-and-notarising-from-the-developers-side/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>Ninety-nine dollars a year, a certificate and an automated malware scan. What Apple actually asks of an independent developer shipping outside the App Store.</description>
      <content:encoded><![CDATA[<p>Every Mac app you download outside the App Store has been through the same pipeline: signed with a Developer ID certificate, uploaded to Apple, scanned, issued a ticket, and stapled. Skip any of it and macOS greets your users with <a href="/blog/macos-cannot-verify-this-app/">a warning that it cannot verify the app</a>, which is where a good percentage of them stop.</p>
<p>I have written the buyer's side of that warning already. This is what it looks like from the other end.</p>
<h2 id="what-the-99-buys">What the $99 buys</h2>
<p>An identity on file with Apple, and the certificate that proves it.</p>
<p>Enrolling in the Developer Program is $99 a year. What you get, for the purposes of shipping outside the App Store, is a <strong>Developer ID Application</strong> certificate — the thing that signs a binary such that macOS can say who shipped it and confirm nothing has been altered since.</p>
<p>That is the whole of it. Not a review, not a listing, not a store. The right to have your name attached to a file in a way the operating system will accept.</p>
<p>Two consequences people outside this get wrong. It is <strong>not</strong> a quality bar — nobody at Apple looked at Cyanote. And it is <strong>not</strong> free of teeth: a Developer ID can be revoked, and a revoked certificate takes every copy of your app with it, on every machine, immediately. The identity is the point. Your name is the collateral.</p>
<h2 id="the-four-variables">The four variables</h2>
<p>A production build here needs four environment values, and the shape of them says a lot about the process:</p>
<pre><code>APPLE_SIGNING_IDENTITY   Developer ID Application: Name (AB12CD34EF)
APPLE_ID                 the account email
APPLE_PASSWORD           an app-specific password
APPLE_TEAM_ID            ten characters</code></pre>
<p>The third is the interesting one. You cannot notarise with your actual Apple account password — you generate an <strong>app-specific password</strong> at appleid.apple.com, a one-purpose credential that exists so an automated build is not carrying the keys to your entire Apple identity. Good design. It also means the credential is a string that a script needs and a human generated, which is exactly the kind of thing that ends up pasted into a shell history at midnight.</p>
<p>Locally, none of this is needed. Development builds are signed with a self-signed certificate called <code>cyanote-dev</code>, which macOS accepts on the machine that made it and nowhere else. Two paths, deliberately: the dev one is fast and offline, the production one is slow and talks to Apple. Conflating them means every test build waits on a network round trip.</p>
<h2 id="build-sign-notarise-staple-verify">Build, sign, notarise, staple, verify</h2>
<p>The production script does five things in order, and every one of them can fail in a way worth handling.</p>
<p><strong>Build universal.</strong> arm64 and x86_64 in one binary, so the app runs natively on Apple Silicon and on the Intel Macs people are still perfectly happy with. No Rosetta, no second download, no "which one do I want" on the download page. It doubles the compile time and I would not trade it — <a href="/blog/software-for-an-older-mac/">an older Mac</a> is a large part of who this app is for.</p>
<p><strong>Sign</strong> with the Developer ID identity.</p>
<p><strong>Notarise.</strong> Upload the build to Apple, which runs an automated malware scan and, if it passes, issues a ticket. This takes anywhere from a couple of minutes to considerably longer, entirely outside your control, at whatever hour you decided to cut a release.</p>
<p><strong>Staple.</strong> Attach the ticket to the file itself, so a Mac can verify it without asking Apple anything. This is the step that matters for the promise the app makes about working offline: an app that had to phone Apple to check its own notarisation on first launch would be a different app. Stapled, the check is local. Skip stapling and everything looks fine on your machine — which has already cached the result — and fails on a fresh one with no network.</p>
<p><strong>Verify, and refuse to continue if it fails.</strong> <code>spctl</code> has to say <em>accepted, source=Notarized Developer ID</em> for both the DMG and the app inside it. Both, because they are separately notarised objects and it is entirely possible to staple one and not the other. The script exits rather than uploading something that will greet a buyer with a warning.</p>
<figure><img src="/images/notarise-pipeline.svg" alt="The production release path: build universal, sign with Developer ID, notarise with Apple, staple the ticket, verify with spctl, publish" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>The check runs locally on the user's Mac because the ticket is stapled to the file. That is what keeps a first launch offline.</figcaption></figure>
<h2 id="the-step-that-needed-a-human">The step that needed a human</h2>
<p>For a while, the release could not run unattended. One step wanted the app-specific password typed at the keyboard.</p>
<p>That sounds minor. It is the difference between a release being a command and a release being an occasion. A process with a human step in the middle gets run less often, which means fixes sit in <code>main</code> waiting for a big enough batch to justify the ceremony — and batching changes is how a release becomes risky. The bug you shipped is somewhere in eleven commits instead of one.</p>
<p>Getting the human out of it is now, in my head, a first-class feature rather than tooling housekeeping. The whole thing is one command that builds, notarises, publishes the update payload, cuts the notes-only release, deploys the site, and pushes the tag. It is safe to re-run: every step after the build checks whether it already happened, because the failure mode you actually hit is a release that dies three-quarters of the way through on a network timeout.</p>
<p>It also refuses to start if <code>CHANGELOG.md</code> has no section for the version being released — the <a href="/blog/where-your-notes-actually-live/">same text the app shows</a> before anyone accepts an update. A release with no notes is not a release anyone should accept.</p>
<h2 id="a-detail-that-took-an-afternoon">A detail that took an afternoon</h2>
<p>Building the DMG briefly opens a Finder window. It has to — the disk image's layout is configured by actually mounting it and arranging it.</p>
<p>Harmless, and deeply irritating when it happens on every dev build while you are working. So it happens only on production builds now, which is a two-line change that meaningfully improved my day and would never appear in any changelog.</p>
<p>The other one: notarising the DMG and notarising the app inside it are separate operations, and a stapled DMG containing an unstapled app passes a casual check on a machine that has already seen the app. That is the class of bug where the only honest test is a fresh Mac with no network — which is the test I now run, because everything else confirms what you already believe.</p>
<h2 id="windows-in-comparison">Windows, in comparison</h2>
<p>The Windows build exists, and is not on sale, and one reason is that the equivalent process there is worse in an instructive way.</p>
<p>Authenticode signing has no $99 flat rate. It is a certificate from a commercial authority, priced per year, with identity validation attached, and until recently the norm was a physical hardware token that someone posts to you — which makes automated CI signing an interesting problem involving a USB device plugged into something. Cloud signing services have improved this a great deal. It is still several times the friction of Apple's process, and Apple's process involves a mandatory malware scan by a company that can revoke your identity.</p>
<p>I say that as someone who complains about Gatekeeper regularly. Having now done both, $99 and a stapled ticket is the better arrangement, and the <a href="/pricing/">same $10 licence will cover Windows</a> when it ships.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>macOS</category>
      <category>Security</category>
    </item>
    <item>
      <title>One SQLite file, and the whole data model</title>
      <link>https://cyanote.app/blog/one-sqlite-file-the-whole-data-model/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/one-sqlite-file-the-whole-data-model/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>Fifteen tables, 26 shipped migrations and a lock file that refuses to let me edit history. A tour of where your work sits, and what keeps it there.</description>
      <content:encoded><![CDATA[<p>Everything Cyanote holds — every note, task, habit tick, calendar event and clipboard entry — lives in one SQLite file on your disk. Fifteen tables. You can copy it to a USB stick while the app is running and open it on another Mac.</p>
<p>That is the property the whole app is built around, so it is worth showing what is actually in there.</p>
<h2 id="the-fifteen-tables">The fifteen tables</h2>
<p>They group into five areas, which is roughly how the app grew.</p>
<p><strong>Notes.</strong> <code>folders</code>, <code>notes</code>, <code>tags</code>, <code>note_tags</code>, <code>attachments</code>, <code>note_links</code>. A note holds its document as JSON, plus a plain-text copy for searching. <code>note_links</code> is what makes <code>[[</code> work in both directions — it records that A points at B, so B can show a backlink without anybody scanning every note to find out. <code>notes</code> also points at itself through <code>parent_id</code>, which is how a note nests inside another note rather than sprawling across the sidebar.</p>
<p><strong>Tasks.</strong> <code>todos</code>. One table. Priority, due date, reminder time as epoch milliseconds. The board view and the list view are the same rows read two ways — there is no <code>board</code> table, because a card and a to-do were never different things and modelling them separately would have created a synchronisation problem out of nothing.</p>
<p><strong>Time.</strong> <code>calendar_events</code>, <code>note_calendar_links</code>, <code>calendar_sources</code>. The last one holds subscribed iCal URLs, which is how Google Calendar works here without a sign-in: you paste an address, the app fetches it.</p>
<p><strong>Habits.</strong> <code>habits</code>, <code>habit_logs</code>, <code>routines</code>. A log row per tick, not a counter — so a streak is derived, never stored, and filling in last Tuesday is an insert rather than a repair of some running total that has been wrong since March.</p>
<p><strong>Clipboard.</strong> <code>clipboard_history</code>, <code>clipboard_pinned</code>. The part that grows fastest, and the part that <a href="/blog/when-the-clipboard-ate-the-database/">taught me the most painful lesson in the project</a>.</p>
<p>Fifteen tables for an app that covers notes, tasks, a board, a calendar, habits, routines and a clipboard manager. Not because I was being clever — because most of those things are lists of dated rows, and the honest schema for a list of dated rows is a list of dated rows.</p>
<figure><img src="/images/sqlite-data-model.svg" alt="The fifteen tables grouped into notes, tasks, time, habits and clipboard, with the FTS5 index kept in step by triggers" width="1200" height="500" loading="lazy" decoding="async" /><figcaption>One file. The search index is derived, which is why a backup deliberately leaves it out.</figcaption></figure>
<h2 id="the-search-index-is-not-data">The search index is not data</h2>
<p><code>notes_fts</code> arrived in migration 18: an FTS5 virtual table, kept in step with <code>notes</code> by triggers. You type, the trigger fires, the index updates. Search reads the index, not the notes.</p>
<p>Two rules fall out of that and both were learned the hard way.</p>
<p><strong>Never back it up.</strong> A backup walks the user tables, and a virtual table's shadow tables look exactly like user tables from a distance. Include them and a restore writes rows into an index that is simultaneously being rebuilt by the triggers, which produces corruption of the particularly annoying kind — the data is fine, the search results are quietly wrong. So the backup filters virtual tables and their shadows out, and a restore lets the triggers rebuild the index from the notes. The index is derived. Derived things are recomputed, not restored. <a href="/blog/backing-up-local-notes/">The backup format</a> has the user-facing side.</p>
<p><strong>Never hand FTS5 raw user input.</strong> Type <code>C++</code> into a search box and FTS5 sees operators, not text. Ordinary punctuation — a hyphen, a quote, a colon — turns a search into a syntax error or, worse, a different query than the one asked for. Everything goes through a function that builds a MATCH expression properly. The <a href="/blog/searching-your-own-notes/">three kinds of search</a> post covers what that feels like from the outside.</p>
<h2 id="the-lock-file-that-refuses-to-let-me-lie">The lock file that refuses to let me lie</h2>
<p>Here is the rule that governs everything else: <strong>a migration runs once per database, forever.</strong></p>
<p>The plugin records which version a database has reached. Editing a migration that has already shipped does nothing at all for the people who ran it, and everything for the person installing tomorrow. You end up with two populations, both on "version 19", with different schemas. Every bug report after that is unreproducible, and you will not suspect the migration, because it is right there in the source saying what you meant.</p>
<p>So there is a file, <code>migrations.lock</code>, with one line per shipped migration: version, description, and a SHA-256 of its canonical content — byte-exact, whitespace included. A check runs on every build. Edit a shipped migration and the build fails.</p>
<pre><code>   1  424a2480…  initial schema
  14  c46a8c60…  locked notes: is_locked flag
  18  29ed172d…  full-text search index over notes (FTS5)
  22  6dfa0592…  index clipboard history for paging and dedup
  26  6d52f7dd…  clipboard image thumbnails</code></pre>
<p>Twenty-six shipped, at the time of writing. The file's own comment includes the instruction that matters most: never hand-edit a hash to make the check pass. That is the exact failure this exists to catch, and it is a five-second fix that produces a six-month bug.</p>
<p>I like this file more than almost anything else in the project. It is thirty lines of tooling that converts a mistake I would definitely make into a build error I cannot ignore.</p>
<h2 id="indexes-and-one-i-nearly-added">Indexes, and one I nearly added</h2>
<p>Migration 25 added three indexes: <code>notes(parent_id)</code>, <code>note_tags(tag_id)</code>, <code>note_links(target_note_id)</code>. All three cover lookups whose column was not the leading column of any existing key. The parent lookup went from 7.1ms to 0.007ms on a 10,000-note database — a thousandfold, for one line of SQL, which is the sort of ratio that makes you want to add indexes everywhere.</p>
<p>Which is the trap. A fourth index looked equally obvious — one covering the sidebar's own list query — and it was wrong, because that query already had a plan SQLite was happy with, and the index would have cost a write on every save to speed up a read that was not slow. The migration carries a comment explaining why it is not there, with the numbers. Comments about what you deliberately did not do age better than comments about what you did.</p>
<p>The rest of that performance story — where the sidebar was actually spending its time — is <a href="/blog/the-sidebar-read-every-note-to-draw-a-list/">its own post</a>, and it was not the indexes.</p>
<h2 id="why-it-matters-that-it-is-one-file">Why it matters that it is one file</h2>
<p>Because you can pick it up.</p>
<p>A database that is one file, with no server, no proprietary container and no sidecar directory, is a database you can copy, move to an external drive, keep in a synced folder, and back up by any means you already trust — Time Machine included, no plugin required. Settings will move it for you. Nothing about the app cares where it sits.</p>
<p>It is also the answer to the uncomfortable question every app in this category should be asked: what happens when the developer stops. SQLite is a public format with a thirty-year support commitment and readers in every language there is. If Cyanote vanished tomorrow, your work is a <code>.db</code> file and <code>SELECT * FROM notes</code> gets it out — no export feature required, no cooperation from me needed. <a href="/blog/what-happens-when-your-notes-app-shuts-down/">What happens when your notes app shuts down</a> is the version of that argument written for people who do not care what a table is.</p>
<p>Fifteen tables and a lock file is not an exciting architecture. It is the one that survives me.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Local-first</category>
      <category>Backups</category>
    </item>
    <item>
      <title>It worked in dev and was broken in every build</title>
      <link>https://cyanote.app/blog/it-worked-in-dev-and-was-broken-in-every-build/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/it-worked-in-dev-and-was-broken-in-every-build/</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0000</pubDate>
      <description>The Format button failed in every shipped copy and worked perfectly in development. Type checking, linting, the tests and CI all passed. Here is the gap.</description>
      <content:encoded><![CDATA[<p>The Format button on a code note was broken for six of the seven languages it offers, in every built copy of the app, for weeks.</p>
<p>It worked perfectly in development. On every machine it was ever tried on. Type checking passed, the linter passed, the test suite passed, CI passed.</p>
<p>This is my favourite bug in the project, because everything that was supposed to catch it did its job correctly and none of them could have.</p>
<h2 id="the-failure">The failure</h2>
<p>Clicking Format on a CSS note produced: <em>Module name, 'prettier/plugins/postcss' does not resolve to a valid URL.</em></p>
<p>Only JSON worked. And only by accident — that path returns early on the browser's own <code>JSON.parse</code> before it ever reaches the loader that was broken. One of seven working, for a reason unrelated to the six that did not.</p>
<p>The cause was a single annotation. The formatter's plugin path was assembled as a template literal and marked with a comment telling the bundler not to analyse it. That comment is a real tool with real uses; it means "I know this looks like an import, leave it alone".</p>
<p>The bundler duly left it alone. It emitted no chunk for any plugin, and the shipped application contained the bare string <code>prettier/plugins/</code> and a request, at runtime, for the webview to resolve that as a URL. Which it cannot. Browsers resolve URLs; they do not resolve npm package names. There is no package directory inside a Mac app.</p>
<h2 id="why-nothing-caught-it">Why nothing caught it</h2>
<p>Here is the part worth the post.</p>
<p><strong>In development, the dev server resolves bare package names itself.</strong> That is one of the main things it is for. So during development the import worked, the formatter loaded, and the button did what it said. There was never a moment where the bug was visible on my machine.</p>
<p><strong>Type checking cannot see it.</strong> The specifier was a string built at runtime. As far as the type system is concerned, a string is a string.</p>
<p><strong>The linter cannot see it.</strong> The annotation that caused the problem is the documented way to suppress exactly the analysis that would have flagged it. I had explicitly told the tooling not to look.</p>
<p><strong>The tests cannot see it.</strong> They run against the source, in the same environment as the dev server, with the same resolution. A test asserting that Format produces formatted CSS passes, because in that environment it does.</p>
<p><strong>And CI cannot see it</strong>, because CI ran the same three things.</p>
<p>Every one of those tools examines the source. The bug existed only in the <em>output</em> — in the artefact produced by the build, which nothing in the pipeline ever opened. There was a hole in the shape of "the thing we actually ship", and four layers of quality tooling sat neatly around it.</p>
<figure><img src="/images/dev-vs-built.svg" alt="Development resolves package names on the fly; the built app must resolve a URL. Type checking, linting and tests all read the source, so none of them see the output" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>Four checks, all reading the same side of the build.</figcaption></figure>
<h2 id="the-fix-and-the-better-fix">The fix, and the better fix</h2>
<p>The immediate repair is dull: literal specifiers, one per language, in a map. A typo becomes a type error instead of a runtime one, and each plugin stays a separately loaded chunk so the formatter is still kept off the startup path — <a href="/blog/why-a-notes-app-should-open-instantly/">an app that opens instantly</a> does not load a code formatter to show you a note. That last part got verified rather than assumed: no formatter chunk is reachable from the entry bundle, only from the code editor.</p>
<p>The fix that matters is the other one. A script now reads the <em>built</em> chunks and fails the build if any dynamic import still carries a bare package name. It is wired into the build command itself, which is the step every path runs through — the dev build, the production release, CI. There is no way to produce something shippable that skips it.</p>
<p>And it was verified the only way such a thing can be: by restoring the broken code and watching the build refuse it. A check you have never seen fail is a check you are only assuming works. I have shipped a green light attached to nothing before, and it is a considerably worse position than having no light at all.</p>
<h2 id="the-same-gap-twice-more">The same gap, twice more</h2>
<p>Once you have the shape — <em>the thing you verify is not the thing you ship</em> — it turns up everywhere.</p>
<p><strong>Notarisation.</strong> A stapled disk image containing an unstapled app passes every check on the machine that built it, because that machine has already cached the result. It fails on a stranger's Mac with no network. The only honest test is a machine that has never seen the app, which is now <a href="/blog/signing-and-notarising-from-the-developers-side/">part of the release path</a> rather than something I do when I remember.</p>
<p><strong>An image encoder that substitutes silently.</strong> Asking a canvas for WebP does not fail when WebP is unavailable; it hands back a PNG and says nothing. Everything downstream then believes it has a WebP. <a href="/blog/when-the-clipboard-ate-the-database/">The clipboard work</a> checks what it actually received rather than what it requested, for that reason.</p>
<p>Both are the same mistake in different clothes: confirming the input to a process instead of the output.</p>
<h2 id="the-two-backend-design-and-the-risk-i-took-on-purpose">The two-backend design, and the risk I took on purpose</h2>
<p>There is a deliberate version of this divergence in Cyanote, and it is worth admitting.</p>
<p>All data access goes through one interface with two implementations: SQLite when running as the real app, and a browser-storage version when running as a plain web page. That means the entire application runs in an ordinary browser tab — which is how <a href="/blog/customising-a-notes-app/">the screenshots on this site are made</a>, why they show real software rather than a mockup, and why a UI change can be tried in a second instead of a rebuild.</p>
<p>It is also, structurally, exactly the situation that produced the Format bug: a development environment that is not the shipping environment. I keep it because the benefit is large and the risk is manageable, on one condition — every data change has to be implemented in both backends and the rules they follow have to match. Search is the sharpest case: the browser version mirrors the same matching rules in JavaScript that SQLite's full-text index applies, specifically so a search behaves identically in both. When they drift, you get a bug that only exists in the shipped app, and you get it in the part where <a href="/blog/one-sqlite-file-the-whole-data-model/">everything is stored</a>.</p>
<p>I am not recommending this to everyone. I am saying it is a trade I made with my eyes open, and the mitigation is not discipline — it is that the build now inspects its own output.</p>
<h2 id="the-rule-i-write-on-things-now">The rule I write on things now</h2>
<p>Every check in a pipeline should be asked one question: <em>does this look at the artefact, or at the source it came from?</em></p>
<p>Both are worth having. Only one of them can tell you what your users will get. For a desktop app, where a bad build reaches people through an auto-updater and cannot be rolled back the way a website can, the second sort is the one that matters, and it is almost always the one missing.</p>
<p>Six of seven languages, in every shipped copy, working flawlessly on my machine. I would have bet money that button was fine.</p>]]></content:encoded>
      <category>Builder&#x27;s log</category>
      <category>Testing</category>
      <category>Development</category>
    </item>
    <item>
      <title>Write it down the first time you work it out</title>
      <link>https://cyanote.app/blog/writing-your-own-runbooks/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/writing-your-own-runbooks/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You have solved the same problem three times. Each time it took forty minutes. The note that would have made it four takes ninety seconds to write.</description>
      <content:encoded><![CDATA[<p>Renewing the certificate. Restoring the database from a backup. Getting the printer to talk to the network again. Resetting the thing after the update breaks it. The specific sequence of clicks that makes the tax portal accept the file.</p>
<p>Each of these took you forty minutes the first time, mostly spent finding the answer. Each of them takes about forty minutes every subsequent time, because you did not write the answer down, and the reason you did not is always the same: at the moment you solved it, you were relieved and late and moving on.</p>
<h2 id="the-shape-of-the-loss">The shape of the loss</h2>
<p>The tell is a specific feeling. You start a task and think <em>I have done this before</em> — and then discover you remember having done it, and not how.</p>
<p>Partial memory is worse than none, because it makes you confident enough to start without looking it up, and then you spend twenty minutes retracing your own steps to reach the point where you concede you have forgotten. The knowledge decayed into an index entry with no page behind it.</p>
<p>This happens with anything you do more than once and less than monthly. More often than monthly and you retain it; less often than yearly and you accept looking it up. The band in between is where a personal runbook pays, and it is a wide band.</p>
<h2 id="the-ninety-seconds">The ninety seconds</h2>
<p>Immediately after it works, before you move on. Not later.</p>
<p><strong>The exact commands or clicks, in order.</strong> Copied, not paraphrased. The real flags, the real menu names. A paraphrase is a description of the solution; the literal steps are the solution.</p>
<p><strong>What did not work.</strong> One line. The obvious approach that failed, so next time you skip it — this frequently saves more time than the working steps, because next time you will have the same wrong instinct.</p>
<p><strong>The thing that was not obvious.</strong> There is always one. The setting in a different menu, the order that matters, the fact that it has to be done twice. This is the line that took you thirty of the forty minutes.</p>
<p><strong>Where you found the answer</strong>, if it came from somewhere. A link, an issue number, a person's name.</p>
<p>Ninety seconds while it is fresh. The same window as <a href="/blog/writing-an-incident-review/">an incident timeline</a> and for the same reason: understanding starts unloading the moment the pressure comes off.</p>
<figure><img src="/images/note.webp" alt="A code note with the actual commands, the flags, and the line explaining the part that was not obvious" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Copied, not paraphrased. A paraphrase is a description of the solution. The literal steps are the solution.</figcaption></figure>
<h2 id="write-it-for-a-stranger">Write it for a stranger</h2>
<p>The mistake that makes runbooks useless is writing them for the person you are right now, who has all the context.</p>
<p>"Restart the service" is a note by someone holding the whole picture. In eight months you will not know which service, on which machine, or how one restarts it here. Write the machine, the exact command, and the check that tells you it worked.</p>
<p>The test: could you follow this at 2am, tired, having forgotten everything? That standard sounds excessive for a personal note and it is exactly right, because 2am and having forgotten everything is the realistic condition of use. Nobody consults a runbook on a calm afternoon when they remember how it works.</p>
<p>Length is not the fix — most good runbooks are eight lines. Specificity is.</p>
<h2 id="what-deserves-one">What deserves one</h2>
<p><strong>Anything you have now done twice.</strong> Twice is the threshold, and it is worth being mechanical about it. The second time you solve something, you have proof it recurs, and you are holding the answer.</p>
<p><strong>Anything that only happens once a year.</strong> Tax filings, renewals, the annual report, the certificate. You will forget completely, guaranteed, and there is no possibility of retaining it.</p>
<p><strong>Anything you do under pressure.</strong> When something is broken and people are waiting, working from a written sequence is dramatically better than improvising from partial memory — that is the whole reason runbooks exist in operations.</p>
<p><strong>Anything involving a system with a bad interface.</strong> Government portals, banking, enterprise software, anything where the correct sequence is arbitrary and undiscoverable. These are pure runbook material, because nothing about the interface will remind you.</p>
<h2 id="where-they-belong">Where they belong</h2>
<p><strong>Personal ones in your own notes.</strong> Findable by search, because you will not remember what you called it — you will search for the error message or the tool name. That means <a href="/blog/searching-your-own-notes/">search has to reach inside code blocks</a>, which is where the commands are.</p>
<p><strong>Shared ones in the shared place.</strong> If a colleague could need it, it belongs in the team's documentation. Keeping operational knowledge in a personal file makes you a bottleneck, and being a bottleneck feels like job security and is actually just being interrupted a lot — the thing <a href="/blog/handing-over-your-work/">a handover document</a> exists to unwind.</p>
<h2 id="when-you-use-it-fix-it">When you use it, fix it</h2>
<p>The maintenance rule, and it is the only one.</p>
<p>Follow your own runbook and something will be slightly wrong — a menu renamed, a flag deprecated, a step no longer needed. Fix it <em>then</em>, in the two minutes you are already there. Not later.</p>
<p>A runbook corrected on each use stays accurate indefinitely. One never revisited rots, and a rotted runbook is worse than none: you follow it, it fails halfway, and now you are debugging both the problem and the instructions.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Nobody writes these at the moment of relief. That is the entire difficulty and no amount of agreeing with the principle changes it.</p>
<p>The one intervention that works is making the writing take ninety seconds instead of ten minutes. Paste the commands, add two lines, done. Any attempt at a proper document — a title, a structure, an explanation of the system — is a ten-minute job, and ten-minute jobs do not happen at the moment you have just fixed something and are already late.</p>
<p>Cyanote is a reasonable home for these: code notes with syntax highlighting and language detection for the commands, prose notes with code blocks inline when you need explanation around them, and <code>⇧⌘F</code> searching the body of everything including the code — so the error message you paste today is what finds this note in eighteen months. It is one local database on your own Mac, which for the set of instructions that make your own machines and accounts work is where it should be.</p>]]></content:encoded>
      <category>Method</category>
      <category>How-to</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>Writing an incident review people will read</title>
      <link>https://cyanote.app/blog/writing-an-incident-review/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/writing-an-incident-review/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most postmortems get filed and never opened again. The ones that change anything share a structure, and it is not the template your company hands you.</description>
      <content:encoded><![CDATA[<p>The outage ends at 3am. Everyone is relieved, exhausted, and quietly certain they will remember what happened. Nine days later somebody writes a document from Slack scrollback and half-memories, it gets a meeting, it gets filed, and nothing changes.</p>
<p>That is the normal outcome, and the causes are structural rather than a failure of anyone's diligence.</p>
<h2 id="why-most-reviews-change-nothing">Why most reviews change nothing</h2>
<p><strong>Written too late.</strong> Memory of an incident degrades unusually fast, because most of it was formed under stress and much of it was wrong at the time. What survives at day nine is a tidy narrative in which the sequence made sense — which is precisely the version that contains no lessons.</p>
<p><strong>The timeline is reconstructed instead of recorded.</strong> A timeline assembled afterwards has hindsight in every line. "At 02:14 we realised it was the cache" is nearly always wrong; at 02:14 someone <em>suspected</em> the cache, among three other theories. The suspicion and the alternatives are the interesting part, and reconstruction deletes them.</p>
<p><strong>Blameless is stated but not practised.</strong> If the document says blameless and the meeting looks for who deployed it, everyone learns which of the two is real, and the next review will be written defensively. A defensive review has no useful content.</p>
<p><strong>The actions are aspirational.</strong> "Improve monitoring" is not an action. It has no owner, no date, and no definition of done, and it will be on the next review too.</p>
<p><strong>Root cause, singular.</strong> Complex systems do not have a root cause. They have a set of conditions that were individually survivable, and the search for the one cause stops the investigation at whatever is easiest to blame — usually a person or the last change.</p>
<figure><img src="/images/incident-timeline.svg" alt="One note holding the timeline, what people believed at the time, and what actually changed afterwards" width="1200" height="490" loading="lazy" decoding="async" /><figcaption>Recorded as it happens, including the wrong theories. Reconstructed later, the wrong theories are the first thing to disappear.</figcaption></figure>
<h2 id="record-during-not-after">Record during, not after</h2>
<p>The highest-leverage change, and it costs one person's partial attention.</p>
<p>During an incident, someone writes timestamped lines as things happen. Not analysis — observation:</p>
<pre><code>02:04  alerts on checkout latency
02:09  suspect the deploy at 01:50, start rollback
02:14  rollback done, no change — so not the deploy
02:20  noticed cache hit rate fell at 01:30, before the deploy
02:31  restarted the cache nodes, latency recovering
02:46  green. leaving the rollback in place, unclear why 01:30</code></pre>
<p>Six lines, written in the moment, and they contain something no later reconstruction can: <strong>the wrong theory, and how long it cost.</strong> Twelve minutes went to the deploy hypothesis. That is a finding — it says something about what the dashboards were showing and what people reached for first — and it is invisible in every version of this document written the following week.</p>
<p>The person taking notes should not be the person fixing. It is a real role, it is the easiest one to fill, and it is what makes the difference between a review with content and a review with a narrative.</p>
<h2 id="the-five-sections">The five sections</h2>
<p>Longer templates exist. These five carry the value.</p>
<p><strong>What people experienced.</strong> Not "elevated 5xx" — "customers could not check out for 42 minutes, about 900 attempts failed." Impact in human terms, at the top, because it is the only part most readers will read.</p>
<p><strong>The timeline.</strong> As recorded, including the wrong turns, with times. If it is tidy, it has been laundered.</p>
<p><strong>What made this possible.</strong> Plural, deliberately. The change that triggered it, the monitoring that did not fire, the alert that fired and was muted last month for good reasons, the runbook that was out of date, the fact that only one person understood the system. Every one of these is a contributing condition, and every one is an opportunity. Naming one of them "the" root cause discards the rest.</p>
<p><strong>What made it hard to fix.</strong> Frequently more valuable than the cause. Nobody could find the dashboard, the on-call did not have access, the rollback took nine minutes, the logs were in a format nobody could read at 2am. Time-to-recover is where most of the real damage is, and it is the part most reviews barely mention.</p>
<p><strong>What we are changing.</strong> Two or three items, each with a name and a date. Not eleven. Eleven means none, and everyone in the room knows it.</p>
<h2 id="the-blameless-part-done-properly">The blameless part, done properly</h2>
<p>Not "we will not say who". That is silence, not blamelessness.</p>
<p>It is: <strong>assume everyone acted sensibly given what they knew at the time, and ask what made the sensible action wrong.</strong> Somebody deployed on a Friday afternoon — why did that seem fine? Somebody muted the alert — what was it doing that made muting reasonable? Those questions produce fixable answers. "Who deployed it" produces a person who will be more careful and a system that is exactly as fragile as before.</p>
<p>The practical test is whether people write down their own mistakes in the timeline. If they do, you have it. If the timeline is written in the passive voice throughout, you do not, whatever the template says.</p>
<h2 id="what-happens-afterwards">What happens afterwards</h2>
<p>Two things, neither of which is the meeting.</p>
<p><strong>The actions become real dated tasks with owners</strong>, in whatever system that team actually uses, that day. An action item living only inside a document is a wish. This is the step that separates teams whose reviews change things from teams whose reviews accumulate.</p>
<p><strong>Somebody reads the last five before writing the sixth.</strong> The single most valuable habit in this whole area, and almost nobody does it. Repeats are the signal — the same contributing condition showing up three times means the fix from last time did not happen or did not work, and that pattern is invisible one document at a time. It is the same reason <a href="/blog/keeping-a-decision-journal/">a decision journal only works if you reread it</a>.</p>
<p>Which means the reviews have to be findable by content, not filed by date. You will search for "cache" or "rollback", not for "the March one".</p>
<h2 id="the-personal-version">The personal version</h2>
<p>Not everyone works somewhere with a process. The same shape works for one person.</p>
<p>Anything that went badly and took real time — a bad deploy, a lost afternoon, a data problem you had to unpick — is worth six lines: what happened, what you thought at the time, what actually caused it, what made it hard to fix, one thing to change. Ten minutes, once.</p>
<p>A year of those is a remarkably good picture of how your own systems fail, and it is the material that turns "I have been doing this for five years" into something more useful than time served.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you run incidents at any scale, use an incident management tool. Timeline capture, paging, status pages and action tracking are a real product category and they do things a notes app will not.</p>
<p>For a small team, a solo operator, or the personal version, the shape above is most of the value and it needs a text editor and the discipline to write during rather than after.</p>
<p>Cyanote has incident review and retro templates in the <code>/</code> menu — the five sections in order, so the document starts as prompts rather than a blank page. Notes hold timestamped lines, code blocks with the actual error, and images of the graph, all in one document; <code>⇧⌘F</code> searches the body of every review you have written, which is what makes "have we seen this before" a question you can answer in four seconds. It is one local database on your own Mac, which for the personal version is the point — your record of how things fail is yours, not your employer's.</p>]]></content:encoded>
      <category>Incidents</category>
      <category>Method</category>
      <category>Work</category>
    </item>
    <item>
      <title>When a notes app is the wrong place for a long document</title>
      <link>https://cyanote.app/blog/writing-a-long-document-in-a-notes-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/writing-a-long-document-in-a-notes-app/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A notes app is excellent for the first 3,000 words of anything and starts failing quietly after that. Here are the four points where it breaks.</description>
      <content:encoded><![CDATA[<p>Long documents usually start in a notes app, and they should. It is the lowest-friction place to begin, the structure has not been decided yet, and opening a word processor to write two paragraphs is a commitment nobody wants to make at that stage.</p>
<p>The problem is that nothing tells you when to move. There is no error, no warning, no point at which the app declines. It just gets gradually worse at a job it was never for, and you notice about four days after you should have.</p>
<h2 id="the-four-points-where-it-breaks">The four points where it breaks</h2>
<p><strong>Around 3,000 words: navigation.</strong> Below that you scroll. Above it you need a table of contents, an outline you can jump around in, and the ability to collapse sections to see the shape. A long note with no outline is a document you can only experience linearly, and you cannot think about the structure of something you can only read from the top.</p>
<p><strong>Around 8,000 words: revision.</strong> This is where you need to move section four above section two, see both versions, and change your mind. Notes apps are built for appending, not for restructuring, and the operation you actually want — drag this chapter there — is either missing or is a cut-and-paste with a real risk of loss.</p>
<p><strong>As soon as anyone else reads it: change tracking.</strong> Comments, suggestions, a record of what changed between the version they read and the one they are reading now. This is not a nice-to-have once a document is being reviewed; it is the entire mechanism of collaborative editing, and notes apps have none of it.</p>
<p><strong>Whenever the output format matters.</strong> A submission with a required layout, a citation style, page numbers, a specific typeface. If the document has to <em>look</em> a certain way when it leaves, you are producing a formatted artefact, and that is a different category of software.</p>
<p>If you have hit none of these, stay where you are. Moving early costs more than it saves.</p>
<figure><img src="/images/note.webp" alt="A note with headings, sub-pages and a code block — the shape that carries a document up to a few thousand words" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Excellent for the first few thousand words. The trouble is that nothing tells you when it stopped being the right tool.</figcaption></figure>
<h2 id="what-a-notes-app-is-genuinely-better-at">What a notes app is genuinely better at</h2>
<p>Worth saying, because the answer is not "always use a word processor".</p>
<p><strong>Everything before the first draft.</strong> Fragments, quotes, half-arguments, the paragraph you wrote in the wrong order. Research and thinking are exactly what a notes app is for, and doing them in a word processor produces premature formatting — you start choosing headings for a thing whose shape you do not yet know.</p>
<p><strong>Anything with code in it.</strong> Word processors handle code badly. Smart quotes, autocorrect and automatic capitalisation are actively hostile to a shell command, and no amount of style configuration fully fixes it.</p>
<p><strong>Documents that never leave.</strong> An internal note, a personal essay, a design rationale, a record for yourself. If nobody is reviewing it and nothing depends on the layout, the notes app is fine at 12,000 words and moving is busywork.</p>
<p><strong>The notes <em>about</em> the document.</strong> Which stay behind when you move the prose out, and are the reason you should not delete the note when you migrate.</p>
<h2 id="the-split-that-works">The split that works</h2>
<p>Most people who write long things end up with the same two-place arrangement, and it is worth adopting deliberately rather than discovering.</p>
<p><strong>The notes app holds the thinking.</strong> Research, sources, the outline, the arguments, the offcuts. It stays authoritative for that material for the whole life of the project — including after the document is finished, because it is the part you will want next time.</p>
<p><strong>The document lives in a real document tool.</strong> Once the shape is decided, the prose moves and the notes stay. From then on the notes app is where you go to find the thing you read in March, and the document tool is where the writing happens.</p>
<p>The failure is trying to make one of them do both. Drafting in the notes app past the point it works produces a document you cannot restructure; researching in the word processor produces a folder of half-documents with no way to search across them.</p>
<h2 id="choosing-the-second-tool">Choosing the second tool</h2>
<p>Briefly, since it depends entirely on the document.</p>
<p><strong>Something with a real outline and restructuring.</strong> Scrivener is the long-standing answer on the Mac for book-length work, and the reason is precisely the second failure point above: it is built for moving sections around.</p>
<p><strong>Something with comments and suggestions.</strong> If anyone reviews it, this is the deciding feature and it is why Google Docs and Word own that stage regardless of anything else.</p>
<p><strong>Something with a stable file format</strong>, if the document will outlive the software. Markdown or LaTeX in plain files will be openable in twenty years. A proprietary format may not be, which is the same <a href="/blog/what-happens-when-your-notes-app-shuts-down/">portability question</a> that applies to your notes.</p>
<p><strong>Something with citations</strong>, if you need them. A reference manager plus whatever it integrates with. Doing citations by hand in a long document is a decision you regret exactly once.</p>
<h2 id="two-things-worth-doing-before-you-move">Two things worth doing before you move</h2>
<p><strong>Get the outline right first, in the notes app.</strong> Moving a document with a settled structure is a copy-and-paste. Moving one whose shape is still changing means you will restructure it twice, once in each tool.</p>
<p><strong>Keep the note.</strong> Do not delete the draft when you move it out. It is the record of how the thing was made, it contains the paragraphs you cut and will want back, and it costs nothing to keep. Link it to the finished document so the two ends of the project are connected — a small use of <a href="/blog/linking-notes-without-a-second-brain/">linking</a> that pays off years later when you write the follow-up.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>There is a strain of advice that says you should write everything in one tool, and it is wrong in both directions. Writing your research notes in a word processor is miserable. Writing a book in a notes app is a slow-motion structural problem.</p>
<p>Two tools with a clear boundary is not a failure of tooling. It is what having different jobs looks like.</p>
<p>Cyanote is the first half of that split and does not pretend to be the second. Notes nest into sub-pages, headings give a document structure, <code>[[</code> links connect research to whatever it is for, and full-text search finds a quote you saved eighteen months ago. There is no outline pane, no change tracking, no comments, no citation manager and no page layout — so somewhere around a few thousand words of finished prose, the right move is to take the writing somewhere built for it and leave the thinking where it is.</p>]]></content:encoded>
      <category>Writing</category>
      <category>Notes</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>Why a notes app should open instantly</title>
      <link>https://cyanote.app/blog/why-a-notes-app-should-open-instantly/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/why-a-notes-app-should-open-instantly/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Two seconds is not a performance problem, it is a behaviour problem. What a slow launch actually costs, and the four things that make one slow.</description>
      <content:encoded><![CDATA[<p>A notes app that takes two seconds to open is not slow. Two seconds is nothing; you have waited longer for a kettle without resenting it.</p>
<p>What two seconds is, is <em>long enough to notice</em>. And the thing you do when you notice is decide — quickly, without articulating it — whether the note is worth the wait. Most of the time it is. Some of the time you were only going to write down four words, and four words are not worth a spinner, so you keep them in your head instead and they are gone by lunchtime.</p>
<p>That is the actual cost of a slow launch. Not the seconds. The notes that never got written because opening the app was a decision.</p>
<h2 id="the-four-second-thought">The four-second thought</h2>
<p>Capture has a shelf life. Something occurs to you — a name, a thing you owe someone, a fix you just worked out — and you have a few seconds of willingness before your attention is somewhere else.</p>
<p>Everything that happens in those seconds is competing for the same budget: reaching for the machine, finding the app, waiting for it, finding where to type. A launch that costs two of the four is not taking half your time. It is taking half your <em>willingness</em>, and willingness is the scarce thing.</p>
<p>You can watch this in how people behave rather than what they say. The app that ends up holding the scraps is almost never the most capable one. It is whichever one is already open, or opens fast enough that using it never felt like a decision. Fast is not a nice-to-have in this category; it is most of the product.</p>
<h2 id="what-makes-a-launch-slow">What makes a launch slow</h2>
<p>Four things, roughly in order of how much they cost.</p>
<p><strong>A network request on the critical path.</strong> The app opens, then asks a server something — is this session valid, is the licence current, what changed since last time — and will not draw your notes until it has an answer. On good wifi this is a few hundred milliseconds and nobody notices. On hotel wifi it is a spinner, and on no wifi it is a spinner that eventually times out, which is the worst launch in software: slower when there is <em>nothing to fetch</em>.</p>
<p><strong>Loading everything before showing anything.</strong> Some apps read the whole collection into memory at startup. Fine at 50 notes. Not fine at 5,000, and it degrades exactly as your investment in the app grows, so the app gets worse the more you have used it.</p>
<p><strong>Rendering the world before the window.</strong> Building every sidebar, every list and every panel before painting anything. The fix is boring and known — draw the window, then fill it — but it takes deliberate work that nobody does unless somebody measures.</p>
<p><strong>A runtime that has to start first.</strong> If the app ships its own browser engine, that engine boots before your notes exist. This is the one people argue about, and the honest position is that it is real but smaller than the internet thinks: a well-built Electron app can start fast, and a badly built native one can be slow. It is a handicap, not a verdict.</p>
<figure><img src="/images/startup-path.svg" alt="The steps between clicking an icon and being able to type, with and without a server in the path" width="1200" height="430" loading="lazy" decoding="async" /><figcaption>The first two boxes on the top row are the ones that get slower when the network is bad — which is to say, slower when there is nothing to fetch.</figcaption></figure>
<h2 id="cold-warm-and-the-number-that-matters">Cold, warm, and the number that matters</h2>
<p>If you measure this yourself, measure the right thing.</p>
<p><strong>Cold start</strong> is after a reboot, or after the app has been closed long enough to fall out of the file cache. It is the slowest number and the least frequent.</p>
<p><strong>Warm start</strong> is the one you live with: quitting and reopening in the same session, everything still cached. This is what "open the app to write four words" actually costs, and it is usually a fraction of the cold number.</p>
<p><strong>Time to first useful keystroke</strong> is the only measure that matters, and almost nobody publishes it. Not when the window appears — when you can type and the characters land in the right place and are being saved. Plenty of apps show a window quickly and then swallow the first half-second of typing, which is worse than a longer honest wait, because you have to check whether your words survived.</p>
<p>Test it the way you use it. Quit the app, open it, and start typing immediately. Did every character arrive?</p>
<h2 id="memory-and-why-it-shows-up-as-speed">Memory, and why it shows up as speed</h2>
<p>Idle memory footprint gets discussed as if it were a virtue in itself, and mostly it is not — unused RAM is wasted RAM, and a browser tab you left open probably costs more than any of this.</p>
<p>It matters at the edges, and the edges are where people live. If you keep an app open all day alongside a browser, a chat client, a design tool and a couple of editors, a laptop with 8 or 16 GB starts swapping, and swapping is felt as <em>everything</em> being slow. The app that quietly holds several hundred megabytes to show you a list of notes is not committing a crime; it is spending a shared budget you did not know it was spending.</p>
<p>The mechanism worth understanding is where the browser engine comes from. Apps built on Electron ship their own copy of Chromium, so every such app on your machine is a separate browser. Apps built on the system webview — which is what Tauri does, using WebKit on macOS — use the engine that is already running as part of the OS. It is the same rendering technology either way; the difference is how many copies of it are resident.</p>
<h2 id="what-instant-is-worth-as-a-target">What "instant" is worth as a target</h2>
<p>Under a second to a usable window, on the machine you actually own rather than the developer's.</p>
<p>The reason to hold that line is not benchmark pride. It is that under a second, the app stops being something you <em>open</em> and becomes something that is simply there — the same way a text field on a page you are already looking at is there. Above a second or two, some fraction of your thoughts stop making the journey, and you will never know which ones, because unwritten notes leave no trace.</p>
<p>It is the same argument as <a href="/blog/tracking-habits-without-a-separate-app/">the habit tracker that needs its own icon</a> and the <a href="/blog/mac-app-notes-and-clipboard/">clipboard popup that comes to you</a>: every unit of friction between the impulse and the writing costs you some of the writing, and the losses are invisible.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Startup time is not the most important thing about a notes app. It is a hygiene property, and plenty of excellent apps take a beat to open because they are doing something worth doing — indexing a large library, restoring a real session, rendering a document that deserves it. If an app is slow and you love it, that is a completely defensible trade and I would not switch either.</p>
<p>What is not defensible is being slow <em>because of a server</em>, on a machine that already has all your notes on it. That is a launch delay you are paying for architecture you did not ask for.</p>
<p>Cyanote's startup budget is under a second to a usable window, and it holds because there is nothing to wait for: no session check, no sync handshake, no server in the path. Everything is read from one SQLite database on your own disk, and the app is built with Tauri, so it draws through the WebView macOS already has rather than shipping a browser of its own. With the wifi off it opens in the same time, because the wifi was never part of opening it.</p>]]></content:encoded>
      <category>Performance</category>
      <category>macOS</category>
      <category>Design</category>
    </item>
    <item>
      <title>Why a Mac app asks for Accessibility permission</title>
      <link>https://cyanote.app/blog/why-a-mac-app-asks-for-accessibility/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/why-a-mac-app-asks-for-accessibility/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>It is the broadest permission macOS hands out, it has nothing to do with accessibility, and a clipboard manager genuinely cannot work without it.</description>
      <content:encoded><![CDATA[<p>You install a clipboard manager. It asks for Accessibility permission. The dialog is stern, the settings pane says the app will be able to control your computer, and you are being asked to grant that to something whose job is remembering what you copied.</p>
<p>The reaction is correct. It is the broadest permission macOS hands to a normal app, and being asked for it should make you stop. It is also, for this particular category, genuinely unavoidable — and worth understanding, because "the app asked and I clicked yes" is not a security decision.</p>
<h2 id="what-it-is-actually-called-and-why-the-name-is-wrong">What it is actually called and why the name is wrong</h2>
<p>The setting lives under System Settings → Privacy &amp; Security → Accessibility, and its name is historical. It was built so assistive software — screen readers, switch controls, alternative input devices — could operate the interface on a person's behalf.</p>
<p>Doing that requires two capabilities: <strong>reading the interface of other apps</strong> (what windows exist, what the buttons say, where the focus is) and <strong>sending input to them</strong> (keystrokes, clicks). Which is exactly what any automation tool needs, so macOS reuses the same gate for all of it. A window manager, a text expander, a keyboard remapper, a screenshot annotator and a clipboard manager all end up in the same list as a screen reader.</p>
<p>The name has nothing to do with why most of the apps in that pane are there.</p>
<h2 id="what-granting-it-actually-allows">What granting it actually allows</h2>
<p>Be clear-eyed about this, because it is broad.</p>
<p>An app with Accessibility permission can, in principle: read the contents of other apps' windows including text on screen, see what you are focused on, send keystrokes and clicks to any app, and drive interfaces you are not looking at. It is not a scoped permission — you cannot grant it for one app or one action. It is on or off for that binary.</p>
<p>That is a lot. It is more than the app in front of you probably needs, and macOS gives you no way to give it less.</p>
<p>Two things narrow the risk in practice. It is <strong>per binary</strong>, and macOS ties the grant to the app's code signature — replace or tamper with the app and the permission is revoked until you grant it again, which is a meaningful protection against something being swapped underneath you. And it is <strong>revocable in one click</strong>, in the same pane, at any time.</p>
<figure><img src="/images/clipboard.webp" alt="The clipboard history opening over another app — the paste it performs is a synthesised ⌘V, which is the part that needs the permission" width="1400" height="912" loading="lazy" decoding="async" /><figcaption>Copying from the history to your clipboard needs nothing. Putting it into the app you came from is the part macOS gates.</figcaption></figure>
<h2 id="why-a-clipboard-manager-needs-it">Why a clipboard manager needs it</h2>
<p>The mechanism is worth knowing, because it explains why there is no clever workaround.</p>
<p>Recording what you copy needs no permission at all. The clipboard is a shared system service, and any app can read it. That half is free.</p>
<p>The other half is what you actually want: press a key, pick an old item, and have it <strong>land in the app you were in</strong>. To do that, the manager has to put the item on the clipboard and then send a ⌘V keystroke to the other app. Sending a keystroke to another application is synthesised input, and synthesised input is exactly what the Accessibility gate exists to control.</p>
<p>There is no API that says "paste into the frontmost app, and nothing else". macOS does not offer a narrow version of this permission, so the app has to ask for the broad one to do the narrow thing. That is a platform design decision, not a choice the developer made.</p>
<p>Which means the honest test of an app in this category is not whether it asks — they all must — but whether it <strong>works without it</strong>. Copying a history item to your clipboard so you can paste it yourself with ⌘V requires no permission at all. An app that refuses to function until you grant Accessibility, when the only thing that needs it is the auto-paste convenience, is asking for more than it is spending.</p>
<h2 id="what-to-check-before-you-grant-it">What to check before you grant it</h2>
<p><strong>Does the app tell you why, in specific terms?</strong> "Cyanote needs Accessibility permission to paste for you" is a specific claim about one feature. "This app requires Accessibility to function" is not, and vagueness at the moment of asking is the signal worth reacting to.</p>
<p><strong>Is it signed and notarised?</strong> Notarisation means Apple scanned the binary and the developer is identifiable. It is not a guarantee of good behaviour, and it does raise the cost of shipping something malicious considerably. An unsigned app asking for this permission is a different proposition entirely.</p>
<p><strong>Does it degrade rather than refuse?</strong> The good behaviour is: work without the permission, at reduced convenience, and explain what you would gain by granting it.</p>
<p><strong>Can you check what it does with it?</strong> The connections an app makes are <a href="/blog/apps-that-do-not-phone-home/">observable</a>. An app with broad local permission and no network activity has a much smaller blast radius than one with both.</p>
<p><strong>Do you need the feature?</strong> If you are content to press ⌘V yourself, do not grant it. That is a real option and most apps in this category will keep working.</p>
<h2 id="the-permission-it-should-not-be-confused-with">The permission it should not be confused with</h2>
<p>Two others come up and are genuinely different.</p>
<p><strong>Input Monitoring</strong> lets an app see keystrokes <em>going to other apps</em> — that is keylogging capability, and it is a higher bar. A clipboard manager should not need it. Global hotkeys generally do not require it either. If something in this category asks for Input Monitoring, ask why, specifically.</p>
<p><strong>Screen Recording</strong> lets an app capture what is on your display. Screenshot tools need it. A notes app does not.</p>
<p>Accessibility is broad but purposeful. If an app asks for all three, the questions get much harder.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>This permission is uncomfortable and the discomfort is appropriate — macOS made the dialog stern on purpose. The right response is not to refuse everything, which leaves you unable to use most Mac automation, and not to click through, which is how the dialog stops meaning anything. It is to know which feature you are enabling and be able to switch it off.</p>
<p>Cyanote asks for exactly one reason. Copies are captured without any permission at all; the clipboard history works and you can copy items from it freely. Pasting a history item <em>straight back into the app you came from</em> sends a ⌘V keystroke, and macOS gates synthesised keystrokes behind Accessibility. If you have not granted it, the app says so and offers to open the right settings pane rather than quietly doing nothing. It never asks for Input Monitoring or Screen Recording. And it makes <a href="/blog/apps-that-do-not-phone-home/">three network requests in total</a>, none of which carries anything you have written — which is the other half of what "broad local permission" should be weighed against.</p>]]></content:encoded>
      <category>macOS</category>
      <category>Privacy</category>
      <category>Security</category>
    </item>
    <item>
      <title>Where your notes actually live on a Mac</title>
      <link>https://cyanote.app/blog/where-your-notes-actually-live/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/where-your-notes-actually-live/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Your data stays on your device&quot; is a claim with a file path behind it. Here is how to find that path in any app, and what to do once you have it.</description>
      <content:encoded><![CDATA[<p>Every app in this category says some version of "your data stays on your device". It is a good sentence. It is also unfalsifiable until you can point at the file.</p>
<p>So point at the file. It takes two minutes, it works for any app you use, and the answer changes what you can do — because a path you can find is a thing you can back up, copy to a new machine, and check the size of. A path you cannot find is a promise.</p>
<h2 id="the-three-places-a-mac-app-can-put-your-data">The three places a Mac app can put your data</h2>
<p>Nearly everything lives in one of these.</p>
<p><strong>Application Support.</strong> <code>~/Library/Application Support/&lt;some identifier&gt;/</code>. This is the correct home for an app's own database, and it is where most well-behaved apps put it. The folder is hidden by default, which is why most people have never seen theirs.</p>
<p><strong>A folder you chose.</strong> Some apps write plain files — Markdown, text, whatever — into a directory you pick. This is the most transparent arrangement there is: the notes are files, visible in Finder, greppable from a terminal, and the app is only ever a viewer.</p>
<p><strong>A container.</strong> <code>~/Library/Containers/&lt;bundle id&gt;/Data/...</code>, used by apps sandboxed for the App Store. Same idea as Application Support, one layer further in, and more awkward to reach by hand.</p>
<p>There is a fourth answer, which is "on a server, with a cache here". That is not a criticism — plenty of good software works that way — but it is a different arrangement, and the tell is that the local file is much smaller than the amount you have written.</p>
<figure><img src="/images/where-the-data-lives.svg" alt="Where an app can keep what you write, and what each choice means for backing it up" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>The distinction that matters is not tidy versus messy. It is whether you can point at it.</figcaption></figure>
<h2 id="how-to-find-yours-in-any-app">How to find yours, in any app</h2>
<p>Two routes. Try them in order.</p>
<p><strong>Look in the app's settings.</strong> Well-made apps show you. Look for a data or storage section, often with a "reveal in Finder" button next to a path. If an app tells you where its database is without being asked, that is a good sign about the rest of it.</p>
<p><strong>Otherwise, look yourself.</strong> In Finder, press <code>⇧⌘G</code> and type <code>~/Library/Application Support/</code> — that shortcut is the whole trick, since the Library folder is hidden. Sort by date modified and the folder that changed while you were writing is the one. If it is not there, try <code>~/Library/Containers/</code>.</p>
<p>Once you have it: open the folder and look at the sizes. A single file of a few megabytes named something like <code>.sqlite</code> or <code>.db</code> is the normal, healthy shape for an app that stores structured content. Thousands of small text files is the other normal shape. Almost nothing there is the shape that should make you ask what the app is actually a client for.</p>
<h2 id="what-to-do-with-the-path-once-you-have-it">What to do with the path once you have it</h2>
<p>This is why it was worth two minutes.</p>
<p><strong>Point your backup at it.</strong> Time Machine already covers your home folder, so if it is running, this is done — but knowing the path is what lets you <em>verify</em> that, by browsing a Time Machine snapshot and finding the file. An untested backup is a hypothesis. I have written about <a href="/blog/backing-up-local-notes/">the wider version of this</a>, and it starts here.</p>
<p><strong>Copy it before you do anything drastic.</strong> New Mac, major OS upgrade, app version you are unsure about: copy the folder somewhere first. It costs seconds and it is the difference between a bad afternoon and a lost year.</p>
<p><strong>Check its size occasionally.</strong> A database that is 40 MB and stops growing while you keep writing is telling you something. A database that has doubled in a month is also telling you something — usually that you have been pasting images.</p>
<p><strong>Know it for when the app is gone.</strong> If the developer disappears, the file is what you have. Whether that is a recovery or a dead end depends entirely on the format, which is the next question.</p>
<h2 id="the-format-matters-more-than-the-path">The format matters more than the path</h2>
<p>A file you can find is not the same as a file you can read.</p>
<p><strong>Plain files</strong> — Markdown or text in a folder — are the maximum-portability answer. Any editor opens them, <code>grep</code> searches them, and the app is genuinely optional. The cost is that things which are not text (links between notes, tick-box state, images, tables) have to be encoded in conventions each app invents, so a folder of Markdown is portable prose plus a proprietary sprinkling.</p>
<p><strong>SQLite</strong> is one file containing structured data, and it is the most common answer for anything richer than prose. It is not a lock-in format: it is an open, documented, extremely long-lived format, readable by the <code>sqlite3</code> command that ships with macOS and by free tools on every platform. Your notes are in there as rows, and you can get them out with a query even if the app that wrote them no longer exists.</p>
<p><strong>A proprietary binary blob</strong> is the one to be wary of. If the file has an extension you have never seen and the app offers no export, then finding the path has told you where the data is and not much else.</p>
<p>The practical test is not "which format is purest". It is: <strong>can I get everything out, today, into something readable, without the app's cooperation being permanent?</strong> An app storing SQLite with a working full export passes. An app storing Markdown files passes trivially. Anything that fails both is a risk you are carrying whether or not you have noticed.</p>
<h2 id="two-things-people-get-wrong">Two things people get wrong</h2>
<p><strong>Putting the database in a sync folder.</strong> It is tempting: move the app's data into iCloud Drive or Dropbox and you have invented sync. Sometimes this works. What it also does is let two machines write to one database file, and file-sync services resolve that by picking a winner or leaving you a conflicted copy — neither of which is what a database needs. If an app supports moving its storage, moving it to an external disk or a different folder is fine; moving it into a live sync folder used by two Macs at once is how corruption happens.</p>
<p><strong>Assuming iCloud Drive is a backup.</strong> It is a sync service. Delete something and the deletion syncs, promptly and everywhere. A backup is a copy that does not change when the original does — that is the entire definition, and it is the reason <a href="/blog/backing-up-local-notes/">a restore should replace rather than merge</a>.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Knowing the path does not make you safer by itself. What it does is convert a marketing claim into something you can check, and give you the one piece of information every recovery starts with.</p>
<p>If you use an app whose settings do not tell you where your writing is, go and find out today. Not because the app is untrustworthy — most are fine — but because the day you need to know is never a calm day.</p>
<p>Cyanote keeps everything in one SQLite file at <code>~/Library/Application Support/app.cyanote.desktop/</code>, and Settings shows you that path and lets you move it wherever you want. Notes, tasks, calendar, habits, routines and the clipboard history are all in that one file, so backing it up is one copy. On top of that there is a readable JSON export of everything, and automatic daily backups keeping the last seven — because a path you can find is the floor, not the whole answer.</p>]]></content:encoded>
      <category>Local-first</category>
      <category>Backups</category>
      <category>How-to</category>
    </item>
    <item>
      <title>When it is actually worth moving off Apple Notes</title>
      <link>https://cyanote.app/blog/when-to-move-off-apple-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/when-to-move-off-apple-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Apple Notes is free, fast and already installed, and most people should keep it. Here are the four reasons that genuinely justify leaving — and one that does not.</description>
      <content:encoded><![CDATA[<p>Let me start where most posts in this genre will not: Apple Notes is good, and if it is working for you, the correct move is to keep using it.</p>
<p>It is free. It is already installed. It launches instantly, syncs to your phone without you configuring anything, locks individual notes behind Touch ID, scans documents through the camera, and has quietly grown folders, tags, smart folders, tables, checklists and note-to-note linking over the last few years. For the enormous number of people whose requirement is "somewhere to put things", it is the answer, and switching to something else because a blog told you to is how you end up with two half-populated notes apps.</p>
<p>So this post is about the specific cases where leaving is justified — and I am going to be strict about it, because most reasons people give are not.</p>
<h2 id="the-reason-that-is-not-good-enough">The reason that is not good enough</h2>
<p><strong>"I want a better writing experience."</strong></p>
<p>You do not, usually. What you want is to have written, and a nicer editor is the most pleasant available substitute for doing it. Switching apps for aesthetics produces a genuine two-week productivity boost, followed by exactly the same output as before, in a different typeface.</p>
<p>If your notes are fine and you are just bored of looking at them, changing the app is an expensive way to fix that. Changing the theme is a cheap one, and worth trying first.</p>
<p>Now the four that hold up.</p>
<h2 id="one-you-need-it-to-leave">One: you need it to leave</h2>
<p>This is the strongest reason, and it is structural rather than aesthetic.</p>
<p>As of August 2026, Notes on macOS can export a single note to PDF or Markdown from the File menu. There is still no built-in way to take the whole collection out at once — bulk export means a third-party tool, AppleScript, or clicking through a few hundred notes one at a time.</p>
<p>For most people that is a non-issue right up until the day it is the only issue: moving to a Windows machine, handing a project archive to a client, or simply wanting your own words in files you can grep. The cost is not visible while you are inside the system, which is exactly what makes it worth counting in advance. It is the same question as <a href="/blog/what-happens-when-your-notes-app-shuts-down/">what happens when your notes app shuts down</a>, asked of an app that is not going anywhere — Apple will still be here, and your notes will still be inside a format that only leaves one at a time.</p>
<p>If you are two hundred notes in and thinking about a move, that is the moment it is cheapest. It never gets cheaper again.</p>
<h2 id="two-your-notes-contain-things-icloud-should-not">Two: your notes contain things iCloud should not</h2>
<p>Notes syncs through iCloud by default, and iCloud is well-run infrastructure. Advanced Data Protection makes it end-to-end encrypted if you turn it on, and locked notes are encrypted regardless. This is a better privacy story than most of the industry offers.</p>
<p>It is still a copy on somebody else's servers, tied to an identity, subject to an account that can be locked, and reachable by a legal process directed at Apple rather than at you. For a large share of note-taking, none of that matters. For a therapist's session notes, a lawyer's case notes, a journalist's sources, an HR investigation, or a diary you would genuinely rather not have restored to a future device — it matters, and no amount of "they are a good company" changes the shape of the arrangement.</p>
<p>The alternative is not "trust a different company more". It is not involving one: a database on your own disk, where the recovery story is a backup you control and the legal story is a warrant served on you. Whether that trade is worth it depends entirely on what is in the notes.</p>
<h2 id="three-what-you-write-does-not-fit-the-editor">Three: what you write does not fit the editor</h2>
<p>Notes is built for prose, lists and pictures, and it is genuinely good at those. It is not built for a few specific shapes.</p>
<p><strong>Code.</strong> No code blocks with syntax highlighting. Paste a shell command into Notes and smart quotes and autocorrect are actively working against you. This is the single most common reason developers leave, and it is a real one — I have written separately about <a href="/blog/notes-and-code-in-one-app/">keeping notes and code in one app</a>.</p>
<p><strong>Deeply nested structure.</strong> Folders and one level of sub-folders is not the same as notes that nest into sub-pages arbitrarily. If you think in outlines, you will feel the ceiling.</p>
<p><strong>Typography you control.</strong> Font, size and line spacing are largely Apple's decision. If you read for hours and have opinions about measure and leading, <a href="/blog/customising-a-notes-app/">that ceiling is low</a>.</p>
<p>If none of these describes what you write, this reason does not apply to you, and it is fine to say so.</p>
<figure><img src="/images/note.webp" alt="A note in Cyanote with headings, a table and a code block in the same document" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The shapes that do not fit are specific: code, deep nesting, and typography you control. Everything else Notes already does well.</figcaption></figure>
<h2 id="four-the-notes-are-only-one-of-five-things">Four: the notes are only one of five things</h2>
<p>This is the honest reason most people switch, and it has nothing to do with Notes being deficient at notes.</p>
<p>Your week is not made of notes. It is made of notes, a to-do list, a calendar, a couple of habits you are trying to keep, and a clipboard full of things you copied. Notes covers one of those, plus checklists. The rest live in Reminders, Calendar, some habit app, and whatever clipboard manager you installed in 2021 — five icons, five windows, five places to look for the thing you wrote down.</p>
<p>Apple's apps are individually good and deliberately separate, which is the right call for a platform vendor and the wrong shape for some people's day. If you keep losing things in the gaps between five apps, that is not a notes problem and no notes app will fix it. It is the argument for <a href="/blog/replaced-five-subscriptions-with-one-app/">one window instead of five</a>.</p>
<h2 id="what-you-give-up-by-leaving">What you give up by leaving</h2>
<p>Being straight about the cost, since it is substantial.</p>
<p><strong>Your phone.</strong> Notes on iPhone is excellent and syncs for free with nothing to set up. Almost any alternative is worse at this, and several — including mine — do not have a phone app at all. If you write notes on your phone daily, this is close to disqualifying, and you should weigh it above everything above.</p>
<p><strong>Free.</strong> Notes costs nothing, forever, with no licence to keep track of.</p>
<p><strong>Integration.</strong> Share sheets, Siri, Quick Note from the corner of the screen, scanning with the camera, handwriting on an iPad. Third-party apps get some of this; none get all of it.</p>
<p><strong>Collaboration.</strong> Sharing a note with a family member and both editing it. Local-first apps categorically cannot do this, and pretending otherwise would be dishonest.</p>
<p>If more than one of those matters to you, stay. That is not a consolation prize; it is the right decision.</p>
<h2 id="how-to-leave-if-you-are-leaving">How to leave, if you are leaving</h2>
<p>Do it in a way that does not depend on the new app working out.</p>
<p><strong>Get the text out first, on its own.</strong> Export to Markdown or PDF into a folder before importing anywhere. If the new app disappoints you in a month, you still have your notes in a format nothing owns.</p>
<p><strong>Do not migrate everything.</strong> Move the last six months and the twenty notes you actually reference. The rest is an archive; leave it in Notes, which is not going anywhere, and search it there on the rare occasion you need it. Wholesale migration is how people spend a weekend and end up with two apps and no system.</p>
<p><strong>Keep Notes installed.</strong> For the phone, for scanning, for shared notes. Leaving an app does not have to mean deleting it, and the shared-with-family grocery list is genuinely better where it is.</p>
<p><strong>Run the four-second test on the new one</strong> before you commit: turn the wifi off and see <a href="/blog/what-still-works-with-the-wifi-off/">what still works</a>.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Most people reading this should stay on Apple Notes, and I would rather say that than sell you something. The four reasons above are narrow on purpose: exit cost, the sensitivity of what you write, editors that do not fit the shape of it, and a week that is more than notes.</p>
<p>Cyanote answers the last three and the first: a block editor with code blocks and syntax highlighting, notes that nest into sub-pages, typography set per note, tasks and a board and a calendar and habits and a clipboard history in the same window, everything in one SQLite database on your own Mac with no account — and a one-file JSON export of the whole collection whenever you want it. It has no iPhone app, no collaboration and no share sheet, and it costs $10 once where Notes costs nothing. Those are the actual terms of the trade.</p>]]></content:encoded>
      <category>Buying advice</category>
      <category>macOS</category>
      <category>Notes</category>
    </item>
    <item>
      <title>What to delete from your notes</title>
      <link>https://cyanote.app/blog/what-to-delete-from-your-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/what-to-delete-from-your-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Nobody deletes notes, because storage is free and deletion feels like loss. The cost is not disk space — it is that search starts returning things you do not want.</description>
      <content:encoded><![CDATA[<p>Nothing in a notes app ever gets deleted. Storage is free, deletion takes effort, and every note feels like it might be needed — so the collection only grows, and after five years it contains a large quantity of material that is not merely useless but actively in the way.</p>
<p>The cost is not disk space. It is that your search results fill up with things you do not want, that browsing shows you a decade of abandoned starts, and that a collection you cannot face opening stops being a system.</p>
<p>Deletion is maintenance, and it is the only part of note-keeping nobody does.</p>
<h2 id="the-four-things-safe-to-delete">The four things safe to delete</h2>
<p><strong>Duplicates of things that exist elsewhere.</strong> Recipes copied from a site, documentation pasted from a manual, an article you saved wholesale. If it is public and still online, you have not saved it, you have cached it — and badly, without the updates. Keep a line saying what it was and why it mattered to you. That line is the part that was yours.</p>
<p><strong>Notes from tools you no longer use.</strong> Configuration for a service you left, a workflow for software you have replaced, meeting notes from a job three roles ago. There is a real emotional weight to deleting the record of a job you cared about, and it is worth being honest that the value is sentimental rather than practical. If it is sentimental, keep it deliberately — that is a fine reason. Just do not pretend you will consult it.</p>
<p><strong>Abandoned starts.</strong> Twelve notes that are a title and two lines, from projects that never happened. These are the most cluttering category by count and the easiest to delete, because there is genuinely nothing in them. If one had an idea in it, <a href="/blog/an-idea-bank-for-writing/">move the idea to the idea bank</a> and delete the note.</p>
<p><strong>Anything superseded.</strong> The old version of a document, the outdated process, the plan you replaced. Superseded material is worse than absent material, because it will be found by search and read as current. This is the category where deletion is not tidying but correctness.</p>
<figure><img src="/images/note.webp" alt="One collection, and the results you get back from it — which is the thing pruning is actually for" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The cost of never deleting is not storage. It is that search returns the superseded version alongside the current one.</figcaption></figure>
<h2 id="the-four-things-to-keep-forever">The four things to keep forever</h2>
<p><strong>Anything you wrote in your own words.</strong> Summaries, arguments, explanations, reading notes, journal entries. This is the whole product of note-keeping and it does not become obsolete — a reading note from 2019 is exactly as good as it was.</p>
<p><strong>Decisions and their reasons.</strong> Why you chose this, what you thought at the time. These become more valuable with age, not less, and they are irreplaceable — <a href="/blog/keeping-a-decision-journal/">nobody can reconstruct their own past reasoning</a>.</p>
<p><strong>Anything about people.</strong> What they told you, what you agreed, what they were working on. Contact history is cheap to keep and impossible to rebuild.</p>
<p><strong>Records with numbers in them.</strong> What things cost, how long they took, what the reference was. Your own historical figures are the basis of every future estimate you make.</p>
<p>The pattern: <strong>delete what is reproducible, keep what is not.</strong> A pasted article is reproducible. Your reaction to it is not.</p>
<h2 id="the-two-pass-method">The two-pass method</h2>
<p>Once a year, an hour, and it is much easier if you go in two passes.</p>
<p><strong>Pass one: sort by date, oldest first, and skim titles only.</strong> Do not open anything. You can tell from a title that a note is an abandoned start or a stale config. This pass deletes a surprising proportion in about twenty minutes, and it works because you are not reading — reading is what makes every note feel worth keeping.</p>
<p><strong>Pass two: search for the things you know are duplicated.</strong> The tools you left, the projects that ended, the things you pasted. Targeted rather than exhaustive.</p>
<p>Then stop. An hour, once a year, and do not attempt to be thorough — a collection that is 80% pruned is entirely fine, and attempting completeness is why the annual prune becomes a thing that never happens.</p>
<h2 id="archive-rather-than-delete-if-it-helps">Archive rather than delete, if it helps</h2>
<p>For anyone who finds deletion genuinely difficult — and plenty of people do — there is a middle path that gets most of the benefit.</p>
<p>Export the material you are unsure about to a file, put it somewhere out of the way, and remove it from the live collection. It still exists. It is no longer in your search results, and search results are the thing you were actually fixing.</p>
<p>The honest caveat: an archive you never open is functionally deleted, just with extra steps and a small ongoing cost in backup size. That is not an argument against it — the psychological difference is real and worth something. Just be aware that "archived" and "deleted" converge after about a year.</p>
<h2 id="what-deletion-is-not-for">What deletion is not for</h2>
<p><strong>Not for privacy.</strong> If a note should not exist, deleting it from the app is not sufficient — it is in your backups, in your <a href="/blog/backing-up-local-notes/">daily automatic backups</a>, possibly in a Time Machine snapshot, and possibly in an export. Deleting something properly means dealing with the copies, which is a different task requiring a different amount of care.</p>
<p><strong>Not to make an app faster.</strong> Modern software handles tens of thousands of notes without difficulty, and if yours is slow at 2,000 the problem is the app, not the count.</p>
<p><strong>Not for tidiness alone.</strong> A note that is doing no harm and takes no attention can stay. This is only worth doing where the clutter has a cost — in what search returns and in whether you can face opening the collection.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Most people will never do this, and the world will not end. A cluttered notes collection is a mild inefficiency, not a crisis, and the annual prune is the most skippable habit in this whole area.</p>
<p>The version that is genuinely worth it is much narrower: <strong>delete superseded documents when you supersede them.</strong> That one is not tidying, it is accuracy — the old process being findable is how someone follows it next year, and the someone is usually you.</p>
<p>Cyanote makes both halves plain. Everything is in one SQLite database on your own Mac, so you can see the size of what you are carrying, and it exports to one readable JSON file, which is the archive route for anything you would rather not delete outright. Full-text search is what makes pruning worth doing at all: the reason to remove the stale material is that <code>⇧⌘F</code> should return the note you meant, and every superseded document is a result competing with it.</p>]]></content:encoded>
      <category>Organisation</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>What still works with the wifi off</title>
      <link>https://cyanote.app/blog/what-still-works-with-the-wifi-off/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/what-still-works-with-the-wifi-off/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most apps that call themselves offline just queue your changes until the connection returns. That is a different promise. Here is how to tell in advance.</description>
      <content:encoded><![CDATA[<p>The test takes four seconds and almost nobody runs it before they need it: turn the wifi off, and open the app you keep your week in.</p>
<p>You find out three things immediately. Whether it opens at all. Whether your notes are there. And whether the app tells you honestly that it is offline, or just quietly stops saving.</p>
<p>I would run that test on a Tuesday afternoon rather than at thirty thousand feet.</p>
<h2 id="offline-support-means-at-least-three-different-things">"Offline support" means at least three different things</h2>
<p>They are sold with the same word and they behave nothing alike.</p>
<p><strong>Offline-tolerant.</strong> The app needs the network but degrades politely. It caches what you looked at recently, lets you read it, and queues edits. Works fine on a train with patchy signal. Falls apart on a two-week trip, or the moment the cache expires, or when you want something you have not opened in a month.</p>
<p><strong>Offline-capable with sync.</strong> There is a real local copy of your data and a real local database. You can work fully offline for as long as you like, and changes reconcile when you reconnect. This is the good version of cloud software, and it is expensive to build, which is why it is rarer than the marketing suggests.</p>
<p><strong>Local-first.</strong> There is no server in the loop at all. The database on your disk is not a cache of the truth; it <em>is</em> the truth. Offline is not a supported mode, because there is no other mode — the network was never involved.</p>
<p>The difference only shows up under pressure. All three feel identical on a good connection, which is precisely why people find out which one they bought at the worst possible moment.</p>
<figure><img src="/images/offline-still-works.svg" alt="What is still there when the network is not: the local database, and everything drawn from it" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>The question is not whether the app opens. It is whether the thing you need was ever on the machine.</figcaption></figure>
<h2 id="the-four-second-test-done-properly">The four-second test, done properly</h2>
<p>Turn off wifi. Then, in order:</p>
<p><strong>Open the app cold.</strong> Quit it first — an app that is already running may be showing you memory, not disk. If the launch hangs on a spinner, you have learned the most important thing there is to learn about it.</p>
<p><strong>Open something you have not touched in months.</strong> This is the real test, and the one people skip. Recent notes are cached almost everywhere; the note from March is what separates a local copy from a local cache.</p>
<p><strong>Search for a word inside a note, not in its title.</strong> Full-text search is often the first thing to go, because in a lot of apps the index lives on the server. An app that can show you a note but cannot find it offline has given you a filing cabinet with the drawers welded shut.</p>
<p><strong>Write something, then quit and reopen.</strong> Did it survive? Some apps accept typing while offline and lose it on relaunch, which is worse than refusing the edit, because you were told nothing.</p>
<p><strong>Check the small things.</strong> Search, attachments, images in notes, the calendar, the clipboard history, whatever else you rely on. Attachments are the usual casualty: the text is local, the image is a URL.</p>
<p>Five minutes, once. It tells you more about an app than a fortnight of using it well-connected.</p>
<h2 id="why-this-is-not-really-about-planes">Why this is not really about planes</h2>
<p>Everybody frames offline as a travel feature and that undersells it badly. Flights are the least common case.</p>
<p>The common cases are ordinary. A hotel captive portal that wants a room number you do not have. A conference wifi that authenticates for eleven minutes at a time. A train through a valley. The morning your home connection is out and you need the note with the account number in it, on the machine in front of you, to make the call about the connection being out. A café network so bad that the app is technically connected and therefore refuses to admit it is offline — which is the worst state of all, because a connected-but-useless app usually has no offline mode to fall into.</p>
<p>There is also the version with no network involved at all: a company that goes under, an account locked by an automated system, a service that decides your region is no longer supported. Those look nothing like a flight and produce exactly the same screen. I have written about <a href="/blog/what-happens-when-your-notes-app-shuts-down/">what happens when the app itself shuts down</a> — offline capability is the same property, tested by a different failure.</p>
<h2 id="what-working-offline-should-feel-like">What working offline should feel like</h2>
<p>Not "a limited mode". Nothing at all.</p>
<p>If offline is genuinely handled, turning the wifi off changes nothing you can see. No banner, no reduced feature set, no read-only state, no queue counter. You do not find out the connection dropped, because the app was never asking.</p>
<p>That is the actual bar. Any visible offline experience — however well designed — is telling you that the app's normal state involves a server, and that you are currently in the fallback. Sometimes that is a fine trade for sync and sharing, and <a href="/blog/notes-app-without-an-account/">an account genuinely buys you things</a>. But it should be a trade you made knowingly, not one you discover in an airport.</p>
<h2 id="the-trade-you-are-making">The trade you are making</h2>
<p>Being honest about the other side, since a page arguing for local-first has an obvious incentive not to be.</p>
<p>No network means no sync. Your notes are on this machine, and if you want them on your phone you need to do something deliberate about it — an export, a file in a folder you sync yourself, or accepting that the phone is not part of the system. It means no collaboration: nobody else can see or edit anything. And it means backups are entirely your job, because there is no server quietly keeping a copy of everything for you. That last one is the real cost, and it is why <a href="/blog/backing-up-local-notes/">backups deserve their own five minutes</a>.</p>
<p>If your life genuinely runs across three devices and two other people, offline-capable-with-sync is the shape you want, and paying for it is reasonable. The mistake is paying for offline-<em>tolerant</em> while believing you bought one of the other two.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Run the test. Whatever you use, and especially if it is something you have trusted for years without checking. It costs five minutes, and the answer is a fact about your own setup rather than a claim from a marketing page.</p>
<p>Cyanote is the third kind. Everything — notes, tasks, the board, the calendar, habits, routines, the clipboard history — lives in one SQLite database on your own disk, and the app draws every screen from it. Exactly three requests ever leave the machine: a one-time licence check when you first install, an anonymous update check, and a calendar feed if you subscribe to one. None of them carries a word you have written, and none of them is needed to open the app, search it, or write in it. With the wifi off, nothing changes and nothing tells you it has.</p>]]></content:encoded>
      <category>Offline</category>
      <category>Local-first</category>
      <category>Travel</category>
    </item>
    <item>
      <title>What happens to your notes when you die</title>
      <link>https://cyanote.app/blog/what-happens-to-your-notes-when-you-die/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/what-happens-to-your-notes-when-you-die/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>An encrypted local database with no password written down is unrecoverable, by design. That is a feature until it is a problem for somebody else.</description>
      <content:encoded><![CDATA[<p>This is not a cheerful subject and it is a short, practical one. Nobody writes about it, and everything in this category has the property.</p>
<p>If your notes are encrypted, on your own machine, with no account and no password written down anywhere, then when you are gone they are gone. That is not a bug — it is precisely the guarantee you were buying. It just has a second consequence that nobody mentions on the marketing page.</p>
<h2 id="two-things-people-usually-want-and-they-conflict">Two things people usually want, and they conflict</h2>
<p><strong>Some of it should survive.</strong> Not the diary. The practical layer: where the accounts are, what the passwords protect, the family history you were the only one who knew, the instructions for the boiler, the letter you meant to leave, the work someone else needs to continue.</p>
<p><strong>Some of it should not.</strong> The journal. The half-formed opinions about people. The things you wrote to think rather than to communicate. Most people, asked directly, do not want everything they ever privately wrote read by their family in a difficult week.</p>
<p>Those pull in opposite directions, which is why "just give someone the password" is not a complete answer, and why the whole question tends to get dropped.</p>
<h2 id="the-three-arrangements">The three arrangements</h2>
<p><strong>Cloud accounts have a mechanism, of a sort.</strong> Apple has a Legacy Contact, Google has Inactive Account Manager. Both let you nominate someone who can gain access after a process. They are genuinely useful and worth setting up if your material is there. They are also all-or-nothing at the account level, they take time, and the process is a bureaucratic one at the worst possible moment.</p>
<p><strong>Local and unencrypted is the accidental default, and it mostly works.</strong> If your notes are a database or a folder of files on a machine at home, whoever has the machine and its password has the notes. That is a real answer, if imperfect — it depends on someone knowing the machine matters, and on the disk password being available.</p>
<p><strong>Local and encrypted is the one that needs a decision.</strong> Full-disk encryption, an encrypted database, or locked individual notes. Without the key, the data is unrecoverable by anyone, including you, including a specialist. That is the guarantee. It also means the practical layer above dies with you unless you did something deliberate.</p>
<figure><img src="/images/backup-layers-diagram.svg" alt="Layers, and which of them survive you" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>The layer that protects your notes from everyone else protects them from the people you would have wanted to have them.</figcaption></figure>
<h2 id="what-to-actually-do">What to actually do</h2>
<p>Twenty minutes, once, and it is mostly not about notes software.</p>
<p><strong>Use a password manager with an emergency access feature.</strong> This is the single most effective step, and it solves the general problem rather than the notes-specific one. Most of the serious password managers offer a recovery contact who can request access, with a waiting period during which you can decline — which handles both the "someone needs in" and "not right now" cases. Your disk password and your notes password go in there.</p>
<p><strong>Write a one-page "where things are" document, and print it.</strong> Not encrypted, not in the system it describes. Where the machine is, that there is a password manager, who has emergency access, where the backups are, which accounts matter. It should contain no passwords — it is a map, not a key. Put it with your will, or wherever your important papers live.</p>
<p><strong>Decide, explicitly, what you want read.</strong> If there is a journal you would rather nobody read, say so in that document, in a sentence. People overwhelmingly respect a stated wish and are left guessing without one. If you want it destroyed, say that too.</p>
<p><strong>Keep the practical layer separate from the private layer.</strong> This is the notes-specific part and it is easy: the household information, the account map, the family history — the things you would want to survive — should be in an unlocked note, or an export, or on paper. The journal can be locked. Encryption is a per-note decision in a lot of software, which means the split costs nothing.</p>
<p><strong>Tell one person the machine matters.</strong> A surprising amount of digital material is lost simply because nobody knew to look. "There is stuff on the Mac and there is a note in the file with the will" is enough.</p>
<h2 id="the-part-specific-to-local-first-software">The part specific to local-first software</h2>
<p>If you have chosen local software for privacy reasons, you have made a real trade and it is worth completing.</p>
<p>There is no company to write to. No support process, no legal request, no account recovery. Nobody can be persuaded to help, because there is no one in a position to. Every route runs through the machine, the disk password, and whatever you wrote down.</p>
<p>The compensating advantage is that it is entirely in your hands and requires nobody's cooperation. An export sitting on an external drive in a drawer, or printed, is readable forever by whoever finds it — no account, no service, no login. That is a genuinely better inheritance than a subscription somebody has to argue their way into, and it is <a href="/blog/what-happens-when-your-notes-app-shuts-down/">the same property</a> that protects you when a company disappears, applied to the other kind of ending.</p>
<h2 id="the-version-for-people-who-will-not-do-any-of-this">The version for people who will not do any of this</h2>
<p>Realistically, most people will not do the twenty minutes. So, the one thing:</p>
<p><strong>Set up emergency access in your password manager.</strong> That is it. If your disk password is in there, everything else follows — the machine opens, the notes are readable, whoever needs to get in can. Ten minutes, and it covers the general case and not only your notes.</p>
<p>If you do a second thing, print the one-page map.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>There is a version of this post that is a sales argument, and it should not be, so plainly: no notes app solves this. It is a password manager question and a piece-of-paper question, and the software you write in is nearly irrelevant to it.</p>
<p>What the software determines is only how many routes exist. Cloud accounts have a slow official route. Local and unencrypted has an informal one. Local and encrypted has exactly one route, and it is the one you set up in advance.</p>
<p>Cyanote is the third kind: one SQLite database on your own Mac, and any note can be locked with a password and is encrypted where it sits. There is no account to recover, no legacy contact, and nobody here who could help — which is the guarantee working as intended. What it does give you is a readable JSON export of everything, which is the thing to put on an external drive in a drawer, and per-note locking, so the practical layer can stay open while the private one does not.</p>]]></content:encoded>
      <category>Local-first</category>
      <category>Backups</category>
      <category>Privacy</category>
    </item>
    <item>
      <title>Using a notes app without touching the mouse</title>
      <link>https://cyanote.app/blog/using-a-mac-app-without-the-mouse/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/using-a-mac-app-without-the-mouse/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Learning forty shortcuts is not the goal and never works. Four of them carry almost all the value in any notes app, and the rest can stay unlearned forever.</description>
      <content:encoded><![CDATA[<p>Every app ships a page of keyboard shortcuts and almost nobody reads it twice. Not through laziness — because a list of forty is unlearnable, and a shortcut you have to look up is slower than the mouse it was meant to replace.</p>
<p>The useful version is much smaller. In practice, four shortcuts carry nearly all the value in any app of this kind, and everything past those four is a rounding error you can pick up over years or never.</p>
<h2 id="why-the-mouse-costs-more-than-it-looks">Why the mouse costs more than it looks</h2>
<p>Not because moving your hand is slow. It is about a second, and a second is nothing.</p>
<p>The cost is that reaching for the mouse breaks the sentence. You were mid-thought, the thought needed a new note, and getting there involved leaving the keyboard, finding a target, clicking it, and coming back. The thought survives that about two thirds of the time.</p>
<p>Which is the same argument as <a href="/blog/why-a-notes-app-should-open-instantly/">an app that opens instantly</a>: the loss is not measured in seconds, it is measured in the things that did not get written down because the route to writing them involved a detour.</p>
<h2 id="the-four-that-matter">The four that matter</h2>
<p><strong>A command palette.</strong> One shortcut, type a few letters, go anywhere — a note by name, a page, a setting. This is the single highest-value key in any modern app, because it collapses the entire navigation surface into one thing you already know how to use: typing. Almost universally <code>⌘K</code>.</p>
<p><strong>Search across everything.</strong> Distinct from the palette, and worth its own key. The palette finds things by name; search finds them by what is inside them. Usually <code>⇧⌘F</code>. Both matter for <a href="/blog/searching-your-own-notes/">different questions</a>, and having one bound to the other's job is a common small frustration.</p>
<p><strong>New thing, immediately.</strong> <code>⌘N</code>. The distance between "I should write that down" and a cursor blinking in an empty note is the most important measurement in the app, and this key is most of it.</p>
<p><strong>A slash menu inside the editor.</strong> Type <code>/</code> and reach every block type — heading, list, table, code, callout, toggle, image — without a toolbar. This is the one that makes formatting keyboard-native rather than keyboard-adjacent, and it is the difference between writing a structured note without lifting your hands and writing a plain one because the alternative was a mouse trip to a toolbar.</p>
<p>Those four, and you are effectively keyboard-driven. Anything else you learn is optimisation.</p>
<figure><img src="/images/keyboard-doors.svg" alt="The slash menu inside the editor: every block type reachable without leaving the keyboard" width="1200" height="450" loading="lazy" decoding="async" /><figcaption>Four doors. Everything else is a shortcut you will look up twice and forget.</figcaption></figure>
<h2 id="the-ones-worth-adding-later">The ones worth adding later</h2>
<p>Once the four are automatic, these earn their place — and not before, because learning them alongside the first four is how people end up learning none.</p>
<p><strong>Today's note.</strong> A key that opens or creates today's daily note removes the last decision from capture: there is always somewhere to put a thing, and no thought about where.</p>
<p><strong>Focus mode.</strong> Hide the sidebar and the chrome. Small, and it changes how the app feels to write in for long stretches.</p>
<p><strong>Back and forward.</strong> Once notes link to each other, navigation becomes browsing, and browsing without back is miserable.</p>
<p><strong>Find within the note.</strong> <code>⌘F</code>, distinct from searching everything. Obvious in retrospect, frequently overlooked.</p>
<h2 id="global-hotkeys-are-a-different-category">Global hotkeys are a different category</h2>
<p>A shortcut inside an app only works when the app is in front. A global one works from anywhere, and that difference is bigger than it sounds — a global key means the app can do something for you without you going to it.</p>
<p>The clearest example is clipboard history: a key that opens a small window over whatever you are in, lets you pick, pastes into that app and gives the foreground back. You never visited the notes app; it visited you. That is <a href="/blog/mac-app-notes-and-clipboard/">the whole design requirement</a> for anything meant to be used mid-task.</p>
<p>Two cautions. Global hotkeys are a scarce shared resource — every app on your Mac is competing for the same combinations, and a conflict presents as one of them silently not working, which is a genuinely annoying thing to debug. And any app that can paste into another app needs macOS Accessibility permission to do it, which is a real permission you should <a href="/blog/why-a-mac-app-asks-for-accessibility/">understand before granting</a>.</p>
<p>Anything global should be rebindable. If it is not, one conflict is unfixable.</p>
<h2 id="how-to-actually-learn-four-keys">How to actually learn four keys</h2>
<p>Not by reading the list. By having a rule.</p>
<p><strong>Pick one, use it for a week, ignore the rest.</strong> One key per week means four weeks to keyboard-driven, which is a slower schedule than anyone wants and the only one that works.</p>
<p><strong>When you catch yourself reaching for the mouse, stop and look up the key for that one action.</strong> Once. Immediate, specific, in context — this is how nearly every shortcut anyone actually knows was learned.</p>
<p><strong>Bind the ones you have to think about.</strong> If a default combination is awkward on your keyboard or your layout, change it. A shortcut you have to contort your hand for is a shortcut you will not use, and there is no prize for keeping the defaults.</p>
<p><strong>Do not learn a shortcut for something you do monthly.</strong> Genuinely. The mouse is fine for rare things, and cluttering your memory with rare bindings is what makes people give up on shortcuts altogether.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Keyboard-driven is not a virtue in itself, and there is a strain of this that tips into performance — people who have memorised sixty bindings and are not writing more than anyone else.</p>
<p>The reason it matters at all is narrow: the gap between having a thought and having somewhere to put it. Four keys close that gap. Sixty do not close it any further.</p>
<p>Cyanote is built for those four: <code>⌘K</code> for the command palette, <code>⇧⌘F</code> for full-text search across every note, <code>⌘N</code> for a new one, and <code>/</code> inside the editor for every block type — headings, lists, quotes, tables, tick boxes, images, callouts, toggles, code with syntax highlighting. Then <code>⇧⌘D</code> for today's daily note, <code>⌘\</code> for focus mode, <code>⌥←</code> and <code>⌥→</code> for back and forward. Three hotkeys work from any app on the Mac: <code>⌥⇧V</code> for clipboard history, <code>⌥⇧B</code> for pinned snippets, <code>⌥⇧C</code> to bring the window to the front. All of them are rebindable in Settings, because a shortcut you cannot change is a shortcut somebody else chose.</p>]]></content:encoded>
      <category>Keyboard</category>
      <category>Workflow</category>
      <category>macOS</category>
    </item>
    <item>
      <title>Typing a task the way you would say it</title>
      <link>https://cyanote.app/blog/typing-a-task-the-way-you-say-it/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/typing-a-task-the-way-you-say-it/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Pay rent tomorrow 9am !high&quot; should become a task with a date, a time and a priority. Why that one detail decides whether a to-do list survives a month.</description>
      <content:encoded><![CDATA[<p>Here is the whole problem with to-do apps, in one moment.</p>
<p>Something occurs to you. You have about four seconds of willingness before the thought is gone and you are doing something else. In those four seconds a good app takes a sentence. A bad one takes a sentence, a date picker, a dropdown for priority, a project selector and a save button.</p>
<p>The four seconds are not negotiable. Everything else in the design has to fit inside them.</p>
<h2 id="what-natural-language-entry-actually-is">What natural-language entry actually is</h2>
<p>You type <code>pay rent tomorrow 9am !high</code> into one field. The app reads the words, pulls out the date, the time and the priority, and creates a task called "Pay rent" due at nine tomorrow morning, marked high.</p>
<p>That is the entire feature, and it sounds like a convenience. It is not. It is the difference between a to-do list that gets used and one that gets abandoned, because it collapses five interactions into one and lands the whole thing inside the four seconds.</p>
<p>The alternative is not "slightly slower". The alternative is that you skip the date, because the date is another two clicks, and a task with no date is a task that does not appear on any day, which means the list becomes a graveyard of undated intentions and you stop trusting it. Undated tasks are how to-do lists die.</p>
<figure><img src="/images/todo.webp" alt="Tasks in Cyanote, grouped by when they are due, with the parsed date and priority shown as chips on the task" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The date came out of the sentence. The chip is there so you can see what it decided, and dismiss it if it guessed wrong.</figcaption></figure>
<h2 id="why-it-also-breaks-things">Why it also breaks things</h2>
<p>Every parser is a guess, and the guesses fail in a specific, annoying way.</p>
<p>You type <code>call Mark about the May figures</code> and the app helpfully schedules it for 1 May. You type <code>read the March report</code> and it does the same. The word was part of the thing, not part of the schedule, and the app cannot tell — English does not mark the difference.</p>
<p>This is the failure that makes people turn natural-language entry off, and the fix is not a better parser. It is <strong>visible, reversible parsing</strong>. The app shows you what it extracted, as something you can see and dismiss — a chip, a highlight, a token in the field — before or right after the task is created. Then a wrong guess costs one click to undo instead of a task that silently shows up on the wrong day in six weeks.</p>
<p>Compare that with the invisible version, which quietly rewrites the title and tells you nothing. That app is not faster. It is faster <em>and occasionally wrong in a way you will find out about later</em>, which is worse than slow.</p>
<h2 id="the-grammar-worth-learning">The grammar worth learning</h2>
<p>There is a small vocabulary that most apps agree on, and it is worth ten minutes because it covers nearly everything.</p>
<div class="table-scroll"><table><thead><tr><th scope="col">You type</th><th scope="col">What it should become</th></tr></thead><tbody><tr><td><code>tomorrow</code>, <code>friday</code>, <code>next tuesday</code></td><td>a due date</td></tr><tr><td><code>9am</code>, <code>at 14:30</code>, <code>tonight</code></td><td>a time on that date</td></tr><tr><td><code>!high</code>, <code>!!</code>, <code>p1</code></td><td>a priority</td></tr><tr><td><code>every monday</code>, <code>daily</code></td><td>a repeat</td></tr></tbody></table></div>
<p>Two habits make the difference in practice. <strong>Put the schedule at the end</strong> — parsers are most reliable on trailing date phrases, and it keeps the words at the start as the actual title. And <strong>write the title as a verb phrase</strong>: "Pay rent", not "Rent". A list of nouns is a list of topics; a list of verbs is a list of things you can start.</p>
<h2 id="where-the-task-goes-afterwards-matters-as-much">Where the task goes afterwards matters as much</h2>
<p>Fast capture into a bad list is just a faster way to build a pile.</p>
<p>What makes the pile navigable is grouping by <em>when</em>, not by project. Overdue, today, this week, later. That ordering answers the only question you have when you open a to-do list on a Tuesday morning, which is "what is actually mine today". Project grouping answers a question you ask once a week, at most, and it is the wrong default for the other six days.</p>
<p>The same tasks seen a different way is a separate and legitimate need — that is what a board is for, and I have written about <a href="/blog/personal-kanban-board/">running a personal kanban board</a> without turning it into project management. The point is that both views should be the same tasks, not two lists you maintain.</p>
<h2 id="what-to-check-before-you-commit">What to check before you commit</h2>
<ul><li><strong>Does it show you what it parsed?</strong> The single most important question. Invisible parsing is a slow-motion trust problem.</li><li><strong>Can you dismiss one part and keep the rest?</strong> Wrong date, right priority, should be one click — not "clear and retype".</li><li><strong>What happens with no schedule at all?</strong> Typing a bare sentence and pressing return should produce a plain undated task, not an error and not a form.</li><li><strong>Does the reminder follow the task, or is it separate?</strong> In some apps a due date and a reminder are two different fields, which means every genuinely time-sensitive task takes two passes.</li><li><strong>Is capture reachable from anywhere?</strong> A capture box that requires the app to be in front of you is capture that will not happen during the four seconds.</li></ul>
<h2 id="the-honest-version">The honest version</h2>
<p>If you run serious project management — dependencies, delegation, cross-project rollups, other people's tasks — a general app's to-do list is not the tool, and pretending otherwise wastes your month. Things and OmniFocus have spent well over a decade on exactly this on Apple platforms, and their parsers, their review flows and their project models are deeper than anything bundled into a notes app will be.</p>
<p>What the bundled version is for is the far more common case: a few dozen personal tasks, most of them small, most of them attached to something you were already writing down. In that case the deciding feature is not the project model. It is whether typing one sentence produces a task on the right day.</p>
<p>Cyanote parses the sentence as you type it — date, time and priority lifted out of the words and shown as chips you can dismiss — and drops the task into a list grouped by when things are due, with the same tasks available as cards on a board. Reminders sit on the task rather than beside it. It all lives in one SQLite database on your own Mac, with no account, which means the four seconds never include waiting for a server.</p>]]></content:encoded>
      <category>Tasks</category>
      <category>Workflow</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Two Macs, one system, no sync</title>
      <link>https://cyanote.app/blog/two-macs-one-system/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/two-macs-one-system/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A desktop and a laptop is a harder problem than a phone, because you do real work on both. Four arrangements, and the one question that picks between them.</description>
      <content:encoded><![CDATA[<p>A phone is a capture device. You write four words on it, standing up, and that is genuinely most of what happens there — which is why <a href="/blog/getting-a-note-to-your-phone-without-sync/">going without sync to a phone</a> turns out to be workable for a lot of people.</p>
<p>A second Mac is different. You write on both, you think on both, and a note started on one and needed on the other is not an edge case, it is Tuesday. The workarounds that cover a phone do not cover this, and pretending otherwise wastes your time.</p>
<h2 id="first-the-question-that-decides-it">First, the question that decides it</h2>
<p><strong>Do you use both machines in the same week, or in different weeks?</strong></p>
<p>Same week — desktop at the desk, laptop on the sofa, both most days — and you genuinely need sync. Nothing below is adequate, and buying software that syncs is the right decision. Say so early rather than fighting it for a month.</p>
<p>Different weeks — the desktop is where work happens and the laptop comes out when travelling, or a work machine and a personal machine with a hard line between them — and you do not have a sync problem. You have a <em>handover</em> problem, which is much easier, and the arrangements below solve it.</p>
<p>Most two-Mac setups are the second kind and are treated as the first, which is where the frustration comes from.</p>
<figure><img src="/images/two-macs.svg" alt="One local database, one machine at a time — the arrangement that works when the two Macs are used in different weeks rather than the same one" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>Concurrent editing needs sync. Handover does not.</figcaption></figure>
<h2 id="the-four-arrangements">The four arrangements</h2>
<p><strong>One machine is the home, the other borrows.</strong> The desktop holds everything. Before a trip, export or copy across what you will need; when you get back, bring the new material over. Deliberate, unglamorous, and it fails exactly once — the time you forget, and need the note you did not bring.</p>
<p><strong>Split by domain, not by device.</strong> Work on the work machine, personal on the personal one, and no attempt to unify. This is the arrangement most people who have solved it actually use, and its strength is that the split is real rather than administrative: your employment contract and your privacy both point the same way. The rule to hold is that nothing lives in two places, because two half-collections is the worst outcome available.</p>
<p><strong>A file you carry.</strong> The whole collection exports to one file; the file lives on a USB stick, an external SSD, or your own server. Copy it over, work, copy it back. This is the arrangement everyone thinks is primitive and it is genuinely fine for handover — a single file, moved deliberately, with no ambiguity about which copy is current.</p>
<p><strong>Actual sync, from something built for it.</strong> Obsidian syncs a folder of files. Apple Notes syncs through iCloud. Notion is a browser away. If you are in the same-week case, this is the answer and it is not a compromise.</p>
<h2 id="the-one-thing-not-to-do">The one thing not to do</h2>
<p>Do not put a live app database in iCloud Drive or Dropbox and call it sync.</p>
<p>It is the obvious move and it is the one that corrupts data. A file-sync service copies whole files after they change; a database is written continuously, often in more than one file, with a journal that must stay consistent with the main file. Two machines writing to that arrangement produces either a conflicted copy or a silently chosen winner, and neither preserves a database's internal consistency.</p>
<p>The failure is not immediate, which is what makes it dangerous. It works for weeks. Then one day both machines were open, and you have two divergent versions and no way to merge them.</p>
<p>If an app lets you relocate its storage, moving it to an external disk is fine — one machine at a time, mounted deliberately. Moving it into a folder that two machines are actively syncing is a different thing entirely.</p>
<h2 id="making-handover-reliable">Making handover reliable</h2>
<p>If you are in the handover case, three habits make it stop failing.</p>
<p><strong>Have one direction at a time.</strong> Decide, out loud, which machine is authoritative right now. Ambiguity about which copy is current is the entire problem, and a rule as crude as "the laptop is authoritative while I am away" resolves it completely.</p>
<p><strong>Do the copy at a fixed moment.</strong> Not when you remember — as part of packing, and as part of unpacking. Attaching it to something you already do is the difference between a habit that survives and one that does not, which is the same reason <a href="/blog/checklists-for-things-you-do-every-week/">routines beat intentions</a>.</p>
<p><strong>Take the export anyway, on both machines, on a schedule.</strong> The handover copy is not a backup, and the moment you have two machines is the moment you will eventually overwrite the wrong one. <a href="/blog/backing-up-local-notes/">A backup is a copy that does not change when the original does</a> — the handover file changes constantly, which disqualifies it.</p>
<h2 id="what-you-gain-by-not-syncing">What you gain by not syncing</h2>
<p>Worth stating, since this reads as a list of limitations.</p>
<p>There is no sync conflict, ever. Anyone who has used syncing notes software for years has a story about a note that became two notes, or a paragraph that vanished on one device, or a merge that ate an afternoon. That entire category of failure does not exist when there is one copy.</p>
<p>There is no account, no server holding your work, and no subscription tied to being able to open your own notes. And every machine opens instantly, because opening does not involve asking anything.</p>
<p>Those are real, and they are exactly what you are trading for the convenience of not thinking about which machine you are on. Whether the trade is good depends entirely on the answer to the question at the top.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you work on two Macs in the same week, buy software that syncs. That is the whole recommendation and no amount of discipline substitutes for it.</p>
<p>If your second machine is occasional — travel, a sofa, a job you keep separate — then handover is a smaller problem than sync, and treating it as a sync problem is what makes it feel unsolvable.</p>
<p>Cyanote is a single-machine app and does not pretend otherwise: one SQLite database on your own disk, no account, no sync service. What it gives you for handover is a JSON export of everything — notes, tasks, calendar, habits, routines, clipboard, images — that restores on another Mac, replacing what is there rather than merging into it, and writing a rescue copy of the old data first. Settings will also move the database wherever you want, including an external disk. That is a deliberate handover mechanism, and it is not a substitute for sync. The licence covers installing it on the computers you personally own, so the second Mac costs nothing extra.</p>]]></content:encoded>
      <category>Local-first</category>
      <category>Workflow</category>
      <category>macOS</category>
    </item>
    <item>
      <title>Travel notes that work when the connection does not</title>
      <link>https://cyanote.app/blog/travel-notes-that-work-offline/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/travel-notes-that-work-offline/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Everything you need abroad is behind a login, in an app that wants a connection, on a phone with no data. Twenty minutes before you leave fixes it.</description>
      <content:encoded><![CDATA[<p>The failure is always the same shape and it always happens at the worst point in the trip.</p>
<p>You land. There is no data yet, or the eSIM has not activated, or you are in the one part of the airport with no signal. You need the address of where you are staying, which is in a confirmation email, in an app that wants to sync before it will show you anything. Or the booking reference, in a PDF you never downloaded. Or the code for the door, in a message thread you cannot load.</p>
<p>None of this is a hard problem. It is entirely a <em>before you leave</em> problem, and it takes twenty minutes.</p>
<h2 id="the-one-page-note">The one-page note</h2>
<p>Everything you might need at the moment you have no connection, in one note, on the device, in text.</p>
<p><strong>Where you are staying.</strong> The full address, in the local language and script as well as your own — you may need to show it to a driver rather than read it. The check-in time, the door code, the host's phone number.</p>
<p><strong>Every booking reference.</strong> Flight, train, hotel, car, tour. Just the strings. A reference number is twelve characters and it is what every desk actually asks for.</p>
<p><strong>Departure details.</strong> Flight number, terminal, the time you need to leave. This is the one people assume they will remember and then do not, at 5am.</p>
<p><strong>Two phone numbers.</strong> Whoever you are staying with, and whoever at home should know if something goes wrong.</p>
<p><strong>Your insurance policy number and the claims line.</strong> The single most useful line in the note and the one most often missing. If you need it, you will need it under conditions where finding an email is not going to happen.</p>
<p><strong>The embassy or consulate address.</strong> Thirty seconds to add, and it is the classic thing you cannot look up in the situation where you want it.</p>
<p><strong>Anything with a code in it.</strong> Locker codes, entry codes, wifi passwords you were sent in advance.</p>
<p>One note, plain text, no images, no links to anything. Links are the failure — a note that says "see the confirmation email" is a note that does not work.</p>
<figure><img src="/images/calendar.webp" alt="One note with the addresses, references and numbers, in the same app as everything else and readable with the radios off" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Everything in the note has to be text. A link to a booking is a link that needs a connection.</figcaption></figure>
<h2 id="why-it-s-in-my-email-fails">Why "it's in my email" fails</h2>
<p>Three reasons, and they compound.</p>
<p><strong>Mail apps sync on demand.</strong> The message is often not on the device until the app fetches it, and with no data, an old message may simply not be there.</p>
<p><strong>Attachments especially.</strong> A PDF boarding pass or booking confirmation is frequently not downloaded until you tap it. That tap needs a connection.</p>
<p><strong>Search is the wrong interface at that moment.</strong> You are standing up, holding a bag, in a queue. Scrolling a mail app for a confirmation from three weeks ago is not something you want to be doing then.</p>
<p>The same applies to any app that says it works offline. <a href="/blog/what-still-works-with-the-wifi-off/">Offline-tolerant and offline-capable are different things</a>, and the difference presents at exactly this moment.</p>
<h2 id="the-twenty-minutes-before-you-go">The twenty minutes before you go</h2>
<p><strong>Write the note.</strong> Fifteen minutes, from the confirmations, once.</p>
<p><strong>Screenshot the things that must be images.</strong> Boarding passes, QR codes, tickets. A screenshot lives in the photo library on the device and needs nothing. Do not rely on a wallet app you have not tested offline.</p>
<p><strong>Download the offline map.</strong> Both Google Maps and Apple Maps can hold a region on the device. This is the highest-value single item on the list and it takes two minutes.</p>
<p><strong>Turn off wifi and read your own note.</strong> The test. If anything is a link, a preview, or a "tap to load", fix it now. Five minutes, and it is the step that turns preparation into something you have verified.</p>
<p><strong>Send the note to whoever is travelling with you</strong>, or to whoever at home should have it. Redundancy across people is worth more than redundancy across devices.</p>
<h2 id="what-goes-in-the-calendar-instead">What goes in the calendar instead</h2>
<p>The note is for lookups. The calendar is for anything with a time on it, and the distinction is worth keeping.</p>
<p>Flights, trains, check-in and check-out, anything booked for a specific hour. With the reference number in the event's notes, so the calendar entry is self-sufficient.</p>
<p>Two things worth knowing about calendars abroad:</p>
<p><strong>Time zones.</strong> An event created at home for a local time abroad will shift if it was stored in your home zone. Check the day before you fly, not on the morning.</p>
<p><strong>Subscribed calendars do not update offline.</strong> If your travel plans arrive in a <a href="/blog/calendar-without-signing-in/">subscribed feed</a>, the events are only there if it refreshed before you lost signal. Anything critical should be an event you created, not one you are borrowing.</p>
<h2 id="while-you-are-there">While you are there</h2>
<p>The note is also where the trip gets recorded, which is a second use nobody plans for and everyone wants afterwards.</p>
<p><strong>The address of the place you liked.</strong> You will not remember the name of the restaurant. Write it down at the table, in four words, while you are paying.</p>
<p><strong>What you spent, roughly.</strong> Not accounting — a rough daily figure. It is the only way to know what a trip actually costs, and it makes the next one much easier to plan.</p>
<p><strong>The name of the person who helped you.</strong> For the thank-you, or the review, or the next visit.</p>
<p><strong>What went wrong.</strong> Read on the way home, before the next trip, this is worth more than any packing list on the internet, because it is about your mistakes rather than a stranger's.</p>
<p>All of that wants to be in the same note or a note next to it, in an app that works with the radios off and does not need you to log into anything.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you are travelling with data everywhere, roaming that works and a phone you trust, most of this is redundant and you will be fine. The advice is for the gap between landing and having a connection, and for the countries and situations where that gap is longer than an hour.</p>
<p>The version for people who will do one thing: write the address of where you are staying and the flight home in a plain note on the phone, and download the offline map. Those two cover most of what actually goes wrong.</p>
<p>Cyanote is the desk half of this — write the note, hold the trip's details, keep the record afterwards, all in a local database that works with the wifi off because nothing about it ever needed a connection. Events carry a time, a place and notes, and repeat if the trip does. There is no phone app, so the note itself has to travel: send it to yourself or export it before you go, which is <a href="/blog/getting-a-note-to-your-phone-without-sync/">the same handover question</a> that applies to any single-machine setup — and worth doing deliberately, since a travel note is precisely the kind you need somewhere other than your desk.</p>]]></content:encoded>
      <category>Travel</category>
      <category>Offline</category>
      <category>How-to</category>
    </item>
    <item>
      <title>The forty tabs you are keeping open</title>
      <link>https://cyanote.app/blog/the-tab-you-are-keeping-open/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-tab-you-are-keeping-open/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Open tabs are a to-do list with no dates, no priorities and no way to search it. Every one is there for one of four reasons, and each has a different fix.</description>
      <content:encoded><![CDATA[<p>There are forty tabs open. You cannot read the titles. You are not going to close them, because each one is there for a reason, and you cannot remember most of the reasons.</p>
<p>Some have been open for weeks. At least one is a thing you were going to buy in March. You have started opening new windows because the old one is full, and there are now three windows in the same condition.</p>
<p>This is not a browser problem. Open tabs are a to-do list — with no dates, no priorities, no search, and a permanent memory cost — and treating them as a browser problem is why every solution so far has failed.</p>
<h2 id="the-four-reasons-a-tab-is-open">The four reasons a tab is open</h2>
<p>Every tab is one of these, and the fix is different for each. Naming which one is most of the work.</p>
<p><strong>It is a task.</strong> "Cancel this", "reply to this", "buy this". You kept it open because closing it would lose the intention.</p>
<p><strong>It is reference for something you are doing right now.</strong> Documentation, a spec, a page you are working from. Genuinely in use, genuinely temporary.</p>
<p><strong>It is something you want to read.</strong> An article, a long post, a thing someone linked. You will not read it today and you both know it.</p>
<p><strong>It is a fact you might need.</strong> A booking, a code, a piece of information you will want to look up once.</p>
<p>The reason tab managers fail is that they treat all four as one kind of object — a saved link — when three of the four are not links at all. A task is a task. A fact is a note. Only the reading list is genuinely a list of links.</p>
<figure><img src="/images/todo.webp" alt="Tasks with dates, lifted out of the sentence you typed — which is where a third of your tabs actually belong" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>A tab kept open because you must do something is a task with no date. That is the whole diagnosis.</figcaption></figure>
<h2 id="the-fix-for-each">The fix for each</h2>
<p><strong>Tasks become tasks.</strong> With a date. "Cancel the gym membership, Friday." One sentence, thirty seconds, and the tab closes. This is usually a third of your tabs, and it is the category where the browser is doing the worst job — a task with no date and no list is not tracked, it is just visible, and visibility is not tracking.</p>
<p><strong>Reference stays open, and closes when the work does.</strong> This is the legitimate use and it needs no system. The rule that helps: when you finish the piece of work, close its tabs, deliberately. It is the same reason <a href="/blog/checklists-for-things-you-do-every-week/">a shutdown routine works</a> — a closing ritual is what stops today's context becoming tomorrow's clutter.</p>
<p><strong>Reading goes on one list, and the list gets pruned.</strong> Not bookmarks, which is where links go to die alphabetically. One note, or a read-later service, and — this is the part everyone skips — an eviction rule. Anything on it for six months that you have not read, delete. You are not going to read it. The list works only if it is short enough to look at, which is the same lesson as <a href="/blog/a-someday-list-that-is-not-a-graveyard/">a someday list</a>.</p>
<p><strong>Facts become notes, in text.</strong> Copy the booking reference, the code, the address into a note. Do not keep the tab. A tab is a pointer to a page that may need a login, may change, may go away, and definitely needs a connection. Four words of text is more durable than the page they came from.</p>
<h2 id="why-bookmarks-did-not-solve-this">Why bookmarks did not solve this</h2>
<p>Everyone has tried. Bookmarks fail for three specific reasons and it is worth knowing them, because they apply to any "save it for later" mechanism.</p>
<p><strong>They are write-only.</strong> Things go in and nobody looks. A bookmark folder from 2021 is not a resource, it is sediment.</p>
<p><strong>They preserve the link, not the reason.</strong> Six months later you have a URL and no idea why you saved it. The reason was the valuable part and it was never recorded.</p>
<p><strong>They are not in the flow of anything.</strong> You do not open your bookmarks while working. You open your notes and your task list, which is exactly why the four categories should go there instead.</p>
<p>The fix for all three is the same: <strong>save the reason, not the link.</strong> One line of what it was and why, with the URL underneath. That is a note, and it is searchable, and it makes sense in a year.</p>
<h2 id="the-one-pass-method">The one-pass method</h2>
<p>Twenty minutes, once. Not tab by tab — that is where people stall, because deciding forty times is exhausting.</p>
<p><strong>Go through and sort into the four buckets</strong>, without acting. Fast. Task, reference, reading, fact.</p>
<p><strong>Then act by bucket.</strong> All the tasks at once — a dated task each, close them. All the facts at once — one note, close them. Reading goes on one list. Reference stays.</p>
<p><strong>Then close the window.</strong> Genuinely. The remaining tabs after this exercise are usually four or five.</p>
<p>Batching by category is the trick. Sorting is fast; deciding what to <em>do</em> is slow, and doing it once per category rather than once per tab is the difference between twenty minutes and never.</p>
<h2 id="the-memory-question">The memory question</h2>
<p>Briefly, since it is the practical cost people notice.</p>
<p>Modern browsers suspend background tabs and reclaim most of the memory, so forty idle tabs cost far less than they used to — the "each tab is 300 MB" folklore is largely out of date. Where it still bites is on <a href="/blog/software-for-an-older-mac/">a machine with 8 GB</a> running several other things, where the browser's share is competing with everything else.</p>
<p>The real cost is not memory anyway. It is that a window with forty tabs is unnavigable, so you open new windows, and now your working context is scattered across three of them. The friction is cognitive and it shows up as never quite knowing where anything is.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>You will do this and be back to thirty tabs within a fortnight. That is not failure — tabs accumulate because working generates them, and a browser with four tabs is a browser belonging to someone who is not doing much.</p>
<p>What changes permanently is the <em>habit at the moment of opening</em>: noticing that this tab is a task, and writing it as a task rather than leaving it open as a reminder. That one substitution keeps the count from becoming forty, and it takes thirty seconds each time.</p>
<p>Cyanote covers three of the four buckets in one window: tasks with a date lifted out of a typed sentence, notes for the facts and the reasons, and a list for the reading with everything searchable a year later by any word in it. The fourth bucket — the tabs you are genuinely working from — should stay open, and closing them when the work is done is the one part no software can do for you.</p>]]></content:encoded>
      <category>Workflow</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>The snippets you retype every week</title>
      <link>https://cyanote.app/blog/the-snippets-you-paste-every-week/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-snippets-you-paste-every-week/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Clipboard history is for what you copied. Snippets are for what you paste over and over. They look like the same feature and solve opposite problems.</description>
      <content:encoded><![CDATA[<p>There is a short list of text you have typed hundreds of times. Your address. Your VAT number. The bank details you send to clients. The SSH command with the right flags. The paragraph you write to decline a meeting politely. The regex you always get wrong on the first attempt.</p>
<p>None of it is hard to type. That is exactly why it never gets fixed — each instance costs fifteen seconds, and fifteen seconds never feels like it justifies solving anything.</p>
<h2 id="why-this-is-not-the-same-as-clipboard-history">Why this is not the same as clipboard history</h2>
<p>They look like one feature. They are opposites, and conflating them is why people install a clipboard manager and still retype their address.</p>
<p><strong>Clipboard history is a record of the past.</strong> Everything you copied, newest first, mostly noise, occasionally the thing you copied twenty minutes ago and then overwrote. It answers "what did I copy earlier". Its defining property is that it fills up and scrolls away — that is the design working, since the whole point is recency.</p>
<p><strong>Snippets are a chosen library.</strong> A small number of items you decided to keep, which do not scroll away, because they are not from anywhere. They answer "give me the thing I always need". Their defining property is stability.</p>
<p>Put them in the same list and each ruins the other: your address sinks under four hundred URLs within a day, and the history gets cluttered with pinned items that are not part of the story it is telling. The apps that get this right keep two lists with two shortcuts. The apps that get it wrong offer one list with a star icon, and nobody's address survives the month.</p>
<figure><img src="/images/clipboard.webp" alt="Copied items and kept items in the same window but not the same list — history scrolls, pinned snippets do not" width="1400" height="912" loading="lazy" decoding="async" /><figcaption>The list on the left is a record of what happened. A snippet library is a decision. Mixing them destroys both.</figcaption></figure>
<h2 id="what-actually-belongs-in-a-snippet-library">What actually belongs in a snippet library</h2>
<p>The test is simple: <strong>would you be annoyed to lose it, and do you produce it from memory more than once a month?</strong></p>
<p>That usually comes out as:</p>
<ul><li><strong>Identity boilerplate.</strong> Address, phone number, company registration, VAT or tax number, bank details, the exact spelling of your own job title.</li><li><strong>Commands with flags.</strong> The <code>ssh</code> line, the <code>ffmpeg</code> incantation, the <code>rsync</code> with the trailing slash that matters. Anything you once spent an afternoon getting right.</li><li><strong>Replies you send often.</strong> Declining politely. Chasing an invoice. The onboarding paragraph every new client gets.</li><li><strong>Structural text.</strong> A meeting agenda skeleton, a commit message format, the standard header for a document.</li><li><strong>Things that are hard to type correctly.</strong> An em dash. A character your keyboard does not have. A long ID you would transpose two digits of.</li></ul>
<p>Twelve to twenty items covers almost everyone. If your library reaches sixty, it has quietly become a notes app with worse search, and the items past twenty are ones you will never find in time to use.</p>
<h2 id="what-does-not-belong">What does not belong</h2>
<p><strong>Anything secret.</strong> Passwords, API keys, recovery codes. A snippet library is a convenience feature with a keyboard shortcut, usually stored in plain text, and reachable by anything running as you. Those belong in a password manager, which is built for exactly this and encrypts at rest. The convenience is not worth it, and the failure mode is not recoverable.</p>
<p>Worth knowing on the same subject: well-behaved clipboard managers on macOS honour the flag password managers set to mark a copy as private, so a copied password is not recorded in the history. That is the correct behaviour, and it is worth verifying in whatever you use — copy a password, then open the history and check it is not there.</p>
<p><strong>Things that change.</strong> A snippet with last quarter's figures in it is a trap: it works perfectly, silently, with the wrong number.</p>
<p><strong>Anything you would need to read before pasting.</strong> If you have to check the snippet is the right one, it is a note, not a snippet. Snippets are for text you trust without reading.</p>
<h2 id="snippets-versus-text-expansion">Snippets versus text expansion</h2>
<p>Two mechanisms, and it is worth knowing which you want.</p>
<p><strong>Text expansion</strong> replaces an abbreviation as you type: you type <code>;addr</code> and your address appears. macOS has this built in under Keyboard settings, and dedicated tools go much further with variables, dates and fill-in fields. It is the fastest possible route — zero interruption, no window, no picking.</p>
<p>The cost is that you have to remember the abbreviation. For five items you use daily, you will. For twenty items you use monthly, you will not, and an expansion you cannot remember is an expansion that does not exist. There is also the occasional indignity of an abbreviation firing inside a real word.</p>
<p><strong>A picker</strong> — a shortcut that opens a small window of your snippets, and you choose — costs one extra second and requires remembering nothing. That makes it the right shape for the long tail, and it degrades gracefully: if you cannot remember which snippet you want, you can look.</p>
<p>Most people who use both end up with expansion for the daily five and a picker for the rest.</p>
<h2 id="the-detail-that-decides-whether-you-use-it">The detail that decides whether you use it</h2>
<p>Where the pasted text lands.</p>
<p>A snippet tool is used <em>while you are in another app</em> — the email, the terminal, the form. If picking a snippet means switching to the snippet app, copying, switching back, and pasting, you have replaced fifteen seconds of typing with fifteen seconds of window management and you will stop within a week.</p>
<p>The version that works: a global shortcut opens a small window over whatever you are in, you pick, it pastes into the app you were in, and that app is in front again with focus where you left it. No visible switch. It is the same design requirement as <a href="/blog/mac-app-notes-and-clipboard/">a clipboard history that comes to you</a> rather than making you go to it — and it is the single thing worth testing before you commit to any tool in this category.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you want serious snippet management — variables, cursor positions, date maths, per-app rules, shared team libraries — a dedicated tool is the answer. TextExpander and Alfred have spent many years on this, and Raycast has a well-liked free tier that covers snippets and clipboard history together. None of that is being out-featured by a panel bundled into a notes app.</p>
<p>What the bundled version is for is the ordinary case: fifteen items, no variables, reachable without leaving what you were doing. That case is most people, and the deciding factor is not depth of features — it is whether the thing appears over your email and puts you back where you were.</p>
<p>Cyanote keeps the two lists separate and gives each its own shortcut: <code>⌥⇧V</code> opens the clipboard history over whatever app you are in, <code>⌥⇧B</code> opens pinned snippets, and both paste into that app and hand the foreground back. Copies your password manager marks as private are never recorded at all. Everything lives in the same local database as the notes, which means the snippet library is on your disk and in your backup rather than in a service.</p>]]></content:encoded>
      <category>Clipboard</category>
      <category>Workflow</category>
      <category>Productivity</category>
    </item>
    <item>
      <title>The first week with a new notes app</title>
      <link>https://cyanote.app/blog/the-first-week-with-a-new-notes-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-first-week-with-a-new-notes-app/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The setup weekend is what kills the system three months later. Here is the version that takes ten minutes and leaves the structure to be discovered.</description>
      <content:encoded><![CDATA[<p>You have installed something new. There is an empty sidebar, a blank note, and a settings panel with a lot in it.</p>
<p>The temptation is enormous and it is always the same: spend the afternoon setting it up properly. Build the folder structure. Decide the tag taxonomy. Make templates for everything. Import the old notes. Choose a theme, then a different theme.</p>
<p>That afternoon is the single most reliable predictor of abandoning the app by March, and the reason is not obvious.</p>
<h2 id="why-the-setup-weekend-kills-it">Why the setup weekend kills it</h2>
<p><strong>You are designing for a collection that does not exist.</strong> Every structural decision made on day one is a guess about material you have not written yet. The guesses are usually wrong, and wrong structure is worse than none — it makes every subsequent capture a filing decision, and filing decisions are where systems die.</p>
<p><strong>It front-loads all the pleasure.</strong> Setting up is genuinely enjoyable, and it produces the feeling of having done something. That feeling is spent before you have written anything, and what remains is the ordinary, unremarkable business of using the thing.</p>
<p><strong>It creates sunk cost, which distorts judgement.</strong> Having spent six hours, you will persist with an arrangement that is not working, and then quit all at once rather than adjusting.</p>
<p><strong>Importing everything makes it stale on day one.</strong> You now have a new app that already feels like the cluttered one you left. <a href="/blog/leaving-evernote/">The archive can stay where it is</a>; the working set is what needs to move, and it is a few hundred notes at most.</p>
<h2 id="the-ten-minute-setup">The ten-minute setup</h2>
<p>Genuinely all of it.</p>
<p><strong>Turn on the two things that affect comfort.</strong> Text size and theme, if the defaults are wrong for you. Two minutes, and it is the only settings work that pays back immediately because you will be looking at it for hours.</p>
<p><strong>Learn one shortcut: new note.</strong> Not four. One. <a href="/blog/using-a-mac-app-without-the-mouse/">The others come later</a>, one a week.</p>
<p><strong>Make no folders and no tags.</strong> None. You do not yet know what the categories are, and search will cover you until you do.</p>
<p><strong>Write one real note.</strong> Not a test note — an actual thing you needed to write down today. The first note being real rather than "Hello" matters more than it sounds; it makes the app a place where your work is rather than a thing you are evaluating.</p>
<p>Stop. That is the setup.</p>
<h2 id="the-first-week">The first week</h2>
<p>Use it for capture only, and refuse to organise.</p>
<p>Every time something needs writing down, write it. No folder, no tag, no decision about where. Let it pile up flat. This feels wrong to organised people and it is the whole point — you are collecting evidence about what you actually write, which is the only sound basis for any structure.</p>
<p>Notice two things while you do it:</p>
<p><strong>What you write most.</strong> Almost everyone is surprised. People who thought they needed a project hierarchy discover that 80% of their notes are daily scratch. People who planned for daily notes find they mostly write reference material.</p>
<p><strong>Where the friction is.</strong> The moment you thought "I should write this down" and did not. That specific friction is the thing worth fixing, and it is usually not what you expected — it is rarely a missing feature, and usually the app not being open, or capture requiring a decision.</p>
<h2 id="week-two-add-exactly-one-thing">Week two: add exactly one thing</h2>
<p>Whatever the past week actually demanded. One.</p>
<p>If you kept losing things in the flat pile, add the minimum structure that fixes the specific loss — probably three or four groupings, not eleven. If you kept writing the same shape of note, make one template. If capture friction was the issue, fix that and nothing else.</p>
<p>One change, then another week of use. This is slower than a setup weekend and it produces a structure that fits, because every element of it was added in response to an actual failure rather than an imagined one.</p>
<p>The rule to hold for the first month: <strong>never add structure in anticipation.</strong> Only in response.</p>
<h2 id="what-to-migrate-and-when">What to migrate, and when</h2>
<p>Not in week one. Around week three, once you know the app is going to stick.</p>
<p><strong>The last six months, and the notes you actually reference.</strong> Usually a few hundred at most, and often far fewer.</p>
<p><strong>Not the archive.</strong> Leave it in the old app, or export it to a folder on disk where Spotlight will index it. It is still searchable; it just is not in the way. This is the single biggest difference between a new system that feels clean and one that feels like the old one with a new logo.</p>
<p><strong>Take a full export of the old app regardless</strong>, whether or not you migrate. It costs an hour and it means the decision stays reversible, which is <a href="/blog/what-happens-when-your-notes-app-shuts-down/">true of every move between apps</a>.</p>
<h2 id="the-three-month-test">The three-month test</h2>
<p>The honest evaluation point. Not week two, when everything is new and you are enthusiastic; not week six, when the novelty has gone and everything feels slightly worse than it is.</p>
<p>At three months, ask:</p>
<p><strong>Is everything in one place, or have second locations appeared?</strong> Second locations are the diagnostic. If things are also landing in phone notes, text files and messages to yourself, the app is failing at capture — and that will not be fixed by another app unless you can say specifically why.</p>
<p><strong>Do you search, or do you browse?</strong> Searching means you trust that things are in there. Browsing usually means you do not.</p>
<p><strong>Would you be annoyed to lose it?</strong> If yes, it has become your system. If not, three months of use has told you something.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Everything above is really one instruction: <strong>use it before you design it.</strong> The structure that survives is discovered, not planned, and every hour spent planning is an hour spent guessing about material that does not exist.</p>
<p>If you have abandoned several apps, this is the change most likely to break the pattern — more than the choice of app itself, which is <a href="/blog/the-app-you-keep-replacing/">usually not what went wrong</a>.</p>
<p>Cyanote is built to make the ten-minute version viable. There is nothing you have to set up: <code>⌘N</code> for a new note, <code>⇧⌘D</code> for today's, <code>/</code> inside the editor for any block type, and <code>⇧⌘F</code> to search everything you have written, which is what lets you go without folders for as long as you like. Notes nest into sub-pages when you eventually want structure, and <code>[[</code> links things without filing them. It opens in under a second from one local database on your own Mac — which matters most in exactly the first week, when the habit is either forming or not.</p>]]></content:encoded>
      <category>Method</category>
      <category>Buying advice</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>The productivity app you keep replacing</title>
      <link>https://cyanote.app/blog/the-app-you-keep-replacing/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/the-app-you-keep-replacing/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You have set up seven systems in five years and abandoned all of them. That is a pattern with a cause, and the cause is almost never the app.</description>
      <content:encoded><![CDATA[<p>Count them. The app in 2021 that you set up over a weekend. The one in 2022 with the databases. The plain text phase. The one with the beautiful editor. The one everyone on the internet was using. The one you are on now, which is fine, but you have started reading comparison posts again — which is how it starts.</p>
<p>Nobody replaces a tool that is working. So the interesting question is not which app to try next. It is what keeps happening at around month three.</p>
<h2 id="the-cycle-and-where-it-breaks">The cycle, and where it breaks</h2>
<p>It is the same shape every time.</p>
<p><strong>Weeks one and two: the honeymoon.</strong> Everything goes in. You migrate old material, build the structure, tune the settings. This is genuinely productive-feeling and it is mostly not work — it is setup, which is the most pleasant substitute for work ever invented.</p>
<p><strong>Weeks three to six: real use.</strong> The novelty is gone and the app is now just where your things are. This is the only phase that matters, and it is the one nobody talks about, because there is nothing to say.</p>
<p><strong>Week seven or so: the first gap.</strong> Something does not fit. A capture that is awkward, a view you want that does not exist, a small daily friction. You work around it.</p>
<p><strong>Weeks eight to twelve: the drift.</strong> The workaround becomes a second place things live. Then a third. The system is now partially true, which is worse than not having one, because you cannot trust it — and an untrustworthy system is one you stop consulting.</p>
<p><strong>Then: the search.</strong> Not a decision to quit. A comparison post, read casually. Then a trial. Then a weekend.</p>
<p>The break is always at the same place: the small friction that turned into a second location. Not a missing feature — a moment where the system stopped being the only place.</p>
<h2 id="the-three-real-causes">The three real causes</h2>
<p><strong>Capture friction.</strong> The thing that has to be cheap is putting something in. If capture costs more than a few seconds — a form, a decision about where it goes, an app that has to load — you will occasionally skip it, and every skip creates a second location. This is the cause in most cases, and it is why apps with elaborate structure lose to plain ones over a year.</p>
<p><strong>A structure that outgrew the content.</strong> Eleven categories, four databases, a tagging taxonomy, all designed in week one for a collection that did not exist yet. Every new item now requires a filing decision, and filing decisions are the second most common reason people quietly stop.</p>
<p><strong>Genuine misfit.</strong> Sometimes the app really is wrong: you write code and it mangles code, you need it on a phone and there is no phone app, you need collaboration and it is single-player. This is the honest reason to switch, and it is the rarest of the three.</p>
<p>The first two are not fixed by switching. They travel with you, get rebuilt in the new app during the honeymoon, and produce the same collapse at month three.</p>
<h2 id="how-to-tell-which-one-you-have">How to tell which one you have</h2>
<p>Before the next migration, one afternoon of diagnosis. Cheaper than a weekend of setup.</p>
<p><strong>Where are your things right now, actually?</strong> List every place something you wrote down currently lives. Notes app, phone notes, three text files on the desktop, a Slack DM to yourself, a notebook, an email draft. The length of that list is the real diagnostic — a person with five locations does not have an app problem.</p>
<p><strong>What was the last thing you failed to write down?</strong> And why. "I was on a call and it would have taken too long" is capture friction. "I did not know which project it went under" is structure. "The app was not there" is misfit.</p>
<p><strong>When did you last search rather than browse?</strong> If you never search, you may be maintaining a filing system whose only user does not use it.</p>
<p><strong>What have you rebuilt in every app so far?</strong> That is your actual system, and it is portable. Everything else was decoration you can stop rebuilding.</p>
<h2 id="what-to-do-instead-of-switching">What to do instead of switching</h2>
<p><strong>Cut the structure to nothing and see what you miss.</strong> One flat collection. Search instead of folders. Add structure back only where the absence genuinely hurt. Almost everyone ends up with far less than they had — the argument in <a href="/blog/how-to-organise-notes/">folders, tags, or search</a>, reached the empirical way.</p>
<p><strong>Fix capture first, before anything else.</strong> Whatever the cheapest possible route into your system is, make it cheaper: a shortcut, a default place, a daily note that already exists so there is no decision about where. Capture is the load-bearing part.</p>
<p><strong>Give up on it being complete.</strong> The pursuit of one place for everything is what generates the churn, because completeness is unachievable and every gap reads as failure. A system holding the 80% that matters, consistently, beats a system that held everything for six weeks.</p>
<p><strong>Then wait.</strong> Do not evaluate a system in its honeymoon. Three months is the shortest interval that tells you anything.</p>
<h2 id="when-switching-genuinely-is-right">When switching genuinely is right</h2>
<p>To be clear, because "the problem is you" is a lazy answer and sometimes wrong.</p>
<p>Switch when the misfit is structural and specific: the app cannot hold what you write (code, long documents, images), it is not on a device you genuinely need, it costs money you would rather not spend on a subscription, it is slow enough that you avoid opening it, or the company is in trouble and <a href="/blog/what-happens-when-your-notes-app-shuts-down/">your data needs to be somewhere it can leave</a>.</p>
<p>Those are reasons. "I saw a video of someone's beautiful setup" is not a reason; it is the beginning of week one.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>The uncomfortable part is that most of the value in any of these apps is available in almost all of them, and the difference between the one you left and the one you are considering is smaller than the cost of moving. What varies is not capability but friction — how cheap capture is, how fast it opens, how little it asks of you before it accepts a sentence.</p>
<p>If you have abandoned four systems, the fifth is unlikely to be different unless something other than the logo changes.</p>
<p>Cyanote is built around exactly that diagnosis, which is why it is one window rather than five apps and why it opens in under a second: the two failure points are capture cost and things living in more than one place. It holds notes, tasks, a board, a calendar, habits, routines and clipboard history in a single local database with no account. It will not fix a structure problem you bring with you — nothing will — and if what you have been missing is a phone app or collaboration, it does not have those either. But if what keeps breaking is that writing something down was too expensive at the moment it occurred to you, that is the part it is designed around.</p>]]></content:encoded>
      <category>Method</category>
      <category>Buying advice</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>Taking notes on what you read, without a highlighting app</title>
      <link>https://cyanote.app/blog/taking-notes-on-what-you-read/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/taking-notes-on-what-you-read/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Highlights are not notes. They are a record of what interested you for four seconds. Here is what to do instead, and how much less of it there is.</description>
      <content:encoded><![CDATA[<p>I have a folder of highlights from about sixty books. I have referred back to it maybe four times, and on three of those I could not work out why I had highlighted the sentence.</p>
<p>This is the common case, and it is not a discipline failure. Highlighting is a genuinely poor note-taking technique wearing the costume of a good one: it produces visible output, it feels like engagement, and it requires no thought at the moment it happens — which is precisely the problem, because the thinking is the part that makes a note worth having later.</p>
<h2 id="why-highlights-do-not-work">Why highlights do not work</h2>
<p><strong>They record attention, not understanding.</strong> A highlight means "this seemed important for four seconds". Four seconds is not enough to know whether it is important, and by the time you find out, you have lost the context that would tell you.</p>
<p><strong>They are the author's words.</strong> Which is why they read as inert later: you are looking at a sentence somebody else wrote, with none of the reason you cared about it. The thing you actually wanted to keep — what it connected to, what you disagreed with, what it changed — was never written down.</p>
<p><strong>They scale badly in the wrong direction.</strong> A well-read year produces thousands of highlights, and a pile of thousands is not a resource. It is a second library, with worse search than the first one.</p>
<p><strong>The export is the trap.</strong> Getting all your highlights into a notes app feels like completing the system. It is completing the <em>collection</em>, which was never the hard part. Nobody has ever been short of material.</p>
<h2 id="the-only-reading-note-that-works">The only reading note that works</h2>
<p>One question, asked after you finish something: <strong>what would I tell someone about this?</strong></p>
<p>Then write the answer, in your own words, in a few sentences. That is the whole method.</p>
<p>It works because it forces the two things highlighting skips. You have to have understood it, since you cannot summarise what you did not follow. And you have to compress it, which is where the actual thinking happens — deciding what mattered is the intellectual work, and a highlighter lets you skip it entirely.</p>
<p>The output is small. A book becomes a paragraph or two, maybe a page for something genuinely dense. That feels like too little to people who are used to fifty highlights per book, and it is worth more, because you will actually read it again.</p>
<figure><img src="/images/note.webp" alt="A reading note: a few sentences in your own words, with the source and the date, in the same collection as everything else" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>A book becomes a paragraph. That is not a loss of information; it is what remembering looks like.</figcaption></figure>
<h2 id="what-to-write-down-while-reading">What to write down while reading</h2>
<p>Not nothing — but much less than the highlighting instinct wants.</p>
<p><strong>The page number and one word.</strong> Enough to find your way back to something you want to think about, without stopping to think about it now. Reading and note-taking are different modes and doing both at once damages the reading.</p>
<p><strong>Anything you disagreed with.</strong> Disagreement is the highest-value thing to capture, because it is where your existing model met a different one. It is also the thing that evaporates fastest — you will not remember, tomorrow, that you thought chapter four was wrong.</p>
<p><strong>Anything that connected to something else you know.</strong> "This is the same argument as X." Those connections are the entire reason to read widely, and they are ephemeral.</p>
<p><strong>Quotes, rarely.</strong> Save the exact words when the exact words matter — a definition, a formulation you could not improve. That is a handful per book, not fifty.</p>
<h2 id="cornell-and-where-the-old-methods-still-hold">Cornell, and where the old methods still hold</h2>
<p>The formats that survived from an era before software mostly survived for a reason.</p>
<p><strong>Cornell notes</strong> split the page into a wide column for notes taken during, a narrow column for questions written after, and a summary at the bottom. The reason it works is the second pass: the cue column forces you to reread and ask what each part was for, which is retrieval practice rather than transcription. It was designed for lectures and it is equally good for a dense chapter.</p>
<p><strong>A summary at the bottom</strong> is the part to keep even if you skip everything else. It is the same "what would I tell someone" question, given a fixed place to live.</p>
<p>The mistake people make importing these into software is reproducing the visual layout — two columns, a box — and dropping the discipline, which was never about layout. A plain note with your summary at the top does the same job. Layout is the least transferable part of any method.</p>
<h2 id="where-reading-notes-should-live">Where reading notes should live</h2>
<p>Not in their own app, and this is the practical part.</p>
<p>A reading note is only valuable when it turns up next to something else — when you are writing about a topic and the thing you read in March is right there. That happens if the notes are in the same collection as everything else you write, and it does not happen if they are in a dedicated reading app you open when you are being a Reader.</p>
<p>Two mechanics make the difference:</p>
<p><strong>They have to be findable by content.</strong> You will not remember which book said the thing. You will remember a word from it. That is <a href="/blog/searching-your-own-notes/">a full-text search question</a>, and it is the whole retrieval story for reading notes.</p>
<p><strong>They should link to the things they relate to.</strong> A reading note that mentions <code>[[a project you are working on]]</code> shows up on that project's page without you having filed it there. This is the one place the <a href="/blog/linking-notes-without-a-second-brain/">linking habit</a> pays off fastest, because reading notes are exactly the material you cannot predict the future use of.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you are doing academic work — citations, page-accurate references, a bibliography that has to be correct — you want a reference manager, and Zotero is free, open-source and very good at exactly this. Nothing in a general notes app replaces it, and trying to run a dissertation out of a folder of paragraphs is a bad idea.</p>
<p>If you read to think rather than to cite, the method above is most of what there is, and it is unusually low-tech: one question, a few sentences, somewhere searchable.</p>
<p>Cyanote has Cornell and reading-note templates in the <code>/</code> menu, and both are meant as starting shapes rather than a system to adopt. Reading notes sit in the same collection as everything else, searchable by any word in them with <code>⇧⌘F</code>, linkable with <code>[[</code> so they surface next to whatever they relate to. It is all one database on your own disk, so a decade of reading notes stays yours regardless of what happens to any app — including this one.</p>]]></content:encoded>
      <category>Method</category>
      <category>Notes</category>
      <category>Reading</category>
    </item>
    <item>
      <title>Staying informed without drowning in it</title>
      <link>https://cyanote.app/blog/staying-informed-without-drowning/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/staying-informed-without-drowning/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You read four hours a week and could not summarise any of it. The problem is not the volume of what you read. It is that none of it was written down.</description>
      <content:encoded><![CDATA[<p>Think about what you read last week — news, feeds, posts, whatever your version is. Now try to say what you learned.</p>
<p>Most people can produce almost nothing, from several hours of reading. Not because the material was worthless, but because reading without writing produces a sensation of being informed and very little retention, and the sensation is convincing enough that nobody investigates it.</p>
<p>The problem is not volume, and reading less does not by itself fix it. Reading four hours and retaining nothing and reading one hour and retaining nothing differ only in the hours.</p>
<h2 id="the-three-failure-modes">The three failure modes</h2>
<p><strong>The scroll.</strong> Continuous partial reading, mostly headlines and openings, producing a general awareness that things are happening and no specific knowledge of any of it. The most common by a wide margin.</p>
<p><strong>The saved pile.</strong> Read-later services and a folder of tabs. Saving feels like reading and it is a substitute for it — the pile grows, occasionally gets declared bankrupt, and produces roughly nothing over its lifetime. <a href="/blog/a-someday-list-that-is-not-a-graveyard/">The same failure as an unpruned someday list</a>.</p>
<p><strong>Following without accumulating.</strong> You genuinely read about a topic, regularly, over years, and cannot say what your view is — because each piece was consumed in isolation and nothing ever built.</p>
<p>All three are the same missing step. Nothing is written down, so nothing accumulates.</p>
<h2 id="one-note-per-topic-not-per-article">One note per topic, not per article</h2>
<p>The change that fixes it.</p>
<p>Do not save articles. Keep a note per <em>thing you care about</em> — three or four of them, not thirty — and add to it when you read something worth adding.</p>
<p>Two or three lines: what this piece claimed, whether it changed your view, and the source. Over a year that note is a genuinely informed position, assembled from a hundred small readings, in your own words. It is the thing you wanted when you started reading about the subject, and no reading list ever produces it.</p>
<p>The reason it works is that adding to a topic note forces the step reading skips: deciding what this piece actually said and whether you believe it. That decision is the whole of the value, and it takes about forty seconds.</p>
<figure><img src="/images/note.webp" alt="One note per topic, added to over months, rather than a folder of articles nobody opens" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>A hundred small readings become a position. A hundred saved articles become a folder.</figcaption></figure>
<h2 id="what-is-worth-writing-down">What is worth writing down</h2>
<p>Not summaries of the article — the article summarises itself and you can find it again.</p>
<p><strong>Anything that changed your mind.</strong> The most valuable and the rarest. Note what you thought before, which is the part that evaporates.</p>
<p><strong>A number worth remembering</strong>, with its source and date. Numbers without sources are how people end up confidently wrong.</p>
<p><strong>A claim you want to check.</strong> Rather than accepting it or dismissing it, park it. This is the single best defence against absorbing something because it was stated confidently.</p>
<p><strong>A connection to something else you know.</strong> Where understanding actually comes from — <a href="/blog/an-idea-bank-for-writing/">the same material an idea bank collects</a>.</p>
<p><strong>What you now think.</strong> One line, occasionally. Your view, dated. Rereading your own view from two years ago is unusually informative, and unavailable any other way.</p>
<h2 id="the-three-day-rule">The three-day rule</h2>
<p>Practical filter for anything that is news rather than knowledge.</p>
<p><strong>If it is genuinely important, it will still be there in three days</strong>, better reported, with the corrections already made. The first version of a breaking story is routinely wrong in details and sometimes in substance, and reading it costs attention and then costs it again when the accurate version appears.</p>
<p>Deliberately waiting produces a strictly better version of the same information at lower cost. It also removes most of the emotional weight, which is largely a function of immediacy rather than importance.</p>
<p>This is the single change with the biggest effect on how much reading feels like drowning.</p>
<h2 id="sources-briefly">Sources, briefly</h2>
<p>Two observations, both unfashionable.</p>
<p><strong>A small number of good sources beats a large number of any.</strong> Three or four things you actually read beats forty subscriptions you skim. The marginal source adds volume, not information, because sources overlap enormously.</p>
<p><strong>Pull beats push, here as elsewhere.</strong> A feed reader you open is better than notifications that arrive, for the same reason <a href="/blog/reminders-you-do-not-start-ignoring/">it is true of reminders</a>: pushed information arrives when you cannot think about it, and gets processed with the reflex rather than the attention.</p>
<h2 id="the-quarterly-read-back">The quarterly read-back</h2>
<p>Fifteen minutes, and it is what turns notes into knowledge.</p>
<p>Read your topic notes. Three things happen: you find you know more than you thought, which is genuinely encouraging; you find predictions you made that were wrong, which is instructive and slightly uncomfortable; and you find the topics you have stopped adding to, which is a signal you have stopped caring about them and can stop reading about them.</p>
<p>That last one is how the list of things you follow stays small. Topics you no longer add to are topics you can drop, and dropping them is what makes room.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Some reading is for pleasure and should not be processed at all. A novel, a good essay, something interesting for its own sake — writing notes about that is a way of turning enjoyment into homework, and it is why some people ruin reading for themselves.</p>
<p>This applies to the reading you do because you want to <em>know</em> something, and the test is simple: if you would be annoyed to have retained nothing, write something down. If you would not, do not.</p>
<p>Cyanote holds the topic notes: one per thing you follow, growing over months, searchable by any word in them years later with <code>⇧⌘F</code>, and <code>[[</code> links tying a topic to whatever else it turns out to touch. It has no reader, no feed and no clipper — the article stays where it is, and what you write about it is the part worth keeping. One local database on your own Mac, so a decade of your own views on things you cared about stays yours.</p>]]></content:encoded>
      <category>Method</category>
      <category>Reading</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Software for a Mac that is a few years old</title>
      <link>https://cyanote.app/blog/software-for-an-older-mac/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/software-for-an-older-mac/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A 2018 MacBook is not slow. It is running software written for a machine with twice the memory. Here is what to look for, and what to stop installing.</description>
      <content:encoded><![CDATA[<p>The machine has not got slower. It performs exactly the same operations per second it did when you bought it.</p>
<p>What changed is the software. Apps that shipped in 2018 assuming 8 GB was normal now assume 16, browsers hold more, Electron apps have multiplied on your dock, and macOS itself has grown. The result is a laptop that boots fine and feels terrible by 4pm, and an upgrade suggestion from everyone you ask.</p>
<p>Often the upgrade is not the answer. Sometimes it is. It is worth knowing which.</p>
<h2 id="what-is-actually-happening">What is actually happening</h2>
<p>Almost always memory pressure, which presents as everything being slow rather than one thing being slow — which is why it is hard to attribute and easy to blame the hardware.</p>
<p>When physical memory runs out, macOS compresses what it can and then swaps pages to the SSD. Compression is fast and mostly invisible. Swapping is not: a page fault that has to hit disk costs orders of magnitude more than one served from RAM, and when several apps are competing, you get the characteristic pattern where every click has a small delay attached.</p>
<p><strong>Check it before diagnosing anything.</strong> Open Activity Monitor, go to the Memory tab, and look at the <strong>Memory Pressure</strong> graph at the bottom, not the numbers above it. Green means you are fine, whatever the figures say — high memory <em>usage</em> is healthy, since unused RAM is wasted RAM. Yellow means the system is working to keep up. Red means it is swapping, and red is your actual problem.</p>
<p>Then sort by Memory and read the list. It is usually four or five entries doing nearly all of it, and they are usually the same four or five on everyone's machine.</p>
<figure><img src="/images/today.webp" alt="The same app on any machine: one window, one local database, and nothing loaded that is not on screen" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Software written with a budget runs fine on hardware from five years ago. Most software is not written with a budget.</figcaption></figure>
<h2 id="where-the-memory-goes">Where the memory goes</h2>
<p><strong>Browser tabs.</strong> Almost always first, by a wide margin, and the fix is free. Tab-suspension is built into Safari and Chrome to varying degrees, and closing forty tabs you have not read is more effective than any other change on this page.</p>
<p><strong>Electron apps.</strong> Every app built on Electron ships its own copy of Chromium, so five such apps means five browsers resident. This is the single biggest lever most people have, because the same job can often be done by an app built on the system webview — which is what Tauri does, using WebKit that macOS is already running. Not a moral point about a framework: a point about how many copies of a rendering engine are in memory at once.</p>
<p><strong>Things at login you forgot about.</strong> System Settings → General → Login Items. Most people find two or three they do not recognise and one they installed for a single task in 2022.</p>
<p><strong>Photo and media libraries doing background work.</strong> Indexing, syncing, analysing. Usually finishes eventually. Usually.</p>
<h2 id="what-to-look-for-in-software-for-an-older-machine">What to look for in software for an older machine</h2>
<p><strong>Native or system-webview, not a bundled browser.</strong> The clearest single indicator. You can check: an app around 10–30 MB on disk is not shipping Chromium; one at 200 MB+ probably is.</p>
<p><strong>No server on the critical path.</strong> Software that waits for a network response before drawing is slow on a fast machine and worse on a slow one, because the delays compound. <a href="/blog/why-a-notes-app-should-open-instantly/">An app that reads its own disk</a> is fast on any hardware.</p>
<p><strong>Reads what it needs, not everything.</strong> Apps that load an entire library into memory at launch get worse as your collection grows — the opposite of what you want on constrained hardware.</p>
<p><strong>Stated minimum OS version.</strong> An app requiring the very newest macOS is one you will lose the moment your Mac stops getting updates. An app supporting a few versions back is one that has thought about machines like yours.</p>
<p><strong>A real download rather than a store-only release.</strong> The Mac App Store enforces the current OS more aggressively; direct downloads more often keep older builds available.</p>
<h2 id="what-to-do-first-in-order">What to do first, in order</h2>
<p>Cheapest and most effective first.</p>
<p><strong>Restart.</strong> Genuinely. Weeks of uptime with heavy apps leaves memory fragmented and swap full, and a restart is the fastest possible fix for a machine that has become sluggish over a fortnight.</p>
<p><strong>Close tabs and quit what you are not using.</strong> Free, immediate, and usually enough.</p>
<p><strong>Remove the login items you do not recognise.</strong> Every one is memory and startup time you are paying for continuously.</p>
<p><strong>Replace your two heaviest Electron apps.</strong> Look at the Activity Monitor list, take the top two that are not the browser, and see whether a lighter equivalent exists. This is often the difference between yellow and green.</p>
<p><strong>Check free disk space.</strong> Below roughly 10% free, swapping gets slower and the whole system suffers. This is a surprisingly common cause of "the Mac got slow" with no other explanation.</p>
<p><strong>Then, and only then, consider RAM or a new machine.</strong> On any Mac with Apple Silicon and on most recent Intel models, memory is soldered and cannot be upgraded — so this step means a new machine, which is why it belongs last.</p>
<h2 id="when-it-genuinely-is-the-hardware">When it genuinely is the hardware</h2>
<p>Being honest about the boundary, because "just optimise" is not always the answer.</p>
<p><strong>No more security updates.</strong> Apple supports roughly the current and two previous macOS versions with security fixes. A Mac that cannot run any of those is a real risk if you use it online, and that is the one reason on this list that is not negotiable.</p>
<p><strong>A spinning hard disk.</strong> Any Mac still on a mechanical drive is transformed by an SSD, and if it is a model where that is user-replaceable it is by far the cheapest upgrade available.</p>
<p><strong>8 GB with a workload that genuinely needs more.</strong> Video, large photo libraries, virtual machines, containers, several IDEs. No amount of app selection fixes a real requirement.</p>
<p><strong>A battery that is done.</strong> Cheap to replace, and it is worth knowing this is a battery problem rather than a speed one before you buy anything.</p>
<p>Short of those, a 2018 machine running deliberately chosen software is a perfectly good computer, and the pressure to replace it is coming mostly from other people's engineering decisions.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Software bloat is a real transfer of cost: it moves the price of shipping quickly from the developer to whoever has to run it, and the people who feel that most are the ones who cannot casually replace a laptop. That is worth naming rather than treating as the natural order of things.</p>
<p>Cyanote is built with Tauri, so it draws through the WebView macOS already has rather than shipping its own browser, and it reads from one SQLite file on your disk rather than waiting on a server. It runs on macOS 12 Monterey and newer, as a universal binary covering both Apple Silicon and Intel — which is a deliberate floor rather than an accident, since a fair number of perfectly good Intel Macs are still doing daily work and there is no good reason to shut them out.</p>]]></content:encoded>
      <category>macOS</category>
      <category>Performance</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>What makes a notes app&#x27;s search actually good</title>
      <link>https://cyanote.app/blog/searching-your-own-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/searching-your-own-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Search is the most-used feature in a notes app and the least designed. Three different things get called search, and only one survives a thousand notes.</description>
      <content:encoded><![CDATA[<p>Nobody chooses a notes app for its search. You choose it for the editor, the price, the way it looks at eleven at night. Then you use it for two years, and by the end you are pressing the search shortcut forty times a week and opening the editor to write maybe six new things.</p>
<p>Search is the feature that quietly becomes the app. It is also, in most apps, the least designed part of it — a text field bolted to whatever the database happened to make easy.</p>
<h2 id="three-different-things-get-called-search">Three different things get called "search"</h2>
<p>They feel similar for the first hundred notes and diverge completely after that.</p>
<p><strong>Title matching.</strong> You type "invo" and it shows every note with "invo" in its name. Fast, cheap to build, and useless the moment the thing you want was written inside a note called "Tuesday".</p>
<p><strong>Substring matching.</strong> It scans the body text for the letters you typed. Better — it finds things — but it has no idea which result matters. Type "api" and you get sixty notes in the order they were created, including every one that happens to contain "rapidly" or "capital".</p>
<p><strong>Ranked full-text search.</strong> The app has built an index of the words in every note, so it knows which notes contain your term, how often, and where. Results come back ordered by how well they match rather than by when you happened to write them. This is the one that still works at a thousand notes, and it is the one that costs real engineering to build.</p>
<p>The tell is what happens with two words. Type <code>deploy staging</code> into title matching and you get nothing. Into substring matching and you get everything containing that exact phrase, which is usually also nothing. Into a real full-text index and you get the notes containing both words, best first.</p>
<figure><img src="/images/search-three-kinds.svg" alt="The three things note apps call search, and what each one can and cannot find" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>The first two feel identical to the third until the day you have more notes than you can remember writing.</figcaption></figure>
<h2 id="why-local-search-feels-different-from-cloud-search">Why local search feels different from cloud search</h2>
<p>This is not about which is technically superior. It is about latency, and latency changes behaviour.</p>
<p>When search runs on your own machine, the results can update between keystrokes, because there is nothing to wait for — no request, no round trip, no server deciding whether your session is still valid. You type three letters, glance, type a fourth, glance again. Search becomes something you <em>do while thinking</em>, and a search you can do while thinking gets used for questions you would never bother submitting a query for.</p>
<p>When the index lives on a server, every keystroke either costs a network round trip or the app waits for you to stop typing and press return. Neither is slow in the sense of being broken. Both make search a deliberate act — you have to decide it is worth it before you start. And a search you have to decide about is a search you often skip in favour of scrolling, or of just writing the thing down again.</p>
<p>That is the actual cost of a slow search box: not the seconds, but the notes you rewrite because finding the old one felt like more work than retyping it.</p>
<h2 id="what-you-should-be-able-to-find">What you should be able to find</h2>
<p>Worth checking before you commit two years of writing to something. In a lot of apps the answer to several of these is no, and you will not discover which ones until you need them.</p>
<ul><li><strong>Words inside code blocks.</strong> Plenty of editors exclude them from the index, which is precisely backwards — a command with flags is the single most searchable-for thing anyone writes down.</li><li><strong>Text inside tick boxes and list items.</strong> Structured content sometimes lives outside the searchable body.</li><li><strong>Text in tables.</strong> Same problem, more often.</li><li><strong>Notes nested inside other notes.</strong> If sub-pages are their own documents, do they show up, and can you tell where they live?</li><li><strong>Notes you have locked.</strong> An encrypted note cannot be indexed in plain text without defeating the point. Most apps take the honest route — the content is not searchable while it is locked — but you should know that before you lock the note with the thing you will need to find.</li></ul>
<h2 id="the-command-palette-is-a-different-tool-and-you-want-both">The command palette is a different tool, and you want both</h2>
<p>They get confused because they are both a text field that appears over the app.</p>
<p>A <strong>command palette</strong> — usually <code>⌘K</code> — is for going somewhere you already know exists. You know the note is called "Rent", you press the shortcut, you type <code>ren</code>, you press return. It is navigation, and it should be judged on how few keystrokes get you there.</p>
<p><strong>Search</strong> — usually <code>⇧⌘F</code> — is for finding something whose location you have forgotten, using words that were in it. It is retrieval, and it should be judged on whether the right note is in the top three.</p>
<p>Apps that only ship one of these end up bending it into the other job, and it is always the palette that gets bent — you start typing half-remembered content into a box designed for names, and it politely returns nothing. If you are evaluating an app, try both questions: "take me to the note called X" and "find the note that mentioned X". Different questions. They want different boxes.</p>
<h2 id="when-search-fails-it-is-usually-not-the-search">When search fails, it is usually not the search</h2>
<p>The uncomfortable half of this. Once an app has real ranked full-text search, most remaining failures are notes that were written in a way nothing could find.</p>
<p>A note titled "Notes" containing "sorted it out, was the config thing" is unfindable by any technology, because it contains no word you will ever think to search for. The fix is not a better index. It is writing down the noun — the service name, the person, the error string, the invoice number — somewhere in the note, once. That is the whole discipline, and it takes about four extra words per note.</p>
<p>This is the same argument as <a href="/blog/how-to-organise-notes/">folders, tags, or search</a>: the structure you spend an afternoon building is worth less than the specific word you spend four seconds typing. Search rewards concrete nouns. Filing rewards nothing much.</p>
<h2 id="what-search-still-cannot-do">What search still cannot do</h2>
<p>Search matches words. It does not know what you meant.</p>
<p>If you are looking for "that thing about the thing" — you remember the shape of an idea but not one word that was in it — search will not save you. Neither will tags, honestly. What actually works is a different move: go to the date, or go to the note you know linked to it. Which is one of the better arguments for linking notes to each other rather than only filing them, and for keeping any kind of daily note at all.</p>
<p>Semantic search — where the app finds notes about the same idea in different words — solves some of this, and it is genuinely useful. It also, in every implementation I know of, involves sending your notes somewhere to be turned into embeddings, or running a model locally that adds a few hundred megabytes to the app. That is a real trade, not a free feature, and it is worth knowing which side of it an app has chosen before you assume the clever search is local.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your notes number in the low hundreds and you write them into folders you remember, title matching will not fail you and none of this matters. Apps with weak search are not badly made; they are made for a size of collection you may never exceed.</p>
<p>The moment it starts to matter is the moment you cannot remember whether you wrote something down at all. That is the question search is for, and it is the one that separates the three implementations above.</p>
<p>Cyanote indexes every note with SQLite's full-text engine, so <code>⇧⌘F</code> searches the body of everything — prose, code blocks, tables, tick boxes, sub-pages — and ranks the results rather than listing them by date. <code>⌘K</code> is the other box: it jumps to any page or note by name. Both run against a database on your own disk, which is why the results move while you are still typing, and why they still do it with the wifi off.</p>]]></content:encoded>
      <category>Search</category>
      <category>Notes</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Screenshots and images in your notes</title>
      <link>https://cyanote.app/blog/screenshots-and-images-in-your-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/screenshots-and-images-in-your-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>An image in a note is either a file inside your database or a link to somebody&#x27;s server. The difference is invisible until the day it is a grey box.</description>
      <content:encoded><![CDATA[<p>You paste a screenshot into a note. It appears. Everything is fine.</p>
<p>Two years later you open that note and there is a grey box with a broken-image icon, or the picture is there but the database is 40 MB and you cannot work out why the app got slow. Both outcomes come from the same decision, made by the app on your behalf on the day you pasted, which almost no app tells you about.</p>
<h2 id="the-three-things-an-app-can-do-with-a-pasted-image">The three things an app can do with a pasted image</h2>
<p><strong>Store it in the database.</strong> The bytes go into the app's own storage, alongside the note. The image is now part of your collection: it backs up when the collection backs up, exports when it exports, and works with the wifi off forever. The cost is size — your database grows by the size of every image, and screenshots are not small.</p>
<p><strong>Store it as a file, referenced by path.</strong> The image goes into a folder and the note points at it. Efficient, transparent, and fragile in one specific way: move or rename the folder and every reference breaks. Some apps handle this well with a managed attachments directory. Some just write the path you dragged from, which means your notes now depend on a Downloads folder you clear monthly.</p>
<p><strong>Upload it and store a URL.</strong> Common in anything cloud-backed. The picture is on somebody's CDN and your note holds a link. The note is tiny. The picture is not yours, it needs a connection, it is gone if the account lapses, and any export you take is an export of links.</p>
<p>The tell for the third is the export: export a note with an image and open the result somewhere else. If the picture is there, you have one of the first two. If you get a URL or a broken box, you have the third, and every screenshot you have ever pasted is a tenancy rather than a possession.</p>
<figure><img src="/images/note.webp" alt="A note with an image sitting in the same document as the text — the picture is in the database, not on a server" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The question is not how it looks in the note. It is what is left when you export it.</figcaption></figure>
<h2 id="why-this-matters-more-than-it-sounds">Why this matters more than it sounds</h2>
<p>Images in notes are disproportionately the <em>evidence</em>. The error message. The receipt. The whiteboard at the end of the meeting. The before-and-after. The screenshot of the thing somebody said before they said they had not said it.</p>
<p>Text you can usually reconstruct. Evidence you cannot — that whiteboard is wiped, that error was transient, that receipt is in a bin in another country. Which means the images in your notes are, item for item, often the least replaceable content you have, and they are the part most likely to be stored as a link to somebody else's server.</p>
<h2 id="what-to-do-about-screenshot-bloat">What to do about screenshot bloat</h2>
<p>The real cost of the good options is size, and it is manageable.</p>
<p><strong>Screenshot the region, not the screen.</strong> <code>⇧⌘4</code> and drag beats <code>⇧⌘3</code> by a large margin in file size, and produces a more useful picture — a screenshot of a whole 5K display, viewed later in a note, is a picture in which nothing is legible anyway.</p>
<p><strong>Crop before pasting, not after.</strong> Most apps store what you pasted regardless of how you have cropped it in the editor afterwards. The display shrinks; the bytes do not.</p>
<p><strong>Do not paste the picture when you want the text.</strong> An enormous share of stored screenshots are screenshots <em>of text</em> — an error, a config, a message. macOS can select text directly out of an image in Preview and Quick Look, so lifting the text out and pasting that gives you something far smaller and, more importantly, something <a href="/blog/searching-your-own-notes/">search can find</a>. A screenshot of an error message is invisible to search. The error message as text is findable forever.</p>
<p><strong>Check the database size occasionally.</strong> <a href="/blog/where-your-notes-actually-live/">Knowing where your data lives</a> is what makes this a two-second check rather than a mystery. If it has doubled in a month, it is images, and it is almost always five or six enormous ones rather than a hundred small ones.</p>
<h2 id="alt-text-briefly">Alt text, briefly</h2>
<p>Write a line describing the picture, in the note, next to it.</p>
<p>Not primarily for accessibility, though that matters if you ever share the note. For yourself: an image is unsearchable, so the only way a screenshot turns up in a search two years from now is if there are words near it. "Screenshot of the deploy failing on the cert renewal, 14 March" costs eight seconds and is the difference between an archive and a shoebox.</p>
<p>It is the same discipline as writing the noun down in the first place. Nothing can find what you did not write.</p>
<h2 id="the-one-to-be-careful-about">The one to be careful about</h2>
<p>Screenshots contain more than you meant to capture.</p>
<p>A screenshot of an error also contains the browser tabs, the notification that arrived, the name of the customer in the sidebar, the internal URL, and your own name in the corner. Pasted into a personal note on your own machine, that is fine. Pasted into a note that later gets shared, exported to a client, or synced into a workspace with other people in it, it is a small disclosure you never made deliberately.</p>
<p>The habit worth having: crop to the thing, before pasting. It solves the size problem and this one at once.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your work is genuinely visual — design references, a research corpus of images, screenshots by the thousand — a notes app is not your image library and you want something built for it. Managing tens of gigabytes of pictures inside a notes database is a bad plan regardless of how well the app handles it.</p>
<p>For the ordinary case of a few images a week as evidence and context, the only thing that really matters is which of the three storage choices your app made, and you can find out in two minutes by exporting one note.</p>
<p>Cyanote stores images in the same local SQLite database as everything else. They are in the backup because the backup is the database, they are in the JSON export because the export includes them, and they render with the wifi off because nothing about them was ever a URL. Notes hold images inline alongside headings, tables, callouts and code, and the clipboard history keeps copied images as well as text — so a screenshot you took an hour ago and lost is still recoverable from <code>⌥⇧V</code>.</p>]]></content:encoded>
      <category>Notes</category>
      <category>Local-first</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Revising without a flashcard app</title>
      <link>https://cyanote.app/blog/revising-without-a-flashcard-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/revising-without-a-flashcard-app/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Two techniques do nearly all the work in revision, and neither needs software. Making cards is not one of them, which is why building a deck feels productive.</description>
      <content:encoded><![CDATA[<p>Making flashcards feels like revising. It involves the material, it takes hours, and it produces something you can point at. It is also, in itself, close to worthless — the learning happens when you <em>test</em> yourself on the cards, and a great many decks get built and never tested.</p>
<p>That is the trap of the whole category. The tool is fine; the activity around the tool is the substitute.</p>
<h2 id="the-two-things-that-work">The two things that work</h2>
<p>Decades of research on learning converge on a short list, and two items on it account for most of the effect.</p>
<p><strong>Retrieval practice.</strong> Trying to recall something, from an empty page, without looking. This is not a way of checking what you know — the act of retrieval is itself what strengthens the memory. Rereading feels much better and does much less, because recognition is easy and produces the sensation of knowing without the work.</p>
<p><strong>Spacing.</strong> Reviewing at increasing intervals rather than in one sitting. A given amount of study time spread across a week beats the same time in one evening, reliably and by a wide margin. Cramming works for tomorrow and is close to worthless for the month after.</p>
<p>Everything else — highlighting, rereading, summarising while looking at the source, colour-coding, rewriting notes neatly — is either weak or is producing artefacts rather than learning. That includes making cards, which is preparation, not practice.</p>
<h2 id="the-version-that-needs-no-software">The version that needs no software</h2>
<p><strong>The blank page.</strong> Close the book. Write everything you can remember about the topic. Then open the book and mark what you missed.</p>
<p>That is retrieval practice, complete, and it is more effective than almost anything you can do with an app — because it forces recall of <em>structure</em> as well as facts, which is what an exam actually asks for and what a card-by-card deck never tests.</p>
<p>The gaps are the output. What you could not produce is exactly what to study, and it is a far better guide than your sense of which parts feel shaky, which is systematically wrong: things feel familiar because you have read them recently, not because you know them.</p>
<p><strong>The three-question note.</strong> After a lecture or a chapter, write three questions the material answers — questions, not summaries — and answer them from memory a few days later. Ten minutes, and it is retrieval plus spacing with no system to maintain.</p>
<p><strong>The teaching test.</strong> Explain it out loud, to a person or to the wall, without notes. The place where you get vague is the place you do not understand, and it is startlingly obvious when you hear yourself do it.</p>
<figure><img src="/images/habits.webp" alt="Revision as spaced sessions rather than one long one — the same total time, distributed" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The spacing is the mechanism. A grid of days you did the retrieval is a more honest record than hours logged.</figcaption></figure>
<h2 id="the-spacing-without-an-algorithm">The spacing, without an algorithm</h2>
<p>Spaced repetition software computes an optimal interval per card. That is genuinely clever and, for most people revising for one exam, more machinery than the problem needs.</p>
<p>The crude version captures nearly all of the benefit: <strong>review at one day, three days, a week, three weeks.</strong></p>
<p>Write those four dates in when you first study a topic. Four dated entries, and the schedule is done — no algorithm, no daily queue, no deck to maintain, and no risk of the backlog that kills most SRS attempts. What that costs you is optimality per item. What it saves you is the entire apparatus, which is what people actually abandon.</p>
<p>The daily queue is the real failure mode of flashcard apps. Miss four days, come back to 300 due cards, feel the dread, and stop. A fixed schedule of four sessions has no backlog to accumulate.</p>
<h2 id="where-flashcards-genuinely-are-the-right-tool">Where flashcards genuinely are the right tool</h2>
<p>Not never — for a specific shape of material.</p>
<p><strong>Discrete pairs.</strong> Vocabulary in a new language. Anatomy. Drug names and doses. Kanji. Chemical symbols. Where the unit of knowledge really is one item mapped to one answer, cards are the correct representation and spaced repetition software is excellent.</p>
<p><strong>Very large volumes over years.</strong> Medical school, a language you are learning indefinitely. When the collection is thousands of items and the horizon is years, the algorithm earns its complexity, and Anki is free, open source and has been the serious answer for a long time.</p>
<p><strong>When you did not make the cards.</strong> A shared deck removes the card-making time, which was the part that was not learning anyway.</p>
<p>Where cards are the wrong tool is anything requiring understanding rather than recall: a proof, an argument, a system, why something happened. Chopping an explanation into forty question-answer pairs destroys the structure, and the structure was the thing worth learning.</p>
<h2 id="marking-your-own-work-honestly">Marking your own work honestly</h2>
<p>The one discipline that decides whether any of this works.</p>
<p>When you recall something almost right, the temptation is to count it. Do not. "Nearly" is the state in which everything feels fine and nothing is retained. The value of retrieval practice comes from the difficulty, and grading yourself generously removes exactly the signal you were generating.</p>
<p>The same applies to the blank page. Mark it strictly, in a different colour, and keep the marked version. Three of those a week apart are a genuine record of progress — and unlike hours studied, they measure the thing you care about.</p>
<h2 id="what-notes-are-actually-for-here">What notes are actually for here</h2>
<p>Not for the revision itself, which happens on a blank page. For two other jobs.</p>
<p><strong>The questions.</strong> Your list of "things this material answers", built as you go, is the source you test yourself from. It is the most reusable artefact of a course and it takes almost no time to accumulate.</p>
<p><strong>The gap log.</strong> What you could not recall, each time. After three sessions, the items that appear all three times are your actual problem, and they are almost never the ones you would have guessed. This is the same <a href="/blog/keeping-a-decision-journal/">pattern-across-entries</a> effect: one session tells you little, five tell you exactly where to spend the last week.</p>
<p>Both want to be searchable and in the same place as the rest of your notes, because you will come back to them the following term, or the following year, in a state of having forgotten that you wrote them.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you are learning vocabulary or thousands of discrete facts, use Anki. It is free, it is very good, and nothing here is a substitute for it.</p>
<p>For everything else — understanding a subject, preparing for an exam that asks you to explain things, learning a field — the blank page plus four spaced sessions beats a deck you spent nine hours building, and it beats it on a fraction of the setup.</p>
<p>Cyanote holds the parts that are notes: a question list per topic, the gap log, the marked blank pages, all searchable with <code>⇧⌘F</code> a year later. Habits give you a grid of the days you actually did a session rather than hours you meant to, and tasks take the four review dates out of a typed sentence. There is no spaced-repetition algorithm and no card system, because the four-date version is what the app is for — if you want an algorithm, Anki is a better answer and always will be.</p>]]></content:encoded>
      <category>Method</category>
      <category>Learning</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Reminders you do not start ignoring</title>
      <link>https://cyanote.app/blog/reminders-you-do-not-start-ignoring/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/reminders-you-do-not-start-ignoring/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A reminder you swipe away has not failed to fire. It has trained you to swipe. Here is why notification systems decay, and the smaller setup that survives.</description>
      <content:encoded><![CDATA[<p>There is a moment, a few months into any reminder system, where you notice you have swiped one away without reading it.</p>
<p>Not ignored it deliberately. Read the shape of the banner, recognised the category, dismissed it — all before the words registered. Your hand did it. And once your hand can do it, the reminder is no longer a reminder. It is a small ambient tax you pay several times a day for nothing.</p>
<p>Nothing broke. It fired exactly as configured. That is the problem.</p>
<h2 id="why-the-decay-is-structural">Why the decay is structural</h2>
<p>Every notification you receive teaches you something about the next one. If the last twenty were things you already knew, did not need, or could not act on where you were standing, the twenty-first arrives pre-discounted.</p>
<p>The trap is that the systems decay in the direction of <em>more</em>. When something gets missed, the obvious fix is another reminder — earlier, or louder, or repeated. That works for about a week, and then the new reminders join the baseline and get discounted too. Now you have twice the volume and the same hit rate, and the only remaining move is another escalation.</p>
<p>Meanwhile every alert has a cost that does not show up anywhere. It arrives while you are doing something, and the interruption is paid whether or not the reminder was useful. A banner you dismiss in half a second costs considerably more than half a second of attention, and the ones for things you were never going to act on cost the same as the ones that matter.</p>
<h2 id="the-three-questions-that-kill-most-of-them">The three questions that kill most of them</h2>
<p>For every recurring alert you get, in order:</p>
<p><strong>Could I act on this, here, when it arrives?</strong> If a reminder fires while you are on a train and the action requires a laptop, it is not a reminder. It is an anxiety generator with a schedule. Either move it to a time when you are at the laptop, or delete it — those are the only two honest options.</p>
<p><strong>Did I already know?</strong> The reminder for the thing you think about every day is pure noise. It fires, you think "yes, I know", you dismiss. That loop is where the swipe reflex gets trained, and it is trained by the harmless ones.</p>
<p><strong>What happens if this one never fires?</strong> Sometimes the answer is genuinely nothing. A habit you have kept for eight months does not need a nudge; it has become the thing the nudge was for. Reminders for established habits are the most-swiped category there is.</p>
<p>Most people's setups lose half their alerts to those three questions and get <em>more</em> reliable, because the survivors stop arriving in a crowd.</p>
<figure><img src="/images/today.webp" alt="The Today view: what is scheduled, what is due, and what is still outstanding, in one place you go to rather than one that comes to you" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Pull beats push for anything that is not time-critical. The list is there when you look; it does not need to interrupt you to exist.</figcaption></figure>
<h2 id="push-and-pull-are-different-tools">Push and pull are different tools</h2>
<p>This is the distinction that fixes most of it, and almost no app makes it for you.</p>
<p><strong>Push</strong> — a banner, a sound, a badge — is for things where the <em>moment</em> is the point. A call at four. A train at 18:12. Something in the oven. The defining feature is that being told later is worthless, which is what justifies the interruption.</p>
<p><strong>Pull</strong> — a list you go and look at — is for everything else. What is due today. What is left this week. The three things you said you would do. None of that needs to interrupt you, because you will look at the list at a natural boundary anyway: starting the day, finishing a task, coming back from lunch.</p>
<p>The mistake nearly everyone makes is pushing pull-shaped information. "You have 6 tasks due today" as a banner at 9am does not help; you were going to open the list at 9am regardless. All it does is add one more thing to the pile your hand has learned to swipe.</p>
<p>Move everything that is not time-critical from push to pull and the remaining pushes start getting read again. That is the whole mechanism.</p>
<h2 id="the-lead-time-nobody-tunes">The lead time nobody tunes</h2>
<p>Default reminder timing is usually fifteen minutes before, and fifteen minutes is wrong for almost everything.</p>
<p>The right lead time is however long it takes to <em>do the thing that makes the event possible</em>. For a video call, that is two minutes: open the link. For a meeting across town, it is however long the journey takes plus a margin. For something you need to have prepared for, the useful reminder is the night before, when you can still prepare — the one fifteen minutes beforehand only tells you it is too late.</p>
<p>Apps offer 5, 10, 30 minutes, an hour, a day. Those exist because they are the actual useful shapes: two of them are "get to the thing", two are "wrap up what you are doing first", and the day-ahead is "you need to prepare". Picking deliberately instead of accepting the default is a two-second decision that decides whether the alert is worth anything.</p>
<p>And for repeating events, check that the reminder repeats with it. A weekly meeting whose reminder only fired for the first occurrence is a specific and very common disappointment.</p>
<h2 id="what-to-do-with-the-ones-you-cannot-act-on">What to do with the ones you cannot act on</h2>
<p>There is a category left over: reminders that fire at the right time about a real thing, which you nonetheless cannot do anything about right now.</p>
<p>The answer is not snooze. Snooze is how a task becomes a thing you dismiss six times, and by the sixth the app has taught you the item is optional.</p>
<p>The answer is a place to put it that you trust — one list, checked at a known moment. That is what makes the difference between deferring something and losing it, and it is the entire reason a <a href="/blog/weekly-review-in-20-minutes/">weekly review</a> is worth twenty minutes. If you have a reliable moment where everything deferred gets looked at again, you can dismiss an alert honestly rather than snoozing it dishonestly.</p>
<h2 id="what-a-good-setup-looks-like">What a good setup looks like</h2>
<p>Small enough to describe in five lines.</p>
<ul><li><strong>Push, only for the clock.</strong> Events with a time, with a lead that matches what the event needs.</li><li><strong>Pull, for everything else.</strong> One view of today: what is scheduled, what is due, what is outstanding. You go to it.</li><li><strong>No reminders for established habits.</strong> If it is holding, the alert is noise. If it is not holding, the alert is not what was missing.</li><li><strong>No badges you have stopped reading.</strong> A number you have not acted on in a fortnight is decoration with anxiety attached.</li><li><strong>One place deferred things land</strong>, looked at on a schedule you actually keep.</li></ul>
<p>That is a system that stays credible, and credibility is the only property that matters. A reminder is worth exactly as much as your willingness to read the next one.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your work genuinely is time-critical — on-call, clinical, operational, anything where the cost of missing something is high — you want more alerting, not less, and you want it escalating and redundant. This post is not for that. Escalation exists because sometimes the cost of interruption is the cheap side of the trade.</p>
<p>For an ordinary week, the failure is almost never a reminder that did not fire. It is thirty that did, of which four mattered.</p>
<p>Cyanote's version leans toward pull. Today shows the day's schedule, what is due, the habits still outstanding and the routines not yet run, with the next event counting down beside it — one place you look rather than a stream that arrives. Events remind at 5, 10 or 30 minutes, an hour or a day ahead, and a repeating event carries its reminder to every occurrence. Tasks take a due date and a reminder in the same sentence you type them in. All of it runs from a local database on your own Mac, which means the notifications come from your machine and nothing about your schedule is sitting on a server to be alerted from.</p>]]></content:encoded>
      <category>Reminders</category>
      <category>Focus</category>
      <category>Method</category>
    </item>
    <item>
      <title>Reading and writing at night without the glare</title>
      <link>https://cyanote.app/blog/reading-and-writing-at-night/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/reading-and-writing-at-night/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Dark mode is not automatically easier on the eyes, and for some people it is worse. What reduces strain is three settings, none of them the colour scheme.</description>
      <content:encoded><![CDATA[<p>Dark mode arrived with a health claim attached, and it stuck: light text on dark is easier on your eyes, so use it at night and you will feel better.</p>
<p>The claim is shakier than the consensus suggests. What research there is on polarity mostly points the other way for long-form reading — dark text on a light background tends to be read slightly faster and more accurately by people with typical vision, because a bright background contracts the pupil, which increases depth of field and sharpens what you are looking at. Light text on a dark background does the opposite, and it is why white-on-black text can look faintly bloomed or haloed, especially for anyone slightly short-sighted.</p>
<p>None of which means you should stop using dark mode. It means the reason to use it is not the one on the tin, and the settings that actually reduce evening eye strain are elsewhere.</p>
<h2 id="what-is-actually-tiring-your-eyes">What is actually tiring your eyes</h2>
<p>Three things, in roughly this order.</p>
<p><strong>Brightness mismatch with the room.</strong> A display at daytime brightness in a dark room is the single largest source of evening discomfort, and it is true in dark mode too — a "dark" interface with bright white text in a black room is still a small light in your face. Matching the screen to the ambient light does more than any colour scheme.</p>
<p><strong>Not blinking.</strong> People blink dramatically less while reading a screen, which dries the eye surface and produces most of what gets called eye strain. No software setting fixes this. Looking away periodically does, which is what the twenty-twenty-twenty guidance is about — every twenty minutes, look at something about twenty feet away for twenty seconds. Unglamorous and more effective than any theme.</p>
<p><strong>Contrast that is too high, or too low.</strong> Pure white on pure black is maximum contrast, and maximum is not optimal. Neither is grey-on-grey, which is the fashionable failure — text at 40% opacity looks elegant in a screenshot and is genuinely hard to read for a lot of people, particularly over 40.</p>
<p>Blue light, notably, is not on this list. A <a href="https://www.cochranelibrary.com/cdsr/doi/10.1002/14651858.CD013244.pub2/full">Cochrane review of 17 randomised trials</a> covering 619 people across six countries, published in 2023, concluded that blue-light filtering spectacle lenses probably make no difference to eye strain from computer use or to sleep quality, and found no evidence they protect the retina. Lenses are not a screen filter, so that does not transfer directly — but it is the strongest evidence available on the underlying claim, and it does not support treating a warm-shifted display at night as anything more than a preference.</p>
<figure><img src="/images/themes.webp" alt="Fifteen themes, each with a checked light and dark palette — including a true-black option for OLED and a paper-toned one for daylight" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The useful settings are not on this screen. They are brightness, size, and how far the lines run.</figcaption></figure>
<h2 id="the-settings-that-actually-help">The settings that actually help</h2>
<p><strong>Text size, larger than you think.</strong> The most effective anti-strain setting there is, and the one people resist because larger text feels like an admission. Bumping the editor a point or two removes more strain than any palette change, and your eyes are not the same as they were at 25.</p>
<p><strong>Line height, around 1.5.</strong> Tightly-leaded body text makes your eye lose its place returning to the start of the next line, and that reacquisition is fatiguing in a way that does not announce itself.</p>
<p><strong>Line length, 60 to 80 characters.</strong> Text running the full width of a 27-inch display is the most common readability mistake in software, and it is severe. Every return sweep becomes a long journey across the screen with an opportunity to land on the wrong line. If an app offers a reading width or focus mode, this is what it is for.</p>
<p><strong>Screen brightness matched to the room.</strong> Adjust it when the light changes rather than once a year. If you find yourself squinting, that is the setting, not the theme.</p>
<p>Those four cost nothing, apply in any app, and between them do most of the available work.</p>
<h2 id="when-dark-mode-genuinely-is-the-answer">When dark mode genuinely is the answer</h2>
<p>Not never — just for different reasons than advertised.</p>
<p><strong>On OLED, true black is off.</strong> A pixel displaying pure black on an OLED emits no light at all. In a dark room that is a real, visible difference and not a subtle one, and it is the strongest argument for a true-black theme rather than a dark-grey one. Note that this only holds for actual <code>#000000</code> — a "dark" theme using very dark grey lights every pixel.</p>
<p><strong>For anything that is not long-form prose.</strong> Code, dashboards, terminals, image editing. Dark interfaces work well where you are scanning structure rather than reading paragraphs, and where a bright surround would compete with the content.</p>
<p><strong>Because the room is dark.</strong> A large bright rectangle in a dark room is unpleasant regardless of the science, and reducing the lit area genuinely helps. This is a legitimate reason and probably the real one for most people.</p>
<p><strong>Because you prefer it.</strong> Which is fine and needs no justification. Preference is a valid reason for a colour scheme; it just is not a health claim.</p>
<h2 id="the-middle-options-nobody-uses">The middle options nobody uses</h2>
<p>Light and dark are not the only two settings, and the in-between ones are often better for reading.</p>
<p><strong>Sepia or cream.</strong> A warm off-white background at reduced luminance. Easier than pure white in a dim room, and it keeps dark-on-light polarity, which is where the readability advantage sits. This is what e-readers have offered for years and it remains underused on desktops.</p>
<p><strong>Newsprint or paper tones.</strong> Slightly grey, slightly warm, low-glare. Good for long daytime reading on a bright display.</p>
<p><strong>Reduced-contrast dark.</strong> Light grey text on dark grey rather than white on black. Keeps the dark-room benefit while removing the haloing that makes white-on-black uncomfortable.</p>
<p>If an app only offers light and dark, you are choosing between two extremes of a range where the useful settings are usually in the middle.</p>
<h2 id="per-document-settings-briefly">Per-document settings, briefly</h2>
<p>Worth mentioning because almost nothing offers it and it is genuinely useful: the right typography for a page of prose is not the right typography for a code note. Prose wants a serif or a humanist sans, generous leading, a narrow measure. Code wants a monospace, tighter leading, and the full width.</p>
<p>Being able to set those per note rather than globally means you stop compromising between two things you do differently — the same argument as <a href="/blog/writing-and-code-two-modes/">two modes for writing and code</a>, applied to the type rather than the interface.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you have persistent eye strain, this is a question for an optometrist rather than a settings panel. Uncorrected astigmatism and an out-of-date prescription produce exactly the symptoms people attribute to their screens, and no theme fixes either.</p>
<p>For ordinary evening discomfort: turn the brightness down, make the text bigger, narrow the column, and pick whatever colours you like. That is genuinely the order of importance, and the colour scheme comes last.</p>
<p>Cyanote ships fifteen themes, each with a full light and dark palette checked for contrast — including Newsprint and Sepia for the middle ground, and Midnight in true black for OLED. Or you can set the seven colours the whole app is drawn from and build your own. Typeface, size and line spacing are settable for the editor and for the app around it, globally or <a href="/blog/customising-a-notes-app/">per note</a>, and <code>⌘\</code> hides the sidebar when you want the column and nothing else.</p>]]></content:encoded>
      <category>Design</category>
      <category>Typography</category>
      <category>Customisation</category>
    </item>
    <item>
      <title>Planning a day you will actually follow</title>
      <link>https://cyanote.app/blog/planning-a-day-you-will-actually-follow/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/planning-a-day-you-will-actually-follow/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most day plans fail by 10:40. Not because the method is wrong, but because the plan was written by someone with no information about the day.</description>
      <content:encoded><![CDATA[<p>The plan is beautiful at 8:45. Three blocks of deep work, a slot for email, lunch, an afternoon of the thing you have been avoiding. By 10:40 it is wreckage, and by Thursday you have stopped writing plans, because the evidence is that they do not survive contact with the day.</p>
<p>The method is not the problem. Time blocking works; people who do it get more of the important thing done. What fails is the specific plan, and it fails for reasons that are predictable enough to design around.</p>
<h2 id="why-the-plan-dies">Why the plan dies</h2>
<p><strong>It was written with no information.</strong> At 8:45 you do not know what today contains. You know what is scheduled, which is a subset. The plan is a forecast made by someone who has not read the weather.</p>
<p><strong>It is full to the edges.</strong> A day planned at 100% capacity has no room for the thing that arrives, and something always arrives. The first interruption does not cost you thirty minutes; it costs you the plan, because every subsequent block is now wrong and re-planning mid-morning is a thing nobody does.</p>
<p><strong>It ignores what your energy actually does.</strong> Almost everyone plans as though attention is flat across eight hours. Yours is not. Putting the hardest thing at 3pm because that is where the gap was is planning against yourself.</p>
<p><strong>It confuses a plan with a promise.</strong> Miss two blocks and the day reads as a failure, which makes tomorrow's plan feel pointless. A plan that can only be kept perfectly is a plan you will stop making.</p>
<h2 id="the-version-that-survives">The version that survives</h2>
<p>Smaller than you want it to be.</p>
<p><strong>Three things, not twelve.</strong> Name the three that would make today worth having. Everything else is whatever else happens. Three is achievable on a bad day and leaves room on a good one, and — crucially — you can hold three in your head without consulting anything.</p>
<p><strong>One block, not a full grid.</strong> Protect one stretch for the hardest of the three. Not the whole day: one. A single defended ninety minutes beats a fully-blocked day that collapses at the second interruption, because it is small enough to reschedule rather than abandon.</p>
<p><strong>Put the hard thing where your attention actually is.</strong> For most people that is earlier than they schedule it. You already know your own answer to this; the plan just needs to stop ignoring it.</p>
<p><strong>Leave half the day unassigned.</strong> This feels like under-planning and it is the single change that makes plans survive. The unassigned half is not slack — it is where the meeting that got moved, the thing that took twice as long, and the request that arrived at 11 all go. Without it, they take a block instead.</p>
<figure><img src="/images/today.webp" alt="Today: what is scheduled, what is due, and what is outstanding, in one view rather than three" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The plan and the day's actual commitments have to be in the same place. Two views of one day is how a plan gets written against the wrong information.</figcaption></figure>
<h2 id="the-two-minute-version">The two-minute version</h2>
<p>Long enough to be useful, short enough that you will keep doing it.</p>
<p><strong>Look at what is already fixed.</strong> Meetings, appointments, anything with a time on it. Not from memory — from the calendar, because the whole failure mode is planning around a day you have half-remembered.</p>
<p><strong>Look at what is due.</strong> Tasks with a date on them today, plus anything overdue. Again, not from memory.</p>
<p><strong>Pick three.</strong> Written down, in the same place, so they are still there at 2pm when the morning has gone sideways and you have forgotten what today was supposed to be about.</p>
<p><strong>Protect one block for the hardest one.</strong> In the calendar, as an actual event, so the hour is visibly gone when someone looks for a slot.</p>
<p>Two minutes. The reason it works is not the planning — it is that steps one and two replace guessing with looking.</p>
<h2 id="what-to-do-when-it-goes-wrong-by-11">What to do when it goes wrong by 11</h2>
<p>It will. The question is only what happens next.</p>
<p><strong>Do not re-plan the whole day.</strong> That is a twenty-minute job you will not do, and skipping it is what makes people declare the plan dead.</p>
<p><strong>Ask one question: is the one block still possible today?</strong> If yes, move it and carry on. If no, decide now which of the three is being dropped, deliberately, rather than discovering at 6pm that it was all three.</p>
<p><strong>Let the other two go without ceremony.</strong> A day where one of three important things happened is a normal good day. Treating that as failure is the thing that stops people planning at all, and it is a scoring error rather than a productivity one.</p>
<h2 id="where-the-plan-should-live">Where the plan should live</h2>
<p>In the same place as the day it is planning.</p>
<p>If your calendar is in one app, your tasks in another, and your plan written in a third, then the plan was necessarily written from memory — you would have had to open three windows to write it accurately, and at 8:45 nobody does. That is the mechanical reason day plans are so often wrong about what the day contains, and it has nothing to do with willpower.</p>
<p>One view with the schedule, what is due and what is outstanding is not a nicer interface. It is the difference between a plan based on today and a plan based on your recollection of today, which is the same argument as <a href="/blog/mac-app-notes-tasks-calendar/">keeping notes, tasks and the calendar in one window</a>.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your days are genuinely dictated by other people — clinical shifts, back-to-back client work, anything where the calendar is not yours — planning is not the lever and this post will not help. The lever there is defending one block a week, not planning a day.</p>
<p>And if you have tried time blocking repeatedly and it keeps failing, the diagnosis is usually not that you need a better system. It is that the plans were too full. Try three things and one block for a fortnight before concluding anything about yourself.</p>
<p>Cyanote's Today view is the two-minute version made concrete: the day's schedule, what is due, the habits still outstanding and the routines not yet run, with the next event counting down beside it. Tasks take a date and a priority from the sentence you type them in, and a calendar block is an event you drag into place. All of it in one window and one local database on your own Mac — so the two minutes are two minutes of looking, rather than two minutes of opening things.</p>]]></content:encoded>
      <category>Method</category>
      <category>Focus</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>Planning something with a fixed date and many suppliers</title>
      <link>https://cyanote.app/blog/planning-a-big-event/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/planning-a-big-event/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A wedding, a conference, a milestone party. One immovable date, a dozen suppliers, and the same three failures every time — none of which is the budget.</description>
      <content:encoded><![CDATA[<p>A big event is an unusual project. The date cannot move, most of the work happens in the last fortnight, you are coordinating a dozen suppliers you have never worked with, and you are doing it around a life that continues.</p>
<p>Wedding planning software exists and mostly consists of a checklist somebody else wrote, a budget spreadsheet, and a guest list. Two of those three you can do better yourself, and the third is not where things go wrong.</p>
<h2 id="the-three-failures">The three failures</h2>
<p><strong>A deadline nobody was tracking.</strong> Final numbers to the caterer. The deposit that secures the date. The point after which the deposit is non-refundable. Every supplier has one and they are stated once, early, in an email or on a call.</p>
<p><strong>A detail agreed and not recorded.</strong> What the price includes. Whether they set up. What time they arrive. Whether the corkage was waived. These are agreed verbally, in a friendly conversation, and remembered differently by both parties four months later.</p>
<p><strong>Everything landing in the last two weeks.</strong> Because most of the work genuinely can only be done then — final numbers, seating, timings, confirmations — and if the earlier work slipped, it lands there too, on top of a fortnight that was already full.</p>
<p>None of these is a budget problem. Budgets go over, and everyone survives that.</p>
<h2 id="one-note-per-supplier">One note per supplier</h2>
<p>Venue, caterer, photographer, music, flowers, transport, cake, hire company. One note each.</p>
<p>At the top: contact name and direct number, the reference, what has been paid and what remains, what is included, and <strong>their deadline</strong> — the date they need something from you. That last one is the most important line in the note and it is the thing suppliers state once and assume you have absorbed.</p>
<p>Below: dated entries after every conversation. What was discussed, what was agreed, what they committed to.</p>
<p>Same shape as <a href="/blog/keeping-client-work-straight/">a client note</a>, because an event is a project with a dozen suppliers and one immovable date.</p>
<h2 id="write-up-every-call-in-four-lines">Write up every call, in four lines</h2>
<p>The one discipline that carries the whole thing.</p>
<p>"Spoke to Anna, 14 August: confirmed 6pm arrival, setup included, final numbers by the 2nd, corkage waived for our own wine."</p>
<p>That sentence is worth more than the rest of your planning, because it converts a friendly verbal understanding into a dated record. Almost every event dispute is an honest difference in recollection between two people who both remember the conversation and remember it differently. A dated note settles it in ten seconds and without any unpleasantness — you are not producing evidence, you are checking your own memory out loud.</p>
<p>Email confirmation of anything significant is the belt to that braces: "just to confirm what we agreed". Suppliers are used to it and it costs one line.</p>
<figure><img src="/images/calendar.webp" alt="Every supplier deadline and every payment date in the calendar, with a reminder well ahead" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Their deadline, not yours. Suppliers state it once and assume you absorbed it.</figcaption></figure>
<h2 id="every-supplier-deadline-in-the-calendar">Every supplier deadline in the calendar</h2>
<p>The moment you learn it, as an event, with a reminder two weeks ahead.</p>
<p>Final numbers. Deposit dates. Balance-due dates. The point where the cancellation terms change. Anything the supplier needs from you, with their name on it.</p>
<p>Two weeks rather than a few days, because the response to most of these is not instant — final numbers need chasing the last four people, and the balance needs money to be moved. Notice you cannot act on is not notice.</p>
<h2 id="the-board-three-columns">The board, three columns</h2>
<p>Waiting on me, waiting on them, done.</p>
<p>The point is the middle column. Events stall because a supplier has not come back and nobody is counting the days — the photographer was going to send the contract, three weeks ago. A board makes that visible in ten seconds, and a polite chase at day seven costs nothing and moves everything.</p>
<p>Keep everything on it, including the small things. The small things are what land in the last fortnight.</p>
<h2 id="the-timeline-document">The timeline document</h2>
<p>The single most useful artefact for the event itself, and the one people write last or not at all.</p>
<p>A minute-by-minute schedule for the day: who arrives when, who sets up what, when things start, who is responsible for each transition. Written in advance, sent to every supplier and to the two or three people helping.</p>
<p>The reason it matters is what it does to <em>you</em>. On the day, you cannot be the coordinator — you will be occupied, or getting married, or hosting. The timeline is what lets someone else answer questions without finding you, and the difference between an event where the host is repeatedly pulled aside and one where they are not is entirely this document.</p>
<p>Include phone numbers for every supplier on it. Whoever is holding it will need them and will not have them.</p>
<h2 id="the-last-fortnight">The last fortnight</h2>
<p>Since this is where it concentrates, plan for it deliberately.</p>
<p><strong>Write the final-fortnight list in advance</strong>, when you are calm, around the two-month mark. What has to happen in those two weeks, in order. Following a list you wrote calmly is much better than generating one under pressure — <a href="/blog/checklists-for-things-you-do-every-week/">a routine rather than a memory task</a>.</p>
<p><strong>Confirm everything, in writing, ten days out.</strong> Every supplier, a short message restating date, time, place and what they are bringing. This is where you find the one who has you down for the wrong Saturday, and finding it at ten days is entirely recoverable.</p>
<p><strong>Decide who is answering questions on the day</strong>, and tell the suppliers that name.</p>
<h2 id="afterwards">Afterwards</h2>
<p>Twenty minutes, within the week, while it is fresh.</p>
<p><strong>Who was good and who was not</strong>, with specifics. Friends will ask, and you will have forgotten by the time they do.</p>
<p><strong>What it actually cost</strong>, all in. Nobody writes this down and everyone wishes they had.</p>
<p><strong>What you would do differently.</strong> Vivid for about a fortnight and gone by the second month.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Event-planning software is not bad, and if a checklist somebody else wrote reduces your anxiety, use one — that is a real benefit and worth something on its own.</p>
<p>What it does not do is hold the specific facts about your specific suppliers, which is where things go wrong. That is notes, a calendar and one board.</p>
<p>Cyanote covers those three in one window: a note per supplier with references and their deadlines at the top, a calendar with reminders a day or a week ahead for every deposit and cut-off, tasks that take their date out of a typed sentence, and a board with three columns for the chasing. Full-text search finds "what did the caterer say about corkage" in four seconds, six months later. It is one local database on your own Mac, which for a project involving your contracts, your payments and your guest list is where it should be.</p>]]></content:encoded>
      <category>Method</category>
      <category>Workflow</category>
      <category>How-to</category>
    </item>
    <item>
      <title>The small text tools you keep pasting work data into</title>
      <link>https://cyanote.app/blog/pasting-work-data-into-random-websites/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/pasting-work-data-into-random-websites/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Everyone has a bookmark for a JSON formatter and a JWT decoder. Few of us think about where that paste goes. Here is the real risk, and the boring fix.</description>
      <content:encoded><![CDATA[<p>You have a response body that is one long line and you need to read it. So you do what everyone does: search "json formatter", click the first result, paste, read.</p>
<p>I have done this a thousand times. Almost all of those times it was fine. The problem is that "almost all" is doing real work in that sentence, and the paste is never the thing you were paying attention to — you were debugging, the object was in the way, and the tool was a means of getting past it in four seconds.</p>
<h2 id="what-you-are-actually-pasting">What you are actually pasting</h2>
<p>Take an honest inventory of what tends to end up in those boxes.</p>
<p>A JSON response with a customer's email, address and order history in it. A JWT — which is to say, a live credential, decoded on a page whose only claim is that it does it in the browser. A stack trace containing internal hostnames and file paths. A config file with the connection string still in it. A CSV a colleague sent you. Someone's phone number, because you were checking a regex against real data rather than making one up.</p>
<p>Nobody sets out to paste a customer record into a stranger's website. It happens because the tool is a text box and the thing in your clipboard is what you happen to be debugging.</p>
<figure><img src="/images/paste-into-a-website.svg" alt="The path a paste takes when the tool is a web page you found in a search result" width="1200" height="480" loading="lazy" decoding="async" /><figcaption>Everything up to the paste is a decision you made. Everything after it is a decision someone else made.</figcaption></figure>
<h2 id="it-all-happens-in-your-browser-and-the-three-ways-that-fails">"It all happens in your browser" — and the three ways that fails</h2>
<p>Most of these sites say the processing is client-side, and most of them are telling the truth. It is a real and meaningful protection. It is also a promise you cannot verify at paste time, and it does not cover several things people assume it covers.</p>
<p><strong>You cannot check it, and it can change.</strong> You could open the network tab and read the source — once, today. The site can ship different JavaScript tomorrow, to you specifically, and nothing about the page will look different. You are trusting a claim about code you are not reading, on every visit.</p>
<p><strong>The page is not one party.</strong> A tool page pulling in analytics, an ad network, a tag manager and a font is running four other companies' code in the same document as your paste. Client-side processing says the <em>tool</em> does not send your data anywhere. It does not say the ad script in the same page cannot read the DOM, because it can.</p>
<p><strong>Autosave and history.</strong> Plenty of these tools save your last input to local storage so it is there when you come back. Convenient, and it means the JWT is still sitting in the browser profile on a laptop that gets shared, imaged, or resold. Some have "share this" buttons that upload on click, one misclick away from a paste becoming a URL.</p>
<p>None of this makes the sites malicious. It makes the arrangement unverifiable, which for anything under an NDA or a data-protection policy is the same practical answer.</p>
<h2 id="the-part-your-employer-s-policy-already-says">The part your employer's policy already says</h2>
<p>Worth checking your own rules before assuming this is paranoia. Most organisations that handle personal data have a written line about not putting it into third-party services that have not been reviewed. A JSON formatter is a third-party service. It just does not feel like one, because it has no logo, no login and no invoice.</p>
<p>The same policy that would stop you emailing a customer export to a personal address is the one that covers pasting it into a page you found in a search result. The intent is identical. The friction is not, which is exactly why one happens constantly and the other does not.</p>
<h2 id="the-fix-is-boring">The fix is boring</h2>
<p>Do the operation on your own machine.</p>
<p>For a lot of these there is a command already installed. <code>jq .</code> formats and validates JSON. <code>base64 -d</code> decodes. <code>pbpaste | ...</code> reads the clipboard directly. If you live in a terminal, that is the whole answer and you can stop reading.</p>
<p>The reason people use websites anyway is not ignorance of <code>jq</code>. It is that the terminal version requires remembering the flag, and the website requires remembering nothing. For a four-second task, "remembering nothing" wins every time — which is a UI problem, not a security problem, and it is why telling people to just use the CLI has been failing for fifteen years.</p>
<p>The version that actually sticks is a local tool with a text box in it. Same shape as the website, same four seconds, same nothing-to-remember — but the text never leaves the machine, so there is no claim to verify.</p>
<h2 id="the-list-worth-having-locally">The list worth having locally</h2>
<p>The tools that come up over and over, in roughly the order people reach for them:</p>
<ul><li><strong>JSON format and validate.</strong> The single most-pasted thing on the internet.</li><li><strong>Base64 encode and decode.</strong> Often on something that came out of a header.</li><li><strong>JWT decode.</strong> The one that should worry you most, because a JWT is a bearer credential and pasting it is handing over the credential, not a description of it.</li><li><strong>URL encode and decode</strong>, and a <strong>URL inspector</strong> for pulling a query string apart.</li><li><strong>A regex tester.</strong> Where real data gets pasted more than anywhere else, because made-up test data never has the edge case in it.</li><li><strong>Text compare.</strong> Two versions of a config, side by side.</li><li><strong>Case and line operations</strong> — sort, dedupe, join, split, trim.</li><li><strong>Invisible-character stripping.</strong> The fix for text copied out of a PDF or a chat client that looks identical and breaks a comparison.</li><li><strong>A timestamp converter.</strong> Because nobody reads epoch seconds on sight.</li></ul>
<p>That is nine things. None of them is hard. Collectively they account for a startling share of what gets typed into a search bar during a workday.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you are formatting a JSON blob you generated yourself with no real data in it, a website is fine and the risk is genuinely zero. This is not an argument that those sites are dangerous; it is an argument that the <em>habit</em> is indiscriminate, and the habit does not check what is in the clipboard before it fires.</p>
<p>There are good local answers at every price. DevUtils and Boop are both well-liked Mac apps built for exactly this. If a dedicated one fits how you work, use it — this is a category where several people have done the job properly.</p>
<p>Cyanote has these on a Tools page, next to the notes: case and line operations, invisible-character stripping, text compare, Base64, URL and JWT encode and decode, JSON format and validate, a regex tester, a URL inspector and a timestamp converter. They are there because the paste usually happens two seconds after something got copied — which is also why the <a href="/blog/clipboard-history-on-mac/">clipboard history</a> sits in the same window. Nothing you type into them is sent anywhere, because the app has no server to send it to.</p>]]></content:encoded>
      <category>Tools</category>
      <category>Privacy</category>
      <category>Developers</category>
    </item>
    <item>
      <title>What to write down in your first ninety days</title>
      <link>https://cyanote.app/blog/notes-for-the-first-ninety-days/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-for-the-first-ninety-days/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You have about six weeks where you can ask anything without embarrassment, and where you notice things everyone else stopped seeing. Both expire.</description>
      <content:encoded><![CDATA[<p>Two things are true in your first weeks at a new job, and both have a deadline.</p>
<p>You can ask anything. Nobody expects you to know what the acronym means, why the deploy works that way, or who actually decides. That licence lasts about six weeks and then quietly expires, after which asking becomes a small admission.</p>
<p>And you can see the place clearly. You notice what is confusing, what is duplicated, what everybody works around. Within three months you will have stopped noticing, because you will have adapted — that is what adaptation is. The observations are not preserved by memory; they are overwritten by competence.</p>
<p>Both of those are worth capturing while they are available.</p>
<h2 id="the-four-notes-to-start-on-day-one">The four notes to start on day one</h2>
<p><strong>The glossary.</strong> Every acronym, product name, internal term, system name and shorthand, with what it means and who to ask. This will be the most-used note of your first two months and by far the highest return on effort. Nobody hands you this document because everybody already knows the words.</p>
<p><strong>The map of people.</strong> Who does what, who reports where, who actually decides as opposed to who is nominally responsible, who to ask about which system, and one personal detail so you remember them as a person. Update it after every meeting where you learn something. The org chart is not this note.</p>
<p><strong>The confusion log.</strong> Every time something does not make sense, one line. Not to complain — to preserve. This is the note with the expiry date on it, and it is the source of nearly everything useful you will contribute in month four, because by then you will understand the system well enough to fix the things you can no longer see.</p>
<p><strong>The work log.</strong> Start on day one. Your first review will cover this period, and the early weeks are the hardest to reconstruct because everything was undifferentiated. <a href="/blog/a-work-log-worth-keeping/">Two lines a week</a>, starting now.</p>
<figure><img src="/images/today.webp" alt="One note per thing, growing as you go — the glossary, the people, the confusions, the log" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Four notes, started on day one. The third one has an expiry date on it.</figcaption></figure>
<h2 id="how-to-take-notes-in-the-first-weeks">How to take notes in the first weeks</h2>
<p>You will be shown a great deal very fast, and most of it will not stick.</p>
<p><strong>Write during, tidy after.</strong> During a walkthrough, capture terms, names and things you did not follow. Do not try to structure it; you do not yet know what the structure is. Ten minutes afterwards, move things into the four notes.</p>
<p><strong>Write down what you did not understand, specifically.</strong> "I did not follow why the staging deploy needs the manual step" is a question you can ask later. "Deploy: confusing" is not.</p>
<p><strong>Ask for the reason, and record it.</strong> The most valuable thing you can learn in the first month is not how something works but why it is that way. Systems have history, and the history explains the parts that look wrong. Write down the answer with the name of who gave it — you will need to cite it later, and people misremember.</p>
<p><strong>Record what you were told, not what you concluded.</strong> Early conclusions are usually wrong, because you are missing context. What someone actually said is durable; your interpretation of it at week two is not.</p>
<h2 id="the-thing-to-write-in-week-six">The thing to write in week six</h2>
<p>Sit down for twenty minutes and write everything you found confusing, before you stop finding it confusing.</p>
<p>This document is genuinely valuable and almost nobody produces it. It is the onboarding feedback the company cannot generate internally, because everyone who could write it has forgotten. It is also the seed of your first real contribution: the fixes that make you look observant in month four all come from this list.</p>
<p>Write it for yourself first. Whether you share it is a separate decision — and if you do, share it as observations rather than criticism, from someone who wants the place to be easier rather than someone auditing it.</p>
<h2 id="what-not-to-write">What not to write</h2>
<p>Some restraint is warranted, because notes about work are notes about people.</p>
<p><strong>Not judgements about people, in anything shared.</strong> "X seems disorganised" at week three is an opinion formed from almost no information, and it can outlive both the impression and your reason for forming it. Keep the map factual: what they do, what they know, how to reach them.</p>
<p><strong>Not confidential material you have no reason to hold.</strong> Salary information you saw by accident, personal details from an HR conversation, anything covered by a policy you have just agreed to. If you would not want to explain why you have it, do not keep a copy.</p>
<p><strong>Not on a machine you do not control</strong>, if it is personal. Your work log, your confusion log and your career notes are yours. The glossary and the systems documentation belong in the company's wiki, where they help everyone and where you are not the only copy.</p>
<p>That split matters, and it is worth deciding deliberately in week one rather than discovering at the exit interview: <strong>shared knowledge goes in the shared place; your own record of your own work goes somewhere that leaves with you.</strong></p>
<h2 id="month-three-the-review">Month three: the review</h2>
<p>Reread all four notes.</p>
<p>The glossary tells you how much you have learned, which is a genuine and underrated morale boost around the point where the initial adrenaline has worn off and you feel slower than you expected.</p>
<p>The people map is now accurate enough to be useful and should be kept updated indefinitely — it is the note you will still be using in year three.</p>
<p>The confusion log is the one to act on. Go through it and sort into three: things that confused you and now make sense, things that are genuinely broken and fixable, and things that are broken and not yours to fix. The middle column is your first real project.</p>
<p>The work log you keep forever.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>This is more writing than most people do when starting a job, and the case for it rests on one asymmetry: the first six weeks generate information you can never get back, at a moment when you have more spare attention than you will have again.</p>
<p>If you only do one of the four, do the glossary. It pays for itself within a fortnight and it is the one you will actually maintain.</p>
<p>Cyanote suits this well because the personal half stays personal: one local database on your own Mac, no account, nothing on a company server, and it leaves with you when the laptop does not. Notes nest into sub-pages so the people map can hold a page each, <code>[[</code> links connect a meeting note to the person it was with, and full-text search finds the acronym you wrote down in week two and have not thought about since. There are meeting, standup and 1:1 templates in the <code>/</code> menu for the parts that recur.</p>]]></content:encoded>
      <category>Work</category>
      <category>Method</category>
      <category>Onboarding</category>
    </item>
    <item>
      <title>The notes that make a one-to-one worth having</title>
      <link>https://cyanote.app/blog/notes-for-one-to-ones/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-for-one-to-ones/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most 1:1s decay into a status update because neither person prepared. Four lines each, written before, plus one note per person, is the entire difference.</description>
      <content:encoded><![CDATA[<p>The one-to-one is scheduled for thirty minutes every fortnight. It reliably becomes a status update, because a status update is what two people default to when neither has thought about what else to discuss.</p>
<p>Both parties feel this is a waste, both are too polite to say so, and it continues for a year.</p>
<p>The fix is not a better agenda template. It is that a one-to-one is the only recurring meeting whose entire value comes from <em>continuity</em>, and continuity is a note.</p>
<h2 id="why-it-decays">Why it decays</h2>
<p><strong>Neither person prepared.</strong> Preparation for a 1:1 means five minutes with a note. Nobody does five minutes, so the meeting begins with "so, how's it going", which has exactly one natural answer: a list of what you are working on. Which your manager can already see.</p>
<p><strong>Nothing carries over.</strong> The thing raised three weeks ago that neither of you has thought about since. The commitment made in June. Without a record, each meeting starts from nothing, and a meeting that starts from nothing can only cover the present — which is what makes it a status update.</p>
<p><strong>The important things are not urgent.</strong> Career, growth, whether you are in the right role, the thing that has been quietly bothering you for two months. None of it presents itself, so it never comes up, so the meeting is permanently about this fortnight.</p>
<p><strong>Nobody says the awkward thing.</strong> Which is often the whole reason the meeting exists, and it is much easier to raise something you wrote down calmly on Tuesday than something you have to summon on Thursday.</p>
<h2 id="one-note-per-person-forever">One note per person, forever</h2>
<p>Not a note per meeting. One note per person, growing downward, exactly like <a href="/blog/keeping-client-work-straight/">a client note</a> — and if you manage people, this is the single most useful document you have.</p>
<p>At the top: what they are working on, what they said they want next, how they like feedback, their working pattern, anything about their life you should remember to ask about. Below: dated entries, newest first.</p>
<p>The reason this shape wins is the moment it is used. You have five minutes before the meeting. One note, read the top and the last two entries, and you arrive knowing what was raised last time and what you owe. Any arrangement spread across a calendar of separate meeting notes means reconstructing that from three places, which is why nobody does it and why the meeting starts from nothing.</p>
<figure><img src="/images/note.webp" alt="One note per person, growing downward, with the four lines written before each meeting" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Five minutes with the last two entries is the whole preparation, and it is the whole difference.</figcaption></figure>
<h2 id="the-four-lines-before-each-meeting">The four lines, before each meeting</h2>
<p>Written by both people, ideally, and by at least one.</p>
<p><strong>What has changed since last time.</strong> Not everything you did — what is different. One or two things.</p>
<p><strong>What I am stuck on, or need a decision about.</strong> The most useful line in the meeting. It converts a status update into a conversation with a purpose, and it is the one your manager can actually act on.</p>
<p><strong>Anything from last time that is still open.</strong> Requires reading the previous entry, which is the point.</p>
<p><strong>One thing that is not about this fortnight.</strong> Career, a frustration, an idea, something about how the team is working. This is the line that stops the meeting collapsing into the near term, and it is worth having a standing slot for even when the answer is "nothing this time".</p>
<p>Four lines, five minutes. That is it.</p>
<h2 id="what-to-write-during-and-after">What to write during and after</h2>
<p>Ten minutes afterwards, while it is fresh.</p>
<p><strong>What was decided</strong>, plainly, and by whom.</p>
<p><strong>What each of you owes</strong>, with a date. These become actual dated tasks immediately — <a href="/blog/typing-a-task-the-way-you-say-it/">one sentence with the date in it</a> — because a commitment made in a 1:1 and recorded only as prose is a commitment that will be quietly dropped, and dropped commitments are what destroy trust in this meeting specifically.</p>
<p><strong>What they said about what they want.</strong> Career direction, interests, frustrations, the thing they mentioned twice. Six months of these is the material for a promotion case or a difficult conversation, and it is completely unreconstructable from memory.</p>
<p><strong>What you noticed and did not say.</strong> For managers: the observation you were not sure about yet. Two or three of these across a couple of months either becomes a pattern worth raising or dissolves, and both outcomes are better than acting on a single impression.</p>
<h2 id="both-sides-should-keep-one">Both sides should keep one</h2>
<p>If you are the report, keep your own. It is not duplication.</p>
<p>Your note contains what you asked for and when — which is what you need when a promise made in March has not materialised by October, and which nobody else is recording from your side. It contains what you were told about your progress, in their words, dated, which is the raw material for your own review case. And it contains the things you raised, so a pattern of raising something four times is visible rather than a vague sense of not being heard.</p>
<p>It should be in <em>your</em> notes, on <em>your</em> machine, not in a company document. The reason is the same as for <a href="/blog/a-work-log-worth-keeping/">a work log</a>: the day you most need the record of what you were promised is often the day you lose access to the company's systems.</p>
<h2 id="what-not-to-write">What not to write</h2>
<p>For managers, some care, because a note about a person is a record about a person.</p>
<p><strong>Not conclusions about character.</strong> "Seems unmotivated" is an interpretation from partial information that will outlive both the impression and the situation that produced it. Write the observation — "missed two commitments this month, mentioned being stretched" — which is factual, actionable and fair.</p>
<p><strong>Not anything you could not defend if read aloud.</strong> These notes can be subject to disclosure in a dispute, and more to the point: a note you would not want them to see is usually a note you should have turned into a conversation.</p>
<p><strong>Not personal information they shared in confidence</strong>, beyond what you need to be a decent manager about it. "Back on the 14th" rather than the medical detail.</p>
<p>The test is whether the note would embarrass you if the person read it. If it would, the problem is generally not the note.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>None of this makes a bad one-to-one good. If the relationship is broken, or the meeting exists to perform management rather than to do it, better notes will produce a better-documented waste of thirty minutes.</p>
<p>What it fixes is the common case: two people who both want the meeting to be useful and neither of whom has spent five minutes preparing it. That is a genuinely large share of all 1:1s, and five minutes with one note is the whole intervention.</p>
<p>Cyanote has a 1:1 template in the <code>/</code> menu, and notes that nest into sub-pages so each person can be a page with entries under it. <code>[[</code> links connect a person to the projects and meetings they appear in, so their page assembles context you never filed there. Tasks take an owner and a date out of a typed sentence, and everything is searchable a year later with <code>⇧⌘F</code>. It is one local database on your own Mac — which for your own side of these conversations is the point, since it leaves with you when the laptop does not.</p>]]></content:encoded>
      <category>Work</category>
      <category>Method</category>
      <category>Meetings</category>
    </item>
    <item>
      <title>Taking notes while learning a new codebase</title>
      <link>https://cyanote.app/blog/notes-for-learning-a-new-codebase/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-for-learning-a-new-codebase/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You will trace the same call path three times in your first month. Writing it down once is the difference, and it is a specific kind of note.</description>
      <content:encoded><![CDATA[<p>You are four levels into a call stack trying to work out where the value comes from. You find it, you fix the thing, you move on.</p>
<p>Three weeks later you are in the same place, tracing the same path, having the same small realisation. You have done this before. You remember doing it. You do not remember the answer.</p>
<p>This is the defining experience of learning a large codebase, and it is not a memory problem. It is that the understanding you built was never written down, and understanding that is not written down decays at roughly the rate of a phone number.</p>
<h2 id="what-is-worth-writing-and-what-is-not">What is worth writing, and what is not</h2>
<p>The instinct is to document the code. Resist it — the code documents itself better than you can, it changes underneath your notes, and a note describing what a function does is stale within a month and misleading thereafter.</p>
<p>What decays badly and is not in the repository is different.</p>
<p><strong>Call paths.</strong> "A request to /export goes through the controller, the serialiser, and the job queue, and the timeout is set in the middleware, not the job." Four lines, and it saves you the twenty minutes it took to establish. This is the single highest-value kind of note there is.</p>
<p><strong>Why, when why is not obvious.</strong> Every codebase has a section that looks wrong and is not. Somebody explained it to you, or you worked it out from the history. That explanation exists nowhere in the code, and it is what will stop you or someone else from "fixing" it later.</p>
<p><strong>Where things live.</strong> Not the directory structure — the answers to "where does X happen". Where is auth actually enforced. Where do the emails come from. Where is the thing that runs at midnight. A dozen of these is an enormous head start.</p>
<p><strong>The gap between how it looks and how it behaves.</strong> The naming that lies, the config that is overridden somewhere else, the abstraction that has one real implementation. Every codebase has a handful and they are the source of most wasted afternoons.</p>
<p><strong>The environment incantations.</strong> The commands with the flags. How to run one test. How to reset the local database when it wedges. These are trivial, they are looked up constantly, and they belong somewhere you can find them in two seconds.</p>
<figure><img src="/images/note.webp" alt="A code note with the command, the call path and the explanation in the same document as the prose" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Not documentation. A record of things that took twenty minutes to establish and will take twenty minutes again.</figcaption></figure>
<h2 id="the-rule-that-makes-it-work">The rule that makes it work</h2>
<p><strong>Write it down the moment you have understood it, before you fix the thing.</strong></p>
<p>The window is narrow. While you are tracing, you are holding the whole path in your head and writing it costs almost nothing. Once you have made the fix, the understanding has done its job and starts unloading immediately — and half an hour later, writing the same note means reconstructing it.</p>
<p>The second half of the rule: <strong>stop before you write documentation.</strong> Four lines about a call path is a note. Two pages about the architecture is a document, and a document is a commitment to maintain something that will drift. The value is in the small, specific, expensive-to-rederive facts.</p>
<h2 id="where-these-notes-should-live">Where these notes should live</h2>
<p>Split by lifespan, and this is the practical decision.</p>
<p><strong>In the repo:</strong> anything true about the code that the team should share and that should change when the code changes. Setup instructions, architecture decision records, the reasons behind a design. If it lives next to the code, it moves with it and gets reviewed with it.</p>
<p><strong>In your own notes:</strong> your working understanding. Half-formed, occasionally wrong, containing "I think this is because" and "ask someone about this". That is exactly the material that should not go into shared documentation — nobody wants a wiki full of somebody's provisional guesses — and it is also the material that makes you effective in month two.</p>
<p>The mistake is trying to put the second category in the first. It makes you slow, because you edit yourself, and it degrades the shared docs with uncertainty.</p>
<h2 id="the-one-page-map">The one-page map</h2>
<p>After a fortnight, write one page and keep it updated.</p>
<p>Not the architecture — the <em>territory</em>. Six or eight lines: what the main pieces are called, roughly what each does, and where the seams are. Where does a request enter. Where does data get written. What is the one part everybody is afraid of.</p>
<p>Every codebase has an implicit version of this that the long-serving people hold in their heads, and none of them have ever written it down because it is too obvious to them to be worth stating. It is the single most useful document for the next person, and you can only write it during the window where you have just learned it and have not yet forgotten what it was like not to know.</p>
<h2 id="code-prose-and-the-same-window">Code, prose and the same window</h2>
<p>A practical note, because this is the friction that stops people.</p>
<p>These notes are inherently mixed: a paragraph of explanation, a command with flags, a stack trace, a path, a snippet. If your notes app mangles code — smart quotes, autocorrect, no monospace, no syntax highlighting — you will not paste the command, and the command was the useful part. If your code lives in a scratch file and the explanation lives in a notes app, you will keep one and lose the other.</p>
<p>That is the whole argument for <a href="/blog/notes-and-code-in-one-app/">keeping notes and code in one app</a>: not elegance, but that a mixed note is the natural shape of this material and splitting it in half loses whichever half is more inconvenient.</p>
<p>The other mechanic that matters is search. You will not remember which note has the thing; you will remember a word from it — a function name, an error string, a flag. That means <a href="/blog/searching-your-own-notes/">search has to reach inside code blocks</a>, which is not universal and is worth checking before you rely on it.</p>
<h2 id="a-month-in">A month in</h2>
<p>Reread what you wrote in week one. Two things happen.</p>
<p>Some of it is wrong. Fix it — the wrongness is informative, because it shows you what the codebase misleads people about, which is exactly what the one-page map should warn about.</p>
<p>Some of it is now obvious and you cannot remember needing it. Leave it alone. It is not for you any more; it is for the next person, and the fact that it looks trivial to you is precisely why nobody else was ever going to write it.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Nobody is going to keep this up for years, and they should not. The intensity of note-taking should fall off as the codebase becomes familiar, and by month six you will be writing almost nothing, which is correct.</p>
<p>The window that matters is the first six to eight weeks — the period where everything is expensive to establish and cheap to record. After that the value drops sharply, and continuing to document out of discipline is just a slower way to work.</p>
<p>Cyanote handles the mixed shape: prose notes with syntax-highlighted code blocks inline, and separate code notes with language detection that can be saved straight back to a file on disk. <code>⇧⌘F</code> searches the body of everything including code blocks, <code>[[</code> links a note to the one it relates to, and notes nest into sub-pages so a codebase can have a page with children rather than fourteen loose notes. One local database, so the map you built of a system you were paid to understand stays yours.</p>]]></content:encoded>
      <category>Code</category>
      <category>Notes</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>The notes that help when you are learning a language</title>
      <link>https://cyanote.app/blog/notes-for-learning-a-language/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-for-learning-a-language/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The app handles vocabulary. What it cannot handle is the sentence you wanted to say and could not, which is the most useful thing you produce all week.</description>
      <content:encoded><![CDATA[<p>Language apps are good at the part that is easy to make software for: vocabulary, drilling, spaced repetition. That part works, and if you are learning words, use one — <a href="/blog/revising-without-a-flashcard-app/">Anki and its relatives</a> will out-do anything you improvise.</p>
<p>What no app catches is the thing that happens in a real conversation: you wanted to say something and could not. That gap is the single most valuable piece of information your week produces, and it disappears within about four hours.</p>
<h2 id="the-gap-log">The gap log</h2>
<p>One line, as soon as possible after the conversation.</p>
<p><strong>What I wanted to say, in English.</strong> Exactly. "I would have picked it up but I was already late."</p>
<p><strong>What I said instead</strong>, if anything. Usually something clumsy that worked.</p>
<p><strong>What I actually needed</strong> — filled in later, when you look it up or ask someone.</p>
<p>That is it. Two lines in the moment, one filled in afterwards.</p>
<p>It works because it is <em>your</em> gap. A textbook chapter on the conditional is somebody's guess at what learners need. A list of eleven sentences you personally tried to say and could not is a curriculum built exactly to the shape of your life, in your register, about the things you actually talk about. Nothing bought can match it, and it costs a line a day.</p>
<h2 id="what-else-is-worth-writing-down">What else is worth writing down</h2>
<p><strong>Corrections, verbatim.</strong> When someone corrects you — a teacher, a friend, a stranger — write down what you said and what they said, in their words. Do not paraphrase into the rule; the rule you infer is often wrong, and the raw correction stays useful.</p>
<p><strong>Things you heard that surprised you.</strong> A phrasing that was not what you would have constructed. An idiom. The word that turned out not to mean what you assumed. These are the entries you will reread with most benefit.</p>
<p><strong>Your own mistakes, with the pattern.</strong> Everyone has three or four errors they make constantly. Written down over a month, they become visible and therefore fixable; unwritten, they are simply how you speak.</p>
<p><strong>The word you looked up twice.</strong> Looking something up twice means it did not stick and it recurs, which is precisely the definition of something worth learning deliberately. Mark it the second time.</p>
<figure><img src="/images/habits.webp" alt="A grid of days you did something in the language — the only quantity that matters, next to the notes that hold what happened" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The streak measures turning up. The gap log measures what you actually could not say.</figcaption></figure>
<h2 id="sentences-not-words">Sentences, not words</h2>
<p>The single most useful change most learners can make to what they write down.</p>
<p>A word in isolation is close to unusable. You learn a noun and still cannot deploy it, because you do not know its gender, which preposition it takes, what register it belongs to, or which verb goes with it. All of that is carried by a sentence and none of it by a dictionary entry.</p>
<p>So record the whole sentence you heard or needed, and mark the part you were learning. Three sentences with a word in context beat twenty isolated definitions, and if you do run flashcards, sentence cards outperform word cards for exactly this reason.</p>
<h2 id="the-grid-for-the-one-thing-that-matters">The grid, for the one thing that matters</h2>
<p>Consistency is the only variable in language learning that is not in dispute. Twenty minutes daily beats three hours on Sunday, reliably, and everyone knows this and does it anyway.</p>
<p>A grid of the last four weeks — did I do something in the language today, yes or no — is the right shape for that one question, and it is worth keeping separate from everything else. Not hours, not words learned, not app streaks. Did I turn up.</p>
<p>The reason a grid works better than a streak counter: a streak resets to zero and teaches you to stop looking after a missed day. A grid shows one gap on the 3rd and five ticks around it, which is an accurate picture of a good fortnight rather than a failure.</p>
<h2 id="reading-it-back">Reading it back</h2>
<p>The part that turns a log into learning.</p>
<p><strong>The gap log, weekly.</strong> Look up the three or four you have not filled in, and use them deliberately in the next conversation. That is the loop, and it closes in a week.</p>
<p><strong>The mistakes, monthly.</strong> Patterns appear across entries that are invisible within one. Two months in, most people find one grammatical thing they get wrong constantly, and fixing that one thing produces more improvement than a month of vocabulary.</p>
<p><strong>Everything, at six months.</strong> Read what you were struggling with in month one. This is the single best antidote to the plateau feeling, which is the main reason adults quit — progress in a language is genuinely invisible from inside, and the only reliable measure is your own record of what used to be hard.</p>
<h2 id="where-it-should-live">Where it should live</h2>
<p>Somewhere it survives the app you are currently using.</p>
<p>Language learning happens over years and across tools — an app, then a class, then a tutor, then a period of just reading. Notes kept inside any one of those are notes you lose at the transition, and the transitions are frequent. A general notes collection that exports to a readable file is the thing still standing in year three, when the gap log from year one is genuinely interesting.</p>
<p>The practical requirements are small: it has to handle the script and any accented characters without fighting you, and search has to find them. Both are worth checking for a language that is not written in the alphabet you type in daily.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Notes are not how you learn a language. Talking to people is, and everything here is a support structure for that.</p>
<p>But the gap log specifically is worth more than its size suggests, because it is the only artefact that records what you personally cannot yet do — and every other resource in the field is built around what learners in general cannot do. If you keep one thing, keep that.</p>
<p>Cyanote holds the parts that are notes and the part that is a grid: habits show the last four weeks as rows and columns, so a missed Tuesday is one click and a gap is visible straight down the page; notes hold the gap log and the corrections, searchable years later by any word in them, including in whatever script you write in. It is one local database on your own Mac with a readable export — which for a record you want to still have when you are finally fluent is the part that matters.</p>]]></content:encoded>
      <category>Learning</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Notes for the third time you explain something</title>
      <link>https://cyanote.app/blog/notes-for-explaining-things/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-for-explaining-things/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The explanation that finally worked was invented on the spot and forgotten by Friday. Writing it down is the highest-return note nobody takes.</description>
      <content:encoded><![CDATA[<p>You explain the thing. It does not land. You try again from a different direction. Still not quite. Then you say something — an analogy, a reframing, an example — and you see it arrive.</p>
<p>That third explanation is the valuable one. It took two failures to find, it is genuinely better than the one in the documentation, and by Friday it is gone. Next time you will start from the first explanation again, because that is the one that comes to mind.</p>
<p>Nobody writes these down, and they are among the cheapest and most reusable things anyone produces.</p>
<h2 id="what-to-capture">What to capture</h2>
<p>Not the explanation — the <em>third</em> explanation, plus the two that failed.</p>
<p><strong>The version that worked.</strong> In the words you used, not tidied up. The rough spoken version is the one that works; the written-up version is usually the documentation you already had.</p>
<p><strong>What they misunderstood first.</strong> This is more valuable than the explanation itself, because it is a fact about how people encounter the topic. If three people make the same wrong assumption, the assumption is predictable and your explanation should start there.</p>
<p><strong>The question they asked that you had not anticipated.</strong> Every subject has a small set of questions that arise reliably and appear in no documentation, because whoever wrote it had forgotten the question was askable.</p>
<p><strong>The analogy, if there was one.</strong> Analogies are expensive to invent and cheap to reuse, and a good one is often the entire explanation.</p>
<figure><img src="/images/note.webp" alt="One note per thing you explain, growing each time you explain it" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The version that worked, in the words you used. Tidying it up is usually how it stops working.</figcaption></figure>
<h2 id="the-curse-you-are-trying-to-work-around">The curse you are trying to work around</h2>
<p>There is a specific reason this is hard, and knowing it helps.</p>
<p>Once you understand something, you lose reliable access to what it was like not to. The gap that needed bridging becomes invisible; the explanation that seems natural to you is one that only works for someone who already has most of the picture. This is why experts routinely explain things badly and are surprised by it.</p>
<p>You cannot fix that by trying harder to remember what confusion felt like. You can fix it by writing down, at the moment you observe it, what a specific person actually misunderstood. That record survives your own forgetting, and it is the only thing that does.</p>
<p>Which means the notes are most valuable when written by someone who has just learned it — the same window that makes <a href="/blog/notes-for-the-first-ninety-days/">the first ninety days at a job</a> worth documenting, for exactly the same reason.</p>
<h2 id="one-note-per-thing-you-explain">One note per thing you explain</h2>
<p>Growing over time. Not a document you write, a note you add to.</p>
<p>Each time you explain the topic, add a line: who, what they misunderstood, what worked. After six or seven, the note contains something no first-draft document ever does — a map of how people actually get lost, ordered by frequency.</p>
<p>That is the point at which it is worth turning into real documentation, and the resulting document is dramatically better than one written from scratch, because it is organised around the misunderstandings rather than around the structure of the subject. Most bad documentation is bad because it is organised the second way.</p>
<h2 id="where-teaching-and-onboarding-are-the-same-job">Where teaching and onboarding are the same job</h2>
<p>The pattern is identical whether you are teaching a class, onboarding a colleague, supporting customers, or answering the same question in a forum for the fourth time.</p>
<p><strong>Something recurs.</strong> The same topic, the same confusion, more than twice.</p>
<p><strong>The explanation improves with iteration</strong>, and the improvement is lost without a record.</p>
<p><strong>The audience does not know what they do not know</strong>, so their questions are the only reliable signal about where the gaps are.</p>
<p>If you support people, the support queue is the best documentation backlog in existence and almost nobody treats it as one. The questions asked most often are the topics your documentation covers worst, in exactly that order, and that ranking is free.</p>
<h2 id="note-the-wrong-answers-too">Note the wrong answers too</h2>
<p>An under-used move: write down the plausible-but-wrong understanding.</p>
<p>If everyone assumes the setting applies globally when it applies per-document, that specific wrong belief is worth recording, because your explanation should address it directly rather than describing the correct behaviour and hoping the contradiction is noticed. "It looks like it applies to everything — it does not, it is per document" corrects an existing model. "It applies per document" gets read straight past by someone who already believes otherwise.</p>
<p>Correcting a wrong model is a different job from describing a right one, and only the notes tell you which model people arrive with.</p>
<h2 id="the-reuse-is-the-payoff">The reuse is the payoff</h2>
<p>Where this pays back, concretely.</p>
<p><strong>The written version.</strong> When you finally write the documentation, the note is the outline and the hard part is done.</p>
<p><strong>The next person.</strong> Onboarding someone means re-explaining everything you explained last year, and the note is the difference between doing it well and doing it from scratch.</p>
<p><strong>Your own understanding.</strong> Teaching something is the standard test of whether you understand it, and the record of your explanations is a record of your understanding improving — visible in a way that is otherwise entirely internal.</p>
<p><strong>A talk, a post, a course.</strong> Almost all good explanatory writing is downstream of having explained the thing out loud several times to people who did not get it. The notes are the raw material and they accumulate whether or not you ever use them.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>This is a habit with no payoff for months. The first three notes feel pointless because there is no pattern yet, and the value is entirely in the sixth reading, which is a long way off.</p>
<p>If you explain the same things repeatedly — teaching, support, onboarding, management — it is one of the highest-return notes available, and it costs a line after a conversation you were having anyway.</p>
<p>Cyanote suits it because the note grows rather than being written: one note per topic, appended to each time, nesting into sub-pages when a topic gets big, <code>[[</code> links tying an explanation to the system it is about, and <code>⇧⌘F</code> finding "what was the analogy I used for this" a year later. It is one local database on your own Mac — which for explanations you developed and will take to the next job is where they should be, rather than in a wiki you lose access to.</p>]]></content:encoded>
      <category>Method</category>
      <category>Notes</category>
      <category>Work</category>
    </item>
    <item>
      <title>Surviving a house move on notes</title>
      <link>https://cyanote.app/blog/notes-for-a-house-move/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-for-a-house-move/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A move is four months of small facts arriving from eleven organisations. The failures are always the same three, and none of them is the packing.</description>
      <content:encoded><![CDATA[<p>Moving house is not a hard project. It is a long one, made of several hundred small facts arriving from eleven organisations over four months, most of them by phone or email, none of them in one place.</p>
<p>The packing is the part everyone dreads and the part that always gets done, because it is physical and it has a deadline. The failures are elsewhere, and they are the same three every time.</p>
<h2 id="the-three-failures">The three failures</h2>
<p><strong>A date passed and nobody knew.</strong> The notice period on your current place. The date the mortgage offer expires. The last day to cancel the broadband without a fee. Every one of these is a date somebody told you once, in passing, three months before it mattered.</p>
<p><strong>Nobody could find the fact.</strong> The reference number, the meter reading, the name of the person who said the thing, the exact wording of what the agent promised about the fridge. Somewhere in an email, or a call you did not write up.</p>
<p><strong>Nobody knows who is waiting on whom.</strong> The solicitor is waiting on the survey, you think, or possibly on you. Chains stall for weeks because nobody is tracking whose move it is, and the person best placed to notice is you.</p>
<p>None of the three is a packing problem, and none of them is fixed by a checklist from the internet.</p>
<h2 id="one-note-per-organisation">One note per organisation</h2>
<p>Not one note called "Moving". Eleven notes, one per party: the estate agent, the solicitor, the mortgage lender, the surveyor, the removal company, each utility, the council, the broadband provider.</p>
<p>At the top of each: who they are, the reference number, the named contact and their direct line, and what they are responsible for. Below: dated entries, after every call.</p>
<p>The reason for the split is the moment it is used. You are on hold, they have asked for your reference, and someone is about to tell you something. You need one note open, containing that organisation's reference and what they said last time. A single "Moving" note means scrolling through four months of everything to find the utility bit while somebody waits on the line.</p>
<p>It is the same shape as <a href="/blog/keeping-client-work-straight/">a client note</a>, and a move is genuinely a project with eleven suppliers.</p>
<figure><img src="/images/todo.webp" alt="One note per organisation, dated entries, references at the top — and every date with money attached in the calendar" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The reference number and what they said last time, in one note, before you pick up the phone.</figcaption></figure>
<h2 id="write-up-every-call-immediately">Write up every call, immediately</h2>
<p>The one discipline, and it is worth more than everything else here combined.</p>
<p>Four lines within two minutes of hanging up: who you spoke to, what they said, what they committed to, and by when. Especially the name. "I spoke to someone last week who said it was fine" carries no weight; "I spoke to Daniel on the 14th, who confirmed the completion date was still the 30th" carries a great deal.</p>
<p>Property transactions run on verbal assurances that nobody records, and the person with a dated note of who said what has a substantial advantage in every subsequent disagreement. This is not adversarial — most of the time it just resolves an honest confusion in ten seconds instead of a fortnight.</p>
<h2 id="every-date-with-money-on-it-in-the-calendar">Every date with money on it, in the calendar</h2>
<p>The moment you learn it, as an event, with a reminder well ahead.</p>
<p>Notice period on your current place. Mortgage offer expiry. Fixed-rate end date. Insurance start — buildings insurance normally needs to be live from exchange rather than completion, and that is the classic expensive gap. Cancellation deadlines for services. Council tax notification. The final meter readings.</p>
<p>A month's notice for anything with a fee attached, because a week's notice is notice that it is happening, and a month is enough to do something about it. Same principle as <a href="/blog/life-admin-in-one-place/">life admin generally</a>, compressed into four months where the consequences are larger.</p>
<h2 id="a-board-for-the-chain">A board for the chain</h2>
<p>The third failure — nobody knows who is waiting on whom — is what a board is for.</p>
<p>Three columns: waiting on me, waiting on them, done. Every outstanding item as a card. Ten seconds, once a day, and you know whether it has been eleven days since anyone touched the searches.</p>
<p>This matters more than it sounds because chains stall silently. Nobody tells you nothing is happening; things simply do not move, and by the time it is obvious you have lost three weeks. A board makes stalling visible, and the polite chase on day four costs nothing and moves things.</p>
<h2 id="the-specific-things-people-forget">The specific things people forget</h2>
<p>Collected from the way these go wrong.</p>
<p><strong>Photograph every meter, on the day, with the whole meter and the serial number in frame.</strong> Both properties. Disputed readings are the single most common post-move billing problem and a photograph settles them instantly.</p>
<p><strong>Photograph the condition of things on the day</strong>, if you rent. Both ends. It is the deposit.</p>
<p><strong>Write down what is included in the sale</strong>, in the exact words used. Fixtures, appliances, curtains, the shed. This is where the small bitter arguments happen, and they are entirely preventable with one dated line.</p>
<p><strong>Keep the completion statement and the paperwork.</strong> Some of it is needed years later for tax.</p>
<p><strong>Write down where you put the important box.</strong> Genuinely. The one with the documents, the chargers and the kettle.</p>
<h2 id="the-week-after">The week after</h2>
<p>Ten minutes, once you have moved, while it is fresh.</p>
<p><strong>What went wrong, and what you would do differently.</strong> Not for this move — for the next one, or for the friend who asks. It is remarkable how completely this evaporates within a month.</p>
<p><strong>What it actually cost</strong>, in total, including the things nobody counts: the removal, the fees, the two weeks of eating out, the things that had to be replaced. This is the number you will want the next time you are deciding whether to move, and it is not recoverable later.</p>
<p><strong>Anything still outstanding.</strong> There is always something — a refund, a final bill, a thing the seller was supposed to send. It goes on the task list with a date, because the relief of having moved is exactly when unfinished things get dropped.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>A move is four months of admin and there is no system that makes it enjoyable. What notes do is remove the specific failures that turn an expensive stressful process into a more expensive one — a missed cancellation, an assurance nobody recorded, three weeks lost to a stalled chain.</p>
<p>If you do one thing: <strong>write up every phone call, with the name and the date, within two minutes.</strong> That single habit prevents most of what goes wrong.</p>
<p>Cyanote holds all three parts in one window: a note per organisation with the references at the top, a calendar with reminders a day, an hour or thirty minutes ahead for every date with money attached, tasks that take their date out of the sentence you type, and a board for the chain. Photographs of meters and paperwork go in the notes rather than in a URL somewhere. It is one local database on your own Mac — which for a file containing your reference numbers, your solicitor's correspondence and photographs of your documents is where it should be.</p>]]></content:encoded>
      <category>Method</category>
      <category>How-to</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>Note templates people actually keep using</title>
      <link>https://cyanote.app/blog/note-templates-that-get-used/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/note-templates-that-get-used/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most note templates are abandoned within a fortnight, and it is nearly always the same three design mistakes. What separates a template you use from one you delete.</description>
      <content:encoded><![CDATA[<p>There is a particular kind of Sunday afternoon where you build a note template. It has sections. It has a metadata block at the top with fields for status and energy level. It has a place for everything, and looking at it produces a small, genuine satisfaction.</p>
<p>You will use it four times.</p>
<p>I have done this more than once, and the failure is not laziness. Templates fail for structural reasons, and the reasons are consistent enough to design around.</p>
<h2 id="why-the-elaborate-ones-die">Why the elaborate ones die</h2>
<p><strong>They ask for information at the wrong moment.</strong> A meeting template with a "decisions made" section is asking you to have already sorted the meeting into categories while the meeting is still happening. What actually happens in a meeting is that things arrive in the order people say them. Any template that requires sorting-while-capturing loses to a blank page, because the blank page lets you keep up.</p>
<p><strong>They have more sections than the average instance needs.</strong> If two thirds of your meetings have no action items, an Action items heading appears empty in two thirds of your notes. Empty headings are worse than no headings: they read as something forgotten rather than something absent, and after a while you start deleting them, which is friction you invented for yourself.</p>
<p><strong>They encode a workflow you were hoping to have rather than the one you have.</strong> This is the big one. The template is aspirational — it describes the version of you who reviews the previous meeting's actions before writing the new note. That person does not attend the meeting. The person who attends is late and typing.</p>
<h2 id="what-the-ones-that-survive-have-in-common">What the ones that survive have in common</h2>
<p>They are shorter than you think is respectable, and every line in them does one of two jobs.</p>
<p><strong>A prompt you would otherwise forget.</strong> Not a section header — an actual question sitting there in the note. "What did we decide?" pulls something out of you at the end of a meeting. "Decisions" does not; it is a filing label, and you will file nothing under it.</p>
<p><strong>A field that makes the note findable later.</strong> The date, the people, the project name. Four words that cost nothing at capture time and are the entire reason you will find this note in November. If you link names, this is also where the link goes, which is where a <a href="/blog/linking-notes-without-a-second-brain/">backlink list</a> quietly builds itself out of meetings nobody filed.</p>
<p>Everything else — status fields, tags, energy ratings, a summary section you fill in afterwards — is optional at best and a tax at worst. Cut it, use the template for a month, and add back only the thing you genuinely missed.</p>
<figure><img src="/images/note.webp" alt="A note in Cyanote, opened from a template with its prompts and metadata already in place" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>A template's job is to remove the first thirty seconds of a note, not to describe your ideal process.</figcaption></figure>
<h2 id="the-four-templates-that-earn-their-place">The four templates that earn their place</h2>
<p>Almost everyone converges on some version of these.</p>
<p><strong>A daily note.</strong> One note per day, created without asking you anything. Its real function is not journalling; it is having a default place to put things so that capture never involves a decision about where. Whatever ends up in it can be sorted later or never.</p>
<p><strong>Meeting notes.</strong> Date, who was there, a blank space, and one prompt at the bottom — "what did we agree, and who has it". The blank space in the middle is deliberate. It is where the meeting goes.</p>
<p><strong>A one-to-one.</strong> The one template where structure genuinely helps, because the value is in continuity: what we discussed last time, what has changed, what they raised, what I owe them. It is the same four things every fortnight, and having them written down is what stops a 1:1 becoming a status update.</p>
<p><strong>A weekly review.</strong> The one place a longer template is justified, because you are sitting down on purpose with time set aside — which is exactly the condition the other templates cannot assume. I have written about <a href="/blog/weekly-review-in-20-minutes/">the twenty-minute version</a> separately; the template for it is mostly a list of questions in a fixed order, so you do not have to remember what reviewing consists of.</p>
<p>For a lot of people the list stops there. If yours includes a decision journal, reading notes, retros or incident reviews, those are real and well-established formats — but they are the second wave, added after the first four have proved they get used.</p>
<h2 id="where-the-template-should-come-from">Where the template should come from</h2>
<p>Two schools, and they fail differently.</p>
<p><strong>Write your own.</strong> Correct in principle: your meetings are not mine. In practice, writing your own is when the Sunday-afternoon problem happens, because a blank template editor invites completeness. If you write your own, write it <em>during</em> the third meeting where you wished you had one, not in advance.</p>
<p><strong>Start from a stock one and delete.</strong> Faster, and the deleting is the useful part. A stock template gives you a shape to react to, and reacting to a shape is much easier than inventing one. Whatever you delete in the first fortnight was never yours.</p>
<p>The failure mode worth naming: a template gallery with sixty entries. Sixty options is not sixty times as useful as four; it is a browsing session, and browsing is not writing. Ten or twelve good ones covering the common formats is about the size where you can hold them all in your head.</p>
<h2 id="what-to-check-in-the-app">What to check in the app</h2>
<p>Small mechanics, disproportionate effect on whether templates survive.</p>
<ul><li><strong>How many keystrokes to start a note from one?</strong> If it is more than about three, the template loses to a blank note and always will.</li><li><strong>Can you edit the template, or only use it?</strong> A stock template you cannot cut down is a stock template you will stop using in week two.</li><li><strong>Does the daily note create itself, or do you create it?</strong> These are very different products. "It is already there" removes a decision; "make today's note" adds one.</li><li><strong>Is it a template or a database?</strong> Some apps make templates the front end to a structured database with required properties. That is powerful and genuinely useful for tracking things — and it is also the thing that turns a two-second capture into a small form-filling exercise. Know which you are buying.</li></ul>
<h2 id="the-honest-version">The honest version</h2>
<p>If your notes are mostly one kind of thing — a research log, a book manuscript, a set of client files — you may need one template and nothing else, and a gallery is dead weight. If your work has no repeating shapes at all, templates are solving a problem you do not have, and the honest recommendation is a blank page and a good search box.</p>
<p>Templates pay off exactly when the same kind of note recurs and you keep re-deciding what should be in it. That is the whole condition.</p>
<p>Cyanote ships a set of them — daily notes, meeting and standup notes, 1:1s, project briefs, Cornell and reading notes, decision journals, weekly reviews, retros and incident reviews — reachable from the <code>/</code> menu without leaving the keyboard. They are meant as starting shapes to cut down, not a system to adopt. Every note lives in a single database on your own disk, so a template is a local convenience rather than a schema on somebody's server.</p>]]></content:encoded>
      <category>Templates</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>When macOS says it cannot verify an app</title>
      <link>https://cyanote.app/blog/macos-cannot-verify-this-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/macos-cannot-verify-this-app/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The warning is not a virus alert and it is not nothing. Here is what Gatekeeper actually checked, what changed in recent macOS, and when to walk away.</description>
      <content:encoded><![CDATA[<p>You download something, double-click, and macOS says it cannot be opened because it is from an unidentified developer, or that it cannot verify the app is free of malware.</p>
<p>Two wrong readings follow. Some people conclude the app has a virus and delete it. Others conclude macOS is being annoying and reach for the bypass. Neither is right, and the actual meaning is narrow enough to state precisely.</p>
<h2 id="what-gatekeeper-checked">What Gatekeeper checked</h2>
<p>macOS looked for two things, and the warning tells you which one failed.</p>
<p><strong>A Developer ID signature.</strong> The developer enrolled in Apple's programme, has a real identity on file with Apple, and used their certificate to sign the app. The signature also proves the app has not been altered since. If this is missing, macOS calls it an unidentified developer — meaning literally that: nobody's name is attached.</p>
<p><strong>Notarisation.</strong> The developer uploaded the finished build to Apple, which scanned it automatically for known malicious content and issued a ticket. This is not a review of quality or behaviour. It is an automated malware scan plus a record that a specific, identifiable developer shipped this specific binary.</p>
<p>Neither check says the app is good, safe, or well made. Together they say: a real identity is attached, and an automated scan found nothing known. That is a lower bar than people assume, and a meaningfully higher one than nothing — mainly because accountability raises the cost of shipping something bad.</p>
<figure><img src="/images/gatekeeper-flow.svg" alt="What macOS checked before it showed you the warning, and what each check does and does not prove" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>A signature is a name. Notarisation is a scan. Neither is a promise the app is any good.</figcaption></figure>
<h2 id="what-changed-and-why-the-old-advice-fails">What changed, and why the old advice fails</h2>
<p>For years the standard workaround was Control-click the app, choose Open, and confirm. Half the internet still says this.</p>
<p>Apple removed that path in macOS Sequoia. The <a href="https://developer.apple.com/news/?id=saqachfa">developer note announcing it</a> is explicit: users can no longer Control-click to override Gatekeeper for software that is not signed correctly or notarised, and must go to System Settings → Privacy &amp; Security to review the security information before allowing it to run.</p>
<p>So the current route, if you have decided to trust something:</p>
<ol><li>Try to open it once. It will be refused.</li><li>Open System Settings → Privacy &amp; Security.</li><li>Scroll down. There is a message naming the app that was blocked, with an <strong>Open Anyway</strong> button.</li><li>Confirm, and authenticate.</li></ol>
<p>The extra friction is deliberate. It makes the decision explicit, in a settings pane, rather than something you can be talked through on a phone call by someone claiming to be support — which was the attack the old shortcut enabled.</p>
<h2 id="what-you-should-never-do">What you should never do</h2>
<p><strong>Do not run <code>xattr -d com.apple.quarantine</code> because a forum told you to.</strong> That command strips the flag macOS uses to know the file came from the internet, and it makes the warning disappear for <em>any</em> file, including one that should have triggered it. It is the single most commonly pasted dangerous command in Mac support threads, and the people posting it are usually trying to help.</p>
<p><strong>Do not disable Gatekeeper entirely.</strong> <code>spctl --master-disable</code> turns the whole system off for everything, permanently, to solve one download. If you have done this at some point in the past, it is worth checking whether it is still off.</p>
<p>The distinction that matters: allowing one specific app you have reasoned about is a decision. Removing the mechanism that would have asked you next time is not.</p>
<h2 id="how-to-decide-whether-to-trust-it">How to decide whether to trust it</h2>
<p>The warning has told you what macOS does not know. The rest is yours, and these are the questions worth asking.</p>
<p><strong>Where did the download come from?</strong> The developer's own site over HTTPS, or a link in a search ad, or a download-portal mirror? Mirrors are where re-bundled installers live, and the app can be legitimate while the copy you got is not.</p>
<p><strong>Does the developer have a name and a history?</strong> A site, a changelog, a support address, a track record, people discussing it publicly. Software with no findable author asking you to override a security warning is a bad combination regardless of what it does.</p>
<p><strong>Is it open source, and are you getting it from the actual project?</strong> A great deal of good Mac software is unsigned simply because the developer will not pay Apple annually to give it away. That is a legitimate reason and a common one — but it makes provenance everything, since the project's release page and a random mirror carry very different risk.</p>
<p><strong>Is the warning proportionate to what you are installing?</strong> A small utility that draws a window is one thing. Something that wants Accessibility permission, a kernel extension or admin rights is another, and an unsigned app that immediately asks for <a href="/blog/why-a-mac-app-asks-for-accessibility/">broad system permissions</a> deserves considerably more scepticism.</p>
<h2 id="the-version-of-this-you-should-walk-away-from">The version of this you should walk away from</h2>
<p>Some cases are not judgement calls.</p>
<ul><li>The download arrived by email or a message, and you did not go looking for it.</li><li>A web page told you your Mac has a problem and offered a fix.</li><li>Someone on a call is asking you to open Privacy &amp; Security and click Open Anyway.</li><li>The app is a "cracked" or "patched" build of paid software. Repackaged installers are one of the most reliable malware vectors on macOS, and the whole point of the repackaging was to modify a binary somebody else signed.</li></ul>
<p>In all four, the warning is doing precisely the job it was designed for.</p>
<h2 id="the-other-side-what-it-costs-developers">The other side: what it costs developers</h2>
<p>Worth knowing, because it explains why so much decent software trips it.</p>
<p>Signing requires a paid Apple Developer membership, renewed annually. Notarisation requires uploading each build to Apple and waiting for a result, which adds a step to every release. For a hobbyist giving software away, that is a recurring cost and a recurring chore in exchange for no warning dialog — and plenty of them reasonably decline.</p>
<p>Which means the warning is not a quality signal. Some of the best Mac utilities ever written are unsigned, and plenty of mediocre commercial software is signed and notarised. It is an accountability signal, and only that.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>The warning means: nobody is on the hook for this, or nobody checked it. Decide with provenance, not with the dialog.</p>
<p>Cyanote's Mac build is a universal binary — Apple Silicon and Intel — signed with a Developer ID certificate and notarised by Apple, so it opens normally and none of the above applies to it. The Windows build is a different story and it is stated plainly on the site: it is not Authenticode-signed yet, Windows shows an unknown publisher on first run, and it is not on sale for exactly that kind of reason. Being able to say which of your builds trips a security warning, and why, seems like the least a download page owes you.</p>]]></content:encoded>
      <category>macOS</category>
      <category>Security</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>Linking notes without building a second brain</title>
      <link>https://cyanote.app/blog/linking-notes-without-a-second-brain/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/linking-notes-without-a-second-brain/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Wiki links and backlinks are a genuinely good idea buried under a genuinely exhausting methodology. Here is the small version that pays for itself in a week.</description>
      <content:encoded><![CDATA[<p>The idea is about thirty years old and it is a good one: let a note point at another note by name, and let the note being pointed at show you who pointed. That is it. Two sentences.</p>
<p>What grew on top of it is the reason most people bounce off. Somewhere in the last decade, linking notes stopped being a text feature and became a <em>practice</em>, with a vocabulary — atomic notes, evergreen notes, maps of content, zettelkasten, second brain — and a genre of YouTube video about the graph view of somebody's vault, which is beautiful and tells you nothing.</p>
<p>You can have the feature without the practice. It is worth having.</p>
<h2 id="what-a-link-actually-buys-you">What a link actually buys you</h2>
<p>Search finds a note when you remember a word that was in it. Links find a note when you remember a <em>different note</em> that mentioned it.</p>
<p>That second case is more common than it sounds. You cannot remember what the contractor was called, but you know you wrote about the kitchen. You cannot remember the name of the library, but you know it came up when you were setting up the project. In both cases you have a handle on something adjacent, and a link turns that adjacency into a route.</p>
<p>Backlinks — the note showing you what points at it — are the same trick pointed the other way. Open the note about a person and you see every meeting they were in, without having filed a single one of those meetings under their name. That is a filing system that builds itself as a side effect of writing normally, which is the only kind anybody sustains.</p>
<figure><img src="/images/backlinks-diagram.svg" alt="A note linked from three others, with the backlinks listed at the bottom of the note being pointed at" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>Nobody filed anything. The list at the bottom assembled itself out of ordinary writing.</figcaption></figure>
<h2 id="the-small-version-in-three-rules">The small version, in three rules</h2>
<p>This is the entire method as I actually use it. It takes no setup and no vocabulary.</p>
<p><strong>One, link a name the first time you write it in a note.</strong> People, projects, clients, recurring problems. Not concepts — names. <code>[[Priya]]</code>, <code>[[Kitchen rewire]]</code>, <code>[[Invoicing]]</code>. If the note does not exist yet, most apps create it empty when you follow the link, and an empty note that already has three things pointing at it is more useful than a full one nobody links to.</p>
<p><strong>Two, do not link things you would never look up.</strong> A link to <code>[[Tuesday]]</code> or <code>[[email]]</code> is noise. The test is whether you can imagine opening that note on purpose. If you cannot, leave the words as words.</p>
<p><strong>Three, never reorganise the links.</strong> They are not a structure you maintain. They are a residue of writing. The moment you start tidying them you have joined the practice, and the practice is where people stop.</p>
<p>That is the whole thing. Three rules, no software beyond an editor that supports <code>[[</code>.</p>
<h2 id="what-the-graph-view-is-for">What the graph view is for</h2>
<p>Honest answer: mostly nothing.</p>
<p>The force-directed picture of every note connected to every other note is one of the most screenshotted features in this category and one of the least used after week two. It is genuinely lovely, and it will occasionally show you a cluster you did not know you had. But it does not answer questions. "Which notes mention this client" is a question. "What does the shape of my knowledge look like" is a screensaver.</p>
<p>If an app has a graph view, enjoy it. If choosing between apps comes down to whether one has it, choose on something else.</p>
<h2 id="where-the-methodology-goes-wrong">Where the methodology goes wrong</h2>
<p>Not because the ideas are bad — several of them are good — but because of what they ask for up front.</p>
<p>The heavy note-linking systems ask you to decide, at the moment of writing, what a note <em>is</em>: whether it is atomic, whether it is permanent or fleeting, which index it belongs to, whether it has earned a place in the permanent collection. That is a lot of classification work applied to the thing you were doing to avoid work. The overhead lands entirely on capture, which is the exact point in the process that has to stay cheap or the system dies.</p>
<p>You can watch this happen in the wild. Someone sets up a beautiful vault in January, writes forty carefully processed notes, and by March is writing into the phone's default notes app because it does not ask any questions. The methodology did not fail on the merits. It failed on friction, at the only moment where friction is fatal.</p>
<p>The small version has no capture cost. You type two brackets in the middle of a sentence you were writing anyway.</p>
<h2 id="what-to-check-before-you-rely-on-it">What to check before you rely on it</h2>
<p>Links are only worth building if they survive.</p>
<p><strong>Do links break when you rename a note?</strong> Some apps rewrite every reference automatically. Some leave you with dead text. This matters more than it sounds, because notes get renamed constantly in the first month.</p>
<p><strong>Are backlinks shown, or only forward links?</strong> Forward links alone are half the feature. The assembling-itself part is the backlink list.</p>
<p><strong>What happens on export?</strong> If you leave, do the links come out as something a person or another app can follow, or as <code>[[Priya]]</code> sitting in a text file pointing at nothing? Ask this before you have two years of them. It is the same question as <a href="/blog/what-happens-when-your-notes-app-shuts-down/">what happens when your notes app shuts down</a>, applied to the one feature that is hardest to reconstruct by hand.</p>
<p><strong>Can you link to a sub-page, not just a top-level note?</strong> If notes nest, links that only reach the top level will start failing you around the time the collection gets deep enough to need them.</p>
<h2 id="the-honest-version-of-the-choice">The honest version of the choice</h2>
<p>If you genuinely want the full practice — a system you tend, with indexes and structure notes and a defensible taxonomy — <a href="https://obsidian.md/">Obsidian</a> is the app for it and has been for years. As of 17 August 2026 the core app is free for personal use, your notes are Markdown files in a folder you own, and the plugin ecosystem is where every idea in this space gets tried first. Nothing bundled into a general-purpose app will out-depth it, and I would not pretend otherwise.</p>
<p>What a general app can offer is the part most people actually use: <code>[[</code> works, backlinks appear at the bottom, and nobody asks you to have a philosophy. If you have tried the full version twice and stopped twice, that is not a discipline problem. It is a sign you wanted the feature and were sold the practice.</p>
<p>Cyanote's version is deliberately the small one. Type <code>[[</code> in any note to link to another, and the note you linked to lists what points at it. Notes nest into sub-pages, and the links reach them. Everything sits in a single SQLite database on your own disk, and the whole collection — links included — exports to a JSON file you can read. There is no graph view. There is also nothing to set up.</p>]]></content:encoded>
      <category>Notes</category>
      <category>Linking</category>
      <category>Method</category>
    </item>
    <item>
      <title>Life admin, in one place you will actually check</title>
      <link>https://cyanote.app/blog/life-admin-in-one-place/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/life-admin-in-one-place/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The renewal you missed, the warranty you could not find, the reference number in a 2023 email. Life admin fails in three ways, and all three are fixable.</description>
      <content:encoded><![CDATA[<p>Nobody has a system for this, because it does not feel like a domain. It is just the residue of being an adult: the insurance that renews in November, the boiler service, the passport that expires sooner than you think, the reference number for the thing you are still disputing, the warranty for the washing machine, the code the landlord gave you over the phone.</p>
<p>It is not enough work to justify software, which is exactly why it goes wrong. It sits below the threshold where anyone builds a system, and above the threshold where you can hold it in your head.</p>
<h2 id="the-three-failures">The three failures</h2>
<p>Everything that goes wrong is one of these.</p>
<p><strong>A date arrived and nobody knew.</strong> The renewal, the deadline, the expiry, the thing that auto-renewed at three times the price because the reminder was in an email you archived. This is the expensive one, and it is a pure calendar failure.</p>
<p><strong>A fact existed and could not be found.</strong> The policy number, the model, the serial, the reference from the call, the name of the person who said it would be fine. It is in an email or a photo or a drawer, and it takes twenty minutes to locate at the exact moment you are on hold.</p>
<p><strong>A thread got dropped.</strong> Something is half-resolved. You are waiting on them, or they are waiting on you, and neither of you is going to follow up, and in six weeks it will be worse and harder to explain.</p>
<p>Three failures, three fixes, and none of them requires anything clever.</p>
<h2 id="the-fix-for-dates">The fix for dates</h2>
<p>Every date with money attached goes in the calendar the moment you learn it, as a repeating event, with a reminder a <strong>month</strong> ahead.</p>
<p>A month, not a week, and this is the whole trick. A week's notice on an insurance renewal is notice that it is about to happen. A month is enough time to shop around, which is the only thing that makes knowing worth anything.</p>
<p>What belongs there: insurance renewals, subscriptions above whatever your annoyance threshold is, MOT and service dates, passport and licence expiry (six months ahead, not one — many countries want validity beyond your travel dates), warranty expiry for anything expensive, tax deadlines, and the end of any introductory rate.</p>
<p>That last one is the highest-value entry most people are missing. Introductory rates are designed around the assumption that you will not notice when they end, and a repeating calendar event defeats the entire business model.</p>
<figure><img src="/images/todo.webp" alt="Tasks with dates lifted out of the sentence you typed, grouped by when they are due" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The renewal in eleven months is not a memory problem. It is a thing you write down once, in fifteen seconds, the day you learn it.</figcaption></figure>
<h2 id="the-fix-for-facts">The fix for facts</h2>
<p>One note per <em>thing</em>, not per event.</p>
<p>The car. The flat. The washing machine. Each insurance policy. Each ongoing dispute. At the top of the note: the identifying numbers, the account, the model and serial, when it was bought and for how much, who to call. Below that, dated entries as things happen.</p>
<p>Why per thing rather than per event: because the question you ask is always "what do I know about the car", and never "what happened on 3 May". A note per thing answers the common question directly. A note per event means reconstructing the picture from fragments at the moment you least want to.</p>
<p><strong>Photograph the serial number when the thing arrives</strong>, into the note. It is thirty seconds while the box is open, and it is otherwise a job involving a torch and moving furniture. The same applies to the model plate on an appliance and the receipt, which fades.</p>
<p>Do keep in mind that a note with a policy number, an account number and a photograph of a document in it is a sensitive note. It is one of the better arguments for <a href="/blog/notes-app-without-an-account/">keeping this material locally</a> rather than in a workspace on somebody's server, and for <a href="/blog/password-protect-notes-on-mac/">locking the note</a> if the app supports it.</p>
<h2 id="the-fix-for-threads">The fix for threads</h2>
<p>Every open thread is one task with a date on it, and the date is when you will chase.</p>
<p>Not "when it is due" — when <em>you</em> will follow up if nothing has happened. Those are different dates and the second is the useful one. A task saying "chase the insurer about the claim, 24th" is a thread that cannot be dropped, because it will surface on the 24th whether or not anyone else has done anything.</p>
<p>The wording matters more than it should. "Insurance" is a topic and will be ignored. "Ring the insurer, ref 44821, about the excess" is an action you can perform without first working out what it means, and that difference is whether it gets done on the day or deferred four times.</p>
<p>This is where typing the task as a sentence earns its place — the moment you have to record it is thirty seconds after a phone call, standing up, and any friction means it does not happen. <a href="/blog/typing-a-task-the-way-you-say-it/">One line, with the date in it</a>, or it does not get written.</p>
<h2 id="the-twenty-minute-setup">The twenty-minute setup</h2>
<p>Do it once, on a Sunday. Not a system — a list.</p>
<p><strong>Write down every recurring date you can think of.</strong> Insurance, subscriptions, services, expiries. You will get maybe seventy percent, and the rest arrive by email over the following year and get added then.</p>
<p><strong>Make a note for each expensive thing you own.</strong> Model, serial, when bought, warranty length. Photograph the plate while you are at it.</p>
<p><strong>Open your bank statement and look for annual charges.</strong> This is where the forgotten subscriptions are, and it is the highest-return twenty minutes in the whole exercise. Every one you find either gets a renewal reminder or gets cancelled.</p>
<p><strong>Put a recurring event in for a yearly review of the above.</strong> Half an hour, once a year, to catch what changed.</p>
<p>That is genuinely the whole thing. It is not a productivity system; it is a small amount of writing down that prevents a specific and expensive category of annoyance.</p>
<h2 id="where-it-should-live">Where it should live</h2>
<p>In the same place as everything else you write down, and this is the practical point of the post.</p>
<p>Life admin loses to a dedicated app every time, because a dedicated app for boring things is an app you open when you are dealing with boring things, which is never voluntarily. The note about the boiler needs to be in the same search box as your work notes, and the renewal needs to be in the same calendar as your meetings — not because it is elegant, but because that is the box you actually type into.</p>
<p>The second reason is privacy. This material — account numbers, policy references, photographs of documents, the history of a dispute — is among the most sensitive text most people produce, and it usually ends up in whichever app was convenient. It is worth it being one you have thought about.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>None of this is a productivity method and it will not make you feel organised. It is a small amount of unglamorous writing that stops a specific set of expensive things from happening.</p>
<p>The single highest-return item, if you do nothing else: go through last year's bank statements for annual charges, and put a one-month-ahead reminder on every renewal you find. That one takes twenty minutes and pays for itself the first time an introductory rate ends.</p>
<p>Cyanote holds all three parts in one window: notes for the things, a calendar for the dates with reminders a day, an hour or thirty minutes ahead and repeats that carry between occurrences, and tasks that take a date out of the sentence you typed. Any note can be locked with a password and is encrypted where it sits. Everything is in one SQLite database on your own Mac with no account — which for a file containing your policy numbers, your serial numbers and photographs of your documents is not an abstract preference.</p>]]></content:encoded>
      <category>Method</category>
      <category>Workflow</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Leaving Evernote, fifteen years later</title>
      <link>https://cyanote.app/blog/leaving-evernote/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/leaving-evernote/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The hard part is not choosing where to go. It is that a decade of notes has become a place you live, and the export is the only thing that makes leaving reversible.</description>
      <content:encoded><![CDATA[<p>Evernote was the app that made "put everything in one place" a normal idea. A lot of people have twelve or fifteen years in it — web clippings, scanned receipts, meeting notes from jobs they have long since left, the recipe, the warranty, the thing about the boiler.</p>
<p>That is the actual situation, and it is why generic switching advice is useless here. Nobody is deciding between two note-taking apps. They are deciding what to do with an archive that has quietly become a second memory.</p>
<h2 id="why-people-are-looking">Why people are looking</h2>
<p>The free tier is now a demonstration rather than a home. Evernote's own <a href="https://evernote.com/pricing">plan comparison</a>, as of 17 August 2026, caps the free plan at 50 notes, one notebook, one device and 1 GB. Starter raises that to 1,000 notes, 20 notebooks and three devices; only the Advanced tier removes the note and notebook caps entirely.</p>
<p>If you have 4,000 notes, the free tier is not something you can fall back to. That is the structural fact behind most of these decisions — not a feature complaint, but the realisation that an archive you built over a decade now sits behind a recurring payment you must keep making to keep it accessible in the app that holds it.</p>
<p>Whatever you decide about staying, that is a good reason to hold an export.</p>
<h2 id="do-the-export-first-and-separately">Do the export first, and separately</h2>
<p>Before choosing anything else. This is the part that makes every subsequent decision reversible.</p>
<p><strong>Do it now, while your account is in good standing.</strong> Not when you are cancelling, not when the renewal has lapsed. The worst version of this is discovering the export limits of a downgraded account at the moment you need them.</p>
<p><strong>Export in batches, by notebook.</strong> Large single exports are where things time out or fail halfway. Notebook by notebook is slower, verifiable and restartable.</p>
<p><strong>Then open the result.</strong> Actually open it — a couple of files, at random, in something that is not Evernote. This is where people find out what did and did not travel. An export you have not opened is a hypothesis, and that is <a href="/blog/backing-up-local-notes/">true of every backup</a>, not just this one.</p>
<p><strong>Keep the export even if you stay.</strong> It costs disk space and it converts your archive from something you rent access to into something you have.</p>
<figure><img src="/images/note.webp" alt="A decade of notes, in a format you can read without asking anyone&#x27;s permission" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The export is the decision that makes every other decision reversible. Do it before you need it.</figcaption></figure>
<h2 id="what-travels-and-what-does-not">What travels and what does not</h2>
<p>Set expectations before you start, because some loss is unavoidable and it is better to know which.</p>
<p><strong>Travels well:</strong> the text of your notes, titles, creation and modification dates, notebook structure as folders, most attachments, and tags in some form.</p>
<p><strong>Travels imperfectly:</strong> rich formatting from web clippings, especially older ones. Tables. Nested lists past a level or two. Anything that relied on Evernote's own rendering rather than standard markup.</p>
<p><strong>Often does not travel:</strong> internal note links, which point at Evernote URLs and become dead text somewhere else. Reminders. Saved searches. Anything to do with the account rather than the content.</p>
<p>The internal links are the one that stings, and there is no clean fix. If you have a heavily interlinked collection, budget for the fact that the connections are largely Evernote's, not yours — the same reason it is worth <a href="/blog/linking-notes-without-a-second-brain/">asking what happens to links on export</a> before building a decade of them anywhere.</p>
<h2 id="then-split-the-archive-from-the-working-set">Then split the archive from the working set</h2>
<p>The single most useful move, and the one most people skip in favour of migrating everything.</p>
<p><strong>The archive</strong> is the fourteen years of material you refer to a few times a year. It does not need to be in your daily app. It needs to be readable and searchable, which a folder of exported files on your disk already is — macOS Spotlight will index it, and <code>grep</code> will find anything Spotlight misses.</p>
<p><strong>The working set</strong> is the last six to twelve months plus the notes you genuinely reference. For most people that is a few hundred notes out of thousands. That is what goes into whatever you use next.</p>
<p>Migrating everything feels responsible and produces the classic outcome: a weekend spent, a new app full of fifteen years of clutter you never wanted to look at, and a system that feels stale on day one. The archive is not less valuable for sitting still. It is just not daily.</p>
<h2 id="choosing-where-to-go">Choosing where to go</h2>
<p>Briefly, since the honest answers depend entirely on what you were using Evernote for.</p>
<p><strong>Web clipping was the point.</strong> Evernote's clipper is genuinely the best in the category and this is its strongest remaining argument. If most of your notes are saved articles, look at something built for that rather than a general notes app.</p>
<p><strong>You need it everywhere.</strong> Apple Notes is free and syncs across Apple devices with nothing to configure. Obsidian keeps your notes as files in a folder and lets you sync them however you like. Notion is in any browser.</p>
<p><strong>It is mostly text, and you mostly use one machine.</strong> This is the case where a local app makes sense: no account, no tier, no cap, and the archive is a file you own.</p>
<p><strong>You never really used it as a notes app.</strong> A striking number of long-term Evernote accounts are actually document storage — receipts, warranties, scans. That is a filing problem, and a folder structure with good naming plus Spotlight is a better answer than any notes app.</p>
<h2 id="the-one-thing-not-to-do">The one thing not to do</h2>
<p>Do not migrate into a new app before you have a working export sitting on your own disk.</p>
<p>The failure mode is specific and common: you import into something new, spend three weeks setting it up, decide it is wrong, and by then your Evernote subscription has lapsed and the new app's export is worse than the one you skipped. Two apps, no archive, and the way back closed while you were not looking.</p>
<p>The export first. Everything else after.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If Evernote is working and you are content paying for it, staying is a perfectly good decision. Fifteen years of accumulated structure has real value, the search is good, the clipper is unmatched, and switching costs a weekend you may never get back in productivity.</p>
<p>The thing worth doing regardless — today, whether you leave or not — is holding an export you have actually opened. That is what turns your archive from a tenancy into a possession, and it costs an hour.</p>
<p>Cyanote is the local answer for the working-set case, and not the answer for the others. Notes in a block editor with headings, tables, code and images, tasks and a calendar and habits in the same window, full-text search across everything, one SQLite database on your own Mac, no account and no note limit at any price. There is no web clipper, no phone app and no sync — so if what you loved about Evernote was that it was everywhere and caught everything from the browser, this is not a replacement, and I would rather say so than let you find out in week three.</p>]]></content:encoded>
      <category>Buying advice</category>
      <category>Backups</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Keeping your own health notes</title>
      <link>https://cyanote.app/blog/keeping-your-own-health-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/keeping-your-own-health-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Ten minutes with a doctor goes better when you arrive with dates and specifics rather than impressions. Here is what to write, and where it should not go.</description>
      <content:encoded><![CDATA[<p>You have ten minutes. You have been meaning to mention three things and you remember two. Asked when it started, you say "a few months ago", which is what everyone says and is almost always wrong by a factor of two. Asked whether the last medication helped, you say "I think so".</p>
<p>None of that is a failure of memory. Symptoms are noticed rather than recorded, they change gradually, and the version you present in a consulting room is heavily coloured by how you feel that morning.</p>
<p>A page of notes changes the appointment substantially, and it takes very little.</p>
<h2 id="what-to-write-and-why-each-part">What to write, and why each part</h2>
<p><strong>When it started, with an actual date.</strong> The most useful single item. "Since around 4 June" is clinically different information from "a few months", and you will only have it if you wrote it down near the time.</p>
<p><strong>Frequency and pattern, in numbers.</strong> Twice a week, worse in the mornings, three bad days in the last fortnight. Counting is unglamorous and it converts an impression into something someone can work with.</p>
<p><strong>What makes it better or worse.</strong> Noticed over weeks, invisible in a single day.</p>
<p><strong>What you have already tried, and what happened.</strong> Including things that did not work, with rough dates. This prevents the loop where you are prescribed something you tried in March.</p>
<p><strong>Every medication and supplement, with doses.</strong> Written down, because reciting from memory under mild stress is where errors happen.</p>
<p><strong>Your three questions, written before you go.</strong> This is the one that changes the appointment most. Ten minutes goes fast, the conversation follows whatever the clinician opens with, and the thing you most wanted to ask is regularly the thing you walk out without asking.</p>
<h2 id="afterwards-five-lines">Afterwards, five lines</h2>
<p>Immediately, before you have left the building or straight after the call.</p>
<p><strong>What they said, in their words.</strong> Not your interpretation. You will re-interpret it three times over the following week and end up with something that was never said.</p>
<p><strong>The name of anything they named</strong> — a condition, a test, a medication, a referral. Spelled as best you can. This is what makes the rest of it searchable later.</p>
<p><strong>What happens next, and who is doing it.</strong> The referral, the test, the follow-up in six weeks.</p>
<p><strong>What you are supposed to watch for.</strong> The "come back if" list, which is the single most safety-relevant thing said in most appointments and the most commonly forgotten.</p>
<p><strong>What you did not ask.</strong> For next time.</p>
<p>Five lines. It is the same discipline as <a href="/blog/a-transcript-is-not-a-note/">writing up a meeting immediately</a>, applied where the stakes are higher and the recall is worse, because appointments are mildly stressful and stress degrades memory precisely when you most need it.</p>
<h2 id="why-the-record-beats-the-impression">Why the record beats the impression</h2>
<p>A pattern you have written down is a fact. A pattern you have noticed is a feeling, and feelings about your own body are systematically distorted in a specific direction: whatever is true today feels like what has been true generally.</p>
<p>That matters in both directions. Something that has quietly worsened over eight months feels normal, because each week resembled the last. And a bad week after four good ones feels like a relapse when the record shows it is the first bad week since April — which is genuinely reassuring, and unavailable without a record.</p>
<p>Neither of these is available from memory. Both are available from a dated line a week.</p>
<h2 id="where-these-notes-should-not-go">Where these notes should not go</h2>
<p>This is the part worth being deliberate about, because health notes are among the most sensitive text most people ever write.</p>
<p><strong>Not in a shared workspace.</strong> Not in a work account, a team tool, or anywhere your employer administers. This should be obvious and it happens constantly, because the work app is the one people have open.</p>
<p><strong>Not in a health app whose business model you have not read.</strong> The consumer health app category has a poor record on data sharing, and "anonymised" is doing a great deal of work in most of those policies. This is your medical history; treat the choice of where it lives as a decision rather than a default.</p>
<p><strong>Not where a shared device will show it.</strong> A family iPad with your account signed in is a shared device.</p>
<p><strong>Somewhere encrypted, ideally.</strong> Full-disk encryption at minimum, and per-note locking if your app offers it — the same reasoning as <a href="/blog/password-protect-notes-on-mac/">locking any note that would matter</a>, applied to the clearest case there is.</p>
<p>The arrangement that matches the material is a local file on a machine you control, encrypted, with no account and no service in the middle. Not because companies are malicious, but because <a href="/blog/apps-that-do-not-phone-home/">the safest data is data that was never transmitted</a>, and this is the category where that principle is least worth compromising.</p>
<h2 id="what-this-is-not">What this is not</h2>
<p><strong>Not diagnosis.</strong> A record of symptoms is input to a clinician, not a substitute for one. Searching your own notes for a pattern and concluding what it is has a worse track record than almost any other use of writing things down.</p>
<p><strong>Not a substitute for your medical record.</strong> Your clinicians hold that, it is authoritative, and in many countries you can request a copy. Your notes are a parallel record of what you experienced and what you were told, which is a different and complementary thing.</p>
<p><strong>Not a project.</strong> Five lines around an appointment, and a dated line when something changes. Anything more elaborate becomes a way of paying more attention to symptoms, which is not always helpful and is occasionally the opposite.</p>
<h2 id="for-someone-else">For someone else</h2>
<p>Worth mentioning, because it is where this matters most and where it is hardest.</p>
<p>If you are managing appointments for a parent, a child or a partner, the same notes are more valuable and more difficult — the person in the room is not the person who remembers, and you are frequently coordinating between clinicians who are not talking to each other. One note per person, dated entries, medication list at the top, questions written before.</p>
<p>The same privacy considerations apply and are sharper, because this is somebody else's medical information and they did not choose where you keep it.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Most people will not keep a health log, and for most people, most of the time, that is fine.</p>
<p>The version that is worth doing regardless is much smaller: <strong>write the date when something starts, and write down what you were told straight after an appointment.</strong> Two habits, thirty seconds each, and between them they cover the two things that reliably go wrong.</p>
<p>Cyanote is a reasonable place for it for one structural reason: everything is in a single SQLite database on your own Mac, with no account and nothing transmitted, and any note can be locked with a password and is encrypted where it sits. There are no AI features reading your notes and no sync service holding a copy. For a record of your own health, "nobody else has this" is not a feature claim — it is the requirement.</p>]]></content:encoded>
      <category>Privacy</category>
      <category>Method</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Keeping track of a job search without a spreadsheet</title>
      <link>https://cyanote.app/blog/keeping-track-of-a-job-search/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/keeping-track-of-a-job-search/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Forty applications, six stages each, and no memory of which recruiter said what. A board and one note per company beats any tracker template.</description>
      <content:encoded><![CDATA[<p>A job search turns into an administrative problem faster than anyone expects. Forty applications, each with its own multi-stage process, its own contacts, its own version of your CV, and its own set of things somebody said on a call three weeks ago that you now cannot recall.</p>
<p>Meanwhile you are doing this in the evenings, around a job you still have, in a state of low-grade stress that is not conducive to remembering anything.</p>
<p>The spreadsheet everyone starts with is the right instinct and the wrong shape. It handles the list well and the content badly, and the content is what you actually need at the moment it matters — sitting down before a call, trying to remember what this company does and what you said last time.</p>
<h2 id="what-a-job-search-actually-needs">What a job search actually needs</h2>
<p>Three things, and a spreadsheet only does the first.</p>
<p><strong>A view of where everything is.</strong> Applied, screening, interviewing, offer, rejected. One glance, no scrolling. This is genuinely the thing a spreadsheet is worst at, because a spreadsheet shows you rows and you need columns of <em>stages</em>.</p>
<p><strong>A place for everything you know about each company.</strong> What they do, who you spoke to, what they asked, what you said, what the salary conversation was, what you liked and did not. This is prose, and prose in a spreadsheet cell is unreadable.</p>
<p><strong>A follow-up that will not be forgotten.</strong> Dated, surfacing on the day, not living in your head at 2am.</p>
<h2 id="the-board">The board</h2>
<p>Columns as stages, one card per application. That is the entire tracking system.</p>
<p>Applied → Screening → Interviewing → Offer, plus a Rejected column that you do not delete from, because the record is useful later and deleting rejections makes the board a monument to only the parts that went well.</p>
<p>The reason a board beats a list here is that the question is always "what stage is everything at" — the board answers it without you reading anything. A list makes you scan a status column and assemble the picture yourself, forty times.</p>
<p>Keep the cards short. The card is a pointer; the substance lives in the note.</p>
<figure><img src="/images/board.webp" alt="Applications as cards, columns as stages — the whole tracking system in one glance" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The card is a pointer. The thing you actually need before a call is in the note.</figcaption></figure>
<h2 id="one-note-per-company">One note per company</h2>
<p>Not per application, and not per interview. Per company, growing downward, exactly like <a href="/blog/keeping-client-work-straight/">a client note</a>.</p>
<p>At the top: what they do in your own words, the role, the link to the posting (copy the text of it too — postings disappear the moment they close, often right before your final round), the salary range if stated, which version of your CV you sent, and where you found it.</p>
<p>Below: dated entries. Every call, every email, every name, every thing they said about the team or the timeline. Written within ten minutes of hanging up.</p>
<p>The reason this beats a spreadsheet is one specific moment: it is 9:50, you have a call at 10, and you need to remember what this company does, who you are speaking to, and what you told them last time. Open one note, read for ninety seconds, done. Any other arrangement means assembling that from three places while the call is starting.</p>
<h2 id="what-to-write-after-every-conversation">What to write after every conversation</h2>
<p>Ten minutes, while it is fresh, and this is where the whole system pays.</p>
<p><strong>Who you spoke to</strong>, name and role, spelled correctly. You will need it for the thank-you email and for the next round.</p>
<p><strong>What they asked.</strong> Especially anything that caught you out. This is the single most useful thing in the note, because the same question will come up at the next company and you will have a better answer ready.</p>
<p><strong>What you said</strong> about salary, notice period, and why you are leaving. You must be consistent across rounds, and after six conversations you genuinely will not remember which version you gave to whom.</p>
<p><strong>What you learned about them</strong> that is not on the website. Team size, what the last person in the role did, what they said when you asked what goes wrong.</p>
<p><strong>How it felt.</strong> One line. Job searches distort judgement — an offer in hand makes everything look better and a rejection makes everything look worse — and the contemporaneous note is the only record of what you thought before the outcome existed. It is a small <a href="/blog/keeping-a-decision-journal/">decision journal</a> and it is exactly what you want when comparing two offers in a fortnight.</p>
<h2 id="follow-ups">Follow-ups</h2>
<p>Every conversation produces one dated task, immediately.</p>
<p>"Email Priya at Northwind thanking her, ref the platform question, by Thursday." Not "follow up with Northwind", which is a topic. The action, the person, the reason, the date — <a href="/blog/typing-a-task-the-way-you-say-it/">written as one sentence</a> in the thirty seconds after the call, because that is the only moment it will get written.</p>
<p>And a second task for the chase: if they said two weeks, put "chase Northwind" at two weeks and one day. Recruiters are busy, timelines slip, and a polite chase on the day is the difference between a process that stalls and one that moves. It also spares you the daily background cost of wondering whether today is the day to chase.</p>
<h2 id="what-this-is-also-for">What this is also for</h2>
<p>Something people realise afterwards: the notes are the raw material for the next search.</p>
<p>The questions you were asked, the answers that worked, the salary numbers that were actually on the table, the things you learned to ask about — that is a genuinely valuable body of information, and almost everybody deletes it in the relief of having finished. Keep it. In three years it will save you a fortnight of relearning.</p>
<p>Keep the rejections too, with what you thought the reason was. Patterns across ten rejections tell you something no individual rejection does.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>A spreadsheet works. If you have six applications and a good memory, use one and do not build a system.</p>
<p>The threshold where this pays off is somewhere around fifteen applications, or the first time you arrive at a call unable to remember which company you are speaking to. Past that point the bottleneck is not tracking, it is context, and context is prose.</p>
<p>Cyanote covers both halves in one window: a board for the stages, notes for the substance, tasks with dates lifted out of the sentence you typed, and full-text search across everything you wrote so "who was the one with the four-day week" is one query. It is a local database on your own Mac with no account and no sync — which for a job search you are conducting while still employed is the practical consideration, not a philosophical one.</p>]]></content:encoded>
      <category>Work</category>
      <category>Workflow</category>
      <category>Method</category>
    </item>
    <item>
      <title>Keeping client work straight without project management software</title>
      <link>https://cyanote.app/blog/keeping-client-work-straight/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/keeping-client-work-straight/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Three clients is not a portfolio needing software. It is three sets of notes, dates and promises — and the failure is always the same one, in the same place.</description>
      <content:encoded><![CDATA[<p>Freelancers get sold project management software built for teams of twenty, and then spend a Sunday configuring workspaces, statuses and custom fields for a business consisting of one person and three clients.</p>
<p>It is the wrong tool, and not because it is bad. It is built to answer questions a team has — who owns this, what is blocked, what is the status — and those questions have trivial answers when the team is you. Who owns it: you. What is blocked: nothing, you just have not done it.</p>
<p>The questions a solo practice actually has are different, and smaller.</p>
<h2 id="the-four-questions">The four questions</h2>
<p>Almost everything you need from a system is one of these.</p>
<p><strong>What did I promise this client, and when?</strong> The commitment question. It is the one that damages relationships when it goes wrong, and it goes wrong through ordinary drift rather than negligence — a thing said on a call in week two that neither of you wrote down.</p>
<p><strong>What did we agree it costs?</strong> Scope. The most expensive failure in freelancing, and almost always a documentation failure rather than a negotiation one.</p>
<p><strong>Where did we leave it?</strong> The context question. Six clients means five stale contexts at any moment, and reconstructing one from memory before a call is where the time goes.</p>
<p><strong>What am I owed?</strong> Invoices sent, invoices paid, invoices quietly not paid for eleven weeks.</p>
<p>None of those needs a Kanban board with swimlanes. They need writing things down in a place you can find again.</p>
<h2 id="the-shape-that-works">The shape that works</h2>
<p>One note per client. Not a folder, not a project, not a database — a note, which grows.</p>
<p>At the top: the boilerplate. Rate, contact details, how they like to be invoiced, the thing they told you in the first call that explains everything about how they work. Under that, dated entries, newest first, each a few lines: what was discussed, what was agreed, what you owe them, what they owe you.</p>
<p>That is it. It looks too simple to be a system, which is why it survives — there is nothing to maintain, and adding to it costs four lines after a call.</p>
<p><strong>Why one note and not one per meeting:</strong> because the question you ask is almost always "where are we with this client", not "what happened on 14 March". A single scrolling note answers the common question directly and the rare one via search. A file per meeting inverts that, and you spend your time in a list of files instead of in the content.</p>
<figure><img src="/images/note.webp" alt="One note per client, growing downward, with dates and the things that were agreed" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The whole system: boilerplate at the top, dated entries below, four lines after every call.</figcaption></figure>
<h2 id="the-one-discipline">The one discipline</h2>
<p>Write the entry immediately after the call. Not later that day.</p>
<p>This is the entire method and the only part that requires anything of you. Four lines, in the two minutes while you are still holding the conversation. What was decided, what changed, what you now owe. Later that day, you will remember perhaps half of it, and the half you lose is disproportionately the commitments, because those were said quickly at the end while both of you were wrapping up.</p>
<p>Everything else in this post is optional. This is not.</p>
<h2 id="where-the-tasks-go">Where the tasks go</h2>
<p>Promises become tasks, and they should leave the client note.</p>
<p>A commitment buried in a paragraph in a client note is not tracked — you will only see it if you happen to reread that note. The line you wrote goes in the note as a record; the <em>task</em> goes in the to-do list with a date on it, because that is the thing that will surface on the right day.</p>
<p>This is where the <a href="/blog/typing-a-task-the-way-you-say-it/">type-it-as-a-sentence</a> capture matters more for freelancers than for most people, since the moment you have to write it down is thirty seconds after a call, and any friction there means it does not happen.</p>
<p>The board view earns its place too, but not as project management — as one glance across clients: what is waiting on me, what is waiting on them, what is done and unbilled. Three columns. <a href="/blog/personal-kanban-board/">Personal kanban</a>, applied to a business.</p>
<h2 id="what-to-write-down-that-people-do-not">What to write down that people do not</h2>
<p><strong>The scope conversation, verbatim-ish.</strong> "Agreed the redesign covers the marketing pages, not the app." One sentence, written the day it was said, has settled more disputes than any contract clause, because it is not a legal instrument — it is a shared memory that turns out to be one-sided otherwise.</p>
<p><strong>Every "could you also".</strong> They are not scope creep individually; they are scope creep in aggregate, and you cannot make the case in month three without a list.</p>
<p><strong>How long things actually took.</strong> Not for billing — for quoting. The single most valuable dataset a freelancer can have is what their own estimates are usually wrong by, and it takes one number per project to build.</p>
<p><strong>When you sent the invoice.</strong> With a date. The chase conversation is much easier when you can say which day.</p>
<h2 id="what-still-needs-a-real-tool">What still needs a real tool</h2>
<p>Being straight about the boundaries.</p>
<p><strong>Invoicing and accounts.</strong> Use proper software. This is not a notes problem; it is a legal and tax problem, and the tools are cheap.</p>
<p><strong>Contracts.</strong> Also not this. A note recording what you agreed is a memory aid, not an agreement.</p>
<p><strong>Time tracking, if you bill hourly.</strong> A dedicated timer is better than anything you will improvise, though a focus timer pointed at a task will give you a rough count of sessions if you mostly want the shape rather than the invoice line.</p>
<p><strong>Anything involving a team.</strong> The moment a second person needs to see status, everything above stops working and shared software starts making sense.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you are running eight simultaneous projects with subcontractors and deliverable dependencies, that is a small agency and it needs agency software. The advice here is scoped to one person with a handful of clients, which is the majority of freelancing and the case most tools are not designed for.</p>
<p>For that case the system is: one note per client, four lines after every call, promises moved to a dated task list, and a board when you want the overview. It fits in any app that has notes and tasks in the same place, and it fails in any arrangement where writing the four lines means opening a second app.</p>
<p>Cyanote keeps them in one window: notes that nest and link, tasks that take a date out of a typed sentence, a board view of the same tasks, and full-text search across every client note you have ever written. One SQLite database on your own Mac, no account, and a readable JSON export — which for client work is not a philosophical point but a practical one, since the confidential notes of a working practice are exactly the material that should not require somebody else's server to remain readable.</p>]]></content:encoded>
      <category>Freelancing</category>
      <category>Workflow</category>
      <category>Method</category>
    </item>
    <item>
      <title>Keeping a log for something you practise</title>
      <link>https://cyanote.app/blog/keeping-a-log-for-something-you-practise/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/keeping-a-log-for-something-you-practise/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The training app tracks numbers and misses the one thing that makes a log useful: what you noticed. Four lines a session, and the pattern shows up in a year.</description>
      <content:encoded><![CDATA[<p>Anything you practise over years — an instrument, running, lifting, the garden, a craft, a language — has the same problem. Progress is slow enough to be invisible from inside it, and the things that explain your progress are forgotten within a fortnight.</p>
<p>There is an app for the numbers. There is rarely one for the part that matters.</p>
<h2 id="what-the-tracking-apps-miss">What the tracking apps miss</h2>
<p>Specialised apps are excellent at quantities. Sets, reps, distance, pace, minutes, watering schedules, streaks. That data is real and it is worth having.</p>
<p>What they do not hold is the sentence that explains it.</p>
<p>You had a bad run on Tuesday. The app records a slow pace. It does not record that you had slept badly, that it was unusually humid, that the shoes were new, or that your knee felt odd from about mile three. Six weeks later, when the knee is a problem, the app shows a graph with a dip in it and no information about what happened.</p>
<p>The number is the outcome. The note is the cause, and the cause is what you would want to know.</p>
<h2 id="the-four-lines">The four lines</h2>
<p>After a session, four lines. Ninety seconds.</p>
<p><strong>What I did.</strong> The quantities, if you are not already logging them elsewhere.</p>
<p><strong>How it felt.</strong> One word is enough — heavy, easy, sharp, flat. This is the single most predictive line in any practice log and it is in none of the apps. Three "heavy" sessions in a row is information you will otherwise notice a month late.</p>
<p><strong>What I noticed.</strong> The technical thing. The bar drifting forward, the passage where you always slow down, the third bed drying out faster than the others, the phrase you keep mispronouncing. This is the line that makes the log worth rereading, because it is what you were working on, in your words.</p>
<p><strong>What to try next time.</strong> One thing. Which turns the log from a record into an instruction, and means the next session starts with a plan rather than with remembering what you were doing.</p>
<p>Four lines. Not a training diary, not a journal. Four lines.</p>
<figure><img src="/images/habits.webp" alt="Habits as a grid of days — the quantity — with the note next to it holding what happened" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The grid tells you whether you turned up. The note tells you why the good weeks were good.</figcaption></figure>
<h2 id="what-shows-up-over-a-year">What shows up over a year</h2>
<p>The reason to keep it, and none of these are visible session by session.</p>
<p><strong>The conditions that predict your good sessions.</strong> Almost everyone has two or three, and almost nobody knows what they are without a record. Sleep, time of day, what came before, whether you had eaten. When you can see it across fifty entries, it stops being folklore about yourself and becomes something you can arrange.</p>
<p><strong>Injuries and problems have a prologue.</strong> Something almost always felt slightly off for weeks before it became a problem, and you almost always dismissed it. The log is the only place that early signal survives, and reading back from an injury to find three mentions of the same niggle is both useful and slightly chastening.</p>
<p><strong>Plateaus are usually shorter than they feel.</strong> Being stuck is a feeling generated by comparison with last week. Reading what you wrote a year ago is the corrective, and it is frequently the difference between continuing and quitting.</p>
<p><strong>What you keep trying and abandoning.</strong> The same "work on this next time" appearing eight times over a year means you are not actually working on it. That pattern is invisible without the record and obvious with it.</p>
<h2 id="numbers-where-they-matter-prose-where-they-matter">Numbers where they matter, prose where they matter</h2>
<p>Worth being clear on the division, because logging everything is how logs get abandoned.</p>
<p><strong>Numbers:</strong> the quantity, and anything you genuinely compare over time. Weight, distance, minutes, count. Use the specialised app if you have one — it will graph them better than any notes app.</p>
<p><strong>Prose:</strong> everything that explains the numbers. It does not need to be structured, tagged or quantified. "Felt heavy, third set collapsed, probably the 5am start" is worth more than a mood rating out of ten, because the reason is in it.</p>
<p><strong>A grid for whether you turned up.</strong> A habit tracker's grid of days is the right shape for one specific question — consistency — and it is the one thing a prose log answers badly. Four weeks of squares shows a gap on the 3rd immediately.</p>
<p>Three formats, three jobs, and the mistake is asking one of them to do all three.</p>
<h2 id="where-it-should-live">Where it should live</h2>
<p>Somewhere you will still have in five years, which rules out most specialised apps.</p>
<p>This is the practical argument. A practice log is only valuable at a horizon of years — a year of running notes or three years of a garden is where the patterns are — and specialised tracking apps have an unusually high failure rate over that period. They get acquired, they move to subscriptions, they discontinue, they lose your history in a migration. Every long-term hobbyist has lost a log this way.</p>
<p>Prose in a general notes app that exports to a readable file is the arrangement most likely to survive to the point where it is worth something. The <a href="/blog/what-happens-when-your-notes-app-shuts-down/">portability question</a> is usually discussed for work notes, and it applies at least as strongly to a decade of training entries.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Nobody keeps this up perfectly, and it does not need to be perfect. A log with gaps is still a log — the patterns come from volume, not from completeness, and a missed fortnight costs almost nothing.</p>
<p>If four lines is too many, keep one: <strong>how it felt, in a word.</strong> That single word, logged for a year, is more useful than most people's complete training data, because it is the variable everything else correlates with and the one nothing else records.</p>
<p>Cyanote holds all three shapes in one window: habits as a grid of the last four weeks, where a gap on the 3rd is visible straight down the page and any square is one click; notes for the four lines, searchable by any word in them years later; and routines for a warm-up or a session structure you repeat. It is one SQLite database on your own Mac with a readable JSON export — which for a record you are hoping to still have in 2036 is the part that actually matters.</p>]]></content:encoded>
      <category>Method</category>
      <category>Habits</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Keeping a decision journal</title>
      <link>https://cyanote.app/blog/keeping-a-decision-journal/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/keeping-a-decision-journal/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You cannot remember what you thought would happen, because you have already updated. Five lines written before the outcome is the only fix there is.</description>
      <content:encoded><![CDATA[<p>Think of a decision you made two years ago that turned out well. Now try to recall what you expected at the time — not the outcome, the expectation. Specifically: what you thought the odds were, and what you thought could go wrong.</p>
<p>You cannot. Nobody can. What you have instead is a story assembled after the fact, in which you knew roughly what would happen, and the surprises have been quietly written out because they no longer fit.</p>
<p>This is not a memory defect you can train away. It is how memory works, and it means that without writing something down, you cannot learn from your own decisions — you only get to learn from the versions of them you have already rewritten.</p>
<h2 id="why-experience-does-not-automatically-improve-judgement">Why experience does not automatically improve judgement</h2>
<p>You need three things for a decision to teach you anything: what you predicted, what happened, and a comparison.</p>
<p>The middle one is easy — outcomes are loud. The first is where it collapses, because by the time the outcome arrives you have already updated, and the updated belief feels like the original one. There is nothing to compare against.</p>
<p>The consequence shows up as two errors, both common in confident, experienced people. <strong>Outcomes get credited to reasoning that was not there</strong> — a good result from a bad decision that got lucky, remembered as good judgement. And <strong>bad outcomes get blamed on things nobody could have known</strong>, when the risk was in fact identified at the time and dismissed.</p>
<p>A decision journal fixes exactly one thing: it preserves the prediction so a comparison is possible. That is the whole mechanism, and it is why five lines beat any amount of reflection.</p>
<h2 id="the-five-lines">The five lines</h2>
<p>Write these <em>before</em> you know how it turned out. That is the only rule that matters.</p>
<p><strong>The decision.</strong> One sentence, plainly. "Taking the contract with X instead of Y."</p>
<p><strong>What I expect to happen.</strong> Concrete enough to be wrong. Not "it should go well" — "I expect this to take six weeks and lead to more work in the spring."</p>
<p><strong>Why — the two or three actual reasons.</strong> Not the justification you would give someone else. The reasons that are doing the work, including the unflattering ones. "Mostly because I want the money now and Y felt like a longer conversation."</p>
<p><strong>What would make this wrong.</strong> The single most valuable line, and the one everybody skips. Name the thing that, if it happened, would mean this was a mistake. It forces you to hold a version of the world where you are wrong, at the one moment when you can still see it.</p>
<p><strong>How I feel.</strong> Rushed, excited, cornered, relieved. State is a strong predictor of decision quality, and it is completely invisible in hindsight — you will never remember that you decided this while exhausted, but you will be able to read it.</p>
<p>Five lines. Two minutes. The whole method.</p>
<figure><img src="/images/decision-entry.svg" alt="A decision entry: the decision, the prediction, the real reasons, what would falsify it, and the state you were in" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>Written before the outcome, because afterwards there is nothing left to compare against.</figcaption></figure>
<h2 id="what-to-log-and-what-to-leave-alone">What to log, and what to leave alone</h2>
<p>Not everything. A journal of every decision is a journal nobody keeps.</p>
<p><strong>Worth logging:</strong> anything you would be annoyed to get wrong and will find out about within a year or two. Hiring someone. Taking or leaving a job. A significant purchase. Choosing a technology you will live with. Ending or continuing something. Any decision where you notice yourself arguing internally — that argument is the signal.</p>
<p><strong>Not worth logging:</strong> reversible decisions, small ones, and anything whose outcome you will never learn. If there is no feedback, there is nothing to compare, and the entry is journalling rather than calibration.</p>
<p>Most people end up with somewhere between one and four entries a month. If you have twenty, you are logging preferences rather than decisions.</p>
<h2 id="the-review-is-half-the-value">The review is half the value</h2>
<p>An entry nobody rereads is a diary. The comparison is where the learning lives.</p>
<p><strong>Set a date when you write it.</strong> "Check this in three months." Put it on the calendar or in the task list as a real dated item, because you will not spontaneously remember. This is the single most common failure of decision journals: the entries are excellent and nobody ever opens them again.</p>
<p><strong>When the date arrives, read the entry before assessing anything.</strong> Read your prediction first. Then compare. The order matters enormously — read the outcome first and you will find your prediction was basically right, because that is what minds do.</p>
<p><strong>Score the decision, not the outcome.</strong> This is the discipline that makes the whole practice worth doing. A good decision can have a bad outcome; a bad one can get lucky. If you only grade outcomes you will learn to be lucky, which is not a skill.</p>
<p><strong>Look for patterns across entries, not lessons within one.</strong> One decision teaches you almost nothing. Ten teach you a great deal — that you consistently underestimate how long things take, that you decide badly when cornered, that your worst calls are the ones you made quickly to end a conversation. Those patterns are the actual product, and they only appear in aggregate.</p>
<h2 id="where-it-should-live">Where it should live</h2>
<p>In your ordinary notes, not a special app.</p>
<p>A decision journal in a dedicated tool becomes a thing you visit; in the same collection as everything else, it is a thing you pass. That matters, because the moment of writing is always the same: right after the decision, when you are moving on to the next thing and any friction means it does not get written.</p>
<p>Two mechanics make it work in practice. The <strong>review date needs to become a real task</strong> with a date on it, or the loop never closes — which is easiest if <a href="/blog/typing-a-task-the-way-you-say-it/">writing a dated task takes one sentence</a>. And entries want to be <strong>linkable to the thing they are about</strong>, so a decision about a client shows up next to that client's notes without being filed there twice. That is the <a href="/blog/linking-notes-without-a-second-brain/">small linking habit</a> doing useful work rather than decorative work.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>This is a slow practice with no visible payoff for a year. The first ten entries feel pointless, because there is nothing to compare them to yet, and most people stop somewhere around entry four.</p>
<p>It is also close to the only reliable method for improving judgement that does not require anyone else's involvement, and it costs two minutes a fortnight. The trade is heavily in your favour if you can survive the first year of it doing nothing.</p>
<p>Cyanote has a decision-journal template in the <code>/</code> menu — the five prompts above, in order, so an entry is a fill-in rather than a blank page. It sits in the same collection as the rest of your notes, searchable by any word in it, linkable to whatever it concerns, with a task carrying the review date. Everything lives in one SQLite database on your own Mac: for a document that records what you actually thought and how you actually felt, that seems like the right place for it.</p>]]></content:encoded>
      <category>Method</category>
      <category>Notes</category>
      <category>Decisions</category>
    </item>
    <item>
      <title>When you inherit somebody else&#x27;s notes</title>
      <link>https://cyanote.app/blog/inheriting-someone-elses-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/inheriting-someone-elses-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A colleague left, or a relative died, and now you have their files. The first decision is not how to organise them. It is whether to read them at all.</description>
      <content:encoded><![CDATA[<p>Somebody leaves and you are handed their work. Or a relative dies and there is a laptop, and on it a decade of writing that nobody has ever read.</p>
<p>Both situations produce the same paralysis, and it is not a technical one. The technical part — opening files, searching them — is easy. The difficulty is that you are holding a document that was written by someone who did not expect you to read it, and there is no obvious rule for what to do with that.</p>
<h2 id="first-the-question-about-reading">First, the question about reading</h2>
<p>Before any organising, one decision: <strong>is this material you should be reading at all?</strong></p>
<p><strong>Work notes, handed over deliberately.</strong> Yes. That is what a handover is, and the person wrote it expecting exactly this.</p>
<p><strong>Work notes found on a machine, not handed over.</strong> More care. A departed colleague's personal file may contain their own frustrations, their salary conversations, their private assessment of you. Look for what you need to do the job and stop when you have it. There is no obligation to read someone's diary because it happened to be on a work laptop.</p>
<p><strong>A relative's private writing.</strong> The hard one, and it deserves a real answer rather than a technical one.</p>
<h2 id="about-a-relative-s-journals">About a relative's journals</h2>
<p>There is no rule here and anyone offering one is overreaching. What can be offered is the set of considerations people find useful.</p>
<p><strong>Look for a stated wish first.</strong> In a will, a letter, a note at the front. People sometimes leave one and it is frequently missed, because nobody thinks to look for it before opening the files.</p>
<p><strong>Consider that they knew they would die and did not destroy it.</strong> That is not consent. It is also not nothing — for a lot of people the journal was left because it was theirs and they were not going to spend their last months curating, and they would not have wanted it read.</p>
<p><strong>Slower is better.</strong> There is no deadline. Deciding not to read something now does not prevent reading it in five years; reading it now cannot be undone, and things read in grief land differently than the same words read later.</p>
<p><strong>A journal is not a message to you.</strong> This is the observation people find most useful afterwards. Journals are where people put the worst version of a bad week, because they had nowhere else. Reading a difficult passage as a considered summary of what they thought — of you, of themselves, of anything — is almost always a misreading. It was Tuesday, and they were angry, and they wrote it down instead of saying it.</p>
<p>Whatever you decide, back it up first. That decision does not have to be made under time pressure and it certainly should not be made irreversibly.</p>
<h2 id="the-practical-part-making-it-searchable">The practical part: making it searchable</h2>
<p>Once you have decided what to engage with, the technical problem is straightforward.</p>
<p><strong>Copy everything before touching anything.</strong> One copy on a separate disk, untouched. Everything else happens on a working copy. This is the whole insurance policy and it takes ten minutes.</p>
<p><strong>Establish what format it is in.</strong> Plain files are trivial. An app's database is workable — <a href="/blog/where-your-notes-actually-live/">SQLite is an open format</a> and readable by free tools if the original app is gone. A proprietary blob may need the original software, which is a reason to try installing it before anything expires.</p>
<p><strong>Get it into text if you can.</strong> Whatever the source, an export to Markdown or plain text into a folder means Spotlight indexes it and <code>grep</code> finds anything Spotlight misses. That is a working search over somebody's entire collection for about an hour of effort.</p>
<p><strong>Do not reorganise.</strong> Strong recommendation. Their structure encodes their thinking, and imposing yours destroys information you do not yet know you need — most obviously the order in which they wrote things, which is often the most informative property of the whole collection. Search, do not sort.</p>
<h2 id="what-to-look-for-in-work-notes">What to look for in work notes</h2>
<p>If this is a professional handover, the useful material is narrower than the volume suggests.</p>
<p><strong>The undocumented facts.</strong> The reason something is done a strange way. The client who needs a phone call. The system that fails in a particular manner. These are what a <a href="/blog/handing-over-your-work/">handover document</a> is supposed to capture and frequently does not.</p>
<p><strong>Who they talked to.</strong> Their notes name people, and those people know things. Often the most valuable output of reading somebody's notes is a list of six names to go and ask.</p>
<p><strong>What was in flight, and its real state.</strong> Distinct from its reported state, which is what the shared tracker has.</p>
<p><strong>Their judgement.</strong> What they thought was actually wrong. Worth reading and worth weighing — they had context you do not, and they also had frustrations that may have coloured it.</p>
<p>You can usually extract all of this in an afternoon with search, without reading the collection front to back.</p>
<h2 id="then-write-down-what-you-learned">Then write down what you learned</h2>
<p>The step everybody skips, and the reason the same loss happens again in two years.</p>
<p>Reading somebody's notes produces understanding that exists nowhere in writing. Put it somewhere: a short document of what you found, where the material is, and what the six important facts turned out to be.</p>
<p>Because the material itself is not the deliverable. Nobody will read a colleague's decade of notes twice, and if you do not extract the useful part now, the collection reverts to an archive nobody opens — and the fact that you once understood it is lost the same way theirs was.</p>
<h2 id="for-your-own-collection">For your own collection</h2>
<p>The obvious corollary, and it is a two-minute job.</p>
<p>Whoever inherits your notes will face the same decisions with the same lack of guidance. You can remove that entirely by leaving one line somewhere findable: what should be kept, what should be read, what should not, and what should be destroyed. It costs nothing to write and it converts an impossible decision into an instruction.</p>
<p>That plus where the material is and how to get into it is the whole of a digital estate for notes, and it is <a href="/blog/what-happens-to-your-notes-when-you-die/">worth doing while it is easy</a>.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>The technical half of this is an afternoon. The other half is not a technical problem and there is no correct answer — only the observation that reading cannot be undone, backing up can always be done first, and nothing here has a deadline.</p>
<p>Cyanote is on the easy side of the technical question by construction: everything is in one SQLite database on the machine, in an open, documented format that outlives any particular app, and it exports to one readable JSON file. There is no account to recover and nobody here to ask, which is the guarantee working as intended — and the reason to leave a line about what you want done, while you can.</p>]]></content:encoded>
      <category>Method</category>
      <category>Privacy</category>
      <category>Local-first</category>
    </item>
    <item>
      <title>Handing over your work before you leave</title>
      <link>https://cyanote.app/blog/handing-over-your-work/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/handing-over-your-work/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The handover document nobody reads is the one listing your responsibilities. The one people need answers questions, and it takes an afternoon to write.</description>
      <content:encoded><![CDATA[<p>You have four weeks left and someone has asked for a handover document. So you write a list of your responsibilities, a list of the systems you look after, and a list of the meetings you attend.</p>
<p>Nobody will read it. Not through rudeness — because a list of responsibilities does not answer any question a person actually has, and the questions only arrive later, when you are gone and something has broken.</p>
<h2 id="write-it-as-answers-not-as-an-inventory">Write it as answers, not as an inventory</h2>
<p>The reframe that makes handover documents useful: <strong>write down the answers to the questions people will ask you after you have left.</strong></p>
<p>That is a genuinely different document. It is not "I am responsible for the billing pipeline". It is "when billing fails overnight, it is almost always the currency conversion job, the logs are here, and Priya knows the manual fix."</p>
<p>You already know what those questions are, because you have been asked them. The list of things people interrupt you about <em>is</em> the handover document, and it is much shorter than an inventory of your role.</p>
<h2 id="the-five-things-worth-writing-down">The five things worth writing down</h2>
<p><strong>The undocumented facts.</strong> Things that are true, that matter, and that exist nowhere but in your head. The service that must be restarted in a particular order. The client who needs a phone call rather than an email. The report that looks broken and is not. These are the highest-value lines in any handover and they are invisible to everyone except you, because to you they are simply how things are.</p>
<p><strong>Who to ask, for what.</strong> Not the org chart — the real map. Who actually knows the payment system. Who to go to when the official route is stuck. Who will say yes to a small exception and who will not. This is the knowledge that takes a new person a year to acquire and ten minutes to write down.</p>
<p><strong>What is in flight, and where it actually is.</strong> For each open thing: what state it is genuinely in, what the next step is, and what nobody else knows about it. Be honest about the ones that are stalled, including the ones stalled because you were avoiding them. That is the kindest thing in the whole document.</p>
<p><strong>What will break, and when.</strong> The certificate expiring in March. The contract renewing in June. The thing that always fails in the last week of the quarter. Known future events with dates on them are the single easiest thing to hand over and the most commonly forgotten, because they are not on anyone's list yet.</p>
<p><strong>What you would fix next.</strong> Your judgement about the shape of the thing, which is worth a lot and which nobody will ask for. Two or three lines about where the real problems are. Whether they act on it is not your concern; leaving it is a courtesy to whoever inherits the same frustrations.</p>
<figure><img src="/images/note.webp" alt="One note per thing, written as answers to the questions people will ask once you have gone" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The list of things people interrupt you about is the handover document. It is much shorter than an inventory of the role.</figcaption></figure>
<h2 id="where-to-write-it">Where to write it</h2>
<p><strong>In the shared system</strong>, not in your personal notes. This is the one document that belongs on the company's infrastructure — a wiki, a repo, wherever the team's knowledge lives. A handover in a personal file is a handover nobody can find.</p>
<p>Which is the other half of the split worth keeping deliberately: <a href="/blog/a-work-log-worth-keeping/">your own work log and your own notes go with you</a>, and the operational knowledge stays. Deciding that consciously in your final weeks avoids both failure modes — taking things you should have left, and leaving things that were yours.</p>
<h2 id="the-two-weeks-before">The two weeks before</h2>
<p><strong>Start now, not in the last week.</strong> The final week is meetings, goodbyes and access being revoked. A handover written then is thin, and it is written in a state of already having left.</p>
<p><strong>Write it as you get asked things.</strong> For your remaining weeks, every time someone asks you a question, write the answer into the document rather than only replying. This produces a document about the things people genuinely ask, which is exactly what you want and impossible to guess in the abstract.</p>
<p><strong>Do the walkthrough, and let them drive.</strong> Sit with whoever is taking over and have <em>them</em> do the task while you watch. This is the step that finds the gaps — everything you forgot to mention surfaces in the first ten minutes, and nothing else surfaces it. A walkthrough where you drive and they watch teaches almost nothing.</p>
<p><strong>Say where the accounts and access are.</strong> Not credentials — where they live, which password manager, who administers them, what will need transferring. Access is the most common thing to break after somebody leaves, and it is the easiest to prevent.</p>
<h2 id="being-honest-about-the-stalled-things">Being honest about the stalled things</h2>
<p>The section people write badly, and it is worth doing well.</p>
<p>There is always something you have been avoiding. A conversation not had, a decision deferred, a bug you keep deprioritising. The instinct is to leave it out of the handover, or to describe it in language that makes it sound like an ordinary open item.</p>
<p>Do not. Write down what is actually true, plainly: this has been open for five months, here is why, here is what I would do. Nobody is going to think less of you on the way out, and the alternative is that someone discovers it in three weeks with no context and forms a much worse impression than the honest version would have created.</p>
<h2 id="what-this-is-also-for">What this is also for</h2>
<p>Two things beyond the obvious.</p>
<p><strong>Writing it is the clearest picture you will ever have of your own job.</strong> People are routinely surprised — by how much they were holding, by how much was undocumented, by how much of the role was not in the job description. That is worth knowing at exactly the moment you are deciding what to look for next.</p>
<p><strong>It is CV material.</strong> Not the document itself, but the process of writing it surfaces everything you did and everything that depended on you. Copy the useful parts into <a href="/blog/a-work-log-worth-keeping/">your own work log</a> before you lose access.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Some handovers do not matter. If the role is genuinely replaceable and well documented, an afternoon is plenty and a thorough document is effort spent on nobody's behalf.</p>
<p>Where it matters is where you were the only person who knew something — which is far more common than organisations like to admit, and which you are the only person in a position to notice. If there are five facts that exist only in your head, writing those five down is the whole job, and everything else in this post is optional.</p>
<p>Cyanote holds the half that is yours: your work log, your record of what you were promised, your judgement about what was actually going on, in one local database on your own Mac that does not need a company account to keep working. The handover itself belongs in whatever the team uses — but writing it is much easier from a set of notes you have been keeping all along than from four weeks of trying to remember.</p>]]></content:encoded>
      <category>Work</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Getting a note to your phone without sync</title>
      <link>https://cyanote.app/blog/getting-a-note-to-your-phone-without-sync/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/getting-a-note-to-your-phone-without-sync/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A local-first app has no phone client, and that is the real cost of it. Here are the four honest workarounds, and the one question that decides if they are enough.</description>
      <content:encoded><![CDATA[<p>This is the objection, and it deserves a straight answer rather than a deflection.</p>
<p>If your notes live in one database on one Mac, they are on one Mac. There is no phone app, no web view, and no clever architecture that makes a file on your desk appear in your pocket. That is not a missing feature; it is the same property that gives you the speed, the privacy and the not-having-an-account, seen from the other side.</p>
<p>So: what do people actually do about it, and is it enough?</p>
<h2 id="first-the-question-that-decides-everything">First, the question that decides everything</h2>
<p>Not "do I want my notes on my phone". Everyone says yes to that.</p>
<p>The question is: <strong>in the last month, how many times did you need something from your notes while away from your Mac, and could not get it?</strong></p>
<p>Count honestly, in actual incidents. For a lot of people the number is one or two, and both were "the address of the place I am going", which is a solved problem. For others it is several times a week, because they genuinely read and write on a phone all day.</p>
<p>If your number is high, stop here. A local-first single-machine app is the wrong tool and no workaround fixes it — you want something with a real phone client and real sync, and paying for one is the correct decision. The rest of this is for people whose number turned out to be low, which is more people than expect it.</p>
<figure><img src="/images/note-to-phone-routes.svg" alt="What is on the Mac, what needs to travel, and the four routes between them" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>Most of what people mean by sync is one item, once, in one direction.</figcaption></figure>
<h2 id="the-four-routes">The four routes</h2>
<p>In ascending order of effort, descending order of how often you need them.</p>
<p><strong>One: send it to yourself.</strong> The thing you need on the phone is usually one address, one code, one paragraph. Message it to yourself, or email it. This looks unserious and it covers the overwhelming majority of real cases, because the real case is one item and not a library. The reason it feels like a hack is that we have been sold sync as the general solution to a problem that is almost always specific.</p>
<p><strong>Two: put the phone-shaped things in a phone-shaped app.</strong> Your phone already has notes and reminders that sync for free and work brilliantly. Use them for what phones are for — capturing something while standing up, a shopping list, an address — and let the Mac hold the writing you do sitting down. This is not defeat. Two apps with clearly different jobs is a workable system; two apps with the same job is the mess people are trying to escape.</p>
<p><strong>Three: export and read.</strong> Any local app worth using exports. A JSON or Markdown export into a folder your phone can reach means the archive is readable when you need it. It is not live and it is not editable. For "I need to look something up while travelling", it is entirely sufficient, and it is the same file you should be producing for <a href="/blog/backing-up-local-notes/">backup reasons</a> anyway.</p>
<p><strong>Four: reach the Mac itself.</strong> Screen Sharing to your own machine over the network, or a remote-desktop app, and the notes are right there. Clunky, occasionally invaluable, and worth knowing exists before the day you need it.</p>
<h2 id="what-you-should-not-do">What you should not do</h2>
<p><strong>Do not put the app's live database in iCloud Drive or Dropbox.</strong> It is the obvious idea and it is the one that ends badly. A sync service copies whole files after they change; a database is written to continuously, and two machines writing to one synced file produces conflicted copies or a silently chosen winner. You can move an app's storage to another disk or folder safely. Moving it into a folder that two machines are actively syncing is how corruption happens, and it happens quietly.</p>
<p><strong>Do not run a self-hosted sync server unless you enjoy that.</strong> It works and some people love it. It also means you now operate a server, with the certificates, updates and 2am failures that implies. If that sentence sounds appealing, go ahead. If it sounds like a chore, it will be one.</p>
<h2 id="the-part-nobody-says-about-phone-notes">The part nobody says about phone notes</h2>
<p>Having your notes on your phone is not the same as using them there.</p>
<p>Watch what actually happens on a phone: capture, and lookup. You write four words while standing on a platform, or you check an address. Reading a long note on a phone is unpleasant; writing one is worse; reorganising anything is a genuinely miserable experience that people do once and never again.</p>
<p>Which means the phone requirement, examined closely, is usually <em>capture</em> plus <em>lookup</em> — two narrow jobs — and not "the full system, everywhere". Capture is solved by any app with a text field, including the one already on the phone. Lookup is solved by an export, or by having sent yourself the one thing you needed.</p>
<p>The full-sync solution solves all three jobs including the one nobody does. That is fine if it is free, and it is a real cost if it means an account, a subscription, and <a href="/blog/why-a-notes-app-should-open-instantly/">a spinner where your notes should be</a>.</p>
<h2 id="the-version-that-works-in-practice">The version that works in practice</h2>
<p>For people who have made this work, the shape is consistent:</p>
<ul><li><strong>The Mac is where the writing lives.</strong> Long notes, the archive, the search, the actual thinking.</li><li><strong>The phone's own notes app is the inbox.</strong> Anything captured away from the desk lands there, and gets moved over — or not — during the <a href="/blog/weekly-review-in-20-minutes/">weekly review</a>.</li><li><strong>Anything genuinely needed on the go gets sent ahead</strong>, deliberately, the way you would check you have the tickets.</li><li><strong>An export sits somewhere reachable</strong>, updated occasionally, for the lookup case.</li></ul>
<p>That is not as good as real sync. It is meaningfully cheaper, in money and in what it asks of your data, and for a lot of people the gap turns out to be smaller than the fear of the gap.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>I would rather say this plainly than sell around it: if you need your notes on your phone, buy something that does that. Apple Notes is free and excellent at it. Obsidian syncs a folder of files, including through iCloud Drive or Dropbox, because the notes are files rather than a live database. Notion is in any browser. All three are better answers to that requirement than any workaround above.</p>
<p>Cyanote is a Mac app with one database on your own disk, no account and no sync — and no phone app. The trade is the whole design: everything opens instantly, nothing needs a connection, and no copy of your writing exists anywhere you have not put it. Everything exports to a readable JSON file whenever you want, which is the route out and the route to any other device. If the four routes above sound like too much friction, that is a real answer, and it is worth knowing before you pay rather than after.</p>]]></content:encoded>
      <category>Local-first</category>
      <category>Workflow</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Checklists for the things you do every week</title>
      <link>https://cyanote.app/blog/checklists-for-things-you-do-every-week/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/checklists-for-things-you-do-every-week/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>A recurring task tells you to do the thing. A routine tells you what the thing consists of. The difference is why some weekly jobs keep half-finishing.</description>
      <content:encoded><![CDATA[<p>Some jobs come back every week and go wrong the same way every time. Not because they are hard — because they have six steps and you remember five.</p>
<p>The shutdown at the end of the day where you always forget one thing. The invoice run where the numbers are right and the sending happens Tuesday. The publish that works except for the one cache nobody clears. Each of these has a shape, you have performed it forty times, and you still occasionally drop a step, because holding six things in your head while doing the first one is not something people are good at.</p>
<h2 id="a-recurring-task-is-not-a-checklist">A recurring task is not a checklist</h2>
<p>This is the mismatch, and most to-do apps only offer the first one.</p>
<p><strong>A recurring task</strong> says: <em>do the thing.</em> "Invoicing, every Friday." It appears, you tick it, it comes back next week. What it never tells you is what the thing consists of, so the contents live in your head and degrade quietly. You did it forty times, so you are confident, and confidence is precisely the state in which a step gets skipped.</p>
<p><strong>A checklist</strong> says: <em>the thing is these six items, in this order.</em> You do not have to remember; you have to read. That difference is the entire value, and it is why aviation, surgery and every industry with expensive mistakes converged on the same boring artefact.</p>
<p>The half-finished weekly job is almost always a recurring task pretending to be a checklist. The fix is not more discipline. It is writing the six items down once.</p>
<figure><img src="/images/routines.webp" alt="A routine as a list of steps, with a clock on the ones where timing is part of the method" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Six items, in order. The value is that you read them rather than recall them.</figcaption></figure>
<h2 id="what-makes-a-checklist-that-survives">What makes a checklist that survives</h2>
<p>Most home-made checklists die within a month. The ones that hold have a few properties in common.</p>
<p><strong>Written during the job, not before it.</strong> A checklist authored in advance describes what you imagine you do. One written while actually doing the thing — jotting each step as you take it — describes what you actually do, including the small awkward step you would never have thought to include and which is exactly the one that gets forgotten.</p>
<p><strong>Every item is a physical action.</strong> "Check the deploy" is not an item; it is a category. "Open the status page and confirm the version number" is an item, because you can be certain whether you have done it. If an item's completion is a matter of opinion, it will be ticked in a mood rather than in fact.</p>
<p><strong>In the order you actually do them.</strong> Not grouped by theme, not sorted by importance. Sequence is what makes a checklist a checklist — you are meant to read the next line, not scan a set.</p>
<p><strong>Short.</strong> Six to ten items. Past that, people stop reading and start pattern-matching, which is the failure the checklist existed to prevent. If it genuinely has thirty steps, it is two or three routines.</p>
<p><strong>Edited on the day it fails.</strong> The first time you follow it and something still goes wrong, add the line. A checklist that is never revised is a document; one revised four or five times is a tool.</p>
<h2 id="where-a-clock-belongs-and-where-it-does-not">Where a clock belongs, and where it does not</h2>
<p>Some checklists need timings and most do not.</p>
<p>A <strong>shutdown routine</strong> has no timings. Six steps, done at the pace they take, and putting a clock on them adds pressure to a thing whose purpose is to end the day calmly.</p>
<p>A <strong>morning routine or a focus block</strong> sometimes does, because the timing is the method: twenty minutes on this, ten on that, and the constraint is what stops the first item eating the hour. This is where a checklist and a timer belong in the same object rather than in two apps — the same argument as <a href="/blog/pomodoro-timer-mac-app/">a Pomodoro timer that lives where the work does</a>.</p>
<p>The rule of thumb: put a clock on a step only when finishing on time is part of doing it correctly. Everywhere else, a timer is decoration that turns a helpful list into a small performance review.</p>
<h2 id="the-five-that-most-people-end-up-with">The five that most people end up with</h2>
<p>Not a prescription — an observation about what recurs.</p>
<p><strong>A shutdown.</strong> The five things that make tomorrow morning start cleanly rather than in a heap: close the loops, write down where you got to, clear whatever inbox you keep.</p>
<p><strong>A start.</strong> The two or three things that put you in front of the work rather than in front of your email. Usually shorter than people expect.</p>
<p><strong>A weekly review.</strong> The one everybody has heard of, which works when it is a checklist and stalls when it is an aspiration. <a href="/blog/weekly-review-in-20-minutes/">Twenty minutes is the realistic version</a>.</p>
<p><strong>A recurring work job.</strong> Invoicing, publishing, reporting, the backup you verify. Whatever your version is of a job with steps that comes back on a schedule.</p>
<p><strong>A leaving-the-house or travel list.</strong> Unglamorous, and the one that has saved most people the most actual money.</p>
<h2 id="where-this-goes-wrong">Where this goes wrong</h2>
<p><strong>Turning a checklist into a habit tracker.</strong> They look similar and measure different things. A habit is one recurring action you are trying to make automatic; a routine is several actions that need to happen together. Ticking a six-item list and calling it a streak conflates "did the thing" with "did all of the thing", and the number stops meaning anything.</p>
<p><strong>Building the system instead of using it.</strong> There is a version of this where you spend a Sunday designing eleven routines with nested sub-steps and colour coding, and follow none of them. The rule that prevents it: write one, use it four times, then write the second.</p>
<p><strong>Keeping them somewhere you do not open.</strong> A checklist in an app you visit weekly is a checklist you will not read at the moment you need it. It has to be where you already are when the job starts — which is usually the same window as your notes and your day, not a separate icon you have to remember exists.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your checklists coordinate other people, have conditional branches, or need an audit trail of who did what, this is a workflow tool problem and a proper one will serve you far better than a list in a notes app. Process management is a real category and it exists for good reasons.</p>
<p>For your own recurring jobs, the whole thing is: six items, in order, somewhere you will see them. That is close to a solved problem and needs almost no software.</p>
<p>Cyanote's routines are checklists with an optional clock on the steps where the clock is part of the method, sitting in the same window as the notes, the tasks and the day. Today shows the routines not yet run alongside what is due and which habits are outstanding, so a routine is something you meet rather than something you have to remember to go and open. It all lives in one database on your own Mac, which means your shutdown list is not an item on somebody's server.</p>]]></content:encoded>
      <category>Routines</category>
      <category>Method</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>When remembering to write it down is the hard part</title>
      <link>https://cyanote.app/blog/capture-when-remembering-is-the-hard-part/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/capture-when-remembering-is-the-hard-part/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Advice about note-taking assumes you will remember to take the note. For some people that assumption is the entire problem, and the fix is structural.</description>
      <content:encoded><![CDATA[<p>Nearly all advice about organisation assumes a working memory that holds an intention until you are somewhere you can act on it. Write it down later. Process your inbox at the end of the day. Remember to check the list.</p>
<p>For a lot of people that assumption does not hold, and the result is a persistent, unfair sense of being bad at systems — when what has actually happened is that every system on offer was designed around a capability that varies enormously between people, and nobody said so.</p>
<p>If your experience is that the intention evaporates between having it and reaching somewhere to record it, none of the standard advice is addressing your problem. This is about the version that does.</p>
<h2 id="the-principle-never-depend-on-a-second-step">The principle: never depend on a second step</h2>
<p>Every gap between the thought and the record is a place it can disappear. Standard advice puts several of them in a row: have the thought, hold it, get to the app, decide where it goes, write it, later process it into the right place.</p>
<p>That is five opportunities to lose it, and the advice implicitly assumes the loss rate at each is near zero.</p>
<p>Design instead so that a thought recorded once is <em>done</em>. No processing step, no filing decision, no "I will sort that later" — because later is exactly the thing that does not reliably arrive.</p>
<h2 id="what-that-means-concretely">What that means concretely</h2>
<p><strong>One destination, no decision.</strong> Everything goes to the same place. A daily note, an inbox note, one list. Not because it is tidy, but because a choice about where is a step, and steps are where things are lost. Search will find it later; that is what search is for, and it is <a href="/blog/how-to-organise-notes/">why filing matters less than people think</a>.</p>
<p><strong>Capture reachable from anywhere.</strong> A global shortcut, not an app you switch to. If recording something requires finding a window, the window is a step.</p>
<p><strong>Instant.</strong> <a href="/blog/why-a-notes-app-should-open-instantly/">Under a second</a>. A loading spinner is long enough for the thought to go, and this is not hyperbole — it is the actual failure.</p>
<p><strong>Nothing to process.</strong> Systems requiring an inbox to be emptied on a schedule fail here specifically, because the processing session is a recurring appointment with your future attention and it is the first thing to be missed. A system that works without processing is worth more than a better-organised one that requires it.</p>
<p><strong>No decisions at capture time.</strong> No category, no priority, no project, no tags. Type the sentence, press return. Anything the app can extract from the sentence itself — <a href="/blog/typing-a-task-the-way-you-say-it/">a date, a time, a priority</a> — is free; anything requiring a separate choice is a step.</p>
<h2 id="pull-not-push-for-retrieval">Pull, not push, for retrieval</h2>
<p>The other half, and it is where most systems fail people quietly.</p>
<p>Notifications are the standard answer to "how will you remember", and they work poorly here: they arrive when you cannot act, get dismissed reflexively, and the dismissal is complete — no trace, no queue, nothing to come back to. A reminder that fires while you are driving has not reminded you of anything.</p>
<p>What works better is one place you go, containing everything currently relevant, so that arriving is enough and no interruption has to survive. Today's list, checked at a moment that already exists in your day — after coffee, when you sit down, before you leave. Attaching it to something that already happens is the whole trick, because <a href="/blog/tracking-habits-without-a-separate-app/">an attached habit survives and a new ritual does not</a>.</p>
<h2 id="externalise-the-sequence-too">Externalise the sequence too</h2>
<p>If holding a multi-step task in your head while performing it is unreliable, the fix is not to try harder. It is to write the steps down and read them.</p>
<p>That is <a href="/blog/checklists-for-things-you-do-every-week/">what a routine is</a> — six items in order, read rather than recalled. It is not a compensation for a deficiency; it is what aviation and surgery do, for the same reason, with people whose memory is fine.</p>
<p>The list of things you do every time you leave the house. The sequence for the recurring job that always loses a step. The morning order that gets scrambled when something interrupts it. Writing them down converts a memory task into a reading task, and reading is much more robust to interruption.</p>
<h2 id="redundancy-is-not-untidy">Redundancy is not untidy</h2>
<p>A rule from standard advice that is worth dropping: everything in exactly one place.</p>
<p>If writing it twice makes it more likely to be found, write it twice. If the important date is in the calendar <em>and</em> the task list <em>and</em> on a note stuck to the monitor, that is three chances, and three chances is the point. The cost of duplication is mild untidiness; the cost of a single point of failure is a missed thing.</p>
<p>Optimise for the thing being found, not for the system being elegant.</p>
<h2 id="what-tends-not-to-work">What tends not to work</h2>
<p>Said plainly, so it can be stopped rather than repeated.</p>
<p><strong>Elaborate systems.</strong> Anything with more than about two rules. Every rule is a thing to remember about the system, on top of the things you were trying to remember with it.</p>
<p><strong>Inbox processing.</strong> Any design where capture is provisional and a later session makes it real.</p>
<p><strong>Reminder escalation.</strong> More alerts, louder, more often. Produces <a href="/blog/reminders-you-do-not-start-ignoring/">dismissal reflex</a> faster than it produces action.</p>
<p><strong>Blaming yourself for the last one failing.</strong> Six abandoned systems is information about the systems. It is very commonly read as information about the person, and that reading is what makes people stop trying.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>I am describing a design pattern, not giving anyone advice about their brain, and there is no software that fixes this. What software can do is remove steps — and since the number of steps is the whole variable, that is not a small contribution.</p>
<p>The two changes that do the most: <strong>one destination with no decision at capture</strong>, and <strong>one place you go, rather than notifications that come to you.</strong> Almost everything else is optional.</p>
<p>Cyanote is shaped that way, though not deliberately for this: <code>⌘N</code> and <code>⇧⌘D</code> reach a note in one keystroke, tasks take their date and priority out of the sentence so there is nothing else to fill in, <code>⌥⇧C</code> brings the window up from any app, and Today is one view holding what is scheduled, what is due, which habits are outstanding and which routines have not been run. There is no inbox to process and no filing required — full-text search across everything is what makes that viable. It opens in under a second from a local database, which is the part that actually decides whether a thought survives the trip.</p>]]></content:encoded>
      <category>Method</category>
      <category>Workflow</category>
      <category>Accessibility</category>
    </item>
    <item>
      <title>Seeing your calendar without signing into it</title>
      <link>https://cyanote.app/blog/calendar-without-signing-in/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/calendar-without-signing-in/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>There is a middle option between typing everything twice and handing an app your Google account. It is called an ICS subscription, and it is read-only.</description>
      <content:encoded><![CDATA[<p>Every calendar app asks the same thing on first run: sign in with Google. And it makes sense from their side — the calendar is on Google's servers, so reading it means asking Google.</p>
<p>What that button actually grants is worth reading before you press it. OAuth scopes for calendar access are not "show me what is on Thursday". They are, typically, read <em>and</em> write access to every calendar on the account, held by a third party, valid until you go and revoke it — and, depending on the app, a copy of your events sitting on that third party's server so their sync can work while your laptop is closed.</p>
<p>For a calendar app you have chosen deliberately, that may be a fine trade. For a notes app that also happens to show your week, it is a lot to hand over so that Thursday has three lines on it.</p>
<p>There is a middle option. It has existed since the late nineties, it is boring, and almost nobody mentions it.</p>
<h2 id="subscribing-instead-of-signing-in">Subscribing instead of signing in</h2>
<p>Every major calendar service can hand out a <strong>secret address</strong>: a long URL that returns your calendar as an ICS file, the plain-text format calendars have used for decades. Any app that can fetch a URL can then show your events.</p>
<p>In Google Calendar it sits in an individual calendar's settings under "Integrate calendar", named the Secret address in iCal format — and Google's own <a href="https://support.google.com/calendar/answer/37648">help page for it</a> files it under getting a view-only copy, with the instruction that only you should know the address and it should not be shared. Apple's iCloud calendars can be made public and produce a comparable link. Outlook has its own version. Most work calendars, university timetables, sports fixtures and bin collections publish one too.</p>
<p>What you get:</p>
<ul><li><strong>Read-only.</strong> The app can display your events. It cannot create, move or delete anything, because the format has no way to write back. For seeing your week next to your notes, read-only is the entire requirement.</li><li><strong>No account, no token, no scope.</strong> Nothing is authorised. There is no session to revoke and no app sitting in your Google security settings.</li><li><strong>Per calendar, not per account.</strong> Subscribe to your personal calendar and leave work alone, or the other way round. Signing in is all-or-nothing at the account level; a link is one calendar.</li><li><strong>Revocable in one click.</strong> Regenerate the address in your calendar's settings and every copy of the old URL stops working immediately.</li></ul>
<figure><img src="/images/calendar.webp" alt="A month view in Cyanote, showing subscribed events alongside things created locally" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Read-only is not a limitation here. Nothing about seeing Thursday requires the ability to rewrite it.</figcaption></figure>
<h2 id="the-honest-caveats">The honest caveats</h2>
<p>This is where most write-ups of this trick stop, so: three things you should know.</p>
<p><strong>The URL is the password.</strong> Anyone who has it can read that calendar, forever, without logging in as you. Do not paste it into a shared document, a support ticket, or a chat with your team. If you think it has leaked, regenerate it — that is what the button is for.</p>
<p><strong>It still makes a network request.</strong> Your app fetches that URL from Google, so Google sees a request from your IP on some schedule. This is not local and it is not private <em>from Google</em>. It is only private from everyone else: no third-party app holds a token, and no third-party server holds a copy of your events.</p>
<p><strong>It refreshes on a delay.</strong> Subscribed calendars are polled, not pushed: your app asks for the file every so often, and the publisher decides how current the file it hands back is. In practice an event you add on your phone can take hours to appear in a subscribed view, and neither end promises otherwise. For a week you are looking at rather than editing, that is fine. If you need something you just accepted to show up within seconds, subscription is the wrong mechanism and you want a real sync.</p>
<h2 id="the-other-option-import-the-file-once">The other option: import the file once</h2>
<p>If even one request is more than you want, download the <code>.ics</code> file and import it. Your calendar app can export one; so can most event pages and every conference that sends you a booking.</p>
<p>This makes literally zero network requests. It also does not update, ever — it is a snapshot. Which sounds useless until you notice how many calendars never change: a term timetable, a fixture list, the twelve dates of a course. Importing those once is not a downgrade. It is the correct shape for the data.</p>
<p>The two mechanisms cover different things, and most people want both: subscribe to the calendar that moves, import the ones that do not.</p>
<h2 id="what-this-cannot-do">What this cannot do</h2>
<p>Worth being plain, because a subscription genuinely gives up capability.</p>
<p>You cannot create an event and have it appear on your phone. You cannot accept an invitation. You cannot see whether a room is free, or free/busy for a colleague. You cannot move a meeting and have anyone else find out. All of that needs write access, and write access means signing in.</p>
<p>So the real question is what you want the calendar <em>in this app</em> for. If it is scheduling with other people, use the app your organisation already runs on and sign into it properly. If it is knowing what today looks like while you are writing your notes and picking what to work on — the <a href="/blog/mac-app-notes-tasks-calendar/">what does my day look like</a> question — then read-only covers it entirely, and paying for it with a permanent OAuth grant is a bad exchange.</p>
<h2 id="events-you-create-locally-are-a-separate-thing">Events you create locally are a separate thing</h2>
<p>There is no rule that every event has to come from a server.</p>
<p>Personal things — a deadline you set yourself, a repeating block for focused work, the day the car needs its service — do not involve anyone else and gain nothing from living in the cloud. Created locally, they stay on your machine, work with the wifi off, and are not one account recovery away from being someone else's problem.</p>
<p>Most people end up with a mix: work events arriving read-only by subscription, personal ones created in place. That is not a compromise between two systems. It is the shape the information already had.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your day is meetings, a real calendar client is the right tool and Fantastical or Apple's Calendar will serve you far better than anything bundled into another app. Nothing here competes with them, and the moment you need to reply to an invitation you will want one open anyway.</p>
<p>For everyone else, the useful realisation is that the sign-in button is not the only door. A read-only address does about ninety percent of what looking at a calendar involves, at none of the cost.</p>
<p>Cyanote takes both routes and neither requires an account: paste a calendar's ICS address to subscribe, or import an <code>.ics</code> file and make no requests at all. Events you create yourself carry a time, a place and notes, repeat daily, weekly or monthly, and can remind you 5, 10 or 30 minutes, an hour or a day ahead — with the reminder following a repeating event between occurrences. All of it sits in one local database with the notes, tasks and habits, and the only calendar request that ever leaves the machine is the one for a feed you asked for.</p>]]></content:encoded>
      <category>Calendar</category>
      <category>Privacy</category>
      <category>How-to</category>
    </item>
    <item>
      <title>How to tell whether an app phones home</title>
      <link>https://cyanote.app/blog/apps-that-do-not-phone-home/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/apps-that-do-not-phone-home/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>No telemetry&quot; is a claim, and claims are checkable. Here is how to see exactly what an app on your Mac sends, without trusting anybody&#x27;s privacy page.</description>
      <content:encoded><![CDATA[<p>Every privacy page says the right things. That is what privacy pages are for.</p>
<p>The useful move is not reading more of them. It is checking — which is easier than most people assume, takes about ten minutes, and turns a claim into an observation. And it works on any app, including the ones whose pages you have never read.</p>
<h2 id="what-telemetry-actually-covers">What "telemetry" actually covers</h2>
<p>The word is used loosely enough to hide things, so it is worth separating.</p>
<p><strong>Analytics.</strong> An SDK reporting which screens you opened, which features you used, how long you stayed. Usually a third party. Usually described as "anonymous", which is doing more work in that sentence than it can carry — a device identifier plus a usage pattern is not anonymous in any useful sense.</p>
<p><strong>Crash reporting.</strong> Sends a stack trace when the app falls over, often with a device identifier and sometimes with surrounding memory. Genuinely useful to developers and genuinely a data transfer.</p>
<p><strong>Update checks.</strong> The app asks whether a newer version exists. This one is close to unavoidable for software distributed outside an app store, and it is the most defensible of the four — though it is still a request, still carries your IP, and can carry an identifier if the developer chose to include one.</p>
<p><strong>Licence and account calls.</strong> Checking that your key is valid, or your session, or your subscription. Frequency is the tell: once at install is one thing, at every launch is another.</p>
<p>An app with none of the first two and one of the last two is a normal, honest arrangement. An app with all four, none of which is disclosed, is a different proposition.</p>
<figure><img src="/images/three-requests.svg" alt="The requests an app makes, and what each one can carry" width="1200" height="460" loading="lazy" decoding="async" /><figcaption>The question is never whether an app makes requests. It is how many, how often, and what is in them.</figcaption></figure>
<h2 id="how-to-check-in-ten-minutes">How to check, in ten minutes</h2>
<p>Three routes, in ascending order of effort and certainty.</p>
<p><strong>Read the privacy page for specifics, not adjectives.</strong> A page that says "we respect your privacy" tells you nothing. A page that names the exact endpoints, what each one carries, and how often it fires is making claims you can then verify — and the willingness to be that specific is itself a signal.</p>
<p><strong>Watch the connections.</strong> macOS ships with the tools. Open Activity Monitor, go to the Network tab, and watch the app's data figures while you use it. An app that transfers steadily while you type is doing something worth asking about. For detail, <code>nettop -p &lt;pid&gt;</code> in Terminal shows live connections per process, and <code>lsof -i -a -p &lt;pid&gt;</code> lists what it currently has open.</p>
<p><strong>Use an outbound firewall.</strong> This is the real answer if you want certainty. Little Snitch and LuLu both intercept outbound connections and ask you to approve each one, by app and destination. You will learn a great deal in the first week — much of it about apps you had never suspected — and you can simply deny the ones you do not want. LuLu is free and open source; Little Snitch is paid and more capable.</p>
<p><strong>The blunt test:</strong> turn the wifi off and use the app for ten minutes. Anything that stops working was talking to something. This does not find the quiet stuff, but it is free and takes no setup, and it is the same <a href="/blog/what-still-works-with-the-wifi-off/">wifi-off test</a> that tells you about offline capability.</p>
<h2 id="what-you-will-find-and-what-to-make-of-it">What you will find, and what to make of it</h2>
<p>Expect more connections than you assumed, and do not treat every one as a betrayal.</p>
<p>A request to <code>api.&lt;the developer's domain&gt;</code> once when you first enter a licence key is a licence check. A request to an update endpoint a few seconds after launch is an update check. A font loading from a CDN is a design decision. None of those is telemetry, and finding them is not a scandal.</p>
<p>What is worth reacting to: a third-party analytics domain, a crash reporter you were never asked about, a request that fires every time you open a document rather than every time you open the app, and — most of all — anything that scales with <em>what you write</em> rather than with what the app does. Request volume proportional to your content is the signature that matters, because it means content is going somewhere.</p>
<h2 id="the-part-that-is-not-about-trust">The part that is not about trust</h2>
<p>There is a version of this argument that ends in paranoia, and it is not the useful version. Most developers who collect analytics are trying to find out which features are unused, which is a reasonable thing to want.</p>
<p>The point is not that data collection is malicious. It is that it is a <strong>surface</strong>: a copy of something about you, on infrastructure you do not control, subject to a breach at that company, an acquisition, a policy change, or a subpoena. Every one of those has happened to companies with sincere privacy pages. The only reliably safe data is data that was never transmitted, and that is an architectural property rather than a promise about intent.</p>
<p>Which is why the strongest version of this is not "we handle your data carefully". It is "there is no data here to handle" — the <a href="/blog/what-local-first-means-for-your-notes/">local-first arrangement</a>, where the absence of a server is the guarantee.</p>
<h2 id="what-good-disclosure-looks-like">What good disclosure looks like</h2>
<p>If you want a standard to hold apps to, this is a fair one:</p>
<ul><li><strong>An exhaustive list of endpoints</strong>, not a summary. "These are the only requests" is a claim that can be falsified by watching the network, which is what makes it worth something.</li><li><strong>What each request carries</strong>, including what is inferable from it. An anonymous request still carries an IP address and a timestamp, and an honest page says so.</li><li><strong>How often it fires</strong>, in real units. "Periodically" is not a unit.</li><li><strong>What is not sent</strong>, stated plainly, so the absence is on the record.</li><li><strong>No third parties</strong>, or a clear statement of which ones and why.</li></ul>
<p>An app that publishes all five and is telling the truth is verifiable in ten minutes. An app that publishes none of them may be perfectly fine — you just have no way to know, and no way to find out except by watching.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>You do not need to audit every app on your Mac. That is a hobby, not a security posture.</p>
<p>Audit the ones holding things you would not want copied: your notes, your journal, your client files, your passwords. For everything else, a privacy page is probably enough, and the checking is only worth ten minutes for the apps where the content matters.</p>
<p>Cyanote makes exactly three requests, and this is the whole list. A one-time licence check to <code>api.lemonsqueezy.com</code> when you first install, carrying your key and a label with the version and OS. An anonymous update check to <code>updates.cyanote.app</code> a few seconds after launch and every six hours the app stays open — no key, no account, no identifier. And a calendar feed, only if you subscribe to one, going to whoever runs that calendar rather than to us. There is no analytics SDK, no crash reporter, no usage pings and no install identifier, and none of the three requests carries a word you have written. All of that is checkable with the tools above, which is the reason to state it that specifically.</p>]]></content:encoded>
      <category>Privacy</category>
      <category>macOS</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Where ideas go before you are ready to write them</title>
      <link>https://cyanote.app/blog/an-idea-bank-for-writing/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/an-idea-bank-for-writing/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The good idea arrives while you are doing something else, and it will not wait. What to capture, in what form, so it is still usable in six months.</description>
      <content:encoded><![CDATA[<p>Ideas do not arrive when you sit down to write. They arrive in the shower, on a walk, halfway through a conversation about something else — and then, later, when you are at the desk with an hour and a blank page, nothing.</p>
<p>That is not a creativity problem. It is a scheduling mismatch: the arrival and the use happen at different times, and if you do not bridge the gap, every session starts from zero while your best material evaporates in the queue at the supermarket.</p>
<h2 id="what-actually-needs-catching">What actually needs catching</h2>
<p>Not "ideas", which is too vague to act on. Four specific things, and they behave differently.</p>
<p><strong>The angle.</strong> Not a topic — a <em>take</em>. "Habit trackers are the worst-suited category to being their own app" is an angle. "Habit trackers" is a topic, and topics are worthless because you already have infinite topics.</p>
<p><strong>The first line.</strong> Sometimes an opening arrives fully formed. Write it exactly as it came, because you will not reproduce the rhythm later, and a good first line is often the whole piece in compressed form.</p>
<p><strong>The observation.</strong> The specific thing you noticed. A detail, an overheard sentence, an odd fact, a moment. These are the raw material that makes writing concrete rather than general, and they are the fastest to fade because they were never verbal to begin with.</p>
<p><strong>The connection.</strong> "This is the same argument as that." Connections between things you already know are where most original writing comes from, and they arrive unannounced and leave immediately.</p>
<p>Notice what is not on the list: research, links, quotes from other people. Those are collectable at any time, which is why people collect them — it feels like preparation and it is the part that is never the bottleneck.</p>
<h2 id="capture-in-the-form-it-arrived">Capture in the form it arrived</h2>
<p>The most common mistake is tidying at capture time.</p>
<p>Someone has a rough, alive, slightly incoherent thought and writes down a neat summary of it. The summary is accurate and dead. Six months later it reads as a topic, and the thing that made it interesting — the specific irritation, the odd angle, the exact phrasing — is gone.</p>
<p>Write it messy. Write the sentence as it occurred to you, including the swearing, the incomplete clause, the "something about how...". The mess is the information. It is what will let you recognise, later, why you cared.</p>
<p>The corollary: capture has to be fast enough to allow mess. Anything that requires choosing a category, a tag or a location will produce tidied output, because you will compose while you file. <a href="/blog/why-a-notes-app-should-open-instantly/">The four-second window</a> applies here more than anywhere.</p>
<figure><img src="/images/note.webp" alt="One note per idea, or one long note per week — the shape matters less than that it takes no decision to add to" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Write it as it arrived, including the mess. The mess is what will let you recognise it later.</figcaption></figure>
<h2 id="one-bank-not-a-filing-system">One bank, not a filing system</h2>
<p>The temptation is to organise ideas by theme, project or type. Resist it, for a specific reason.</p>
<p>Ideas are not useful in the category you assigned them. They are useful when they collide with something else, which is a thing that only happens if they are in one place where you read past the ones you were looking for. A well-organised idea file returns exactly what you searched for and nothing else, which is the opposite of what you want from it.</p>
<p>So: one place. Either one note per idea in a flat collection, or one long note per month that you append to. Both work. The one that does not work is eleven notes by theme, because assigning a theme is a decision at capture time.</p>
<p>Add a date and, if you can, one word about where you were or what prompted it. That context is often what makes the idea legible again later.</p>
<h2 id="reading-it-back-is-the-practice">Reading it back is the practice</h2>
<p>Capturing is easy. Rereading is the part that makes the bank worth having, and almost nobody does it.</p>
<p><strong>Once a month, read the whole thing.</strong> Not to find something — to reload it. Ideas that have been read recently are the ones that surface while you are writing about something else. An unread bank is a graveyard, however good the contents.</p>
<p><strong>Expect most of it to be bad.</strong> Genuinely. Two thirds of anything captured in the moment turns out to be nothing, and that ratio is fine and normal. The bank works on volume; the price of catching the good one is holding the mediocre ones.</p>
<p><strong>Notice repeats.</strong> The thing you have written down four times in different words is trying to tell you something. Repetition across months is the single strongest signal a bank produces, and it is invisible unless you reread.</p>
<p><strong>Delete freely.</strong> The same <a href="/blog/a-someday-list-that-is-not-a-graveyard/">eviction discipline</a> that keeps a someday list readable. If it has been there two years and produces nothing on reading, it goes.</p>
<h2 id="the-gap-between-an-idea-and-a-draft">The gap between an idea and a draft</h2>
<p>The step nobody talks about, and it is where most banks stall.</p>
<p>An idea is one line. A draft needs a shape. In between there is a small, specific piece of work: taking the line and writing three or four sentences about why it matters and what the argument actually is.</p>
<p>Do that when you first reread it, not when you sit down to write. It takes five minutes, it is much easier than starting a draft, and it converts an idea into something you can pick up on a low-energy day. A bank of one-liners requires inspiration to use. A bank of four-sentence sketches does not, and the difference in how often you actually write is substantial.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>A large idea bank is not evidence of anything. Plenty of people have four hundred captured ideas and no finished work, and the capturing became the hobby — which is the same failure as <a href="/blog/the-app-you-keep-replacing/">building the system instead of using it</a>, applied to writing.</p>
<p>The bank is worth exactly as much as the rereading. If you are not going to reread it monthly, capture less and write more.</p>
<p>Cyanote suits the messy-and-flat approach: <code>⌘N</code> for a new note, <code>⇧⌘D</code> for today's daily note if you would rather append than create, and no requirement to file anything anywhere. <code>⇧⌘F</code> searches the body of every note you have ever written, <code>[[</code> links an idea to the piece it eventually became, and notes nest into sub-pages when a sketch grows into something. It is one local database on your own Mac — which for half-formed thoughts you would not want anyone to read is a reasonable place for them to sit.</p>]]></content:encoded>
      <category>Writing</category>
      <category>Notes</category>
      <category>Method</category>
    </item>
    <item>
      <title>AI features in a notes app, and what they cost</title>
      <link>https://cyanote.app/blog/ai-features-and-private-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/ai-features-and-private-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Ask-your-notes-anything means sending your notes somewhere. What each kind of AI feature actually transmits, and which ones can run on your machine.</description>
      <content:encoded><![CDATA[<p>Every notes app has AI features now, and most of them are genuinely useful. Summarise this. Find the note about the thing. Turn these bullets into a paragraph. Ask a question and get an answer drawn from what you have written.</p>
<p>There is one property they share that is worth stating plainly before you decide how you feel about it: <strong>almost all of them work by sending your notes to somebody else's computer.</strong></p>
<p>That is not a scandal and it is not hidden. It is how the technology works at the quality people expect. But it inverts the arrangement for anyone who chose a notes app for privacy reasons, and it is worth understanding at the level of what actually leaves.</p>
<h2 id="what-each-feature-transmits">What each feature transmits</h2>
<p>The features are sold as one category and they have very different footprints.</p>
<p><strong>Summarise this note.</strong> Sends that note. Bounded, and the easiest to reason about — you know exactly what went.</p>
<p><strong>Rewrite or continue this paragraph.</strong> Sends the surrounding text. Also bounded, usually small.</p>
<p><strong>Semantic search across everything.</strong> Sends <em>all of it</em>, at least once. To search by meaning rather than by word, every note has to be turned into embeddings, and unless that happens on your machine, every note is transmitted. This is the feature people most underestimate, because it feels like search — a local-seeming operation — and it is the one with the largest footprint.</p>
<p><strong>"Ask your notes anything."</strong> Sends whichever notes the system judges relevant to your question, on every question. Over months that converges on most of your collection, in fragments, with no record of which fragments went where.</p>
<p><strong>Automatic tagging, linking or organising.</strong> Reads everything, on a schedule, whether or not you are using the app.</p>
<p>If you are weighing this, that ordering is the useful one. The first two are a transaction you initiate. The last three are standing arrangements.</p>
<figure><img src="/images/ai-what-leaves.svg" alt="The two shapes of AI feature: one you initiate, and one that runs on a schedule" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>The first column is a decision. The second is a policy, and the difference is what you should be weighing.</figcaption></figure>
<h2 id="the-questions-to-ask">The questions to ask</h2>
<p>Vendors vary enormously and several are genuinely careful. These are the questions that distinguish them.</p>
<p><strong>Is my content used for training?</strong> Most business-focused vendors now say no by default. Check whether that is the default or an opt-out, and whether it differs by plan — free tiers sometimes have different terms.</p>
<p><strong>How long is it retained?</strong> Many providers keep API inputs for a period for abuse monitoring, commonly around 30 days. That is reasonable operationally and it means your notes exist on their infrastructure after the request.</p>
<p><strong>Who is the third party?</strong> Most apps do not run their own models. Your notes are going to the app vendor <em>and</em> to whichever model provider they use, which is two organisations and two sets of terms.</p>
<p><strong>Is it opt-in per action, or always on?</strong> A button you press is a decision. Background indexing is a policy.</p>
<p><strong>Can it be turned off completely?</strong> Not "disabled in the UI" — actually not running. Worth checking, because some indexing runs regardless of whether you use the features.</p>
<h2 id="what-can-genuinely-run-locally">What can genuinely run locally</h2>
<p>This is improving and it is worth knowing what is realistic in 2026.</p>
<p><strong>Local embeddings for semantic search: yes, realistically.</strong> Embedding models are small enough to run on any modern Mac, and the quality is good. This is the local AI feature that most makes sense, because it is the one with the worst privacy profile when remote.</p>
<p><strong>Local summarisation and rewriting: yes, with caveats.</strong> Small models run on Apple Silicon and produce useful output. They are noticeably worse than the frontier hosted models, and they cost several gigabytes of download plus real memory while running. Whether that trade is good depends on how much better you need the output to be.</p>
<p><strong>Local "ask your notes anything": partially.</strong> The retrieval part runs locally. The answering part is where local models are weakest, and it is the part people judge the feature on.</p>
<p>The honest summary: local AI is genuinely viable in 2026 and it is not as good. Anyone claiming the gap has closed is selling something, and anyone claiming local models are useless has not tried recently.</p>
<h2 id="the-thing-nobody-mentions-about-app-size">The thing nobody mentions about app size</h2>
<p>A local model is a few gigabytes. That is a large change to what installing a notes app means — an app that was 15 MB becomes a multi-gigabyte download, holds significant memory while running, and has real implications on <a href="/blog/software-for-an-older-mac/">an older machine</a>.</p>
<p>Which is why most apps that offer local AI make it an optional download, and why apps that value being small often decline the feature entirely. It is a real architectural fork, not a checkbox.</p>
<h2 id="where-this-leaves-a-local-first-app">Where this leaves a local-first app</h2>
<p>Being straight about the position, since this is the part where a page like this usually gets evasive.</p>
<p>An app with no server has three options. Call somebody else's API, which contradicts the reason people chose it. Ship a local model, which multiplies the download size and gives worse results. Or not have AI features, and be worse at some genuinely useful things than the competition.</p>
<p>There is no fourth option, and anyone telling you their local-first app has frontier-quality AI with nothing leaving the machine is describing something that does not exist.</p>
<p>What a local app does have, and it is worth weighing: <strong>very good conventional search</strong>. Ranked full-text search across everything answers a large share of what people use AI search for, instantly, with no model, no transmission and no wait. It fails on the questions where you cannot remember any word from the note — which is exactly where semantic search shines, and that is the honest boundary between them.</p>
<h2 id="how-to-decide">How to decide</h2>
<p><strong>If the material is ordinary</strong> — work notes, projects, drafts, things you would not mind a colleague reading — hosted AI features are a reasonable trade and the productivity is real. Check the training and retention terms, and get on with it.</p>
<p><strong>If some of it is sensitive</strong> — client work under NDA, health, legal, a journal, anything covered by a policy — the useful move is not to refuse AI entirely. It is to keep the sensitive material somewhere without it, and use AI-equipped tools for the rest. Two places with a clear line beats one place with a policy you hope holds.</p>
<p><strong>If you cannot tell what is going where</strong>, that is itself the answer. A feature you cannot characterise is one you cannot consent to, and vagueness at this specific point is worth reacting to — the same standard as <a href="/blog/apps-that-do-not-phone-home/">any other claim about what an app transmits</a>.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>AI features in notes apps are useful and I am not going to pretend otherwise. Summarising a long meeting note, finding something by meaning, turning fragments into prose — these save real time.</p>
<p>The cost is a copy of your writing on infrastructure you do not control, and whether that matters depends entirely on what you write. For most notes it does not. For some notes it very much does, and the mistake is having one policy for both.</p>
<p>Cyanote has no AI features at all. Nothing is summarised, nothing is embedded, nothing is sent — the app makes <a href="/blog/apps-that-do-not-phone-home/">three network requests in total</a> and none carries a word you have written. What it has instead is ranked full-text search across every note, code block and table, running against a local database, returning results while you are still typing. That is a real trade rather than a superior position: if what you want is to ask your notes a question in plain language, this app does not do that, and one that does will serve you better.</p>]]></content:encoded>
      <category>Privacy</category>
      <category>Local-first</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>The work log that saves you at review time</title>
      <link>https://cyanote.app/blog/a-work-log-worth-keeping/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/a-work-log-worth-keeping/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Every year you sit down to write your own review and cannot remember January. Two lines a week fixes it, and the fix takes about ninety seconds.</description>
      <content:encoded><![CDATA[<p>The review form arrives. It asks what you achieved this year, with examples.</p>
<p>You can remember the last six weeks in detail and the eight months before that as a haze with two or three landmarks in it. So you write about the last six weeks, plus whatever you can reconstruct, and the thing you are most proud of — the messy problem in March that you quietly fixed and nobody noticed — does not make the list, because you cannot recall it clearly enough to describe.</p>
<p>This happens to everyone every year, and the fix is about ninety seconds a week.</p>
<h2 id="why-memory-fails-at-exactly-this">Why memory fails at exactly this</h2>
<p>Not because your memory is bad. Because of what work looks like from inside.</p>
<p><strong>The hard parts are invisible in hindsight.</strong> The thing that took three weeks of careful, frustrating effort gets compressed into "we shipped the migration" — a phrase with no evidence of difficulty in it. The version in your head is the outcome. The version worth writing about was the process.</p>
<p><strong>Prevented problems leave no trace.</strong> The outage that did not happen, the bad decision you talked someone out of, the design flaw caught in review. These are frequently the highest-value things anyone does and they are literally unobservable — there is no artefact, no ticket, no launch. If you did not write it down, it did not happen.</p>
<p><strong>Recency crowds everything else out.</strong> Whatever you did in the last month feels representative of the year, and it never is.</p>
<p><strong>Other people's memory is worse than yours.</strong> Your manager has their own year to remember, plus five other people's. Assuming your contributions are visible to them by default is the most common and most expensive mistake in this whole area.</p>
<h2 id="the-two-lines">The two lines</h2>
<p>Friday, or whenever the week ends for you. Two lines:</p>
<p><strong>What I did.</strong> Not tasks — outcomes and the thing that made them hard. "Fixed the export timeout — the cause was the N+1 in the serialiser, not the DB, which took two days to find."</p>
<p><strong>What that changed.</strong> For whom, and by how much if you can say. "Support had four tickets a week about this; it is now zero."</p>
<p>Ninety seconds. That is the entire practice.</p>
<p>The reason two lines beat a proper journal is that a proper journal does not get written. The bar has to be low enough to clear on the Friday when you are tired and want to leave, because those are the weeks it matters most — the hard weeks are where the good material is.</p>
<figure><img src="/images/note.webp" alt="A work log: dated entries, newest first, in the same collection as everything else you write" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Two lines a week is fifty entries a year. Nobody has ever wished theirs was shorter.</figcaption></figure>
<h2 id="what-to-write-that-people-leave-out">What to write that people leave out</h2>
<p><strong>Numbers, whenever one exists.</strong> Not because managers are impressed by metrics, but because a number is unforgettable and a claim is not. "Reduced the build from 14 minutes to 3" survives a year of hindsight. "Improved build times" does not survive the week.</p>
<p><strong>The thing that made it hard.</strong> This is the difference between a work log and a task list. Anyone can list what shipped. Only you know that it needed three approaches, or a subtle bug, or a conversation with a team that did not want to have it.</p>
<p><strong>Praise, verbatim, with the date.</strong> When someone says something appreciative in a message or a meeting, paste it in with the date and who said it. This feels awkward and it is the single highest-value thing in the whole log at review time, because it is evidence rather than self-assessment.</p>
<p><strong>Things you were asked to do that were not your job.</strong> The scope you absorbed. This is how work quietly expands without recognition, and the log is the only record that it happened.</p>
<p><strong>What you learned.</strong> Half for the review, half for you. A year of these is a surprisingly good picture of your own trajectory, and it is what you draw on when someone asks where you want to go next.</p>
<p><strong>What went badly, and what you did about it.</strong> Not self-flagellation — the recovery. Reviews go better when you bring a failure with a lesson attached than when you appear to have had a perfect year, which nobody believes.</p>
<h2 id="reading-it-back">Reading it back</h2>
<p>Three moments where the log earns its keep.</p>
<p><strong>Before a one-to-one.</strong> Skim the last fortnight. Two minutes, and it turns "how's it going" into a specific conversation about specific things, which is what a 1:1 is supposed to be.</p>
<p><strong>Before a review.</strong> This is the payoff. Instead of staring at a form trying to remember March, you read fifty entries and select. The work is choosing what to include, which is a much better problem than the one you had before.</p>
<p><strong>Before an interview.</strong> A year of concrete examples with the difficulty preserved is exactly what behavioural questions ask for, and it is the reason people who keep logs interview better. They are not more accomplished; they can just remember what they did.</p>
<h2 id="where-it-goes">Where it goes</h2>
<p>In your own notes, on your own machine, and this is not an incidental detail.</p>
<p>A work log kept in a company wiki or a work-issued account is a work log you lose access to the day you leave — which is precisely the day you need it most, for a CV, an interview, or a case for what you are worth. The same applies to anything in a Slack DM to yourself: it goes when the account goes.</p>
<p>It should also be somewhere private. An honest work log contains things you would not put in a shared document: what was frustrating, who was difficult, what you were unsure about. If it is somewhere your manager could read it, you will write a sanitised version, and the sanitised version is worth much less.</p>
<p>One note, growing downward, in a searchable collection you own. That is it — the same shape as <a href="/blog/keeping-client-work-straight/">a client note</a> and for the same reason.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>This does not make you better at your job. It makes you able to describe your job, which is a different skill, and one that determines outcomes at exactly the moments that matter — promotions, reviews, interviews, and the conversation about whether you are underpaid.</p>
<p>The unfairness worth naming: people who keep logs do better at reviews than people who do not, at equal quality of work. That is a bad property of review processes rather than a good property of note-taking. Given that it is true, though, ninety seconds a week is a very cheap response.</p>
<p>Cyanote is a reasonable place for it because the log stays yours: one SQLite database on your own Mac, no account, nothing on a company server. <code>⇧⌘D</code> opens today's daily note if you would rather log as you go, full-text search finds "that thing about the migration" a year later, and any note can be locked with a password. There is a weekly review template in the <code>/</code> menu if you want the log to hang off something you already do, which is <a href="/blog/weekly-review-in-20-minutes/">usually how habits survive</a>.</p>]]></content:encoded>
      <category>Work</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>A transcript is not a note</title>
      <link>https://cyanote.app/blog/a-transcript-is-not-a-note/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/a-transcript-is-not-a-note/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The bot joined, recorded everything and produced a summary. You still do not know what you agreed. Transcription solved capture, which was never the problem.</description>
      <content:encoded><![CDATA[<p>Everyone in the meeting relaxed the moment the recorder joined. Nobody wrote anything down, because it was being captured.</p>
<p>Two weeks later you need to know what was agreed about the deadline. There is a 6,000-word transcript and a summary with six bullets, none of which is the thing you need, and searching the transcript returns eleven mentions of "deadline" in fragments of sentences with no way to tell which one was the decision.</p>
<p>The technology worked exactly as advertised. Capture is solved. It turns out capture was not the problem.</p>
<h2 id="what-notes-were-for">What notes were for</h2>
<p>Taking notes was never primarily about recording what was said. It did three things, and only the first is what a recorder replaces.</p>
<p><strong>It kept a record.</strong> Genuinely replaced, and improved on — a transcript is more complete and more accurate than anything a human types.</p>
<p><strong>It forced attention.</strong> You cannot take notes without deciding, continuously, what matters. That decision is the work, and it is why people who take notes remember meetings better even when they never reread them. A recorder removes the decision, which is the point and also the cost.</p>
<p><strong>It produced an artefact you could use.</strong> Six lines you can read in twenty seconds before the next meeting. A transcript is not that. It is a source document, and reading it costs about as long as the meeting did.</p>
<p>The gap is between <em>record</em> and <em>artefact</em>, and no amount of transcription quality closes it. A better transcript is a better source document.</p>
<h2 id="what-the-summaries-do-and-do-not-do">What the summaries do and do not do</h2>
<p>Automatic summaries are genuinely useful, and it is worth being precise about the boundary.</p>
<p><strong>Good at:</strong> who was there, what topics came up, the rough shape of the discussion, and a list of anything explicitly stated as an action.</p>
<p><strong>Unreliable at:</strong> what was actually decided as opposed to discussed, what was agreed implicitly, who is really doing something when nobody said "I will", the difference between a firm commitment and someone thinking aloud, and — most importantly — the thing that mattered to <em>you</em>, which was probably one sentence somebody said in passing.</p>
<p>That last one is the fundamental issue. A summary is a general-purpose compression of the meeting. What you needed was a specific extraction relative to your own concerns, and the model does not know what those are.</p>
<figure><img src="/images/note.webp" alt="Six lines you can read before the next meeting, in the same place as everything else you wrote" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The transcript is the source. This is the artefact. They are different documents and you need both.</figcaption></figure>
<h2 id="the-three-lines-that-make-the-recording-useful">The three lines that make the recording useful</h2>
<p>Keep the recording. It is a better record than you would produce. Then, within ten minutes of the meeting ending, write three lines.</p>
<p><strong>What was decided.</strong> In your words, plainly. "We are moving the launch to the 12th."</p>
<p><strong>What I owe, and to whom, by when.</strong> Yours specifically. It becomes a dated task straight away — <a href="/blog/typing-a-task-the-way-you-say-it/">one sentence with the date in it</a> — because an owed thing that lives only in a summary is not tracked.</p>
<p><strong>What I need to remember that the summary will not contain.</strong> The tone. The fact that someone was clearly unhappy. The thing said just before the call ended. The reason behind a decision, which never survives into a bullet list.</p>
<p>Ninety seconds. That produces the artefact, and now the transcript is a genuinely useful thing to have behind it — you have a short document with the meaning in it, and a long document you can search when you need the exact words.</p>
<h2 id="attention-and-what-it-costs-to-stop-paying-it">Attention, and what it costs to stop paying it</h2>
<p>The uncomfortable part.</p>
<p>Meetings where everyone knows it is being recorded are measurably less attentive meetings. People check messages, half-listen, and rely on the summary. And the summary does a reasonable job of the content, which means nothing appears to be lost — except the thinking that used to happen <em>during</em> the meeting because people were engaged with it.</p>
<p>That is a real cost and it is invisible in the artefacts. The meeting produced a good transcript and a worse outcome.</p>
<p>The version that works is deliberate: the recorder handles the record, and you use the attention it freed up on the discussion rather than on your messages. That is a decision to make on purpose, because the default is not that.</p>
<h2 id="consent-and-where-the-recording-lives">Consent and where the recording lives</h2>
<p>Two things worth thinking about once rather than never.</p>
<p><strong>Recording people has legal and social requirements.</strong> Rules on consent vary by jurisdiction, sometimes significantly, and this is genuinely worth checking for the places you work rather than assuming the tool has handled it. Socially, a bot joining unannounced changes what people say, which is a cost to the meeting whether or not it is lawful.</p>
<p><strong>A transcript is one of the most sensitive documents an organisation produces.</strong> It is a verbatim record of what people said, including the parts they would not have written down — offhand remarks, complaints, half-formed opinions about colleagues. It sits on the transcription vendor's infrastructure, and it is discoverable, breachable, and reviewable by whoever has admin access.</p>
<p>If it would matter for a conversation to be read back verbatim, that is a reason to take notes rather than record. The three-line artefact contains what was decided. The transcript contains what everyone said, which is a different and much larger liability.</p>
<h2 id="where-each-thing-belongs">Where each thing belongs</h2>
<p><strong>Transcripts stay in the meeting tool.</strong> They are bulky, they are the organisation's record, and they belong where they were produced.</p>
<p><strong>Your three lines go in your own notes.</strong> In the same collection as everything else you write, so a decision from March turns up when you search for the project. They leave with you, they contain no verbatim record of anyone else, and they are short enough to actually reread.</p>
<p>This split is the same one that applies to <a href="/blog/a-work-log-worth-keeping/">work notes generally</a>: shared records go in the shared system, your own understanding goes somewhere that is yours.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you run a lot of meetings, use a transcription tool. Do not stop — the record is genuinely better than what you would write, the search is useful, and being able to check what someone actually said has settled more disagreements than any minutes.</p>
<p>Just do not mistake it for notes. It is a recording. The notes are the ninety seconds afterwards where you decide what it meant, and that step has not been automated because it is not a summarisation problem. It is a <em>what mattered to me</em> problem, and nothing else knows the answer.</p>
<p>Cyanote has no transcription and no AI summarisation — it is the place the three lines go. Meeting and standup templates in the <code>/</code> menu, tasks that take an owner and a date out of a typed sentence, <code>[[</code> links so a decision attaches to the project and the person, and full-text search across every meeting note you have written. It is a local database on your own Mac, which is a reasonable place for the short document containing what things meant, whatever your organisation does with the long one.</p>]]></content:encoded>
      <category>Meetings</category>
      <category>Method</category>
      <category>Notes</category>
    </item>
    <item>
      <title>A someday list that is not a graveyard</title>
      <link>https://cyanote.app/blog/a-someday-list-that-is-not-a-graveyard/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/a-someday-list-that-is-not-a-graveyard/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Everyone has two hundred things they will never do, in a list they stopped opening. The list is not the problem. Never deleting anything from it is.</description>
      <content:encoded><![CDATA[<p>Somewhere in your system is a list of things you might do one day. Learn the instrument. Write the thing. Fix the cupboard. Read the book. Start the side project.</p>
<p>You have not opened it in eleven months, and when you do it produces a specific unpleasant feeling — a wall of intentions you have not acted on, arranged as evidence. So you close it. And because you closed it, the next genuinely good idea also goes in and is also never seen, which means the list has stopped being a system and become a place where ideas go to be filed away from you.</p>
<p>The mechanism it was supposed to provide is real. It just needs one thing nobody does.</p>
<h2 id="what-the-list-is-actually-for">What the list is actually for</h2>
<p>Two jobs, both legitimate.</p>
<p><strong>Getting it out of your head.</strong> An unrecorded intention costs you background attention indefinitely — it keeps surfacing, because part of you does not trust that it will be remembered. Writing it down genuinely stops that, and that alone justifies the list even if nothing on it is ever done.</p>
<p><strong>Being there when the conditions change.</strong> You have three free weeks, or a budget, or you finally moved house. The list is where you look, and the value is that six months ago you knew something about what you wanted that you have since forgotten.</p>
<p>Note what is not on that list of jobs: making you do things. A someday list is not a to-do list with a longer horizon. It is a holding pen, and the moment you treat it as commitments you have created a debt you cannot service.</p>
<h2 id="why-it-becomes-a-graveyard">Why it becomes a graveyard</h2>
<p><strong>Nothing is ever removed.</strong> Items only go in. After two years there are 200, and no list of 200 things is readable — you scan the first twelve and close it.</p>
<p><strong>It mixes categories.</strong> "Learn Portuguese", "buy a lamp" and "write a novel" require completely different amounts of life, and interleaving them makes the whole list feel equally unachievable.</p>
<p><strong>Every item is a small reproach.</strong> Because it is written as a commitment — "learn Portuguese" — rather than as a note about a desire. The wording turns a preference into an unpaid obligation, 200 times.</p>
<p><strong>There is no moment where it gets looked at.</strong> So it is only ever read accidentally, which is always the wrong emotional moment for a list like this.</p>
<figure><img src="/images/todo.webp" alt="The same items, but sorted and pruned rather than accumulated" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The list stops working at around forty items. Not because forty is a lot — because nobody reads past twelve.</figcaption></figure>
<h2 id="the-fix-deletion-is-the-feature">The fix: deletion is the feature</h2>
<p>The list needs an eviction rule, and it has to be a rule rather than a judgement, because judged item by item nothing is ever deletable.</p>
<p><strong>Every item gets a date when it was added.</strong> Almost free, and it is the whole mechanism, because age is the signal.</p>
<p><strong>At review, anything over a year old gets one question: would I start this in the next three months?</strong> Not "do I still like the idea" — every idea on the list is a nice idea, that is why it is there. Would you <em>start</em> it. If no, delete it.</p>
<p><strong>Deleting does not mean you have given up.</strong> This is the part that makes it psychologically possible. If the desire is real, it will come back — that is what a real desire does. If it never comes back, it was a passing interest, and passing interests are not failures. They are how people find out what they like.</p>
<p>A list that shrinks is a list you will keep reading. That is the entire trade.</p>
<h2 id="sorting-by-size-not-by-theme">Sorting by size, not by theme</h2>
<p>Categories that work, because they map to what has to be true for you to start:</p>
<p><strong>An afternoon.</strong> Fix the cupboard, cancel the thing, get the frame made. These do not belong on a someday list at all — they belong on your actual <a href="/blog/typing-a-task-the-way-you-say-it/">to-do list with a date on them</a>, and moving them off is usually a third of the list gone in one pass.</p>
<p><strong>A weekend.</strong> Small projects. These are the ones the list is genuinely for, because they need a free weekend to coincide with the inclination, and that coincidence is exactly what a list catches.</p>
<p><strong>A season.</strong> Learn the thing, write the thing. You can run one of these at a time and not more. If four are marked active, none are.</p>
<p><strong>A different life.</strong> Move country, change career, buy the boat. These are worth keeping and they are not projects. They are preferences, and reading them once a year is genuinely informative about where you are heading.</p>
<p>The last category is the one to keep in a note rather than a task list. Written as prose — "I keep coming back to wanting to live somewhere with fewer people in it" — it stops being an unpaid obligation and becomes what it actually is: a thing you know about yourself.</p>
<h2 id="the-review-that-makes-it-work">The review that makes it work</h2>
<p>Once a quarter. Twenty minutes. Not more often — nothing changes in a month, and a list reviewed monthly becomes a monthly reminder of what you have not done.</p>
<p><strong>Delete by the rule first</strong>, before reading properly. Get the list down to something readable, and do it mechanically so you are not negotiating with each item.</p>
<p><strong>Move afternoon-sized things to the actual to-do list</strong>, with dates.</p>
<p><strong>Pick one.</strong> One thing that becomes real this quarter, with a first step that is a dated task. One, because two is none.</p>
<p><strong>Read the rest without deciding anything.</strong> That is the part that does the work you cannot force — it puts the ideas back in circulation, and one of them will surface next month while you are doing something else.</p>
<p>Attaching this to something you already do is what makes it happen at all. A quarterly review that hangs off a <a href="/blog/weekly-review-in-20-minutes/">weekly review you actually keep</a> survives; one that requires remembering a new ritual does not.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>The uncomfortable truth is that you will do maybe five percent of what goes on that list, and a bigger list does not raise the number. Capacity is the constraint, not memory.</p>
<p>Which means the list's real job is not storage. It is being small enough to read, so the ideas are actually in circulation rather than filed away from you. Every deletion makes the remaining items more likely to happen, and that is a genuinely counterintuitive property worth internalising.</p>
<p>Cyanote holds both halves in one place: the afternoon and weekend items as tasks with dates lifted out of the sentence you typed, and the seasons and the different-life material as notes, in prose, where they read as things you know about yourself rather than as debts. A board view gives the quarterly sort a shape, and full-text search finds the idea you had in 2024 and half-remember. It is one local database on your own Mac — which for a list of everything you privately want is not an incidental detail.</p>]]></content:encoded>
      <category>Method</category>
      <category>GTD</category>
      <category>Tasks</category>
    </item>
    <item>
      <title>A journal that stays private</title>
      <link>https://cyanote.app/blog/a-private-journal-that-stays-private/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/a-private-journal-that-stays-private/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>You will not write honestly in a document that might be read. Which makes where a journal lives a writing question first, and a security question second.</description>
      <content:encoded><![CDATA[<p>The entire value of a journal is that it is the one place you do not perform.</p>
<p>Which means the question of where it lives is not primarily a security question. It is a <em>writing</em> question — because if some part of you suspects the words could be read, you will write a slightly managed version of what you think, and the managed version is worthless. It is the same as the unmanaged one with the useful part removed.</p>
<p>People often discover this the wrong way round: they journal in a shared workspace for a month, produce nothing but bland entries, and conclude they are not a journalling sort of person.</p>
<h2 id="the-three-things-that-make-you-self-censor">The three things that make you self-censor</h2>
<p><strong>A shared or work account.</strong> Anything administered by an employer. Whether or not anyone would look, you know that someone could, and knowing is enough.</p>
<p><strong>A device other people use.</strong> A family iPad, a laptop left open, a machine with a session that does not lock. The risk is not a breach; it is somebody walking past.</p>
<p><strong>A service that reads your content.</strong> Anything doing automatic summarising, tagging or semantic indexing has, by construction, transmitted what you wrote. That is <a href="/blog/ai-features-and-private-notes/">a real property of those features</a>, not a suspicion, and it is worth knowing which side of it your app is on before you write down something you have told nobody.</p>
<p>The fix for all three is the same and it is architectural rather than behavioural: put the journal somewhere that has no route out.</p>
<h2 id="what-a-private-by-construction-arrangement-looks-like">What a private-by-construction arrangement looks like</h2>
<p><strong>A local file, on a machine you control.</strong> No account to breach, no server holding a copy, no support person with database access. The threat model becomes: someone with your unlocked laptop. Which is a threat you can actually reason about.</p>
<p><strong>Encrypted where it sits.</strong> Full-disk encryption at minimum. Per-note locking on top, if the app offers it, so a shoulder does not read it and neither does anyone who gets past the disk.</p>
<p><strong>No AI, or AI that provably runs locally.</strong> Not because the feature is bad, but because "summarise my journal" and "nothing leaves the machine" are mutually exclusive unless the model is on your disk.</p>
<p><strong>An export you control.</strong> Journals are the notes people most want to still have in twenty years. That means a readable format and a backup, which is the one place this gets complicated — see below.</p>
<h2 id="the-one-that-actually-needs-thinking-about-backups">The one that actually needs thinking about: backups</h2>
<p>Here is the tension nobody resolves cleanly.</p>
<p>A journal is the single hardest thing to lose and the single worst thing to have copied. Those pull in opposite directions, and most advice picks one and pretends the other does not exist.</p>
<p>The arrangement that handles both: <strong>an encrypted backup you control the key to.</strong> An external drive, encrypted, kept somewhere else. Or an encrypted archive of the export, in cloud storage — the storage provider holds a blob they cannot read, which is a genuinely different arrangement from them holding your text.</p>
<p>What does not work: putting the journal in a sync service for safety. That is a copy on someone else's infrastructure in readable form, and it undoes the entire arrangement in exchange for convenience.</p>
<p>If that sounds like too much, the honest minimum is: full-disk encryption on, one encrypted copy on an external drive, updated occasionally. That covers the fire and the theft, which are the realistic losses.</p>
<figure><img src="/images/note.webp" alt="Any note can be locked with a password and encrypted where it sits — so the private layer and the practical layer can share one app" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The journal can be locked and the shopping list not. Per-note is the granularity that makes one app workable.</figcaption></figure>
<h2 id="what-actually-goes-in-one">What actually goes in one</h2>
<p>Since the question of what to write stops most people faster than where to put it.</p>
<p><strong>No obligation to write daily.</strong> The daily streak is the most common reason people abandon journals, because a missed day becomes a small failure and three missed days become a stopped habit. Write when there is something.</p>
<p><strong>The uncomfortable version.</strong> If the entry could be shown to a colleague without difficulty, it is probably not doing the job. The value is in what you are not saying out loud.</p>
<p><strong>What you are actually worried about</strong>, not the tidy version. The tidy version is the one you have already told people, and you did not need to write it down.</p>
<p><strong>Occasionally, what happened.</strong> Plain events with dates. Not for the writing — for the reading. In five years the emotional entries will be strange to you and the factual ones will be the ones you are glad exist.</p>
<h2 id="reading-it-back">Reading it back</h2>
<p>The part that makes it worth having done, and the part almost nobody does.</p>
<p>Once or twice a year, read a year old. Two things happen reliably. Things you were certain about turn out to have been wrong, in ways that are useful and slightly humbling — the same mechanism as <a href="/blog/keeping-a-decision-journal/">a decision journal</a>, applied to your life rather than your choices. And things that felt enormous turn out to have been survivable, which is the most useful information a journal ever provides, and it is only available in your own handwriting about your own crisis.</p>
<p>Expect to find some of it embarrassing. That is what an honest record looks like, and the entries that are not embarrassing are usually the performed ones.</p>
<h2 id="paper-briefly">Paper, briefly</h2>
<p>Worth mentioning honestly: paper is genuinely private, needs no threat model, and cannot be indexed by anything.</p>
<p>It also cannot be searched, is difficult to back up, and is readable by anyone who opens the drawer — which for a lot of living situations is a worse privacy property than an encrypted file, not a better one.</p>
<p>The reasonable answer is: paper if you like writing by hand and nobody goes in your drawer; an encrypted local file if you want to search it in ten years. Both are defensible. What is not defensible is a journal in a work account.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If you have tried journalling and produced nothing but bland entries, the diagnosis is usually not discipline. It is that some part of you did not believe the document was private, and that belief is not something you can override by deciding to be honest.</p>
<p>Fix the arrangement first. The writing tends to follow.</p>
<p>Cyanote is private by construction rather than by policy: one SQLite database on your own Mac, no account, no sync, no analytics, no crash reporter, no AI reading anything. Any note can be locked with a password and is encrypted where it sits, so the journal can be locked while the shopping list is not. <code>⇧⌘D</code> opens today's daily note when you do want a dated habit, and everything exports to one readable file — which, encrypted and kept on a drive somewhere else, is the version of a backup this particular material deserves.</p>]]></content:encoded>
      <category>Privacy</category>
      <category>Writing</category>
      <category>Local-first</category>
    </item>
    <item>
      <title>Keeping in touch, without a personal CRM</title>
      <link>https://cyanote.app/blog/a-personal-crm-that-is-just-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/a-personal-crm-that-is-just-notes/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>The apps for this fail because they turn friendship into a pipeline. One note per person and one honest rule does the useful part without the queasiness.</description>
      <content:encoded><![CDATA[<p>There is a category of app for remembering to contact your friends. They have contact cadences, relationship health scores, reminders that someone is overdue, and dashboards showing which of your relationships need attention.</p>
<p>Most people who try one stop within a month, and the reason is not that the features do not work. It is that being reminded your friendship with someone is 14 days overdue makes you feel like a bad person operating a pipeline, and that feeling is stronger than the mild benefit of the reminder.</p>
<p>There is a useful thing underneath, though, and it survives without any of that.</p>
<h2 id="the-two-real-problems">The two real problems</h2>
<p><strong>You forget what people told you.</strong> Their sister's name, the job they were nervous about, the thing they said they were struggling with, the fact that they were moving in the spring. Then you see them in four months and cannot ask about any of it, which makes the conversation start from nothing.</p>
<p><strong>Time is a liar.</strong> The friend you have not spoken to since "a couple of months ago" is at fourteen months. Not deliberately — there is simply no signal, and without a signal, elapsed time is invisible.</p>
<p>Those are memory and measurement problems, and both are fixed by writing things down. Neither requires scoring anybody.</p>
<h2 id="one-note-per-person">One note per person</h2>
<p>The whole system, and it is the same shape as <a href="/blog/keeping-client-work-straight/">a client note</a> with a completely different tone.</p>
<p>At the top, the things that are permanent: partner and children's names, where they live, what they do, how you know each other, birthday if you mark it. The details you feel awkward asking for a second time.</p>
<p>Below, dated entries after you speak. Two or three lines. What is going on with them, what they were worried about, what they were looking forward to, what you said you would do.</p>
<p>That is it. Written within ten minutes of the conversation, which is the only moment it will get written.</p>
<figure><img src="/images/note.webp" alt="One note per person, growing downward — the same shape as any other note, with none of the scoring" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Two lines after a conversation. The value is entirely at the start of the next one.</figcaption></figure>
<h2 id="why-the-note-beats-the-reminder">Why the note beats the reminder</h2>
<p>Because it changes what happens at the <em>beginning</em> of the next conversation.</p>
<p>Three minutes before you call, read the last entry. Now you can open with "how did the thing with your brother work out" instead of "how are you", and that difference is the entire point — it says you were listening and you remembered, which is most of what people mean by feeling cared about.</p>
<p>A reminder gets you to call. The note makes the call good. The second is worth considerably more, and it is the half the apps in this category do worst, because they are built around cadence rather than content.</p>
<h2 id="the-one-rule-about-time">The one rule about time</h2>
<p>Not a cadence, not a score. One question, at whatever interval you already review things.</p>
<p><strong>Who have I been meaning to contact and have not?</strong></p>
<p>Read the list of people. Some names produce a small pull — you have been meaning to, you would like to, it has been a while. That pull is the signal, and it is far better information than any elapsed-time counter, because it already accounts for the fact that some friendships are fine at once a year and some feel neglected at once a month.</p>
<p>Pick one or two. Message them. That is the whole practice.</p>
<p>The reason this beats a computed cadence: a system telling you that a close friend is overdue and a person you met once is due creates the same alert for two completely different things, and the flattening is what makes the whole idea feel wrong.</p>
<h2 id="what-not-to-record">What not to record</h2>
<p>The line matters here more than anywhere else in note-taking, and it is worth deciding once.</p>
<p><strong>Nothing you would be ashamed for them to read.</strong> That is the whole test and it is a good one. "Interested in Portuguese, nervous about the move" is a note made by someone paying attention. Anything analytical about their character, or strategic about what they are useful for, is a note made by someone doing something else.</p>
<p><strong>Nothing that is theirs to hold.</strong> Health information, a confidence, someone else's marriage. If they told you in confidence, holding it in a searchable file is a different act from remembering it, and it is worth being deliberate about which you are doing.</p>
<p><strong>Nothing that would be embarrassing in aggregate.</strong> A single note is innocuous. A file with a detailed history of forty people's lives has a different character, and it is worth noticing that before you build one.</p>
<p>The practical rule: <strong>write what helps you be a better friend, and nothing that helps you be a better operator.</strong></p>
<h2 id="where-it-should-live">Where it should live</h2>
<p>On your own machine, in your own notes, and this one is not a preference.</p>
<p>This is a file about other people, who did not consent to being in a database. It should not be on a service that could be breached, sold, acquired, or mined for a graph of who knows whom. A local file with no account is the arrangement that matches what the material actually is — and <a href="/blog/apps-that-do-not-phone-home/">it is checkable</a> rather than promised.</p>
<p>The birthdays go in the calendar as repeating events with a reminder a few days ahead, which is enough to do something about it. The people go in notes. Nothing needs a score.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Some people will do the note after every conversation and it will genuinely improve their friendships. Most will do it for three weeks.</p>
<p>The version that survives, for almost everyone, is much smaller: write things down after the conversations that mattered, and once a month read the list of names and notice who you have been meaning to call. That is a fraction of the effort and most of the benefit.</p>
<p>If you actually need cadences and reminders — for professional networking, or if you are managing a genuinely large number of relationships for work — those apps exist and they are built for it. But that is a CRM, and calling a CRM personal does not change what it is.</p>
<p>Cyanote holds this the plain way: a note per person that grows, <code>[[</code> links so someone's page collects the meetings and projects they appear in without you filing anything, birthdays as repeating calendar events with a reminder a day ahead, and full-text search so "who was it that knew about roofs" is one query. It is one SQLite database on your own Mac with no account, which for a file containing what your friends told you in confidence is the only arrangement that makes sense.</p>]]></content:encoded>
      <category>Method</category>
      <category>Notes</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>What you give up leaving Notion, and what you get back</title>
      <link>https://cyanote.app/blog/a-local-notion-alternative/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/a-local-notion-alternative/</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0000</pubDate>
      <description>Notion is genuinely good at things a local app cannot do. It is also slow to open and gone when the connection is. Here is the trade, stated plainly.</description>
      <content:encoded><![CDATA[<p>Most "Notion alternative" posts are written by people who never liked Notion. That is not a useful review, because the thing they are describing was built for someone else and works.</p>
<p>Notion is very good at a specific job: a shared, structured workspace where a page can also be a database, several people can be in it, and the whole thing is reachable from any browser on earth. Nothing local-first does that, and nothing will, because the properties are in direct opposition.</p>
<p>So the question is not which is better. It is whether you are using the part of Notion that costs you the things it costs you.</p>
<h2 id="what-notion-is-genuinely-good-at">What Notion is genuinely good at</h2>
<p>Worth listing before the criticism, because these are real and a local app has no answer to any of them.</p>
<p><strong>Databases-as-pages.</strong> A table that is also a board that is also a calendar, with the same rows underneath, filtered and grouped per view. This is the actual product, and it has no equivalent in a notes app.</p>
<p><strong>Several people in the same document.</strong> Comments, mentions, permissions, a shared source of truth for a team of nine. If your notes are how a group coordinates, this is the whole requirement.</p>
<p><strong>Any device, no install.</strong> A browser is the client. Someone with a Chromebook and someone with an iPad are equally full participants.</p>
<p><strong>Templates that are systems.</strong> Not a starting shape for a note — a whole tracker someone else designed, duplicated into your workspace in one click.</p>
<p>If two or more of those describe why you opened Notion this morning, the rest of this post is not for you, and switching would be a downgrade.</p>
<figure><img src="/images/board.webp" alt="The same items as cards on a board — the shape people usually come to Notion for, in a window that opens instantly" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The board is easy to reproduce. The database underneath it, with five views and a shared team in it, is not.</figcaption></figure>
<h2 id="what-it-costs">What it costs</h2>
<p>Also real, also worth stating plainly.</p>
<p><strong>It opens at the speed of your connection.</strong> Every page load is a request. On a good day this is fine. On a hotel network it is a spinner where your notes should be, and <a href="/blog/why-a-notes-app-should-open-instantly/">that delay is not neutral</a> — it decides whether a passing thought gets written down.</p>
<p><strong>Offline is a fallback, not a mode.</strong> There is offline support, and it is genuinely better than it was. It is still a cache of a workspace whose truth lives elsewhere, which means the honest version of the <a href="/blog/what-still-works-with-the-wifi-off/">wifi-off test</a> will show you edges: pages you have not opened, search that behaves differently, attachments that were URLs.</p>
<p><strong>Your writing is on somebody's servers, tied to an account.</strong> For a team workspace this is the point and not a complaint. For a private journal, client notes under NDA, or anything you would rather not have restored to a future device, it is a decision you should have made deliberately.</p>
<p><strong>Structure grows whether or not you asked it to.</strong> Databases invite properties. Properties invite filling them in. A capture that started as "write down the thing" becomes a small form with a status field, and the tax lands at exactly the moment that has to stay cheap.</p>
<p><strong>Getting out is work.</strong> Export exists — Markdown, HTML, CSV — and it produces something real. What it does not produce is your workspace: the database views, the relations between tables, the rollups. The prose comes out. The structure, which is what you spent the time building, largely does not.</p>
<h2 id="the-question-that-decides-it">The question that decides it</h2>
<p>Not "is Notion good" — it is. The question is: <strong>are you the workspace, or are you a person with notes?</strong></p>
<p>A lot of individual Notion users are running a single-player instance of a multiplayer product. They have one workspace, no collaborators, four databases they built in an enthusiastic weekend, and a daily usage pattern that is: open a page, write a paragraph, close it. That usage is served identically by anything with a text editor, and it is paying the full price of the architecture — the load time, the account, the connection — for features nobody in the workspace is using.</p>
<p>If you have collaborators, or genuinely rely on the database views, stay. If you are one person writing paragraphs, you are paying for a team product with no team.</p>
<h2 id="what-a-local-app-can-actually-replace">What a local app can actually replace</h2>
<p>Being specific, because vagueness here is how people end up disappointed.</p>
<p><strong>Replaceable straightforwardly:</strong> pages of prose, nested sub-pages, the block editor with headings and lists and callouts and toggles, code blocks, tables inside a document, linking pages to each other and seeing what links back, templates as starting shapes, tasks and a board view of those tasks.</p>
<p><strong>Not replaceable:</strong> a database with multiple synced views, relations and rollups between databases, formula properties, sharing a page with a colleague, comments and mentions, access from a browser you do not control, the template gallery ecosystem.</p>
<p>If your Notion is mostly the first list, the switch is a straight upgrade in speed and ownership. If it is genuinely the second, no local app is the answer and I would not sell you one.</p>
<h2 id="how-to-test-it-in-an-afternoon">How to test it in an afternoon</h2>
<p>Do not migrate. Test.</p>
<p><strong>Open your workspace and count the databases you have touched this month.</strong> Not built — touched. If the answer is zero or one, the structure is decoration.</p>
<p><strong>Look at your last twenty edits.</strong> Were they prose in a page, or property values in a table? That ratio is your answer.</p>
<p><strong>Export the workspace now, whatever you decide.</strong> Markdown and CSV, into a folder. Do it today. It costs ten minutes and it means the decision stays yours later, which is <a href="/blog/backing-up-local-notes/">the whole point of an export you have actually run</a> rather than one you assume works.</p>
<p><strong>Then, if you are leaving:</strong> take the last six months and the pages you actually reference. Leave the rest in Notion, which is not going anywhere on the free tier. Wholesale migration is how people spend a weekend and end up with two half-populated workspaces.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>Notion at its free tier costs nothing for one person, and "free and good" is a strong position. What it is not is fast, private, or yours — and for a single person writing paragraphs, those three are worth more than a database engine they are not using.</p>
<p>Cyanote covers the first list above and none of the second. A block editor with headings, lists, quotes, tables, tick boxes, images, callouts, toggles and syntax-highlighted code, reachable from a <code>/</code> menu; notes that nest into sub-pages; <code>[[</code> links with backlinks; templates; tasks in a list or on a board. All of it in one SQLite database on your own Mac, with no account and no server — which is why it opens in under a second and does the same thing with the wifi off. There is no collaboration, no browser access, and no phone app. Those are not oversights; they are the other side of the same coin.</p>]]></content:encoded>
      <category>Buying advice</category>
      <category>Local-first</category>
      <category>Notes</category>
    </item>
    <item>
      <title>Writing and code are two different kinds of attention</title>
      <link>https://cyanote.app/blog/writing-and-code-two-modes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/writing-and-code-two-modes/</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0000</pubDate>
      <description>Prose forgives you and code does not. Moving between the two costs more than the two seconds it looks like — here is how to make the switch smaller.</description>
      <content:encoded><![CDATA[<p>Prose forgives you. You can write a sentence that is roughly right, keep going, and fix it later — in fact that is the only way anyone finishes anything. Getting it approximately down and improving it on the second pass is the method.</p>
<p>Code does not work like that. A command is right or it is not, and "roughly right" is the failure mode that costs you an hour, because it looks correct and does something else.</p>
<p>These are two different postures. Most of us hold both in the same working day, often within the same task, and the moving between them is where the day quietly leaks.</p>
<h2 id="the-switch-is-not-the-two-seconds-it-looks-like">The switch is not the two seconds it looks like</h2>
<p>Say you are writing up a process and you need the exact command. You switch to the editor to get it.</p>
<p>The two seconds are not the cost. The cost is that the editor is full of other things — a file you had open, a diff you had not finished reading, an error in the terminal below it. You went in with one narrow errand and arrived somewhere with its own agenda. Twenty minutes later you are doing something legitimate and it is not what you were doing.</p>
<p>The other half of the cost runs the opposite way, and it is subtler. Because getting the snippet is annoying, you do not get it. You write "run the usual deploy command" and move on. The document survives; the useful part of it does not. Then the version of you who reads it in March has to reconstruct what "usual" meant.</p>
<h2 id="why-the-mode-shows-up-in-the-typing-itself">Why the mode shows up in the typing itself</h2>
<p>The two modes are not just a state of mind — they disagree about what should happen when you press a key.</p>
<p>In prose mode you want the software helping. Straight quotes becoming curly ones, a list continuing itself, a heading formatting as you type. This is invisible and correct, and you would miss it immediately if it stopped.</p>
<p>In code mode every one of those is sabotage. The curly quote breaks the command. The list continuation mangles the indentation. A "helpful" capital at the start of a line changes what a case-sensitive flag means. Exactness needs an editor that does nothing you did not type.</p>
<p>This is why the two live in different applications for most people — not because anyone chose that, but because one text box cannot do both. If you want the underlying argument for why one app can hold both anyway, <a href="/blog/notes-and-code-in-one-app/">that is a separate piece</a>. What follows assumes you have somewhere for both and is about how to arrange them.</p>
<h2 id="keep-the-artefact-next-to-its-explanation">Keep the artefact next to its explanation</h2>
<p>The single most useful arrangement is also the least clever: whatever you write about the thing should sit next to the thing itself.</p>
<p>A runbook is a prose note. Each command it depends on is its own code note, linked from the runbook with <code>[[</code>. The runbook explains and links; the code note is the exact text and nothing else. Because the link shows up from both ends, the snippet knows which document it belongs to — so when you find it in six months, it comes with its reason attached.</p>
<p>That solves the failure mode where the explanation and the artefact drift apart. They can still drift, but the moment you notice, they are one click from each other rather than two apps apart.</p>
<p>Practically, in Cyanote, that is <code>⌘N</code> for the prose note and <code>⇧⌘N</code> for the code note, <code>[[</code> to link them, and <code>⌘S</code> in a code note to save it back to a real file on disk if the text is also live configuration somewhere. <code>⌘K</code> reaches any note by name and <code>⇧⌘F</code> searches inside all of them at once, so the retrieval end does not depend on your having filed anything correctly.</p>
<h2 id="make-the-mode-visible-before-you-read-a-word">Make the mode visible before you read a word</h2>
<p>A small thing with a return out of proportion to the effort: set the code notes in monospace and leave the prose notes in whatever you write in. Typeface, size and line spacing are per-note settings, so this costs nothing after the first time.</p>
<p>The point is not aesthetics. It is that you can see which mode a note is in before you have read a word of it — and so you arrive already in the right posture instead of adjusting halfway down the page. <a href="/blog/customising-a-notes-app/">The rest of what is worth setting</a> is mostly about reading comfort; this one is about attention.</p>
<h2 id="batch-the-modes-when-you-can">Batch the modes when you can</h2>
<p>The cheapest switch is the one you do not make. Two habits do most of the work here.</p>
<p><strong>Write first, verify second.</strong> Draft the whole document in prose mode, leaving a marker wherever an exact value goes. Then do one pass collecting every exact value at once. One switch instead of nine, and the writing keeps its momentum, because it was never interrupted to go and fetch a flag.</p>
<p><strong>Capture snippets when you are already in code mode.</strong> The moment to save a command is the moment it finally works — not later, when you are writing the document, because by then you are in the wrong mode and you will paraphrase it instead. A working command and a sentence about what it does, saved at the moment of relief. That sentence takes eight seconds and is the entire difference between an archive and a junk drawer.</p>
<p>If you keep a lot of things this way, the clipboard is the other half of that story: the <a href="/blog/mac-app-notes-and-clipboard/">pinned snippet and the copy history</a> catch things you have not decided to keep yet.</p>
<h2 id="when-you-should-absolutely-switch-apps">When you should absolutely switch apps</h2>
<p>Do not take any of this as an argument for working in one window.</p>
<p>When you are actually building — running things, reading errors, moving between files, using git — go to a real editor and stay there. That is code mode at full depth and a notes app has no business in it. There is no debugger here, no terminal, nothing to run, and pretending otherwise would waste your afternoon.</p>
<p>The arrangement above is for the <em>other</em> thing: the writing that surrounds the work. Runbooks, decisions, how the thing is configured and why, the fragments you will need again in a context you cannot predict. That work is mostly prose with exact bits embedded in it, and it is the work that gets abandoned when the two halves live in different buildings.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>If your working day is entirely one mode, this is not a problem you have. A writer with no snippets and an engineer who never writes anything down are both well served by one good app and no thought about it at all.</p>
<p>The switching cost is worth attention when the two are genuinely interleaved — when the document you are writing is about a system, and half of what makes it useful is text that has to be exact.</p>
<p>Cyanote holds both kinds in one window, on one Mac, in <a href="/blog/what-local-first-means-for-your-notes/">one local database</a>, for $10 once. It has no sync and no mobile app, so if the runbook needs to be readable from a phone at 3am, this is the wrong tool and you should know that before you pay rather than after.</p>]]></content:encoded>
      <category>Workflow</category>
      <category>Focus</category>
      <category>Method</category>
    </item>
    <item>
      <title>Tracking habits without a separate app for it</title>
      <link>https://cyanote.app/blog/tracking-habits-without-a-separate-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/tracking-habits-without-a-separate-app/</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0000</pubDate>
      <description>A habit tracker works by being seen daily. A fifth dock icon is least likely to get that. What changes when the streak lives next to the rest of your day.</description>
      <content:encoded><![CDATA[<p>A habit tracker has exactly one mechanism: you see it, and seeing it either continues a streak or breaks one. That's the entire product. There's no clever algorithm underneath a habit app — the whole design problem is getting a small piece of information in front of you at the right moment, reliably, for months.</p>
<p>Which makes it a strange category to put behind its own app icon, its own launch, its own moment of remembering it exists.</p>
<h2 id="the-mechanism-is-visibility-not-features">The mechanism is visibility, not features</h2>
<p>Most habit-tracking apps compete on what happens around the checkmark — streak graphics, charts, badges, social accountability, reminders tuned by machine learning. Some of that helps some people. None of it is the mechanism.</p>
<p>The mechanism is: you open something, you see today's habits, you mark them or you don't. Everything else is decoration on top of a single daily glance. Which means the question that actually matters isn't "which app has the best streak visualisation" — it's "which app am I actually going to open every day without being asked."</p>
<h2 id="why-a-dedicated-habit-app-struggles-with-its-own-job">Why a dedicated habit app struggles with its own job</h2>
<p>This is the part that's a little unfair to habit apps, because it's not a quality problem. It's a category problem.</p>
<p>A habit tracker is, almost by definition, an app you don't need for anything else. You don't check it to write something down, look something up, or get something done — you check it to check it. That makes it the easiest app on your Mac to simply stop opening, because nothing else pulls you toward it. A notes app gets opened because you need to write a note. A habit tracker gets opened because you remembered to open the habit tracker, which is precisely the kind of remembering a habit tracker exists to replace.</p>
<p>The apps that work around this lean hard on notifications — a push reminder every evening, sometimes several. That's a real solution, and it's also the reason people delete habit-tracking apps: the badge count and the reminders become their own small source of guilt, decoupled from whatever the habit actually was.</p>
<figure><img src="/images/habits.webp" alt="Cyanote&#x27;s habit tracker, shown as part of the same daily view as notes and to-dos" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The checkmark is the whole mechanism. The question is only ever whether you see it.</figcaption></figure>
<h2 id="what-changes-when-it-s-not-a-separate-app">What changes when it's not a separate app</h2>
<p>Not a redesign of the mechanism — the same glance, the same checkmark. What changes is where that glance happens.</p>
<p>If your habits live in the same window as the notes you're already writing and the to-dos you're already checking, the habit tracker stops needing its own reason to be opened. You see today's habits because you were already there for something else, the same way a kitchen calendar gets glanced at while you're getting coffee rather than because you scheduled time to look at a calendar. The visibility the whole category depends on gets inherited from an app you were opening anyway, instead of manufactured by a notification.</p>
<p>This is the same argument I made about <a href="/blog/weekly-review-in-20-minutes/">the weekly review</a> fitting into twenty minutes rather than becoming its own ceremony — the systems that survive are usually the ones that attach to something you were already doing, not the ones that ask for a new standalone ritual. A habit tracker you have to remember to open is asking for a ritual. One sitting inside your daily notes is attaching to one you already have.</p>
<h2 id="a-dedicated-habit-app-is-a-perfectly-good-answer">A dedicated habit app is a perfectly good answer</h2>
<p>Worth saying plainly, because a page selling the bundled version has an obvious reason not to.</p>
<p>If you want serious analytics on your habits — correlation between habits, long-range charts, a gamified system that genuinely works for you — a dedicated tracker will do more than a habit list bolted onto a notes app ever will. As of 16 August 2026, Streaks is a one-time $5.99 purchase on the App Store and has been one of the more respected habit trackers on Apple platforms for years; Habitica turns the whole thing into an RPG with a free tier, for people who are honestly motivated by that. Both have spent years refining exactly this one thing, and if what's currently stopping you is that your habit tracker isn't good enough at being a habit tracker, switching to a plainer, less-featured one won't fix that.</p>
<p>The bundled version isn't trying to out-feature them. It's solving a different, more common failure: not "my habit tracker's charts aren't detailed enough" but "I stopped opening my habit tracker in February and didn't notice until April."</p>
<h2 id="what-actually-breaks-a-habit-tracking-streak">What actually breaks a habit-tracking streak</h2>
<p>Worth naming, because it's rarely the habit itself.</p>
<p><strong>Too many habits at once.</strong> A list of eleven things to check every day is a chore, not a habit tracker, and the eleventh item is the one that quietly stops getting checked first — followed, a few weeks later, by all of them.</p>
<p><strong>No room for a miss.</strong> A single missed day that resets a 40-day streak to zero teaches exactly one lesson: stop looking at the app. The trackers that hold up long-term usually let a streak bend without breaking outright.</p>
<p><strong>The tracker itself becoming the thing you avoid.</strong> If checking in has started to feel like a small guilt trip rather than a small win, the app has started working against its own mechanism.</p>
<p>None of these is fixed by more features. They're fixed by fewer habits, more forgiveness, and — the part this post is actually about — a lower cost to glancing at the thing in the first place.</p>
<h2 id="the-honest-version-of-the-choice">The honest version of the choice</h2>
<p>If you're deep into habit tracking as its own discipline — chains, correlations, a system you've tuned over years — a dedicated app that's spent that long on the one feature will serve you better than a habit list living inside a bigger app.</p>
<p>For the more ordinary case — a handful of habits you want to keep half an eye on without giving them their own icon, their own notifications, and their own moment of remembering to open it — the bundled version's whole argument is that it doesn't need a mechanism of its own. It borrows the one you already have, from the app you were opening anyway.</p>
<p>Cyanote's habit tracker sits in the same window as the notes and the to-dos, in a local database on your Mac, with no account and no streak data leaving your machine. It is one part of five, not the deepest habit tracker available — and if the depth is what you're after, Streaks or Habitica will out-feature it honestly.</p>]]></content:encoded>
      <category>Habits</category>
      <category>Workflow</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>A Pomodoro timer that&#x27;s already in the app you&#x27;re working in</title>
      <link>https://cyanote.app/blog/pomodoro-timer-mac-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/pomodoro-timer-mac-app/</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0000</pubDate>
      <description>A focus timer works until switching to it is its own distraction. What that costs when the timer lives in a separate app, and what changes when it doesn&#x27;t.</description>
      <content:encoded><![CDATA[<p>The Pomodoro Technique is close to the simplest productivity method that exists: 25 minutes of work, a 5-minute break, repeat, with a longer break every fourth round. <a href="https://www.francescocirillo.com/pages/pomodoro-technique">Francesco Cirillo developed it in the late 1980s</a>, named for the tomato-shaped kitchen timer he used at the time. There is nothing to configure and nothing to learn. Which makes it a strange method to have accumulated so many dedicated apps to run it.</p>
<h2 id="the-technique-doesn-t-need-an-app">The technique doesn't need an app</h2>
<p>You could run a Pomodoro session with a kitchen timer, and for the first decade or so people mostly did. The method's entire value is the boundary — a fixed block where you've pre-committed to one task and a fixed break where you've pre-committed to stopping. Nothing about that requires software.</p>
<p>What software adds is the parts around the boundary: a sound when the block ends, a count of how many rounds you've done today, a way to see the streak. Useful, but worth naming as decoration on a method that works without any of it — the same relationship a habit tracker's charts have to the actual checkmark.</p>
<h2 id="where-a-separate-timer-app-costs-you-something">Where a separate timer app costs you something</h2>
<p>The problem isn't that dedicated Pomodoro apps are bad at the timer. They're usually good at it. The problem is where they sit relative to the work.</p>
<p>You're writing, or coding, or working through a task list, and you switch to the timer app to start a session. Twenty-five minutes later it makes a sound, and you switch to it again to start the break, then switch back again to resume. None of those switches is expensive on its own. Multiplied by six or eight rounds a day, it's a small tax paid entirely in the currency the technique exists to protect — your attention, spent on the tool that's supposed to be protecting it.</p>
<p>There's a sharper version of this if the timer app has its own notifications, its own badge, its own reason to check in on you. At that point the tool meant to reduce context-switching has become a second source of it.</p>
<figure><img src="/images/routines.webp" alt="Cyanote&#x27;s routines and Pomodoro timer, running alongside the day&#x27;s notes and to-do list" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The timer's whole job is a boundary. It doesn't need its own window to draw one.</figcaption></figure>
<h2 id="what-changes-when-the-timer-is-where-the-work-is">What changes when the timer is where the work is</h2>
<p>The mechanism doesn't change — still 25 minutes, still a break, still the same countdown. What changes is that starting it doesn't cost an app switch, because it's a control inside the window you were already using to do the work. You start a round from your task list, keep working in the same place, and the timer runs alongside rather than requiring its own visit.</p>
<p>That matters more for the break than the work block. The moment a 25-minute timer ends is exactly the moment you're most likely to open something distracting "for a second" — and if the timer itself lives inside the app that also holds your to-do list, the natural next glance is at the list, not at whatever's one tab over in a browser. A five-minute break inside a focus tool tends to stay five minutes. A five-minute break that starts by opening a browser tab rarely does.</p>
<p>This is the same logic behind <a href="/blog/weekly-review-in-20-minutes/">running a weekly review in twenty minutes</a> rather than letting it sprawl — a bounded block only holds its boundary if the tool running it isn't itself an invitation to wander.</p>
<h2 id="routines-are-the-same-idea-run-longer">Routines are the same idea, run longer</h2>
<p>A single Pomodoro round is a 25-minute boundary around one task. A routine is the same idea stretched across a morning, an evening, or a weekly reset — a fixed sequence of steps you run without re-deciding the order each time.</p>
<p>The value of both is identical: deciding the shape of the block once, in advance, so you're not negotiating with yourself in the moment about what comes next or how long it should take. A routine that lives next to your to-do list can pull directly from it — the same way a Pomodoro session started from your task list already knows what you're working on, a morning routine sitting next to your notes can open straight into the day's first task instead of ending in "okay, now what."</p>
<h2 id="a-dedicated-pomodoro-app-is-a-perfectly-good-answer">A dedicated Pomodoro app is a perfectly good answer</h2>
<p>As with the rest of this app, worth saying plainly rather than around.</p>
<p>If you want serious analytics on your focus time — long-range charts of deep work, integrations with a calendar or a task manager you already use, a genuinely well-designed standalone experience — a dedicated timer will do more than a Pomodoro control tucked into a bigger app. As of 16 August 2026, Session is $4.99 a month or $39.99 a year and is built specifically around deep-work tracking; Be Focused is a one-time $4.99 on the Mac App Store and covers the core technique cleanly without a subscription; Forest gamifies the block by growing a virtual tree, with Forest Plus from $5.99 a month for the extras, though its Mac presence is a browser extension rather than a native app. Years of attention have gone into each of those, in a way a timer that's one feature among five isn't trying to match.</p>
<p>What the bundled version is solving is narrower: not "make the best possible Pomodoro app," but "don't make starting a 25-minute focus block cost an app switch in the first place."</p>
<h2 id="what-to-check-before-you-rely-on-either">What to check before you rely on either</h2>
<p>If a timer's alerts are the thing that pulls you out of focus — a notification banner, a sound that cuts through headphones at the wrong volume — check what you can turn off before you commit to a method that depends on the boundary being quiet rather than loud.</p>
<p>Check whether the break is actually enforced or just suggested. A timer that lets you skip the break with one click is teaching you to skip the break.</p>
<p>And ask whether the routine or timer data needs an account to work. A 25-minute countdown has no reason to touch a server, and neither does a checklist of morning steps.</p>
<h2 id="the-honest-version-of-the-choice">The honest version of the choice</h2>
<p>If focus tracking is a discipline you're serious about — data across weeks, integration with a bigger deep-work practice — a dedicated app built entirely around that will outperform a timer that's one part of a larger tool.</p>
<p>For the far more common case — you want the boundary the Pomodoro Technique provides without paying an app-switch tax to get it, and a routine that doesn't require its own launch to run — the value is in the timer not needing a reason of its own to be open. It borrows the one your task list already gives you.</p>
<p>Cyanote's timer and routines sit in the same window as the notes, the to-dos and the calendar, running locally with no account and nothing sent anywhere. It's one part of five, and if deep-work analytics or a gamified tree is what actually keeps you consistent, Session, Be Focused or Forest will serve that specific need better than a bundled timer ever will.</p>]]></content:encoded>
      <category>Focus</category>
      <category>Routines</category>
      <category>How-to</category>
    </item>
    <item>
      <title>Notes and code, in the same app</title>
      <link>https://cyanote.app/blog/notes-and-code-in-one-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-and-code-in-one-app/</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most people keep their writing in one app and their snippets in another. There is a real reason for the split — and a real cost to it. Here is both.</description>
      <content:encoded><![CDATA[<p>You are writing up how the deployment works. Three paragraphs in, you need the command — the actual one, with the flags, the one that took an afternoon to get right. It is not in this app. It is in a scratch file in a text editor, or in terminal scrollback, or in a message you sent yourself.</p>
<p>So you go and get it. And on the way back, if you are honest, about a third of the time you do not come back.</p>
<p>That round trip is so normal that it reads as the cost of doing business. It is worth asking why it exists, because the answer is more interesting than "I never got organised".</p>
<h2 id="you-keep-two-kinds-of-text-and-they-want-opposite-things">You keep two kinds of text, and they want opposite things</h2>
<p>The first kind is written to be read. Sentences, headings, a list of what you decided and why. It tolerates a typo. It benefits from being tidied up as you type — a straight quote turned into a curly one, a dash lengthened, a stray double space collapsed.</p>
<p>The second kind is written to be re-run. A command, a config block, a regex, a query, the four lines that fix the thing that breaks every March. It does not tolerate a typo, and the tidying that helps the first kind is actively destructive to the second. A smart quote in a shell command is not a nicer-looking quote. It is a syntax error that takes ten minutes to see, because it looks correct.</p>
<p>That is the whole reason for the split. It is not laziness or a failure to consolidate. Your prose editor is helpful, your snippets need an editor that refuses to help, and one text box cannot be both at once.</p>
<h2 id="why-just-use-a-code-block-is-not-quite-the-answer">Why "just use a code block" is not quite the answer</h2>
<p>Every serious notes app has code blocks now. Fence some text in backticks, get a monospace font and syntax colouring, done.</p>
<p>That solves the smallest part of the problem. A code block inside a prose document is still living in a prose document: it is a paragraph that happens to be wearing a different typeface. It has no file on disk, so nothing can run it and nothing else can read it. It cannot be opened on its own. When you copy it out, you are as likely to bring along an invisible character as not.</p>
<p>It is a fine way to <em>show</em> code inside an explanation. It is a poor way to <em>keep</em> code you intend to use.</p>
<h2 id="what-the-split-actually-costs">What the split actually costs</h2>
<p>Not much on any given occasion, which is exactly why it lasts for years.</p>
<p><strong>The explanation and the artefact drift apart.</strong> The snippet is in one place, and the paragraph explaining what it is for is in another, and only one of them gets updated. Usually the snippet. Six months later you have a command that works and no memory of what it does to the database, which is a worse position than having neither.</p>
<p><strong>Two search boxes, and neither one is complete.</strong> You half-remember something. Was it a thing you wrote down or a thing you saved? You look in both apps, in order, every time. The answer to that question should never have been load-bearing.</p>
<p><strong>Snippets end up wherever was closest at the time.</strong> A Gist, a message to yourself, an untitled file called <code>test2.sh</code>, the desktop. None of these is a bad place on the day. Collectively they are not a system, and the only index is your memory.</p>
<figure><img src="/images/note.webp" alt="A note editor with the slash-command menu open, showing headings, lists, tables and code blocks" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>A prose editor doing prose things. The snippet needs the opposite of all of this.</figcaption></figure>
<h2 id="what-changes-when-both-live-in-one-app">What changes when both live in one app</h2>
<p>The useful version of "one app" is not a prose editor with better code blocks. It is two editors, each honest about what it is for, in the same window and the same database.</p>
<p>A code note in Cyanote is its own kind of note. It opens in a code editor rather than the block editor — monospace, syntax highlighting, language detected from what you paste, and none of the typing help that turns a working command into a broken one. <code>⇧⌘N</code> makes one; <code>⌘N</code> makes an ordinary note.</p>
<p>Three things follow from that, and they are the actual argument.</p>
<p><strong>A code note can be a file.</strong> <code>⌘S</code> saves it straight back to a real path on disk. So the config you keep and the config the machine reads can be the same text rather than two copies that agree for a while. That is the difference between a note about your setup and your setup.</p>
<p><strong>The prose can point at the code.</strong> <code>[[</code> links one note to another, and the note being linked to shows what links back. The runbook links to the snippet. Open the snippet in six months and it tells you which runbook it belongs to. Neither one can quietly become an orphan.</p>
<p><strong>One search box covers both.</strong> Full-text search across everything you have written, prose and code alike, so "did I write it down or save it" stops being a question you have to answer before you start looking.</p>
<p>None of this is exotic. It is what you would build if you accepted that the two kinds of text belong together and that they need different editors — which most apps do not, because they have picked a side.</p>
<h2 id="where-a-real-editor-still-wins-and-it-is-not-close">Where a real editor still wins, and it is not close</h2>
<p>This is the part a product page would skip, so let me be plain about it.</p>
<p>Cyanote is not an IDE and is not trying to become one. There is no language server, no refactoring, no debugger, no test runner, no git integration, no extension ecosystem, and no way to run anything. It cannot open a project. It opens notes.</p>
<p>If you are building software, that work belongs in a real editor — free ones included, and they are extremely good. Notepad++ has done the exact-text job on Windows for two decades without asking anybody for a subscription. VS Code is free and does everything listed in the paragraph above.</p>
<p>The distinction that matters is between the code you are <em>writing</em> and the code you are <em>keeping</em>. The first belongs in a project, under version control, in a proper editor. The second — the loose, reusable, hard-won fragments that never justified a repository of their own — is the part that has no home, and that is the part this is for.</p>
<h2 id="when-two-apps-is-the-right-answer">When two apps is the right answer</h2>
<p>If everything you touch lives in a repository, and you have never once lost a command, the split is not costing you anything and this is a solved problem you do not have.</p>
<p>If your notes are already Markdown files in a folder, you are most of the way there by a different route: your editor can open them, and your notes are text your tools can read. That is a legitimately good setup and I am not going to pretend otherwise.</p>
<p>And if you work on more than one machine, stop here. Cyanote keeps everything in one SQLite database on one disk and has no sync of any kind, which for anyone moving between a laptop and a desktop is disqualifying on its own — not a caveat, a disqualification.</p>
<h2 id="the-honest-version">The honest version</h2>
<p>The case for one app is narrow and specific. It applies when you keep prose and you keep snippets, when the two constantly refer to each other, and when you are tired of paying a context switch to move six inches between them.</p>
<p>Cyanote sits on that side: notes and code notes in one window, one local database, one search box, <a href="/blog/notes-app-without-an-account/">no account and no server</a>, for $10 once. If the fiddling itself is what you enjoy, <a href="/blog/customising-a-notes-app/">what is actually worth customising</a> covers the settings that change how the text reads rather than how it looks, and <a href="/blog/writing-and-code-two-modes/">two kinds of attention</a> is about arranging the work rather than the app. And if what you want is Notion with fewer moving parts, the <a href="/compare/notion-alternative/">comparison page</a> is the more useful thing to read next.</p>]]></content:encoded>
      <category>Notes</category>
      <category>Code</category>
      <category>Workflow</category>
    </item>
    <item>
      <title>A calendar that lives next to your notes and your to-dos</title>
      <link>https://cyanote.app/blog/mac-app-notes-tasks-calendar/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/mac-app-notes-tasks-calendar/</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0000</pubDate>
      <description>A calendar tells you what is happening. It cannot tell you why, or what you meant to bring. Here is what changes when it sits next to the notes that explain it.</description>
      <content:encoded><![CDATA[<p>Open your calendar app right now and look at tomorrow's first meeting. You will see a time, a title, and maybe a video-call link. What you will not see is the paragraph of context you had in your head when you booked it — what you actually need to say, the number you were going to check first, the follow-up from last time. That lives somewhere else, if it lives anywhere at all.</p>
<p>That gap is the whole subject here.</p>
<h2 id="a-calendar-answers-one-question">A calendar answers one question</h2>
<p>A calendar is built to answer "when." It is extremely good at that one job — recurring events, time zones, invitations, the free/busy grid that makes scheduling with other people possible at all. None of that is in question.</p>
<p>What it was never built to answer is "why," or "with what." The event is a box with a start time. Anything you needed to prepare, remember, or bring to it has to live somewhere else, and "somewhere else" is doing a lot of quiet work in that sentence.</p>
<h2 id="where-the-missing-half-actually-goes">Where the missing half actually goes</h2>
<p>In practice it goes in one of three places, and each has its own failure mode.</p>
<p><strong>A separate notes app.</strong> You open the calendar, see the meeting, then switch apps and search for notes about it — if you remembered to title them in a way you'd recognise later. Two apps, two windows, and the connection between "this meeting" and "these notes" exists only in your memory, not in either tool.</p>
<p><strong>The event description field.</strong> Better than nothing, and worse than it looks. Most calendar apps give that field no formatting, no links between entries, and a search that treats it as an afterthought. It becomes a place things go to be typed once and never read again.</p>
<p><strong>Nowhere.</strong> The most common answer, and the reason meetings open with "sorry, can you remind me what this was about."</p>
<p>None of these is a character flaw. They are what happens when the tool that shows you <em>when</em> and the tool that holds <em>why</em> are not the same tool, and moving information between them is a chore you have to remember to do under time pressure — the exact conditions under which people don't.</p>
<figure><img src="/images/calendar.webp" alt="Cyanote&#x27;s calendar, shown next to the day&#x27;s notes and to-dos in the same window" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The calendar answers when. Everything next to it answers what you actually needed to know.</figcaption></figure>
<h2 id="what-changes-when-they-share-a-window">What changes when they share a window</h2>
<p>Less than the pitch usually implies, and something specific: the trip disappears.</p>
<p>When the calendar sits in the same app as your notes and your to-dos, an event on Thursday and the note about Thursday's meeting are one click apart instead of one app-switch and one search apart. You don't have to remember to link them, because there was never a wall to cross in the first place — you write the note the same place you see the date.</p>
<p>The other half is the to-do side. A task with a real deadline is a calendar problem wearing a to-do list's clothes. Keeping tasks and events in the same app means "when is this actually due" and "what does my Thursday look like" are one glance, not two tools reconciled by hand. If your task list is currently a kanban board, <a href="/blog/personal-kanban-board/">how a personal Kanban board holds up against a real weekly to-do list</a> is worth reading before you decide whether the board or the calendar should own a given deadline — they answer different questions and a lot of task lists try to make one column do both jobs.</p>
<h2 id="a-dedicated-calendar-app-is-a-perfectly-good-answer">A dedicated calendar app is a perfectly good answer</h2>
<p>I'd rather say this plainly than bury it, the same as I would for any of the other pieces of this app.</p>
<p>If your calendar life is genuinely just scheduling — you manage several shared calendars, you're coordinating meeting times across a team, you live and die by natural-language event entry — a dedicated calendar app will beat a bundled one on the thing it specialises in. As of 16 August 2026, Fantastical's Individual Premium plan is $6.99 a month or $56.99 a year, with a real free tier underneath it for people who don't need the extras; BusyCal is a one-time purchase in the same space, aimed at people who want the polish without a subscription. Both have had years to get scheduling exactly right, in ways a smaller calendar view inside a bigger app is not trying to compete with.</p>
<p>The combined calendar is not for that job. It's for the much larger number of days where the interesting question isn't "schedule this meeting with four people across three time zones" — it's "what am I doing today, and what do I need to remember about it."</p>
<h2 id="where-the-intersection-actually-sits">Where the intersection actually sits</h2>
<p>This is the same shape of gap I found writing about <a href="/blog/mac-app-notes-and-clipboard/">the clipboard manager next to the notes app</a>: as of 16 August 2026, none of the dedicated Mac calendar apps do notes, to-dos and a clipboard history, and none of the all-in-one productivity apps has a calendar that holds up against a purpose-built one on its own terms.</p>
<p>So the honest framing isn't "an all-in-one calendar beats Fantastical." It doesn't try to. It's that a calendar view sitting in the same window as the rest of your day removes the specific friction of context that lives on the wrong side of an app switch — and that most days don't need what a specialist calendar is optimised for anyway.</p>
<h2 id="what-to-check-before-you-rely-on-one">What to check before you rely on one</h2>
<p>If you're weighing a bundled calendar against a dedicated one, the questions worth asking are about what it can't do rather than what it can.</p>
<p>Does it handle recurring events properly, including the edge cases — a meeting that moves for one week only, an event that repeats on the last weekday of the month? This is where thin calendar implementations show their seams first.</p>
<p>Can it show more than one day at a time when you need to plan a week rather than react to today? A calendar that only does "today" is a to-do list wearing a date.</p>
<p>Does it sync with the calendars you don't control — a shared family calendar, a work calendar someone else manages? A calendar that only knows about events created inside it is a smaller tool than it looks like on the pricing page.</p>
<p>And the same storage question that applies everywhere in this app: is the calendar data local, or does using it mean handing your schedule to a server you don't control?</p>
<h2 id="the-honest-version-of-the-choice">The honest version of the choice</h2>
<p>If scheduling across other people's calendars is the actual job — team meetings, shared availability, invitations that need to go somewhere real — a dedicated calendar app is doing work a bundled one isn't built for, and no amount of window-proximity fixes that.</p>
<p>The combined view earns its place on the much more common day: the one where you're not scheduling anything, you're just trying to see what's happening and what you need to know about it, without a trip across two apps to reassemble the two halves of the same fact.</p>
<p>Cyanote's calendar sits in the same window as the notes, the to-dos and the board, in a local database on your Mac, with no account and no sync to a second device. That last part means it will lose to Fantastical or BusyCal the moment you need your calendar on more than one machine — worth knowing before you switch, not after.</p>]]></content:encoded>
      <category>Calendar</category>
      <category>Workflow</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>Making a notes app fit your eyes</title>
      <link>https://cyanote.app/blog/customising-a-notes-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/customising-a-notes-app/</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most customisation is procrastination wearing a colour picker. Four settings are not, and they change how much of your own writing you actually read.</description>
      <content:encoded><![CDATA[<p>You will look at your notes app more than you look at most people you know. A few hours a day, for years, at the same handful of pixels. It is a strange thing to leave entirely at the factory setting, and a stranger thing to spend a Sunday on.</p>
<p>Both mistakes are common. This is about telling them apart.</p>
<h2 id="most-customisation-is-procrastination">Most customisation is procrastination</h2>
<p>Let me get this out of the way, because a page selling a customisable app has an obvious incentive not to.</p>
<p>Choosing a theme feels like work. It produces visible change, it is pleasant, it is reversible, and at the end of it you have written nothing. It belongs to the same family as reorganising your folders — an activity that borrows the <em>feeling</em> of getting your house in order without any of the effect, and I have written about <a href="/blog/how-to-organise-notes/">that particular trap already</a>.</p>
<p>If you are deciding between two accent colours, the honest answer is that neither will affect your life and you should pick the one you like and close the settings window.</p>
<h2 id="four-settings-that-are-not-decoration">Four settings that are not decoration</h2>
<p>The exception is narrow, and it is about reading rather than looking.</p>
<p><strong>Type size.</strong> Most software ships at a size chosen for a screenshot rather than for your desk. If you have ever enlarged the text on your phone, you have already decided this matters, and the same reasoning applies to the app you read for hours.</p>
<p><strong>Line spacing.</strong> This is the one people never touch and feel immediately. Text set too tight is harder to come back to — your eye loses its place returning to the start of each line, which is why the effect shows up most on the notes you re-read rather than the ones you write once.</p>
<p><strong>Line length.</strong> The third is not a font setting at all: it is how wide the text is allowed to run. A note stretched across a 27-inch monitor is a genuinely difficult read, and the fix is a narrower column rather than a bigger font.</p>
<p><strong>Contrast.</strong> Not "dark mode versus light mode" but the actual distance between the text and the page behind it. Too little and you squint at midday. Too much, on a black background at night, and the letters glare and smear at the edges.</p>
<p>Get those four right and you will read your own notes more. That is the whole return, and it is bigger than it sounds — most notes systems fail at the reading end, not the writing end.</p>
<h2 id="a-theme-is-two-palettes-not-one">A theme is two palettes, not one</h2>
<p>Here is the part that is genuinely harder than it looks, and where a lot of custom themes fall over.</p>
<p>Your Mac switches between light and dark on its own, at sunset or on a schedule, and a theme that has only been checked in one of them will be unreadable in the other about twelve hours from when you built it. Grey-on-grey that is elegant at 2pm becomes invisible at 11pm.</p>
<p>So a theme worth shipping is two full palettes that have both been checked for contrast, not one palette with the brightness inverted. Cyanote has fifteen of them on that basis. A few are there for specific conditions rather than for taste:</p>
<ul><li><strong>Newsprint</strong> — broadsheet paper and pure black ink. The highest-contrast light theme, for a bright room or a screen you are fighting with.</li><li><strong>Sepia</strong> — warm, low-contrast reading paper. The opposite errand: easiest on the eyes in a dim room, and the one to reach for when you are reading rather than typing.</li><li><strong>Phosphor</strong> — amber on warm carbon. A terminal throwback that turns out to be a genuinely good theme for looking at code.</li><li><strong>Midnight</strong> — true black, for OLED screens. On a Mac the point is not battery, it is that a black page in a dark room stops the whole window acting as a lamp.</li></ul>
<p>The rest are ordinary and that is fine. Ordinary is what you want for eight hours.</p>
<figure><img src="/images/themes.webp" alt="A themes gallery showing light and dark palettes side by side" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Fifteen themes, each checked in both palettes. The dark half is where most themes quietly fail.</figcaption></figure>
<h2 id="per-note-settings-which-is-the-actual-argument">Per-note settings, which is the actual argument</h2>
<p>Global settings assume everything you write is the same kind of thing. It is not.</p>
<p>A journal entry you will re-read wants a serif, generous line spacing and a narrow column. A meeting note you will scan for one decision wants tighter spacing and a size you can take in at a glance. A snippet wants monospace and nothing else, because in code the shape of the characters carries meaning — a zero has to be distinguishable from an O, and a serif will not help you find a missing bracket.</p>
<p>So in Cyanote the body, heading and code typefaces are set separately, the size and line spacing with them, and the column width per note — globally <em>or</em> on a single note. The per-note version is the one that earns its keep, because it means the format can follow the material instead of the material being flattened to fit one setting.</p>
<p>It also does something quieter: it makes the kind of note visible before you have read a word of it. Open something set in monospace and you already know what you are looking at. That is worth more than any colour scheme, and it is most of why <a href="/blog/notes-and-code-in-one-app/">writing and code end up wanting different treatment in the same app</a>.</p>
<h2 id="building-your-own-and-the-way-it-goes-wrong">Building your own, and the way it goes wrong</h2>
<p>If none of the fifteen fits, the whole app is drawn from seven colours and you can set all seven. That is enough to build something genuinely your own.</p>
<p>It is also enough to build something you cannot read, and the failure is not obvious on the day you build it. Two mistakes account for nearly all of it:</p>
<p>Contrast that only works in one mode. You will pick your colours in the light and discover the result at night, when your accent colour has become a dark smear on a dark background.</p>
<p>Contrast that only works on your screen. A palette tuned on a bright display in a bright room can be unusable on the same laptop outdoors, or on an external monitor with different colour handling.</p>
<p>The shipped themes have been checked in both palettes. A theme you build has been checked by you, on one screen, on one afternoon. That is not an argument against building one — it is an argument for living with it for a week before deciding it is finished.</p>
<h2 id="when-the-defaults-are-the-right-answer">When the defaults are the right answer</h2>
<p>If you are undecided, use the default. It was chosen by someone who had to make it work for everybody, which is a decent proxy for making it work for you.</p>
<p>Change the size if the text is too small. Change the line spacing if you lose your place. Change the theme if the room is dark. Those are responses to an actual complaint, and a setting changed in response to a complaint almost always sticks. A setting changed out of curiosity almost always gets changed again next month.</p>
<p>The point of customisation is not self-expression in an app only you will see. It is that the software should stop being noticeable, so that what you wrote is the thing in front of you.</p>
<p>Cyanote does this the way it does everything else: locally, in <a href="/blog/what-local-first-means-for-your-notes/">a database on your own disk</a>, with no account, for $10 once. The settings live with your notes, which means they survive a restore and do not follow you to a second machine — because there is no sync, which is a real limitation and not a philosophical position.</p>]]></content:encoded>
      <category>Customisation</category>
      <category>Typography</category>
      <category>Design</category>
    </item>
    <item>
      <title>When a free clipboard manager stops being enough</title>
      <link>https://cyanote.app/blog/when-a-free-clipboard-manager-stops-being-enough/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/when-a-free-clipboard-manager-stops-being-enough/</guid>
      <pubDate>Sat, 15 Aug 2026 09:00:00 +0000</pubDate>
      <description>Maccy and Raycast clipboard history are free and well made. Here are the real limits of each, so you can tell whether you have hit one or only think you have.</description>
      <content:encoded><![CDATA[<p>You already have a clipboard manager and it cost you nothing. Then something did not work the way you expected, and now you are reading a page about alternatives.</p>
<p>So it is worth saying at the top: most of the time, the right outcome of that search is to close the tab and carry on. Maccy is free, open source and very well built. Raycast's clipboard history is free and already running if you use Raycast for anything else. Neither is a compromise you are putting up with until you can afford something better.</p>
<p>Both do have limits, though — and the limits are specific rather than vague. What follows is where each one stops, so you can hold your own annoyance up against the list and see whether it is on it.</p>
<h2 id="start-by-naming-the-thing-that-annoyed-you">Start by naming the thing that annoyed you</h2>
<p>Describe the moment before you compare anything. Not "I want something better", but the actual failure: the item you went looking for and could not find, the setting you opened the preferences for and it was not there, the copy that came back as the wrong kind of thing.</p>
<p>That description does most of the work. Quite often it turns out to be a hotkey you never set, or a preference sitting two clicks away — and the alternative you were about to install would have needed the same five minutes of setup.</p>
<p>The rest of the time it is a decision the app made on purpose, which no future release will reverse. Those are the ones worth knowing about in advance, because they are the only ones switching apps can fix.</p>
<p>If you are earlier than this and the real question is why the Mac forgets what you copied at all, <a href="/blog/clipboard-history-on-mac/">that is the piece to read first</a>.</p>
<h2 id="where-maccy-stops">Where Maccy stops</h2>
<p>Maccy stops at text, and at one machine. Both are deliberate.</p>
<h3 id="it-keeps-text-by-design">It keeps text, by design</h3>
<p>Maccy is text-focused on purpose. Copy an image expecting to find it in the history an hour later and it will not be there, and that is not an oversight waiting on a release. It is a decision about what the tool is — and a defensible one. A text-only history is smaller, faster and much easier to reason about, because you always know what kind of thing is in it.</p>
<p>The mismatch is still real if your work is visual. Designers, people assembling documents, anyone moving screenshots between apps all day: you will meet this on the first afternoon and keep meeting it. That is a genuine reason to use something else. It is not a fault in Maccy — and choosing a different app over it does not mean the app you leave was bad.</p>
<h3 id="it-is-local-only-with-no-sync">It is local only, with no sync</h3>
<p>Maccy keeps the history on the Mac it is running on. For most people that is the feature rather than the limit. Think about what passes through a clipboard in a week: passwords on the way from a password manager to a login form, two-factor codes, private links that grant access to whoever holds them. Maccy respects the concealed-content flag password managers set, so those copies are declined rather than stored, and everything it does keep stays on one disk.</p>
<p>You hit the limit only if you genuinely work across two Macs and expect the history to follow you between them. That is a smaller group than it sounds — and worth being straight about: no local-first tool solves it, free or paid, because solving it means putting your clipboard on a server.</p>
<p>On price, checked 13 August 2026: Maccy is free and open source, with a $9.99 App Store build that exists as a way to support the work. Paying does not unlock anything. If you have been holding off on the paid version expecting features, that is the answer.</p>
<figure><img src="/images/clipboard.webp" alt="A clipboard manager on macOS showing pinned snippets and a searchable copy history" width="1400" height="912" loading="lazy" decoding="async" /><figcaption>Every clipboard manager is the same list underneath. The differences are what it refuses to keep and how long it keeps the rest.</figcaption></figure>
<h2 id="where-raycast-s-clipboard-stops">Where Raycast's clipboard stops</h2>
<p>Raycast's clipboard stops at three months of history on the free tier — and at the fact that you cannot take the clipboard without taking the launcher.</p>
<h3 id="three-months-and-then-it-is-gone">Three months, and then it is gone</h3>
<p>Checked 13 August 2026: Raycast is free, with Pro from $8 a month billed annually, and the free tier retains three months of clipboard history. Longer retention is part of what Pro buys.</p>
<p>Three months is a long time for a buffer. Almost everything you search a clipboard history for is minutes or days old: the paragraph you copied over, the code from a text message, the reference you paste twice a week. Those never come close to the limit.</p>
<p>The people who do hit it know the feeling. It is "what was that address I copied in the spring", or going back to a project from last year and wanting the snippets you were pasting at the time. If that is you, the thing you want is not a clipboard manager with a longer buffer. It is somewhere permanent to put things — a different problem, and the subject of the next section.</p>
<p>Before you assume you need it, check. Search your history for something from six weeks ago and see whether you ever actually reach for anything that old.</p>
<h3 id="the-clipboard-comes-with-the-launcher">The clipboard comes with the launcher</h3>
<p>Raycast's clipboard history is one surface inside a launcher. If you already run Raycast, that is entirely a benefit: nothing extra to install, nothing extra in the menu bar, one hotkey vocabulary instead of two.</p>
<p>If you do not want the launcher, you cannot have only the clipboard part. That is architecture rather than a fault — but it does mean "I want a clipboard manager" and "I want Raycast running all day" are one decision, not two. Some people install Raycast for the clipboard, find they use nothing else in it, and quietly resent the size of what they are running. If that describes you, a small dedicated tool is the fix, and Maccy is the obvious one.</p>
<h2 id="the-limit-they-both-share">The limit they both share</h2>
<p>Your clipboard history and the place you keep things permanently are two different applications, and you are the bridge between them.</p>
<p>Something worth keeping arrives in the history. You open the history, copy the item, switch to your notes app, paste it, give it a title, and go back to what you were doing. Each crossing is small. You make several a day, and the ones you forget to make are the reason you are searching a clipboard buffer for something from March.</p>
<p>Neither Maccy nor Raycast is trying to solve this, and it would be odd if they were. A clipboard history is a buffer by definition, and a buffer that never forgets is just an unsorted archive of everything you have ever copied, including the things you would rather it had dropped. The question is only whether the boundary sits where you want it — and for plenty of people it does: copied things are temporary, kept things are typed on purpose, and the separation is doing useful work.</p>
<p>If you are shopping across the category generally rather than diagnosing one annoyance, <a href="/clipboard-manager-mac/">the wider set of Mac clipboard managers is laid out here</a>, prices included.</p>
<h2 id="if-none-of-this-describes-you">If none of this describes you</h2>
<p>Then stay where you are. A free tool that does what you need is not a problem to be solved, and there is no version of this argument where you should pay to replace software that is already working. The limits above are narrow on purpose: text only, one machine, three months, one launcher. If you read all four and recognised none of them, you have not hit a limit. You have hit a Tuesday.</p>
<p>And if you did recognise one, the fix is usually smaller than a whole new workflow. An image-heavy day wants a manager that holds images. A launcher you resent wants a smaller tool beside it. Match the change to the thing that actually broke.</p>
<p>Cyanote is the option where the clipboard and the place things get kept are the same app — which removes the crossing described above — and it costs $10 once with no subscription and no account. The limitations are worth stating plainly: macOS only, one Mac, no sync, and a clipboard that lives alongside notes and to-dos rather than being the entire product. If you copy across two machines, or you want the best possible clipboard manager and nothing else, it is the wrong buy. Staying on Maccy or Raycast is a perfectly good decision, and for most people reading this it is the correct one.</p>]]></content:encoded>
      <category>Clipboard</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>What ten dollars, once, actually buys</title>
      <link>https://cyanote.app/blog/what-ten-dollars-once-buys/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/what-ten-dollars-once-buys/</guid>
      <pubDate>Sat, 15 Aug 2026 09:00:00 +0000</pubDate>
      <description>A one-time price is not simply cheaper than a subscription. Here is what buying software outright buys you, and the one thing it cannot promise.</description>
      <content:encoded><![CDATA[<p>A one-time price looks like the simple option. You pay, the software is yours, and the line on your bank statement never comes back. That is the appeal, and it is a real one.</p>
<p>It is not the whole arrangement, though. Buying once means the developer is paid once for software they then have to keep maintaining while macOS changes underneath it every autumn. That constraint does not go away because the pricing page is tidy. It shows up later, and it is worth understanding before you pay rather than after.</p>
<h2 id="what-a-one-time-payment-genuinely-buys">What a one-time payment genuinely buys</h2>
<p>Three things, and each of them is worth having.</p>
<p><strong>The software keeps working if the company disappears.</strong> This is the one that matters most — and it is a question about architecture rather than goodwill. An app that stores your work on your own disk and does not phone home to check your licence will still open the morning after its developer walks away. An app that validates against a server every launch will not, however sincerely anyone promised otherwise.</p>
<p><strong>There is no renewal date.</strong> Nothing expires on a Tuesday. No card to update, no dunning email when the bank reissues it, no quiet price rise applied to you three years into using something you had stopped thinking about.</p>
<p><strong>Nothing is taken away for lapsing.</strong> With most subscription software, stopping payment means the app locks or drops to read-only — and you export on the way out if the export is any good. With a purchase, stopping payment is not an event. There is nothing to stop.</p>
<p>That third one is the difference people underrate. A subscription is a decision you make once and then stop making — and the bank keeps making it for you. A purchase is a decision that stays made.</p>
<h2 id="what-it-cannot-buy">What it cannot buy</h2>
<p>It cannot buy a guarantee of indefinite development.</p>
<p>"Lifetime updates" is the phrase you will see — and it is a promise about a term the person making it does not control. The lifetime in question is the app's, not yours. Nobody can honestly commit to shipping compatibility fixes for an operating system that has not been designed yet, funded by money that was spent years earlier.</p>
<p>So one-time apps tend to end in one of three ordinary ways. Some become subscriptions, usually with the old licence honoured and new work gated behind the new model. Some are quietly abandoned, still installable, slowly drifting out of step with the OS until an update breaks them. Some start charging for major versions, which is upgrade pricing under a friendlier name.</p>
<p>The third is arguably the most honest of the three, even though it is the one that annoys people most. Paying again for version 2 is at least a re-decision: you get to look at what the app has become and say no. It is only a bad deal when it is sold as something else.</p>
<p>None of this is an argument against buying once. It is an argument for buying once with your eyes open, from a developer whose costs the price plausibly covers.</p>
<h2 id="subscriptions-are-not-the-villain-here">Subscriptions are not the villain here</h2>
<p>For a great deal of software, a subscription is the honest model.</p>
<p>If an app syncs your work between devices, someone pays for storage and bandwidth every month you keep using it. If it hosts shared documents, someone runs the servers that resolve two people editing the same paragraph. If it indexes ten years of your notes on the server side, that index costs money to keep warm. Those are recurring costs — and a payment that happened in 2023 cannot fund them in 2027. An app that tried would degrade or vanish.</p>
<p>So the question is not whether subscriptions are fair. It is whether the specific software in front of you has recurring costs at all. A clipboard manager running on one Mac largely does not. A sync service does. The pricing model should follow the shape of the thing — and when it does not, you are paying rent on software that runs entirely on your own laptop. I have written about <a href="/blog/note-apps-without-a-subscription/">how to tell those two apart</a> in more detail.</p>
<h2 id="what-the-prices-actually-look-like">What the prices actually look like</h2>
<p>Worth setting out, because "you buy it once" is not unusual in this corner of the Mac market, and the spread is wider than most people expect.</p>
<div class="table-scroll"><table><thead><tr><th scope="col">App</th><th scope="col">What it covers</th><th scope="col">One-time price</th><th scope="col">Subscription price</th></tr></thead><tbody><tr><td>Dedicated Mac clipboard managers (several)</td><td>Clipboard history</td><td>$3, $8.99 and $14.99 among others</td><td>Usually none</td></tr><tr><td>Paste</td><td>Clipboard history</td><td>$89.99</td><td>$2.49/month or $29.99/year</td></tr><tr><td>Things 3</td><td>Tasks</td><td>$49.99 on Mac</td><td>None</td></tr><tr><td>NotePlan</td><td>Notes, tasks, calendar</td><td>None</td><td>$12/month or $99.99/year</td></tr><tr><td>Notion</td><td>Notes, pages, databases</td><td>None</td><td>Free for a single-user workspace with unlimited pages; around $10/member/month for teams</td></tr></tbody></table></div>
<p>Prices checked 13 August 2026, quoted for one person on macOS.</p>
<p>Two things fall out of that table. The first is that one-time pricing is neither rare nor cheap by nature. Things 3 asks $49.99 for tasks alone and has been a well-regarded app for years at that price. Paste sells both ways — and its one-time option at $89.99 is roughly thirty times the cheapest dedicated clipboard manager on the same list. Price in this category is not tracking function very closely.</p>
<p>The second is that Notion is free for one person with unlimited pages, so for a solo reader it is not a money argument at all. If you are weighing Notion, weigh it on whether the app suits you. The paid tiers exist for teams, and if you are not a team they are not aimed at you.</p>
<h2 id="the-comparison-is-rarely-one-app-against-one-app">The comparison is rarely one app against one app</h2>
<p>The question people actually face is not "this app or that app". It is one app against the four or five they would otherwise be paying for.</p>
<p>That changes the arithmetic in a way single-app comparisons hide. A clipboard manager, a task app, a calendar layer, a habit tracker and somewhere to write things down are five separate purchases or five separate line items, and each one looks small on its own. Two of them under five dollars a month is exactly why nobody adds them up. I did add mine up once, and <a href="/blog/replaced-five-subscriptions-with-one-app/">the five subscriptions I was carrying came to roughly $2,600 over ten years</a>, which is a number I would never have agreed to as a number.</p>
<p>The honest version of this comparison also has to include what the bundled app does worse. Fantastical is better at calendars than a calendar view inside something else. Things 3 is better at tasks than most task lists bolted onto a notes app. A stack of specialists usually beats a generalist at each individual job. What it loses on is the seams between them — and whether that trade is worth it depends entirely on how much of your work lives in the seams.</p>
<h2 id="three-questions-before-you-pay-once">Three questions before you pay once</h2>
<p>If you have decided a purchase is the right shape, these are the ones that separate a good one from a regret.</p>
<p><strong>Does it need a server to start?</strong> Turn off the wifi, quit the app, open it again. If it wants the network to let you in, then the promise that it keeps working forever is only as durable as somebody else's hosting bill.</p>
<p><strong>Where is the file?</strong> A real answer is a path you can open in Finder, in a format another program could read. Your work will outlive the app, including if the app is good. Whether that is a migration or a loss is decided by the format underneath.</p>
<p><strong>What has the developer actually shipped?</strong> Not what they promise. A version history showing years of free updates is evidence. A line on a pricing page saying "lifetime updates" is a sentence. Check the changelog, check the dates, and see whether the pattern you are being promised has already happened.</p>
<p>Cyanote is $10 once — and the honest limitations are that it is macOS only, runs on a single Mac, and has no sync, so two machines means two separate sets of notes. If you work across a laptop and a desktop, or capture things on your phone, a subscription that pays for real sync infrastructure is the better arrangement — and I would rather say so here than have you find out a week in. If one Mac is where your work actually happens, <a href="/pricing/">the price</a> is one number and that is the end of it.</p>]]></content:encoded>
      <category>Buying advice</category>
      <category>Pricing</category>
    </item>
    <item>
      <title>Keeping your clipboard and your notes in the same place</title>
      <link>https://cyanote.app/blog/mac-app-notes-and-clipboard/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/mac-app-notes-and-clipboard/</guid>
      <pubDate>Sat, 15 Aug 2026 09:00:00 +0000</pubDate>
      <description>A clipboard manager catches things for now. A notes app keeps them for later. Here is what it costs to run those two halves as two separate apps.</description>
      <content:encoded><![CDATA[<p>You copy an address out of an email because you will need it in twenty minutes. Twenty minutes later you have copied four other things, and the address is now the fifth item down a list you have to open and scroll.</p>
<p>That is the ordinary case, and it works. The interesting case is the one just past it: you copy something and, halfway through pasting it, realise you are going to want it next month too. Now you are doing paperwork. Open the clipboard history, find the item, put it back on the clipboard, switch to the notes app, make a note, paste, give it a title so you can find it again.</p>
<p>Nothing there is difficult. It is just a border crossing — and you are the border guard.</p>
<h2 id="a-clipboard-manager-and-a-notes-app-are-solving-the-same-problem">A clipboard manager and a notes app are solving the same problem</h2>
<p>Both exist because you noticed something and could not use it yet. That is the whole job: catch it now, use it later. The only difference between the two tools is how long "later" is.</p>
<p>A clipboard manager assumes minutes. It captures everything automatically, asks you nothing, and lets the old stuff fall off the end. A notes app assumes months. It captures nothing automatically, asks you for a title and a place to put it, and keeps things until you delete them.</p>
<p>Neither is wrong. They are two settings on one dial. The problem is that in most setups the dial is not a dial — it is a wall, and moving anything across it is a manual act you perform by hand, several times a day, forever.</p>
<h2 id="what-the-wall-actually-costs">What the wall actually costs</h2>
<p>Not much, on any single occasion. That is why it survives. The costs are the kind you only see when you go looking for them.</p>
<h3 id="things-you-meant-to-keep-that-scrolled-away">Things you meant to keep, that scrolled away</h3>
<p>Every clipboard history has a limit. A few hundred items sounds enormous until you count what an ordinary day puts through the clipboard: file paths, URLs, half-sentences you moved between two documents, a code from a text message, someone's phone number, the same boilerplate reply four times.</p>
<p>At that rate a fortnight-old item is not old — it is gone. And the ones you lose are not random. They are the ones you copied, used, and thought "I should save that" about while doing something else more urgent. The intention to keep something almost never arrives at a convenient moment.</p>
<h3 id="things-you-kept-but-without-their-context">Things you kept, but without their context</h3>
<p>The other failure runs the opposite way. You do save it. You paste the snippet into a note, and because you were mid-task you paste it into whatever note was open, or a new untitled one, with no sentence explaining what it is.</p>
<p>Three weeks later you have a note containing a bare URL, or a serial number, or four lines of configuration, and no idea what any of it was for. It is technically kept and practically lost. A clipboard history at least tells you when you copied something, which is often enough to reconstruct why.</p>
<h3 id="the-tax-of-two-of-everything">The tax of two of everything</h3>
<p>Two hotkeys. Two windows. Two search boxes — one of which sees only the last few hundred things you copied, the other only the things you wrote down.</p>
<p>The search box is the one that stings. When you half-remember an address and cannot recall whether you saved it properly or merely copied it once, you have to look in both places, in order.</p>
<figure><img src="/images/clipboard.webp" alt="A clipboard history kept as a searchable list, each item shown with an icon for its type" width="1400" height="912" loading="lazy" decoding="async" /><figcaption>The list is the easy part. What happens when you decide to keep one of these is the harder question.</figcaption></figure>
<h2 id="what-a-single-window-changes">What a single window changes</h2>
<p>Less than the pitch usually implies — and something specific.</p>
<p>When the history and the notes are in one app, the border crossing becomes a decision instead of an errand. You find the item in the history, you keep it, and it becomes a note. There is no second window, no re-copying, no titling ritual performed under time pressure. You are still choosing what is worth keeping, which is the part that should stay manual, but you are not also doing the clerical work of the move.</p>
<p>The other change is the search box. One box that looks at both what you wrote and what you copied removes an entire category of question — the "did I save that or just copy it" question — because the answer no longer determines where you look.</p>
<p>If you want the mechanics of the capture side on its own, <a href="/blog/clipboard-history-on-mac/">how clipboard history works on a Mac</a> covers what the system does and does not give you, and why there is a gap to fill in the first place.</p>
<h2 id="two-separate-apps-is-a-perfectly-good-answer">Two separate apps is a perfectly good answer</h2>
<p>I would rather say this plainly than bury it.</p>
<p>A dedicated clipboard manager will be better at being a clipboard manager. That is what it spends all of its attention on: paste stacks, plain-text pasting, rules per application, quick-look previews, keyboard behaviour tuned over years. As of 13 August 2026, Paste is $2.49 a month, $29.99 a year, or $89.99 once, and Maccy is free and open source with a $9.99 App Store build for people who want to support it. Those are honest prices for tools that do one job carefully.</p>
<p>If you already have a launcher you like, the argument is even weaker. Raycast is free, with Pro from $8 a month billed annually as of the same date, and its clipboard history sits behind a key you already press fifty times a day. Muscle memory is worth more than architecture. Replacing a hotkey you have already learned is a real cost — and it does not show up on any comparison table.</p>
<p>And there is a version of the combined app that is worse than two apps: the one where the clipboard part is a checkbox on a feature list, kept only because it made the list longer. A history you cannot search, cannot pin to, and cannot switch off is not a clipboard manager. It is a liability with an icon.</p>
<h2 id="the-intersection-is-genuinely-thin">The intersection is genuinely thin</h2>
<p>This is the part I found surprising when I went looking. As of 13 August 2026, none of the established all-in-one Mac productivity apps includes a clipboard manager, and none of the dedicated Mac clipboard managers does notes, tasks, calendar and habits.</p>
<p>So the choice is not usually between two good combined apps. It is between two specialists and one generalist — and the generalists are few.</p>
<p>There is a reason for the gap — and it is not laziness. A clipboard manager sees everything you copy, so shipping one inside a larger app means taking on that responsibility for a feature most of your users will never open. Plenty of good software has looked at that and declined, which is a defensible call.</p>
<h2 id="what-to-check-before-you-combine-them">What to check before you combine them</h2>
<p>If you do want the two halves in one place, the questions are about the clipboard half, because that is the one that gets neglected.</p>
<p>Can you set how many items it keeps, and can you turn it off entirely? An off switch that also clears what has already been saved is the difference between a setting and a promise.</p>
<p>Does it decline to record what your password manager marks as concealed? This is the baseline, not a bonus.</p>
<p>Is the history searchable and can you pin things? Without those two, the combined app is a worse clipboard manager than the free ones, and the integration will not make up for it. It is worth reading how the app describes <a href="/clipboard-manager-mac/">what its clipboard manager on a Mac actually keeps</a> rather than trusting the feature list, and where it stores it.</p>
<p>And ask the boring question about storage. A history on your own disk and a history on somebody's server are different products wearing the same word.</p>
<h2 id="the-honest-version-of-the-choice">The honest version of the choice</h2>
<p>If your clipboard is a scratch space and nothing more, if what you copy is used within the minute and never wanted again, then a good dedicated manager, or a launcher you already own, is the right tool and the rest of this is not your problem.</p>
<p>The combined app earns its place in one specific situation: when you keep finding that the things you copy and the things you write down are the same things at different ages — and you are tired of moving them across by hand.</p>
<p>Cyanote sits on that side — notes and a clipboard history in one window with one search box, on a single Mac, in a local database, with no sync and no second device. That last part is a real cost, not a rounding error, and if you work across two machines it is disqualifying on its own. Two well-chosen apps will beat one badly-fitting one every time, and there is no argument here that says otherwise.</p>]]></content:encoded>
      <category>Clipboard</category>
      <category>Workflow</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>What happens to your notes when the app shuts down</title>
      <link>https://cyanote.app/blog/what-happens-when-your-notes-app-shuts-down/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/what-happens-when-your-notes-app-shuts-down/</guid>
      <pubDate>Thu, 13 Aug 2026 09:00:00 +0000</pubDate>
      <description>Notes apps close. The good ones give you a month and an export file. Here is what that month actually asks of you, and how to be ready before it arrives.</description>
      <content:encoded><![CDATA[<p>Every notes app you have ever used will stop existing. Most of them will do it politely, with an email and an export tool and a date. That is the good outcome, and it is worth understanding exactly what the good outcome asks of you, because it is more than people expect.</p>
<p>Here is a real one. On 31 July 2013, Catch.com — then a credible Evernote competitor — <a href="https://techcrunch.com/2013/07/31/evernote-competitor-catch-com-shuts-down-its-note-taking-apps-company-heading-in-different-direction/">announced it was shutting down its note-taking apps</a>. The service went off on 30 August. Users had roughly a month to find the export tool and pull down a CSV or ZIP archive of everything they had written.</p>
<p>That is a company behaving well. Notice given, tool provided, formats that other apps could read. And it still required every single user to open one particular email during one particular month, understand what it meant, and act.</p>
<figure><img src="/images/shutdown-window-diagram.svg" alt="A timeline from 31 July to 30 August 2013 showing the roughly thirty-day window Catch.com users had to find the export tool and download their notes before the service switched off" width="1200" height="400" loading="lazy" decoding="async" /><figcaption>Thirty days is generous, as these things go. It is also thirty days in which you have to be paying attention.</figcaption></figure>
<h2 id="the-three-ways-it-actually-goes">The three ways it actually goes</h2>
<p><strong>The orderly shutdown.</strong> Notice, an export tool, a readable format, a deadline. Catch.com is the model. You lose nothing if you are paying attention, and everything if you are not.</p>
<p><strong>The acquisition.</strong> Nobody switches anything off. The app stops getting updates, then stops working on the next macOS release, then one morning will not open at all. There is no email, because from the company's point of view nothing happened. This is more common than a shutdown and much harder to plan for, because there is no date to react to.</p>
<p><strong>The quiet one.</strong> A small app from a developer who stopped. The website still resolves, the download link still works, and the last release was four years ago. Nothing announces itself. You find out when you upgrade your Mac.</p>
<p>Only the first of these sends you an email. The other two are the reason "they will let me know" is not a plan.</p>
<h2 id="what-does-an-export-actually-give-you">What does an export actually give you?</h2>
<p>Getting a file out is not the same as keeping your notes, and this is where most people are disappointed.</p>
<p><strong>The text usually survives.</strong> Plain prose comes through nearly every export intact. If all you have is paragraphs, you are mostly fine.</p>
<p><strong>The structure usually does not.</strong> Nesting, links between notes, tags, folder hierarchies, and the relationships you built are the first thing lost in translation. <a href="https://www.notion.com/help/export-your-content">Notion, for instance, exports to PDF, HTML, or Markdown and CSV</a> — and a database of linked pages becomes a directory of files with the links rewritten or broken, depending on the format you picked.</p>
<p><strong>Attachments are a coin toss.</strong> Images and files may come down alongside the text, may come as a separate archive, or may turn out to have been links to a server that is about to stop answering.</p>
<p><strong>Dates and metadata rarely survive.</strong> Created and modified timestamps, which are how you find anything from four years ago, are commonly flattened to the export date.</p>
<p>So the honest way to think about an export is not "my notes are safe" but "my sentences are safe, and I will be rebuilding the shape of them by hand".</p>
<h2 id="how-do-you-know-whether-you-could-actually-leave">How do you know whether you could actually leave?</h2>
<p>There is one question that sorts every notes app into two piles, and you can answer it in a minute:</p>
<p><strong>If the company vanished tonight — no notice, no email, no export tool — could you still read what you wrote tomorrow?</strong></p>
<p>If the answer depends on the company doing something for you, the answer is no.</p>
<p>Some cloud apps have thought hard about this and engineered around it. Standard Notes, for example, publishes <a href="https://standardnotes.com/help/4/what-happens-to-my-data-if-standard-notes-disappears">an offline decryption script you can download and run in a browser</a> precisely so that its own disappearance is survivable. That is a serious answer to a serious question, and it is rarer than it should be.</p>
<p>For a <a href="/blog/what-local-first-means-for-your-notes/">local-first app</a>, the question is close to meaningless. The company vanishing changes nothing about the file on your disk. The app stops getting updates — which is a real loss, and worth being honest about — but your notes do not stop existing, because they were never anywhere else.</p>
<h2 id="what-to-do-this-week-whichever-kind-of-app-you-use">What to do this week, whichever kind of app you use</h2>
<p><strong>Run the export once, now, while nothing is wrong.</strong> Not to keep the file. To find out what your app's export actually produces, which is a thing you want to learn on a calm Tuesday rather than during a thirty-day countdown. Open the result. Look at whether the structure survived. Apple Notes, for instance, <a href="https://support.apple.com/guide/notes/export-a-copy-of-a-note-apd1f4c5c8b9/mac">exports a copy of a note as a PDF</a> — useful for reading, useless for moving into another app and editing.</p>
<p><strong>Find out where the data physically is.</strong> For a local app this is a path on your disk. For a cloud app it is somebody's server, and the export is the only door. Either answer is fine. Not knowing which one you have is not.</p>
<p><strong>Put the export somewhere your <a href="/blog/backing-up-local-notes/">backups</a> already reach.</strong> An export sitting in Downloads is not a copy of anything; it is one failed SSD away from being nothing.</p>
<p><strong>Repeat it about twice a year.</strong> Not because the format changes often, but because this is the only way you find out that the export quietly broke.</p>
<h2 id="the-uncomfortable-summary">The uncomfortable summary</h2>
<p>Software you rent has a shutdown date you do not know yet. Software that runs on your own machine has one too — but it is the date you stop being able to run it, which is years of macOS releases away and entirely visible to you.</p>
<p>Neither is permanent. Nothing is. The difference is whether the end of the app is also the end of the notes, and whether you find out by reading an email or by choosing.</p>
<p>Cyanote, the app this blog belongs to, is on the second side of that line: the notes are a database file on your own Mac, and a full export is a single JSON file you can take somewhere else. That does not make it permanent either. It just means nobody else gets to pick the date.</p>]]></content:encoded>
      <category>Local-first</category>
      <category>Backups</category>
      <category>Ownership</category>
    </item>
    <item>
      <title>A notes app that never asks you to sign up</title>
      <link>https://cyanote.app/blog/notes-app-without-an-account/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/notes-app-without-an-account/</guid>
      <pubDate>Thu, 13 Aug 2026 09:00:00 +0000</pubDate>
      <description>Signing up is so normal that nobody asks what the account is for. Here is what it buys, what it costs, and how to check whether an app truly needs one.</description>
      <content:encoded><![CDATA[<p>Open a new notes app and the first screen is usually a form. Email, password, maybe a verification code. You fill it in without thinking, because that is what software does now.</p>
<p>It is worth stopping on that screen for a second, because an account is not a formality. It is a decision about where your writing lives and who else has a copy — made before you have typed a single word.</p>
<h2 id="what-the-account-is-actually-for">What the account is actually for</h2>
<p>Three things, and they are all genuinely useful:</p>
<h3 id="your-notes-on-more-than-one-device">Your notes on more than one device</h3>
<p>This is the big one and it is the honest reason most apps ask. Sync needs somewhere in the middle to sync through, and that somewhere needs to know which notes are yours.</p>
<h3 id="sharing-with-other-people">Sharing with other people</h3>
<p>A shared page needs a shared truth that two accounts can both reach.</p>
<h3 id="recovery">Recovery</h3>
<p>Laptop stolen on a Thursday, notes back on the replacement by Friday. That only works if somebody else has a copy.</p>
<p>If you use any of those three, the account is not overhead. It is the product, and the sign-up form is the price of admission to a thing you actually want.</p>
<figure><img src="/images/what-an-account-buys.svg" alt="Two panels: what a notes-app account buys you — sync, sharing and recovery — set against what it costs you: an identity attached to your writing, a copy on somebody else&#x27;s server, and a deletion you have to request" width="1200" height="440" loading="lazy" decoding="async" /><figcaption>Both columns are real. The mistake is paying for the right one without getting the left.</figcaption></figure>
<h2 id="what-it-costs-stated-plainly">What it costs, stated plainly</h2>
<h3 id="an-identity-attached-to-your-writing">An identity attached to your writing</h3>
<p>Before the account, your notes were text on a disk. After it, they are text on a disk plus a record on a server saying this person wrote these things. That record is what makes sync possible, and it is also a thing that exists.</p>
<h3 id="a-copy-you-do-not-control">A copy you do not control</h3>
<p>Once the notes are on a server, the list of parties who can read them is longer than one: the company, anyone it is legally compelled to answer, anyone who breaches it, and whoever owns it after an acquisition nobody consulted you about. None of that requires bad intent. It is just what having a copy means.</p>
<h3 id="deletion-becomes-a-request">Deletion becomes a request</h3>
<p>With a local file, deleting is an act you perform. With an account, it is something you ask for and then trust. In Europe <a href="https://gdpr-info.eu/art-17-gdpr/">the GDPR's right to erasure</a> gives that request real legal weight, which is a genuine protection — and it is still a request, with a response time, made to somebody else.</p>
<p>None of these is a scandal. They are the ordinary mechanics of a service. They are simply not on the pricing page, and they apply whether or not you ever use sync.</p>
<h2 id="the-apps-that-skip-it">The apps that skip it</h2>
<p>Plenty of good software has decided the form is optional.</p>
<p><strong>Apple Notes can run entirely locally.</strong> Most people never find this, because iCloud is on by default — but Notes has an "On My Mac" account you can enable in its settings, and <a href="https://support.apple.com/guide/notes/add-or-remove-notes-accounts-not85d6f7b58/mac">notes stored there stay on your computer</a>, unreachable from your other devices and from iCloud.com. That is the whole trade in one checkbox: no account, no sync.</p>
<p><strong>Obsidian</strong> works on a folder of Markdown files with <a href="https://obsidian.md/">no account needed to use it</a>, selling sync separately to people who want it. That is the honest shape of this: the account appears when, and only when, you ask for the thing that needs one.</p>
<p>There is a small, healthy category of Mac apps built the same way — open it, write, no form. The pattern is always the same underneath: no sync, therefore no server, therefore no account.</p>
<h2 id="four-questions-that-settle-it-in-a-minute">Four questions that settle it in a minute</h2>
<p>If you are looking at an app and cannot tell:</p>
<ol><li><strong>Can you get to a blank note without typing an email address?</strong> If not, something is being created on a server before you have written anything.</li><li><strong>Where is the file?</strong> A real answer is a path you can open in Finder. "In the app" means somebody else knows and you do not.</li><li><strong>Turn the wifi off and use it for an hour.</strong> Everything should work — not most things.</li><li><strong>What happens if you stop paying, or stop using it?</strong> With a local file, nothing happens. With an account, find out before you need to know.</li></ol>
<p>That fourth one is the same question as <a href="/blog/what-happens-when-your-notes-app-shuts-down/">what happens when the app shuts down</a>, asked earlier and more cheaply.</p>
<h2 id="the-part-people-get-backwards">The part people get backwards</h2>
<p>The mistake is not choosing an account. It is choosing one by default and then never using what it bought.</p>
<p>If your notes are on one Mac, you never open them on your phone, you have never shared a page, and your backups are already handled — then the account is doing nothing for you at all. You are carrying the costs of a service you are not consuming, because a sign-up form was the first screen and nobody thinks to close it.</p>
<p>And if you do work across two machines all day, the opposite holds just as firmly: an account-less app will be a daily irritation, and no amount of privacy argument makes single-device sync appear. Choose the one that matches how you actually work, not the one that matches how you would like to feel about your software.</p>
<p>Cyanote is on the account-less side — one Mac, a local database, no sign-up, and consequently no sync. That is a real limitation and I would rather say it here than have you discover it on Tuesday. If it is the wrong trade for you, one of the apps above is a better answer, and there is no hard feeling in that.</p>]]></content:encoded>
      <category>Privacy</category>
      <category>Local-first</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>A clipboard manager for Mac without a subscription</title>
      <link>https://cyanote.app/blog/clipboard-manager-mac-without-subscription/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/clipboard-manager-mac-without-subscription/</guid>
      <pubDate>Thu, 13 Aug 2026 09:00:00 +0000</pubDate>
      <description>Most Mac clipboard managers now rent themselves to you monthly. Here is what the subscription is actually paying for, and what the one-time options give up.</description>
      <content:encoded><![CDATA[<p>There is a particular annoyance in discovering that the utility you want — the one that remembers what you copied — costs four dollars a month, forever, to hold a list of text on your own computer.</p>
<p>That is not a complaint about the developers. Some of these apps are excellent and the people who make them deserve to be paid. It is a complaint about the shape of the deal, which has drifted a long way from what the software does. A clipboard manager watches <a href="https://developer.apple.com/documentation/appkit/nspasteboard">a system pasteboard</a> and writes to a local database. It is one of the few categories where you can look at the running app and struggle to name the server it needs.</p>
<p>So it is worth being precise about when a subscription is buying you something and when it is buying you nothing.</p>
<p>If you are still at the earlier question — why the Mac forgets what you copied at all — <a href="/blog/clipboard-history-on-mac/">start there</a>.</p>
<h2 id="what-the-monthly-fee-is-actually-for">What the monthly fee is actually for</h2>
<p>There are three honest answers, and they are not the same.</p>
<p><strong>Sync.</strong> If your clipboard history follows you from a laptop to a desktop to a phone, there is a server in the middle holding it, and somebody pays for that server every month. This is a real cost and a real feature. It is also the one that should give you the longest pause, because it means everything you copy — including the things you copied out of a password manager — is leaving your machine.</p>
<p><strong>Ongoing development.</strong> macOS changes every year and breaks things. Somebody has to fix them. This is real work, but it is worth noticing that it argues for charging <em>new</em> customers, not for charging the same customer rent in perpetuity for a version that already works.</p>
<p><strong>Because it worked for everyone else.</strong> The least satisfying answer, and frequently the true one. Subscriptions became the default pricing model across all software, and a category that did not need one adopted it anyway.</p>
<p>The first is a genuine trade. The third is not.</p>
<h2 id="what-you-give-up-buying-once">What you give up buying once</h2>
<p>Being fair to the other side: one-time purchases have failure modes, and pretending otherwise is how people end up disappointed.</p>
<p>The app can be abandoned. A developer who has already been paid has no recurring reason to keep going, and plenty of one-time apps have quietly stopped at the last macOS version that worked. A subscription at least aligns somebody's rent with your software continuing to run.</p>
<p>"Buy once" often means "buy this major version". Paid upgrades every two years are a legitimate model, but they are not the same promise as the one on the marketing page, and the difference tends to surface at version 3.</p>
<p>And the smaller the developer, the more the whole thing rests on one person staying interested. That is true whichever way they charge you — but with a subscription you find out sooner, because you notice when the charges stop being worth it.</p>
<figure><img src="/images/clipboard.webp" alt="A clipboard manager on macOS showing pinned snippets and a searchable copy history" width="1400" height="912" loading="lazy" decoding="async" /><figcaption>Pinning and search are the two features that turn a history into a tool.</figcaption></figure>
<h2 id="what-to-check-before-you-pay-either-way">What to check before you pay either way</h2>
<p>Regardless of the pricing model, the same five questions decide whether a clipboard manager is any good:</p>
<p><strong>Where the history is stored.</strong> Local database, or somebody else's server. This is the first question, not the last.</p>
<p><strong>Whether it is searchable.</strong> A list of the last ten items is a convenience. A searchable history of everything is a different tool.</p>
<p><strong>What it does with sensitive copies.</strong> Recognising a password-manager copy and declining to keep it is the mark of an app that has thought about this.</p>
<p><strong>Whether it holds more than text.</strong> Images, files and colours all travel through the clipboard.</p>
<p><strong>What happens on the day it stops.</strong> Can you get the history out? For a local app: where is the file, and can you read it without the app?</p>
<p>That last one matters more for a one-time purchase than a subscription, because a one-time purchase is the one you expect to still be using in five years.</p>
<h2 id="the-honest-version-of-this-page">The honest version of this page</h2>
<p>This blog belongs to Cyanote, which has a clipboard manager in it and costs $10 once. So take the following as an interested party's summary rather than a neutral roundup.</p>
<p>If you want the best clipboard manager on the Mac and nothing else, you should probably buy a dedicated one. Maccy is free and open source and very good. Paste is polished and syncs across devices, and it charges for the servers that make that work — a subscription, or $89.99 once if you would rather not rent it, which is the honest version of the trade described above. Raycast bundles clipboard history into a launcher. Any of those will out-feature a clipboard that sits inside a notes app, because that is their whole product and this is one of five.</p>
<p>Paste is the one people ask about most, so it has <a href="https://cyanote.app/compare/paste-alternative/">a page of its own</a> working through the prices and the cases where it is the better buy.</p>
<p>What a bundled one gets you is the thing you copied out of a note being one hotkey from the note you copied it from, and one purchase covering both. Whether that is worth more than depth is genuinely a matter of what you are trying to stop doing.</p>
<h2 id="the-short-version">The short version</h2>
<p>If the app syncs, a subscription is paying for something real, and the question I would ask myself is whether I want that something on a server at all. If it does not sync, ask what the monthly charge is for, and be unsatisfied with a vague answer.</p>
<p>The clipboard is a small tool that you touch two hundred times a day. It is worth paying for. It is not obviously worth renting.</p>]]></content:encoded>
      <category>Clipboard</category>
      <category>One-time purchase</category>
      <category>Mac</category>
    </item>
    <item>
      <title>Personal Kanban: a board for your own to-do list</title>
      <link>https://cyanote.app/blog/personal-kanban-board/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/personal-kanban-board/</guid>
      <pubDate>Tue, 11 Aug 2026 09:00:00 +0000</pubDate>
      <description>A Kanban board built for a team does not survive being handed to one person. Here is which parts translate, which columns to use, and when a plain list wins.</description>
      <content:encoded><![CDATA[<p>Kanban started on a factory floor. Taiichi Ohno's system at Toyota — <a href="https://global.toyota/en/company/plant-tours/production-system/">introduced as a production-control method in 1954</a> — used physical cards — <em>kanban</em> means signboard — to signal that a station was ready for more work. Nothing was produced until something downstream asked for it. Software teams borrowed it in the 2000s, and somewhere after that it arrived on individual to-do lists, mostly in the form of three columns labelled To Do, Doing and Done.</p>
<p>That last translation loses the thing that made it work. What follows is what survives the trip to one person, and what to do instead of the three columns everyone starts with.</p>
<h2 id="the-idea-that-actually-transfers">The idea that actually transfers</h2>
<p>Kanban's core insight is not columns. Columns are how you see it. The insight is <strong>limiting how much is in progress at once.</strong></p>
<p>On a factory line the reason is inventory: half-finished work sitting between stations is money doing nothing. For a person, the equivalent is more familiar. Eleven things started, none finished, and a nagging sense of being busy without anything shipping. Every one of those started things costs you something to keep in your head, and the cost is charged whether or not you touch it that day.</p>
<p>A board makes that visible in a way a list cannot. A list of thirty tasks looks the same whether you have started three of them or all thirty. A board with fourteen cards in Doing looks obviously wrong from across the room.</p>
<p>That is the whole benefit, and it is a real one. If you take nothing else from Kanban, take the limit.</p>
<h2 id="why-to-do-doing-done-disappoints-one-person">Why To Do / Doing / Done disappoints one person</h2>
<p>The standard three columns come from team boards, where they answer a genuine question: which stage of a shared process is this in, and who has it now? Design, then build, then review, then ship. The columns are handoffs.</p>
<p>Working alone, you have no handoffs. Everything is yours at every stage. So the middle column stops describing a stage and starts describing "things I have opened", which is not information — you knew that. Meanwhile "To Do" becomes a single undifferentiated wall of forty cards, which is a list with extra scrolling and less detail per line.</p>
<p>The columns are answering a question you don't have.</p>
<figure><img src="/images/board.webp" alt="A personal kanban board with tasks as cards in colour-coded priority columns" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The same tasks as cards. The columns are the whole design decision.</figcaption></figure>
<h2 id="columns-worth-using-instead">Columns worth using instead</h2>
<p>For one person, the useful axis is usually <strong>when</strong>, or <strong>how much this matters</strong>, rather than what stage it is in.</p>
<p><strong>By commitment.</strong> Today · This week · Later · Someday. Cards move leftward as they become real. This is the version most people find sticks, because it maps onto the actual decision you make each morning, which is not "what stage is this in" but "am I doing this today or not".</p>
<p><strong>By priority.</strong> High · Medium · Low · No priority. Blunter, and genuinely good if your work arrives as a stream of requests from other people and the hard part is triage rather than scheduling.</p>
<p><strong>By energy.</strong> Deep work · Shallow · Errands · Waiting on someone. Odd-looking, and effective if your days vary a lot. At 4pm on a Thursday you do not need your most important task, you need one you can actually do, and this is the only layout that answers that.</p>
<p>Whichever you pick, keep <strong>Waiting</strong> as its own column. Work that is blocked on another person is not done and is not yours to do, and it is the single most common thing to lose track of. A column full of them, reviewed weekly, is worth more than most productivity advice.</p>
<h2 id="set-the-limit-and-make-it-hurt-slightly">Set the limit and make it hurt slightly</h2>
<p>Pick a number for how many cards may be in your active column at once. Three is a good starting point for most people; five if your work is genuinely interrupt-driven.</p>
<p>The rule that gives it teeth: <strong>to start something new when you are at the limit, something has to come out.</strong> Not "finish it" necessarily — you can push a card back to This week, or to Waiting if it is blocked. But you have to make the swap deliberately and see yourself do it.</p>
<p>This is uncomfortable at first, which is the point. The discomfort is information you were previously ignoring. Almost everyone who tries this discovers their real number of simultaneous commitments was somewhere near eleven and that it had been that way for months.</p>
<h2 id="small-things-that-make-a-board-work">Small things that make a board work</h2>
<ul><li><strong>One card, one outcome.</strong> "Website" is not a card; it is a column pretending to be one. If you cannot say what "done" looks like in a sentence, it is a project and its next action is the card.</li><li><strong>Done is not a graveyard.</strong> Keep the last week or two visible, then archive. Seeing a fortnight of finished work is one of the few honest counterweights to the feeling of never getting anywhere. Keeping eight months of it is just a slow list.</li><li><strong>A due date is a promise, not a wish.</strong> If most cards have dates and most dates pass unremarked, the dates have stopped meaning anything and you have lost the ability to see the ones that are real.</li><li><strong>Review the board weekly.</strong> Boards rot faster than lists, because a stale card looks identical to a live one. Ten minutes a week to move things back and delete what you were never going to do.</li></ul>
<h2 id="when-a-list-is-simply-better">When a list is simply better</h2>
<p>Boards are not universally superior, and the honest limits are worth stating.</p>
<p>If your work is a long, flat queue of similar items — a hundred small edits, a reading list, invoices to send — a list wins. It shows more per screen, sorts instantly, and the spatial layout of a board buys you nothing when every item is the same shape.</p>
<p>If most of your commitments are appointments, a calendar wins. Kanban has no opinion about time and no way to show that two things collide at 3pm on Thursday.</p>
<p>And if you have fewer than about ten live tasks, a board is ceremony. The visualisation earns its keep when there is enough work that you cannot hold the shape of it in your head. Below that, you can, and the cards are just something else to maintain.</p>
<p>The answer I keep coming back to is not one of these. It is the same tasks seen as a list when you are working through them and as a board when you are deciding what to work on — a decision that pairs well with <a href="/blog/weekly-review-in-20-minutes/">a weekly pass over the whole lot</a> — which is a question about the view, not about the tool.</p>
<p>That is the bet Cyanote makes with its to-dos: one set of tasks, a list when you are working through them and a board when you are deciding what to work on, with priorities and due dates carried between the two.</p>]]></content:encoded>
      <category>Kanban</category>
      <category>Method</category>
      <category>Tasks</category>
    </item>
    <item>
      <title>How to password-protect a note on your Mac</title>
      <link>https://cyanote.app/blog/password-protect-notes-on-mac/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/password-protect-notes-on-mac/</guid>
      <pubDate>Tue, 11 Aug 2026 09:00:00 +0000</pubDate>
      <description>Locking a note, encrypting a disk and using a login password protect against three different things. Here is which one stops what, and where each of them stops.</description>
      <content:encoded><![CDATA[<p>"Password-protect a note" sounds like one feature. It is at least three, they defend against different threats, and having one of them does not give you the others. People generally discover this in the wrong order.</p>
<p>Here is what each layer actually does on a Mac, in the order they stop working.</p>
<h2 id="the-three-layers-and-what-each-one-stops">The three layers, and what each one stops</h2>
<p><strong>Your login password</strong> stops someone who walks up to your Mac while it is asleep. It does nothing at all once you are logged in — every app you have is sitting there open, including whatever your notes are in. Useful, and the weakest of the three.</p>
<p><a href="https://support.apple.com/guide/mac-help/protect-data-on-your-mac-with-filevault-mh11785/mac"><strong>FileVault</strong></a> encrypts the whole disk. It stops someone who has your Mac in their hands and it is powered off — a thief, a lost laptop, a machine sent for repair. Without it, pulling the drive out and reading it on another computer is genuinely trivial. With it, the contents are unreadable without the key.</p>
<p>Its limit is the one people miss: <strong>FileVault protects a Mac that is off.</strong> Once you have logged in, the disk is decrypted and everything on it is readable by anything running as you. FileVault is not protecting your notes from your own running Mac.</p>
<p><strong>A locked note</strong> is the only one of the three that still means something while you are sitting there logged in. It is per-note encryption, and the note stays unreadable until you supply the password — including from someone borrowing your unlocked laptop for five minutes, or looking over your shoulder while you have the app open.</p>
<p>You want all three. They are not alternatives.</p>
<figure><img src="/images/note-protection-layers.svg" alt="Three stacked layers: FileVault stops someone holding a powered-off Mac, the screen lock stops someone at an unattended Mac, a locked note stops someone already using your unlocked Mac" width="1200" height="480" loading="lazy" decoding="async" /><figcaption>Three layers, three different intruders. They stack; none replaces another.</figcaption></figure>
<h2 id="how-do-you-lock-a-note-in-apple-notes">How do you lock a note in Apple Notes?</h2>
<p>Apple Notes has <a href="https://support.apple.com/guide/notes/lock-your-notes-not28c5f5468/mac">built-in locking</a>, and for a lot of people it is enough.</p>
<p>Select a note, then <strong>File → Lock Note</strong>, or right-click the note in the list and choose Lock Note. macOS will ask you to set things up the first time. Recent versions let you use your Mac's login password rather than a separate Notes password, which is a meaningful improvement — a separate Notes password was the single biggest cause of permanently lost notes in that app.</p>
<p>Two things about it are worth knowing before you rely on it:</p>
<p><strong>If you forget the password, the note is gone.</strong> This is not Apple being unhelpful; it is what encryption means. There is no reset that recovers the contents, and support cannot open it for you. If you set a Notes-specific password, put it in your password manager the same minute you create it.</p>
<p><strong>Locking is per-note and you have to remember to do it.</strong> The sensitive thing usually gets written first and locked later, if at all. The note that needed protecting is often the quick one you typed in a hurry.</p>
<h2 id="what-encrypted-should-mean-when-an-app-claims-it">What "encrypted" should mean when an app claims it</h2>
<p>Any note app can put a password prompt in front of a note. That is a UI, and on its own it protects against nothing — if the text is still sitting in plain form in the app's database, anybody who opens that file with the right tool reads it without ever seeing your prompt.</p>
<p>The question to ask is whether the note is <strong>encrypted at rest</strong>: unreadable in storage, decrypted only when you supply the key. The tell is the one described above — if the app can show you a preview of a locked note, or search inside it while locked, then it is not encrypted, it is hidden.</p>
<p>A quick, genuinely useful check for any app that claims per-note locking:</p>
<ul><li>Lock a note containing a distinctive phrase.</li><li>Quit the app.</li><li>Search the app's data folder for that phrase from the Terminal.</li></ul>
<p>If the phrase turns up, the lock is decoration. If it does not, the encryption is real.</p>
<h2 id="where-are-your-notes-actually-stored">Where are your notes actually stored?</h2>
<p>This part is worth knowing regardless of which app you use, because it determines who else can read them.</p>
<p>A note in a cloud-synced app exists in at least three places: your Mac, the provider's servers, and every other device signed in. Locking on your Mac does not necessarily mean the copy on the server is locked, and the provider's privacy policy — not your password — is what governs that copy. Apple encrypts locked Notes end-to-end, so the server copy is genuinely unreadable to Apple; not every provider does the same, and most are vague about it.</p>
<p>A note in a local-first app exists in one place: a database on your own disk. There is no server copy to reason about, which removes an entire category of question. The trade is that there is also no server copy to restore from, which makes backups your job rather than someone else's.</p>
<p>Neither is automatically safer. They fail differently, and the failure you should plan for is the one you can actually imagine happening to you.</p>
<h2 id="the-setup-i-would-actually-use">The setup I would actually use</h2>
<p>If you want a short version:</p>
<ol><li><strong>Turn on FileVault.</strong> System Settings → Privacy &amp; Security → FileVault. Store the recovery key somewhere that is not the Mac. This is the highest-value fifteen minutes of security work available on a Mac and most people have never opened that screen.</li><li><strong>Set the screen to lock quickly.</strong> A screen that locks after an hour is a screen that does not lock.</li><li><strong>Lock the handful of notes that genuinely warrant it</strong> — recovery codes, medical details, anything about other people who did not choose to be in your notes app.</li><li><strong>Put the password in your password manager</strong>, immediately, before you close the dialog.</li><li><strong><a href="/blog/backing-up-local-notes/">Back up</a>.</strong> Encryption increases the number of ways you can lose things permanently. Time Machine, or an export somewhere else, is what makes that recoverable.</li></ol>
<p>If you are choosing an app for this rather than staying with Apple Notes: Cyanote can lock any individual note behind a password, on top of FileVault rather than instead of it — the layers in the first section are not alternatives.</p>
<p>The point of locking a note is not that your notes are a secret. It is that a few of them are somebody else's secret, and those deserve better than being one open laptop away.</p>]]></content:encoded>
      <category>Privacy</category>
      <category>Security</category>
      <category>macOS</category>
    </item>
    <item>
      <title>Note apps without a subscription</title>
      <link>https://cyanote.app/blog/note-apps-without-a-subscription/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/note-apps-without-a-subscription/</guid>
      <pubDate>Tue, 11 Aug 2026 09:00:00 +0000</pubDate>
      <description>Almost every note app is rented now. Here is why that happened, what a one-time purchase should actually include, and the questions to ask before you pay for either.</description>
      <content:encoded><![CDATA[<p>Somewhere in the last decade, note-taking became a rental. The apps most people use now bill monthly, and the ones that don't are increasingly the exception rather than the default. If you have gone looking for a note app you can simply buy, you will have noticed how short the list has become.</p>
<p>This is not a post about subscriptions being a scam. Some of them are entirely fair, and I will make that case below before making the other one. It is a post about what you are actually paying for in each model, and what a one-time purchase has to include before it means anything.</p>
<h2 id="why-note-apps-went-to-subscriptions">Why note apps went to subscriptions</h2>
<p>The honest reason is that most of them run servers.</p>
<p>If an app syncs your notes between devices, somebody is paying for storage, for bandwidth, and for the engineers who keep it all running at 3am. That cost recurs every month you keep using it, whether or not the app gained a single feature. A one-time payment cannot fund an ongoing cost — the maths simply doesn't work, and an app that tried would either degrade or disappear.</p>
<p>There is a second reason, less often stated: subscriptions produce predictable revenue, and predictable revenue is what lets a company plan. A one-time-purchase app has to keep finding new customers forever to pay yesterday's salaries. That pressure is real, and it is why so many apps that started as a purchase ended up as a rental.</p>
<p>So if an app genuinely runs infrastructure for you, a subscription is the honest price of it. The question worth asking is whether it runs infrastructure for you.</p>
<h2 id="what-you-are-renting">What you are renting</h2>
<p>The uncomfortable part of the model is what happens when you stop paying.</p>
<p>With most subscription note apps, the answer is that you lose access to the app but your notes are still "yours" in the sense that you can export them. That is better than nothing. It is also less reassuring than it sounds, because export quality varies enormously — a folder of Markdown files with your structure intact is a real escape route, and a single JSON blob with proprietary block references in it is a hostage note.</p>
<p>Worth knowing before you commit, not after:</p>
<ul><li>Can you export everything, including attachments, in a format something else can open?</li><li>Does the export keep your links between notes working, or does it flatten them?</li><li>If you stop paying, is the app read-only, or does it lock you out entirely?</li><li>Is the export a feature of the free tier, or does cancelling remove the tool you need to leave?</li></ul>
<p>An app that answers all four well is one you can leave, which is the only thing that makes staying a choice.</p>
<h2 id="what-buy-once-has-to-include-to-mean-anything">What "buy once" has to include to mean anything</h2>
<p>The one-time purchase has its own failure modes, and they are worth naming, because "pay once" on a pricing page can hide several different deals.</p>
<h3 id="free-updates-not-just-free-patches">Free updates, not just free patches</h3>
<p>The oldest trick in the category is selling version 1, then selling version 2 eighteen months later to the same people. That is a subscription with extra steps and worse communication. The version that means something is the one where updates keep coming and keep being included.</p>
<h3 id="no-feature-gates">No feature gates</h3>
<p>If the purchase unlocks the app but the interesting parts are separate purchases, you did not buy the app. Check whether the price on the page is the price of everything.</p>
<h3 id="it-keeps-working-if-the-company-stops">It keeps working if the company stops</h3>
<p>This is the one that actually matters, and it is a question about architecture rather than intent. An app that stores your notes on your own machine and does not check in with a server keeps working the day after its developer walks away. An app that phones home to validate your licence every launch stops working the day that endpoint goes dark, no matter how sincerely the developer promised otherwise.</p>
<p>Ask specifically: does it need the internet to start? Does it check my licence more than once? Where exactly are my notes on this disk?</p>
<h3 id="a-plain-data-format-underneath">A plain data format underneath</h3>
<p>Your notes will outlive the app you write them in — that is true of every app, including good ones. The thing that determines whether that is a migration or a loss is whether the format underneath is something another program can read.</p>
<h3 id="the-two-models-side-by-side">The two models, side by side</h3>
<p>Set out together, they differ in ways that have nothing to do with which one is better:</p>
<div class="table-scroll"><table><thead><tr><th scope="col">What differs</th><th scope="col">Subscription, in the cloud</th><th scope="col">One-time purchase, on your machine</th></tr></thead><tbody><tr><td>What the money pays for</td><td>Servers, sync, storage, and the people who keep them up</td><td>Development, once</td></tr><tr><td>When you stop paying</td><td>The app locks, or drops to read-only. Export before you cancel, not after</td><td>Nothing happens. It keeps working</td></tr><tr><td>If the company closes</td><td>The service ends with it; you have whatever you exported</td><td>The copy on your disk keeps running</td></tr><tr><td>Working offline</td><td>Partly. Sync needs the network, and some apps need it just to sign in</td><td>Entirely</td></tr><tr><td>Where the notes are</td><td>On someone else's servers, in their format</td><td>On your own disk, in a file you can point at</td></tr><tr><td>Sync between devices</td><td>Yes — this is the thing you are paying for</td><td>No, unless you arrange it yourself</td></tr><tr><td>Cost over five years</td><td>Recurring, and it can be raised</td><td>Fixed at whatever you paid on day one</td></tr></tbody></table></div>
<p>Neither column is the winning one. The top row is the whole argument: if the money is buying servers you actually use, the left column is a fair deal. If it isn't, you are paying rent on software that runs on your laptop.</p>
<figure><img src="/images/subscription-server-test.svg" alt="A decision diagram asking what the monthly fee is doing with a server, branching into real server work versus software that runs on your own computer" width="1200" height="500" loading="lazy" decoding="async" /><figcaption>The one question that separates a subscription that buys something from one that charges rent.</figcaption></figure>
<h2 id="the-case-for-buying-when-the-app-is-local">The case for buying, when the app is local</h2>
<p>Here is where the two halves of this join up.</p>
<p>An app that keeps everything on your own computer — <a href="https://www.inkandswitch.com/local-first/">the local-first model</a> — has no servers to pay for. There is no per-user monthly cost to recover, because there is no per-user monthly cost. The development work is real and ongoing, but that is funded by new customers, not by charging the existing ones rent for storage that doesn't exist.</p>
<p>That is why the local-first corner of the market still sells one-time licences while the cloud corner mostly cannot. It is not a moral difference between the developers. It is a difference in what the software actually costs to run.</p>
<p>So here is the test I apply when I am comparing two apps and one is $8 a month and the other is a single payment: ask what the monthly one is doing with a server. (<a href="/blog/what-local-first-means-for-your-notes/">What it means for an app to not need one</a> is worth understanding before you decide.) If the answer is "syncing across my devices, sharing with my team, and running search across ten years of notes", the subscription is buying you something. If the answer is "not much, really", you are paying rent on software that lives on your laptop.</p>
<p>For the sake of declaring it: Cyanote, the app this blog belongs to, is one of the one-time ones — $10, local, no account, no server to pay for. That is the argument above applied to itself, and you should hold it to the same test.</p>
<p>Both models can be honest. Only one of them should be the default, and it isn't the one that became one.</p>]]></content:encoded>
      <category>Pricing</category>
      <category>Local-first</category>
      <category>Buying advice</category>
    </item>
    <item>
      <title>Folders, tags, or search: how to organise notes</title>
      <link>https://cyanote.app/blog/how-to-organise-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/how-to-organise-notes/</guid>
      <pubDate>Tue, 11 Aug 2026 09:00:00 +0000</pubDate>
      <description>Folders, tags and search solve three different problems, and most note systems collapse because they use the wrong one. Here is what each is actually good at.</description>
      <content:encoded><![CDATA[<p>Reorganising your notes is the most satisfying way to avoid writing any. It produces visible progress, it feels like care, and at the end of an afternoon of it you have exactly as many ideas as you started with, arranged more neatly.</p>
<p>That is worth saying up front, because most advice about organising notes assumes the goal is a tidy structure. It isn't. The goal is that in eight months, when you half-remember something, you can find it in under a minute. Every system below should be judged against that and nothing else.</p>
<p>There are three tools, and they are not competing versions of the same thing.</p>
<h2 id="folders-one-home-one-decision">Folders: one home, one decision</h2>
<p>A folder puts each note in exactly one place. That constraint is the entire feature — it is what makes a folder tree navigable, and it is what makes it painful.</p>
<p>Folders are genuinely good when a note belongs to something with a beginning and an end. A client, a trip, a house move, a course. The project starts, notes accumulate, the project finishes and the whole folder goes quiet. You will never wonder whether the plumber's quote belongs under "House" — that is not a hard call.</p>
<p>Folders go wrong the moment a note honestly belongs in two places. A note about pricing your freelance work is both "Freelance" and "Money". You will file it in one, look for it in the other, and conclude the system is broken. It isn't; you asked a filing cabinet to hold something in two drawers.</p>
<p>The failure mode to watch for: a folder tree more than about three levels deep. Deep trees are a sign you are encoding facets — status, topic, year — as nesting, and facets are what tags are for.</p>
<h2 id="tags-many-labels-one-note">Tags: many labels, one note</h2>
<p>Tags invert the constraint. A note can carry as many as you like, so the two-places problem goes away.</p>
<p>The cost is that tags require you to be consistent with yourself over years, which is a genuinely hard thing to be. You tag something <code>#finance</code> in March and <code>#money</code> in September. Neither is wrong, and now half your notes are invisible to each search. Tag lists sprawl, and a tag list with two hundred entries is not an index, it is a second problem.</p>
<p>Tags work best when you keep the vocabulary small enough to hold in your head — somewhere under about fifteen. That usually means using them for one axis and one only. Status is the classic good use: <code>#waiting</code>, <code>#someday</code>, <code>#reference</code>. These are things a note <em>is</em> right now, they change over time, and there are only a few of them.</p>
<p>Using tags for topic is where people drown, because topics are unbounded. Every new subject you encounter is a candidate tag, and nothing ever tells you to stop.</p>
<h2 id="is-search-on-its-own-enough">Is search on its own enough?</h2>
<p>Full-text search across everything you have ever written is the reason all of this is less important than it used to be. If you can type a distinctive phrase and land on the note, the folder it sits in stops mattering very much.</p>
<p>This genuinely changes the correct answer. Most of the elaborate systems people inherit were designed for tools where finding things was expensive. When retrieval is nearly free, the effort belongs at the moment of writing, not the moment of filing.</p>
<p>The limit of search is precise: it only finds words you actually wrote. If you search for "the thing the accountant said about the car" and the note says "vehicle expense, business use proportion", you will not find it. Search does not know what you meant.</p>
<p>There is also a stubborn human limit, and it is worth knowing before you throw your folders away. Researchers studying how people retrieve their own files have found repeatedly that, even when the search engine is good, people navigate to a known location first and search only as a last resort — and that when they do search, it takes them longer and fails more often. One <a href="https://www.nature.com/articles/srep14719">neuroimaging study</a> found that moving through a folder tree recruits the same brain structures used for navigating physical space, which is a fair explanation for why the habit outlives every improvement to search. So the honest version of this section is not "search replaced folders". It is that search removed the <em>penalty</em> for filing badly, while most people still reach for a place before they reach for a query.</p>
<p>Which points at the highest-leverage habit in this entire post, and it has nothing to do with structure.</p>
<p>The reason this blog's app leads with full-text search across every note rather than a folder tree is the same one: Cyanote assumes you will search, and treats folders as somewhere to put things afterwards.</p>
<figure><img src="/images/note.webp" alt="A notes app sidebar with a search field above the note list, beside an open note" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Search sits above the list, not behind a folder tree — which is the whole argument in one screenshot.</figcaption></figure>
<h2 id="what-should-you-name-a-note">What should you name a note?</h2>
<p>The title is the one piece of metadata you fill in every single time, without deciding to. It is free. And most people waste it.</p>
<p>A note called <code>Meeting</code> is unfindable. <code>Notes</code> is worse. <code>Untitled 47</code> is a small future tax you have chosen to pay.</p>
<p>Write the title as the sentence you would say to someone describing the note eight months from now. Not "Insurance" but "Why we switched car insurers and what it cost". Not "Ideas" but "Ideas for the workshop, from the walk in February". The second version contains the distinctive words you will actually type into a search box, because they are the words your memory kept.</p>
<p>This one change does more for retrieval than any folder structure, and it costs four extra seconds.</p>
<h2 id="links-the-option-people-forget">Links: the option people forget</h2>
<p>The fourth tool is pointing one note at another. Where folders and tags describe categories, links describe relationships — this note came out of that meeting, this decision replaced that one.</p>
<p>Links are strongest for material that grows over time: an ongoing topic where notes refer back to each other, a decision log, anything where the connection between two notes is more informative than the category both sit in. They are overkill for a receipt.</p>
<p>A word of caution, since this is where note-taking gets faddish: an elaborate web of links is the most enjoyable form of the procrastination this post opened with. Link things when the connection is real and you would want to follow it. Do not link things to build a graph.</p>
<h2 id="a-setup-that-survives-contact-with-real-life">A setup that survives contact with real life</h2>
<p>If you want something concrete:</p>
<ul><li><strong>Search is the primary way you find things.</strong> Assume it, and write titles accordingly.</li><li><strong>A shallow folder for each live project</strong>, plus one for reference and one for archive. Two levels. When a project ends, move the folder to archive rather than tidying it.</li><li><strong>Tags for status only</strong> — the handful of states a note can be in. Not topics.</li><li><strong>Links where a relationship genuinely exists</strong>, and nowhere else.</li><li><strong>Back the archive up.</strong> An archive you cannot recover is not an archive; <a href="/blog/backing-up-local-notes/">the backup side of this</a> takes an afternoon once.</li><li><strong>Archive rather than delete.</strong> Search makes an archive cheap; a note you cannot find is already effectively deleted, and one you deleted is not coming back.</li></ul>
<p>The test I hold any of this to is not whether it looks organised. It is whether, in eight months, you find the thing. Everything that does not serve that is a hobby, and it is fine to have hobbies — just don't confuse one with a system.</p>]]></content:encoded>
      <category>Method</category>
      <category>Organisation</category>
      <category>How-to</category>
    </item>
    <item>
      <title>How to see clipboard history on a Mac</title>
      <link>https://cyanote.app/blog/clipboard-history-on-mac/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/clipboard-history-on-mac/</guid>
      <pubDate>Tue, 11 Aug 2026 09:00:00 +0000</pubDate>
      <description>macOS keeps exactly one thing on the clipboard and forgets the rest. Here is what the system really offers, why nothing brings back what you copied, and what does.</description>
      <content:encoded><![CDATA[<p>The short answer is the one nobody wants: macOS has no clipboard history. There is no key combination that shows you the last ten things you copied, because the last ten things you copied no longer exist. The Mac clipboard holds one item — <a href="https://developer.apple.com/documentation/appkit/nspasteboard">the general pasteboard</a>, in Apple's own terms. Copy something else and the previous one is gone — not archived, not recoverable, gone.</p>
<p>If you came here from Windows this is genuinely surprising. Windows has had <code>Win</code> + <code>V</code> since 2018, and it shows a scrollable list of recent copies. There is no macOS equivalent, and there never has been.</p>
<p>What follows is what the system actually gives you, why the gap exists, and what to do about it.</p>
<h2 id="does-macos-have-a-clipboard-history">Does macOS have a clipboard history?</h2>
<p>There are three things people mistake for clipboard history. None of them is.</p>
<h3 id="finder-s-clipboard-viewer">Finder's clipboard viewer</h3>
<p>Open Finder, then <strong>Edit → Show Clipboard</strong>. A small window appears showing what is on the clipboard right now. That is the whole feature. It is a window onto the single current item, useful for checking whether a copy worked and useless for getting back anything older.</p>
<h3 id="universal-clipboard">Universal Clipboard</h3>
<p>Copy on your Mac, paste on your iPhone. It is genuinely good and it is not history — it moves the one current item between your devices and expires it after a short while. There is no list, and nothing is stored.</p>
<h3 id="undo">Undo</h3>
<p><code>Cmd</code> + <code>Z</code> will bring back text you deleted in a document. It has nothing to do with the clipboard and will not help you recover something you copied over.</p>
<h2 id="why-the-gap-exists">Why the gap exists</h2>
<p>The clipboard is a system-wide scratch space that every app can read. That is what makes it useful, and it is also why keeping a history of it is a genuinely uncomfortable feature to ship by default.</p>
<p>Think about what passes through your clipboard in an ordinary week. Passwords, on the way from a password manager to a login form. A two-factor code. Your address. A card number. An API key. A private link that grants access to whoever holds it. All of it, sitting in the same buffer as the URL you copied to send to a friend.</p>
<p>A clipboard history turns that stream into a record. That is exactly what makes it useful and exactly what makes it a liability, and how a given tool handles that distinction is the thing worth paying attention to.</p>
<h2 id="the-moments-where-it-actually-bites">The moments where it actually bites</h2>
<p>Nobody wants clipboard history in the abstract. People want it because of specific, recurring, small disasters:</p>
<ul><li>You copy a paragraph, then copy something else to look it up, and the paragraph is gone.</li><li>You paste the same three snippets — an address, a bank reference, a boilerplate reply — thirty times a week, and each one means going and finding it again.</li><li>You copy a code from a text message, get distracted, copy a link, and now you need the code again and it has expired.</li><li>You are moving content between two documents and every single trip is one copy and one paste, because you cannot carry more than one thing at a time.</li></ul>
<p>None of these is a crisis. Together they are one of those small frictions that is invisible until it stops.</p>
<figure><img src="/images/clipboard.webp" alt="Cyanote&#x27;s clipboard history: every copy kept in a searchable list, with a type icon per item" width="1400" height="912" loading="lazy" decoding="async" /><figcaption>A clipboard history is just a list — the design questions are where it is kept and what it refuses to keep.</figcaption></figure>
<h2 id="what-does-a-clipboard-manager-actually-do">What does a clipboard manager actually do?</h2>
<p>A clipboard manager is a small background app that watches the clipboard and keeps what passes through it. When you want something back, you open it with a hotkey, find the item, and it goes back on the clipboard ready to paste.</p>
<p>That is the whole idea. The differences between them are the things worth checking:</p>
<h3 id="where-the-history-is-stored">Where the history is stored</h3>
<p>This is the first question, not the last. A clipboard manager sees everything you copy. If it syncs that to a server, everything you copy is now on somebody else's computer. If it keeps the history in a local database on your own machine, it isn't. Both designs exist and the marketing rarely leads with which one you are getting.</p>
<h3 id="whether-it-is-searchable">Whether it is searchable</h3>
<p>A list of the last few items is a convenience. A searchable history of everything is a different tool — you stop thinking of it as "undo for copying" and start using it as a place things can be found later.</p>
<h3 id="what-it-does-with-sensitive-copies">What it does with sensitive copies</h3>
<p>Good behaviour: recognising when a password manager put something on the clipboard and declining to keep it. Also good: letting you delete an individual item, and clear the lot in one action.</p>
<h3 id="pinned-items">Pinned items</h3>
<p>The three snippets you paste constantly should not scroll away under a week of ordinary copying. Pinning is what turns a history into a set of shortcuts.</p>
<h3 id="whether-it-holds-more-than-text">Whether it holds more than text</h3>
<p>Images, files and colours all travel through the clipboard. A manager that keeps only text quietly drops the rest.</p>
<p>Disclosure, since this blog belongs to one: Cyanote keeps its clipboard history in a local database on your Mac, searchable, with pinning for the snippets you paste constantly. It is one of five things it does rather than the only one — which is either the point or the drawback, depending on what you came for.</p>
<p>If the subscription question is what is actually holding you up, that is <a href="/blog/clipboard-manager-mac-without-subscription/">its own decision</a>. And if you are weighing this against Paste specifically, <a href="/compare/paste-alternative/">the two are compared here</a>, prices included.</p>
<h2 id="before-you-install-one">Before you install one</h2>
<p>Two things I would do regardless of which tool you choose.</p>
<p>Check what it wants access to. A clipboard manager needs to read the clipboard, and that is a reasonable thing for it to ask. It does not need an account, and it does not need to send anything anywhere. If it wants both, ask what for.</p>
<p>And decide what you want it to forget. The most useful setting in any clipboard manager is the one that stops it keeping the things you would rather it didn't — whether that is a password-manager exclusion, an app blocklist, or a history that expires.</p>
<p>The gap in macOS is real and it is not closing. But it is one of the few missing features where the fix is genuinely small, sits out of the way, and pays you back the first afternoon you use it.</p>]]></content:encoded>
      <category>Clipboard</category>
      <category>macOS</category>
      <category>How-to</category>
    </item>
    <item>
      <title>How to back up notes that live on your own computer</title>
      <link>https://cyanote.app/blog/backing-up-local-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/backing-up-local-notes/</guid>
      <pubDate>Tue, 11 Aug 2026 09:00:00 +0000</pubDate>
      <description>Cloud apps hand you backup as a side effect. Local notes do not, and sync is not a substitute. Here is what actually protects them, and how to know it works.</description>
      <content:encoded><![CDATA[<p>Keeping your notes on your own computer buys you a lot: they work offline, nobody else can read them, and no company can lose them, price you out, or shut down. It also hands you back a job the cloud was quietly doing on your behalf, and most people do not notice until the day it matters.</p>
<p>This is that job, and it is smaller than it sounds.</p>
<h2 id="is-sync-the-same-thing-as-a-backup">Is sync the same thing as a backup?</h2>
<p>Worth getting out of the way first, because it is the single most common mistake in this area, and it catches people who thought they were being careful.</p>
<p>Sync propagates changes. That is its purpose and it is very good at it. Which means when you delete a note, sync faithfully deletes it everywhere, immediately. When a file is corrupted, sync distributes the corruption. When you paste over three paragraphs and quit, sync ensures all your devices agree on the wrong version.</p>
<p>A backup is different in one specific way: it can give you back a state from <em>before</em> the thing you regret. If a system has no notion of "yesterday", it is not a backup, whatever it is called.</p>
<p>Cloud note apps blur this because most of them do keep version history, which is a backup — of the note contents, on their servers, subject to their retention policy. Useful. Just not the same thing as sync, and worth knowing which one you are relying on.</p>
<h2 id="does-time-machine-back-up-my-notes">Does Time Machine back up my notes?</h2>
<p>On a Mac, <a href="https://support.apple.com/guide/mac-help/back-up-your-files-with-time-machine-mh35860/mac">Time Machine</a> is most of the answer, and it is already built in.</p>
<p>It keeps hourly snapshots for the last 24 hours, daily for the past month, and weekly beyond that, until the disk fills and it starts dropping the oldest. That's a real answer to "get me the version from before Tuesday". Turn it on, point it at an external disk, and the majority of this problem is solved by a single setting.</p>
<p>Two limits are worth knowing.</p>
<p><strong>It is one disk in one building.</strong> A Time Machine drive sitting next to the Mac protects against a dead SSD and a bad afternoon. It does not protect against theft, fire or flood, because it is in the room. That is what the offsite copy below is for.</p>
<p><strong>It is only as recent as the last time you plugged it in.</strong> A backup drive in a drawer contains a snapshot of whenever you last remembered. If your backup disk is not permanently attached, the honest question is not whether you have a backup but how old it is.</p>
<h2 id="the-rule-worth-actually-following">The rule worth actually following</h2>
<p>The 3-2-1 rule has survived decades because it is simple: <strong>three copies of anything you care about, on two different kinds of storage, one of them somewhere else.</strong></p>
<p>For notes on a Mac that translates to something quite ordinary:</p>
<ol><li>The working copy on your Mac.</li><li>Time Machine on an external disk.</li><li>Something offsite — a cloud backup service, an encrypted copy in whatever cloud storage you already pay for, or a second drive you keep at work or a relative's house and swap occasionally.</li></ol>
<p>The third one is the one people skip, and it is the one that covers the scenarios where you lose the building rather than the file.</p>
<p>If the offsite copy goes to a cloud service and the whole point of keeping notes local was privacy, encrypt it before it leaves. Disk Utility can make an encrypted disk image; several backup tools will do it for you. An encrypted archive in someone else's cloud is a different proposition from your notes in someone else's app.</p>
<h2 id="export-and-backup-are-not-the-same-thing">Export and backup are not the same thing</h2>
<p>Any note app worth using can export. It is worth understanding what that gets you, because it is not the same as a snapshot.</p>
<p><strong>A backup</strong> restores the app to a previous state — structure, links, attachments, the lot. It is what you want after a mistake.</p>
<p><strong>An export</strong> produces files something else can read. It is what you want when you leave the app, or when the app is no longer available to restore into. It is the difference between recovering and escaping.</p>
<p>You want both, for different days. A backup is worthless if the software it restores into no longer exists; an export is a poor recovery tool because it usually loses structure.</p>
<p>So: whatever your app's export produces, run it once, now, and look at the output. Can another program open it? Are the attachments there, or just links to files that live inside the app? Do notes still reference each other, or has the structure been flattened into a folder of text? Ten minutes spent finding this out while everything is fine is worth a great deal more than finding out during a recovery.</p>
<figure><img src="/images/backup-layers-diagram.svg" alt="Three cards: Time Machine survives a dead drive, an encrypted offsite copy survives theft fire and flood, an export survives the app going away" width="1200" height="470" loading="lazy" decoding="async" /><figcaption>Three copies, three different disasters. Each layer covers something the one before it cannot.</figcaption></figure>
<h2 id="test-the-restore">Test the restore</h2>
<p>A backup you have never restored is not a backup. It is a hypothesis.</p>
<p>The failure mode is boringly common: the drive was full, the job silently stopped months ago, the encryption password was never written down, the export was producing empty files the whole time. Every one of these is invisible until you need the thing, at which point it is also unfixable.</p>
<p>The test does not need to be elaborate:</p>
<ul><li>Restore a single note from a week ago into a scratch location. Open it. Confirm it is the note.</li><li>Check the date of the most recent backup. If it surprises you, that is the finding.</li><li>Confirm you can actually get <em>in</em> — the recovery key, the encryption password, the account. Store them somewhere that is not the machine being backed up. A recovery key saved only in the notes app you are trying to recover is a joke you only get to hear once.</li></ul>
<p>Twice a year is plenty. I keep it on the calendar, because it is exactly the kind of task nothing will ever remind you to do.</p>
<h2 id="the-short-version">The short version</h2>
<p>Turn on Time Machine today; it is fifteen minutes and covers most of it. Add one offsite copy, encrypted if the contents are private. Run your app's export once so you know what it produces before you need it. And restore something, twice a year, so that you know.</p>
<p>Cyanote, the app this blog belongs to, exports to a single JSON file, and a restore replaces what is there rather than merging into it, after writing a rescue snapshot first. Worth knowing which of those two your own app does before the day you need it.</p>
<p>The point of <a href="/blog/what-local-first-means-for-your-notes/">keeping your notes on your own computer</a> is that nobody else can lose them. The corollary is that nobody else can save them either.</p>]]></content:encoded>
      <category>Backups</category>
      <category>Local-first</category>
      <category>How-to</category>
    </item>
    <item>
      <title>What local-first actually means for your notes</title>
      <link>https://cyanote.app/blog/what-local-first-means-for-your-notes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/what-local-first-means-for-your-notes/</guid>
      <pubDate>Tue, 04 Aug 2026 09:00:00 +0000</pubDate>
      <description>Local-first means your notes live on your computer and the app reads them directly. Here is what that buys you, what it really costs, and who should avoid it.</description>
      <content:encoded><![CDATA[<p>"Local-first" — <a href="https://www.inkandswitch.com/local-first/">a term coined in a 2019 essay by Ink &amp; Switch</a> — has become a marketing word, which is a shame, because underneath it is a genuinely useful distinction — and one with real costs that the marketing tends to skip.</p>
<p>Here is the plain version. In a cloud app, the server holds the truth. Your device holds a cache of it. When you type, the change is sent somewhere, accepted, and sent back. In a local-first app, your computer holds the truth. The app reads and writes it directly. The network, if there is one at all, is a convenience layered on top.</p>
<p>That sounds like an implementation detail. It is not. It changes how the app behaves on a bad train, what happens when the company folds, who can read what you wrote, and whether your notes still exist in ten years. It also takes some things away, and I will get to those, because a post that only lists the upsides is an advert.</p>
<figure><img src="/images/local-first-diagram.svg" alt="Two panels: in a cloud app the server holds the authoritative copy and the device holds a cache; in a local-first app the computer holds the authoritative copy and the network is optional" width="1200" height="520" loading="lazy" decoding="async" /><figcaption>The whole distinction in one picture: which machine holds the real thing.</figcaption></figure>
<h2 id="what-it-changes-concretely">What it changes, concretely</h2>
<h3 id="the-app-is-fast-in-a-way-that-is-hard-to-fake">The app is fast in a way that is hard to fake</h3>
<p>When you press a key in a cloud-first editor, something has to go over a network eventually. Good apps hide this well — optimistic updates, local caches, careful loading states. But the seams show under load: a long note that takes a second to open, a search that spins, a list that arrives a beat after the window does.</p>
<p>A local-first app reading a file on your own disk has no network to hide. Opening a note is a disk read measured in single-digit milliseconds. Search across everything you have written is a local index query. There is no clever engineering here — the latency is simply not there to begin with.</p>
<h3 id="offline-is-not-a-mode">Offline is not a mode</h3>
<p>Cloud apps have an offline mode, which is a set of behaviours that switch on when the network goes. It works, mostly, and then you find the edge: the note that will not open because it was never cached, the sync conflict when you land, the file that quietly reverted.</p>
<p>For a local-first app, offline is not a mode. It is the normal condition. A plane, a basement, a hotel with a captive-portal wifi that never quite lets you through — none of these are events. Nothing behaves differently because nothing was depending on the network in the first place.</p>
<h3 id="nobody-else-has-a-copy">Nobody else has a copy</h3>
<p>This is the part people care about most and describe least precisely. It is not really about trusting or distrusting a particular company. It is about the number of places your writing exists.</p>
<p>If your notes are on a server, then your notes are readable by: the company, anyone the company is legally compelled to answer, anyone who breaches the company, and any future owner of the company after an acquisition you were not consulted about. None of those require bad intent. They are just what having a copy means.</p>
<p>If your notes are on your disk, that list is: you, and anyone with your computer.</p>
<h3 id="it-outlives-the-company">It outlives the company</h3>
<p>Cloud apps die badly. The service shuts down, you get ninety days' notice and a zip file export in a format nothing else reads, and the structure — the links, the nesting, the dates — arrives as mush.</p>
<p>A local-first app that shuts down leaves you exactly where you were. The files are still on your disk, in whatever format they were in yesterday. The app stops getting updates; your notes do not stop existing. This is the least discussed advantage and, on a ten-year horizon, probably the largest.</p>
<h2 id="the-costs-honestly">The costs, honestly</h2>
<p>Here is what you are actually giving up. I would rather you read this now than discover it a week after buying something.</p>
<h3 id="no-sync-between-machines">No sync between machines</h3>
<p>This is the big one and it is not a small inconvenience.</p>
<p>If your notes are on your MacBook, they are on your MacBook. Sit down at a desktop and they are not there. There is no "log in and everything appears", because there is no account and nothing to appear from.</p>
<p>Some local-first apps solve this with peer-to-peer sync or by putting the data folder in iCloud Drive or Dropbox, which works but reintroduces a cloud service and, with it, conflicts when two machines edit the same thing. Others, <a href="https://cyanote.app/">Cyanote</a> included, do not solve it at all yet: one computer, one set of notes.</p>
<p>If you genuinely work across two machines all day, this is disqualifying, and you should choose a cloud app with a clear conscience. Being honest about that is more useful to both of us than pretending single-device is a lifestyle choice.</p>
<h3 id="no-phone">No phone</h3>
<p>Related, and equally real. Local-first on a Mac means the thought you have on a bus does not go into the same place as everything else. Plenty of people run a small capture app on their phone and move things over weekly — that works, and it is an extra step you did not previously have.</p>
<h3 id="backups-become-your-job">Backups become your job</h3>
<p>With no server there is nobody keeping a spare copy for you. A cloud app's genuine advantage is that a stolen laptop is an inconvenience rather than a loss.</p>
<p>Local-first moves that responsibility across the line to you. This is manageable — Time Machine, or an occasional export to an external disk, covers it entirely — but it only works if you actually do it. Set it up on day one, not after the first scare.</p>
<h3 id="no-collaboration">No collaboration</h3>
<p>Shared documents, comments, someone else's cursor in your paragraph: these need a server, because they need a shared truth that two people can both reach. Local-first apps are for one person's own thinking. That is a genuine limitation and not a philosophy.</p>
<h2 id="how-can-you-tell-whether-an-app-is-actually-local-first">How can you tell whether an app is actually local-first?</h2>
<p>The label is easy to claim. Three questions settle it:</p>
<ol><li><strong>Can you create an account-less install?</strong> If signing up is mandatory, the server holds something. That may be fine, but it is not local-first.</li><li><strong>Where is the data, and can you open the folder?</strong> A real answer is a path. If the answer is "in the app", ask again.</li><li><strong>Turn the wifi off and use it for an hour.</strong> Everything should work. Not "most things" — everything.</li></ol>
<p>A fourth, softer test: what happens when you cancel? If there is nothing to cancel, that tells you where the data was.</p>
<h2 id="where-cyanote-sits">Where Cyanote sits</h2>
<p>Cyanote stores everything in a SQLite database on your own Mac. There is no account, no server holding your notes, and no telemetry. The app makes two network requests of its own and no others. A new install sends the licence key from your purchase email to Lemon Squeezy, once, to confirm the purchase — that is the only moment the app needs a network at all, and there is nothing to sign in to. After that it checks for a new version, about every six hours while it is open, carrying no key, no account and no identifier. Neither request carries a word you have written. Individual notes can be locked with a password on top of that.</p>
<figure><img src="https://cyanote.app/images/note.webp" alt="Cyanote&#x27;s note editor with the slash command menu open, showing headings, lists, tables and code blocks" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>Everything here is a row in a database file on your own disk.</figcaption></figure>
<p>It takes the trade-offs above rather than dodging them. There is no sync and no iOS app. What it offers in exchange is that the whole thing — notes, tasks, calendar, habits, clipboard history — opens instantly, works in a basement, and cannot be read by me or anyone else. Backup and restore is a single JSON file you can write anywhere you like, and a restore always takes a rescue snapshot of what it is about to replace before it does anything.</p>
<p>Optional network features exist and are opt-in: you can subscribe to a Google Calendar so events appear alongside your tasks. That is a deliberate exception, and it is a read of a calendar you already publish — nothing goes the other way.</p>
<h2 id="who-should-choose-a-local-first-app">Who should choose a local-first app?</h2>
<p>Choose local-first if you work mostly at one machine, if you write things you would rather not have on someone else's server, and if you would like the tool you learn this year to still be there in five.</p>
<p>Do not choose it if you move between machines constantly, if capture on a phone is central to how you think, or if you would rather someone else be responsible for your backups. Those are real requirements and cloud apps meet them properly.</p>
<p>If the first description fits, <a href="https://cyanote.app/#pricing">Cyanote is a $10 one-time purchase</a> with no subscription behind it — I wrote about why it exists in <a href="https://cyanote.app/blog/replaced-five-subscriptions-with-one-app/">I replaced five subscriptions with one $10 app</a>, and about the routine I use to keep a week in order in <a href="https://cyanote.app/blog/weekly-review-in-20-minutes/">the weekly review, in 20 minutes</a>.</p>]]></content:encoded>
      <category>Local-first</category>
      <category>Privacy</category>
      <category>Offline</category>
    </item>
    <item>
      <title>The weekly review, in 20 minutes</title>
      <link>https://cyanote.app/blog/weekly-review-in-20-minutes/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/weekly-review-in-20-minutes/</guid>
      <pubDate>Fri, 24 Jul 2026 09:00:00 +0000</pubDate>
      <description>A weekly review that fits in twenty minutes, with the checklist and the timings. Four passes, a timer, and the three mistakes that make people quit early.</description>
      <content:encoded><![CDATA[<p>The <a href="https://gettingthingsdone.com/what-is-gtd/">weekly review</a> is the most recommended and least performed habit in personal productivity. Almost everyone who reads about it agrees it is a good idea. Almost nobody is still doing it six weeks later.</p>
<p>The reason is not discipline. It is that the version people are taught takes ninety minutes, requires you to be calm and unhurried, and asks you to face every loose end in your life at once. That is a wonderful thing to do occasionally and an impossible thing to do weekly.</p>
<p>What follows is the short version. Twenty minutes, four passes, a timer running the whole way. It is deliberately less thorough than the full ritual, and it is the one that survives contact with an ordinary Friday.</p>
<h2 id="why-twenty-minutes-is-the-point">Why twenty minutes is the point</h2>
<p>Two things go wrong with the long review.</p>
<p>It gets scheduled at a time when you are tired, because ninety minutes only fits at the end of the week, which is when you have least left. And it is open-ended, so it expands: you start reviewing tasks and finish reorganising your entire folder structure at 7pm on a Friday, feeling productive and having decided nothing.</p>
<p>A timer fixes both. Twenty minutes fits in the gap before a meeting. And a hard stop forces the review to do the thing it is for — deciding — rather than the thing that feels like it — tidying.</p>
<p>The bar is not "my system is perfect". The bar is "I know what is true and I know what I am doing on Monday."</p>
<figure><img src="/images/today.webp" alt="A daily dashboard showing schedule, tasks due, habits and routines together on one screen" loading="lazy" decoding="async" /><figcaption>Everything the review has to look at, on one screen. The passes below go left to right.</figcaption></figure>
<h2 id="the-four-passes">The four passes</h2>
<p>Set a timer for each one. When it goes off, move on even if you are not finished, because unfinished is the normal state and the next review will catch it.</p>
<h3 id="1-clear-5-minutes">1. Clear — 5 minutes</h3>
<p>Empty every place things land, without doing any of the work you find.</p>
<ul><li>Your inbox, down to whatever counts as empty for you. Reply only to anything under two minutes; everything else becomes a task and gets archived.</li><li>The notes app you scribble into during meetings. Every scrap either becomes a task, gets filed into a real note, or gets deleted. Most of them get deleted, and that is the point.</li><li>Physical: the pile on the desk, the receipts in your bag, the notebook.</li><li>Your camera roll, if you photograph whiteboards and posters. Half a weekly review's worth of loose ends lives there.</li></ul>
<p>The rule that makes this pass work: <strong>capture, do not act</strong>. The moment you start actually doing one of the things you find, the five minutes are gone and you have reviewed nothing. Write it down. Move on.</p>
<h3 id="2-read-5-minutes">2. Read — 5 minutes</h3>
<p>Now look at the week that just happened, honestly.</p>
<ul><li>Last week's calendar, day by day. Not for nostalgia — for the meetings that produced a commitment you never wrote down. There is almost always one.</li><li>Anything you marked done. Read it. This sounds sentimental and is not; it is calibration data for how much you can actually get through in a week, which is nearly always less than you plan for.</li><li>Anything that was due and is not done. Do not fix it yet. Just notice it.</li></ul>
<p>This is the pass people skip, and skipping it is why plans stay unrealistic. You cannot plan a week accurately if you never look at what happened to the last one.</p>
<h3 id="3-decide-7-minutes">3. Decide — 7 minutes</h3>
<p>The longest pass, and the only one that matters. Go through everything outstanding and give each item one of four verdicts:</p>
<ol><li><strong>Do it this week.</strong> It gets a date, not just a tick box. A task with no date is a wish.</li><li><strong>Do it later.</strong> It goes on a someday list you genuinely never look at except in this pass.</li><li><strong>Delegate it.</strong> Write down who and when you will chase.</li><li><strong>Drop it.</strong> Delete it, without ceremony.</li></ol>
<p>The fourth verdict is the one that keeps the system alive. If nothing was dropped, you were not deciding, you were re-reading. Aim to delete something every single week. An item you have carried forward four weeks running is not a task; it is a decision you keep declining to make, and the honest move is either to schedule it now or to admit it is never happening.</p>
<h3 id="4-set-3-minutes">4. Set — 3 minutes</h3>
<p>Pick the shape of the week ahead.</p>
<ul><li>Name <strong>three</strong> outcomes for the week. Not thirty. Three. Written as things that will be true by Friday, not as activities: "the pricing page is live", not "work on pricing page".</li><li>Put them in the calendar as actual blocks of time. An outcome without a slot is competing with everything else in your week and will lose.</li><li>Look at what is already scheduled. If Wednesday has six hours of meetings, your three outcomes are not landing on Wednesday, and knowing that on Friday is worth more than discovering it on Wednesday morning.</li></ul>
<p>Then stop. The timer went off. You are done.</p>
<h2 id="the-three-mistakes">The three mistakes</h2>
<p><strong>Doing the work during the review.</strong> It feels productive and it destroys the review. The review is for deciding what the work is. Keep a scratch list of the small things you are tempted to do, and do them after the timer.</p>
<p><strong>Reviewing everything.</strong> Every project, every note, every reference folder. That is a quarterly job, not a weekly one. The weekly review only touches things that are live.</p>
<p><strong>Missing one and quitting.</strong> You will miss weeks. A review done every second week is worth roughly ten times one done never. There is no streak to protect and nothing to catch up on — the next review just has a slightly fuller inbox.</p>
<h2 id="the-checklist-as-one-block">The checklist, as one block</h2>
<pre><code>CLEAR (5 min)
  [ ] email inbox to zero-ish
  [ ] meeting notes / scratch pad emptied
  [ ] desk, bag, notebook
  [ ] camera roll
CAPTURE ONLY — do not do the work

READ (5 min)
  [ ] last week's calendar, day by day
  [ ] what got done
  [ ] what was due and did not

DECIDE (7 min)
  [ ] every open item: do / later / delegate / drop
  [ ] anything this-week gets a date
  [ ] delete at least one thing

SET (3 min)
  [ ] three outcomes for the week
  [ ] each one blocked in the calendar
  [ ] sanity-check against what is already booked</code></pre>
<p>Copy it wherever you keep things. It does not matter where, as long as it is somewhere you will meet it again on Friday.</p>
<h2 id="doing-it-in-cyanote">Doing it in Cyanote</h2>
<p>I built this into the app I use, because a checklist you have to rebuild every week does not survive either.</p>
<p>Cyanote ships a <strong>Weekly review</strong> note template — it opens dated, with sections for Wins, Didn't get to, Lessons and Next week, so the Read and Set passes have somewhere to land. The Decide pass happens in the task list itself, where due dates and priorities live. And because tasks, calendar and notes are the same data rather than three synced copies, "what was due and did not get done" is something you look at rather than something you reconstruct.</p>
<figure><img src="https://cyanote.app/images/routines.webp" alt="Cyanote&#x27;s routines view: a timed checklist laid out on a daily timeline, one step at a time" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>The four passes as a routine, each step with its own timer.</figcaption></figure>
<p>If you prefer the timer to run itself, the four passes also work as a <strong>routine</strong>: a timed checklist that moves you along, which is the version I use, because I cannot be trusted to leave the Decide pass after seven minutes on my own.</p>
<p>None of that is necessary. The method is the method; a pen and a Friday afternoon will do. But if you are already looking for one place to keep the week, <a href="https://cyanote.app/#pricing">Cyanote is a $10 one-time purchase</a> that runs entirely on your own Mac — I wrote about why it exists at all in <a href="https://cyanote.app/blog/replaced-five-subscriptions-with-one-app/">I replaced five subscriptions with one $10 app</a>.</p>
<h2 id="start-with-a-bad-one">Start with a bad one</h2>
<p>Your first weekly review will be poor. The inbox will take fifteen minutes on its own, you will not get to the Set pass, and you will finish it feeling like it did not work.</p>
<p>Do it anyway, and then do the next one. By the third or fourth, Clear takes four minutes because there is less to clear, Read is quick because you remember the week, and the whole thing lands inside twenty minutes with room to spare. The review gets shorter precisely because you keep doing it, which is a rare and pleasant property in a habit.</p>]]></content:encoded>
      <category>Weekly review</category>
      <category>GTD</category>
      <category>Method</category>
    </item>
    <item>
      <title>I replaced five subscriptions with one $10 app</title>
      <link>https://cyanote.app/blog/replaced-five-subscriptions-with-one-app/</link>
      <guid isPermaLink="true">https://cyanote.app/blog/replaced-five-subscriptions-with-one-app/</guid>
      <pubDate>Wed, 15 Jul 2026 09:00:00 +0000</pubDate>
      <description>Notion, Todoist, Fantastical, Streaks and Paste cost me about $260 a year, and I still lost things in the gaps between them. Here is what I built instead.</description>
      <content:encoded><![CDATA[<p>In January 2025 I sat down to cancel one subscription and ended up cancelling five.</p>
<p>I had gone looking for a single charge I did not recognise. What I found instead was a small, quiet stack of them: Notion for notes, Todoist for tasks, Fantastical for the calendar, Streaks for habits, and Paste for the clipboard. None of them was expensive. Two were under five dollars a month. That is exactly why I had never looked at them together.</p>
<p>Added up, they came to roughly $260 a year. For software I had already decided I wanted, years ago, and had been re-buying every month since without ever making the decision again.</p>
<p>Written out, the stack was this:</p>
<div class="table-scroll"><table><thead><tr><th scope="col">The job</th><th scope="col">What I was paying for it</th><th scope="col">What does it now</th></tr></thead><tbody><tr><td>Writing things down</td><td>Notion</td><td>Notes, and code notes</td></tr><tr><td>What is due</td><td>Todoist</td><td>To-dos and a board</td></tr><tr><td>What is scheduled</td><td>Fantastical</td><td>Calendar</td></tr><tr><td>Daily habits</td><td>Streaks</td><td>Habits</td></tr><tr><td>What I copied earlier</td><td>Paste</td><td>Clipboard manager</td></tr></tbody></table></div>
<p>Five line items, about $260 a year between them, against $10 once. The money is the least interesting column, though — the next section is about the other one.</p>
<h2 id="the-bit-that-annoyed-me-was-not-the-money">The bit that annoyed me was not the money</h2>
<p>$260 is a real number but it is not a crisis. What actually bothered me was what I got for it.</p>
<p>A Tuesday looked like this. A thought arrives during a meeting, so it goes in Notion. It turns out to have a deadline, so a task goes in Todoist. The deadline is a Thursday, so I put a block in Fantastical. Later I want the meeting link I had copied twenty minutes earlier, so I open Paste. That evening Streaks asks whether I did the thing I said I would do daily, and I have no idea, because the evidence is spread across four other apps.</p>
<p>Five apps, five windows, five search boxes. Nothing was lost inside any one of them. Things were lost <em>between</em> them — in the seams, where the note about the project and the task for the project and the hour set aside for the project all existed, separately, and none of them knew about the others.</p>
<p>Every one of those apps was well made — Fantastical in particular is better at calendars than anything I have built or will build. That is the strange part. The failure was not in the software; it was in the shape of the arrangement. Five good apps do not add up to one good system, because the connective tissue is you, doing it by hand, several times a day, forever.</p>
<h2 id="two-things-i-noticed-about-how-they-were-priced">Two things I noticed about how they were priced</h2>
<p>The first: I had never re-decided. A subscription is a decision you make once and then stop making. The bank makes it for you every month after that. I had chosen a habit tracker in 2022 based on what I needed in 2022, and I was still paying for that choice three years later, having never once asked whether it was still true.</p>
<p>The second is subtler, and it took me longer to see. When the money arrives monthly whether or not anything ships, the pressure on the software changes. It has to keep looking like it is worth the recurring charge. So features arrive — a team space, an AI assistant, an integrations directory, a web clipper — and the app gets bigger and slower and a little further from the thing you originally opened it for.</p>
<p>I do not think anyone is being cynical. It is just what the shape of the business rewards. But my notes app took four seconds to open a note, and I was paying every month for the privilege.</p>
<figure><img src="/images/today.webp" alt="One screen showing the day&#x27;s schedule, tasks due, habits and routines side by side" loading="lazy" decoding="async" /><figcaption>The five apps, after: one window, one search box.</figcaption></figure>
<h2 id="what-i-actually-needed">What I actually needed</h2>
<p>So I wrote it down, honestly, rather than aspirationally. Not the features I might one day want — the ones I had actually used in the previous month:</p>
<ul><li>somewhere to write things down that opened instantly</li><li>a list of what is due, with dates and priorities</li><li>a calendar showing what is due next to what is scheduled</li><li>a light way to track a handful of daily habits</li><li>clipboard history, because I copy things and then need them again ten minutes later</li></ul>
<p>That is a modest list. It is nowhere near the union of what those five apps offered. It is close to the intersection of what I used.</p>
<p>The gap between those two things — everything the apps could do, and the small part I actually touched — is roughly the whole story of why productivity software feels heavy.</p>
<h2 id="so-i-built-it">So I built it</h2>
<p>Cyanote is what came out. Notes, to-dos and a board, a calendar, habits, routines and a Pomodoro timer, and a system-wide clipboard manager, in one window, with one search box that looks across all of it.</p>
<figure><img src="https://cyanote.app/images/today.webp" alt="Cyanote&#x27;s Today view: the day&#x27;s schedule, what is due, and habits still to tick, on one screen" width="1500" height="938" loading="lazy" decoding="async" /><figcaption>One window, one search box — the day in one place rather than in five.</figcaption></figure>
<p>The unification is not decorative. A task with a due date shows up in the calendar because it is the same task, not a copy synced across a boundary. A note can link to another note, and the note being linked to says so. When you finish a focus session against a task, the app can tell you later where the day actually went. None of that is clever engineering. It is just what stops being hard once the data is not living in five separate accounts.</p>
<p>It costs $10. Once. There is no subscription, no account and no upsell later. A new install asks once for the licence key from your purchase email; there is nothing to sign in to, and the key is not checked again after that. Updates are free for as long as the app exists — the <a href="https://cyanote.app/changelog.html">changelog</a> is the whole record of what that has meant so far.</p>
<h2 id="the-honest-economics-of-10-once">The honest economics of $10, once</h2>
<p>I want to be straight about this, because "pay once" is often sold as pure virtue and it is really a trade.</p>
<p>What you get: no recurring charge, and an app with no structural reason to grow features you did not ask for. My income does not depend on this month looking busy. It depends on the app being good enough that someone recommends it. Those pressures point in a much better direction.</p>
<p>What I give up: predictable revenue. That means Cyanote will never have a large team, a support desk with shift rotas, or a five-year roadmap underwritten by investors. It is one person, shipping steadily. If you need enterprise SSO and a service-level agreement, this is honestly not the software for you, and I would rather say so on a blog post than in a refund email.</p>
<h2 id="what-you-give-up-specifically">What you give up, specifically</h2>
<p>There are three real costs and I would rather you know them now.</p>
<p><strong>No sync between machines.</strong> Your data lives on your Mac and stays there. Two Macs means two separate sets of notes. This follows directly from the local-first design and I have written about the whole trade in <a href="https://cyanote.app/blog/what-local-first-means-for-your-notes/">what local-first actually means for your notes</a> — it is a genuine cost, not a feature in disguise.</p>
<p><strong>No mobile app.</strong> If capturing a thought on your phone at a bus stop is central to how you work, Cyanote covers the desk half of your life and something else covers the other half.</p>
<p><strong>No collaboration.</strong> No shared documents, no comments, no team spaces. This is a tool for one person's own thinking.</p>
<p><strong>Backups are yours.</strong> With no server, nobody is quietly keeping a copy for you. Cyanote exports everything to a single JSON file and Time Machine covers the rest, but the responsibility moved to your side of the line.</p>
<h2 id="was-it-worth-it">Was it worth it?</h2>
<p>For me, obviously — I have been using it every day for a year and I no longer pay $260 for the privilege of copying things between windows.</p>
<p>The more useful answer is the general one. Most people do not need five productivity subscriptions. They need one place that opens fast, holds the week, and does not ask anything of them again. If that is you, the audit is worth doing even if you never install anything I made: open your bank statement, find every recurring software charge under ten dollars, and ask which ones you would buy again today.</p>
<p>You will cancel at least one. Possibly five.</p>
<p>If you want somewhere for it all to land afterwards, <a href="https://cyanote.app/#pricing">Cyanote is $10</a> and that is the last time it asks you for money. If you want to see the routine I use to keep a week from drifting, that is <a href="https://cyanote.app/blog/weekly-review-in-20-minutes/">the weekly review, in 20 minutes</a>.</p>
<p>Two of the five have pages of their own, weighed properly rather than in passing: <a href="https://cyanote.app/compare/notion-alternative/">Notion</a>, which is free for one person and so is not really a money argument at all, and <a href="https://cyanote.app/compare/paste-alternative/">Paste</a>, which is the better clipboard manager.</p>]]></content:encoded>
      <category>One-time purchase</category>
      <category>Subscriptions</category>
      <category>Mac</category>
    </item>
  </channel>
</rss>
