Using Chrome AI to Summarize Comic Books

A few weeks back, I blogged about analyzing comic books with gen ai, and honestly, it worked really darn well. I extracted the pages with Python, and send them to Google Gemini to create the summary. I was naturally curious to see if this could be done entirely on device, using Chrome’s AI support. Here’s what I found. First, a reminder – a few days ago I updated my web-based comic book reader and described that process. The code I’m sharing today is built upon that first application, so if you missed that post, I’d strongly suggest reading it first. (And if you don’t want to miss any of my posts, don’t forget to subscribe!). How It Works Alright –... more →
Posted in: JavaScript

Using Chrome’s Built-in AI to Improve AI Prompts

Props for this article go to my best friend, Todd Sharp, who yesterday said something along the lines of, "Hey Ray, you should blog a demo of …" which is pretty much akin to bring out a laser pointer in front of a cat. Not only do I love getting ideas for new demos, his idea was actually pretty freaking brilliant, which means I get to pretend I’m brilliant as well. His idea was this: Given a user created prompt meant to be shipped off to a "proper" (i.e. maybe expensive) Generate AI API, can we use tools to help improve the prompt and make it "cheaper" before used. Given we’ve got AI in the browser via Chrome (ok, we will have it soon), this seemed... more →
Posted in: JavaScript

Using AI to Search Maps

The magnificent David Rumsey Map Collection now has an AI Search Assistant that can help you find maps, learn more about individual maps, and even query specific elements within maps.The David Rumsey Map Collection is one of the largest online collections of maps, and its new AI Search Assistant is a fantastic resource. It not only helps you search and discover maps in the collection Maps Mania… more →
Posted in: Interactive Maps

Using StringBind in BoxLang

Ok, to be honest, this is going to be a pretty lightweight post as it’s about a simple little string function in BoxLang, but as I discovered it rather recently and was intrigued by what it did. So first off – how did I find this? In the BoxLang docs, there’s a whole section on built-in functions and a subcategory just for string. I was looking it over and realized there were quite a few that I had not known existed. There are some interesting ones in there like pascalCase and snakeCase. I was pretty sure I knew exactly how these worked, but I went ahead and built a quick demo that demonstrates both: Ok, that works well enough, but let’s talk StringBind. StringBind... more →
Posted in: JavaScript

Using Chrome AI for Sentiment Analysis (Again)

Every now and then I get an idea for a blog post/demo, prepare to write about it, and realize I’ve actually covered the topic in the past. Sometimes, though, it works out really well especially when the technology has changed quite a bit. Almost a year ago, I blogged about doing sentiment analysis with Chrome’s AI upcoming AI feature. At the time, it worked…. ok. The biggest issue at the time was the inability to provide a system instruction to the model as well as being able to shape the response a particular way. Thankfully, both of those are now supported. As a reminder, the prompt API for the web is still in an origin trial, see the docs for more information and join the... more →
Posted in: JavaScript

Using AgentQL and Pipedream to Fix Missing RSS Feeds

Last week I blogged about how I used AgentQL to scrape a web page, this blog to be precise, into pure data. If you don’t remember, AgentQL lets you pass a simple query string that is run against a web page and parsed into data. So for example, I was able to use this query on my home page to get a list of entries in pure data: { blogposts[] { url title date } } The REST API was incredibly easy, and I demonstrated in BoxLang how I could use AgentQL to turn my blog’s home page into a much simpler, smaller, HTML version. This of course begs the question, how else could we transform it? What about creating a RSS feed for a blog that doesn’t have one! Of course, if... more →
Posted in: JavaScript

Using GenAI to Create a SDK from Sample Code

I’ve been experimenting more and more with AI-assisted coding (not gonna call it vibe coding, even when I do), and the results have been incredibly interesting. Today, I decided to try something interesting – generating a SDK for an API. There are multiple tools out there that can convert an OpenAPI specification to an SDK (and those tools I’ve seen are pretty darn cool), but I wanted to attempt another route. Earlier this month I blogged about the new Foxit PDF APIs I’m working with. These APIs are all really simple, which is good of course, but when prepping for the release, I wanted to build code samples for every possible operation. I did so, and they’re up in... more →
Posted in: JavaScript

Using BoxLang’s Cache Services

Recently I’ve been looking at BoxLang’s Caching service, mostly because the docs were updated which made it easier to dig into it. 😉 My usual expectation for a caching service is typically a key/value system with APIs to get and set and hopefully a simple way to handle expiration. So for example, I can idealy store a cache value and an expiration values at the same time, and if I fetch it later and it’s expired, I get a nice null value back. As I said, that’s the ‘baseline’ for what I expect, so I was kind of blown away, and a bit overwhelmed honestly, with what you can do on the BoxLang platform. At a high level, here’s some of the details: Out of... more →
Posted in: JavaScript
1 2 3 10