Ghost Spam Signups Suck
A summary of newsletter bombing and fake Ghost subscriber signups - what it is, why it happens, and how to mitigate it.
Andrew Marder's personal blog about data science, economics, and technology
A summary of newsletter bombing and fake Ghost subscriber signups - what it is, why it happens, and how to mitigate it.
A simple operating procedure for maintaining a second brain.
How I replaced ChatGPT with a self-hosted Open WebUI setup using OpenRouter for zero-retention LLM access, SearXNG for web search, and more.
Tech is political, this blog is my form of protest
Turning an old Kindle into a TRMNL e-ink dashboard
How I set up KOReader on my Kindle and phone, with books synced across both devices via Calibre-Web and OPDS.
Notes from my first few days with GrapheneOS
Step-by-step guide to syncing your Fastmail contacts and calendars on Android using DAVx⁵.
How I organize work and personal tasks in Super Productivity with cross-device sync.
A self-hosted monitoring tool with status pages, ping history, and email alerts.
Ghost is my top pick for a self-hosted newsletter.
A single-node Kubernetes cluster on Hetzner Cloud for about $4/month using hetzner-k3s, Helmfile, and cert-manager.
A list of sites I read, follow, or recommend.
How to set up Immich so migrating to another tool in the future will be easy.
A step-by-step guide to self-hosting Keila with Docker Compose and a Cloudflare Tunnel.
Why I switched from Gmail to Fastmail, and why Proton Mail didn't work for me.
Some notes on my experience using Google Analytics, Piwik/Matomo, Plausible, and Umami.
Why I switched from Plausible Analytics to Umami for my blog's web analytics.
Browse the default apps used by 400+ IndieWebbers.
When you post something on the web, it should belong to you, not a corporation.
The default apps I use at home.
A back-of-the-envelope calculator for comparing the financial returns of investing in solar panels versus the stock market.
Create beautiful presentation slides from Markdown using Astro and reveal.js
A log of changes to this blog
My no-nonsense review of Proton
A beginner's guide to Meshtastic with tips for getting started.
What is the blog about?
How I'm hosting my new newsletter for free
Building a $1,000 home server focused on upgradability
How I self-host Immich to manage my digital photos.
A quick post describing why and how I'm moving my data away from Google.
A checklist for configuring Mozilla Firefox for a more private browsing experience.
Some notes on how I use the Viwoods AiPaper.
A quick guide to setting up Zotero for reference management with PDF syncing via Dropbox
My current RSS setup, including the software I use and the feeds I follow for staying up-to-date with data science, programming, and other fun content.
NPR's Best Books + Amazon Data = Great way to find good (short) books
My top 8 retail therapy items based on my Amazon order history from the past 5 years.
How I use AI for coding and writing.
After switching from Google Analytics to Piwik in 2016, I've now moved to Plausible Analytics so readers can focus on the content without thinking about cookies.
An interactive radial tree visualization using D3.js, also lots and lots of robots!
Introducing whispy, a Python wrapper around whisper.cpp that makes speech-to-text transcription effortless on Mac. Record, transcribe, and paste - perfect for writers who want to avoid over-editing their first drafts.
A concise overview of the core plugins I use in Obsidian and how they fit into my workflow.
A checklist for configuring Mozilla Firefox for a more private browsing experience.
A new web app that makes Massachusetts municipal data easy to explore and compare
An open-source indoor cycling training app built with Python that connects to smart trainers, tracks metrics, and uploads to Strava
A collection of self-portraits (three at the moment). I swear I'm the healthy kind of narcissist.