# Maddie D. Reese Maddie D. Reese builds strange, working AI systems and explains them in public, with a focus on helping non-traditional builders become more technical through AI-assisted creation. She publishes as @maddiedreese. Primary contact: - Email: maddie@maddiedreese.com - Website: https://maddiedreese.com/ - X / Twitter: https://x.com/maddiedreese - LinkedIn: https://linkedin.com/in/maddiedreese - YouTube: https://youtube.com/@maddiedreese - Hugging Face: https://huggingface.co/maddiedreese - GitHub: https://github.com/maddiedreese - Message Maddie ticket printer page: https://maddiedreese.com/message/ - Message Maddie pager page: https://maddiespager.com/ ## Summary Maddie approaches problems like puzzles. Her work sits between AI tools, hardware experiments, local models, public technical demos, online education, community building, and clear explanations. Before focusing on AI projects, she spent 13+ years creating educational content and leading online communities for non-technical audiences, teaching tens of thousands of people how to use tools, workflows, and systems to build online businesses and investment operations. Her current point of view is the builder on-ramp: helping technically curious people become more technical through approachable tools, clear mental models, playful demos, and real implementation detail. She has won four hackathons using AI-assisted development since August 2025. ## Project Themes - Developer tools and infrastructure: Tacket, Tokens, Usage, Notify, monitorthesituation, multAIplayer, maddie-bench, Ask Maddie's API, and Ticket Printer OS. - Local models and constrained inference: Minionese LM, paLLM, LLM on a 1998 iMac G3, Gemma on Nintendo Switch, and a transformer language model on a Game Boy Color. - Agent interfaces and hardware demos: Codex or Claude Code through Palm devices, e-ink displays, a 1998 iMac G3, a Game Boy emulator, an Apple Watch, and a Nintendo Switch. - Physical computing and ambient AI: X pager, Ticket Printer OS, XTeInk Tamagotchi, rotary phone OpenClaw, and Claude Code through a Furby. - Retro computing and playful constraints: Nintendo Switch tool chains, Ryujinx on Switch, Joy-Con gesture coding, Flying Grimaces, and Doom on Apple Watch. - Hackathon apps and rapid prototypes: 4x hackathon winner since August 2025, plus public event tools such as Unofficial SDCC Planner. ## maddie-bench - Site section: https://maddiedreese.com/#maddie-bench - Full benchmark: https://maddiedreese.com/maddie-bench/ - GitHub: https://github.com/maddiedreese/maddie-bench - Benchmark: maddie-bench - Track: structured-drawing - Version: 0.1 - Release date: 2026-06-29 - Last updated: 2026-07-01 - Status: Official v0.1 results published. - Citation: Reese, M. D. maddie-bench Track B: Structured Drawing, 2026. - What it is: maddie-bench Track B is a structured-drawing benchmark. The run configuration uses Maddie's profile picture as the reference image, a 1205 x 1448 canvas, a recommended maximum of 30 drawing commands, and JSON-schema responses. - Judging: panel pairwise Elo. GPT, Claude, and Gemini judges compare blind image pairs against the criterion, "Which rendered image better recreates Maddie's profile picture?" - Selected official v0.1 results: - Reference profile picture: maddie-bench/reference/maddie-target.jpg. - Best completed result: sakana/fugu-ultra, Elo 1702, image maddie-bench/results/sakana__fugu-ultra/official-v0.1/final.png. - Lowest completed scored result: rekaai/reka-edge, Elo 262, image maddie-bench/results/rekaai__reka-edge/official-v0.1/final.png. ## Projects The project information below is drawn from the project entries on https://maddiedreese.com/. Each project group lists the relevant project notes, source X post, GitHub link when available, and local media asset paths used by the site. The live Message Maddie ticket-printer form is available at https://maddiedreese.com/message/. It submits messages to the ticket printer backend and uses the Netlify function at /.netlify/functions/log-ticket for optional ticket logging. ### Tacket - Site anchor: https://maddiedreese.com/#tacket-project - Website: https://tacket.dev - GitHub: https://github.com/maddiedreese/tacket - Entry: Tacket - Date: June 2026 - GitHub/project notes: GitHub: Tacket moves complete AI chat threads into coding agents without turning them into summaries. It is a local-first Mac app with a Chrome extension for ChatGPT, Claude, and Gemini. Click the extension on a supported chat page, save the full thread as a local .tacket bundle, search your saved transcript library, then transfer the raw transcript into Codex or Claude Code. Tacket is free and open source, with no accounts, analytics, telemetry, or backend that can see your chats. Tacket is still in essence pre-release. - Website notes: Website: Tacket gives individual AI chats a place to live after the chat window is gone: searchable local files, reusable browser transcripts, exact local imports, reviewed desktop app captures, and one-click transfer to Codex, Claude Code, or your clipboard. macOS is available now, and Windows support is planned next. - Media: - image: assets/media/tacket-app-library.png (Tacket Mac app library screenshot) ### Tokens - Site anchor: https://maddiedreese.com/#tokens-project - GitHub: https://github.com/maddiedreese/tokens - Source links: - X post: https://x.com/maddiedreese/status/2084480158321557733?s=20 - LinkedIn post: https://lnkd.in/p/dek33s7A - Entry: Tokens - Date: August 2026 - GitHub/project notes: GitHub: Tokens is a Codex skill that reports token usage through native ChatGPT Scheduled Task notifications. - GitHub/project notes: GitHub: Tokens reports daily, weekly, and monthly token usage at times the user chooses; shows compact totals for the current period and since Tokens began tracking; reads usage through the Codex app-server bundled with ChatGPT Desktop; keeps raw telemetry and accounting checkpoints on the user's machine; reuses one ChatGPT cloud relay task instead of creating a new conversation every time; and delivers each report through a literal server-side ChatGPT Scheduled Task eligible for native task push notifications. - GitHub/project notes: GitHub: Tokens uses no browser automation, external connector, maintainer service, or third-party database. It runs no hourly poller and sends no milestone alerts. ### Usage - Site anchor: https://maddiedreese.com/#usage-project - GitHub: https://github.com/maddiedreese/usage - Source links: - X post: https://x.com/maddiedreese/status/2084472400406822915?s=20 - LinkedIn post: https://lnkd.in/p/dek33s7A - Entry: Usage - Date: August 2026 - GitHub/project notes: GitHub: Usage is a Codex skill that watches ChatGPT/Codex usage limits and reports meaningful changes through native ChatGPT Scheduled Task notifications. - GitHub/project notes: GitHub: Usage reads remaining ChatGPT/Codex usage directly from the Codex app-server; checks slowly while capacity is healthy and more often as it becomes scarce; warns once below 20%, once below 5%, and once at 1% or exhaustion; treats 1% and exhausted as one critical episode; detects scheduled, early, and banked resets after a successful fresh check; sends one reset notification; and tracks multiple rate-limit windows independently. - GitHub/project notes: GitHub: Usage uses one persistent in-app task, one same-task heartbeat, one ChatGPT Work task, and one reusable server Scheduled Task. It creates no task per check, no conversation per notification, installs no monitoring software, and uses no external service. ### Notify - Site anchor: https://maddiedreese.com/#notify-project - GitHub: https://github.com/maddiedreese/notify - Source X posts: - https://x.com/maddiedreese/status/2084503640048533726?s=20 - https://x.com/maddiedreese/status/2085123717148152051?s=20 - Entry: Notify - Date: August 2026 - Tweet text excerpt: I built a free open source Skill that allows Codex to send native ChatGPT mobile push notifications for almost anything, without a separate notification app or custom push backend. Want a notification when: A build finishes? A PR is merged? A website goes down? A product is back… - Tweet text excerpt: I discovered you can make Codex send free push notifications to your phone for basically anything you want, through the regular ChatGPT mobile app. Codex chat -> sends to a ChatGPT Work task -> creates a regular ChatGPT Scheduled Task -> sends a native push. I turned it into a… - GitHub/project notes: GitHub: Notify is a Codex skill that turns almost any Codex workflow into a native ChatGPT push notification. - GitHub/project notes: GitHub: Notify configures one persistent ChatGPT Work task that can create or update literal server-side Scheduled Tasks. Those Scheduled Tasks are what produce native ChatGPT push notifications. - GitHub/project notes: GitHub: Notify groups equivalent events into reusable channels: Notify · Builds, Notify · Monitoring, Notify · Downloads, and Notify · General. One persistent ChatGPT Work task named Notify manages all channels, so Notify does not create a new conversation for every notification. ### monitorthesituation - Site anchor: https://maddiedreese.com/#monitorthesituation-project - GitHub: https://github.com/maddiedreese/monitorthesituation - Source X post: https://x.com/maddiedreese/status/2085152178390634732?s=20 - Entry: monitorthesituation - Date: August 2026 - Tweet text: Monitor any situation you want, directly from your terminal pic.twitter.com/xWR1ck8Mo0 - GitHub/project notes: GitHub: monitorthesituation monitors any situation you want, directly from your terminal, through video feeds rendered in ASCII. - GitHub/project notes: GitHub: monitorthesituation runs entirely inside your existing terminal. It opens an alternate screen, arranges your feeds into an adaptive grid, and restores the terminal exactly as it found it when you quit. There is no desktop window, account, server, telemetry, recording, or bundled camera directory. - GitHub/project notes: GitHub: It renders several sources simultaneously in one terminal window; accepts HLS, RTSP, HTTP video, MJPEG, local video files, and USB webcams; offers Unicode half-blocks and classic ASCII rendering; supports color video and monochrome output; reconnects interrupted sources with bounded backoff; resizes dynamically with the terminal; and decodes everything locally through FFmpeg. - Media: - image: assets/media/monitorthesituation-demo.png (Six live video feeds rendered as a color terminal wall) ### multAIplayer - Site anchor: https://maddiedreese.com/#multaiplayer-project - Website: https://multaiplayer.com - GitHub: https://github.com/maddiedreese/multAIplayer - Source X post: https://x.com/maddiedreese/status/2079725263471116449?s=20 - Entry: multAIplayer - Date: July 2026 - GitHub/project notes: GitHub: multAIplayer is multiplayer Codex for trusted teams: discuss the work, steer one shared local Codex session, review what it changes, and hand hosting between teammates. - Website notes: Website: A completely free, open-source team room for the conversation, code, tools, and decisions around a shared Codex session. The site describes desktop and CLI clients for coding with Codex together, with one active host supplying the project, local tools, credentials, and Codex account. - GitHub/project notes: GitHub: Start a private project room, invite people you trust, and work with Codex as a team. Everyone can follow the conversation, propose the next turn, inspect structured progress, review changes, and use room-scoped files, diffs, terminals, browser previews, Git, and GitHub workflows. One active host supplies the project, local tools, credentials, and Codex account; an explicit handoff can move that responsibility to another verified member. - Media: - image: assets/media/multaiplayer-og.png (multAIplayer preview) ### Unofficial SDCC Planner - Site anchor: https://maddiedreese.com/#unofficial-sdcc-project - Website: https://unofficialsdcc.com/ - Source X posts: - https://x.com/maddiedreese/status/2079795123668561937?s=20 - https://x.com/maddiedreese/status/2080016649218867658?s=20 - Entry: Unofficial SDCC Planner - Date: July 2026 - Website notes: Website: Build an unofficial Comic-Con 2026 schedule across official programming, offsites, exhibitor products, and exclusives. - Website notes: Website: One lightweight planner for Comic-Con programming, offsites, products, exclusives, conflicts, calendars, and the exhibit hall. - Source X post excerpt: I’m heading to San Diego Comic Con this week! I’ve wanted a way to build a schedule that includes literally every single SDCC event (from panels to offsites and more) ever since I started attending the convention in 2015. So, I figured I’d build it myself! - Media: - image: assets/media/unofficialsdcc-og.png (Unofficial SDCC Planner preview) ### X pager - Site anchor: https://maddiedreese.com/#x-pager-project - Pager site: https://maddiespager.com - Entry: X pager - Date: June 26-27, 2026 - Source X posts: - https://x.com/maddiedreese/status/2070659446876041646/video/1 - https://x.com/maddiedreese/status/2071086290578366635/photo/1 - Tweet text: I built a Twitter pager! Every time someone interacts with my account (follows, likes, retweets, quote tweets, DMs, replies), I get a page You can also page me by texting 760-816-0288! And, yes, it came with a belt holster https://t.co/uBDmHhljbQ - Tweet text: Call me, Tweet me, if you wanna reach me I built an X pager! Here’s how it works: • @XDevelopers sends every interaction that anyone has with my account or tweets as Account Activity API events to a @Cloudflare Worker webhook. • The Worker verifies the X webhook signature using the X app secret. • The Worker parses the X event payload into pager notifications: - Likes become X LIKE user - Replies become X REPLY user - Quotes become X QUOTE user - Reposts become X REPOST user - Follows become X FOLLOW user • The Worker formats each notification into a short pager-safe subject/body. • The Worker sends each notification immediately through @Resend as an email, and logs it in my @Convex database. • Resend sends the email from a custom domain email to a Gmail address - This is necessary for now because the pager’s email address is through USA Mobility. They have very strict filtering that my new custom domain doesn’t pass (and I didn’t want to tie it to an established domain just in case). • Gmail receives the email and forwards it to the pager email address. • The pager email provider converts the forwarded email into a pager message. • The pager network operator transmits the page over its paging network. • The physical pager receives and displays the notification. I also have a website that works similarly if you want to page me directly: maddiespager .com FAQ: • Why did I choose such a complicated setup? - My pager network provider, Spok, does provide WCTP (Wireless Communications Transfer Protocol). However, it’s super rate-limited! I have it integrated as a fallback, but it isn’t ideal for the workflow I want for this project. This was actually the cleanest setup I could come up with until my domain gets seasoned. • How’s the network coverage? - Spotty! Plus, my pager uses a radio frequency that doesn’t penetrate the walls of my house well. So, the signal is nonexistent in my office :( - Media: - video: assets/media/2070659446876041646-1.mp4 (X pager demo) - image: assets/media/2071086290578366635-1.jpg (X pager build notes) ### Codex on a Palm Tungsten E2 PDA - Site anchor: https://maddiedreese.com/#codex-palm-tungsten-project - Entry: Codex on a Palm Tungsten E2 PDA - Date: June 19, 2026 - Source X post: https://x.com/maddiedreese/status/2068144159492632686/video/1 - Tweet text: You guys ever want to "run" Codex on your 21-year-old Palm Tungsten E2 PDA? Yeah, I know the feeling. So I made it possible! Here’s how it works: • The Palm acts as a tiny Bluetooth terminal, while the real Codex CLI runs on my Mac. • Started by trying the normal retro-computing route: PPP over Bluetooth, Palm telnet clients, Mocha, Ptelnet, etc. • That got stuck on Palm/macOS Bluetooth networking issues, especially PPP timeouts :( • Switched approaches and built a native Palm OS app instead. • The Palm app opens its own Bluetooth RFCOMM server. • The Mac connects directly to the Palm over Bluetooth channel 1. • The Palm draws a custom Codex-style screen with an ASCII box, model info, directory, permissions, and a prompt area. • The UI is intentionally simple black/white Palm drawing because some richer Palm drawing APIs were unstable on the actual device. • Added a real Palm FIELD control for text input so the built-in keyboard/Graffiti system can work properly. • Mapped the Palm’s center hardware button to submit the prompt. • On submit, the Palm sends the prompt over Bluetooth to the Mac. • The Mac bridge receives it, runs codex exec , cleans up the terminal wrapper text, and sends only the answer back. • The Palm receives the response and displays it in the Codex-style screen. • The final version is basically: type on Palm, press the middle button, Codex runs on the Mac, answer appears on Palm. I bought the Palm a few hours ago at Community Thrift here in SF, came directly to @UseCorgi Cafe, and built it over the past few hours :) fun afternoon! - Media: - video: assets/media/2068144159492632686-1.mp4 (Codex on a Palm Tungsten E2 PDA) ### paLLM - Site anchor: https://maddiedreese.com/#pallm-project - GitHub: https://github.com/maddiedreese/paLLM - Entry: paLLM - Date: June 21, 2026 - Source X post: https://x.com/maddiedreese/status/2068916662418518130/photo/1 - Tweet text: You do NOT need $15,000 worth of hardware to run a local model. You need a 2005 Palm Tungsten E2 PDA (which you can purchase at your local thrift store for $10.81 including tax). It has 26 MB of available storage, obviously plenty. Here’s an example of the output. I haven’t benchmarked it yet but it appears to be Fable-equivalent. - GitHub/project notes: GitHub: paLLM is a tiny transformer language model running locally on a Palm Tungsten E2. It is a custom Palm OS program that embeds a row-wise INT8 TinyStories-class model directly into Palm resources, runs inference on-device, and lets prompts be entered from the Palm input field. After the .prc is installed, there is no server in the loop during generation. - GitHub/project notes: GitHub: The current build includes a custom Palm OS app written in C, a Palm form with an editable input field, a 512-token tokenizer table, a TinyStories/llama2.c-style 260K-parameter checkpoint quantized row-wise to INT8, fixed-point inference code, and decoder guardrails. On the tested Tungsten E2, generation is roughly one token every seven seconds. - Media: - image: assets/media/2068916662418518130-1.jpg (paLLM output on a Palm Tungsten E2) ### Minionese LM - Site anchor: https://maddiedreese.com/#minionese-project - Hosted model: https://notaminion.com - GitHub: https://github.com/maddiedreese/minionese - Source X post: https://x.com/maddiedreese/status/2075446813835112660?s=46 - Entry: Minionese LM - Date: July 2026 - Tweet text: Bello! Introducing Minionese LM, a language model trained from scratch on my Mac mini by 5.6 Sol Based on Minionese, the language spoken exclusively by Minions (until now) pic.twitter.com/RAdEwzG3py - GitHub/project notes: GitHub: Minionese LM is a tiny conversational decoder-only Transformer trained entirely from scratch on an original Minionese-inspired dataset. It accepts short English or Minionese messages and replies in a playful, consistent Minionese project dialect. - GitHub/project notes: GitHub: This project does not use pretrained weights, film subtitles, screenplay text, iMessages, or code from the project that inspired the experiment. Minionese is an improvised fictional dialect rather than a language with fixed grammar, so this is explicitly an unofficial fan research project, not an official translator or an Illumination product. - GitHub/project notes: GitHub: The included local artifact was trained from random initialization for 5,000 batches and 9,981,697 sampled non-padding tokens. On 400 held-out behavioral prompts it achieved 99.0% intent/style/clean pass rate, with test perplexity 1.116 versus a 4.688 unigram baseline. - Media: - image: assets/media/notaminion-preview.png (Bello Terminal / Minionese OS) ### Ticket Printer OS - Site anchor: https://maddiedreese.com/#ticket-printer-os - Entry: Ticket Printer OS - Date: November 2, 2025 - Source X post: https://x.com/maddiedreese/status/1985076295575957936?s=20 - GitHub: https://github.com/maddiedreese/ticket-printer-os - Description: So excited to announce my first ever open source project! I’ve gotten so many messages about open sourcing the printer project, and it’s finally ready. Please let me know if you run into any issues, and especially if you try to build it yourself! Link below. - GitHub/project notes: GitHub: A web-based ticket submission system that automatically prints tickets on ESC/POS thermal printers connected to a Raspberry Pi. Users can submit tickets through a simple web interface, which are then automatically printed with timestamps and formatted output. The application consists of a web interface, a Flask-based API running on Raspberry Pi, multiple printer support for USB, Serial, Network, and Bluetooth-connected printers, optional Convex database logging, and built-in reCAPTCHA spam protection. - Media: - image: assets/media/1985076295575957936-1.jpg (Ticket Printer OS announcement) ### XTeInk Tamagotchi - Site anchor: https://maddiedreese.com/#xteink-tamagotchi-project - Entry: XTeInk Tamagotchi - Date: January 29, 2026 - Source X post: https://x.com/maddiedreese/status/2016776634263884008?s=20 - GitHub: https://github.com/maddiedreese/xteink-tamagotchi - Description: I gave my @openclaw a body and turned it into a Tamagotchi! Loaded custom sprites and firmware into an e-reader, then set up a Skill. Whenever I get a message from my moltbot/clawdbot on Telegram, it fires off the Skill and sends the message text and state to the e-reader. States: Idle - default; Alert - new message received from me; Thinking - processing/thinking; Talking - responding; Excited - task completed successfully; Sleeping - idle for 5+ minutes; Working - using a tool; Error - error at some point in the process. My favorite is the Excited sprite :) - GitHub/project notes: GitHub: XTeInk Tamagotchi transforms an XTeInk X4 e-ink display into a companion for your AI assistant. When your OpenClaw/Clawdbot/MoltBot responds to messages, thinks, or works on tasks, the display updates in real-time to show mood sprites, activity status, messages, and system status. - Media: - image: assets/media/2016776634263884008-1.jpg (XTeInk Tamagotchi) - Entry: XTeInk Tamagotchi open source demo - Date: February 1, 2026 - Source X post: https://x.com/maddiedreese/status/2017864288946290870?s=20 - GitHub: https://github.com/maddiedreese/xteink-tamagotchi - Description: Open sourced my @openclaw Xteink tamagotchi setup! Includes full instructions for how to purchase your own Xteink, create sprites, flash new firmware, and configure your Openclaw to actually run the skill required to use your tamagotchi! Plus more :) And here’s a demo of all of the sprites I created. Link below! - Media: - video: assets/media/2017864288946290870-1.mp4 (XTeInk Tamagotchi sprite demo) ### XTeInk Terminal - Site anchor: https://maddiedreese.com/#xteink-terminal-project - Entry: XTeInk Terminal - Date: May 25, 2026 - Source X post: https://x.com/maddiedreese/status/2058735426261942683?s=20 - GitHub: https://github.com/maddiedreese/xteink-terminal - Description: Tmux session running Codex on my Mac mini, custom firmware (built by Codex) on my Xteink x3. Plus a Magic Keyboard! I love e-ink! - GitHub/project notes: GitHub: Custom firmware and a tmux bridge for using an XTeInk X4 as a small Wi-Fi e-ink terminal display. The keyboard stays paired to the computer, the computer runs the real terminal inside tmux, a Python bridge captures the tmux pane as plain text, the bridge pushes changed frames to the X4 over Wi-Fi, and the X4 renders those frames on its e-ink display. The project replaces the stock reader firmware with native Arduino/PlatformIO firmware for the ESP32-C3 inside the X4. The firmware exposes a tiny HTTP API instead of trying to run a shell or language model on the device itself. Status includes Wi-Fi setup via WiFiManager captive portal, GET /status, POST /frame, GET /reset-wifi, readable 2x bitmap text at about 56x28 cells, Unicode box-drawing conversion to ASCII, line wrapping before frames are sent, and partial refresh attempts for changed line bands after the first full refresh. - Media: - video: assets/media/2058735426261942683-1.mp4 (XTeInk Terminal running Codex through a tmux bridge) ### OpenClaw on a 1998 iMac G3 - Site anchor: https://maddiedreese.com/#openclaw-imac-g3-project - Entry: OpenClaw on a 1998 iMac G3 - Date: February 23, 2026 - Source X post: https://x.com/maddiedreese/status/2025818066563764672?s=20 - Description: Ok, @openclaw on a 1998 iMac G3 (kind of). It’s older than I am! How it works: 1. The iMac G3 loads a page with a form in its browser. 2. I type a message and hit send (plain HTML form POST). 3. The Pi Zero 2W I have hooked up receives the form submission and makes an HTTP request to the OpenClaw gateway’s /v1/chat/completions endpoint on the VPS. 4. The VPS runs OpenClaw. 5. The response comes back through the Pi to the iMac as a page reload with the full conversation. - Media: - image: assets/media/2025818066563764672-1.jpg (OpenClaw on a 1998 iMac G3) ### Rotary phone for OpenClaw - Site anchor: https://maddiedreese.com/#rotary-phone-openclaw-project - Entry: Rotary phone for OpenClaw - Date: March 6, 2026 - Source X post: https://x.com/maddiedreese/status/2029975903993016333?s=20 - Description: I gave my @openclaw a rotary phone! And I’ve titled this video: In Conversation with Grimacegotchi. Using a rotary phone and Grandstream HT801 v2. Plus @twilio @DeepgramAI and @elevenlabs (custom voice). - Media: - video: assets/media/2029975903993016333-1.mp4 (Rotary phone OpenClaw demo) - Entry: Rotary phone call flow - Date: March 6, 2026 - Source X post: https://x.com/maddiedreese/status/2029980045314511203?s=20 - Description: I gave my @openclaw a rotary phone! Here’s how it works: Hardware: Benotek rotary phone plugs into Grandstream HT801 v2 (ATA) via phone cord; HT801 plugs into my router via ethernet; HT801 registers as a SIP endpoint with Twilio. Call Flow: Pick up rotary phone, dial @Twilio number; Twilio answers, plays “Connecting you to OpenClaw”; Twilio opens a WebSocket media stream to my server (via ngrok); server connects to @deepgramai and OpenClaw; my voice audio streams from Twilio to Deepgram in real time; Deepgram transcribes my speech to text; after 1.5 seconds of silence, the transcript is sent to my OpenClaw; OpenClaw responds with text; text is sent to @ElevenLabs for text-to-speech conversion; audio is converted to mulaw format via ffmpeg; mulaw audio streams back through Twilio to my rotary phone speaker. - Media: - image: assets/media/2029980045314511203-1.jpg (Rotary phone call flow) ### Nintendo Switch Codex / Claude Code / Cursor / Doom chain - Site anchor: https://maddiedreese.com/#nintendo-switch-codex-project - Entry: Claude Code on a Nintendo Switch - Date: March 25, 2026 - Source X post: https://x.com/maddiedreese/status/2036875690059174168?s=20 - Description: I ran Claude Code on a Nintendo Switch! Here's how. The original 2017 Switch has an unpatchable hardware exploit (Fusée Gelée) that allows you to boot into Recovery Mode by shorting two pins in the Joy-Con rail. I used a folded piece of aluminum foil instead of a commercial RCM jig (because I didn’t want to wait for Amazon delivery, haha). From there: Injected @CTCaer Hekate bootloader payload via a browser-based tool; partitioned the SD card and installed @switchroot_org's L4T Ubuntu Noble 24.04; installed @claudeai Code using the native Linux installer; ran it successfully from the terminal on the Switch's Tegra X1 chip. The entire process is non-destructive if you copy everything from the Switch’s SD card and save it. The Switch's internal storage is never touched because everything lives on the SD card. To restore, you just reformat the card and copy your original files back. Fun little experiment! - Media: - image: assets/media/2036875690059174168-1.jpg (Claude Code on Nintendo Switch) - Entry: Codex on a Nintendo Switch - Date: March 28, 2026 - Source X post: https://x.com/maddiedreese/status/2038008026700087420?s=20 - Description: I know you guys were desperately wondering, so I’ll confirm that, yes, you can run Codex on a Nintendo Switch! - Media: - image: assets/media/2038008026700087420-1.jpg (Codex on Nintendo Switch) - Entry: Codex in Claude Code on Nintendo Switch - Date: March 31, 2026 - Source X post: https://x.com/maddiedreese/status/2038828837417685202?s=20 - Description: Codex in Claude Code on the Nintendo Switch - Media: - image: assets/media/2038828837417685202-1.jpg (Codex in Claude Code on Nintendo Switch) - Entry: Codex in Claude Code in Cursor on Nintendo Switch - Date: March 31, 2026 - Source X post: https://x.com/maddiedreese/status/2038869505506734414?s=20 - Description: My magnum opus: Codex in Claude Code in Cursor on the Nintendo Switch - Media: - image: assets/media/2038869505506734414-1.jpg (Codex in Claude Code in Cursor on Nintendo Switch) - Entry: Doom reviewed by Codex on Nintendo Switch - Date: April 1, 2026 - Source X post: https://x.com/maddiedreese/status/2039467341239693313?s=20 - Description: A Nintendo Switch running Linux running Cursor running Claude Code which wrote a script to launch Doom that was then reviewed by Codex which is running in Claude Code which is running in Cursor on a Nintendo Switch which is running Linux which is running Cursor which ran the script which launched Doom in Cursor. - Media: - image: assets/media/2039467341239693313-1.jpg (Doom reviewed by Codex on Nintendo Switch) - Entry: Codex in Doom on Nintendo Switch - Date: April 4, 2026 - Source X post: https://x.com/maddiedreese/status/2040283319804580107?s=20 - Description: Nintendo Switch -> Linux -> Cursor -> Claude Code in Cursor -> Codex in Claude Code -> Doom in Codex -> Codex in Doom (Codex in Doom inspired by @dkundel whose article is linked below!) - Media: - image: assets/media/2040283319804580107-1.jpg (Codex in Doom on Nintendo Switch) ### Ryujinx on a Nintendo Switch - Site anchor: https://maddiedreese.com/#ryujinx-switch-project - Entry: Ryujinx on a Nintendo Switch - Date: March 28, 2026 - Source X post: https://x.com/maddiedreese/status/2038024901257478601?s=20 - Description: Ok, one more just for fun. You can technically run a Nintendo Switch emulator on a Nintendo Switch! Here’s how: The original 2017 Switch has an unpatchable hardware exploit (Fusée Gelée) that allows you to boot into Recovery Mode by shorting two pins in the Joy-Con rail. I used a folded piece of aluminum foil instead of a commercial RCM jig. From there: Injected @CTCaer Hekate bootloader payload via a browser-based tool; partitioned the SD card and installed @switchroot_org's L4T Ubuntu Noble 24.04; downloaded and ran Ryujinx (a Nintendo Switch emulator) directly on the Switch's Tegra X1 chip running Linux. The entire process is non-destructive if you copy everything from the Switch's SD card and save it. The Switch's internal storage is never touched because everything lives on the SD card. To restore, you just reformat the card and copy your original files back. - Media: - image: assets/media/2038024901257478601-1.jpg (Ryujinx on Nintendo Switch) ### Claude Code through a Furby - Site anchor: https://maddiedreese.com/#furby-claude-code-project - Entry: Claude Code through a Furby - Date: April 3, 2026 - Source X post: https://x.com/maddiedreese/status/2039880834518577488?s=20 - GitHub: https://github.com/maddiedreese/furby - Description: It’s a work in progress, but, yes, you can run Claude Code through a Furby. Hardware: Stock Furby Connect (2016). No mods, just BLE; Mac; USB mic for voice capture. BLE (Bleak): connects via GATT characteristic to Furby's GeneralPlus chip; two command types: antenna LED color [0x14, R, G, B] and stock actions (eyes + motors + sound) [0x13, ...]; write-only; auto-reconnect on drop. Voice: 16kHz mono stream, RMS energy detection; starts recording at 0.3s above threshold, stops after 1.5s silence; clips sent to Whisper API and checked for wake phrase ("hey furby"); wake word only records a second clip for the actual command. Claude Code: spawns claude -p with stream-json output; --dangerously-skip-permissions; whitelisted tools: Read, Write, Edit, Bash, Grep, Glob; resumes session for conversation context; parses stdout line by line. Furby reactions: every Claude event maps to a stock Furby action + antenna color. Working on custom DLC eyes now: 64x64 pixel art uploaded to Furby's flash over BLE at ~4KB/s; 6-bit palette-indexed, packed 4px per 3 bytes. I have a massive Furby-induced headache. Do not recommend trying this at home. - GitHub/project notes: GitHub: the fetched repository has files including furby_controller.py, bridge.py, claude_runner.py, voice.py, tts.py, dlc_eyes.py, state_machine.py, config.py, and test scripts. - Media: - video: assets/media/2039880834518577488-1.mp4 (Claude Code through a Furby) ### LLM on a 1998 iMac G3 - Site anchor: https://maddiedreese.com/#imac-llm-project - Entry: LLM on a 1998 iMac G3 - Date: April 6, 2026 - Source X post: https://x.com/maddiedreese/status/2040948638520885314?s=20 - GitHub: https://github.com/maddiedreese/imac-llm - Description: Yes, you can technically run an LLM on a 1998 iMac G3 with 32 MB of RAM. Prompt: "The green goblin" Output: "The green goblin had a big mop. She had a cow in the field too. I" Hardware: Stock iMac G3 Rev B (October 1998). 233 MHz PowerPC 750, 32 MB RAM, Mac OS 8.5. No upgrades. Model: @karpathy's 260K TinyStories (Llama 2 architecture). ~1 MB checkpoint. Toolchain: Cross-compiled from a Mac mini using Retro68; endian-swapped model + tokenizer from little-endian to big-endian for PowerPC; files transferred via FTP to the iMac over Ethernet. Challenges: Mac OS 8.5 gives apps a tiny memory partition by default. Had to use MaxApplZone() + NewPtr() from the Mac Memory Manager to get enough heap. RetroConsole crashes on this hardware, so all output writes to a text file you open in SimpleText. The original llama2.c weight layout assumes n_kv_heads == n_heads. The 260K model uses grouped-query attention (kv_heads=4, heads=8), which shifted every pointer after wk and produced NaN. Fixed by using n_kv_heads * head_size for wk/wv sizing. Static buffers for the KV cache and run state to avoid malloc failures on 32 MB. It reads a prompt from prompt.txt, tokenizes with BPE, runs inference, and writes the continuation to output.txt. Fun! - GitHub/project notes: GitHub: This is a port of Karpathy's llama2.c to classic Mac OS, targeting the original Bondi Blue iMac G3. It runs the 260K parameter TinyStories model with a ~1 MB checkpoint entirely in local memory. You type a prompt into prompt.txt using SimpleText, the app tokenizes it using BPE encoding with a 512-token vocabulary, runs transformer inference, and writes the continuation to output.txt. - Media: - image: assets/media/2040948638520885314-1.jpg (LLM on a 1998 iMac G3) - Entry: More generated tokens on iMac G3 - Date: April 6, 2026 - Source X post: https://x.com/maddiedreese/status/2041285917164671328?s=20 - GitHub: https://github.com/maddiedreese/imac-llm - Description: Did some more tinkering and upped the generated tokens! We’re looking at 14.24 tokens per second generated locally on a 1998 iMac G3 with 32MB of RAM. Not too shabby if I do say so myself! - Media: - image: assets/media/2041285917164671328-1.jpg (Generated tokens on iMac G3) - Entry: TinyStories on iMac G3 - Date: April 7, 2026 - Source X post: https://x.com/maddiedreese/status/2041406243420717368?s=20 - GitHub: https://github.com/maddiedreese/imac-llm - Description: 14.24 tokens per second running locally on a 1998 iMac G3 with 32 MB of RAM. Using @karpathy’s 260K TinyStories. Might be the oldest Mac to ever locally run a language model? Repo below if anyone would like to try it out! - Media: - image: assets/media/2041406243420717368-1.jpg (TinyStories on iMac G3) ### Gemma running locally on Nintendo Switch - Site anchor: https://maddiedreese.com/#gemma-switch-project - Entry: Gemma running locally on Nintendo Switch - Date: April 8, 2026 - Source X post: https://x.com/maddiedreese/status/2041677327604838685?s=20 - Description: Gemma 4 running locally on a Nintendo Switch :) 1.5 tokens per second haha, but it runs! @googlegemma @googleaidevs @GoogleDeepMind - Media: - video: assets/media/2041677327604838685-1.mp4 (Gemma running locally on Nintendo Switch) - Entry: Gemma 4 E2B on Nintendo Switch notes - Date: April 8, 2026 - Source X post: https://x.com/maddiedreese/status/2041685337026814153?s=20 - Description: Ok, fine, Gemma 4 E2B on the Nintendo Switch! Notes: 2017 unpatched V1 Nintendo Switch + folded piece of foil + TegraRcmGUI to inject Hekate payload; partitioned SD card in Hekate, flashed L4T Ubuntu Noble 24.04 from @switchroot; booted into Ubuntu via Hekate's "More Configs"; SSH'd in from my laptop, kept KDE desktop up for filming; built llama.cpp from source for ARM64; grabbed Gemma 4 E2B IQ2_M quant (2.6GB) from @bartowski1182 on @huggingface; 4GB swap file on the SD card to survive the 4GB shared RAM. 1.5 tokens per second, but yes, it runs! - Media: - image: assets/media/2041685337026814153-1.jpg (Gemma 4 E2B on Nintendo Switch note 1) - image: assets/media/2041685337026814153-2.jpg (Gemma 4 E2B on Nintendo Switch note 2) - image: assets/media/2041685337026814153-3.jpg (Gemma 4 E2B on Nintendo Switch note 3) ### Joy-Con gesture coding - Site anchor: https://maddiedreese.com/#joy-con-gesture-coding-project - Entry: Joy-Con gesture coding - Date: April 8, 2026 - Source X post: https://x.com/maddiedreese/status/2042026147844911477?s=20 - Description: I only vibe code with Joy-Cons now. 6 gestures: swipe right -> Enter; swipe left -> Escape; stab -> y + Enter; shake -> Ctrl+C; flick up -> Up arrow; circle -> “explain this”. Performed 180 training samples, which were used to classify gestures. Gestures are piped into Claude Code which is running in L4T Ubuntu on my Nintendo Switch :) Very impractical! - Media: - video: assets/media/2042026147844911477-1.mp4 (Joy-Con gesture coding) ### Flying Grimaces - Site anchor: https://maddiedreese.com/#flying-grimaces-project - Entry: Flying Grimaces - Date: April 10, 2026 - Source X post: https://x.com/maddiedreese/status/2042412478299304178?s=20 - GitHub: https://github.com/maddiedreese/flying-grimaces - Description: I built my own screensaver for the iMac G3, à la Flying Toasters! Except mine is Flying Grimaces. Created 10 sprite frames using @spritecookai by @grilliottodd (4 large Grimace flap cycle + 4 small + 2 Hamburglar running); custom PNG->C converter snaps colors to Mac System palette, treats magenta as transparency sentinel; cross-compiled on modern Mac using Retro68 toolchain: PowerPC assembly targeting Mac OS 8.5; native QuickDraw rendering: 12 sprites at 60fps using SetCPixel, no modern graphics APIs; parallax depth system: large sprites move faster than small ones, occasional Hamburglar cameo streaks across; full pipeline: @Kitware CMake -> MakePEF -> Rez -> MacBinary, then HTTP serve to G3 and decode via Stuffit Expander; works perfectly... as long as you quit other apps first; 43KB native PowerPC binary, zero dependencies, period-authentic development constraints. Yippie! - GitHub/project notes: GitHub: A native Mac OS 8.5 screensaver featuring chrome-winged Grimaces drifting across your vintage iMac screen, with occasional Hamburglar cameos. Built as a loving homage to Berkeley Systems' Flying Toasters (1989). Features include 10 sprite frames, parallax depth, chrome wings, Hamburglar cameos, period-authentic QuickDraw rendering, configurable control panel, and a 43KB binary. - Media: - video: assets/media/2042412478299304178-1.mp4 (Flying Grimaces running) - image: assets/media/2042412478299304178-2.jpg (Flying Grimaces build) - Entry: Flying Grimaces in SheepShaver - Date: April 10, 2026 - Source X post: https://x.com/maddiedreese/status/2042436117027569922?s=20 - GitHub: https://github.com/maddiedreese/flying-grimaces - Description: And here’s a video of it wonkily emulated through SheepShaver on Mac OS 9! - Media: - video: assets/media/2042436117027569922-1.mp4 (Flying Grimaces in SheepShaver) ### Codex on the Apple Watch - Site anchor: https://maddiedreese.com/#codex-apple-watch-project - Entry: Codex on the Apple Watch - Date: April 15, 2026 - Source X post: https://x.com/maddiedreese/status/2044442600833474816?s=20 - Description: Codex on the Apple Watch. The hardest part was updating my watch! Yes it is actually usable :) - Media: - image: assets/media/2044442600833474816-1.jpg (Codex on Apple Watch) ### Doom on the Apple Watch - Site anchor: https://maddiedreese.com/#doom-apple-watch-project - Entry: Doom on the Apple Watch - Date: April 16, 2026 - Source X post: https://x.com/maddiedreese/status/2044595057467314405?s=20 - Description: Doom on the Apple Watch - Media: - video: assets/media/2044595057467314405-1.mp4 (Doom on Apple Watch) ### Codex Computer Use on a 1998 iMac G3 - Site anchor: https://maddiedreese.com/#codex-computer-use-imac-project - Entry: Can Codex use my Mac? - Date: April 16, 2026 - Source X post: https://x.com/maddiedreese/status/2044885745660547199?s=20 - Description: Hey @OpenAIDevs, can Codex use my Mac? - Media: - image: assets/media/2044885745660547199-1.jpg (Can Codex use my Mac) - Entry: Codex Computer Use on a 1998 iMac G3 - Date: April 17, 2026 - Source X post: https://x.com/maddiedreese/status/2045285716947870062?s=20 - Description: I was wrong, Codex can use Computer Use on my 1998 iMac G3 (kind of)! Here’s how: Bridge: iMac G3 -> ethernet -> modern Mac running screen sharing -> Codex clicking inside that window; ChromiVNC 3.4a5 on the G3 + MacOS screen sharing on my Mac. Not fully working, it can't actually open anything yet for some reason. But it CAN click! Here it is slowly clicking some random files of its choosing on the desktop. @OpenAIDevs - Media: - video: assets/media/2045285716947870062-1.mp4 (Codex Computer Use on iMac G3) ### Claude Code on a 1998 iMac G3 - Site anchor: https://maddiedreese.com/#claude-code-imac-g3-project - Entry: Claude Code on a 1998 iMac G3 - Date: April 17, 2026 - Source X post: https://x.com/maddiedreese/status/2045236402238247240?s=20 - Description: For completeness’ sake, here’s Claude Code on the 1998 iMac G3! How it works: Mac mini runs tmux with Claude Code inside; Pi Zero 2W bridges telnet to the Mac mini’s tmux session over SSH; iMac G3 connects via BetterTelnet on Mac OS 8.5; VT100 emulation renders the full TUI; swap CLIs by changing one tmux command. Same bridge, same CRT. - Media: - image: assets/media/2045236402238247240-1.jpg (Claude Code on iMac G3) ### Codex on a 2009 Palm Pixi - Site anchor: https://maddiedreese.com/#codex-palm-pixi-project - Entry: Codex on a 2009 Palm Pixi - Date: April 21, 2026 - Source X post: https://x.com/maddiedreese/status/2046693236010533238?s=20 - Description: Codex on my first smartphone, a 2009 Palm Pixi! Here’s how: Enabled Developer Mode on the Palm Pixi and got root shell access from the Mac using a modern community novacom workaround instead of the original broken Palm installer. Discovered direct Pixi -> USBnet -> macOS networking was unreliable on modern macOS, so pivoted to an Ubuntu ARM VM in UTM running on the Mac mini. Installed Codex CLI inside Ubuntu, created a Pixi-friendly launcher, and verified Codex worked there first. Passed the Pixi’s USB connection through to the Ubuntu VM and configured a private USB network between the Pixi and Ubuntu. Manually installed Preware and Terminal on the Pixi by pushing .ipk packages over novacom. Manually unpacked old Optware/OpenSSH/Dropbear packages on the Pixi to get a working SSH client. Set up a separate legacy SSH daemon on Ubuntu. SSHed from the Palm Pixi into Ubuntu. - Media: - image: assets/media/2046693236010533238-1.jpg (Codex on Palm Pixi) ### Codex on a Game Boy emulator - Site anchor: https://maddiedreese.com/#codex-game-boy-emulator-project - Entry: Codex on a Game Boy emulator - Date: April 22, 2026 - Source X post: https://x.com/maddiedreese/status/2046979967322567047?s=20 - Description: Sneak peek of Codex on a Game Boy emulator! Here’s the breakdown so far: Started by making the Game Boy emulator act like a remote screen and keyboard for Codex, while the real Codex CLI keeps running on my Mac. Three parts: a custom Game Boy program; a modified SameBoy (Game Boy emulator) bridge so the emulator can talk to the Mac; a host program that launches Codex and reads its terminal output. The first idea was to squeeze the normal Codex terminal UI into the Game Boy screen, but it was too small and hard to read. Changed approaches and made a custom Game Boy version of the Codex home screen instead, using the same information and general layout but redesigned for the tiny display. Connected input both ways, so typing in the SameBoy window sends keystrokes back to the real Codex process on the Mac. Improved the look so it feels more a terminal running Codex. Reduced screen flashing by avoiding unnecessary redraws. Sped up updates by sending small “only what changed” packets from the Mac instead of resending the whole screen every time. Tried a more advanced Game Boy-side partial redraw system too, but it wasn’t reliable yet, so the current version keeps the safer renderer and only uses the faster smaller updates for transport. - Media: - video: assets/media/2046979967322567047-1.mp4 (Codex on Game Boy emulator) ### Transformer language model on a Game Boy Color - Site anchor: https://maddiedreese.com/#gbc-transformer-project - Entry: Transformer language model on a Game Boy Color - Date: May 10, 2026 - Source X post: https://x.com/maddiedreese/status/2053293884323852636?s=46 - GitHub: https://github.com/maddiedreese/gbc-transformer - Description: I got a real transformer language model running locally on a stock Game Boy Color (thanks Codex)! No phone, PC, Wi-Fi, link cable, or cloud inference. The cartridge boots a ROM, and the GBC runs the model itself. The model is @karpathy’s TinyStories-260K, converted to INT8 weights with fixed-point math so it can run without floating point. Built with GBDK-2020 as an MBC5 Game Boy ROM. The model weights live in bank-switched cartridge ROM. Prompt entry happens on-device with the D-pad/buttons and an on-screen keyboard. The prompt is tokenized on the Game Boy, then the ROM runs transformer prefill + autoregressive generation. The KV cache is stored in cartridge SRAM, because the GBC’s work RAM is tiny. It is extremely slow, and the output is gibberish because the math is heavily quantized/approximated, but the core thing works! Hardware: stock Game Boy Color + EZ Flash Junior + microSD. No soldering, no internal mods. - GitHub/project notes: GitHub: TinyStories-260K running locally on a stock Game Boy Color. This is a proof-of-concept GBDK-2020 ROM that runs a quantized transformer language model on the Game Boy Color CPU. Prompt entry happens on the handheld with the D-pad/buttons and an on-screen keyboard. The ROM tokenizes the prompt, runs transformer prefill, then autoregressively generates a short continuation. What works includes desktop FP32 reference runner, desktop row-wise INT8/Q8 packer and zero-float Q8 runner, GBC ROM with the Q8 model embedded as MBC5 bank-switched cartridge data, on-device BPE tokenization, integer/fixed-point transformer inference, cartridge SRAM KV cache, on-screen keyboard, and runtime progress markers. - Media: - image: assets/media/2053293884323852636-1.jpg (Transformer language model running locally on a stock Game Boy Color) ## Awards - 1st Place Winner - Replayio Vibe Coding Contest, Replayio Vibe Coding Contest, 2025: Won 1st place by building a full doctor's office application in an hour. - 2nd Place Winner - MyNotSpace, Contra YouWare Challenge, 2025: A pixel-perfect recreation of MySpace where users can vibe code their profile. Won 2nd place and $2,500. Link: https://mynotspace.com - 1st Place Winner - Sticky, Anything $5k Weekend Hackathon, 2025: Won first place for creating Sticky, a digital cork board application for organizing thoughts and ideas. Link: https://stickynotes.created.app/ - 1st Place Winner - Not Drive, Lovable Ditto Hackathon, 2025: Won first place for creating an innovative file storage solution. Link: https://not-drive.lovable.app - Best Use of Toolhouse, Lovable Ditto Hackathon, 2025: Recognized for creative and practical application of Toolhouse to find real examples of documents online. Link: https://not-drive.lovable.app ## Experience - Education, Community & Tool Adoption, 2013-Present: Instructed tens of thousands of non-technical learners at a high level, and taught hundreds more closely through paid communities, mentorship, Q&As, and structured learning environments. Taught practical tool-based workflows including starting and maintaining blogs, building online businesses, using content systems, and applying software to real estate investing operations. - AI Prototyping & Public Technical Work, 2025-Present: Built public AI tools and experiments across local-first desktop software, browser extensions, hardware interfaces, local model ports, structured benchmarks, and physical notification systems. Uses public builds to make technical systems visible through architecture notes, source repos, videos, demos, constraints, tradeoffs, and implementation details. - Content Creation & Public Storytelling, 2013-2022: Produced written, video, and social content for audiences, brand partnerships, advertising campaigns, press trips, and events. Served as an on-camera host, gave talks, represented the brand publicly, and built audience trust through consistent communication. - Large-Scale Community Management, Sale Pros Corp., June 2017-Jan 2022: Scaled and ran the Start a Blogging Business Facebook group from 0 to 212K active members. Supported 5K+ concurrent paying members in high-ticket premium programs through moderation, live Q&As, learning tracks, and daily community engagement. - Mentorship & Business Systems Education, Land Conquest - Land Investing Skool Group, Jan 2023-Oct 2025: Co-managed a 5.5K-member land-investing community, including content planning, livestreams, discussion prompts, and member support. Led additional paid high-ticket sub-groups as mentor and community lead, providing weekly guidance to aspiring investors. - Operations, Investment & Energy, 2022-Present: Led land investment work from first look to resale, including evaluation, operations, and deal execution. Co-owned Pine Street Properties. Co-founder and advisor at Sunland America, an early-stage utility-scale battery storage development company. - Hackathons, since August 2025: 4x hackathon winner since August 2025. ## Preferred Contact For collaborations, sponsorships, events, content, community work, or AI/hardware project ideas, email maddie@maddiedreese.com.