We build TweakPad — a set of free, client-side developer tools — and write about the problems we run into while doing it.
An honest assessment of AI coding tools — the tasks they are genuinely good at, the failure modes to expect, and a review checklist for generated code.
The TweakPad Team
How context windows work, what tokens actually cost, the lost-in-the-middle effect, and practical strategies for fitting a real codebase into one.
The TweakPad Team
Which computer-science fundamentals genuinely pay off in application work — complexity, data structures, concurrency and naming — and which are safely skippable.
The TweakPad Team
Practical productivity practices for engineers — protecting deep work, reducing context switches, and automating the decisions that do not deserve thought.
The TweakPad Team
A working set of shell commands for developers — searching, processing text, inspecting processes and diagnosing a server — with the flags that matter.
The TweakPad Team
The prompting techniques that measurably improve results for coding tasks — context, specificity, examples and verification — without the mysticism.
The TweakPad Team
Multi-cursor editing, the command palette, workspace settings and debugging — the VS Code features worth learning properly rather than the extension lists.
The TweakPad Team
A lookup table for Git recovery — uncommitting, unstaging, recovering deleted branches, fixing the wrong branch, and why reflog makes almost everything reversible.
The TweakPad Team
A practical GitHub Actions setup for a Node project — caching, concurrency cancellation, matrix builds, and the permissions and secrets mistakes to avoid.
The TweakPad Team
What each command does to your history, the golden rule of rebasing, and a branching workflow that avoids the arguments entirely.
The TweakPad Team
How container queries differ from media queries, the containment rules and gotchas, and why they finally make a component library truly reusable.
The TweakPad Team
The accessibility issues that account for most real failures — contrast, keyboard access, labels, focus management — with concrete checks for each.
The TweakPad Team
Which HTML elements carry real semantics, what assistive technology and search engines do with them, and the div-soup patterns worth replacing.
The TweakPad Team
LCP, INP and CLS explained with their thresholds, the specific causes of each, and how to tell lab data from the field data Google actually ranks on.
The TweakPad Team
How CSS variables differ from preprocessor variables, why they cascade, and the theming, component-API and animation patterns that only they enable.
The TweakPad Team
One dimension or two — the rule for choosing between Flexbox and Grid, plus the modern Grid features that replace media queries entirely.
The TweakPad Team
The real trade-offs between session cookies, JWTs, API keys and OAuth — including why stateless JWTs make logout hard and what to do about it.
The TweakPad Team
Resource naming, status codes, pagination, versioning and error shapes — with attention to the choices that become breaking changes if you get them wrong.
The TweakPad Team
Why streams exist, the four types, and how pipeline() fixes the error handling and back-pressure bugs that pipe() leaves you with.
The TweakPad Team
Compound index ordering, the ESR rule, covered queries, and how to read explain() output to confirm an index is actually being used.
The TweakPad Team
The embed-versus-reference decision, the 16 MB document limit, and five schema patterns that solve the problems normalisation would have solved in SQL.
The TweakPad Team
How to diagnose a slow query with EXPLAIN ANALYZE, the index rules that matter, and the eight query patterns that defeat indexes.
The TweakPad Team
What each join type returns, why LEFT JOIN with a WHERE clause silently becomes an INNER JOIN, and how row multiplication inflates your aggregates.
The TweakPad Team
A fair comparison of XML and JSON — attributes, namespaces, schema validation, mixed content — and the cases where XML remains the better choice.
The TweakPad Team
Why splitting on commas breaks real CSV, how RFC 4180 quoting works, and the type-coercion and encoding traps that silently corrupt converted data.
The TweakPad Team
How JSON Schema works, the keywords that matter, and why additionalProperties false is the setting most schemas are missing.
The TweakPad Team
An honest comparison of JSON, YAML and TOML for configuration — readability, comments, tooling, and the specific ways YAML surprises people.
The TweakPad Team
The eight JSON syntax errors that account for nearly every parse failure, what the error messages actually mean, and how to locate the problem quickly.
The TweakPad Team
Naming conventions, date formats, null handling and the structural choices that make JSON easy to consume — plus what the spec does and does not allow.
The TweakPad Team
How next/image prevents layout shift, what sizes and priority actually do, and the configuration mistakes that make images slower rather than faster.
The TweakPad Team
How Server Actions work, why they are safer than an API route for form handling, and the validation and authorisation you must not skip.
The TweakPad Team
The Request Memoization, Data Cache, Full Route Cache and Router Cache — what each one caches, how long for, and how to opt out correctly.
The TweakPad Team
How to use the native Metadata API for titles, canonicals, OpenGraph, Twitter cards and JSON-LD — and why next-seo is unnecessary in the App Router.
The TweakPad Team
A practical tour of the App Router — layouts, route groups, loading and error boundaries, dynamic segments and generateStaticParams — and when to use each.
The TweakPad Team
A diagnosis-first guide to React performance — how to find the real bottleneck with the Profiler, and the five fixes that account for most real-world wins.
The TweakPad Team
What React does with keys during reconciliation, the concrete bugs index keys cause, and how to pick a key when your data has no id.
The TweakPad Team
What Server Components actually are, the client boundary, what you can and cannot pass across it, and how to decide which components need "use client".
The TweakPad Team
Memoisation in React has a real price. Here is how to tell which of the three legitimate cases you are in, and why most useMemo calls are net negative.
The TweakPad Team
useState, useEffect, useRef, useReducer and the newer hooks — what each is for, the dependency-array rules, and the mistakes that cause infinite loops.
The TweakPad Team
An incremental migration path from JavaScript to TypeScript — allowJs, per-file adoption, handling untyped dependencies, and what to do about the any that creeps in.
The TweakPad Team
The real differences between type aliases and interfaces — declaration merging, unions, performance and error messages — with a simple rule for choosing.
The TweakPad Team
A flag-by-flag guide to TypeScript strict mode, including noUncheckedIndexedAccess, and a practical order for enabling them on an existing codebase.
The TweakPad Team
Generics explained by what problem they solve, with constraints, defaults, inference and the conditional types you meet in real codebases.
The TweakPad Team
Partial, Pick, Omit, Record and the rest — what each one is for, when to reach for it, and the composition patterns that replace hand-written duplicate types.
The TweakPad Team
How the event loop actually schedules work, why promises always run before setTimeout, and how to stop long tasks from freezing your page.
The TweakPad Team
What a closure is, why the classic loop bug happens, and the three real-world patterns closures enable — memoisation, private state and partial application.
The TweakPad Team
How ?. and ?? work, why ?? is not the same as ||, and the short-circuit behaviour that surprises people. With practical patterns for API data.
The TweakPad Team
Why 0 == "" is true, NaN !== NaN, and when Object.is differs from strict equality. A clear model for JavaScript comparison instead of memorised rules.
The TweakPad Team
How async/await really works, the sequential-await mistake that makes code 10x slower, and how to handle errors and parallel work correctly.
The TweakPad Team
A working reference for JavaScript array methods — which mutate, which return new arrays, and which one to reach for. With performance notes and real examples.
The TweakPad Team