Building a QR Coder Web Component

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


@raymondcamden.com | 1 year ago

Fun With Front Matter: Part 4 - Featured Posts

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


@raymondcamden.com | 1 year ago

Integrating Intl with Alpine.js Mask

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


@raymondcamden.com | 1 year ago

Links For You

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


@raymondcamden.com | 1 year ago

Join Us at The Undefined Show!

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


@raymondcamden.com | 1 year ago

Fun With Front Matter: Part 3 - Handling Edits

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


@raymondcamden.com | 1 year ago

Fun With Front Matter: Part 2 - Follow-ups

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


@raymondcamden.com | 1 year ago

Fun With Frontmatter: Part 1 - Related Posts

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


@raymondcamden.com | 1 year ago

Working with the Storage API

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


@raymondcamden.com | 1 year ago

Debugging Cloudflare Workers with Logs

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


@raymondcamden.com | 1 year ago

Links For You

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


@raymondcamden.com | 1 year ago

ColdFusion Component for Adobe Acrobat Services

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


@raymondcamden.com | 1 year ago

Building a Mastodon Bot with Cloudflare Workers

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


@raymondcamden.com | 1 year ago

Connecting Cloudflare Workers with Service Bindings

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


@raymondcamden.com | 1 year ago

Adding Form Fields Character Counters With Alpine.js

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


@raymondcamden.com | 1 year ago

JavaScript Syntax Sugar for Shorter Stuff

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


@raymondcamden.com | 1 year ago

Adding Caching to a Cloudflare Worker

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


@raymondcamden.com | 1 year ago

I Know What You Did Last Summer (With Glitch and Cloudflare)

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


@raymondcamden.com | 1 year ago

Learn about the Photoshop API Next Week

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


@raymondcamden.com | 1 year ago

Building a Basic (Pirate) API Wrapper with Cloudflare Workers

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


@raymondcamden.com | 1 year ago

Update for My Subscribers

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


@raymondcamden.com | 1 year ago

Links For You

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


@raymondcamden.com | 1 year ago

Integrating Acrobat Services with ColdFusion

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


@raymondcamden.com | 1 year ago

Alpine.js and Form Fields

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


@raymondcamden.com | 1 year ago

Links For You

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


@raymondcamden.com | 1 year ago

Using the Adobe Photoshop API with ColdFusion

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


@raymondcamden.com | 1 year ago

Using PDFs with Algolia and Adobe PDF Extract API

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


@raymondcamden.com | 1 year ago

Want to learn Alpine.js?

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


@raymondcamden.com | 1 year ago

Creating a Blackjack Game with Alpine.js and the Deck of Cards API

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


@raymondcamden.com | 1 year ago

Links For You

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


@raymondcamden.com | 1 year ago

Algolia DevCon 2023 Videos

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


@raymondcamden.com | 1 year ago

Creating Bootstrap WebC Components in Eleventy

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


@raymondcamden.com | 1 year ago

Links For You

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


@raymondcamden.com | 1 year ago

Quick example using AWS Node.js SDK V3 for Signed URLs

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


@raymondcamden.com | 1 year ago

Using Goodreads Data in Eleventy - Update

Yesterday I shared a blog post where I detailed how to take your data export from Goodreads and make use of it in an Eleventy site. While describing the process, I mentioned that I wasn't terribly confident in the approach. Things got even worse when I tried to make use of the Go … | Continue reading


@raymondcamden.com | 1 year ago

Using Goodreads Data in Eleventy

I've been a Goodreads user for a few years now, and much like how I use other 'tracking' services, I'm not there for other folks' reading lists or recommendations, but instead, as a way to track what I've read. I especially like looking back over the past year and being reminded … | Continue reading


@raymondcamden.com | 1 year ago

Links For You

Happy June folks. Not sure what that actually means, but Happy June nonetheless. Before I get into the links, a quick reminder that I'm looking for sponsorship for the site, primarily to let me upgrade my Mailchimp account. If you, or your company, wish to help out, just send me … | Continue reading


@raymondcamden.com | 1 year ago

Using Web Components in Alpine.js

To be honest, the TLDR for this entire post is, "It just works", so I'd more than understand if you stop reading, but like most things in my life, I like to see it working to reassure myself of the fact. So with that out of the way, let's consider a simple example.First Attempt # … | Continue reading


@raymondcamden.com | 1 year ago

Adding Form Participation Support to Web Components

Many years ago when the web platform began to really improve, when everything was "HTML5 this" and "HTML5 that", I remember being particularly excited by the updates to forms. I started my web career doing a lot of form processing and have always thought it was one of the more im … | Continue reading


@raymondcamden.com | 1 year ago

Links For You

Welcome to another "Links For You" post. My queue of links to share seems to be growing quicker than my schedule of posting these (roughly every two weeks), so I may post one next week as well. As always, I hope these posts are useful and informative for yall. Before getting into … | Continue reading


@raymondcamden.com | 1 year ago

Eleventy by Example, by Bryan Robinson

I'd like to think I know Eleventy pretty well. I've written about it here a few times, this site is built on Eleventy, I've presented on it, but I certainly don't think I know everything about it. That being said, when I got my copy of "Eleventy by Example" by Bryan Robinson, my … | Continue reading


@raymondcamden.com | 1 year ago

Handling Web Component Removal with disconnectedCallback

MDN does a fairly good job of covering the lifecycle events for web components but one in particular got my attention today, disconnectedcallback. As kind of the inverse of connectedCallback, it will be fired when an instance of your custom element is removed from the DOM. While … | Continue reading


@raymondcamden.com | 1 year ago

My First Web Components Presentation - May 30

I am super excited (and a bit scared) to announce I'll be giving my first presentation on web components later this month. On May 30th, at 8 PM CST, I'll be presenting virtually to the .Net User Group of British Columbia. This presentation will be online and open to anyone and wi … | Continue reading


@raymondcamden.com | 1 year ago

Updating and Supporting URL Parameters in Alpine.js

I think most of my readers know, when I get an idea in my head, I tend to go pretty deep into it. A few days ago, I blogged about updating and supporting URL parameters with JavaScript. That post itself was an update to an earlier post demonstrating how to do it with Vue.js. For … | Continue reading


@raymondcamden.com | 1 year ago

Add Streaming to Your Jamstack Site in Minutes

Last week I had the distinct pleasure of being on my buddy Todd Sharp's live stream, Streaming on Streaming. You can watch the recording of that session here:Todd is the principal developer advocate for Amazon Interactive Video Service (IVS), or, more simply, a way of taking the … | Continue reading


@raymondcamden.com | 1 year ago

Links For You

Greetings from Tuscaloosa where I'm about two hours or so away from seeing my eldest walk across the stage and get his diploma at the University of Alabama. Today's kind of a big deal. I noticed, however, I've been a bit remiss in sharing these link posts the last few weeks so I' … | Continue reading


@raymondcamden.com | 1 year ago

My Experience at Antiques Roadshow

So, as this is my blog, nothing is really "off-topic", but this is probably the most OT thing I've ever shared here. My wife is a big fan of Antiques Roadshow. I enjoy watching it too, although it isn't something I mind her watching without me. A month or so ago she discovered th … | Continue reading


@raymondcamden.com | 1 year ago

Updating and Supporting URL Parameters in JavaScript

Not quite a long time ago, but roughly two years ago I wrote a blog post on updating and supporting, URL parameters with Vue.js. The idea was this: Given an application that lets you perform various tweaks, it would be nice if the URL was updated to reflect the current state of t … | Continue reading


@raymondcamden.com | 1 year ago