Tag: Web

50 posts

Putting this blog on ATProto with standard.site

Mirroring a static Hugo blog onto ATProto with standard.site and Sequoia, plus the GitHub Actions wiring that republishes the records on every push without any manual steps.

·
Jun 6, 2026

Vite SPA Static SEO Meta Tags Without SSR

How I handle static SEO meta tags, canonical URLs, Open Graph tags, and prerendered HTML for Vite and Vue SPAs without adding SSR.

·
May 28, 2026

Kamal vs Coolify for a Solo SaaS

My practical Kamal vs Coolify comparison for solo SaaS apps: when I prefer one-command deploys, when a dashboard helps, and why I use Kamal with Hetzner.

·
May 28, 2026
Mastering Markdown

Mastering Markdown

I've loved Markdown since the day it was a Daring Fireball post. It's a simple rich text format that gets the job done, and it's used everywhere. Markdown is supported out of the box on PowerShell 6+, using the ConvertFrom-Markdown command.

·
May 26, 2026

You Can Publish Without Replit

Replit and browser app builders are fine for sketches. If the app matters, I want source code, a normal repo, terminal agents, and boring deployment.

·
May 25, 2026

Stripe Billing Setup for SaaS: The Parts Nobody Tells You

·
May 24, 2026

Hetzner vs Vercel: What I Pay to Run My SaaS Apps

My SaaS hosting cost comparison for Hetzner, Vercel, and Render: real numbers from running production apps on Hetzner VPS servers with Kamal and PostgreSQL.

·
May 21, 2026

You Do Not Need Firebase and Supabase

·
May 16, 2026

Bluesky API Info

A reference page for making stuff using Bluesky's public API.


Yer's Notes icon
Yer's Notes
notes.yernemm.xyz
·
May 7, 2026
Using Leaflet and Obsidian/Quartz together

Using Leaflet and Obsidian/Quartz together

Synchronising my Quartz-hosted notes and Atmosphere blogs

·
May 7, 2026

ATProto Stuff

A summary of interesting projects in the ATmosphere. Things online built on the AT Protocol, and other information surrounding it.


Yer's Notes icon
Yer's Notes
notes.yernemm.xyz
·
May 7, 2026

Devlog: HTML template

Just a quick update on what I'm working on this week.

·
May 2, 2026

If You Vibe Code an App for Work, Put the Backend in Charge

Someone on Reddit asked about deploying a custom vibe-coded app for work, installed on a local server. They could not code their way through problems,

·
Apr 30, 2026

Magic Link Sign Up and Login for SaaS

No passwords. No separate registration form. No "confirm your email" step after sign up. The user enters an email address, gets a link, clicks it, and

·
Apr 30, 2026

Why I Self-Host My SaaS Apps on Hetzner

Why I self-host my SaaS apps on Hetzner with Kamal: lower hosting costs, more control, local PostgreSQL performance, and simpler deployment in 2026.

·
Apr 7, 2026

Terraform for Indie Hackers: Just Enough Infrastructure as Code

How I use Terraform with Kamal 2 to provision a Hetzner server, configure DNS, and deploy small SaaS apps without paying for a separate PaaS per project.

·
Apr 6, 2026

One-Command Deploy: How Kamal 2 Changed How I Ship

Push-to-deploy has been a solved problem for a while. I used Heroku years ago and Render for the past 2 years — both handle deployment well. But I

·
Mar 31, 2026

Magic Link Auth vs Google Login: When to Use Which

·
Mar 30, 2026

HTML Templates... The Journey Continues

Musings on HTML templating

·
Mar 13, 2026

Dev Toggles for Simulating UI States

When building frontend apps, getting the UI into different states is tricky because local APIs are fast and rarely fail. You want to see what happens

·
Jan 5, 2026

MyOG.social - Automatic OG Image Generation

I built MyOG.social, a tool that automatically generates OG images for your pages. OG images are the preview images that show up when you share a link

·
Dec 27, 2025

Configuring Cloudflare Tunnel to Expose Servers for Local Development, Webhooks etc

I needed a way to expose local dev servers to the internet for webhook testing. ngrok works, but Cloudflare Tunnel is free and lets you use your own

·
Nov 28, 2025

How I Set Up PostHog Analytics Across Frontend and Backend

How I set up PostHog analytics across frontend and backend apps, including event tracking, user identification, privacy choices, and server-side events.

·
Nov 10, 2025

More Programming Thoughtleadership re: dependencies

I'm still thinking about this thing that everyone pretty much decided to stop thinking about in 2019.


C
Charles Harries
charlesharri.es
·
Aug 18, 2025

