mysql to pg upgrade

From MySQL to PostgreSQL: a much lighter server

I recently migrated mpazari.com, a Turkish motorcycle classifieds site, from MySQL 8 to PostgreSQL 12. The application is a Spring Boot 4 / Java 25 GraalVM native image using hand-written SQL. The migration involved moving the existing database, adapting the MySQL-specific queries, and testing the application against a real production snapshot. The migration was completed with approximately three minutes of downtime. The main steps were: Create the PostgreSQL schema. Copy the MySQL data into PostgreSQL. Update the application queries for PostgreSQL. Run the test suite and verify the row counts. Stop the application, perform the final copy, switch the JDBC URL, and restart it. PostgreSQL’s stricter typing exposed a few old data and SQL issues that MySQL had silently accepted. The test suite helped find and fix those issues before the production cutover. ...

September 18, 2026 · 2 min · Özkan Pakdil
Playwright Resource Monitor: browser window with a breach arrow crossing the 70% threshold

Playwright Resource Monitor: making CI fail when your browser tabs burn CPU

Green build, slow pages. That combination has annoyed me for years: Playwright happily reports 136/136 passing while the browser quietly burns 90% of one core on a badly-behaved tab, or the whole runner sits at 99% memory and everything gets suspiciously slow. Test outcomes say nothing about how much resource the tests consumed. Resource waste in CI is exactly the kind of thing you want to fail loudly, not discover from user complaints later. ...

August 30, 2026 · 6 min · Özkan Pakdil
Code Hygiene: The Architectural Shield

Beyond Functionality: Why Code Hygiene is Your Project's Immune System

In the world of software engineering, we often obsess over the “Testing Pyramid.” We pour resources into unit tests, integration tests, and E2E suites. These are critical, they tell us that our features work as designed. But there’s a shadowy category of bugs that traditional tests often miss: the architectural “anti-patterns” and “API misuses” that don’t break functionality today but lead to system failures, memory leaks, or portability issues tomorrow. ...

April 22, 2026 · 4 min · Özkan Pakdil