Rethinking Your CDN Strategy for 2025
The way we've done content caching using CDNs is changing, and it's not always intuitive. As a developer, you might have relied on the idea that using a popular CDN for libraries like jQuery would...
The way we've done content caching using CDNs is changing, and it's not always intuitive. As a developer, you might have relied on the idea that using a popular CDN for libraries like jQuery would...
When researching CSS features that mimic SASS features I came accross the if() function. This function allows you to apply conditional logic directly in your CSS, similar to how you might use it in...
In 2023, Chris Coyier wrote SASS features in CSS where he explores the SASS features that have been adopted in CSS. It's been a couple years so, in this post, I will explore how have the features in...
As a way to learn React and exercise Typescript, I started building a recipe database application using PostgreSQL as the database, Express as the API server, and Vite/React as the client. This post...
Temporal is a new API designed to handle dates and times in Javascript. It is designed as a replacement for the existing Date API, without taking over the Date namespace. Unfortunately, it is not...
Homebrew is a powerful package manager for macOS that simplifies the installation and management of software. Migrating your Homebrew setup to a new Mac can be an easy process if you follow the right...
Managing monorepos, a single repository with multiple packages (each with its own package.json and dependencies), can be challenging. This is where NPM workspaces come in. This post will cover what...
I recently read two post that got me thinking about the value of learning a web development framework. These posts also align with my own experiences and thoughts on the subject. This post will...
One of my biggest frustrations in Node.js development is when your project works on your machine but breaks somewhere else. A common cause is package inconsistency between environments, even with a...
List comprehensions in Python allow you to create new lists by applying an expression to each item in an existing iterable, optionally filtering items based in a condition. I've always missed this...