Archive for the 'Tools' Category

Essential Tool List Reloaded

Here’s an update to my Essential Tool list that I published last year. I highlighted all of the additions and changes in red.

I’m in JP’s Nothin’ But NET course this week, so I’m guessing that I’ll have many new ones to add shortly. However, I’ll probably also be so worn out from the class that I won’t be able to publish it for a while. The prep work alone almost did me in…:-)

As always, any new suggestions are welcome.

Development

Code Analysis

Development Lifecycle

Debugging

Utility

MISC

Essential WebSites

Popularity: 2% [?]

The 10 Second Visual Studio Makeover

I blame it on being forced to sit through one too many episodes of my wife’s favorite TV show, What Not To Wear, but I finally became inspired to retire my old, tired-looking default Visual Studio color scheme in favor of one of the hipper ones with a black background.

It turned out to be much easier than I thought since several bloggers already went to the trouble of exporting and publishing their favorite Visual Studio settings files, which you can import by simply selecting the ‘Import and Export Settings’ menu option under the Tools menu.

My favorites are the ones that try to mimic the Vibrant Ink theme from TextMate, the popular Rails IDE for the Mac. Rob Connery posted a nice version, but I finally settled on the one published by John Lam here.

Here’s a screen shot of me perusing CodeCampServer, the most excellent sample app for the upcoming ASP.NET MVC in Action book from Manning and that’s being written by Jeffrey Palermo, Ben Scheirman, and Jimmy Bogard.

vs-theme-screenshot

Mostly I’m happy I made the switch because I think the new color schema is easier on my eye, but I also can’t help but notice that I feel slightly more positive towards my otherwise homely and rather bloated IDE.

I guess the moral of the story is that you should never underestimate the power of lipstick when confronted with a pig.

Popularity: 24% [?]

Don’t Be a Cotton-Headed-Ninny-Muggins When Copying Files

I just submitted a feature request to Microsoft.

I thought that the perhaps the Windows Explorer file copy dialog could be a bit more truthful and instead of displaying something like this whenever a user is trying to copy something over 100 MB in size through Windows Explorer…

windowscopydialog

…it should instead show something like this…

windowscopydialog_2

Just to be safe,  I sent the above mockup directly to Bill Gates. I know he doesn’t run things in Redmond anymore but I figured he probably still eats a half dozen alpha-geeks raw for breakfast every morning and could surely make this happen.

In the meantime, I highly recommend that you find some other utility to hold you over whenever you have to perform a large copy job.

I used RoboCopy this weekend when I was forced to do an enormous one over a slow and unreliable VPN and was pleasantly surprised by how fast and robust it was.

Not only did it magically pick up where it left off every time I reconnected after a network failure, but it was even smart enough to only copy over missing files when I reran it this morning after discovering a few files were missing when I did a BeyondCompare sanity check (I didn’t know about the /R switch). I was prepared for several more hours of copying but I was greeted with this after only about 30 seconds.

robocopy


Not too shabby.

Moreover, there are a ton of other switches that allow fine grained control over how file attributes and ACL’s are copied over.

Despite it being an unassuming command line utility that ships with the Windows Server 2003 Resource Kit Tools, RoboCopy would clearly make Windows Explorer its bitch if they ever had it out in a File Copy Death Match.

Of course this is but one of a million good file copy options. The ToolMeister himself wrote about his favorites here and his HanselFollowers provided dozens of other good options in the comment section.

Whatever you decide to use for your future large copy jobs, just don’t be a cotton-headed-ninny-muggins and rely on Windows Explorer.

Popularity: 18% [?]

Finding a Good Cheap Home for Side Projects with Unfuddle

If you’re looking for an external, non-open source home for your code or a light-weight, web-based project management tool, I highly recommend using Unfuddle.

Actually, up until recently I wasn’t all that crazy about this site. We had been using it at work for the last year as a project management tool for external clients who wanted to integrate with our web services and it seemed rather limited and clunky when compared to JIRA, the most excellent issue tracking tool we use internally (there were various internal constraints that prevented us from using JIRA externally).

It wasn’t really until I started searching for an external location for my DosPecesCreation repository, the project I’ve been working on in my spare time recently, that I gained a new appreciation for Unfuddle.

Most of the free options for externally hosted repositories out there seem to be limited to open source projects, but Unfuddle offers a private plan for free that provides an unlimited number of Subversion or Git repositories along with 1 associated project for issue tracking and access for 2 people.

By moving my code from a local repository to unfuddle, I was not only able to work from multiple computers without the headaches involved in using a tool like Live Sync (formerly FolderShare) in conjunction with SVN, but I was also able to offload much of the CSS and HTML work to my wife. Before she had been sending me email approximations of the changes she wanted, but with a quick 5 minute tutorial on TortoiseSVN along with some automated scripts and shortcuts to set up her Rails environment, she was able to make the changes directly herself.

