DEV Community

Alex MacArthur profile picture

Alex MacArthur

Bossing around computers in made-up languages.

Location Nashville, TN Joined Joined on  Personal website https://picperf.io github website twitter website

Education

Concordia College - Moorhead, MN

Work

Senior Software Engineer at Ramsey Solutions

Writing Debut
Six Year Club
Five Year Club
Four Year Club
Three Year Club
Two Year Club
One Year Club
Collect All Requested Images on a Website Using Puppeteer

Collect All Requested Images on a Website Using Puppeteer

Comments
5 min read

Want to connect with Alex MacArthur?

Create an account to connect with Alex MacArthur. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
TIL: inline event handlers still fire when passed to React's dangerouslySetInnerHTML

TIL: inline event handlers still fire when passed to React's dangerouslySetInnerHTML

Comments
5 min read
Streaming Text Like an LLM with TypeIt (and React)

Streaming Text Like an LLM with TypeIt (and React)

Comments
3 min read
I didn't know you could use sibling parameters as default values in functions.

I didn't know you could use sibling parameters as default values in functions.

Comments
3 min read
JamComments Now Offers AI-Powered Moderation

JamComments Now Offers AI-Powered Moderation

Comments
3 min read
It’s Probably Worth Converting that GIF to an Animated WebP

It’s Probably Worth Converting that GIF to an Animated WebP

Comments
5 min read
Adding Structured Data in Astro's Starlight Documentation Framework

Adding Structured Data in Astro's Starlight Documentation Framework

Comments
4 min read
The Machines Would Appreciate More Structured Data

The Machines Would Appreciate More Structured Data

Comments
8 min read
Looking Forward to (Hopefully) Not Needing Responsive Images One Day

Looking Forward to (Hopefully) Not Needing Responsive Images One Day

Comments
3 min read
You Might Consider Using an Image Sitemap

You Might Consider Using an Image Sitemap

Comments
6 min read
The Architecture Might Not Be the Problem

The Architecture Might Not Be the Problem

Comments 1
4 min read
Transform Image URLs with a Simple Cloudflare Worker

Transform Image URLs with a Simple Cloudflare Worker

Comments
7 min read
Maintain a Healthy Sense of Caution Whenever Running a `curl|bash` Command

Maintain a Healthy Sense of Caution Whenever Running a `curl|bash` Command

Comments
5 min read
It's never been easier to performantly put images on the web.

It's never been easier to performantly put images on the web.

Comments
6 min read
Why Am I Getting a 502 Bad Gateway After Turning on Plausible?

Why Am I Getting a 502 Bad Gateway After Turning on Plausible?

Comments 1
2 min read
How to Back Up Your Self-Hosted Plausible Analytics Data

How to Back Up Your Self-Hosted Plausible Analytics Data

Comments
3 min read
Raise the API Rate Limit for a Self-Hosted Instance of Plausible

Raise the API Rate Limit for a Self-Hosted Instance of Plausible

Comments
3 min read
Let's Bring Back JavaScript's `with()` Statement

Let's Bring Back JavaScript's `with()` Statement

Comments
11 min read
Server-rendering your UI is expensive!

Server-rendering your UI is expensive!

Comments
1 min read
You should still look at your site with JavaScript disabled.

You should still look at your site with JavaScript disabled.

Comments
1 min read
Strive for Being "Feature-Complete"

Strive for Being "Feature-Complete"

Comments
1 min read
There Are a Lot of Ways to Hide Stuff in the Browser

There Are a Lot of Ways to Hide Stuff in the Browser

Comments
9 min read
Lighthouse is Not Your End User

Lighthouse is Not Your End User

Comments
1 min read
Deserializing Polymorphic Lists with Kotlin, Jackson, and Spring Boot

Deserializing Polymorphic Lists with Kotlin, Jackson, and Spring Boot

Comments
6 min read
Executing Dangerously Injected Scripts Inside React Components

Executing Dangerously Injected Scripts Inside React Components

3
Comments
6 min read
For Maximum Accessibility, Be Careful About Using a .dev Domain

For Maximum Accessibility, Be Careful About Using a .dev Domain

Comments
5 min read
Don't Let Visitors Know Your Origin Server Exists

Don't Let Visitors Know Your Origin Server Exists

2
Comments
8 min read
PicPerf's Impact on Jane Ross Tutoring's Website

PicPerf's Impact on Jane Ross Tutoring's Website

