How a $20 steel 26" frame from the St. George Bicycle Collective became a 700c singlespeed, then a 12-speed SRAM AXS wireless gravel bike, and how its original owner found me when I sold it.
It's been a cold and dark couple of months here in the desert, so as you can imagine I was pretty pleased when I woke up to a warm, beautiful morning on New Year's Day a few weeks ago. I immediately had the desire to ride, so I pulled my bike down to begin my…
Garmin offers two options for recovering a lost device. The first is called "Find My Edge" and it requires a Bluetooth connection to the device in order to work. This wasn't a real option for me since my Garmin could potentially be miles away from my phone.…
function timeAgo(date, locale = navigator.language) {
const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });
const units = { year: 31536e6, month: 2628e6, week: 6048e5,
day: 864e5, hour: 36e5, minute: 6e4, second: 1e3 };
const diff = new Date(date) - Date.now();
for (const [unit, ms] of Object.entries(units)) {
if (Math.abs(diff) >= ms || unit === 'second') {
return rtf.format(Math.round(diff / ms), unit);
}
}
}
// timeAgo('2026-10-04') → "3 days ago"
JavaScript
Featured Snippet
Turn any date into “3 days ago”, “yesterday”, or “in 2 hours” using the browser’s built-in Intl.RelativeTimeFormat. No libraries, and it speaks every language the browser does.