• ai-contracts & ai-toolkit: The Primitives a PHP AI Ecosystem Needs

    ai-contracts & ai-toolkit: The Primitives a PHP AI Ecosystem Needs

    Five interfaces and a toolkit of pipeline utilities — the thin pure-PHP layer that makes native AI extensions composable and turns PHP’s AI frameworks into allies instead of competitors.

  • ext-whisper: PHP-Native Audio Transcription

    ext-whisper: PHP-Native Audio Transcription

    ext-whisper runs Whisper speech-to-text inside the PHP process via whisper.cpp — transcripts plus timestamped segments, no Python, no API, no audio leaving your machine.

  • ext-turbovec: A Vector Index Inside Your PHP Process

    ext-turbovec: A Vector Index Inside Your PHP Process

    ext-turbovec brings quantized vector search inside the PHP process — TurboQuant 4-bit compression, SIMD kernels, SQL-friendly ids, and filtered search that gets faster, not worse.

  • ext-infer: Local LLM Inference, Natively in PHP

    ext-infer: Local LLM Inference, Natively in PHP

    ext-infer is a PHP extension that runs GGUF models inside the PHP process — chat, completions, and embeddings with no Python sidecar and no remote API. Here’s the tour.

  • Beware

    Beware

    Update: Sept 26 Despite the various web hosts and registrars recognizing the scam and helping to shut things down immediately, I’ve been unable to get a response from Dick’s Sporting Goods’ customer support team. I also reported the ad directly to Facebook … and they’ve declined to take any action at all. Because apparently outright scams don’t “go against [their] Advertising Standards.” The other day while catching up on social media, I came across a bizarre ad on Facebook. It claimed there was a survey hosted by Dick’s Sporting Goods that would give you a fancy cooler backpack for free.…

  • The Case for Local AI: Keep Your Data and Your Models Close

    The Case for Local AI: Keep Your Data and Your Models Close

    The default AI architecture ships your data to someone else’s computer. The case for local-first AI — governance, economics, latency — and why PHP is finally ready for it.

  • Seeing in 1,024 Dimensions: How UMAP Makes Embeddings Visible

    Seeing in 1,024 Dimensions: How UMAP Makes Embeddings Visible

    Embeddings live in a thousand dimensions; your screen has two. How UMAP flattens embedding space into a readable map — what it preserves, what it distorts, and how to read it honestly.

  • From Keywords to Concepts: Semantic Search in Laravel with pgvector

    From Keywords to Concepts: Semantic Search in Laravel with pgvector

    The post version of my PHP Tek talk: retrofitting meaning-aware search into a Laravel app with PostgreSQL and pgvector — architecture, code, and production lessons from DailyMedToday.

  • Meaning as Geometry: What Embeddings Actually Are

    Meaning as Geometry: What Embeddings Actually Are

    Embeddings turn language into coordinates, where distance equals meaning. This is the foundation everything else in this series builds on — explained without the math degree.

  • Rebuilding a Dead iPod Game

    Rebuilding a Dead iPod Game

    I loved a 2009 game called Artificial Life. It simulated real-time evolution of protozoa. I took a crack at rebuilding a modern, in-browser version based on that experience. The new version features emergent behaviors, predator-prey dynamics, and a dynamic ecosystem.