Recent Web Log Entries By Ben Nadel
The UX Of Prototyping: Low-Fidelity Is The New High-Fidelity
Posted: May 10, 2013 at 10:08 AM by Ben Nadel
As a User Experience (UX) designer, I spend a lot of time with pen and paper, sketching interfaces, testing ideas, and fleshing out use-case workflows. I work exclusively in grayscale. This holds true for both sketching and digital prototyping. On paper, I use a black pen (Pilot Precise Grip, Bold) on white, unruled paper; on the computer, I use a... read more »
Comments (17) | Post Comment | Ask Ben | Permalink
HashKeyCopier - An AngularJS Utility Class For Merging Cached And Live Data
Posted: May 7, 2013 at 9:46 AM by Ben Nadel
A while back, I blogged about how AngularJS uses an expando property, $$hashKey, in order to associate a $scope-based object with a current node in the Document Object Model (DOM). The existence of this expando property is critical because it prevents AngularJS from accidentally and needlessly re-creating DOM elements (and re-linking Directives)... read more »
Comments (18) | Post Comment | Ask Ben | Permalink
Delegating Nested Directive Behavior To Parent Directive In AngularJS
Posted: May 1, 2013 at 6:54 PM by Ben Nadel
In an AngularJS JavaScript web application, the part of your code that pipes user behaviors into controller methods is known as the, "directive." Out of the box, AngularJS ships with many powerful directives like ngClick, ngRepeat, ngSubmit, etc.; but, AngularJS also allows you to define as many custom directives as you want. This is awesome; but,... read more »
Comments (7) | Post Comment | Ask Ben | Permalink
What If All User Interface (UI) Data Came In Reports?
Posted: April 30, 2013 at 9:53 AM by Ben Nadel
As I've been trying to think more deeply about software application architecture , and experimenting with new ideas, one thing has become painfully obvious to me: shoehorning your domain model into your user interface (UI) leads to pain. Maybe not at first - maybe not when your user interface is a simplistic representation of your domain; but ove... read more »
Comments (36) | Post Comment | Ask Ben | Permalink
Tiny Test - An Exploration Of Unit Testing In ColdFusion
Posted: April 29, 2013 at 9:45 AM by Ben Nadel
I am not good at unit testing my code. I've played around a little bit with MXUnit (for ColdFusion) and Jasmine (for JavaScript) ; but, I've not really committed to using unit testing within my professional workflow. I know this is bad; and, I know it needs to be fixed. So, I decided to sit down and really try to get comfortable with unit testi... read more »
Comments (6) | Post Comment | Ask Ben | Permalink
Forced Repaints In Directive Can Cause Accidental Scrolling In AngularJS
Posted: April 24, 2013 at 9:51 AM by Ben Nadel
The other day, I started getting an odd behavior in an AngularJS application that had a tabbed interface. Normally, with a tabbed interface, when the user switches from tab to tab, the scroll offset of the browser should remain the same. And, this is how our application was working. But then suddenly, we started seeing a "scroll-to-top" behavior w... read more »
Comments (0) | Post Comment | Ask Ben | Permalink
Looking At Prototypal Inheritance To Determine Data Types In JavaScript
Posted: April 12, 2013 at 9:42 AM by Ben Nadel
Yesterday, I was working on some JavaScript that needed to execute slightly different actions when a given value was either an Object or an Array. Typically for this, I would use something like Underscore.js or Lodash.js, which converts the value to a String and looks at the result; but, as I was writing the code, I wondered if we could use the gi... read more »
Comments (7) | Post Comment | Ask Ben | Permalink
Stateless Service Singletons vs. Stateful Service Entities
Posted: April 2, 2013 at 4:34 PM by Ben Nadel
The other day, I was watching one of the Test Driven Development (TDD) episodes in the Clean Coder video series by Robert C. Martin . In the episode, Robert Martin (aka Uncle Bob) was using the Red-Green-Refactor approach to refactoring some HTML formatter class. As he was walking through the demonstration, something completely tangential struck ... read more »
Comments (10) | Post Comment | Ask Ben | Permalink
ColdFusion Implicit Getter Has Incorrect Type For Being Called As A Function
Posted: April 1, 2013 at 10:11 AM by Ben Nadel
ColdFusion 9 overloaded the CFProperty tag (or just "property" in CFScript) to allow for the definition of implicit, or synthesized, getter and setter methods . Lately, I've been using these implicit setters as a way to provide dependency injection hooks for Sean Corfield's DI/1 Framework . The setters seems to work without fail. And, 99% of the... read more »
Comments (7) | Post Comment | Ask Ben | Permalink
The Clean Code Video Series By Robert C. Martin, aka Uncle Bob
Posted: March 28, 2013 at 9:18 AM by Ben Nadel
Last June, I read Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin . In the comments to that post, Frederik Vig suggested that I should take a look at the "Clean Coders" video series , also presented by Robert Martin. Having loved the Clean Code book, I promptly opened the Clean Coders website in a new Firefox tab - w... read more »
Comments (8) | Post Comment | Ask Ben | Permalink
CFFile Upload - The Filename, Directory Name, Or Volume Label Syntax Is Incorrect
Posted: March 22, 2013 at 9:13 AM by Ben Nadel
In all the years that I've been using ColdFusion, I've never really had a problem with CFFile Upload (ie. CFFile action=upload). It just works; and it's awesome. The other day, however, I started getting this really odd error from my ColdFusion CFFile tag: The filename, directory name, or volume label syntax is incorrect. Since nothing around th... read more »
Comments (3) | Post Comment | Ask Ben | Permalink
Understanding CSS Transitions And Class Timing (Revisited)
Posted: March 20, 2013 at 9:37 AM by Ben Nadel
Yesterday, I looked at CSS transitions and examined the timing in which the transitions would take effect . And, again, I don't mean the duration of the transition; or knowing when the transition ended. I mean, when does the browser actually initiate a transition in relationship to your mutation of an element's CSS properties. In the comments to ... read more »
Comments (5) | Post Comment | Ask Ben | Permalink
Understanding CSS Transitions And Class Timing
Posted: March 19, 2013 at 9:55 AM by Ben Nadel
UPDATE : @Ron, in the comments, pointed out that this demo does not work as expected in Chrome. Apparently Firefox (my dev environment of choice) and Chrome handle this case somewhat differently. I've only just started to use CSS transitions; but, I already love them. They seem like a great way to augment the behavior of your application user ... read more »
Comments (12) | Post Comment | Ask Ben | Permalink
Matthew McCullough And Tim Berglund On Mastering Git - O'Reilly Video Series
Posted: March 18, 2013 at 9:58 AM by Ben Nadel
My experience with Source Control is fairly limited. In the past, I've used SVN; but, only in the lightest-touch-way possible. At InVision , we use Git and GitHub to manage our code. At the onset of the InVision project, in order to get more familiar with Git, I purchased the two video series - McCullough and Berglund on Mastering Git and McCu... read more »
Comments (5) | Post Comment | Ask Ben | Permalink
Removing Inline Opacity Filters After Fade-In / Fade-Out Transitions In IE8
Posted: March 15, 2013 at 4:50 PM by Ben Nadel
Recently, I demonstrated how to use jQuery's .css() method to clear inline CSS left in-place after a jQuery transition. This approach has been working well; but, recently, I found out that this approach falls short in IE8 (and IE7) when dealing with alpha / opacity filters. No matter what I did - no matter which CSS properties I cleared - "filte... read more »
Comments (5) | Post Comment | Ask Ben | Permalink
Previously Posted
Reading Images With Fallback Approaches In ColdFusion - Posted Mar 8, 2013
Accessing $scope On The DOM Using AngularJS - Posted Mar 1, 2013
Grouping Nested ngRepeat Lists In AngularJS - Posted Feb 28, 2013
POIUtility.cfc Now Hosted On GitHub - Posted Feb 26, 2013
Exploring Sample Software Application Layers And Responsibilities - Posted Feb 22, 2013
Using AtomicInteger To Create Uniquely Named CFThreads In ColdFusion - Posted Feb 20, 2013
Mixing Static And Dynamic Data In An AngularJS Select Menu - Posted Feb 19, 2013
Adding An ngRepeat List Delimiter In AngularJS - Posted Feb 17, 2013
Using ngController With ngRepeat In AngularJS - Posted Feb 15, 2013
Directive Link, $observe, And $watch Functions Execute Inside An AngularJS Context - Posted Feb 13, 2013
Using jQuery Event Delegation In AngularJS - Posted Feb 12, 2013
Exploring Directive Controllers, Compiling, Linking, And Priority In AngularJS - Posted Feb 9, 2013
Using Controllers In Directives In AngularJS - Posted Feb 1, 2013
Using CSS Pseudo Elements :before And :after - Posted Jan 21, 2013
Exploring Directives, $scope, DOM Rendering, And Timing In AngularJS - Posted Jan 18, 2013
Rendering DOM Elements With ngRepeat In AngularJS - Posted Jan 16, 2013
Clearing Inline CSS Properties With jQuery - Posted Jan 15, 2013
Nested Views, Routing, And Deep Linking With AngularJS - Posted Jan 14, 2013
Creating A Custom Show / Hide Directive In AngularJS - Posted Jan 4, 2013
My Experience With AngularJS - The Super-heroic JavaScript MVW Framework - Posted Jan 3, 2013
Command-Query-Responsibility-Segregation (CQRS) Makes Domain Models Practical - Posted Dec 28, 2012
Software Application Layers And Responsibilities - Posted Dec 21, 2012
What The Heck Is Business Logic Anyway? - Posted Dec 14, 2012
Are HTML FORM Tags Required To Display Form Input Controls? - Posted Oct 26, 2012
HTTP Status Codes For Invalid Data: 400 vs. 422 - Posted Oct 17, 2012
Using RESTful Controllers In An AngularJS Resource - Posted Oct 17, 2012
Applying A Cached Response To An AngularJS Resource - Posted Oct 12, 2012
Resolving An AngularJS Deferred Object Twice With DeferredWithUpdate.js - Posted Oct 8, 2012
Inlining AngularJS Templates Using ColdFusion - Posted Oct 5, 2012
Using JavaScript to Submit UTC Dates To The ColdFusion Server - Posted Oct 2, 2012
Change In ColdFusion Date::getTime() Method In ColdFusion 10 - Posted Oct 1, 2012
Using jQuery Deferred.notify() To Provide Locally Cached Data - Posted Sep 27, 2012
Detecting Spam In User-Submitted Content With SpamAnalyzer.cfc - Posted Sep 25, 2012
Decorating Scope Methods In The AngularJS Prototype Chain - Posted Sep 24, 2012
Setting Prototype Properties Using Inherited Scope Methods In AngularJS - Posted Sep 20, 2012
Exposing A Mouse Service For Click Events In AngularJS - Posted Sep 18, 2012
Capturing Document-Click Events With AngularJS - Posted Sep 17, 2012
Creating AngularJS Controllers With Instance Methods - Posted Sep 13, 2012
Mapping AngularJS Routes Onto URL Parameters And Client-Side Events - Posted Sep 12, 2012
Mapping RESTful Resource URIs Onto URL Parameters And Server-Side Events - Posted Sep 10, 2012



