Interrogate Your PDFs with Chrome AI / / No Comments 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 Tagged with: Chrome, Interrogate, PDFs
Summarizing PDFs with On-Device AI / / No Comments 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 Tagged with: OnDevice, PDFs, Summarizing
Building a UI for Gemini File Stores / / No Comments 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 Tagged with: building, file, Gemini, Stores
Using Chrome AI to Rewrite Monstrous JSON / / No Comments Happy Saturday folks, and while this is a topic I’ve covered many times here, I was bored and wanting to write some code, so I whipped up a quick demo. One of my favorite uses of AI is to take abstract data and write a human readable form of it. Now to be clear, this is not something you need AI for. Given that you know the shape of your data, you can create your own summary using hard-coded rules about what values to show, how to present them, and so forth. What I like about the Gen AI use-case for this is the amount of randomness and creativity you get in the responses. In the past I’ve done this with weather forecasts and chart data, but today I thought I’d try something... more → Posted in: JavaScript Tagged with: Chrome, JSON, Monstrous, Rewrite, using
Links For You (1/10/26) / / No Comments Happy 2026, programs! As this is the first Links For You for the year, I figure it may be good to remind folks why I write these. Social media can be a great place to share links with folks, but it’s very much hit or miss. Someone may share something incredibly cool that you would love to boost, but if you miss it, you’re out of luck. I subscribe to many listservs that share good tech links, but a while ago I thought it would be cool to share and promote links I thought were especially cool. Obviously that’s pretty opinionated, but that’s why you’re here, right? Each of these posts will have three links, typically but not always tech related, and a fourth entry that... more → Posted in: JavaScript Tagged with: 1/10/26, links
Adding Hardcover.app Data to Eleventy / / No Comments It’s been far too long since I shared an Eleventy tip, and to be fair what I’m showing today can be used anywhere, but hopefully this will be useful to someone else out there. I enjoy tracking my media consumption, specifically movies and books. For movies I’ve been real happy with Letterboxd (you can see my profile if you wish). For books, I used Goodreads for a very long time, but have wanted to migrate off the platform and switch to something else. There’s alternatives, but none really worked well for me. Earlier this week, an old friend of mine (hi Jason!) suggested Hardcover. This is a Goodreads competitor built, in their own words, out of spite, and I can totally... more → Posted in: JavaScript Tagged with: Adding, data, Eleventy, Hardcover.app
Turning Recipe Data into an Astro Content Collection / / No Comments As I continue to dig into, and learn, Astro, I thought I’d take a look at creating custom content collections. Content collections are pretty much exactly how they sound – collection of content items you can use within your Astro site. If you go through the excellent Astro tutorial you will find this discussed at the end in the final optional step step. Content collections aren’t required – you can build dynamic sets of data just using file system operations (and that’s how the tutorial has you build the blog) – but they make it easier (imo) to re-use content throughout the site. I encourage you to check out the docs, but generally content collections come... more → Posted in: JavaScript Tagged with: 'turning, Astro, collection, Content, data, into, Recipe
An Astro site for my CSS Snippets / / No Comments As I think I’ve mentioned a few times already, I’m learning Astro and attempting to build random stuff with it just as an excuse to help practice and learn. With that in mind, during the Christmas break and between marathon sessions of Baldur’s Gate 3, I built a little site I thought I’d share here on the blog. To be clear, this is nothing special, and doesn’t come close to using all of the possible Astro features of course, but it was a useful coding exercise for myself and fun to build. The web platform as a whole has gotten dramatically better over the past decade, and CSS improvements are a big part of that. There is a huge amount of new CSS features I’m... more → Posted in: JavaScript Tagged with: Astro, Site, Snippets