All blogs / JavaScript / TypeScript
Flavio Copes
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,121 from 16 Jul 2012 to 31 Oct 2026
- Posting
- about daily (411 in the last year)
- Kind
- personal blog
- Feed
- https://flaviocopes.com/rss.xml
Latest
October 2026
- Test your SaaS replacement before cancelling the original
- How to make it easy to leave your SaaS
- Build or buy calculator: when does your replacement cost less?
- Research keywords through OpenSEO MCP
- Build a tiny site-audit crawler with Workers and Queues
- The best voice to text apps for a Mac
- Build an agent approval flow that survives a restart
- Lessons for builders from Sam Altman's Cheeky Pint interview
- When one product pays another
- Pi Durable, Cloudflare Workflows, or Vercel Workflow?
- How to customize Cloudflare Access pages
- How to use TinyFish
- The best macOS browsers for AI agents, and how to use them
- Give coding agents checks they can learn from
- Practicing engineering judgment with AI
- The complete guide to AI image generation
- The big players in AI coding: models, tools, and who to follow
- Internet Business Lab is open
- Which business advantages can a solo developer build?
- How to use GPT-6.1 Terra, OpenAI's new fast vision model
- Chrome Alternatives in 2026: 50 Web Browsers Compared
- How to work with coding agents from your phone
- How to protect secrets when coding agents deploy your app
- How to use MCP Tasks and Elicitations in Claude Code
- The complete guide to Convex
- How to use Grok Build
- A pull request workflow for code written by agents
- Prompt caching, compression, and compaction in coding agents
- Pushing to main still needs a process
- What changes when you stop opening the code editor?
- Cloudflare Hyperdrive tutorial: use PostgreSQL with Workers
- What teaching can tell us about prompting
- Too many conversations with coding agents
- Software with a point of view
- What would make an overnight agent useful?
- I care more about the AI product I can use
- How to use Cursor Computer Use
- The complete guide to LM Studio Bionic
- How to secure a VPS with Tailscale and Cloudflare Tunnel
- What to check before submitting a native app to App Review
- Triage support tickets in one request with OpenAI's Decisions API
- How to publish a Chrome extension to the Chrome Web Store
- What to check before upgrading the Anthropic SDK
- How to use a coding agent without another subscription
- How to create a DMG installer for a Mac app
- AI video editing tools: what agents need to work safely
- A deep dive into Claude Duet
- Paid traffic for SaaS validation: how to test product demand
- Security in the age of AI
- Give your coding agent a state machine
- PSA: update PHP today
- Jev vs structured outputs: when to use each
- Vite toolchain: Cloudflare, vinext, and shared web tooling
- SPA vs server-side rendering: which should you choose?
- A deep dive into tsrs
- How to update all global npm packages
- Cloudflare Pages vs Workers: which should you choose?
- How AI agents make existing software more useful
- AI-assisted code migration: how to switch frameworks safely
- AI coding agent context: how to document project decisions
- How to speed up tests for AI coding agents
- How to compare OpenCode, Claude Code, and Codex CLI
- How I would evaluate Muse Wonder in Cursor
- 15 apps you can vibe code instead of subscribing
- See all news →
- Codex vs Claude Code vs Cursor: how to choose
- Parallel coding agents: how to coordinate and review changes
- How to use OpenCode with a local model in LM Studio
- A practical review workflow for T3 Code threads
- Selling SaaS to developers: how to find paying customers
- MCP server design: tools, authentication, and rate limits
- OpenCode Code Mode explained: JavaScript instead of repeated tool calls
- Changing package managers doesn't remove your npm registry dependency
- How to compete with AI-generated SaaS clones
- Build vs buy software: when AI can replace a SaaS
- How to write an OpenCode plugin with the v2 API
- How OpenSEO works and how to self-host it
- How to build agents that survive crashes with Pi Durable
- How to use OpenCode
- The complete guide to Void: full-stack Vite apps with Hono and Cloudflare
- Meta released Muse Spark Open: what you can run, and what it takes
- How to handle web requests in C with CGI 1.1
- What “open weights” means for AI models
- How to build AI agents with LangChain and LangGraph in TypeScript
- How I fixed a full Ubuntu server disk with Codex
- How to create an Apple TV app
- How to install your own apps on your iPhone with Xcode
- LiveKit tutorial: how to build a voice AI agent
- How to use Jev with Claude Code, Codex and Cursor
- See all posts →
- How to avoid the "Open Anyway" message when building macOS apps
- Use WhatCable to figure out what your USB cable can do
- How to compile JavaScript into a single executable
- How to use Jev with the Vercel AI SDK
- Use npkill to find and delete old node_modules folders
- What happens when AI agents shop for us
- I built Footage Ferry, a Mac app to import Blackmagic Camera videos
- I open sourced testvm, so your coding agents can test Mac apps in a VM
- I built Repo Foyer, a Chrome extension that puts my repos on the GitHub home page
- Planning CloudKit sync between a Mac app and an iPhone app
- How to schedule cron jobs on Linux and macOS
- Payment picker: find how to get paid for your app
- Which web host should I use? Hosting comparison tool
- How to use cf, the new Cloudflare CLI
- I built Architecture Dissector, a Mac app that shows how my apps are built
- I built Couch Snake, the classic phone game for the Apple TV
- I built Chip Pops, 6,000 8-bit sound effects for my apps
- How to use Jev confidence scores
- How to fix "Stacked PRs are not enabled for this repository"
- Should you pay for the Apple Developer Program?
- How to let coding agents test Mac apps in a VM
- How to add automatic updates to a Mac app using GitHub Releases
- I built Slide Lookout, a Chrome extension that shows your next slide
- What running a one-person software business costs per month
- Herdr alternatives: terminal workspaces and agent managers compared
- How to create and publish a ChatGPT plugin
- What is poteto-mode in pstack?
- How to classify text with Jev
- I built Post Slide Deck, slides from posts on X for my videos
- I built VM Peek, a Mac app that shows what your coding agents do in the test VM
- Every product I launched this summer, and what happened to each
- How to use the Codex CLI
- How to use your ChatGPT subscription in other apps
- How to use the OpenAI Agents API in JavaScript
- Herdr keyboard shortcuts
- How to use Codex Cloud
- A deep dive into Clef, Cloudflare's decision model
September 2026
- A deep dive into OpenAI dots
- Things I let coding agents do unattended, and things I never do
- How to use Jev with Python
- How to use the unslop skill
- GPT-6.1 Sol API tutorial: build a Node.js code reviewer
- Payment processing fees compared: Stripe, Paddle, and more
- How to stop X from turning a domain into a link
- The MCP servers connected to my editor, and the ones I actually use
- How to use Jev in Node.js
- PostgreSQL and SQLite hosting: free and paid options
- The 10 fundamentals still worth learning when AI writes the code
- How much does Jev cost?
- The CLI tools I use every day
- Linux server commands for troubleshooting and maintenance
- How to use Cloudflare Worker Previews
- How to get access to Jev and an API key
- Which AI model is best for coding? A hands-on comparison
- Every hosting provider's free tier, side by side (checked September 2026)
- The complete guide to Cloudflare Tunnel
- The complete guide to Cloudflare Quick Tunnels
- A deep dive into Pi
- The stack I use to run this blog, 2026 edition
- How to build a terminal app people can SSH into
Every year
2026 4112025 202024 682023 1062022 1372021 2962020 3172019 3692018 3582017 242014 42013 62012 1