It turns out Claude Desktop connectors are just plain MCP servers sitting on disk, and Claude Code can run the same server from its own config. Install once and both clients get the integration. I had Fantastical, my calendar app, talking to Claude Code in about 10 minutes.
I already had the Fantastical connector installed in Claude Desktop, which raised the obvious question: where does Desktop keep the server it actually runs? The answer is that each installed connector lives here:
Read MoreShort thoughts now sit in the feed next to full posts and links. Every version of this blog lowers the bar for posting a little more. That is the point.
The short version: if the recovery IP on a UDM-SE does not respond, remove any SFP+ module and try again.
To boot the device into recovery mode, hold the reset button with a paperclip
while you power it on. The device then binds the recovery IP, 192.168.1.30,
to the first interface it sees as “up”.
Here is the trap. An installed SFP+ module will probably report “up” before
any of the RJ45 LAN ports do. The recovery IP binds to the SFP+ interface,
and you sit there wondering why you cannot ping 192.168.1.30 from a LAN
port. Remove the SFP+ module, power the device back into recovery mode, and
the LAN ports work.
Unix file systems support 2 kinds of link: hard links and symbolic links.
Both come from the same command, ln, but they work in very different ways.
This post explains how each kind works. It then covers where Linux and the
BSDs, including macOS, disagree.
A file on disk is not really a name. It is an inode: a numbered record that holds the file’s metadata and points to its data blocks. The inode stores the owner, the permissions, the timestamps, and the size. It does not store the file name.
Read MoreThis blog is built with Hugo and lives in the same
repository as my other experiments. There’s no theme dependency and no build
tooling to maintain — just markdown files in blog/content/posts/ and a
handful of templates.
The fun part is the publishing workflow: I can post from my phone by opening
a Claude Code session and saying “new blog post about X.” Claude writes the
markdown, commits it to main, and a GitHub Actions workflow builds the site
and deploys it here.
Search engine for openly licensed media. It powers the hero image fetcher on this blog: every search is filtered to CC0 and public domain.