My thoughts, ideas, experiences, and ramblings
My writing on this website will span many different topics, ranging from
web standards, tutorials, mental health, thoughts and ideas, and general
musings. While the bulk of my writing will be technical in nature it will
vary from long form to short form and sometimes include video and audio.
Some content will be beginner-friendly, while other pieces will be geared
towards those who have been building for the web for some time.
On the last point, please note that I might occasionally misjudge the
experience level required for certain content. If you find something where
you believe I've got it wrong, please let me know on GitHub, and I would be happy to correct it.
To help you find the content you're interested in, I offer different ways
to browse my writing. Below, you'll find a list of tags to filter content
by topic. Additionally, all my writing is listed chronologically, allowing
you to scroll through or use your browser's find-in-page functionality to
locate something specific.
As with most things, this website will evolve and improve over time based
on the time I have to work on it and your feedback and suggestions.
One of the first features I want to add is the ability to search for
content across the blog. I believe a well-implemented search feature is
one of the most powerful navigational tools, enhancing usability and
accessibility. I plan to experiment with different implementations, and
once available, I would appreciate your feedback on the search results to
ensure the best possible experience.
I hope you find value in the writing you discover here.
Browse all posts
-
Learn how to build a responsive profile page with modern typography, media queries, and CSS Grid. Part three of our hands-on web development tutorial series.
-
The financial pressures of modern life can make it hard to justify creative pursuits that don't promise immediate returns. This post explores the hidden costs of creativity in tech and society and the value of creative work beyond monetary gain.
-
In this post we will start implementing the design by working through some of the issues, learning more about Git and GitHub, get set up for development, create our first visual component, and learn about performance, CSS, and modern image formats.
-
In this part of the series we will break down the design into components using Atomic Design, set up our repository on GitHub, and create the issues we will need to work on.
-
Meet Project Calavera, a new open-source CLI tool that makes project configuration setup a breeze, especially for developers working outside the familiar framework ecosystems.
-
Learn how to use npm link to test your NPM packages locally before publishing to the registry. With some common troubleshooting tips and best practices.
-
This personal reflection explores how AI chatbots can support emotional growth and self-discovery, offering insights on using AI as a thoughtful companion while acknowledging its limitations compared to human connection and professional therapy.
-
Introducing Minimalist, a modern, lightweight, and customizable CSS library designed to provide a solid foundation for styling websites and web applications. Learn about its key features, technical details, and how you can get involved.
-
Unlock simpler web development with CSS's new individual transform properties—cleaner syntax, more intuitive styling, and delightful animations.
-
Learn how explicit return types in TypeScript can help you catch potential bugs early, improve code reliability, and create more predictable and maintainable TypeScript applications.
-
My takeaways from Zach Leatherman's talk on web components at the 2023 JSHeroes conference.
-
Why you should be careful copying and pasting proposed solutions from LLMs.
-
Perhaps it is the social bubble I find myself in, but it seems there is a lot of talk about gatekeeping happening at the moment. While the bubble metaphor does not quite work for what will follow, I do not have a better one, so humor me.
-
Git rebase is a powerful tool that allows developers to reorganize and clean up their commit history, such as by squashing or fixup-ing multiple commits into a single commit, which can be useful when submitting pull requests.
-
In late December of 2023, TPGi posted its list of the top accessibility errors found through its ARC automation tools in 2023. In this post I explain these errors and offer a solution.
-
While this post does not by any means aim to cover all the amazing things you can do with Intl.NumberFormat, I do cover two very common use cases you may have faced when formatting numbers in JavaScript.
-
In this post, I share 21 pieces of unsolicited advice for junior web developers. I emphasize the challenges of learning web development, encourage collaboration, and highlight the importance of web accessibility. Additionally, I discuss bootcamps, university degrees, and the value of learning to code.
-
In this post, I discuss why I care deeply about web accessibility, emphasizing its importance in ensuring equal access for people with disabilities and removing barriers to interaction with websites and applications.
-
In this post I share how open source empowers me as a developer, fosters community collaboration, and provides a platform for making a meaningful impact. Being part of the open source community is the best way for anyone new to the technology industry to gain experience and contribute to cool projects.
-
Sensible defaults for your Open Source project and community.
-
The topic of Polyfill.io and its sale came across my radar about a week ago when Tobie Langel shared a link to LinkedIn on the OpenJS Foundation Slack.
-
How do I handle type inference challenges with v-for in Vue 3 templates using TypeScript? Let's find out more.
-
A quick post on best practices when installing Nodejs on different platforms and managing multiple versions.
-
How do I merge one repository into another without losing commit history? This is a quick guide on how to do this.
-
A step by step guide to publishing a simple CLI tool to the NPM registry.
-
This post will look at starting a new Vue project using the Vite toolchain.
-
Using the Nodejs EventEmitter with GitHub webhooks
-
How to cancel asynchronous operations with the AbortController API.
-
Learn how to filter documents in a MongoDB collection by the size of an array field.
-
An introduction to Flexsearch and its tokenizers through writing and interpreting tests.
-
When running your Playwright tests, how do you load a different set of data based on the current execution environment?
-
Usng the special Vuejs is attribute to fix common DOM parsing caveats.
-
There are a couple of steps to take when switching from the older babel-eslint to the newer @babel-eslint. No worries, I'll show you how.
-
Let’s work through the process of improving a basic GitHub Action CI workflow to cover multiple Node.js versions and operating systems.
-
How do you style the cursor in CodeMirror 5? Also, how can you do this for light and dark themes? Let's take a look.
-
Could it be that the == operator in JavaScript had a bad rap and it’s time to reconsider it?
-
It’s October, which means pumpkins, candy, costumes, and Hacktoberfest. If you are completely new to open source and contributing on Github, but want to join in the fun, read on.
-
Some thoughts on the current state and challenges with regards to building a PWA in 2021.
-
Ok so, this is very different from what I usually post. It is also, hands down, the hardest post I have ever written. But, there is no point in keeping this to myself. No achievement is unlocked by suffering in silence. No medal for pretending everything is A-OK.