Custom search engines (sometimes called site search) are a great browser feature, but they aren't easily ported from one browser to the next. I created a portable web app to handle your custom search engines from any browser.
Search with cmd/ctrl + f, or browse by tag.
Documenting my first attempt at switching from Netlify CMS to Static CMS
Props are merged, but attributes are not. This is an important rule to know when authoring Astro components.
The npm-run-all package allows you to run multiple scripts from your package.json in parallel
You need to include additional properties in your netlify.toml to get it working correctly.
Announcing astro-netlify-components, a library for using Netlify features in your Astro projects.
A little code walk through a the new Activity Graph on my homepage.
A quick guide on using an Astro endpoint to generate the webfinger you need to use your domain on Mastodon.
Steve Jobs had some opinions on consulting, and it sparked a few thoughts of my own. What makes a valuable consultant? Experience.
Command bars are a great way to access functionality through a single user interface, but how much potential does this pattern have to change the way we interact with products?
Detailing some of the struggles that I've encountered while trying to do front-end development on a Raspberry Pi.
After a lot of trial an error, I settled on Raspberry Pi OS and Firefox for my little Linux-powered computer.
It's been about 10 years since I last tried using Linux, so I think it's time to explore what it has to offer in 2022.
A curated list of helpful browser extensions.
If you want to display multiple blog posts on a single page, then you might want to use a dynamic route to generate pages for your content.
Detailing why and how I rebuilt this site with Astro.
A growing list of little things that make working with Jest a little better
A curated list of great extensions that might fly under your radar
Disable enhanced tracking protections to use StackBlitz with Firefox
A drop-in replacement for Math.random that generates cryptographically strong random values
A write-up on the new star feature on seanmcp.com
With specialized profiles, you can help identify issues without messing with your favorite settings.
The memo higher-order component can prevent your component for re-rendering unnecessarily, but you should use caution before using it
A little tool to calculate 5 + 4 + 3 + 2 + 1
A tool to look up common words by their consonant-vowel pattern and resources for the rest
A growing list of artists that I like to listen to while programming.
Walking through the steps within the Google Chrome dev tools to better mimic your users' devices.
Make sure the you are using Node.js version 12 or later
How to make a custom web component with only a few lines of code
A clever extension can prevent Google Meet from muting your bluetooth microphone
A curated list of the best reaction emojis that I have created for Slack
Features and examples for some of the tools that I use to create illustrations and diagrams
Turtle Guide, Paint Pig, and Spotlight all help children build computer literacy
A growing list of terms you need to recognize when working in React Native
Why you won't be installing any community packages on your next React Native project
How to find a simulator ID using the Xcode UI or terminal
A quick how-to without committing to whether it's a good idea or not
Moving into mobile development at Niche and looking back on how I got here
A quick guide to writing a time-saving shortcode to create the embeddable code from a YouTube url
Using the Google app's music recognition feature, I was able to identify the song as "Banana" by Stony Pony
Writing a little helper function to grab the HTML of all children of a shallow wrapper in Enzyme
The missing "hello world" example to get up and running with remark
Although JS treats them like object, finding the methods of a class programmatically is trickier than I thought.
Freshening up SeanMcP.com for the new year
A curated collection of git commands that help me do my job better
How to use URLSearchParams to parse any search parameters string like window.location.search
Make sure that the path to your font is correct before going down the debugging rabbit hole.
Make sure that your configuration file is being copied to the destination directory.
A one liner to copy the last commit hash to the clipboard on a Mac
Recording my experience contracting COVID-19 in 2020
A guide to using the eleventy-plugin-heroicons package in your Eleventy projects
Build your very own shortener in six quick steps
You can use an HTML expression to add valid markup to an element
Some resources and guides for making browser add-ons/extensions
Proposing an alternative, more constructive idiom to "there's more than one way to skin a cat"
A terminal command to search for all the files in the current directory that contain two independent strings.
Not a true fix, but a decent workaround when paginating collections in Eleventy
When building something new, get your foundation in place before building upon it.
How to create a shortcode to expose data for client-side scripts
Using a git shorthand to checkout the most recent branch
Using the Required utility type to required all properties of a type
Using a shell script to add a line to every file with a given extension
A little Bash script to rename all files from `.jsx` to `.tsx`
A simple solution to stop Sass from transparent hsla colors to opaque hex colors.
Since audio and video are native HTML elements, you can change the playing speed with a quick console script
How to use npm view to see all the published versions of a package on the registry.
Two CSS properties that make letters and numbers the same width.
TypeScript provides valuable features but complicate the development process. What are some alternatives that provide the features without the headache?
Simulating your web pages on Apple devices is easy with Safari's responsive design mode
A sample POST with fetch for those of us who can never remember how.
Sidestep slicing and splicing and use Array's filter method for a no-hassle solution.
For some unknown reason, you need to enable tab highlighting in the browser's settings.
When trying to run Jest in watch mode, this error may mean that you are missing a dependency.
Demand inelasticity in web development, why its bad, and what we can do about it.
Reviewing and updating my TypeScript mega-course on Egghead.io
Why developers should rely on markets to make the best decisions for their product
Using Deno's environment to determine your computer's home directory
How developers can reduce opportunity costs and avoid the sunk-cost fallacy
An organized approach to debugging your code
Introducing a new series on how economics helps explain the decisions we make when developing software
Denon is a utility for Deno that provides source watching and process restarting just like Nodemon
How the right design and process for sourcing images made all the difference for me
Using Deno's standard flags module to parse command-line arguments with aliases
Creating a playlist to learn TypeScript
Lessons learned from publishing six videos on YouTube
How to use Deno's standard library to read and parse data from a json file.
How to use Node.js's file system to read and parse data from a json file.
Why I started a YouTube channel and what I learned in the process
A brief journey into the dangerous world of user agent sniffing
Adding a simple filter to save you a lot of grief.
When forced between storing data for humans or computers, choose the former.
A list of articles, topics, and resources that are currently over my head
Some notes from the talks that I was able to attend
A comprehensive guide for opening the dev tools in Chrome and Firefox
The full toolbelt for making your own custom Slack emojis
A list of articles, books, and resources for software engineers
Why tests (should) free you to grow with confidence
Writing a script to read the package.json for you
Not as easy as we'd like it, but not as hard as it could be
Easily spin up a new article when you don't have a CMS
Kicking off 2020 with (yet another) new handle
Correcting my mental model
Reflecting on last year while looking forward the next
Checking in on the goals I set for myself in 2019
A quick review of Jeff Olson's article on teaching code with translated examples
A few things I've learned from managing a modestly popular open-source package.
The temptation is strong, but consider some of the tradeoffs.
Some notes and thoughts from Pittsburgh's cross-discipline software conference
The steps to edit recent or ancient commit messages
An attempt to remember the difference between the two
A guide to pronounce my often-mispronounced name
How to create a custom event listener for class names using the MutationObserver API
Why do we store data in state as opposed to on the class?
Using a console script to alter the content on a webpage
A few tools to help you build more accessible React applications
Demystifying the inline if statement
Learning and sharing about accessibility for everyone
A step by step guide to converting old components to modern React
Reflecting on last year while looking forward to next
An effort to preserve my content on the ever-changing web
Render props are a popular technique in modern React, but they can be tricky. Here is a brief explanation and guide to creating your own.