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

Summarizing PDFs with On-Device AI

You can take the man out of the PDFs, but you can’t take the PDFs out of the man. Ok, I’m not sure that exactly makes sense, but with a couple years in me of working with PDFs, I find myself using them quite often with my AI demos. For today, I’m going to demonstrate something that’s been on my mind in a while – doing summarizing of PDFs completely in the browser, with Chrome’s on-device AI. Unlike the Prompt API, summarization has been released since Chrome 138, so most likely those of you on Chrome can run these demos without problem. (You can see more about the AI API statuses if you’re curious.) Getting PDF Text – Client-Side There’s plenty... more →
Posted in: JavaScript

Building a UI for Gemini File Stores

Back in November of last year I wrote up a blog post talking about a new (at the time) Google Gemini feature, File Stores: "Gemini File Search and File Stores for Easy RAG". In that post I discussed what it was, how it worked, and built up a simple example. You should definitely read that post first, but if you want the TLDR, here ya go: File Stores (referred to as "File Search") expands on Gemini’s previous ability to work on files in a temporary fashion by allowing you to create a permanent "store" of folders. You can use this for RAG systems and use flexible metadata filter for complex queries. This feature has been out for a few months now and I’ve... more →
Posted in: JavaScript
1 2 3 4 109