Ghost CMS

Some thoughts on Ghost after trying it out for approx. 10 minutes.


C
Charles Harries
charlesharri.es
·
Aug 6, 2025

Dia browser

Here are some bad ideas that you could wage your company on, if only you can drum up the adequate hype.


C
Charles Harries
charlesharri.es
·
Jun 2, 2025

Rationalism

Being irrational.


C
Charles Harries
charlesharri.es
·
Mar 7, 2025

Stacked middleware vs embedded delegation in Go

Compare middleware stacking with embedded delegation in Go HTTP servers. Learn when to override ServeHTTP for simpler request handling.

·
Mar 5, 2025

Now: 10 February - 16 February 2025

In the office, on top of hills, on trains, in fields, on the computer. Oh I've been ever-y-where, man, I've been ever-y-where


C
Charles Harries
charlesharri.es
·
Feb 17, 2025

The Foo Playground Controller

·
Jan 18, 2025

Link blog in a static site

Build a link blog without a backend using Hugo and markdown. Track reading, articles, and activities with yearly detail pages and RSS filtering.

·
Jan 5, 2025

Terraform and Kamal for Digital Ocean Demo Repositories

A Terraform and Kamal 2 demo repo for deploying a frontend, backend, and database stack on one VPS, plus notes on my current Hetzner setup.

·
Oct 31, 2024

Domain squatting

The story of why you’re on charlesharri.es.


C
Charles Harries
charlesharri.es
·
Oct 17, 2024

Building A Customizable Framer Component

A technical walkthrough of building a customizable Framer Code Component for Buttondown email signups, complete with Property Controls and open source code.


Build.ms icon
Build.ms
build.ms
·
Oct 14, 2024

I made a Website/Service Uptime Monitor

Hi, I started a side project recently. It's currently an MVP. It’s a monitoring tool for websites and web services. You give it a list of URLs and

·
Aug 9, 2024

Getting hacked

When your Facebook account gets hacked, you're on your own. You may be saved by either 1. luck, or 2. having two-factor authentication enabled.


C
Charles Harries
charlesharri.es
·
May 5, 2024

More cache busting

How to cache bust static assets when you're just running a naïve script for website deploys.


C
Charles Harries
charlesharri.es
·
Apr 18, 2024

Dockerise the website

Docker is very good and very powerful and absolutely not what I need in my life right now.


C
Charles Harries
charlesharri.es
·
Apr 17, 2024

ETag and HTTP caching

Implement client-side HTTP caching with ETag headers. Learn If-None-Match, 304 Not Modified responses, and weak validation in Go servers.

·
Apr 9, 2024

Crossing the CORS crossroad

Troubleshoot CORS errors with this practical guide. Learn Access-Control-Allow-Origin headers, preflight requests, and domain allowlisting in Go.

·
Mar 11, 2024

Battery on Arc

Arc works with my crummy old laptop now! Is that enough to make me want to switch to it fulltime?


C
Charles Harries
charlesharri.es
·
Dec 21, 2023

Listen to Wikipedia

It's possible to listen to Wikipedia being edited in realtime—and it sounds pretty good!


C
Charles Harries
charlesharri.es
·
Dec 9, 2023

Does web design matter

Is there any point in making websites look good, beyond their normal ease of use? And if so—who are we doing it for?


C
Charles Harries
charlesharri.es
·
Dec 4, 2023

Google the search engine

Google Search has been having a Rough Time of it lately, but don’t feel bad: it’s their own fault.


C
Charles Harries
charlesharri.es
·
Nov 8, 2023

Vendoring

No build step. No dependency management. Radically simplify the web. Transcend npm. I believe in you.


C
Charles Harries
charlesharri.es
·
Nov 7, 2023

Web devs: not great

Remember when I said the web is good? I lied! Sort of. It's web developers who are bad.


C
Charles Harries
charlesharri.es
·
Nov 6, 2023

Manual deploys

Dropping CI/CD with GitHub Actions and going back to deploying my website by hand. It's artisan!


C
Charles Harries
charlesharri.es
·
Sep 19, 2023

Fujichia

A website that is actually a spooky castle that you can go visit from the comfort of your very own personal sofa.


C
Charles Harries
charlesharri.es
·
Sep 18, 2023

Self-hosted Google Fonts in Hugo

Host Google Fonts locally in Hugo without CDN dependency. Download woff2 files, configure CSS, and improve performance while maintaining GDPR compliance.

·
Sep 13, 2023

Colour mode

You've heard of dark mode, now check out colour mode.


C
Charles Harries
charlesharri.es
·
Sep 6, 2023