Type something to search...

Blog

auto-fit vs. auto-fill in CSS Grid: What's the Difference?

auto-fit vs. auto-fill in CSS Grid: What's the Difference?

There's one line of CSS Grid that shows up in almost every modern card layout: grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));

Continue Reading
Implementing a Shopping Cart and Inventory System in MongoDB

Implementing a Shopping Cart and Inventory System in MongoDB

Carts and inventory are where e-commerce stops being a content problem and becomes a concurrency problem. A product page can be cached for an hour, b

Continue Reading
Static Type Checking in Python with mypy and Pyright

Static Type Checking in Python with mypy and Pyright

Type hints on their own don't do anything. Python stores them and moves on, so a function annotated to return str can return None all day long wi

Continue Reading
CSS Grid Template Areas: Visual Layouts in Code

CSS Grid Template Areas: Visual Layouts in Code

Most CSS layout code is abstract. You read grid-column: 2 / 4 or flex: 1 1 0 and have to picture the result in your head. grid-template-areas i

Continue Reading
New Viewport Units: dvh, svh, and lvh Explained

New Viewport Units: dvh, svh, and lvh Explained

If you've ever built a full-screen hero section with height: 100vh, you've probably opened it on a phone and found the bottom cut off. The call-to-

Continue Reading
Generics, Protocols, and TypedDict: Advanced Type Hints in Python

Generics, Protocols, and TypedDict: Advanced Type Hints in Python

Basic type hints take you a long way. str, list[int], dict[str, float], and X | None cover most function signatures. Then you hit code that's

Continue Reading