How Password Hashing Works
Websites don’t store your password, they store a hash. How hashing works, why that’s the reason password reset exists, and why storing less is safer.
Learn web development one little thing at a time. Practical tutorials on JavaScript, CSS, HTML, React, and modern frontend and backend basics.
Websites don’t store your password, they store a hash. How hashing works, why that’s the reason password reset exists, and why storing less is safer.
Payment forms reject invalid card numbers instantly thanks to the Luhn algorithm — a 1954 checksum your browser runs before contacting anyone at all.
The junior role is changing rather than disappearing. Why the first job gets harder, and which developers end up with the advantage as AI spreads.
Forgetting Docker commands isn’t a sign you’re failing. Why experienced developers look things up, and why a personal cheat sheet beats memorization.
curl still matters in 2026. Why AI-generated fetch calls don’t replace it, and how curl teaches you HTTP through headers, debugging and API testing.
The honest case for and against remote work as a developer — the freedom and flexibility against distraction, isolation and blurred hours.
A practical Docker and Docker Compose cheat sheet: start and stop services, follow logs, run commands inside containers, and clean up what you don’t need.
Jest, Vitest, Testing Library, Mocha, Chai and Sinon explained for beginners — what each tool actually does, and which one to start with.
A plain-English introduction to Javascript testing: what a test actually is, why it matters, the types worth knowing, and the tools to start with.
Three naming conventions for components that clash with your UI library — wrapping, naming by purpose, and prefixes — with the tradeoffs of each.
Lay a gradient or solid tint over an image using a ::before pseudo-element. Four copy-ready overlays with before-and-after photos.
The unglamorous half of programming — reading other people's code, naming things well, chasing bugs, and keeping a codebase alive.
Slice a photo into a nine-patch grid and wrap it around a box. What one, two, three and four border-image-slice values each do.
Turn a plain border into a gradient with border-image and border-image-slice. Linear, radial and conic examples, no image files needed.
Install Java on a Mac with Homebrew or the Oracle JDK, set JAVA_HOME, verify the install, and fix “Unable to locate a Java Runtime” errors.
Am I too old to learn coding? A developer who started late on why age is rarely the real obstacle, what the learning curve looks like, and where to begin.
Crop an element by pushing its sides in with clip-path: inset(). What one, two, three and four values do, plus the round keyword.
Copy-ready clip-path: polygon() code for triangles — right, isosceles, acute and obtuse — all built by moving one corner of a square.
Copy-ready clip-path: polygon() code for direction signs, arrows and pointers in all four directions, with a diagram for every shape.
Copy-ready clip-path: polygon() code for pentagons, hexagons, heptagons, octagons, nonagons and decagons, with diagrams for each.
Crop any element to a circle with clip-path: circle(). Radius, positioning with at, and how to isolate one face in a group photo.
Why are internet cookies called cookies? The name traces back to magic cookies in Unix, Lou Montulli, and a piece of early 1990s browser history.
A macOS shortcuts cheatsheet for new Mac users: editing, Finder, window and screenshot shortcuts, plus the Windows equivalents if you just switched.
Run lint and tests automatically on every commit with Husky Git hooks. Setup, pre-commit examples, Husky vs GitHub Actions, and how to skip a hook.
Spin a card forever with animation plus @keyframes — around X, around Y or both — and the rotation value that makes it snap back.
What transform, transition, animation and @keyframes each do in CSS, and every value they take, explained in plain English without code.
Flip a card on hover with transform: rotateY() and a transition — around X, around Y or both, and how to make it flip back on hover-out.
Type the copyright symbol on a Mac with Option + G. Plus the Character Viewer fallback and shortcuts for ™, ®, degree and section symbols.
Three ways to exit full screen on Mac: the green button, press and hold Esc, or Control + Command + F — plus what to do when an app won’t budge.
Install PostgreSQL on macOS with Homebrew, run it as a background service, fix “command not found: psql”, and connect with the psql shell.
The HTML blink tag is obsolete and no longer works in any browser. Here is the CSS animation that recreates blinking text, ready to copy and paste.
Five worked text-shadow examples — positive and negative offsets, stacked colors, and the blur value that ruins readability.
Bend a line of text into a circle with one span per letter, absolute positioning and transform: rotate(). Full copy-ready coordinates.
git add -a doesn’t exist. The command you want is git add -A — here’s how it differs from git add . and when that difference actually matters.
Style many elements at once with a single CSS class, then name it so it still makes sense in six months. With do and don't examples.
Express.js interview questions on middleware, routes and app.use, with clear answers on req.params vs req.query vs req.body and express.Router().
How CSS went from decorating static pages to driving motion — and why animation is a way of communicating state, not just decoration.
Node.js 18.11 added a built-in --watch flag that restarts your app when files change. No nodemon, no config, no extra dependency to install.
Build a round push-button in CSS: inset shadows for the base, a gradient face, hover and active states, and a soft shadow underneath.
The inset keyword draws a shadow inside the element instead of around it. Here is how to build a soft pressed-in effect with two shadows.
What each box-shadow value actually does — offset, blur, spread and color — built up step by step on one simple box you can copy.
Sit a glossy CSS water drop on top of a heading using border-radius, layered box-shadows and two pseudo-element highlights.
Build a glowing neon sign with nothing but layered box-shadow and text-shadow — outer glow, inset glow and a matching text halo.
Apply filter: grayscale() to text, backgrounds, photos, SVG, Font Awesome icons and emoji — with a before-and-after for every case.
Sweep colors around a point with conic-gradient. Move the center, set the start angle, add color stops and build pie-chart style wedges.
Draw a water drop in pure CSS: an uneven border-radius, four stacked box-shadows for volume, and two pseudo-elements for the highlights.
Build a folded paper corner with clip-path and a ::before pseudo-element — no images, and a drop-shadow trick that clipped boxes allow.
Build a @keyframes animation one layer at a time — color, shape, position, rotation and delay — on a single box, with the shorthand at the end.
:last-child targets the final element inside its parent. Worked examples on lists and paragraphs, plus the :nth-last-child(1) equivalent.
What the HTML span tag is for, how it differs from div, and how to style a single word — or a single letter — without breaking the line.