Skip to main content
Ben Nadel at CFUNITED 2009 (Lansdowne, VA) with: Todd Sharp
Ben Nadel at CFUNITED 2009 (Lansdowne, VA) with: Todd Sharp

Recent Blog Posts by Ben Nadel

Considering Polyfill Function Mechanics And Hoisting In ColdFusion

By Ben Nadel on
Tags: ColdFusion

In my work, I use both Adobe ColdFusion and Lucee CFML. The functionality in these application severs overlap to a great degree. However, they each have built-in functions that are unique. The ones that always jump to mind for me are Lucee's dump() and structValueArray() functions. Now, dump() is really just an alias for ColdFusion's writeDump() function; but, creating a function alias, which I looked at earlier, is different than creating a polyfill. Unlike an alias, which is always applied, a polyfill is only meant to be applied in a context in which it is needed. And, implementing this in ColdFusion can be a little confusing... read more →

Considering Aliases For EncodeForHtml(), EncodeForHtmlAttribute(), And EncodeForUrl() In ColdFusion

By Ben Nadel on
Tags: ColdFusion

Typically, when creating user defined functions (UDFs) in ColdFusion, I like to package my functions inside of a ColdFusion Component (CFC) which I can then pass around using inversion of control (IoC). Recently, however, I've been working on a CFWheels project in which the built-in encodeForHtml() function has been aliased as a globally available UDF named e(). And, I must say, it's been really nice not having to type out the whole function name. In fact, it's been so nice that I'm considering making it a global function in my personal projects... read more →

Variadic Functions Considered Through "Worse Is Better" In ColdFusion

By Ben Nadel on
Tags: ColdFusion

Yesterday, I took a look at the mechanics of writing a variadic function in ColdFusion. A variadic function, like console.log(), is a function that takes an indeterminate number of arguments. I love the idea of variadic functions; but, I don't actually write them very often; and, I believe that much of this disconnect stems from the fact that I don't have a good decision tree for when a variadic function is the "right" choice. Recently, however, I listened to the Future of Coding episode about the "Worse is Better" school of thought; and I found it very relevant to variadic functions... read more →

Exploring Variadic Function Mechanics In ColdFusion

By Ben Nadel on
Tags: ColdFusion

A variadic function is a function with an open-ended number of arguments. If you're familiar with the JavaScript world, functions like Array() and console.log() are variadic and work fine when passed no arguments, one argument, two arguments, etc. In the ColdFusion world, we can also create variadic functions; but, getting them to work in both Lucee CFML and Adobe ColdFusion takes a little trial-and-error... read more →

Sorting Arrays Using Tiered Comparisons In ColdFusion

By Ben Nadel on
Tags: ColdFusion

In ColdFusion, I love working with arrays. In fact, I've moved all of my data access layers over to returning arrays-of-structs instead of query objects. But, one thing that I really miss about SQL is the effortless nature of tiered ORDER BY sorting. With ColdFusion arrays, we have some in-built sorting functionality; however, in order to achieve a multi-property sort, I needed to build an abstraction for tiered comparisons... read more →

Using The Safe Navigation Operator To Propagate NULL Arguments In ColdFusion

By Ben Nadel on
Tags: ColdFusion

One pattern that has emerged in my ColdFusion code recently is the use of the safe navigation operator to easily propagate null and sometimes-null values down through a series of method calls. ColdFusion can handle null values no problem—it just doesn't like null reference errors (NRE), which typically surface in your applications as "key does not exist" errors... read more →

ColdFusion Custom Tags Can Use Dashes In Tag Names

By Ben Nadel on
Tags: ColdFusion

Yesterday, I was looking at the Laravel Flux UI framework; and was impressed with how clearly they've codified their approach to custom tag organization. I wanted to borrow their thinking to do some exploration on the ColdFusion side. In Flux, they use the dot (.) to namespace their tags. This doesn't work in ColdFusion; but, I was pleasantly surprised to see that dashes (-) can be used in custom tag identifiers... read more →

Using The Button Form Attribute To Create Standalone Buttons In HTML

By Ben Nadel on

A couple of years ago, when I was first learned about Hotwire Turbo, I noticed that it was using HTML attributes to override form submissions. And, that these Turbo techniques would often associate any button with any form using these attributes. Just recently, this got me wondering if such an approach would be helpful when styling buttons that should otherwise look like anchor links... read more →

Checking For Nested CFThread Execution In Adobe ColdFusion

By Ben Nadel on
Tags: ColdFusion

Years ago, when Adobe ColdFusion introduced the CFThread tag for effortless asynchronous programming in CFML, they made a decision to not allow your application to spawn nested threads. I believe most people view this as a misguided decision (though well-intentioned). And yet, this constraint still exists in the latest ColdFusion 2025 release which came out yesterday... read more →

Rest Operator Doesn't Work With Only One Argument In Adobe ColdFusion

By Ben Nadel on
Tags: ColdFusion

