Like a lot of folks, I've been spending a lot of time thinking about generative AI, and AI, in general, and oddly (well for me), trying to focus on productive uses for it when working with APIs. A few weeks ago I shared my initial impressions of Google's PaLM 2 API, and today I c … | Continue reading
Happy Sunday, and as I'm currently watching the Saints lose (to be fair, I'm an hour behind, watching it recorded), I figured why not go ahead and share some links that will be more winning than my poor team. As of now, I'm completely done with presentations and travel for the re … | Continue reading
About once every three months I'll write a quick JavaScript demo and attempt to fetch someone's RSS feed... and then remember that the vast majority of RSS feeds don't specify a CORS header to allow remote scripts to load them. I know this - and yet I still tend to forget. I thou … | Continue reading
Late last month, Cloudflare announced new AI features in their (already quite stellar)Workers platform. I've been a big fan of their serverless feature (see my earlier posts) so I was quite excited to give this a try myself. Before I begin, I'll repeat what the Cloudflare folks s … | Continue reading
Hello friends and welcome to another post of links I hope you find interesting. In a few days, I'll be heading out to API World for my last trip of the year and my last in-person event. (I'll be giving the same talk for API World again later this month in their virtual event.) I … | Continue reading
I've really been enjoying working with Google's PaLM 2 AI API and this week I used it to build a pretty interesting demo I think. What if we could use the generative AI features of PaLM to determine the 'sentiment' or general health of a forum? I was able to do so and I think the … | Continue reading
Yesterday I shared my initial impressions of working with Google's PaLM 2 AI API. If you didn't read that article, the tldr is that it's incredibly easy to work with and I was able to get some Node.js code running in minutes. Exactly the kind of experience you want new developers … | Continue reading
Like, I assume, every single developer on the planet, I've been somewhat innudated with GenAI over the past year or so. I find it as fascinating as most folks (ask me about the number of times I've had cat-related conversions with ChatGPT) but while it's fun to play with, I've al … | Continue reading
I've had a lot of fun building Mastodon bots (see my list of super-important business critical bots as an example), typically using the Pipedream platform, and more recently, Cloudflare Workers. The Mastodon API is kinda stupid easy and with "The Other Network" going to hell in a … | Continue reading
Hello from lovely Las Vegas, where, believe it or not, it is actually cooler (temperature-wise) than where I flew in from. This week I'll be speaking at the Adobe ColdFusion Summit and I can't wait to see some old familiar faces. I've got a speaker dinner in a few minutes so this … | Continue reading
It's been a little while since I've blogged about Pipedream. I'm still a very happy user of the service, I just hadn't had anything to write about recently. That changed earlier this month when they announced GitHub support on thier blog. I decided to test it out and here's what … | Continue reading
Many years ago, I first wrote up my experience working with the Marvel API. I find myself returning to it again and again, and this weekend I built a fun little game I think you may enjoy. It's called "Guess the Decade".Marvel's art style has changed drastically over its long his … | Continue reading
A few weeks ago, I finally got around to looking at the official plugins Alpine.js supports and built a little demo that integrated the Intl spec with the Mask plugin. (You can read the post here: Integrating Intl with Alpine.js Mask). Today I thought I'd take a look at another p … | Continue reading
Another weekend and another set of links for yall to enjoy. Yesterday my wife and I drove our eldest to NOLA and the airport there as he begins a ten-month excursion teaching in Germany. I'm so incredibly excited for him and I know he is going to do incredible. Meanwhile, we're s … | Continue reading
It's been a hot minute or so since I played with web components, mainly because I've been re-evaluating when I think it best makes sense to use them. One idea I've been chewing over lately is that progressive enhancement could really be the sweet spot for components, something I … | Continue reading
It's been a few days since my last post in this series. I'd like to blame something in specific but honestly, it's just life. Today's tip will - again - be short and sweet but hopefully helpful. The idea of a "featured" post is that there may be content that, no matter the age or … | Continue reading
I've been using Alpine.js for quite a while now (although I still make silly mistakes, see the p.s. at the end) but haven't yet looked at the "official" plugins. Listed in the docs, those plugins include:Intersect - a simple hook to recognize when an element is visible (I plan on … | Continue reading
Welcome to another collection of links, and for today, a very "component" flavored set of links. I've been really interested in web components the past few months (you can peruse my articles on the topic) and lately there's been a lot of writing on the topic. That's been tied to … | Continue reading
On September 11th, Todd Sharp, Scott Stroz, and myself will be launching a new livestream called The Undefined Show. Every Monday at 8 PM EST, we'll be hosting a session on different topics, including development, languages, developer relations, and most likely quite a bit of non … | Continue reading
I hope by now that folks are getting that the point of this series isn't so much technical but inspirational. I think a lot of people approaching front matter tend to keep it rather simple - title, date, tags or categories, and when I envisioned this series I really wanted to exp … | Continue reading
Today I'm following up (heh, get it) on the series I started yesterday on interesting use cases for your Jamstack site's front matter. In yesterday's post, I described how to use front matter to define a list of "related posts" to a blog post. Today's post is a natural follow-up … | Continue reading
I'm kicking off a little series of tips today that's been sitting in my "Blog Ideas" queue for some time. The idea, "Fun with Frontmatter", was based on the idea of taking a look at some of the fun/interesting/hopefully useful things you could include in your Jamstack site's fron … | Continue reading
Earlier this year at WWDC, Apple announced a whole set of new features coming to Safari in version 17. While that is not out yet, it's still a pretty large set of updates. I've not been shy about my view that Safari has been holding the web back for a while, but I'm happy for any … | Continue reading
As with some of my previous Cloudflare posts, I've got a video version of this content so if you would rather watch that than read, just jump to the bottom. For the rest of you, here's a look at how to do some basic debugging with your Cloudflare Workers.The Worker #Before I get … | Continue reading
Looks like I was a bit late in doing my links post this month. Like most of the country, my kids went back to school over the past week or so and I think the prep time ahead of that just made the month fly by. Last week was incredibly rough for me. I'm not going to get into why, … | Continue reading
Last month, I wrote up a post demonstrating how to use Adobe Acrobat Services with ColdFusion. This week I took some of the code I had written for that post and turned it into a proper GitHub project. You can find the latest code here: https://github.com/cfjedimaster/coldfusion-c … | Continue reading
I can't go a day (or two) without building a bot of some sort, and last week was no exception. I've been a fan of the Marvel API for nearly a decade now and one of my favorite examples of it is my random comic book cover bot. I thought I'd use the Marvel API as a way to build ano … | Continue reading
I'll warn you ahead of time and say this post isn't too much more than what you can find in the documentation, but I wanted to see it work for myself so I had to setup a test locally. Cloudflare Service bindings are a way for one Worker to connect to another. That seems simple en … | Continue reading
Nearly three years ago I shared a Vue.js tip on adding "counters" to your form fields. The idea is, if you have a max length on a text area, as an example, it would be nice to let the user know as they type exactly how many characters they've already entered. You can read that ol … | Continue reading
Please forgive the somewhat alliterative title of this post. I promise I wasn't going for clickbait! Recently I was looking at some code from a friend of mine and saw something I had not seen in JavaScript before. It obviously worked (and I confirmed myself of course) but I wante … | Continue reading
Last week I blogged about my first experience building a Cloudflare Worker serverless function. In that post, I built a simple serverless function that wrapped calls to the Pirate Weather API, a free and simple-to-use API for getting weather information. For today's post, I thoug … | Continue reading
Every now and then I get a dumb little idea, and too often, I turn those dumb ideas into little web toys. About five years ago, I discoveredMarkov chains, which in my limited understanding is a deterministic way to guess what would come after some input. A bit like autocomplete f … | Continue reading
Next week, Tuesday August 8 at 11AM CST, I'll be giving a free, online presentation at CFE.dev on "Automating Image Workflows with Photoshop APIs". Here's more information from the event description:Inarguably, Photoshop dominates the professional image editing software world. Bu … | Continue reading
I've been playing with Cloudflare Workers the past few weeks, and while I've had a few technical issues here and there, I've been really impressed with the developer experience overall and just how powerful the platform is. I thought I'd share a quick demo of a simple "API wrappe … | Continue reading
Hey folks, forgive the quick note. Today I migrated my newsletter from Mailchimp to Buttondown. As I mentioned here before, I had hit the free tier limit on Mailchimp and while I truly liked their service, this site doesn't really bring in any money so I wanted a cheaper solution … | Continue reading
A quick links post today as I'm on vacation with my family in Saint Louis. I grew up here but haven't been back in some time. STL is a great city with some really cool things to do. My favorite stop so far has been the Arch. I visited the Arch many times growing up but I forgot h … | Continue reading
Last week I shared a look at how to integrate the Adobe Photoshop API with ColdFusion, and that got me itching to see how difficult it would be to do the same with our Acrobat Services. While ColdFusion has native PDF features built-in, I think there are aspects of the platform t … | Continue reading
A few years back, I wrote up a detailed blog post on how Vue.js handled form field bindings: "Vue and Form Fields". The idea behind the post was that even though we knew things "just worked", it might be helpful to see different form fields in action and show the bindings between … | Continue reading
Hello readers. Today I'm writing this post in lovely Natchez, Mississippi as my mother-in-law gives my wife and I a quick break out of town. Natchez is one of our favorite "getaway" destinations as it's a short drive, a nice drive (mostly backroads), and a great mall town. Withou … | Continue reading
So yeah, I used to blog quite a bit on ColdFusion (if you want, you can peruse the three thousand posts here), but it's been a while since I've really written any CFML. That being said, I've been working with Adobe's Photoshop API recently at work and I thought it would be fun to … | Continue reading
Over two years ago, I wrote an example of how to add PDF search to your Jamstack site, "Using PDFS with the Jamstack - Adding Search with Text Extraction". In that post, I used the Adobe PDF Extract API to get the text from a set of PDF files. This was done in an Eleventy data fi … | Continue reading
For the past two weeks or so, I've been releasing videos on YouTube all about learning Alpine.js. Each video is relatively short (although longer than a Tiktok video) and can be quickly consumed, with the entire playlist coming in under an hour. Each video has links to CodePens t … | Continue reading
Some time ago I ran across a pretty fascinating service, the Deck of Cards API. This API handles everything imaginable related to working with decks of cards. It handles creating a shuffled set of cards (containing one or more decks), dealing out a card (or cards), and even reshu … | Continue reading
So yeah, I know my last post was just a link, but I promise the post after this will be actual new content, not just me sharing stuff. Then again, it's my blog, so who knows what I'll do. ;) Happy July, and for those of you suffering with me in the South (heat and multiple other … | Continue reading
Normally I save links for the "Links for You" post I do a few times a month, but as I've been a bit quiet here recently (most of my side work has been on my Alpine.js video series), I thought I'd share this quick note. This week, Algolia held an online conference (DevCon) with tw … | Continue reading
For some time now as I've explored web components, it's occurred to me that web components could be a great way to make working with Bootstrap simpler. Not that Bootstrap is necessarily difficult, but I've always thought it would be cool to take something like so: Card title C … | Continue reading
Happy Almost Father's Day. I'm the proud father of eight kids and being a father makes me incredibly happy. Also scared, stressed, worried, and anxious, but all worth it. This week was pretty rough for me. Both my wife and I got sick early in the week (not Covid), and while I got … | Continue reading
This probably falls into the "it was easy for everyone else in the world but me" bucket, but I really struggled to find good search results for this and figured I'd better write it down so when I google for it again in a few months, I'll find my own blog. Specifically - today I w … | Continue reading