Generics explained: one idea, three implementations
Generics let you write code once for many types without giving up type safety. TypeScript, Go and Rust each approach them differently.
Archive
Every story, newest first.
Generics let you write code once for many types without giving up type safety. TypeScript, Go and Rust each approach them differently.
Browsers now block many cross-site requests by default. That helps, but it doesn't make CSRF tokens obsolete.
Your README is your project's front door. Answer the first three questions every visitor has, and keep the rest a click away.
Shipping code and turning on a feature don't have to happen at the same moment. Flags make releases boring — if you also clean them up.
Jobs will run twice, run late and fail halfway. Designing for that from the start is what separates a reliable queue from a source of 3 a.m. pages.
Data that never changes is easier to reason about, share and test. Persistent data structures make immutability practical without copying everything.
CSP is one of the most effective defenses against cross-site scripting. Rolling it out gradually is the difference between protection and a broken checkout page.
Good reviews catch bugs and spread knowledge without bruising anyone. Small habits on both sides of the pull request make the process faster and kinder.
Renaming a column sounds trivial until old and new code run at the same time. The expand/contract pattern makes schema changes safe during live deploys.
Before you add a dedicated search engine, check what your database already does. Postgres and SQLite both ship capable full-text search.
Garbage collection frees you from manual memory management, but it isn't free. A tour of the main algorithms and what they mean for latency.
API keys in the repo, passwords in chat, one shared admin login. A practical path from secret sprawl to something you can actually audit and rotate.