Perfection is the Enemy of the Good

Remember when you used to work at BigCompanyCo as an employee? Remember all the dumb stuff they did there and how you would do it differently when you get in charge? Honestly, that feeling was one of the major drivers for me to start my own company. I felt like I could do it better, cheaper and faster.

I was right, of course, (thankfully!), but I must admit I've learned a whole lot along the way. I'm a software developer/program manager by trade and I've spend the last 12 years building products and services for various companies. This means I've got a very strong technical focus and I'm able to craft and deliver very good technical strategies for lots of situations.

Like, do you need a quick and dirty reporting application to get insight in to your daily sale composition? Do you need an enterprise quality lease contract risk scoring application? Are you in need of an e-commerce infrastructure that can handle the surge of being on all 5 major television networks to raise money for cancer? I'm your guy.

Specialization at the expense of Generalization


So you've got a good idea, do you?

There is an old saying, "Ideas are cheap, 'tis execution that pays the bills". It's possible to have a good idea and use poor execution. It is possible to have a poor idea and use good execution. Allow me to pontificate:

Good idea, bad execution

An example of a good idea that was executed poorly is WebVan. Founded in the late 1990's, WebVan promised to let you order groceries online and deliver them to your home. This is a good idea and one I would pay a premium on. Mostly because I'd be able to avoid maniacal coupon clipping crazies clogging up the isles with their grocery carts and coupon flip books.

The good part of the idea is in taking friction out of the grocery shopping experience. Many a good business model has been in offering convenience at a slightly increased cost.

The bad execution comes in how WebVan allocated it's funds. Since huge tranches of money was raised through Venture Capital and though an IPO, Webvan was not careful with it's funds and collapsed under it's own overbuilt, overspent and underutilized weight. WebVan was voted the #1 Dot-com flop by C-Net in 2008.


I'm going to write about Entrepreneurialism at

I use this blog to write about things that interest me. I've been growing for the last few years and lately I'm interested in doing the right things to see our company grow.

ChallengeWave is a service to help employees start and stick with healthier lifestyles. Healthier employees are less expensive and more productive that less healthy employees. ChallengeWave works by giving tools to all users to build an online community providing entertainment and accountability in shared lifestyle goals.

Many people over the years have been helped by my technical writings at and have been kind enough to share their gratitude. These days, the majority of what I'm learning has to do with founding and growing a health technology related start up and I'd like to be able to help others with entrepreneurial tendencies.

I help other small companies from time to time with their growing pains. I'm fortunate enough to have several world class business mentors to help me with the growing pains of ChallengeWave. If you have specific things you would like me to write about, please send me a message. As always, you are free to agree or disagree with my opinions and to tell me all about it in the blog comments.

If you are interested in a demonstration of ChallengeWave for your organization, let us know.

Job Opportunity Near Boston for Mid-Level CF Developer

I'm posting this job opportunity for a friend. This opportunity is for a mid-level ColdFusion developer who is entrepreneurially minded and wants to be a key member of a growing and exciting team. Slackers need not apply! If you are interested, Contact Me with your resume text and contact info and I'll pass the information on to the right person.

Job Description

We need a mid-level programmer to aid in the development on our Coldfusion platform. The system was developed in 2005 as a Content Management, Ecommerce, and Ticketing system. The Company has been growing very quickly over the past 2 years, with explosive growth in 2010. In order for the Company to continue to grow they must increase their efficiency and build more automated processes into the platform.

This programmer will report to the team lead and will be responsible for delivering well-written, quality software as a team member both on time and within scope.


  • Function both independently as well as within a team, participating in on-going prioritization, management, development, testing and delivery of internal and external-facing web applications
  • Consult with management to identify requirements and priorities for web product development, as well as opportunities to improve Paid's performance of this function. Administer, tune and troubleshoot any of the applications in our web applications portfolio
  • Estimate, justify, and communicate budget requirements for projects
  • Aid in post-project documentation
  • Keep abreast of industry trends and developments. Research new technologies and provide recommendations


  • 3+ years experience with ecommerce platforms & content management systems
  • Experience dealing with large-scale order processing and manifesting systems a plus
  • Direct experience in high-volume, large-scale, web-based applications
  • 3+ years building web applications in a code managed, multi-tier development environment with process release management in place
  • 1+ years experience with SQL Server specifically, including experience with: Relational Database design, along with creation of stored procedures and user-defined functions
  • 3+ years experience with ColdFusion specifically, including experience with: Coldfusion specific development - CFCs, custom tags
  • Understanding of ColdFusion Server development environment (mappings, application architecture, variable scoping, client/session management, error handling, transactions, etc.)
  • Proficiency with Subversion
  • Ability to handle multiple competing priorities in a fast-paced environment
  • Position available in our new Westborough, MA offices. While the role will require interaction with the actual day-to-day processes and individuals performing those tasks, we are flexible and allow for day(s) of telecommuting per week.

Direct candidates only at this time. (No agencies please)

Filter Directory Contents By Multiple File Extensions

Query of Queries really helped me out this morning. The Model-Glue team is working on a ColdFusion Builder extension and we need to get a list of files to inspect. There could be many types of files in a project that aren't relevant to our purposes and I wanted to filter only the ones I need.

