The Curious Engineer

All blogs / JavaScript / TypeScript

Flavio Copes

flaviocopes.com

Learn to build software products, put them on the internet, find customers, and create an independent business that can make a great living.

JavaScript / TypeScriptWeb developmentAI / MLMobile / iOS / Android

Posts
2,153 from 16 Jul 2012 to 7 Nov 2026
Posting
about daily (443 in the last year)
Kind
personal blog
Feed
https://flaviocopes.com/rss.xml

Latest

November 2026

  1. Build a private AI feature with a local model, Ollama and Node.js
  2. Migrating a Ghost blog to EmDash on Cloudflare
  3. Migrating a WordPress blog to EmDash: the checklist
  4. EmDash: Cloudflare's CMS for Astro, explained
  5. Tailscale vs Cloudflare Tunnel vs a cloud firewall
  6. Tailscale tutorial: your Mac and a server on one private network
  7. GPT-Live 1 tutorial: build a voice agent you can interrupt
  8. Conductor alternatives after the Meta acquisition
  9. The complete guide to the Chrome DevTools Protocol
  10. I want my coding agent to do what I ask
  11. Cloudflare Zero Wire: what it is and how to use it
  12. terminal-mac: give your computer-use agent its own Mac
  13. The complete guide to Cursor
  14. How to run SEO checks from the terminal
  15. Tailscale alternatives for your own servers
  16. How to move a DigitalOcean Droplet from Ubuntu to Debian
  17. How to move a Deno app to Cloudflare Workers
  18. Use different models for planning and coding
  19. What changes when an agent improves its own harness?
  20. Write agent instructions that explain the decision
  21. CVE-2026-98432: check your Linux server and close public ports
  22. A deep dive into agent-desktop
  23. How to use Hex for voice dictation
  24. The complete guide to doctl, the DigitalOcean CLI
  25. Why parallel coding agents can make your Mac work harder
  26. How Claude Code mods change the agent loop
  27. What to do when an AI tool exposes your provider keys
  28. How to package and publish an OpenCode plugin

