Claude Code vs Cursor for Professional Work: How to Choose
Claude Code vs Cursor for professional work, compared on review control, repo scale, security, cost and team fit, with a pick for each situation.
Writing on software engineering and the decisions behind real systems.

Claude Code vs Cursor for professional work, compared on review control, repo scale, security, cost and team fit, with a pick for each situation.
Remove release downtime for a PHP monolith, a Next.js frontend and search on Kubernetes: probes, preStop drain, safe rollouts and Redis sessions.
A step-by-step guide to using Claude Code in large codebases: layered CLAUDE.md files, plan mode, scoped tasks, hooks, and a rollback routine.
Write a CLAUDE.md that Claude Code actually follows: what to include, what to cut, how to scope rules, and how to test and roll back changes.
An AI code review checklist for teams: nine checks for AI-generated diffs, each with its strength and limit, plus a routine to run weekly.
A practical guide to reviewing AI generated code: check intent, dependencies, tests and security, then turn it into a routine your team repeats.
Set up Keycloak on Kubernetes with PostgreSQL, TLS ingress, HA clustering, a hardened image and realms as code. Step-by-step, production-minded guide.
Everyone is repeating that SaaS is dead because AI agents will absorb business applications. I have been hearing this exact song since 2013, when I started with PHP — a language that has been declared dead every year since, and that earned me around $150,000 in the last two years.
This article traces where the "SaaS is dead" claim actually came from, why death headlines are marketing instruments rather than analysis, and how to tell genuine technological decline from a hype cycle — without turning "ignore the noise" into an excuse to stop learning.
Most advice about structuring a codebase assumes you are starting from an empty repository. Real work rarely looks like that. This article argues that structure is a response to a diagnosed problem, not a decision you make up front, and shows how to build the understanding that makes the decision possible.
It covers a verification loop for learning an unfamiliar system, the case for isolating business logic per endpoint (including what that approach costs), how to live with a legacy component that works but resists change, and what undocumented infrastructure does to a migration.
I rebuilt my ten-year-old Laravel package in two phases: a beta built with Cursor using a test-first agent loop, and a stable release built with Claude that split the package into a framework-agnostic core and a thin Laravel wrapper.
This is the workflow in detail — explaining expectations, having the AI write tests, reviewing those tests before letting the agent loop to green — plus the honest boundary of the method: passing tests are a claim about the code, not about the platforms it talks to.
I published a small Laravel package about ten years ago so a freelance client could stop copy-pasting blog content into three social networks. Since then it has been renamed twice, survived a long maintenance gap during an international move, led to a stranger thanking me on a street in Mashhad and a job offer from a US startup, and finally became the foundation of a product.
This is what actually happened in between: what renaming a package really costs, what users do when you go quiet, and the unpredictable places a public package can take you.