- LeetCode 71 – Simplify Path
A stack problem disguised as string manipulation, and the stack is not an optimisation — it is the only structure that models what .. means. Splitting on / handles doubled and trailing slashes for free, popping an empty stack must be a no-op, and "..." is an ordinary filename.
- AWS – S3: Buckets, Policies and Static Sites
S3 as the service everything else leans on. Storage classes and the lifecycle rule that moves objects between them, versioning as an undo button with a bill attached, and Block Public Access — which should stay on, because a static site is served through CloudFront with OAC, not a public bucket. Ends with the bucket that serves this site: private, one policy, one distribution allowed to read it.
- LeetCode 70 – Climbing Stairs
Fibonacci wearing a hard hat, and the smallest problem where the recursion-to-DP conversation happens naturally. Recognising the sequence is nice; being able to say why it is Fibonacci is the answer, because the recurrence is what survives when the step sizes become arbitrary and it turns into Coin Change.
- MySQL – EXPLAIN and Reading a Query Plan
Finding out what the optimizer decided instead of guessing. Reading EXPLAIN column by column, what the `type` values mean from `ALL` to `const` and which ones should worry you, `key` and `rows` and how rough the estimate is, EXPLAIN ANALYZE for actual timings rather than predictions, EXPLAIN FORMAT=JSON, and a worked example taking one slow query from a full scan to an index lookup.
- MySQL – Indexes
The single biggest lever on query speed. What a B-tree index is and what it costs on every write, the clustered primary key and why a secondary index lookup is two lookups, composite indexes and the leftmost-prefix rule that decides whether yours gets used, covering indexes, why an index on a low-cardinality column is often ignored, and the four common ways to write a query that cannot use the index you just added.