inkspell
writing topics feed
MODE
THEME
← writing

Hello, World — Starting inkspell

Why I'm starting a public notebook, and what I hope to write about.

May 10, 2026 · 2 min read
meta

Every developer eventually starts a blog. Mine has been overdue for a few years.

A quiet writing desk with an open notebook, ink, and morning light

The name inkspell felt right — something at the intersection of writing and magic, which is how good code feels when it finally comes together. A function that does exactly what it says, in exactly the space you’d hope, with no side effects you didn’t invite.

What this is

This isn’t a tutorial site. There are enough of those. This is a notebook — a place to think in public about things I find genuinely interesting:

  • Systems design — how distributed systems fail, how they recover, why eventual consistency is both powerful and terrifying
  • Language internals — what compilers do that we take for granted, how type systems make certain bugs structurally impossible
  • Craft — the small decisions that separate code you’re proud of from code you apologize for in reviews

What this isn’t

A place for hot takes. I’m slow to form opinions and I’d like these posts to reflect that. If something here turns out to be wrong, I’ll update it — not delete it.

The setup

The Astro framework logo on a dark background — clean, modern, minimal

This blog is built with Astro, Tailwind CSS, and deploys as a fully static site. The source will be on GitHub eventually. Posts are Markdown files in a content collection; syntax highlighting is handled by Shiki with a dual light/dark theme.

// The entire "database" is just this:
const posts = await getCollection('blog', ({ data }) => !data.draft);

There’s something satisfying about a blog whose entire backend is a filesystem and a static build step.


More soon.

← Back to all writing
Last login: Sun, May 10, 00:00:00 on ttys001
user@inkspell:~/blog read hello-world.md
FILE: hello-world.md DATE: 2026-05-10 WORDS: 293 READ: ~2m
TAGS: [meta]

Hello, World — Starting inkspell

// Why I'm starting a public notebook, and what I hope to write about.

» BEGIN OUTPUT

Every developer eventually starts a blog. Mine has been overdue for a few years.

A quiet writing desk with an open notebook, ink, and morning light

The name inkspell felt right — something at the intersection of writing and magic, which is how good code feels when it finally comes together. A function that does exactly what it says, in exactly the space you’d hope, with no side effects you didn’t invite.

What this is

This isn’t a tutorial site. There are enough of those. This is a notebook — a place to think in public about things I find genuinely interesting:

  • Systems design — how distributed systems fail, how they recover, why eventual consistency is both powerful and terrifying
  • Language internals — what compilers do that we take for granted, how type systems make certain bugs structurally impossible
  • Craft — the small decisions that separate code you’re proud of from code you apologize for in reviews

What this isn’t

A place for hot takes. I’m slow to form opinions and I’d like these posts to reflect that. If something here turns out to be wrong, I’ll update it — not delete it.

The setup

The Astro framework logo on a dark background — clean, modern, minimal

This blog is built with Astro, Tailwind CSS, and deploys as a fully static site. The source will be on GitHub eventually. Posts are Markdown files in a content collection; syntax highlighting is handled by Shiki with a dual light/dark theme.

// The entire "database" is just this:
const posts = await getCollection('blog', ({ data }) => !data.draft);

There’s something satisfying about a blog whose entire backend is a filesystem and a static build step.


More soon.

END OF FILE
user@inkspell:~/blog $
$ cd ..
phone down  ·  breathe  ·  begin
☸︎
meta

Hello, World — Starting inkspell

☸︎

Why I'm starting a public notebook, and what I hope to write about.

session · 2 min sitting · May 10, 2026
— enter the practice —

Every developer eventually starts a blog. Mine has been overdue for a few years.

A quiet writing desk with an open notebook, ink, and morning light

The name inkspell felt right — something at the intersection of writing and magic, which is how good code feels when it finally comes together. A function that does exactly what it says, in exactly the space you’d hope, with no side effects you didn’t invite.

What this is

This isn’t a tutorial site. There are enough of those. This is a notebook — a place to think in public about things I find genuinely interesting:

  • Systems design — how distributed systems fail, how they recover, why eventual consistency is both powerful and terrifying
  • Language internals — what compilers do that we take for granted, how type systems make certain bugs structurally impossible
  • Craft — the small decisions that separate code you’re proud of from code you apologize for in reviews

What this isn’t

A place for hot takes. I’m slow to form opinions and I’d like these posts to reflect that. If something here turns out to be wrong, I’ll update it — not delete it.

The setup

The Astro framework logo on a dark background — clean, modern, minimal

This blog is built with Astro, Tailwind CSS, and deploys as a fully static site. The source will be on GitHub eventually. Posts are Markdown files in a content collection; syntax highlighting is handled by Shiki with a dual light/dark theme.