My Directory query contained lots of SVN specific files, which make for a good example of what we want to filter, before doing our inspection work.

Original Directory Query

What we need in this case is to filter anything that isn't a CFM, CFC or XML file. The CFDirectory tag will allow only a single filter, so what do we do?

In ColdFusion, I would use listlast( filename, ".") to look at the file extension but that would mean I'd have to unpack the query and either make a new one, or pack it in another datastructure. Waste of code, I tell ya. I ended up using Query of Queries and a LIKE statement to filter.

New Directory Query

The Code I Used for the Query of Queries

view plain print about
1<cfquery name="CleanedDirectoryQuery" dbtype="query">
2    SELECT *
3    FROM arguments.sourceDirectoryQuery
4    WHERE lower(NAME) LIKE '%.cfm'
5        OR lower(NAME) LIKE '%.cfc'
6        OR lower(NAME) LIKE '%.xml'

The secret sauce is the lower() function on NAME, and the LIKE conditional with a wildcard % operator. I found this through the Query of Queries documentation and I also learned about a few other wildcard operators as well.

List of Wildcard Operators Supported In Query of Query LIKE conditional

  • The underscore (_) represents any single character.
  • The percent sign (%) represents zero or more characters.
  • Square brackets ([ ]) represents any character in the range.
  • Square brackets with a caret [^] represent any character not in the range.
  • All other characters represent themselves.

Simple and maintainable. Just how I like it. Thanks #ColdFusion!

Why my computer shut off automatically

One of my laptops used to immediately shut off. This always happened to me when I was in the middle of working on something important. Since the shutdown was immediate, not graceful, I would lose all my unsaved work.

I noticed this usually happened after the fan had been running. The fan would run at high speed for a while, then the computer would immediately shut off.

After a few months of this, my amazing powers of deduction led me to take apart the computer looking for some hardware issue. Here is what I found:

Apparently, there was a lot of dust blocking the fan exhaust. Once I removed all of this, the computer has always worked perfectly. It has not shut off automatically in 6 months.

I have no idea where this dust came from, by the way. I promise we are clean people!

How to fix path is not a working copy directory and working copy is already locked errors

A few days ago I was writing some code to generate reports. After the reports were generated, the reports were emailed, then deleted off the server. I made a mistake and deleted the contents of the directory.

This was a bad thing because all of the .svn files were also deleted. I tried to replace the directory contents with the latest from SVN and I got an error. I tried to update my working copy and got an error. No matter how I interacted with SVN, I got one of the following errors:

  • Path is not a working copy directory
  • Working copy is already locked
  • Working copy '[directory]' is missing or not locked

To fix this:

I manually removed the directory entirely from my local copy. Then I updated to HEAD from SVN. This created the directory I accidentally deleted, put the files back and also added in the .svn files that were missing (and causing the working copy errors)

Apparently, if the directory exists, and SVN doesn't find the .svn files it is looking for, it gets confused. Removing the directory is enough for it to recreate it. (Since the missing directory was tracked in the parent directory .svn files)

Hope this helps you out!

Help Wally create a fun online virtual world for sick kids in hospitals

Wally Kolcz is taking a very bold and selfless step. He's interested in creating a fun online virtual world for sick kids in Hospitals. He needs your help.

See, Pepsi have put up a challenge to fund good ideas. Anyone can vote on an idea. Each month, Pepsi awards funding to the ideas with the most votes.

Wally's idea is to make a web portal that allows kids, in children's hospital, who cannot leave the hospital, or sometimes their rooms, to play in a virtual world and enjoy games, do arts and crafts, get homework to keep up with their classes, and meet and befriend kids in their hospital or around the county.

I know a good idea when I see one, and lifting the spirits of sick kids is as noble as you can get. I'd like to ask for your help in promoting Wally's plan.

How to help

  1. Visit
  2. Vote for the idea (button on the left)

Simple, right? So, please go vote for

Linux gaining on Apple - Current Visitors By Operating System

I happened to be researching which platforms visit my web properties. I found some unexpected trends and thought some of you might be interested.

First, the obvious. Windows (the much maligned operating system) is firmly in 1st place with 85% of traffic.

In second place, Apple, with 7.4%. Then Linux in third, with 6.44%

Linux trails Apple by less than 1%?!?!

By mindshare and mouthshare, I would have thought Apple would command a much larger lead. Especially since I write almost exclusively on technology topics.

What trends are you seeing on YOUR web properties?

console.log throws error on Internet Explorer IE

If you have calls to console.log in your Javascript, you will get an error in Internet Explorer. This is because there is no console variable (object) in the window name space.

Sure you could take out all your console.log statements, but usually you need those around for a little while. Here is a quick snippet you can use in JQuery that'll take the place of console.log. Your Firefox console will still work and you won't get errors on Internet Explorer.

view plain print about
1jQuery.logThis = function( text ){
2    if( (window['console'] !== undefined) ){
3        console.log( text );
4    }

Now when you want to log something, you can use:

view plain print about
1JQuery.logThis( "I pity the fool who uses console.log() ");
2$.logThis( "I pity the fool who uses Internet Explorer");

Happy Days are here again!