Comments
2 min read
TIL: The Download Attribute Doesn’t “Just Work” for Cross-Origin Resources

TIL: The Download Attribute Doesn’t “Just Work” for Cross-Origin Resources

Comments
3 min read
Get All That Network Activity Under Control with Priority Hints

Get All That Network Activity Under Control with Priority Hints

3
Comments
9 min read
Your Cache Headers Could Probably be More Aggressive

Your Cache Headers Could Probably be More Aggressive

1
Comments
6 min read
Reviewing PicPerf's Impact on SongwriterCity.com

Reviewing PicPerf's Impact on SongwriterCity.com

Comments
3 min read
Building a Two-Way Data Binding Hook for Form Inputs in React

Building a Two-Way Data Binding Hook for Form Inputs in React

Comments 2
5 min read
Taking Variable Fonts for a Spin

Taking Variable Fonts for a Spin

Comments
5 min read
Run Puppeteer with Docker on Fly.io

Run Puppeteer with Docker on Fly.io

Comments
5 min read
How to Better Leverage Browser Preloading

How to Better Leverage Browser Preloading

Comments
7 min read
Mount a Multi-Page SPA into an App with Server-Side Routing

Mount a Multi-Page SPA into an App with Server-Side Routing

2
Comments
5 min read
Why I Moved from Notion to Ghost for My Headless CMS

Why I Moved from Notion to Ghost for My Headless CMS

2
Comments
6 min read
Picking the Right Tool for Maneuvering JavaScript's Event Loop

Picking the Right Tool for Maneuvering JavaScript's Event Loop

Comments
12 min read
Elegant Memoization with Ruby’s .tap Method

Elegant Memoization with Ruby’s .tap Method

Comments
5 min read
Options for Navigating JavaScript's Event Loop

Options for Navigating JavaScript's Event Loop

Comments
12 min read
If Possible, Don't Run Prism.js in the Browser

If Possible, Don't Run Prism.js in the Browser

Comments
5 min read
Consider Animating Your Canvas in a Web Worker

Consider Animating Your Canvas in a Web Worker

Comments
4 min read
More Elegant Destructuring with JavaScript Generators

More Elegant Destructuring with JavaScript Generators

Comments
3 min read
Use a MutationObserver to Handle DOM Nodes that Don’t Exist Yet

Use a MutationObserver to Handle DOM Nodes that Don’t Exist Yet

Comments
5 min read
You’ve Got Options for Removing Event Listeners

You’ve Got Options for Removing Event Listeners

Comments
5 min read
Use the .matches() Method to Determine if a Selector Matches an Element

Use the .matches() Method to Determine if a Selector Matches an Element

Comments
3 min read
What I Like About Astro

What I Like About Astro

Comments
7 min read
How to Lazy Load Disqus for Improved Site Performance

How to Lazy Load Disqus for Improved Site Performance

Comments
4 min read
Keep Using Disqus if You Don’t Care About SEO, Performance, and User Privacy

Keep Using Disqus if You Don’t Care About SEO, Performance, and User Privacy

Comments
8 min read
When I Actually Needed useLayoutEffect() in React

When I Actually Needed useLayoutEffect() in React

Comments
5 min read
Serving Notion Presigned Images with Cloudflare Workers

Serving Notion Presigned Images with Cloudflare Workers

6
Comments
9 min read
I’ve Boarded the SSG Train Again

I’ve Boarded the SSG Train Again

1
Comments
10 min read
Why Can’t You .forEach() Over Empty Array Items?

Why Can’t You .forEach() Over Empty Array Items?

3
Comments 2
3 min read
Using Vite to Develop an SPA in the Context of a Production Page

Using Vite to Develop an SPA in the Context of a Production Page

Comments
9 min read
When DOM Updates Appear to Be Asynchronous

When DOM Updates Appear to Be Asynchronous

1
Comments
9 min read
Why I Like Tailwind CSS

Why I Like Tailwind CSS

5
Comments 1
7 min read
Don't Feel Bad About Using XMLHttpRequest

Don't Feel Bad About Using XMLHttpRequest

8
Comments 1
12 min read
When It Makes Sense to Use a Utility Function Instead of a Polyfill

When It Makes Sense to Use a Utility Function Instead of a Polyfill

7
Comments
11 min read
Clean Up Your Redux Store Listeners When Component State Updates

Clean Up Your Redux Store Listeners When Component State Updates

6
Comments
7 min read
loading...