Of course from my lovely stakeholder’s perspective, that that mostly just meant that I now had more time to work on the now rather large list of programming-related feature requests that she had thought up for version 2.0 of the site.

Luckily, Unfuddle has helped with this too. It dramatically increased my ability to organize and group tasks while adding only a minimal amount of overhead. The last thing I want when I am working on a project in my free time is anything remotely heavy weight in terms of process.

While this minimalist approach might not work as well in heavily regulated corporate environments, it fits beautifully for small, agile teams and especially for small 1-2 developer projects.

Here’s a screenshot of the current tickets broken down by milestones (which we decided to base upon 2 week release cycles). As you’ll notice, I’ll be spending some nights in the near future working on caching and implementing all of YSlow’s suggestions in order to speed up the site a bit.

DPC_Unfuddle

I had a sneaking suspicion that my nights would be busy for quite some time, but now thanks to Unfuddle I have a much clearer picture of the extent of my servitude.

Looks like I’ll have free time again sometime in the fall of 2014…Thanks unfuddle!

Popularity: 7% [?]

My Essential Tool List

My heart skipped a few beats the other day due to that awful hard drive clicking sound that usually precedes a hard disk failure.

So, in honor of the impending machine rebuild that I will likely face soon, I thought I would create my own essential tool list to document my current thoughts on the matter.

I am not so ambitious as to try to follow in the footsteps of Scott Hanselman with his famous ultimate tool list (which I still consult on a regular basis) and create an exhaustive survey of almost every good tool out there. Instead, I opted to only list my current tool of choice for a particular category and task.

I really like experimenting with new tools and am usually content to use any number of tools for a given task. However, I also try to simplify my life as much as possible by only keeping what I think is the best tool for a particular category of tasks installed on my computer at one time.

For example, I used to be a big fan of SlickRun and WinKey to launch my programs. But as soon as I discovered Launchy and AutoHotKey and came to the conclusion that they were better, I uninstalled SlickRun and WinKey lickety split. I still think they are both good tools, but who needs all the clutter…

I definitely welcome any suggestions for improvements to my current lineup.

Development

Code Analysis

Development Lifecycle

Debugging

Utility

MISC

Essential WebSites

Popularity: 16% [?]

On Proper Role of Mockup Tools and My New Tool Crush

In the spirit of LEAN and attempting to trim waste from existing processes, I’ve been pondering the optimal amount of effort to spend doing mockups lately.

By mockups, I just mean a quick and dirty approximation of what the GUI will look like once development is complete. Mockups are usually considered disposable artifacts that are done to validate requirements and draw out those inevitable changes earlier rather than later in order to minimize the impact to the project timeline and budget.

The amount of time and effort developers devote to doing mockups can vary greatly.

Some developers prefer quick and dirty drawings that can be done on the spur of the moment using napkins and whiteboards. Others use expensive graphic design tools or even code with simple events that use hard coded data to simulate dynamic functionality.

The trick is to waste the least amount of time working on non-production code while still giving customers an inexpensive way to play around with design, usability, and workflow.

Sometimes that is not so easy to do.

Generally, I favor the more Agile approach to developer artifacts and opt for the more lighter weight approaches whenever possible. If you use short iteration cycles (2-3 weeks) that end in user acceptance testing, communicate frequently with user, and use Test Driven Development, then making rapid changes to code shouldn’t be nearly as expensive to do as it used to be in the old Waterfall days. Under these circumstances, it just doesn’t make as much sense to spend much time on mockups.

I only have 2 problems:

  1. I’m no longer really working in an agile environment.
  2. I really suck at drawing on napkins and whiteboards.

Fortunately, my team just started using Balsamiq, an amazing light-weight, yet still professional looking, mockup tool built on Adobe Air.

It’s has a slick, web 2.0 style interface and within minutes I was able to build mockups that looked like these without even having to sludge through a tutorial first.

Sample mockup of Desktop App.

balsamiq_website

Sample mockup of website taken

balsamiq_deskop

See more samples here.

I especially like how the mockups purposefully look like sketches, which helps avoid the old ‘this-looks-so-real-that-you-must-almost-be-done’ syndrome that sometimes bites developers in the butt when they do too good of job on mockups.

This tool works especially well if you have Confluence or JIRA because it integrates seemlessly via a plugin.

Unfortunately, this is not an open source tool, but in my opinion the cost was well worth it. It was under $500 for a site Confluence license for our whole team, but it looks like you can also get a stand-alone desktop version for $80 a piece.

I highly recommend taking a few minutes to play with the online demo here.

Popularity: 11% [?]

Battling Password Chaos

Keeping track of my passwords has been a nagging problem for me for a long time, but I only recently got around to doing something about it.

