Skip to Content
0 likes
tsconfig strict: Turn It On Without 200 Errors Level: Beginner

Count what each strict flag costs, turn them on one at a time, park one stubborn error with ts-expect-error, and finish with strict true. After this, an old project can move to strict in steps.

0 likes
Fix "Type is not assignable" on a Nested Object Level: Intermediate

Read a long assignability error from the bottom, then fix the usual causes: a wrong value, a wrong type and a literal widened to string. After this, a nested mismatch points to one property.

0 likes
Add typescript-eslint to an Existing TS Repo Level: Advanced

Install typescript-eslint on TypeScript 7, switch the rules on as warnings, count them by rule and hold the count down. After this, you can adopt type-aware linting without blocking the team for a week.

0 likes
Fix "column does not exist" Level: Beginner

Find the cause of the column does not exist error from the five usual ones: a typo, double quotes, an alias in WHERE, a quoted name and a missing table. After this, you can fix it in a minute instead of changing the table.

0 likes
Fix "must appear in the GROUP BY clause" Level: Intermediate

Read the error, then fix it the right way: group by the column, aggregate it or move the aggregate into a subquery. After this, you know which fix keeps your numbers correct.

0 likes
Read EXPLAIN ANALYZE in 10 Minutes Level: Advanced

Run one slow query with EXPLAIN ANALYZE and read it with a five-question checklist: rows touched, filtered rows, estimates, loops and sort spills. After this, you can find the slow node of a plan and check your fix.

0 likes
Find Slow Queries With pg_stat_statements Level: Advanced

Turn on pg_stat_statements in a Docker container and list the statements that cost the most in total. After this, you know which query to tune first, and you do not have to guess.

0 likes
Find and Fix a Deadlock Level: Advanced

Reproduce a deadlock between two money transfers, read the message, and fix it by locking rows in the same order. After this, you can turn a deadlock detected error into a plain wait.