Skip to main content
Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.

Recent Blog Posts by Ben Nadel

Working Code Podcast - Episode 012: Idiomatic Code

Many programming languages have a sense of idiomatic code : the "blessed way" to solve a particular set of problems with a language's native constructs. These patterns exist to help people work more effectively together; and, to help new developers adapt to the language. But, unfortunate... read more »


Converting My Loggly Search Bookmarklets Into An Unpacked Chrome Extension

Four years ago, I created a Loggly Bookmarklet that would augment the Loggly Search page formatting to look and feel more like Kibana (which, in my opinion, has more accessible contrast and whitespace usage). Then, two years ago, I added a link between the Loggly JSON modal and my JSON explorer ... read more »


Custom CFParam Tag That Exposes Error Information In Lucee CFML 5.3.7.48

Over on the Lucee CFML developer forum, there was a discussion about accessing cfparam error information in the event that a type-casting error occurs. Currently, you would have to do some fancy string-parsing to get this data out of the given error object. Since I've been heads-down in ColdFu... read more »


Divergent CALLER Scope Assignment Behavior In Adobe ColdFusion And Lucee CFML 5.3.7.48

In my recent foray into ColdFusion custom tags, I've stumbled upon a divergent behavior between Adobe ColdFusion and Lucee CFML in terms of CALLER scope assignment within a custom tag. Dating all the way back to 2008, I've demonstrated that the CALLER scope is somewhat magical in how it treat... read more »


ColdFusion Custom Tag Performance Differences Between CFModule And CFImport In Lucee CFML 5.3.7.47

At InVision , we're in the middle of Sync Week , which is our annual all-hands event and Hackathon . And, given the fact that I've been neck-deep in a ColdFusion custom tag DSL for HTML emails , I thought it would be a fun to try applying my DSL to InVision's transactional emails as my hackatho... read more »


Working Code Podcast - Episode 011: Listener Questions

Cunningham's Law states: The best way to get the right answer on the internet is not to ask a question; it's to post the wrong answer. The crew recently experienced a bit of this law first hand in response to their episode on Testing . Adam Cameron - friend of the show and long-time ... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part XI

In an earlier post, I looked at several encapsulation techniques that I can use in my ColdFusion custom tag DSL (Domain Specific Language) for HTLM emails . A technique like "attribute passing" works well when you are passing data one layer down . However, as HTML email layouts become... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part X

The other day, I tweeted that the "Left Arrow" ← and "Right Arrow" → were my new favorite HTML entities. I love the fact that there is a (mostly consistent) set of unicode characters that I can use in lieu of graphic images. After that tweet, it got me th... read more »


Replacing Blank Lines Using Multiline Mode RegEx Patterns In POSIX And Java In Lucee CFML 5.3.7.47

While working on my ColdFusion custom tag DSL for HTML emails , I ran into an interesting problem when performing a multiline RegExp replace on my generated email content. This is not the first time that I've tripped over issues with multiline (?m) Regular Expression patterns and line-breaks ... read more »


Finding All Unique Paths In A Tree Structure In Lucee CFML 5.3.7.47

At InVision , I've been working with Holger Schueler to generate some internal reports regarding how different users end up in an enterprise context. One of the reports creates a Tree structure of cascading "invitations" (ie, this user invited another user who, in turn, invited three m... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part IX

In an attempt to round-out the set of ColdFusion custom tags that I might need in my DSL (Domain Specific Language) for HTLM emails , I wanted to take a look a the <pre> and <code> tags . The <pre> tag, specifically, is an interesting topic since it has special properties ... read more »


Working Code Podcast - Episode 010: Scaling

An engineer at SquareSpace once referred to his company as "an overnight success, 7-years in the making." This cheeky insight pays homage to the marathon of work that is often required when building a successful product and / or business. Which begs the question: when is it appropriate ... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part VIII

For the last couple of weeks, I've been neck-deep in HTML emails, fleshing out a ColdFusion custom tag DSL (Domain Specific Language) for HTML email authoring . In my previous posts, I've been building-up theming concepts , responsive desktop and mobile logic , CSS media query overrides , dark... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part VII

I've been making some wonderful progress on my ColdFusion custom tag DSL (Domain Specific Language) for HTML emails ! We've looked at how HTML tags are abstracted away; and, how themes can be applied to those HTML tag abstractions ; and, how we can apply responsive styling on mobile email client... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part VI

