Blog
~~~
- Val Town: write and deploy code in secondsJun 12, 2026
- Railway: Effortless Web App DeploymentsOct 22, 2025
- Setting up Tailwind CSS on ViteOct 22, 2025
- How to use Zod 4 for TypeScript validationOct 20, 2025
- The React Context APIOct 18, 2025
- Git WorktreesOct 15, 2025
- Deploying an Astro + PostgreSQL app on RailwayApr 30, 2025
- Build it and they will comeApr 26, 2025
- How to recover lost data from an SD cardApr 21, 2025
- My own little corner shop on the InternetApr 20, 2025
- Freeing space on a MacApr 17, 2025
- Concatenating videos on macOSMar 20, 2025
- Fix files creation date in macOSFeb 6, 2025
- Removing all Homebrew stuffFeb 1, 2025
- Best SMTP server for developmentJan 21, 2025
- On AI doomerismJan 20, 2025
- Supabase email rate limitJan 20, 2025
- Durable cache on NetlifyJan 18, 2025
- Underscores in numbersJan 8, 2025
- The use hookDec 10, 2024
- The useOptimistic hookDec 9, 2024
- The useFormStatus HookDec 8, 2024
- The useActionState hookDec 7, 2024
- Server ActionsDec 6, 2024
- Form ActionsDec 5, 2024
- The Path to Learn Web DevelopmentNov 8, 2024
- Full-Stack TypeScript Stack vs Laravel-RailsNov 7, 2024
- Will AI replace Web Developers?Nov 6, 2024
- Bumping Node.js dependenciesOct 13, 2024
- The AHA StackOct 7, 2024
- Next.js, passing an id to a server actionSep 19, 2024
- use() and data fetchingSep 18, 2024
- An HTML element id is a global variableSep 14, 2024
- Astro, set caching headersSep 14, 2024
- Astro, set response headerSep 14, 2024
- Hide HTML elements based on HTMX request statusSep 14, 2024
- Next.js embed youtube videoSep 14, 2024
- Using Cloudflare Turnstile on a Astro formSep 14, 2024
- Using reCAPTCHA on a Astro formSep 14, 2024
- What’s new in React 19Sep 14, 2024
- How to install Git on Linux (Ubuntu)Aug 21, 2024
- The Git Cheat SheetAug 21, 2024