Ideas, tutorials
and field notes.
Practical writing about learning, building and proving what you know. Tutorials, engineering decisions, data notes and the occasional strong opinion.
The challenge should be harder than the lesson
If a learner can finish a lesson without thinking, they have not learned anything yet. Here is how we design the gap between reading and doing.
How to practise JavaScript without copying the answer
Reading a solution creates recognition. Rebuilding it from a blank file creates recall. Here is a practice loop that makes the second one happen.
A SQL join you can actually debug
Most join bugs are not syntax errors. They are wrong assumptions about cardinality, missing rows and NULLs.
TypeScript generics: the useful 20 percent
You do not need advanced type gymnastics to get most of the value. Start with relationships between inputs and outputs.
What a portfolio project should prove
A portfolio is not a screenshot gallery. It is evidence of decisions: what you noticed, what you chose and how you tested it.
Docker layers, caching and smaller images
A good Dockerfile is mostly about ordering. Put the things that change least at the top and keep the runtime surface small.
How to read an error message without panicking
An error is a compressed report: location, expectation and observed value. Read it in that order before changing code.
PostgreSQL vs MongoDB is the wrong first question
Start with access patterns and consistency requirements. The database choice follows from the data and the queries, not from a preference.
What a QR code proves — and what it does not
Scanning a certificate is not the same as verifying a person. A clear verification result needs to say both what it checked and what it cannot know.
Security habits for developers who ship
You do not need a security team to avoid the common failures. You need a few defaults that survive a busy release.
A 20-minute weekly review that works
A short review beats a heroic restart. The goal is to notice what changed, remove one obstacle and choose the next commit.
Build your study plan around output, not hours
“Study for two hours” is an input goal. “Ship a working form with validation and a test” is an output goal. Only one tells you whether you learned.
Isolating a playground without breaking it
A live code preview is one of the most useful learning tools on the web — and one of the easiest ways to introduce a security hole. Here is the boundary we use.
Reviewing a translation is technical work
Machine translation can draft a lesson in seconds. It cannot decide whether a sentence about specificity is still true in another language.
We publish corrections, not just wins.
If you spot an error in a lesson or want to contribute a technical review, tell us.