JavaScript SpeechSynthesis API / / No Comments As the web continues to be the medium for all users, standards bodies need to continue to provide new APIs to enrich user experience and accessibility. One underused API for unsighted users is speechSynthesis, an API to programmatically direct the browser to audibly speak any arbitrary string. The Code You can direct the browser to utter speech with window.speechSynthesis and SpeechSynthesisUtterance: window.speechSynthesis.speak( new SpeechSynthesisUtterance('Hey Jude!') ) speechSynthesis.speak will robotically tell the user anything you provide as a SpeechSynthesisUtterance string. Support for this API is available in all modern browsers. I wouldn’t consider speechSynthesis as... more → Posted in: JavaScript Tagged with: JavaScript, SpeechSynthesis
Fix “This video format is not supported” on YouTube TV / / No Comments Setting up a new computer is bliss — no old, unused apps and the machine performs much better than the previous. Unfortunately, you may encounter new problems based on the new hardware. One such issue I encountered with my new MacBook was a “This video format is not supported” message when I went to YouTube TV. Not being able to watch my favorite live show is a real problem. After a bit of research, I found the solution to the “This video format is not supported” error message. To solve this problem: Open your browser settings and do a search for DRM You should see reference to Widevine, a form of DRM Enable this Widevine setting Restart your web browser Enabling... more → Posted in: JavaScript Tagged with: format, supported”, this, video, YouTube
Checking for Spam Content with Chrome AI / / No Comments Earlier this week I mentioned I’m looking at my previous server-based generative AI demos and seeing which could possibly make sense using on-device AI with Chrome’s AI support. I remembered a demo from last year where I tested spam detection using Google Gemini. That demo had worked out rather well and so I thought I’d try it out in Chrome. Ok, but why? Spam detection is important, and a server-based solution could have many users, especially in sites that make use of a lot of user generated content. But what would be the point doing this in the browser? Consider the fact that many of the Chrome AI APIs help with writing, I think such a solution could be useful in helping flag... more → Posted in: JavaScript Tagged with: Checking, Chrome, Content, spam
BoxLang’s Improved PDF Handling / / No Comments I’ve blogged about PDF support in BoxLang previously, including a quick introduction and a more robust demo later. Basically, the free PDF module provides excellent PDF creation capabilities out of the box. But what about PDF manipulation? My last two jobs involved PDF APIs, and while my next one most certainly does not (thank god), it’s still a feature near and dear to my heart. The BoxLang folks have made a shockingly huge amount of updates over the past few months, more than I’ve had a chance to keep up with, but one in particular caught my eye and I thought I’d call it out – the new PDF+ module. BoxLang’s commercial modules are part of the BoxLang+ plan.... more → Posted in: JavaScript Tagged with: BoxLang's, handling, improved
Creating a Generic Generative Language with Chrome AI / / No Comments As I explore Chrome’s on-device AI initiatives, one of the things I’m doing is looking at some of my older demos (kinda funny to think of ‘old’ GenAI demos) and seeing which may make sense in the browser versus API calls. Last July, I investigated creating a template language parser with Google Gemini. The idea was – take a string with tokens that defined a type of word and have Gemini replace it. So for example: My name is {{ name }} and my favorite food is {{ food }}. I asked Gemini to look for values inside brackets, use that as the seed of a random word, and replace it. So for example: My name is Frederic Dinglehooper the 3rd and my favorite food is sushi. I... more → Posted in: JavaScript Tagged with: Chrome, creating, Generative, Generic, Language
Links For You (10/25/25) / / No Comments Greetings, programs, and welcome to another links post. The weather is finally beginning to turn here which doesn’t necessarily mean cold weather, but days in the low 80s, mid 70s, which is an absolute relief from summer. Just in time for Halloween as well. Last year we unfortunately got rained out – this year it looks to be clear, and I can’t wait to walk with my kids (and yes, I’ll be in full costume myself). Here are some links for your reading enjoyment. Stay safe out there. On DevRel and the Unnatural Act Up first is a stellar post by Leon Adato, HOW TO DEVREL: The Most Un-Natural Act. In his post, he describes how he not only got people to stop by his company booth... more → Posted in: JavaScript Tagged with: 10/25/25, links
Adding Generative Summaries with Chrome AI / / No Comments Earlier this year (sigh, when I had a job), I built a demo using Chrome’s built-in AI support to do something I thought was really interesting – progressively enhance product reviews to make it easier to see which were trending negative versus positive. It was a great example (imo!) of how AI support could enhance the experience in supported browsers without impacting the experience for others. That demo was on my mind this week, and it occurred to me that it would also be a great place to add summarization. The Summarizer API is now fully released, for Chrome that is, and does not need a flag enabled or anything like that. I’ve blogged about this API a few times already, most... more → Posted in: JavaScript Tagged with: Adding, Chrome, Generative, Summaries
Links For You (10/12/25) / / No Comments I blinked and somehow missed posting this a week or so ago. Time is, to quote the good Doctor, a bit wibbly wobbly. I’m currently watching a recording of the Saints/Patriots game and hoping we can follow last week’s win with another, but I’m not sure. Of course, the game’s been done for hours now but we’ve managed to miss the news so… we can still hope. Speaking of hope, as a reminder, I’m still looking for my next role, and if you know of a good developer evangelist/advocate position, please reach out! Alright, time for some links. When JSON Isn’t… First up is a great look at how JSON may not be as universally parsed/transferable/etc as you... more → Posted in: JavaScript Tagged with: 10/12/25, links