Three Plug-N-Play CSS Libraries

For probably over a decade, when I wanted to make a demo/site look nice and didn’t really care about making it unique, I’d go to Bootstrap. Bootstrap had a nice, clean look and as I was usually employing it for demos, or admin screens, I didn’t care if it looked like every other Bootstrap site. While Bootstrap was mostly simple, it’s also wordy as heck. Bootstrap has an insane love affair with div tags and even a simple Bootstrap page feels like the line number goes up 4X. Again, that’s fine, but I found myself wishing for something a bit simpler. That’s where the frameworks I’m sharing today come in. For the most part, these libraries require little... more →
Posted in: JavaScript

I threw thousands of files at Astro and you won’t believe what happened next…

Ok, forgive me for the incredibly over the top title there. Yes, it’s clickbait, but I’m also tired after a very long week and feeling a little crazy, so just go with me here a bit, I promise it will be worth it. I was curious how well Astro could handle a large amount of data and I thought – what happens if I threw this blog (well, the Markdown files) at it and tried to render out a site? Here’s what I did wrong and what eventually worked (better than I expected). Round One I began by creating a soft link locally from my blog’s repo of posts to the src/pages/posts of a new Astro site. My blog currently has 6742 posts (all high quality I assure you). Each one looks... more →
Posted in: JavaScript

Links For You (2/8/26)

Happy Superb Owl Day! As my team didn’t even get close to the playoffs, I’ll be rooting for the Seahawks, but even more so, hoping for a fun game. Tomorrow I head out to Vegas for my first offsite with Webflow, and the first in-person company event I’ve been too since Auth0 nearly a decade ago. I’m looking forward to meeting my teammates in person and meeting new people. Now – to the links! Adding Touch to PowerShell A few months back, I traded in my Windows laptop (it was having horrible hardware issues) and moved back to Mac. I’ve gone back and forth over the years, and even when I was on Windows for my personal machine, my work laptop was usually a Mac,... more →
Posted in: JavaScript

Creating Reddit Summaries with URL Context and Gemini

A while ago, the Gemini API added a feature to help work with URL content, URL Context. Previously you had to fetch and download the HTML of the page and pass it to the API. This feature allows Gemini to request content (with limits) from public web pages. I thought it would be interesting to test this against Reddit. In the past I’ve made use of Reddit’s APIs, but as they’ve pretty much destroyed access to those APIs, I thought this could be a good work around. Here’s a simple demo I built. My demo parses the Astro subreddit, specifically the new feed, and asks for a summary of items that seem to require a developer’s help, as well as items that may be critical... more →
Posted in: JavaScript

Building a Bluesky Sentiment Dashboard with Alpine and Chrome AI

Good morning, programs! Today I’m sharing yet another example of Chrome’s on-device AI features, this time to demonstrate a "Bluesky Sentiment Dashboard". In other words, a tool that lets you enter terms and then get a report on the average sentiment for posts using that word. I actually did this before (and yes, I forgot until about a minute ago) last year using Transformers.js: Building a Bluesky AI Sentiment Analysis Dashboard. I also built this for Twitter, before it went down the toilet, killed off API access, etc. etc., but I can’t seem to find it in my archives so maybe I’m hallucinating. That being said, earlier this week I thought I’d try building... more →
Posted in: JavaScript

Building an RSS Aggregator with Astro

This weekend I had some fun building a little Astro site for RSS aggregation. It works by the individual user defining a set of feeds they care about and works with a server-side Astro route to handle getting and parsing the feeds. Here’s a quick example. On hitting the site, it notices you haven’t defined any feeds and prompts you to do so: Clicking "Manage Feeds" opens up a dialog (my first time using one with native web platform tech!) where you can add and delete RSS feeds: After you have some specified, the app then calls server-side to fetch and parse the feeds. Items are mixed together and returned sorted by date: Not too shabby looking, either. That’s... more →
Posted in: JavaScript

Links For You (1/25/26)

I write this in the midst of a huge ice event – which thankfully isn’t so bad here in south Louisiana. We’re very cold and rainy, but no real ice yet, which is good. The worst is coming in later tonight and the schools have already shut down, but thankfully I work at home so there’s no need to get on the roads. Today is also the 26th birthday of my eldest child, which makes the age ranges of my little army (8 kids total) go from 10 to 26. Wow. Temporal is Coming… Ok, most likely you’ve seen this across your feeds already, I swear I saw it at least ten times, but "Date is out, Temporal is in" is a great introduction to the new date hotness in JavaScript,... more →
Posted in: JavaScript

Interrogate Your PDFs with Chrome AI

Yesterday I blogged about using PDF.js and Chrome’s on-device AI to create summaries of PDF documents, all within the browser, for free. In that post I mentioned it would be possible to build a Q and A system so users could ask questions about the document, and like a dog with a bone, I couldn’t let it go. Last I built not one, but two demos of this. Check it out. Version One Before I begin, note that this version makes use of the Prompt API, which is still behind a flag in Chrome. For this demo to work for you, you would need the latest Chrome and the right flags enabled. The Prompt API is available in extensions without the flag and it wouldn’t surprise me if this requirement... more →
Posted in: JavaScript
1 2 3 108