In the first post on my ColdFusion custom tag DSL (Domain Specific Language) for HTML emails , I had an image-grid abstraction that took a list of images and rendered a responsive table. In that example, I had several custom tags that did nothing but aggregate data (ie, they had no layout in and... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part V

As I've been testing my ColdFusion custom tag DSL (Domain Specific Language) for HTML emails in Litmus , I noticed that they offer previews for email clients running in "Dark Mode" . Dark mode, like other responsive design elements, can be controlled on the web using @media queries.... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part IV

When creating dynamic HTML emails, you can progressively enhance a layout (on more modern devices) using CSS media queries. However, doing so requires repetitive boilerplate: wrapping the styles in a @media block and - super importantly - remembering to append the !important flag to every si... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part III

Over the last few weeks, I've been exploring the use of ColdFusion custom tags as a DSL for HTML emails , first laying the foundation of the concept, then adding themeing of HTML entities , and most recently, improving the performance by removing implicit variable access . Today, as a quick foll... read more »


Working Code Podcast - Episode 009: Testing

There are very few people in the programming world who will argue against the idea of testing software . But, when it comes to the mechanisms though which code is tested , the conversation starts to get interesting. There are those who feel that TDD - Test Driven Development - is "the way&qu... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47, Part II

Last week, I shared a proof-of-concept (POC) that I had been working in which I used ColdFusion Custom Tags as a DSL for HTML emails . Well, I've been continuing to work on it and I'm actually pretty stoked on where it's going. It's starting to feel like it might actually be something that I can... read more »


Case Study: Removing Implicit Variable Access At Scale In Lucee CFML 5.3.7.47

In ColdFusion and Lucee CFML, when you refer to an unscoped variable , the runtime will "walk up" a series of scopes looking for said variable. The number of potential scopes to be inspected changes based on the calling context, application settings, and runtime version. In 99.99% of cas... read more »


Working Code Podcast - Episode 008: Origin Stories, Part II

This week, we continue learning about the crew, where they came from, and what makes them tick. In this second part of our two-part series on origin stories , we hear from Carol and Adam. What's fascinating to me about this episode is just how different their stories are. There are many paths into... read more »


"Enterprise" Is Not A Dirty Word

I need to get something off my chest. I listen to a lot of podcasts; and, one reoccurring sentiment that keeps getting expressed is this idea that "enterprise tier" development is, somehow, not a "Good Thing" ™ . This is often brought up in terms of technology that isn't "... read more »


Using ColdFusion Custom Tags To Create An HTML Email DSL In Lucee CFML 5.3.7.47

In my tenure at InVision , I've built a lot of HTML-based emails. Creating — and maintaining — HTML-based emails is not fun. It does not "spark joy". Part of this is because there are a large number of email clients that all have different quirks. And, part of this is because our setup... read more »


Working Code Podcast - Episode 007: Origin Stories, Part I

All super heroes have an origin story. And, so do nerds . Many of us can remember back to that moment when we realized that there was magic in the world - magic that we could be part of - magic that we could help create . This week, we get personal with the crew and learn more about where they ca... read more »


Building reMatchGroups() Using reFind() In Adobe ColdFusion 2018 And Lucee CFML 5.3.7.47

The other day, in my post about parsing strings like "5mb" into a number of bytes , I was griping about the fact that the ColdFusion language still doesn't have an reMatchGroups() function . To this, Adam Cameron mentioned that the reFind() function has had a "scope" arg... read more »


Code Kata: Parsing Strings Like "5mb" Into A Number Of Bytes In Lucee CFML 5.3.7.47

In yesterday's post about streaming an incremental ZIP file up to Amazon S3 in Lucee CFML , I had to wait until "chunks" were over 5mb (5 megabytes) in size before I could upload them. To do this, I literally calculated the number of bytes that equated to 5mb. Afterwards, I thought it wo... read more »


Generate And Incrementally Stream A ZIP Archive To Amazon S3 Using Multipart Uploads In Lucee CFML 5.3.7.47

Last week, I looked at using the ZipOutputStream Java class to generate and incrementally stream a Zip archive to the browser using Lucee CFML. In response to that, James Moberg and I were having a discussion about generating Zip archives asynchronously. This got me thinking about pushing t... read more »


Using CSS :target Pseudo-Class To Toggle Element Display

The other day, I was listening - I think - to the ShopTalk Show podcast when they mentioned the :target CSS pseudo-class . I had never heard of this CSS selector before; but, apparently, it allows you to target an element whose id attribute matches the URL fragment . This CSS selector is ... read more »


Working Code Podcast - Episode 006: Hopes For 2021

Oxford Dictionary included "doomscrolling" in their "word of the year" report for 2020; we're all feeling pandemic fatigue; many people still believe in wide-spread election fraud; the Georgia senate race was a nail-biter; and - oh yeah - we recorded this show the day after ... read more »