In Adobe ColdFusion, as in many languages, you can use the rest operator to collect an open-ended number of function arguments into an array. But, I ran into a bug wherein the Rest operator doesn't work when only a single "rest argument" is passed-in during function invocation. When a function is invoked with a single argument, and the function is only parameterized using the rest operator, the value comes through as is, and is not collected into an array... read more →

Sanity Checking HTTP Method Used After Location() Call In ColdFusion

By Ben Nadel on
Tags: ColdFusion

Over the weekend, I read the book Hypermedia Systems by Carson Gross. The book lays out a rather compelling argument for the use of HTML and hypermedia as the foundation for most web applications. And, as I read the book, I found myself nodding in violent agreement with most of what was being discussed. Except for something that he said with regard to URL redirection. In his chapter on "htmx patterns", he mentioned that URL redirection should be performed with a 303 See Other status code otherwise the incoming HTTP method would be propagated to the next page:.. read more →

Hypermedia Systems By Carson Gross

By Ben Nadel on

Last week, Peter Amiri - maintainer of the CFWheels framework for ColdFusion - sent me a hardcover copy of Hypermedia Systems by Carson Gross, Adam Stepinski, and Deniz Akşimşek. This book argues for the benefits of "Hypermedia Driven Applications" (HDA); and how leaning into the foundational nature of the web as a unified interface and hypermedia platform makes applications easier to build and more accessible while still achieving a high-bar of interactivity. This book is clear, concise, and quite compelling. Coming in at around 300 pages, I finished reading it in two day—I just couldn't put it down... read more →

Ben & Ryan Podcast - Episode 10: Developer Career Paths With Dan Short

By Ben Nadel on

It was such a pleasure to get to talk to long-time friend and colleague, Dan Short. He shares insights about his career transition from an Individual Contributor (IC) development role into an engineering management role. Which, as you can imagine, isn't always the easiest journey. He fell victim to what many management-curious engineers probably fall victim too: not fully committing to the "hard work" in the beginning. On the show, we talk about the common pitfalls of such a transition, myths around moving up the career ladder, and many fun tangents (you're welcome) along the way!.. read more →

Ben & Ryan Podcast - Episode 9: Management And AI With Shawn Gorrell

By Ben Nadel on

On this week's episode, we talk to Shawn Gorrell. We cover a wide range of topics (so typical), including AI, custom ChatGPTs, solving problems by removing things instead of adding them, building healthy productive teams, myths of in-office work, introverts vs. extroverts, and what the "Florida Man" teaches us about the importance of transparency. And so much more... read more →

Ben & Ryan Podcast - Episode 8: Learning New Things

By Ben Nadel on

On this week's episode, Ryan and I talk about what we've been learning and what we've been experimenting with. As someone who's been very slow to weave AI (Artificial Intelligence) into my day-to-day life, I was particularly keen to hear how Ryan's been using ChatGPT in both his personal and professional life... read more →

Ben & Ryan Podcast - Episode 7: How ColdFusion Is Made With Charvi Dhoot

By Ben Nadel on

It was such a pleasure to have Charvi Dhoot and Brian Sappey on the podcast this week. We got a really nice glimpse into the way in which ColdFusion is managed as a product... read more →

Ben & Ryan Podcast - Episode 6: Thanksgiving

By Ben Nadel on

Leading up to Thanksgiving, we thought it'd be nice to give some thanks and praise. And personally, I feel very lucky that Ryan Brown does the lion's share of work on this show. I just get to show and have a great time talking to the wonderful guests that he pulls into our web of mind games. It has been an honor... read more →

Ben & Ryan Podcast - Episode 5: Cloud Hosting With Dakota Clum

By Ben Nadel on

On this week's show, we talk to Dakota Clum, the CTO of xByte Cloud. While many of us in web development live in a world of auto-scaling groups, cloud functions, and Kubernetes (K8), it's certainly not the only way to do development—many of us still live in a world of Virtual Private Servers (VPS) and deploy code to production using git pull (and other not-so-automated process)... read more →

Ben & Ryan Podcast - Episode 4: Adobe ColdFusion 2025 With Mark Takata

By Ben Nadel on

After years of talking to Mark Takata in various online channels, it was so great to finally meeting the man—the tree trunk of a man—in person at CFSummit! On this episode of the podcast, Ryan and I get to talk to him about being good stewards of the ColdFusion ecosystem. And how sometimes you just gotta DO IT LIVE and ask for forgiveness later. Yolo!.. read more →

Ben & Ryan Podcast - Episode 3: Freeforming IT

By Ben Nadel on

On this week's show, Ryan and I talk about random stuff... read more →

Ben & Ryan Podcast - Episode 2: Cryptography With Justin Scott

By Ben Nadel on

On this week's show, I had the great pleasure of talking to Justin Scott about ColdFusion and Security. When it comes to security, I always want to do the right thing in my applications; but, security is a deep subject with an ever-evolving notion of what actually satisfices "right". The good news is that there's always a path forward in your applications no matter where you're starting from. Hardening your application is necessarily an ongoing, iterative process that starts now and goes until you die... read more →

