Skip to main content
Ben Nadel at the jQuery Conference 2011 (Cambridge, MA) with: Julian Aubourg
Ben Nadel at the jQuery Conference 2011 (Cambridge, MA) with: Julian Aubourg

Recent Blog Posts by Ben Nadel

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 →

Extracting InVision V6 Document Export JSON Data In ColdFusion

By Ben Nadel on
Tags: ColdFusion, Work

The other day, I looked as hosting your exported InVision V6 documents on Cloudflare. This allows you to take your Prototype and Board ZIP archives, drag-and-drop them into a deployment workflow, and effortlessly publishing them "as is". Which is great for archival purposes. But, it doesn't help if you want to consume those exports programmatically. For programmatic access, I've created a ColdFusion utility that will help you extract the JSON configuration data that represents your exported document... read more →

Hosting Your Exported InVision V6 Prototypes On Cloudflare Pages

By Ben Nadel on
Tags: Work

In the months leading up to the closing of InVision, I created a bulk export system for the V6 cloud platform. This allowed our wonderful V6 users to export their prototypes and boards en masse directly to an Amazon S3 bucket. The exports were designed to be consumable directly from a user's computer file system. But, this also means that they can be easily hosted as static sites. As a final gesture and show of good will, I wanted to demonstrate how these ZIP files can be effortlessly uploaded and deployed for free using Cloudflare Pages... read more →

Strange ___IMPLICITARRYSTRUCTVAR Behavior In ColdFusion

By Ben Nadel on
Tags: ColdFusion

While James England and I were working on Dig Deep Fitness, we came across a rather mysterious ColdFusion behavior. The local memory leak detection mechanism started reporting the existence of an unexpected variable called, ___IMPLICITARRYSTRUCTVAR0. I'd never seen this before; but Google pointed me to something Adam Cameron mentioned it on an old Adobe ColdFusion forum post from 2012. Apparently implicit struct and array notation has been creating these hidden variables since ColdFusion 9... read more →

Free Online Version Of My Feature Flags Book

By Ben Nadel on

A little over a year ago, I published my book, Feature Flags: Transform Your Product Development Workflow. This book contains everything that I learned about feature flags, experimentation, and the fundamental way in which using feature flags transforms both your team culture and your approach to product development. I believe so deeply in the necessity of feature flags that I no longer feel satisfied hiding this content behind a paywall. Which is why I'm super excited to announce that I've created a free online version of my feature flags book... read more →

My Internal InVision Feature Demo Videos

By Ben Nadel on
Tags: Work

Although InVision is shutting its doors, it's been an amazing journey; and, I've done a lot of work that I'm incredibly proud of. In particular, I feel great about the way in which I embraced experimentation with both arms; and, that I tried throwing as many features against the wall to see which would stick. Some of my experiments ended up being a "nothing burger". But, some of them went on to become highly valuable parts of the application and the user experience (UX). The whole process made me somewhat fearless in the face of opposition; and, taught me to love my failures just as much as my successes... read more →

Considering The Aesthetics And Ergonomics Of Post-Back URLs In ColdFusion

By Ben Nadel on
Tags: ColdFusion

Over the years, I've come to believe deeply in the supremacy of the URL. That is, when navigating around a web application, I believe that the vast majority of views should be accessible by URL in order to facilitate deep-linking to anywhere within the app (either in a Single-Page Application context or in a Multi-Page Application context). But, as strongly as I feel about this, I've never quite reconciled it with the way in which I manage my post-back URLs in ColdFusion. As such, I wanted to briefly consider both the aesthetics and ergonomics of post-back URLs... read more →

Unreasonable Hospitality By Will Guidara

By Ben Nadel on
Tags: Books

On a recent episode of A Bit of Optimism, Simon Sinek and Will Guidara discussed Will's recent book, Unreasonable Hospitality: The Remarkable Power of Giving People More Than They Expect. As someone who builds digital products for a living, I'm always intrigued by the idea of improving customer experience (CX); so, I gave the audio book a listen. It is easily one of the best books I've read in years. And, frankly, it should be mandatory reading for anyone that works with other people... read more →

Code Kata: Box Breathing Exercise With SpeechSynthesis And Alpine.js

By Ben Nadel on

As we near the end of InVision, I've been feeling a lot of anxiety. I'm not one for meditation; but, I do like the idea of breathing exercises to help calm a racing mind. I recently watched a YouTube video about "box breathing" in which a cycle of breathing has four phases—in, hold, out, hold—each of which is performed for 4-seconds. I like to close my eyes when breathing; so, I wanted to see if I could use the SpeechSynthesis API to create a guided meditation with Alpine.js... read more →

Collocating Views And View-Specific Components In ColdFusion

By Ben Nadel on
Tags: ColdFusion

In web application development, there's generally two philosophies when it comes to organizing files: "separation of concerns" and "collocation of behaviors". In the ColdFusion world, the pendulum or organization has swung from the collocation of behaviors—in the early days—to more of a separation of concerns within the modern MVC (Model View Controller) frameworks. But, I think the pendulum has swung too far over; and needs to return to the center where we can leverage both philosophies in the places that they make the most sense. To that end, I'll be experimenting with collocating my CFML views with the ColdFusion components that contain view-specific logic... read more →

Using Row Constructor Comparisons In MySQL

By Ben Nadel on
Tags: SQL

In his High Performance SQLite course, Aaron Francis made reference to a feature he referred to as "Row value syntax". This syntax allowed a list of values to be compared directly to another list of values. I had never seen this before; and just assumed it was a SQLite-specific concept. But then, he referenced this syntax once again in his Mastering Postgres course. At that point, I wondered if this was a baseline SQL feature that I didn't know about; and, more specifically, was this something available in MySQL?.. read more →

Mastering Postgres Video Course By Aaron Francis

By Ben Nadel on
Tags: SQL

Anytime you bring up databases in public, someone will inevitably suggest that Postgres (aka PostgreSQL) can address all of your data storage needs and then some. I love relational databases as much as the next person; but, I've never felt the kind of fervor and passion that seem to permeate the Postgres ecosystem. As an outsider, it's fascinating! So when I saw that Aaron Francis had a video course on Mastering Postgres, I jumped at a chance to get an insider's look at the database technology that seems to have a cult-like following... read more →

Adding Keyboard Shortcuts To Incident Commander Using Alpine.js

By Ben Nadel on

In the old Angular version of my Incident Commander tool, all of the interactivity took place in a Single-Page Application (SPA) context. In that model, the primary input never lost focus. In my new ColdFusion version, I'm using a Multi-Page Application (MPA) architecture which naturally resets the focus after each form submission. As such, I needed a way to re-focus the primary form control; but, I didn't want to hurt the accessibility (A11Y) of the page. To this end, I've implemented a keyboard shortcut for focusing the input using Alpine.js... 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