Category: tips-and-tricks

Jan 20 2011

Looking for a vertical software vendor? Here is a quiz to separate the first-class from the fly-by-night vendors.

If your company is looking for a big-ticket software vendor and you want to take some early steps to find the right vendor, here is a brief quiz you could give to your candidates.

These are mostly adapted from THE JOEL TEST but I have added some things that are relevant since The Joel Test is pretty out of date.

When interviewing the vendors, set it up so that they would only have an hour or so to answer and return the test (so they can’t fake or fudge the answers.)

I would not expect perfection but on the whole most software shops (by that I mean a company whose primary line of business is selling packaged software) should be doing a lot of what is suggested by the questions.   This “test” would do a good job of separating the first class operations from the fly by night ones.  Even the first class ones that are not doing all of what is here will have strong answers and justifications.  The only way a fly by night one could pass this test is by lying through there teeth.

Speaking of lying through their teeth.  Before making a final decision maybe you should ask to SEE the operation.  Have them show you their environment and step you through the use of their ticket system, or release process, or bug-tracking software.

An irony of the economics of vertical market software is that it is traditionally a LOT more expensive but is actually LESS likely to have quality built-in.   Inexpensive single-purpose software vendors can’t afford to deliver crappy software because the support costs can easily overwhelm the revenue stream.  But vendors that charge $100,000 to &1,000,000 per installation can throw money and people at their problems (and very often bill the costs to their customers.)  I am not saying that all really expensive software is crappy.  But the potential is there so you must tread carefully.


Here is the quiz.


  • Do you use Source/Version Control?
  • Which Version Control system do you use? 
  • Can your developers that are working  remotely (for example, doing customer customizations) do commits and updates to your version control system (as long as there is a internet connection)?


  • Can you make a releasable build in one step?
  • Do you make daily builds when you are product is in active development?
  • Do you use a continuous integration system?
  • What do you use for continuous integration?


  • Do you use bug tracking software?  Please describe briefly.
  • What bug tracking software do you use?
  • Do you fix bugs before writing new code? (When working against a schedule do you fix bugs before starting new features?)


  • Do you follow a software development methodology? 
  • What is the name of the methodology you follow?
  • Is it an agile or waterfall methodology?
  • In what ways do you NOT follow the recommendations of your proscribed methodology? 
  • What role do developers play in driving your release schedule (as opposed to managers)?
  • Describe your methodology in two paragraphs or less.


  • Describe the method you use for hiring developers.  What steps do you try to complete?
  • Describe the working condition of your developers. 
  • How often are developer computers replaced in your company?
  • What do your developers do for professional development?


  • Do you have in-house testers that are not developers?
  • Can developers close their own tickets in your bug tracking software?
  • Do you do usability testing as part of your UI design process?  Please describe briefly.
  • Do you have in house designers for the UI of your software?


  • Do you use Unit Testing in the development process at your company?
  • Would you say that you use Unit Testing as part of the design process or just to be sure that changes don’t break the build.
  • What is the code coverage of your unit test suites?
Aug 26 2010

A little ASCII weirdness

Just did a little Excel “hallway” support.  The user had copied and pasted in some data from a web page to excel.  Column A “looked” like a row of numbers but there is nothing I could do to get excel to treat the values like numbers.  Formulas that were expecting numbers showed #VALUE errors.

It seemed that each cell had a SPACE after it.  And that is weird in its own right because in a cell with a number and a space Excel should treat the value like a number.  But sure enough I could delete the “space” from the value and the cell would then begin to act like a number.   Problem was NOT solved though, because the sheet had 4000 rows that needed cleaning up.

The weirdness continued when I tried to use the Excel REPLACE function to remove the spaces.  But Excel could not find a space in the column.  By this time I was weirded out and I asked the user to email the sheet so I could take a closer look.

Once back at my desk it only took a few minutes to solve.  I used the Excel VBA ASC function to tell me what the character was.  In the Excel VBA Editor’s Immediate pane I typed in


That showed me that the character was NOT a space but was ASCII code 160. 

To fix the user’s data I did CTRL-H (Replace dialog) and in the Find box I typed ALT-0160.  That put in a “space” and I was able to Replace All. 

Turns out that in HTML (remember the data was copied from a web page) that ASCII-160 is treated as a NON-BREAKING space. 

For the curious…here are a couple of links.


Aug 12 2010

Blogging code from Windows Live Writer

Windows Live Writer is an AWESOME way to blog. 

Using the following post I figured out how to have awesome code formatting in my posts.

Look at my last post for an example.


Aug 12 2010

Differences between Unit Testing Mocks, Fakes, and Stubs

Martin Fowler’s page on the matter is a well-known guide.  Here is how he defines the differences in summary:

  • Dummy objects are passed around but never actually used. Usually they are just used to fill parameter lists.
  • Fake objects actually have working implementations, but usually take some shortcut which makes them not suitable for production (an in memory database is a good example).
  • Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test. Stubs may also record information about calls, such as an email gateway stub that remembers the messages it ‘sent’, or maybe only how many messages it ‘sent’.
  • Mocks are what we are talking about here (the article): objects pre-programmed with expectations which form a specification of the calls they are expected to receive.

