Dan Stroot


Short solutions to discrete problems.

Select a random row from a database table

There are lots of ways to select a random record or row from a database table. Here are some example SQL statements that don't require additional application logic, but each database server requires different SQL syntax.

Nextjs Hotkeys

Here is the easiest way to implement "hot keys" in a Nextjs app using the app router.
#Javascript#React Hook#React Component#Nextjs

Async/await functions in parallel

To speed up our code lets look at some ways to run promises in parallel. This can be useful when performing multiple database queries to render a web page and you want to run the queries in parallel rather than seqentially.

Easier Imports

Import from folders like /components, /utils or /hooks from @/anywhere in your codebase.


There is no need to import classnames from NPM - instead use this simple function.


Sometimes when you are testing, or playing around, you just want to simulate some delay. Here's a simple way to do just that.

Next.js 13 NavLink Component

This snippet shows how to create a custom NavLink component in Next.js 13 that extends the built-in Link component to add CSS classNames when the href attribute matches the current URL.

Embed a Tweet in .mdx

Sometimes you just want to add a Tweet to a post. Should be simple, right? With .mdx you have some different choices that are worth considering.
#Javascript#React Component

Infinite Scroll

This is a clean, understandable way to implement an infinite scroll in a React/Next application. Cheers!
#Javascript#React Component

React Hooks

I have documented some React hooks I find useful but there are many, many hooks out there. Here are some great React Hooks resources. Cheers!
#Javascript#React Hook

Google Tag Manager

Implementing Google Tag Manager in Nextjs.


Debouncing is a strategy that lets us improve performance by waiting until a certain amount of time has passed before triggering an event.

Framer Motion

Animated slide in pane component with Framer Motion

Get the last segment of a URL

How to get the last segment of a path or URL using JavaScript.

Parsing MDX files

Compile and bundler MDX files with mdx-bundler

Recursive Timeout

Recursive timeout function that can be used for timed events.
#React Hook


When dealing with a server-side rendered application it can be useful to know when you are rendering on the client.
#React Hook


useMediaQuery is a react hook that makes testing for media query matches in your code easier and simpler.
#React Hook


Some people do not prefer animations, and for some motion can be harmful. The prefers-reduced-motion CSS media query allows us to disable animations.
#React Hook

Web Vitals

Web Vitals is an initiative by Google to provide unified guidance for quality signals that are essential to delivering a great user experience on the web.

Google Analytics API

Using Google Analytics API to get page data.


The Intersection Observer API allows you to configure a callback that is called whenever an element intersects either the device viewport.
#React Hook


Adding SEO using a wrapper container
#React Hook