// The entire "database" is just this:
const posts = await getCollection('blog', ({ data }) => !data.draft);

There’s something satisfying about a blog whose entire backend is a filesystem and a static build step.


More soon.

☸︎
the session ends
learn  ·  unlearn  ·  return
return when ready
☠︎ LARTS-SERVER BBS v2.3.1 — root console
⚠︎ Unauthorised access will be met with creative, legally ambiguous, and frankly disproportionate solutions.
Last login: 2026-05-10 00:00:00 from somewhere you'll regret  ·  session pid 1194
⚡ luser activity is being monitored. it always was. 13 LARTs administered today.
☠︎ BOFH EXCUSE #1156 :: Microsoft issued a patch
root@larts-server:/var/rants # cat hello-world.txt  # and what was your username again?
SUBJECT: Hello, World — Starting inkspell
DATE: 2026-05-10 00:00:00 READ: ~2 min of your billable downtime WORDS: 293
TAGS: [meta]
// Why I'm starting a public notebook, and what I hope to write about.
☠︎ ::: BEGIN TRANSMISSION — touch nothing ::: ☠︎

Every developer eventually starts a blog. Mine has been overdue for a few years.

A quiet writing desk with an open notebook, ink, and morning light

The name inkspell felt right — something at the intersection of writing and magic, which is how good code feels when it finally comes together. A function that does exactly what it says, in exactly the space you’d hope, with no side effects you didn’t invite.

What this is

This isn’t a tutorial site. There are enough of those. This is a notebook — a place to think in public about things I find genuinely interesting:

  • Systems design — how distributed systems fail, how they recover, why eventual consistency is both powerful and terrifying
  • Language internals — what compilers do that we take for granted, how type systems make certain bugs structurally impossible
  • Craft — the small decisions that separate code you’re proud of from code you apologize for in reviews

What this isn’t

A place for hot takes. I’m slow to form opinions and I’d like these posts to reflect that. If something here turns out to be wrong, I’ll update it — not delete it.

The setup

The Astro framework logo on a dark background — clean, modern, minimal

This blog is built with Astro, Tailwind CSS, and deploys as a fully static site. The source will be on GitHub eventually. Posts are Markdown files in a content collection; syntax highlighting is handled by Shiki with a dual light/dark theme.

// The entire "database" is just this:
const posts = await getCollection('blog', ({ data }) => !data.draft);

There’s something satisfying about a blog whose entire backend is a filesystem and a static build step.


More soon.

☠︎ ::: END OF FILE — this never happened ::: ☠︎
[2026-05-10 00:00:00] SYSTEM: memory consumed by luser requests: 97.3%
[2026-05-10 00:00:00] SYSTEM: your read has been logged against your permanent record.
root@larts-server:/var/rants # logout  # don't let the airlock hit you
⛤︎
the circle is opened
☾ return to the archive ☽
☾ meta ☽
⛤︎   ARCANUM   ⛤︎

Hello, World — Starting inkspell

☾   ⛤︎   ☽

Why I'm starting a public notebook, and what I hope to write about.

May 10, 2026 ⛤︎ 2 min rite ⛤︎ 293 words

Every developer eventually starts a blog. Mine has been overdue for a few years.

A quiet writing desk with an open notebook, ink, and morning light

The name inkspell felt right — something at the intersection of writing and magic, which is how good code feels when it finally comes together. A function that does exactly what it says, in exactly the space you’d hope, with no side effects you didn’t invite.

What this is

This isn’t a tutorial site. There are enough of those. This is a notebook — a place to think in public about things I find genuinely interesting:

  • Systems design — how distributed systems fail, how they recover, why eventual consistency is both powerful and terrifying
  • Language internals — what compilers do that we take for granted, how type systems make certain bugs structurally impossible
  • Craft — the small decisions that separate code you’re proud of from code you apologize for in reviews

What this isn’t

A place for hot takes. I’m slow to form opinions and I’d like these posts to reflect that. If something here turns out to be wrong, I’ll update it — not delete it.

The setup

The Astro framework logo on a dark background — clean, modern, minimal

This blog is built with Astro, Tailwind CSS, and deploys as a fully static site. The source will be on GitHub eventually. Posts are Markdown files in a content collection; syntax highlighting is handled by Shiki with a dual light/dark theme.

// The entire "database" is just this:
const posts = await getCollection('blog', ({ data }) => !data.draft);

There’s something satisfying about a blog whose entire backend is a filesystem and a static build step.


More soon.

☾  ⛤︎  ────────  ⛤︎  ☽
so it is written · so it is bound
☾ return to the archive ☽
inkspell
© 2026 inkspell RSS