Skip to content

Instantly share code, notes, and snippets.

View jonmagic's full-sized avatar

Jonathan Hoyt jonmagic

View GitHub Profile
<!DOCTYPE html>
<html lang="en">
<!-- SCROLL TO BOTTOM FOR INSTRUCTIONS -->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
/* jonmagic.com-inspired theme with warm, readable aesthetics */
@jonmagic
jonmagic / 01-start-here.md
Last active September 25, 2025 02:11
Scene builder chat mode demo

Scene builder chat mode demo

I've been working on a VS Code Chat Mode that uses a variety of mcp servers to help me build a Phaser scene purely through text prompts. I recommend viewing these in the order below. I think seeing the screenshots first gives you and idea of the iterative process. Then seeing the vision grounds you in what I'm trying to accomplish. The chat mode shows you the iterative process to get from start to finish. And finally the actual code shows you the end result.

github-conversations-research-agent — deep-dive, cite-everything analysis

A multi-turn agent that combines semantic + keyword search over any set of repos or conversations. Prereqs:

  1. Vector store – start a local Qdrant container (scripts/start-qdrant). Qdrant’s Docker quick-start makes this trivial ([Qdrant][2]).

  2. Index oncescripts/index-repo org/repo ingests conversation summaries into the collection.

    # Fetches and caches the complete conversations and then indexes the executive summaries
on run
repeat
tell application "System Events"
tell process "zoom.us"
try
set transcriptButton to first button of front window whose description is "Save transcript"
click transcriptButton
on error
-- Silently continue if button not found (maybe not in a meeting)
end try
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<script>
mermaid.initialize({ startOnLoad: false });
document.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll('code.language-mermaid').forEach((codeBlock, index) => {
const parent = codeBlock.parentElement;
const container = document.createElement('div');
container.className = 'mermaid';
container.innerHTML = codeBlock.textContent;
// package.json
{
"name": "<project-name>",
"version": "1.0.0",
"author": "Jonathan Hoyt <[email protected]>",
"license": "ISC",
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"start": "tsx src/index.ts"

🪱 3-Tier Worm Composter Setup & Maintenance Guide

🧱 Initial Setup

  1. Bottom Tier (Leachate Collection):
    • This tier does not get bedding, food scraps, or worms intentionally.
    • Its sole purpose is to collect leachate ("worm tea") from the upper composting trays.
    • Do not add newspaper, cardboard, or soil here.
    • Optional: Add twigs, mesh, or screen to help any wandering worms climb back up.
  • Ensure the spigot is open occasionally or place a container underneath to collect liquid.

Cambodian-Thai–Style Drunken Noodles

Based on the dish at Cambodian Thai in South Bend Indiana which I crave on the regular since moving to California in 2012.

Servings: 2 large portions
Scale up as needed.


1. Gather Your Ingredients

require "benchmark"
require "delegate"
require "forwardable"
class Person
def initialize(name, ip)
@name = name
@ip = ip
end
class Reputation
class Error < StandardError; end
def initialize(sample_size:, not_spammy_sample_size:)
@sample_size = sample_size
@not_spammy_sample_size = not_spammy_sample_size
end
attr_reader :sample_size
attr_reader :not_spammy_sample_size