# RvR — https://reed.vonredwitz.com > A developer blog by Reed Personal site and developer blog by Reed von Redwitz. Hub for three surfaces: the *.build Java 25 ecosystem (base, codemodel, spawn, spin are open source Workday projects Reed contributes to; serve.build is his own), domain demos on top (music.build), and Denote (an AI-native documentation framework at denote.sh). Thesis: AI agents should compose through typed models, not generate text. Archive includes earlier posts on Deno, Fresh, TypeScript, and a '90 days of new tech' series from 2023. Built with Fresh 2.x, deployed on Deno Deploy, server-side Umami analytics (no cookies, no client-side tracking). ## Posts ### Compose, don't render - URL: https://reed.vonredwitz.com/blog/compose-dont-render - Date: Tue - Tags: thesis, agents, typed-models - Description: Agents should manipulate typed domain models and let renderers produce the output. music.build, applied to music. ### Your documentation site should be an MCP server - URL: https://reed.vonredwitz.com/blog/introducing-denote - Date: Tue - Tags: denote, documentation, agents - Description: Introducing Denote, an AI-native documentation framework for Deno. Why I built it, what it does, and why I'm not building a hosted version. ### Learning About View Transitions - URL: https://reed.vonredwitz.com/blog/learning-about-view-transitions - Date: 2024-01-12 - Tags: css, javascript - Description: Three good reads on the View Transitions API, from Smashing Magazine and web.dev. ### Refactoring the Blog - URL: https://reed.vonredwitz.com/blog/blog-refactor - Date: 2023-07-31 - Description: Refactoring this blog to use two Fresh plugins I wrote: fresh_blog and fresh_ga4. ### Adventures in Open Source - URL: https://reed.vonredwitz.com/blog/adventures-in-open-source - Date: 2023-06-25 - Description: A short note about contributing to denoland/fresh and a recommendation to work on open source on the side. ### Adding Comments to the Blog - URL: https://reed.vonredwitz.com/blog/comments-disqus-deno-fresh - Date: 2023-05-31 - Description: Adding Disqus comments to a Fresh blog, lifting the island and component from someone else's portfolio repo. ### 90days: Day 15 -- Bit - URL: https://reed.vonredwitz.com/blog/90days-day-15-bit - Date: 2023-04-19 - Description: Bit's developer onboarding is slow, loses your scroll position, and redefines terms without context. A rough first impression. ### 90days: Day 14 -- gRPC - URL: https://reed.vonredwitz.com/blog/90days-day-14-grpc - Date: 2023-04-18 - Description: The gRPC quickstart is fine, but the tutorial is JavaScript-only, mismatched with its reference code, and buried in maps-domain noise. ### 90days: Day 13 -- Apollo GraphQL Part 1 - URL: https://reed.vonredwitz.com/blog/90days-day-13-apollo-part1 - Date: 2023-04-17 - Description: Apollo's lift-off-part1 is hand-holdy, and I'm not sure whether challenge-first or follow-the-steps sticks better. ### 90days: Day 12 -- Typescript - URL: https://reed.vonredwitz.com/blog/90days-day-12-typescript - Date: 2023-04-17 - Description: TotalTypescript's beginners TypeScript tutorial follows the same challenge-per-concept format as his Zod course. ### 90days: Day 11 -- Zod - URL: https://reed.vonredwitz.com/blog/90days-day-11-zod - Date: 2023-04-16 - Description: Zod's docs are reference-only, so I learned from TotalTypescript's exercise-per-concept tutorial instead. ### 90days: Day 10 -- Loopback - URL: https://reed.vonredwitz.com/blog/90days-day-10-loopback - Date: 2023-04-15 - Description: Loopback's Todo and TodoList tutorials are well-structured, and a link to the Diátaxis framework made the whole experience worthwhile. ### 90days: Day 9 -- Temporal - URL: https://reed.vonredwitz.com/blog/90days-day-9-temporal - Date: 2023-04-14 - Description: Temporal's hello-world gets durable execution right, but the course is stuck on an SDK from July 2022 and needs a refresh. ### 90days: Day 8 -- Supabase - URL: https://reed.vonredwitz.com/blog/90days-day-8-supabase - Date: 2023-04-05 - Description: Building Supabase's user-management app with email confirmation, avatar upload, and S3 cleanup via database triggers. ### 90days: Day 7 -- Remix - URL: https://reed.vonredwitz.com/blog/90days-day-7-remix - Date: 2023-04-02 - Description: The short Remix blog tutorial, an outdated routing convention blocking the path, and why tutorials should build familiar things. ### 90days: Day 6 -- Prisma - URL: https://reed.vonredwitz.com/blog/90days-day-6-prisma - Date: 2023-04-01 - Description: Prisma's getting-started guide, and why separating 'introduce the concepts' from 'apply them in a real app' is good doc design. ### 90days: Day 5 -- Blitz - URL: https://reed.vonredwitz.com/blog/90days-day-5-blitz - Date: 2023-03-31 - Description: Walking through the Blitz tutorial, appreciating the Django-style vote app but wishing auth were part of the hands-on. ### 90days: Day 4 -- Earthly - URL: https://reed.vonredwitz.com/blog/90days-day-4-earthly - Date: 2023-03-30 - Description: Trying Earthly, a tidy mashup of Docker and make, and wishing the tutorial had a more realistic example than hello-world-go. ### 90days: Day 3 -- Kubernetes - URL: https://reed.vonredwitz.com/blog/90days-day-3-kubernetes - Date: 2023-03-29 - Description: A quick pass through Minikube and the Kubernetes basics tutorials, then stepping back because there's no practical need to apply it. ### 90days: Day 2 -- Turborepo - URL: https://reed.vonredwitz.com/blog/90days-day-2-turborepo - Date: 2023-03-28 - Description: Trying Turborepo and Turbopack without any monorepos that actually need incremental builds. ### 90days: Day 1 -- Astro - URL: https://reed.vonredwitz.com/blog/90days-day-1-astro - Date: 2023-03-27 - Description: Kicking off a 90-days-of-tutorials project with Astro, and using it the same day to build an internal ubiquitous-language docs site at work. ### March updates - URL: https://reed.vonredwitz.com/blog/2023-03-26 - Date: 2023-03-26 - Description: A catch-up post after moving to Munich, covering a Spring microservices tutorial, a work blog with Lume, Storybook, and Jepsen's Maelstrom. ### Deploying a deno app to Deno Deploy, Render, Netlify, Vercel, Railway - URL: https://reed.vonredwitz.com/blog/2023-02-20 - Date: 2023-02-20 - Description: Comparing Deno Deploy and Render for deploying the same Deno server, and getting stuck on Render's GitHub-only CLI. (Part 1.) ### Deploying a deno app to fly.io - URL: https://reed.vonredwitz.com/blog/2023-02-19 - Date: 2023-02-19 - Description: A from-scratch walkthrough for deploying a Deno HTTP server to fly.io with a hand-rolled Dockerfile and docker-compose file. ### Obligatory ChatGPT post - URL: https://reed.vonredwitz.com/blog/2023-02-15 - Date: 2023-02-15 - Description: What ChatGPT is and isn't good for when building a dockerized Vite + React + Mongo app, and where I had to redo its work by hand. ### More experiments with docker - URL: https://reed.vonredwitz.com/blog/2023-02-14 - Date: 2023-02-14 - Description: Starting a dockerized frontend / backend / database template, nudged along by ChatGPT, as a starting point for future apps. ### How to use Mongoose with Deno - URL: https://reed.vonredwitz.com/blog/2023-02-13 - Date: 2023-02-13 - Description: Following the Deno Mongoose guide, killing a stray MongoDB process on port 27017, and getting it running in Docker with auth. ### Fixing bugs and adding some info - URL: https://reed.vonredwitz.com/blog/2023-01-27 - Date: 2023-01-26 - Description: Fixing an off-by-one in the newpost scaffold task and adding a stub About page. ### Generating a post from a template - URL: https://reed.vonredwitz.com/blog/2023-01-25 - Date: 2023-01-25 - Description: A Deno task that scaffolds a new post's markdown file and screenshots folder from a template. ### Experimenting with deno and docker - URL: https://reed.vonredwitz.com/blog/2023-01-24 - Date: 2023-01-24 - Description: Containerizing a small Deno HTTP server with docker-compose, including a two-container variant on separate ports. ### Creating an open source project - URL: https://reed.vonredwitz.com/blog/2023-01-23 - Date: 2023-01-23 - Description: Starting deno_cap, a small CLI for automating the screenshot workflow, and the open-source project checklist that came with it. ### Forking an open source project - URL: https://reed.vonredwitz.com/blog/2023-01-22 - Date: 2023-01-22 - Description: Forking Fresh to pick up an unmerged _app.tsx fix, and the trick of pointing an import map at a raw GitHub URL. ### Adding a layout - URL: https://reed.vonredwitz.com/blog/2023-01-21 - Date: 2023-01-21 - Description: The first real layout on the blog, plus a resolve to stop writing daily status updates and start writing proper posts. ### Some days you win, some days you lose - URL: https://reed.vonredwitz.com/blog/2023-01-19 - Date: 2023-01-19 - Description: A first-pass navbar and a short plan to make the site less ugly. ### Adding analytics to your blog - URL: https://reed.vonredwitz.com/blog/2023-01-18 - Date: 2023-01-18 - Description: Adding GA4 to a Fresh site via a middleware lifted from an open PR, and figuring out it was working all along. ### Capturing the history of your blog - URL: https://reed.vonredwitz.com/blog/2023-01-17 - Date: 2023-01-17 - Description: Borrowing Fresh's screenshot script so each post can come with a snapshot of how the site looked that day. ### Creating a blog in 2023 - URL: https://reed.vonredwitz.com/blog/2023-01-16 - Date: 2023-01-16 - Description: The stack and workflow behind this blog: Fresh on Deno Deploy, plus a few markdown gotchas from getting set up. ### How to not start a blog - URL: https://reed.vonredwitz.com/blog/2023-01-15 - Date: 2023-01-15 - Description: My 3rd or 4th attempt at blogging, and why posting every day might finally make it stick. ## Data - JSON index: https://reed.vonredwitz.com/posts.json - RSS feed: https://reed.vonredwitz.com/blog/feed.xml - Sitemap: https://reed.vonredwitz.com/sitemap.xml ## Legal - Impressum: https://reed.vonredwitz.com/impressum - Privacy Policy: https://reed.vonredwitz.com/privacy