astro-feedback-board: anonymous feedback for Astro sites
Anonymous, moderated feedback, votes and dev.to-style reactions for Astro sites, served by one Cloudflare Worker with a small admin panel.
34 posts in total
Anonymous, moderated feedback, votes and dev.to-style reactions for Astro sites, served by one Cloudflare Worker with a small admin panel.
An Astro integration that syndicates posts to dev.to at build time: uploads images, skips unchanged posts via a content hash, drafts new ones first.
A folder-driven Astro gallery package: justified and editorial layouts, a responsive grid, a slideshow, an EXIF-date timeline and a GDPR-friendly photo map.
An Astro integration that parses your final static HTML and fails the build on SEO violations: short titles, missing h1, thin meta, broken links.
A personal tribute to my Labrador Carlo: saying goodbye, grief, and the years of walks and small moments that stay with you.
Three approaches to hand gesture detection for Patioplanner: proximity sensors, camera brightness, and image diffing. Only one worked reliably.
How an overgrown front yard became a paved entrance, including one very stubborn yew tree and an overloaded Tiguan.
How I self-hosted Umami Analytics, why PostgreSQL hated my password, and what Cloudflare Access does to tracking endpoints.
How to get Java JVM metrics from Denodo on ECS Fargate into CloudWatch using the Prometheus JMX Exporter when the native JMX integration won't work.
How to manage Docker Secrets with SOPS, age and Portainer, instead of typing passwords into the UI after every deploy.
Cloudflare Access puts private services behind authentication without exposing them to the public internet.
How I replaced my Fritz!Box 7690 with a Ubiquiti Cloud Gateway Ultra. WAN configuration, VLAN setup, and whether the ISP even notices.
How I built a macOS prank app that locks the screen with transparent overlays, blocks all input, and trolls anyone who touches your computer.
How I turned AdGuard Home into a network-wide ad and tracking blocker with Docker Macvlan, dual-stack IPv6, and Traefik integration.
Keeping an eye on the homelab with Grafana and Loki, and blocking the bots that keep scanning for PHP files.
How I got my Gitea data back after a Docker cleanup deleted the volume, by extracting it straight from a Proxmox backup.
How an Intel i219-LM network card in power-saving mode brought down the entire LAN and how I fixed it with kernel tuning.
How I securely expose my self-hosted services to the internet using Cloudflare Tunnels, without opening a single port on my router.
How a memory problem on my NAS led me to build an energy-efficient home lab with a Lenovo ThinkCentre M920q.
Why Conway's Game of Life keeps my attention, and what it shows about complexity coming out of a few simple rules.
A free web tool that adds up what you have spent on the lottery and compares it with an ETF over the same period.
Running a private Git instance and a media server on a Synology NAS, reachable through a Cloudflare Tunnel with no port forwarding.
How I created a Go-based tool that uses SCP to solve Let's Encrypt HTTP-01 challenges for web hosts without API access.
How I used CadQuery, a Python CAD scripting framework, to design a small garden house instead of fighting a GUI.
A Python script that checks Eurojackpot tickets against past draws and adds up what the habit costs over time.
A short Python script that pulls the embedded cover art from her MP3s and saves it as cover.jpg per album.
How I brute-forced the lost four-digit PIN of an RNS 510 over its serial port with a small Python script.
A VS Code launch config for debugging Streamlit apps: it runs the streamlit module, not the current file, so your breakpoints hit.
How to export Go code as a C-Library and write a Python wrapper to reuse Go functionality in Python.
When to pass a Go type by value vs by pointer, which built-in reference types never need a pointer, and what benchmarks reveal about the real cost.
A workaround for decrypting Travis CI secret files: a throwaway branch plus the built-in decrypt step ship the plaintext out over FTP/SFTP from the CI job.
How to block traffic between FritzBox and OpenWrt guest WiFi network using firewall zone configuration.
Step-by-step guide to flashing OpenWrt 19.07 onto a TP-Link Archer C6 v2 via TFTP recovery when the OEM web interface rejects the firmware image.