Skip to content

Instantly share code, notes, and snippets.

View daveio's full-sized avatar
🧑‍🎤

Dave Williams daveio

🧑‍🎤
View GitHub Profile
@daveio
daveio / ZERO-TRUST.md
Created May 31, 2025 19:30
Using Zero Trust for next.dave.io

Cloudflare Zero Trust Migration Plan

Executive Summary

This document outlines a comprehensive migration strategy from our current custom JWT authentication system to Cloudflare Zero Trust Access. The plan preserves our stateless architecture while leveraging Cloudflare's enterprise-grade security infrastructure, providing improved security posture, simplified management, and seamless integration with our existing Nuxt 3 + Cloudflare Workers stack.

Current State Analysis

Existing Authentication Architecture

@daveio
daveio / CDN.md
Created May 31, 2025 19:29
Using a CDN for next.dave.io

CDN Optimization Strategy

Because apparently we're not fast enough for the internet's attention span of a goldfish.

The Current State of Affairs

Your Cloudflare Worker is doing okay, but it's not exactly making the most of Cloudflare's CDN muscle. Right now you've got the equivalent of a Ferrari stuck in first gear - it works, but you're missing out on some serious performance gains.

Static Asset Optimization (The Low-Hanging Fruit)

@daveio
daveio / MCP.md
Last active May 30, 2025 18:15
MCP explainer

The Model Context Protocol (MCP): A Friendly Guide to AI's New Best Friend

Or: How I Learned to Stop Worrying and Love Standardized AI Integrations

What is MCP, and Why Should You Care?

The Model Context Protocol (MCP) is Anthropic's answer to a problem that's been plaguing the AI world: "How do we let AI models talk to literally everything without it turning into a security nightmare or a compatibility hellscape?"

Think of MCP as the universal translator between AI models (like me!) and the vast ecosystem of tools, databases, and services that humans actually use to get work done. Before MCP, connecting an AI to your Notion database, Linear tickets, or custom APIs was like trying to plug a USB cable into a headphone jack – technically possible with enough adapters and cursing, but hardly elegant.

@daveio
daveio / proof.md
Last active May 28, 2025 16:59
Keyoxide proof

openpgp4fpr:729A7FAAB95A78A7AAB70E06B22EFAE146E2BB7E

@daveio
daveio / EDITING-BLUESKY-POSTS.md
Created May 26, 2025 19:49
Editing Bluesky Posts

Editing (Replacing) Bluesky Posts with the goat CLI

This guide explains how to edit posts on Bluesky using the goat command-line interface (CLI) for the AT Protocol.

THIS MAY NOT WORK. THIS IS EXPERIMENTAL. IT'S ONLY ONLINE SO I CAN READ IT WHILE I HAVE A SMOKE. YOU HAVE BEEN WARNED.

Understanding the Technical Background

The AT Protocol (which powers Bluesky) doesn't support direct "editing" of posts in the traditional sense. Instead, editing a post requires:

@daveio
daveio / entry.md
Last active May 24, 2025 16:42
BLOG: Test
@daveio
daveio / catppuccin-mocha-marked.css
Last active May 23, 2025 21:20
Catppuccin Mocha based Marked.app CSS
/*
================================================================================
Catppuccin Mocha Theme for Marked.app
================================================================================
Version: 2.0.0
Last Updated: 2025
Author: Dave Williams (<https://github.com/daveio>)
License: MIT
DESCRIPTION:
@daveio
daveio / routeros-policy-routing.md
Last active May 23, 2025 21:33
RouterOS policy routing tutorial
@daveio
daveio / use-mise.md
Last active July 3, 2025 09:25
Use mise.

Use mise.

If you're not using mise as your version manager, you really should consider it.

It's become my primary way of installing things, only falling back to Homebrew when absolutely necessary.

Combined with chezmoi this keeps my tooling in sync across every environment I work in.

Shims

@daveio
daveio / homebrew.mxcl.aria2.plist
Created May 12, 2025 20:56
aria2 launchd plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>LC_MESSAGES</key>
<string>C</string>
</dict>
<key>Label</key>