October 2026

  1. How to run an LLM locally on macOS, Linux, and Windows
  2. Proton's AI manifesto and what it means to lead coding agents
  3. Void, vinext, or React Router for a Cloudflare app?
  4. Try Muse Spark Open in OpenCode through Ollama Cloud
  5. Test your SaaS replacement before cancelling the original
  6. How to make it easy to leave your SaaS
  7. Build or buy calculator: when does your replacement cost less?
  8. Research keywords through OpenSEO MCP
  9. Build a tiny site-audit crawler with Workers and Queues
  10. The best voice to text apps for a Mac
  11. Build an agent approval flow that survives a restart
  12. Lessons for builders from Sam Altman's Cheeky Pint interview
  13. When one product pays another
  14. Pi Durable, Cloudflare Workflows, or Vercel Workflow?
  15. How to customize Cloudflare Access pages
  16. How to use TinyFish
  17. The best macOS browsers for AI agents, and how to use them
  18. Give coding agents checks they can learn from
  19. Practicing engineering judgment with AI
  20. The complete guide to AI image generation
  21. The big players in AI coding: models, tools, and who to follow
  22. Internet Business Lab is open
  23. Which business advantages can a solo developer build?
  24. How to use GPT-6.1 Terra, OpenAI's new fast vision model
  25. Chrome Alternatives in 2026: 50 Web Browsers Compared
  26. How to work with coding agents from your phone
  27. How to protect secrets when coding agents deploy your app
  28. How to use MCP Tasks and Elicitations in Claude Code
  29. The complete guide to Convex
  30. How to use Grok Build
  31. A pull request workflow for code written by agents
  32. Prompt caching, compression, and compaction in coding agents
  33. Pushing to main still needs a process
  34. What changes when you stop opening the code editor?
  35. Cloudflare Hyperdrive tutorial: use PostgreSQL with Workers
  36. What teaching can tell us about prompting
  37. Too many conversations with coding agents
  38. Software with a point of view
  39. What would make an overnight agent useful?
  40. I care more about the AI product I can use
  41. How to use Cursor Computer Use
  42. The complete guide to LM Studio Bionic
  43. How to secure a VPS with Tailscale and Cloudflare Tunnel
  44. What to check before submitting a native app to App Review
  45. Triage support tickets in one request with OpenAI's Decisions API
  46. How to publish a Chrome extension to the Chrome Web Store
  47. What to check before upgrading the Anthropic SDK
  48. How to use a coding agent without another subscription
  49. How to create a DMG installer for a Mac app
  50. AI video editing tools: what agents need to work safely
  51. A deep dive into Claude Duet
  52. Paid traffic for SaaS validation: how to test product demand
  53. Security in the age of AI
  54. Give your coding agent a state machine
  55. PSA: update PHP today
  56. Jev vs structured outputs: when to use each
  57. Vite toolchain: Cloudflare, vinext, and shared web tooling
  58. SPA vs server-side rendering: which should you choose?
  59. A deep dive into tsrs
  60. How to update all global npm packages
  61. Cloudflare Pages vs Workers: which should you choose?
  62. How AI agents make existing software more useful
  63. AI-assisted code migration: how to switch frameworks safely
  64. AI coding agent context: how to document project decisions
  65. How to speed up tests for AI coding agents
  66. How to compare OpenCode, Claude Code, and Codex CLI
  67. How I would evaluate Muse Wonder in Cursor
  68. 15 apps you can vibe code instead of subscribing
  69. See all news →
  70. Codex vs Claude Code vs Cursor: how to choose
  71. Parallel coding agents: how to coordinate and review changes
  72. How to use OpenCode with a local model in LM Studio
  73. A practical review workflow for T3 Code threads
  74. Selling SaaS to developers: how to find paying customers
  75. MCP server design: tools, authentication, and rate limits
  76. OpenCode Code Mode explained: JavaScript instead of repeated tool calls
  77. Changing package managers doesn't remove your npm registry dependency
  78. How to compete with AI-generated SaaS clones
  79. Build vs buy software: when AI can replace a SaaS
  80. How to write an OpenCode plugin with the v2 API
  81. How OpenSEO works and how to self-host it
  82. How to build agents that survive crashes with Pi Durable
  83. How to use OpenCode
  84. The complete guide to Void: full-stack Vite apps with Hono and Cloudflare
  85. Meta released Muse Spark Open: what you can run, and what it takes
  86. How to handle web requests in C with CGI 1.1
  87. What “open weights” means for AI models
  88. How to build AI agents with LangChain and LangGraph in TypeScript
  89. How I fixed a full Ubuntu server disk with Codex
  90. How to create an Apple TV app
  91. How to install your own apps on your iPhone with Xcode
  92. LiveKit tutorial: how to build a voice AI agent
  93. How to use Jev with Claude Code, Codex and Cursor
  94. See all posts →
  95. How to avoid the "Open Anyway" message when building macOS apps
  96. Use WhatCable to figure out what your USB cable can do
  97. How to compile JavaScript into a single executable
  98. How to use Jev with the Vercel AI SDK
  99. Use npkill to find and delete old node_modules folders
  100. What happens when AI agents shop for us
  101. I built Footage Ferry, a Mac app to import Blackmagic Camera videos
  102. I open sourced testvm, so your coding agents can test Mac apps in a VM
  103. I built Repo Foyer, a Chrome extension that puts my repos on the GitHub home page
  104. Planning CloudKit sync between a Mac app and an iPhone app
  105. How to schedule cron jobs on Linux and macOS
  106. Payment picker: find how to get paid for your app
  107. Which web host should I use? Hosting comparison tool
  108. How to use cf, the new Cloudflare CLI
  109. I built Architecture Dissector, a Mac app that shows how my apps are built
  110. I built Couch Snake, the classic phone game for the Apple TV
  111. I built Chip Pops, 6,000 8-bit sound effects for my apps
  112. How to use Jev confidence scores
  113. How to fix "Stacked PRs are not enabled for this repository"
  114. Should you pay for the Apple Developer Program?
  115. How to let coding agents test Mac apps in a VM
  116. How to add automatic updates to a Mac app using GitHub Releases
  117. I built Slide Lookout, a Chrome extension that shows your next slide
  118. What running a one-person software business costs per month
  119. Herdr alternatives: terminal workspaces and agent managers compared
  120. How to create and publish a ChatGPT plugin
  121. What is poteto-mode in pstack?
  122. How to classify text with Jev

Every year

2026 4432025 202024 682023 1062022 1372021 2962020 3172019 3692018 3582017 242014 42013 62012 1

Undated 4

  1. + Become a sponsor
  2. See all products →
  3. See all cohorts →
  4. Open the download library →