Skip to main content
Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
Ben Nadel at CFUNITED 2008 (Washington, D.C.) with: Qasim Rasheed and Sana Ullah
Ben Nadel at CFUNITED 2008 (Washington, D.C.) with: Qasim Rasheed ( @qasimrasheed ) and Sana Ullah

Recent Blog Posts by Ben Nadel

Why Do People Think React Teaches You More JavaScript?

I don't understand it. Once again, someone with a good amount of community influence said that when you use the React JavaScript framework you learn "more JavaScript" when compared to other frameworks (Angular in this particular case). I've dabbled in React; and, I've been using Angular... read more »

Capturing Keyboard Event Modifiers Across Operating Systems In JavaScript

I have something rather embarrassing to admit . At some point, for reasons that I can't remember, when I switched over to using a MacBook about a decade ago, I somehow got it in my head that the event.metaKey represented a "generic modifier" that worked across operating systems. Mean... read more »

Feature Flags Shift The Balance Of Power Away From Designers

I've been using and loving Feature Flags for a long time . And, historically, I've embraced feature flags as a construct that makes product development faster, easier, and safer . But, last week, on the Deploy Friday podcast , I started to formulate some novel thoughts on what makes feature fl... read more »

Working Code Podcast - Episode 033: Software Patents

Do you write "new and original" code that is "useful" and has a "non-obvious function"? If so, your code may qualify for a patent. A patent can help prevent other people from using or selling your software. That said, which engineer among us isn't write new and origin... read more »

Exploring The Interplay Between HTML Entities And TextContent In JavaScript

As I was playing around with inserting text at the last known caret location yesterday, I stumbled upon a large gap in my mental model for how HTML works. For years, I've been using HTML entities to generate web-safe HTML markup. However, I only just realized that if you read the textContent... read more »

Inserting Text At The Last Known Selection / Caret Location In JavaScript