Ben & Ryan Podcast - Episode 1: Kick-Off Show

By Ben Nadel on

After meeting in person for the first time at ColdFusion Summit East 2024 (Vegas baby!), Ryan Brown and I thought that it'd be fun to get together and talk about the exciting world of technology from our two different perspectives: me from the programming and product management side and him from the hosting and marketing side. On this—our inaugural episode—we reflect on CFSummit and share some of our favorite memories... read more →

Using The XOR Operator To Assert Connascence Of Existence In ColdFusion

By Ben Nadel on
Tags: ColdFusion

In all my years of programming, I don't think I've ever used the XOR operator. The XOR operator—or, "Exclusive OR" operator—is a Boolean operator that results in False if the given operands have the same truthiness; and, True if the given operands have different truthiness:.. read more →

Working Code Podcast - Episode 203: Naming Things Is Hard

By Ben Nadel on
Tags: Podcast

It teeters on embarrassing; but after 25-plus years of web programming, I still don't feel confident in the naming conventions that I use in my application architectures. It's almost cliche to admit this since our industry has long-joked that naming things is one of the hardest parts of computer science. But, I'm frustrated that I haven't yet found something that feels like the "right way" to do it... read more →

Using Partial Component Paths As Argument Types In ColdFusion

By Ben Nadel on
Tags: ColdFusion

When you define a User-Defined Function (UDF) in ColdFusion, both the argument types and the return type can reference a ColdFusion component path. In my code, I typically use any for such types because I find that including a long component path makes the code overly verbose. It turns out, however, that you don't have to include the entire component path. ColdFusion will happily validate component-based types even if you only use a partial path. And, the flexibility of the type reconciliation depends on the extent of the path provided... read more →

Overloading Error.ExtendedInfo As A Data URL In ColdFusion

By Ben Nadel on
Tags: ColdFusion

For the most part, ColdFusion provides wonderful error handling functionality. Between the try / catch / finally blocks, the throw() statements, and the global error handler (in the Application.cfc), it's hard for any error to go unnoticed in a ColdFusion application. But, one thing that isn't so easy to do is provide additional complex data alongside a given error. Historically, I've overloaded the .extendedInfo property in order to provided such additional information. And, that's what I'm talking about in this post. But, this post is a refinement on the idea, making the technique significantly more robust and consumable... read more →

Working Code Podcast - Episode 202: Um, Actually

By Ben Nadel on
Tags: Podcast

This week on the show, Adam shakes up our usual format by organizing a game for me and Tim. Inspired by a segment that he saw on the now defunct College Humor site, Adam reads us a series of statements about web development. Most of each statement is true; but, part of each state is false. The challenge is to figure out which part of each statement is false; and how we can correct the false part to be true... read more →

Getting Flattened Component Metadata In ColdFusion

By Ben Nadel on
Tags: ColdFusion

Over the years, I've learned to favor composition over inheritance in my ColdFusion programming. To power this Inversion of Control (IoC) pattern, I use a simple component that provides a dependency injection (DI) container. This component has worked well until I recently tried to use inheritance in part of my ColdFusion data modeling. It turns out that ColdFusion's getMetadata() built-in function (BIF) returns data in a hierarchical structure that doesn't play nicely with my simplified injector mechanics... read more →

Working Code Podcast - Episode 201: LLM's vs Stack Overflow

By Ben Nadel on
Tags: Podcast

After a much enjoyed winter break, we at the Working Code podcast are back at our microphones for season two. And, to kick things off, we're talking about LLMs vs. Stack Overflow. Large Language Model (LLM)-based Artificial Intelligence (AI) is currently at the center of many tech conversations. Put bluntly, it is the thing that we're all paying attention to. But, human attention is finite; and, as members of the Stack Overflow community have reported, the emergence of LLMs has had a massive impact on the site's interest (with question-asking down some 70% in the last two years). Does this foretell an end of Stack Overflow? Or, is this merely a moment in which the pendulum is swinging a bit too far in a new direction?.. read more →

Collocating My .gitignore Configuration Files With The Omitted Files

By Ben Nadel on
Tags: Work

I believe that maintainable code is code that's easy to find and easy to delete. And, a big part of what make's code easy to find and easy to delete is collocation. Which is why I've been experimenting with collocating my CFML, JavaScript, and CSS files; as well as my collocating my ColdFusion partials with my CFML views. This morning, as I was setting up a new project, it occurred to me that my .gitignore files might present another opportunity for collocation... read more →


I believe in love. I believe in compassion. I believe in human rights. I believe that we can afford to give more of these gifts to the world around us because it costs us nothing to be decent and kind and understanding. And, I want you to know that when you land on this site, you are accepted for who you are, no matter how you identify, what truths you live, or whatever kind of goofy shit makes you feel alive! Rock on with your bad self!
Ben Nadel