I’m ashamed to admit it, but up until now I’ve relied on a few popular but extremely insecure strategies to manage my various online identities.

  1. Reusing passwords – The obvious danger here is that some script kiddie compromises a very insecure ‘mom and pop’ site that stores my password as plain text and then goes around to all the popular sites trying it out until he finds one that works. Even though I was foolish enough to take this risk for years, most sites have different password complexity rules. That meant that I still had to rely on several different userNames and passwords combinations, which made revisiting sites that I hadn’t been to in a while painful since I invariably had to try several times before hitting upon the right one.
  2. Forgot Password Email Feature – I don’t know about you, but I don’t normally access my yahoo email over SSL and many sites simply resend the password in plain text. This means that my password is visible to anyone with a strategically placed packet sniffer, like WireShark. It’s also annoying to have to wait for the email to be sent each time.
  3. Firefox Password Manager – I let Firefox remember passwords for me all the time and I recently discovered that this is hugely insecure. If you’ve never used the SIW (System Information for Windows) tool from gtopala.com, take 30 seconds to download it and then click on the secrets node under software. You will be greeted with all of your passwords in plain text from any site that you’ve allowed Firefox to remember for you. That means if anyone ever gets even momentary access to your computer, all of your online identities will be compromised. Not cool.
  4. Password protected Excel worksheet – Let’s face it. Microsoft Office security is a joke. I’ve tried this tool with file based dictionaries from this site on Excel 2003 documents and it has cracked the passwords almost instantly. I’ve tried this other tool with Office 2007 documents, which uses stronger encryption. It was pretty slow, but it eventually figured out the password as well.

Whether I’ve legitimately scared you or else you’re just sick of jumping through the “Forgot Password” hoops, I highly recommend trying KeePass. It is a open source password management tool that lets you store passwords securely and safely copy credentials into web forms.

KeePass lets you logon using a password/file combination for extra security and has several clipboard security measures built-in to prevent clipboard monitoring hacker tools from stealing the password while you’re pasting it into a website.

As far as encryption is concerned, the site boasts that even if you would use all computers in the world to attack one database, decrypting it would take longer than the age of the universe. That seems pretty secure to me…

If you’re still being lazy and insecure like I was, why not do something about it?

It only takes a few minutes to download and you will dramatically decrease your security related browsing frustrations as well as reduce your risk of identity theft.

Popularity: 14% [?]

Thinking of Breaking Away from the Blogging Herd?

Blogging communities like GeeksWithBlogs offer the advantage of a pre-established readership, free hosting, and no hassles when it comes to setting up and maintaining your blog.

Unfortunately, you also give up a lot of control when you become part of a large blogging community and ultimately miss out on the basic joys of tinkering. For the more capitalist minded among you, you also forgo the possibility of ever monetizing your blog.

If you are currently considering migrating your blog to your own domain or getting ready to start your own blog and aren’t sure which direction to go, here are a few things I would recommend based on my recent experience.

  1. Consider Using WordPress – SubText is a fine blogging engine, but I have been won over by the enormous number of plugins and themes available for WordPress. That translates into a lot more functionality as well as a more professional look and feel of your blog. I initially assumed that it would require a lot more technical investment on my part because it runs on PHP and mySQL, but so far I have been able to make a large number of customizations without ever having to refer to a tutorial due to the similarity of PHP and classic ASP as well as the intuitive design and naming conventions used by WordPress.
  2. Choose a Readable Theme – With over 1500 free themes to choose from, it’s easy to get distracted by designs that are flashy but make it difficult to accomplish the primary purpose of a blog, which is to facilitate reading content. Make sure the text is the main focus of your page and that it is in a clear font. Simpler is usually better.
  3. Expect Issues with Importing Old Blog Posts – Even though SubText provides a nice xml export feature (BlogML), the import process into WordPress was still a little bumpy. I found a plugin to help with the process, but there were still some issues with formatting and category names after the import process.
  4. Don’t Underestimate the Damage Done by WYSIWYG Editors (i.e. FckEditor) - WordPress lets you change themes effortlessly, but if you have pre-existing posts that were created with a WYSIWYG editor, then the chances are good that the HTML in your old posts is so polluted with inline tags that the CSS stylesheets in your fancy new theme won’t work properly. I’m still in the process of manually cleaning up the HTML from my old posts and it is a mind-numbingly tedious process that I’ll probably give up on before I finish.
  5. Get Sophisticated with Subscriber Statistics – SubText offers some rudimentary statistics on readers, but I took the opportunity to switch to Feedburner and install plugins for google analytics and WordPress.com Stats. I have been impressed with the level of reporting detail they offer when it comes to analyzing site traffic.
  6. Widgetize your Blog – What’s the fun of tinkering if you can’t go crazy with the plugins? Some of my favorites so far are Popularity Contest, ShareThis, KG Archives, Twitter Tools, Yet Another Related Posts Plugin, and Subscribe To Comments.
  7. Expect a drop in Subscribers – This is one of the advantages that a blogging community offers, so you can definitely expect to lose a few readers during the transition. In the case of GeeksWithBlogs, it didn’t help that I was removed from the main feed as soon as I put my notice up and had no ability to set up 301 redirects.
  8. Learn about SEO (Search Engine Optimizations) - If you want to make up for your drop in readership, then you’ll probably want to roll up your sleeves and learn a little about the black art of search engine optimization while setting up your blog. If you use WordPress, start by using these plugins: All in One SEO Pack, Jerome’s Keywords, Head META Description, Enforce www. Preference, Google Sitemap Generator, and Google Analytics plugin. If you want to get really serious about it, I hear Max from codesqueeze is planning on offering a 2 day advanced course on SEO later this year in exotic Fargo, ND.
  9. Test in multiple browsers/readers – I had to abandon my first theme completely after I realized it looked absolutely horrible in Internet Explorer. Unfortunately, I had already wasted a lot of time trying to customize it. I also forgot to retest my comment section functionality after installing the second theme and thus didn’t find out that it was broken until several days after going live.
  10. Find a Good FTP Client – the web interfaces supplied by hosting companies will work in a pinch, but you’ll really want a good FTP program. I am totally hooked on SmartFTP, which I discovered after consulting Scott Hanselman’s tool list.