Over the weekend, I added emoji shortcuts just below my comment form. To do this, I had to render the emoji options using Lucee CFML ; and then, I had to apply the selected emoji to the textarea using JavaScript . In an effort to always do things incrementally and iteratively, my first (and cur... read more »

Printing Emoji Characters From Unicode CodePoints Using HTML Entities In Lucee CFML 5.3.7.47

Earlier today, I mentioned that I wanted to make it easier for people to use emoji characters within my blog comments. As part of that facilitation, I need to add emoji glyphs to a textarea , which I can do using String.fromCodePoint() in JavaScript . But, in order to render the list of emojis ... read more »

Rending Emoji Glyphs Using Hexadecimal CodePoints In JavaScript

A year ago, I updated my comments to use the utf8mb4 character set so that the comments could contain emoji glyphs. But, using emoji still isn't that easy. On MacOS, to add an emoji, I have to use Ctrl+Cmd+Space (on MacOS) to trigger the emoji keyboard; then, I have to make sure the cursor is... read more »

Extolling The Benefit Of Feature Flags On The Deploy Friday Podcast

This morning, I had an opportunity to join Episode 64 of the Deploy Friday podcast , hosted by Chad Carlson of Platform.sh . In this episode, Dave Karow - CD Evangelist at Split.io - and I celebrate the multitude of benefits that your team, your product, and (most importantly) your cus... read more »

I Assume That I'll Never Complete My Work, And I Plan Accordingly

What I'm about to say is nothing new - I've discussed working under constraints many times in the past . But, after my post on the deleterious effects of working at full utilization , I had a moment of insight that allowed me to coalesce some feelings into more meaningful thoughts. I realiz... read more »

Working Code Podcast - Episode 032: What Comes After Senior Developer?

The world of web development is still a nascent industry. According to Robert "Uncle Bob" Martin, the number of programmers roughly doubles every 5-years. Which means that most of the developers that you interact with are relatively new and relatively young. It's not often that you look a... read more »

The Deleterious Effects Of Working At Full Utilization

At work, I'm on the Rainbow Team. Historically, my team's strategy has always been to allocate about 70% of our time to the planned work ; and then, to leave the other 30% of time open for the inevitable unplanned / interrupt-driven work which is an inescapable fact of life. In the past, I've il... read more »

Video Presentation: Feature Flags Change Everything About Product Development

A few weeks ago, I had the honor of participating in the Adobe ColdFusion Developer Week conference. I wanted to share a topic that I am extremely keen on : Feature Flags . My presentation was called, Feature Flags Change Everything About Product Development - a title that is in no way hyperb... read more »

Working Code Podcast - Episode 031: To The Cloud, But Why?

There is no one thing that is "The Cloud". Instead, there are a set of general characteristics that underscore cloud technologies: we can provision, deprovision, and scale resources at will; we don't need to manage those resources; and, we only pay for the resources that we use. But, ... read more »

Animating The Pseudo-Element Content Property Using CSS Keyframes Animation

At InVision , I'm building a small user interface (UI) that loads a list of documents and then caches them in memory for all subsequent renderings of the UI. During that one-time-only loading phase, I'm showing the static text, Loading.... , in the view. But, this static text got me thinking abou... read more »

Working Code Podcast - Episode 030: Carol Is Crushing It

Ten weeks ago, in Episode 20 , Carol described a problem at work in which her customers were using Support Tickets as a means to look-up information in lieu of logging into the customer dashboard. This email-based workflow has been putting a large burden on the Support staff. And, Carol wanted to ... read more »

TimeMachine-Inspired Progress Indicator Using CSS Keyframes Animation

As I mentioned on the Working Code podcast a few months ago, I finally started using Apple's TimeMachine to back-up my Mac. The back-up process goes through a few difference phases: preparation, backing-up, and clean-up. During the "preparation" phase, the TimeMachine system menu shows ... read more »

Using The Directory Attribute To Invoke CFExecute From A Working Directory In Lucee CFML 5.3.8.189

At InVision , I generate a lot of ZIP files using the CFExecute tag and the zip command-line utility. And, in most cases, I need to execute that zip CLI from a "working directory" in order to maintain the input directory's local folder structure. Historically, I've had to execute ... read more »

The User Experience (UX) Of A Graceful No

Over the weekend, I listened to an episode of the Hidden Brain podcast titled "The Influence You Have" . In it, Shankar Vedantam discussed the power of influence that we can unknowingly exert over other people; and, conversely, how difficult it is for people to say "No" when as... read more »

Working Code Podcast - Episode 029: Potluck

This week on the podcast, the crew discusses various topics: What would you do as an engineer if you knew you couldn't get fired? What conscious and unconscious fears might be holding you back from executing on tasks that you know are important? What does a healthy work-life balance look like aft... read more »

Using The OWASP Java HTML Sanitizer In Lucee CFML 5.3.7.48 To Sanitize HTML Input And Prevent XSS Attacks

Earlier this week, at the Adobe ColdFusion Developer Conference, Charlie Arehart mentioned that the OWASP AntiSamy project was added to Adobe ColdFusion 11. I started using the AntiSamy project back in ColdFusion 10 , and hadn't realized that it was now a native part of the ColdFusion runtime. T... read more »

Generating Color Swatches With GraphicsMagick And Lucee CFML 5.3.7.47

At InVision , I've been playing around with an export feature for Boards. Unlike Prototypes - which only aggregate a single "type" of data (screens) - a Board can include files, notes, and color swatches. Since color swatches are just HEX values, I thought it would be fun to try and mate... read more »

Working Code Podcast - Episode 028: Build vs Buy

Engineers love to build things. Materializing an abstract concept into the form of a working piece of software is one of the most thrilling experiences available on planet earth . As such, we engineers often favor building new software over buying existing solutions. However, doing so takes time a... read more »

Product Design And Meeting Customers Where They Are

A few weeks ago, I listened to an episode of Software Engineering Daily with Corey Quinn . It was about Amazon Web Services (AWS). And, Corey kept using a phrase that I can't get out of my head. He said, Amazon is great about meeting customers where they are . As someone who builds a product tha... read more »

Managing And Reporting Errors During Parallel Array Iteration In Lucee CFML 5.3.7.47

Hands-down, one of the most bad-ass features of Lucee CFML is parallel iteration over collections. This feature allows us to call map , filter , each , any , and some using low-level threading. Except, we don't have to care about the threading - Lucee just handles it for us . That said, ... read more »

Working Code Podcast - Episode 027: Giving Technical Presentations

As Jerry Seinfeld joked , when it comes to funerals, most people would rather be the one in the casket than the one giving the eulogy. Because, public speaking isn't easy. And, for many, it's a source of great anxiety. A technical presentation takes that anxiety and compounds it by layering on a n... read more »

Strange Variable-Name Error When Writing To Base Tag In Adobe ColdFusion 2018

Yesterday, I posted an Adobe ColdFusion compatible version of my DSL for HTML emails . In that post, I listed getBaseTagData() as one of the compatibility issues between Lucee CFML and Adobe ColdFusion. It's actually a nuanced issue with several different stumbling blocks; one of which is a stra... read more »

Adobe ColdFusion 2018 Compatible Version Of My ColdFusion Custom Tag DSL For HTML Emails

Over the past couple of months, I've been working on a ColdFusion custom tag DSL (Domain Specific Language) for HTML emails . It's been a thrilling adventure; and, it's been tremendously satisfying to see this approach being applied for great good at InVision . That said, InVision runs on Lucee C... read more »

Using The LaunchDarkly REST API To Update Rule Configuration In Lucee CFML 5.3.7.47

I am not bashful about the fact that I love using LaunchDarkly for our feature flags at InVision . But, the vast majority of my experience revolves around their Java SDK which implements the rules engine consumer and the server-sent event streaming. I actually have very little experience wit... read more »

Working Code Podcast - Episode 026: Passwords

This week, the crew talks about passwords. Web applications store a great deal of sensitive information. But, there is something categorically different about storing passwords. Because - if compromised - a password from one application may grant a malicious actor access to another application.... read more »