OAuth Proxy Unlocks MCP Authentication with Authentik

I’ve been building an MCP server for a client that connects various tools for querying our DuckDB-based warehouse (managed with dbt). The authentication piece had me stuck for way too long - but I finally cracked it! The Problem We’re running Authentik as our OAuth 2.0 provider. It’s solid and OAuth 2.0 compliant, but here’s the catch: it doesn’t support Dynamic Client Registration (DCR). Meanwhile, MCP clients expect DCR-based OAuth flows. ...

September 2, 2025 · 2 min · 218 words

Using Gemini Flash for Bulk Lint Fixes

I started a new project with Claude Code, Bun, and the TanStack packages (Query, Store, Router, Table). Used Biome for linting and had about 85 lint errors right off the bat. Decided to try Zed editor’s AI integration with Gemini 2.5 Flash and gave it this simple prompt: We have a lot of lint errors. Use `bun run lint` and fix them one by one as possible It worked through all the fixes quickly and efficiently. What made this work well was the combination of: ...

July 19, 2025 · 2 min · 235 words

Supabase Auth Testing: Don't Forget Your Plugs and LiveView Hooks

The elixir supabase library is community developed (Thank you!), but not quite as easy to work with as the javascript or Python variants. I hit a tricky issue today. I wanted to test some of my live views. In my routerI have pipeline :browser do plug :accepts, ["html"] plug :fetch_session plug :fetch_live_flash plug :put_root_layout, html: {DreamersdashWeb.Layouts, :root} plug :protect_from_forgery plug :put_secure_browser_headers plug :fetch_current_user plug :fetch_current_profile end pipeline :admin_browser do plug :browser plug :require_admin_profile end pipeline :photo_manager_browser do plug :browser plug :require_photo_manager_profile end # ... more scope "/", DreamersdashWeb do pipe_through :photo_manager_browser live_session :authenticated_photo_manager, on_mount: [ {DreamersdashWeb.Auth, :mount_current_user}, {DreamersdashWeb.Auth, :ensure_authenticated}, {DreamersdashWeb.Auth, :load_current_profile}, {DreamersdashWeb.Auth, :require_photo_manager_profile} ] do live "/admin/photos", PhotoReviewLive.Index, :index end end Then In my Dreamersdash.Auth module I have: ...

June 30, 2025 · 2 min · 321 words

Claude Code Can Act as an MCP Server

I just discovered that Claude Code can function as an MCP (Model Context Protocol) server. This seems like it could be incredibly powerful! I haven’t had a chance to explore it yet, but the implications are exciting. It could enable entirely new workflows where Claude Code serves as a backend for other MCP clients like: Claude Desktop app VS Code extensions Other MCP-compatible tools The idea of having Claude Code as a programmable server that other tools can interact with opens up some interesting automation possibilities. You could potentially have Claude Code running in the background, handling requests from various clients and coordinating complex development tasks. ...

June 26, 2025 · 1 min · 153 words

AI Coding Assistants Are Stateless and Resumable

I wanted to jot down one of my favorite pro tips for using AI coding assistants like Claude Code, Cursor, and Aider - The trick? they’re completely stateless. When we think we’re having a “conversation,” we’re actually just sending the entire chat history with each new request. At first, this might seem inconvenient at best and really expensive at worst. However, putting the burden of memory in the application layer allows for inference engines to be streamlined, simple, and single focused. Also with smart use of prompt caching, sending over the chat history on every message doesn’t actually end up costing as much as it seems. ...

June 23, 2025 · 2 min · 261 words

Elixir Case Clause Errors from Changed Function Returns

Hit a tricky debugging scenario today that cost me more time than I’d like to admit. I accidentally changed a function’s return value from {:ok, atom} to just atom. Elsewhere in the code, I was calling that function with: with {:ok, atom} <- function() do # ... end After the change, this stopped working because there was no :ok tuple to match against. The confusing part? The error that showed up in the logs was a “missing case clause error” rather than something more obvious like a pattern match failure. ...

June 19, 2025 · 1 min · 160 words

Back up remote supabase project to local supabase

To get a full copy of your remote/prod supabase setup in local do the following after first signing in, linking a project, starting supabase locally via the cli; # reset migrations supabase db reset # pull latest schema supabase db pull # apply migrations supabase migration up # Dump data from remote supabase db dump --db-url 'REMOTE CONNECTION_STRING' -f data.sql --use-copy --data-only # apply data to local psql --single-transaction --variable ON_ERROR_STOP=1 --command 'SET session_replication_role = replica' --file data.sql -h 127.0.0.1 -p 54322 -U postgres

June 13, 2025 · 1 min · 84 words

Apple Foundation Models

At WWDC25 Apple introduced their new Foundation Models Framework. This is Swift-based access to an on-device LLM provided by Apple with the operating system. The library allows for many interesting features such as structured outputs, customizable prompting, tool calling, and more. It seems like a really great way to tap into intelligent features inside the app. I’m excited to try it out in Dreamer’s Dash. This YouTube video explains the core features of the Foundation Models Framework. ...

June 12, 2025 · 1 min · 77 words

Apple's PaperKit: Drawing Canvas for iOS Apps

TIL about Apple’s new PaperKit framework announced at WWDC25. It provides a canvas and drawing tools that developers can integrate into their apps. I’m working on Dreamers Dash and this caught my attention immediately. We’ve been thinking about adding more interactive clue response types beyond just text input. A drawing response type could open up tons of creative possibilities: Sketch-based puzzles Visual riddles where you draw the answer Path-finding challenges Creative interpretation clues PaperKit handles all the complex stuff - touch processing, drawing tools, canvas management. Looks like it could save weeks of custom implementation work. ...

June 12, 2025 · 1 min · 129 words

TIL: Apple's new SpeechAnalyzer API - Potential for Dreamers Dash?

Just saw Apple dropped a new SpeechAnalyzer API. Interesting stuff. Looks like it’s designed for more detailed speech analysis, not just basic transcription. My first thought: this could be pretty neat for Dreamers Dash. We’ve been kicking around ideas for audio-based clue verification, and this might be the ticket. Instead of just simple keyword spotting, maybe we could use this to understand more nuanced spoken responses or even verify if a player is mimicking a specific sound or phrase. ...

June 12, 2025 · 1 min · 178 words