April 2026 TLDR setup for Ollama + Gemma 4 on a Mac mini (Apple Silicon) — auto-start, preload, and keep-alive
- Mac mini with Apple Silicon (M1/M2/M3/M4/M5)
- At least 16GB unified memory for Gemma 4 (default 8B)
- macOS with Homebrew installed
April 2026 TLDR setup for Ollama + Gemma 4 on a Mac mini (Apple Silicon) — auto-start, preload, and keep-alive
| #!/usr/bin/env bun | |
| /** | |
| * ============================================================ | |
| * PROOF: Anthropic is specifically blocking "OpenCode" | |
| * in Claude Code OAuth system prompts | |
| * ============================================================ | |
| * | |
| * Video covering this script here: https://www.youtube.com/watch?v=G9YX6StP2-M | |
| * | |
| * This script demonstrates that Anthropic has specifically blocked |
| const readline = require('readline'); | |
| const fs = require('fs'); | |
| const rl = readline.createInterface({ | |
| input: process.stdin, | |
| output: process.stdout | |
| }); | |
| const filename = "chat_export.txt"; | |
| let datetime_str = ""; |
It turns out that MacOS Tahoe can generate and use secure-enclave backed SSH keys! This replaces projects like https://github.com/maxgoedjen/secretive
There is a shared library /usr/lib/ssh-keychain.dylib that traditionally has been used to add smartcard support
to ssh by implementing PKCS11Provider interface. However since recently it also implements SecurityKeyProivder
which supports loading keys directly from the secure enclave! SecurityKeyProvider is what is normally used to talk to FIDO2 devices (e.g. libfido2 can be used to talk to your Yubikey). However you can now use it to talk to your Secure Enclave instead!
Cloudflare, the CDN provider, suffered a massive outage today. Some of the world's most popular apps and web services were left inaccessible for serveral hours whilst the Cloudflare team scrambled to fix a whole swathe of the internet.
And that might be a good thing.
The proximate cause of the outage was pretty mundane: a bad config file triggered a latent bug in one of Cloudflare's services. The file was too large (details still hazy) and this led to a cascading failure across Cloudflare operations. Probably there is some useful post-morteming about canary releases and staged rollouts.
| import Database from 'better-sqlite3'; | |
| import { createDatabaseClient } from './proxy.ts'; | |
| // 1) Create an in-memory DB and your table(s). | |
| const db = new Database(':memory:'); | |
| db.exec(` | |
| CREATE TABLE users ( | |
| id TEXT PRIMARY KEY, | |
| data JSON | |
| ); |
| #!/bin/bash | |
| # Counters for Maven and Gradle projects | |
| maven_count=0 | |
| gradle_count=0 | |
| echo "Starting to clean projects..." | |
| # Recursively find directories containing pom.xml and run 'mvn clean' | |
| while IFS= read -r -d '' file; do |
| import gradio as gr | |
| import whisper | |
| from translate import Translator | |
| from dotenv import dotenv_values | |
| from elevenlabs.client import ElevenLabs | |
| from elevenlabs import VoiceSettings | |
| # requirements.txt | |
| """ | |
| gradio |
This guide is for homelab admins who understand IPv4s well but find setting up IPv6 hard or annoying because things work differently. In some ways, managing an IPv6 network can be simpler than IPv4, one just needs to learn some new concepts and discard some old ones.
Let’s begin.
First of all, there are some concepts that one must unlearn from ipv4:
Concept 1