Progressively Enhancing Product Reviews with Chrome AI / / No Comments While writing up my last blog post I mentioned that a new idea had occurred to me in regards to employing sentimenet analysis with Chrome’s built-in AI support (that, remember, is still way in beta). At lunch today I took a quick stab at a simple demo of what I had in mind and honestly, I’m pretty happy with how it came out. The Initial Demo The idea I had was an "imagined" ecommerce site with product reviews. I went to Google AI Studio and used a prompt to generate a set of product reviews. I used this prompt: Generate a list of 20 product reviews for a cat carrier named Cat Carrier Ultra 1000. The reviews should be a mix of positive and negative, with some being extremely... more → Posted in: JavaScript Tagged with: Chrome, Enhancing, Product, Progressively, reviews
Links For You (7/27/25) / / No Comments Good afternoon, programs. This past week was… frustrating. Incredibly slow. Don’t really want to get into it but luckily I’ve had a very lazy and relaxing weekend. I’m counting my blessings but – like I said – frustrating. Let’s just get to the links, shall we? Importing JSON is Easier Now Normally when importing JSON into my code, I’ll do a fetch and parse the response into JSON. Not a big deal, but, it’s now simpler as explained by Thomas Steiner on the web.dev blog: "JSON module scripts are now Baseline Newly available". This feature is "Baseline" available means it works in modern browsers. Check the post for a full... more → Posted in: JavaScript Tagged with: 7/27/25, links
Getting Image Insights with Built-in Chrome AI and EXIF Data / / No Comments It’s been a busy few weeks for Chrome’s Built-in AI support. Since the last time I blogged about it, four features have gone GA (which still means they are Chrome only but not behind a flag anymore): Translator Summarizer Language Detector Prompt API (for extensions only) And while announced back at the end of May, Gemma 3n as a model is available in Canary, Dev, and Beta Chrome builds. To be clear, the percentage of folks who can use these new features is still really low, but all of these features also work really well in progressive enhancement, and can be backed up by server calls to an API if need be. I continue to be really excited about the possibilities these APIs unlock,... more → Posted in: JavaScript Tagged with: Builtin, Chrome, data, EXIF, Getting, Image, Insights
Using AgentQL and Pipedream to Fix Missing RSS Feeds / / No Comments 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 Tagged with: AgentQL, Feeds, missing, Pipedream, using
Creating a Calendar with BoxLang / / No Comments Chalk this up to – "Here’s a simple idea for a quick and dirty blog post" that turned into a few hours of my holiday weekend. Not only that, this is probably the first of three or so blog posts so… buck up, buttercup, this is going to be a fun ride. A while ago I had written down (well, typed in, I use Microsoft To Do to record writing ideas) the idea of demonstrating calendar creation with BoxLang, specifically creating a dynamic calendar, with or without events, either entirely server-side, or using a combination of client-side code with BoxLang providing the API. For today’s post, I’m going to focus on (what I had assumed would be) the simplest version... more → Posted in: JavaScript Tagged with: BoxLang, calendar, creating
Links For You (7/13/25) / / No Comments My goal for this series of posts is to share interesting links every two weeks, and I’ve noticed that sometimes it feels like a split second between when these posts go out. I’m actually a week or so late on this one, which is fine, but dang does time go by quickly. Usually summer is pretty slow, but with the new job, new product launch, and lots of camps for the kids, I don’t feel like it’s ever let up. Despite that, I’ve managed to put in near ten hours of Star Wars Outlaws this weekend, so I’m still getting a chance to catch my breath. I put the controller down for a bit so I can share these fun links with yall. Enjoy! Using Transformers.js to Find Related... more → Posted in: JavaScript Tagged with: 7/13/25, links
Simple Charting with BoxLang / / No Comments Building a BoxLang and want to know how to do charting with it? The answer is simple… don’t! I kid! Sorry, but for many, far too many, years now I’ve argued that ColdFusion should not include a charting library. It’s a server-side language, and in my (definitely not) humble opinion, client-side code doesn’t belong there. (I’m fine not worrying about that though – I trust that team knows their clients better than I do and knows what they’re doing.) The good news (again, imo) is that BoxLang doesn’t ship with an embedded client-side charting library. That being, I can absolutely see cases where you may be building a web app in BoxLang and want... more → Posted in: JavaScript Tagged with: BoxLang, Charting, simple
Extracting Data from Web Pages with AgentQL and BoxLang / / No Comments I discovered AgentQL a few weeks ago and have been thinking about it quite a bit. In a nutshell, it lets you perform queries against a web page. They’ve got a simple query language that kinda reminds me of GraphQL, but simpler. So for example, consider the page you are on right now – if I wanted to get the tags, I could use this query: { tags[] } And it would return: { "tags": [ "#development", "#boxlang" ] } What if I wanted the links? I could change my query to express this: { tags[] { label url } } And then get: { "tags": [ { "label": "#development", "url":... more → Posted in: JavaScript Tagged with: AgentQL, BoxLang, data, Extracting, from, Pages