Happy Unit Testing


Aug 11 2010

A simple and appropriate way to handle XML in your applications.

Good post here.

Also a little more details here.


Aug 11 2010

If your organization is NOT a software shop but DOES do a lot of custom software development…

…you should still use software development best-practices, according to this excellent blog post.  It is the definition of “professional.”

This is good stuff.  And here is his list of best practices defined at the end of the post:

  • Yes, you need to use source control.
  • Yes, you need to automate the build.
  • No, you shouldn’t be releasing the assemblies compiled on your machine.
  • Yes, you need to stop writing long methods and pay attention to code complexity.
  • Yes, you need to buy your developers the best tools available.
  • No, you don’t need to write your own logging framework.
  • Yes, you should be practicing test first development.
  • No, continuing to ship known defects is not acceptable.
  • Yes, you should understand who your customer is


Jan 23 2010

What switches I used when using Windows 7 built-in Robocopy command

Windows 7 includes a VERY POWERFUL file and directory utility (like xcopy on steroids).  I just used it to copy the entire contents of one drive onto another.

For future reference.  Here are the command line options I used and an explanation.


Here is what they mean.

S – copy directories too

ZB – copy in restartable mode…if it fails copy in backup mode.  (In restartable mode it starts where it left off if the copy operation is interrupted.)

COPY:DAT  – Copy Data Attributes and Timestamp information.  This mode will ignore security settings.

DCOPY:T – for Directory copies, preserve Timestamp information

XA:SH – exclude System and Hidden files.

R:2 – Retry twice if copy fails.  (Default is 1 million…how helpful is that?)

W:5 – Between retries wait 5 seconds. (Default is 30 secs.  That is too long.)

Hope this helps.


Jan 13 2010

Configure your Novatel MiFi device to not disable the wireless when you plug it into USB port

I love my MiFi.  It is a personal router that uses my mobile provider’s broadband infrastructure to connect you to the internet any place and time (as long as there is signal.)

It has a couple of annoyances, though, the biggest one being that when you plug the device into your computer’s USB port IT DISABLES THE WIRELESS.  You can still connect to the internet but you have to use the providers software to do it.  This is bad behavior for a lot of reasons but here is an example.  You are sharing your MiFi wireless with several others but the battery is going dead.   But if you plug it in to the USB port so the device can charge, BAM…no more broadband sharing.

The good news is that I discovered after some digging that this behavior can be disabled such that connecting to the USB will NOT disconnect wireless.  Here’s how.  This is from memory so I may not have it perfectly outline but do something like this:

  1. Turn on your MiFi and wait a minute.  Then connect your computer to the MiFi wireless connection as you would any other WiFi connection.
  2. Open a web browser window and go to  This is the ip address to the MiFi configuration page.
  3. Type the Admin password in the box in the upper right corner and click the login link.  (out of the box the admin password is ‘admin’ so that should work unless you changed it.)
  4. This will take you to the Admin page.  Go to Setting/Config.
  5. Click Download to grab a copy of your configuration file for your mifi.  This loads an XML document into your browser.
  6. Do Ctrl-A to select all and Ctrl-C to copy to your clipboard.
  7. Open Notepad (or your favorite text editor.  I use Notepad++.)  Do Ctrl-V to paste in your text.  Save the file with any name to a location you remember.
  8. Edit the config file.  You will find a line in the file that reads as follows <routeroverusb>0</routeroverusb> .  In that line change the 0 (zero) to 1 (one).  Save your changes.
  9. Back in your browser window. Click the Upload button.  Browse to the file you just saved and click Save or whatever. (I can’t remember exactly.)  This will write the changes to the MiFi configuration.
  10. Restart your MiFi.  (Power it off and then back on.

NOW you are done.  You should notice that plugging in the USB will NOT disable WiFi any longer.

Let me know if it works for you.


Jan 04 2010

Best ISO Mounting software for Windows 7

If you want to MOUNT ISO files in Windows 7 or any other version of Windows, for that matter, check out the Pismo File Mount Audit Package. This software is…

  • Extremely lightweight.
  • Fast and Easy to use.
  • Supports right-click of ISOs for mounting.  (Technofiles call this Windows Shell Integration.)
  • Extremely Reliable.
  • Free.

Let me know if you agree.


Oct 30 2009

How to update your gravatar

I was a little confused on how to update your stackoverflow gravatar. If you are editing your profile in and you click on Change Picture it takes you to That is all well and good. And uploading/creating a gravatar is easy. Then you link your new gravatar to an email address. So far so good.

At that point the linkage seems to happen auto-magically. What gives?

The key point is that if your stackoverflow email address in your profile IS THE SAME as the email address you setup at then linkage is automatic at that point.