Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
I am the chief technical officer at InVision App, Inc - a prototyping and collaboration platform for designers, built by designers. I also rock out in JavaScript and ColdFusion 24x7.
Meanwhile on Twitter
Loading latest tweet...
Ben Nadel at cf.Objective() 2010 (Minneapolis, MN) with:

Paul Rowe

Member since Feb 13, 2013

Recent Blog Comments By Paul Rowe

  • Using ORDER BY And LIMIT Clauses In A UNION SQL Statement

    Posted on Apr 22, 2014 at 10:34 AM

    I would sometimes use this sort of functionality. For instance, I've used it in a sub-query to ensure that I had a default, non-NULL value. Example: I wrote a query for tracking immunizations received against immunizations scheduled. The query needed to have a set number of rows for the immunizatio... read more »

  • Internet Explorer Aborts Images With The Wrong Mime-Type

    Posted on Apr 18, 2014 at 10:17 AM

    What? You mean the browser didn't know what you meant? That's crazy talk! :P It can be frustrating when that happens. Thank you for bringing this up. What gets me, though, is that I seem to recall IE uploading files with the image/jpg MIME type if the extension is "jpg". I might be mistak... read more »

  • How To Store Arbitrary And Transient Attributes With Your User Data

    Posted on Jan 16, 2014 at 11:14 AM

    @Zack, I haven't had the opportunity to see how well it worked on large databases, unfortunately. I don't know how you would address that. If it's stored as a view, as I had suggested, it would probably be difficult to employ filters prior to doing the PIVOT. However, if you write a stored procedure... read more »

  • How To Store Arbitrary And Transient Attributes With Your User Data

    Posted on Jan 15, 2014 at 11:51 AM

    This is on a similar track to what @Jon and @Aaron are doing. One of the things that I've done in the past is very similar to their approaches, particularly because it is infinitely expandable. What did I do differently? I created a view that performed a CROSS JOIN between the user and the data typ... read more »

  • Learning ColdFusion 9: Implicit Struct And Array Usage

    Posted on Oct 17, 2013 at 5:25 PM

    I actually ran into an error today creating an implicit variable of monstrous size. (The one assignment expression, allowing for readability, spans 280 lines.) For whatever reason, CF9 actually wouldn't allow me to execute the implicit array/struct assignment without quoting my member names. This... read more »

  • What Data Should I Push Over Realtime WebSockets?

    Posted on Oct 17, 2013 at 1:46 PM

    @Ben, 20/20 hindsight, eh? This is something that's come up in the past: Our applications almost always reach a "maturity" which defies the mindset we had when we started. We can plan ahead as much as possible, but as the application matures we will almost always find a point where we hav... read more »

  • What Data Should I Push Over Realtime WebSockets?

    Posted on Oct 17, 2013 at 11:31 AM

    No, Ben, you're not crazy, nor would you necessarily be late to the game. When you start dealing with applications that are being run on multiple computers, you start revisiting a lot of your practices. For me, this came when we started writing a computer application that expected to access the data... read more »

  • Giving My ColdFusion Components And My JavaScript Components The Same Structure

    Posted on Sep 3, 2013 at 11:10 AM

    This is very similar to how I was taught to write C++ objects, though you'd usually have just the declarations in the header file and the definitions in a source file. Since you don't tend to have that separation of declaration from definition in ColdFusion or JavaScript, you have both the declarati... read more »

  • The User Experience (UX) Of Pausing Automatic Investments At The Vanguard Group

    Posted on Aug 16, 2013 at 11:46 AM

    Hmmm... If it doesn't add any user value, doesn't that mean it's getting in the way of a good user experience? Which is more preferable: a positive user experience or a good marketing angle?... read more »

  • Object Thinking By David West

    Posted on Jun 12, 2013 at 6:24 PM

    @Ben, If you didn't design it well, you have all the benefits of OOP, but it becomes more difficult to extend the functionality. Any immature design (and I've written my share) will eventually reach a point where it becomes difficult to extend the functionality. Take a look at what James pointed ou... read more »

  • Object Thinking By David West

    Posted on Jun 12, 2013 at 2:16 AM

    @James, That's a really good catch. You're right: the task shouldn't care what it takes to fit in with the rest of the list. It should leave that up to the list. It should simply say, "Hey, List! Is this change ok with you?" and change the name if the response allows it. @Ben, It really c... read more »

  • Object Thinking By David West

    Posted on Jun 11, 2013 at 11:17 AM

    @Ben, One of the things that really helped me get away from writing procedural code was taking an O.O.P. class and being required to write functions no longer than an arbitrarily small number of lines. It can help you see what belongs together, what doesn't belong together, and what can be generaliz... read more »

  • POIUtility.cfc Examples For Reading And Writing Excel Files In ColdFusion

    Posted on Apr 26, 2013 at 4:56 PM

    @Ben, In case you're interested in expanding the functionality, I added the following lines of code to a local copy of POIUtility.cfc so it would be able to open password-protected XLS files. Here's the code (in context) and an explanation of what else needs to happen for it to work. // Create t... read more »

  • Looking At Prototypal Inheritance To Determine Data Types In JavaScript

    Posted on Apr 18, 2013 at 10:07 AM

    @Ben, Yes, that would be the result. In JavaScript, you would end up with an Object class that has isBall, isBasketball, isBaseball, isSoccerBall, etc. The trade-off is having a function defined that will always return a boolean value at the cost of having all of those functions defined for every c... read more »

  • Looking At Prototypal Inheritance To Determine Data Types In JavaScript

    Posted on Apr 12, 2013 at 10:13 AM

    I remember seeing something like this in SmallTalk, but it went far and above what you just described here. In the little that I learned of SmallTalk, it seemed typical that every class would define a function identifying itself (and any descendants) as an instance of that class. It would be simple... read more »

  • CFFile Upload - The Filename, Directory Name, Or Volume Label Syntax Is Incorrect

    Posted on Mar 22, 2013 at 10:00 AM

    You know, I knew the CF would allow you to specify the filename, but I didn't tend to let it do that because I wanted to be able to handle different extensions (whether I was uploading an image or some sort of document). I would write logic to make sure that the filename I ended up with had the corr... read more »

  • The Lessons of Failure

    Posted on Mar 20, 2013 at 5:04 PM

    I can sympathize with this, though I haven't had quite the same experience myself. I was rewriting an application that used a technology that had just reached the end of its life cycle (MS wouldn't support it anymore). After writing the application, we upgraded the server and the technology was no ... read more »

  • Restarting Windows Explorer Without Restarting Your Computer

    Posted on Mar 20, 2013 at 4:35 PM

    @Di, You can also use the "Processes" tab in Windows Task Manager to forcibly end the "explorer" process.... read more »

  • Restarting Windows Explorer Without Restarting Your Computer

    Posted on Mar 20, 2013 at 4:30 PM

    @Di, A variation on this is as follows (and this works in Win7, too): 1. Use Ctrl+Shift+Esc to open Windows Task Manager. 2. Make sure the tab labeled "Applications" is selected. 3. Click the button labeled "New Task...". The "Create New Task" dialog should appear. 4. ... read more »

  • Exploring Sample Software Application Layers And Responsibilities

    Posted on Feb 22, 2013 at 10:19 AM

    That makes a lot of sense, Ben. It's always a good idea to break your process down that way. Figure out the dependencies and the conditional activities. I had an instructor during my undergraduate education who taught O.O.P. (with C++). One of the code requirements for his class was that no functio... read more »