Setting up your own blog is definitely not for everybody. If all you want to do is focus on writing good content and not worry about anything else, then I would recommend sticking with the blogging community site.

However, if you want to learn about all the gooey goodness that goes into making a blogging engine purr, then I would highly recommend the experience of setting up a blog on your own domain. So far I’m glad I did it.

Popularity: 12% [?]

A Couple Firefox Add-On Gems

This week I installed a few nifty Firefox Add-Ons, All-In-One-Gestures and IE Tab.

I tried All-In-One-Gestures after watching how fast a co-worker was able to navigate on the
web by using this Add-On. It allows you to right-click anywhere on a web page and move the mouse left to go backward or right to go for forward.

Navigating this way is definitely much faster than using the browser toolbar buttons and helps me stay in a better flow when trying to quickly scan oodles of google results.

For some reason I also really like the little red line affect that shows up on the page, but I’m easily impressed like that.

The other Add-On, IE Tab, lets you view how a web page will be displayed in Internet Explorer by simply clicking on a button at the bottom of the page. This came in handy when I was trying to figure out why a Cruise Control report generated by FxCop was not working. On a hunch, I toggled to IE and realized that the XSL had browser compatibility issues because it worked fine in IE. It was nice to be able to verify this by simply toggling view modes rather than having to start a different browser and then navigate to the page.

The moral of the story: Always pay attention to how your co-workers do things. I don’t think I ever met somebody who didn’t have at least one time saving tool or trick up their sleeves that I could steal to my great benefit. I like to think of every productivity enhancing tool or technique as a little investment. It may take a little “seed money” in terms of time and effort, but it is amazing how quickly the dividends begin to pay off so that my overall time savings quickly surpasses my initial investment.

Popularity: 9% [?]

EditPlus: A Kinder, Gentler Way To Build Nant Scripts

I’ve been working on Nant scripts this week and the experience has been much more enjoyable since a co-worker showed me how he used EditPlus (thanks Raoul). After a few quick customizations, I was able to not only get syntax highlighting for my build files but also execute Nant from within the tool and see the output from the bottom pane. Anything that decreases context switching when I have a gajillion windows open is pretty nifty in my book.

Here’s a picture of a build file with my custom button circled at the top and the nant output in the bottom pane..



Here are a list of tweaks that I made:

  • For syntax highlighting:

    1. Under the Document menu, go to ‘Change File Type’ and select XML.
  • To create a custom button that will execute the build you are editing:

    1. Select ‘UserToolbar’ under the View menu to get the user configurable buttons to appear.
    2. Click on the first button (the hammer icon) of the user toolbar that appears and choose ‘Configure User Tools’.
    3. On the dialog box that appears, click the ‘Add Tool’ button and select ‘Program’.
    4. For the Command field, navigate to the location of your Nant executable.
    5. For Argument field, enter the buildfile argument (-f:) and then choose ‘FileName’ from the drop down so that the name of the current build file you are editing will dynamically be sent as a command line parameter.
    6. For the Initial Directory textbox, choose ‘File Directory’ so that the path of the current file will be dynamically sent as a command line parameter.
  • To view the output from Nant in the bottom pane:
    1. Click on the ‘Capture Output’ checkbox from the previous dialog box.

In order to execute your Nant script, simply click on the first button that becomes enabled on the user toolbar. This is what the dialog box looks like for the above steps:

Happy Nant scripting!

Popularity: 4% [?]