Archive for August, 2009

The Best Keyboard Shortcut System

Monday, August 31st, 2009

I use keyboard shortcuts constantly, for everything. I believe it is fair to say that I am obsessed with anything that can save me a few seconds working. I learned this habit from of all things, video games. Even if you don’t play video games you need only to look at a gamers hands while they are playing and you can see the unbelievable speed at which actions can take place. Literally hundreds of button presses per minute are possible.

At my old company, SolidWorks, I had prodded the UI team to out the old shortcut system and bring in a new version for two reasons. First, the old shortcut system was classic clunkiness. I won’t get into it, but suffice it to say it was one of the worst implementations I could imagine. Second, the existing shortcuts were not intuitive and were really a mishmash of commands. The SolidWorks application has literally hundreds of commands and is one of the most complex desktop applications you could imagine. Even the most experienced users can’t know everything that is possible.

So it was with great pleasure when a usability project opened to maximize the use of shortcuts. The end result is the best shortcut management system I have seen devised. You can save yourself a lot of time by learning from their system. I won’t take all the credit for this implementation – PD did an excellent job of setting early specifications and I remember that the developer did a fantastic job completing this project on time and never pushed back on making UI changes. It was truly one of the best projects I got to work on. (more…)

My User Interface Philosophy

Monday, August 31st, 2009

I have a penchant for designing UI systems that are simple and straightforward. Too often systems become overcomplicated in an effort to allow any user to do anything. As a developer and experienced application end user I appreciate the ability to unlock all the power of an application, but not at the expense of usability. There is a dynamic required to balance your goals of creating an easy to use application vs providing all necessary features, and yet still making those features discoverable. My modus operandi is to:

  • Identify what the majority of users will be using the application for
  • Find what features are most important to them
  • Prototype a UI for them

It is important to do this first because as you yourself become a “power user” of your application you are going to forget what is intuitive to a new individual and what is not intuitive. After this initial design phase is complete I will go back and decide what power users, admin users, and the like will require from my application.

  • How will they be using the application?
  • What is the best way to integrate these features into the UI without disturbing the paradigm established for new users?
  • How can I keep things simple but powerful?

One of my favorite examples of “overthinking” a product is demonstrated by a marketing video for the “Microsoft iPod.” The ideas expressed are exactly the same things you should be battling as a developer and you can see how overthinking your objective can cause you to get carried away.

What’s an Urbanathlon?

Wednesday, August 26th, 2009

Wait, a what? An urbanathlon? What is that? – I get those questions a lot when I tell people I am training for a race come October. I was inspired to enter by my friend Dan Corbera who participates in marathons, triathlons and more. He has a competitive spirit that is inspirational – it certainly has to be considering what he got me into.

Check out these followup articles!
Urbanathlon Training Guide
My Race Day Experience

Dan got me started in racing back around New Year’s Day 2009 that when he asked if I wanted to run in the Cape Cod half-marathon with him. Well I hadn’t run in two years and the race was six weeks away… but I figured worse comes to worse I don’t run. The old competitive side of me didn’t want to participate if I couldn’t finish without walking or stopping.

And so training began. My first time out things were bad. It was January and the frigid New England air seared my nose and mouth as I breathed in and out. “Hills” that seemed to be no more than sloping ground turned my quads to mush and the real hills would make my glutes spasm. I only made it a mile and half that day. Things were not looking good for six weeks out.

But I persevered and gradually my runs got longer and longer. My quads got strong and I stopped having glute spasms. I was running in shorts and a sweatshirt in twenty degree weather with an icy wind and there was nothing to it. The week before the race I finished my first ten miler in 100 minutes and it was awesome.

Race day is here and I’m standing by myself at the ten minute mile section of the starting line. Dan is way up at the front by the seven minute milers. All around me runners are packed tight and nervously champing at the bit to get started. They offer each other reassuring words and I am beginning to wonder if I should have picked a friend that runs my pace. It seems like I’m the only solitary runner here. Am I dressed appropriately? I’m wearing my shorts, sweatshirt and old running shoes with holes in them. Everyone else has hats, gloves, long pants, digital watches and “goo.” There isn’t much time to dwell on it though since the starting gun fires and people make mooing noises as we herd across the start line.

Through all the hours of training by myself there is one thing I didn’t expect out of the race. It was fun. I mean really fun. It was exciting to have so many people running with you, to have the crowds cheering you on and to know that you are accomplishing a goal you had trained for. In my mind the race had started out as an accomplishment, a box to tick, I will have completed a half-marathon. The reality was that the fun and excitement pushed me to an all time best run. I felt great and it showed when I finished in a hair over two hours with energy to burn. A nine and a half minute mile over thirteen miles in six weeks. Now that is something I was proud of.

Oh right… you are still wondering what an Urbanathlon is right?

Cape Cod Half Marathon

10.5 Mile Run

Stutter Step Small Tires and Climb Over Monster Truck Tires

Monkey Bars

Marine Hurdles

Fifty Story Stair Climb Through Stadium

Taxi Cab Hurdle

The Wall

So needless to say I have actually started training much further in advance and I expect to kick some butt!

Getting Started With Windows Voice Recognition

Tuesday, August 25th, 2009

This article will quickly get you up and running with Windows Voice Recognition by using the .NET library System.Speech. After completing these steps you will be able to translate audio files or speech into your microphone. Examples are in C#.

  1. Add references to the System.Speech namespace
  2. Create a SpeechRecognition object
  3. Setup event handlers for your audio source
  4. Load a grammar libary
  5. Set audio parameters
  6. Scan the audio and output word recognition

(more…)

Good Stuff

Friday, August 21st, 2009

I have to say that nothing feels better than to be vetted by someone who you greatly admire. And so it seems very appropriate that following my post What Should An Online Resume Contain that my philosphy should be endorsed by one of my favorite online publications. I have read Arstechnica for years and the day after I posted they released an article on how irresponsible internet postings have led to employers turning down candidates. The following excerpt embodies what I want my online portfolio to convey:

On the other hand, some candidates are doing a good job of presenting their professional side when posting online. Half of those who screened candidates via their social networking profiles said that they got a good feel for the person’s personality and fit within the organization. Other employers said that they found the profiles supported the candidates’ professional qualifications or that they discovered how creative the candidate was. Solid communication skills, evidence of well-roundedness, and other people’s good references (we assume this one came from LinkedIn) helped boost people’s credentials, too.

-Arstechnica.com

As I mentioned in my previous article, your typical entryway to a job can still be a simple resume and cover letter, but if your talents strike the fancy of your employer then it behooves you to have an online portfolio that showcases who you are, what you have accomplished and why you would make a great team member.

What Should An Online Resume Contain

Thursday, August 20th, 2009

I started this website to help me find a new job. As part of this endeavor I have sent out the web address to my colleagues, family and friends. The result has of course been helpful feedback on ways to improve my resume. Most of the suggestions fall into two categories.  First,  reducing the content to a single printed page and cutting out things like my tutoring and soccer coaching. Second, that my resume seems very general and I need to more specifically talk about what I want to be doing. These are good suggestions, and are certainly something I considered heavily when creating the site.

So why not implement these changes? I struggled with this and I think that part of the reason is that there is little precedent currently available for an online resume. There are your standard job posting sites, but I have the freedom and ability to create a site that does more than just display a list of facts in the shortest form possible.   (more…)

Text Slideshow QuickVersion

Wednesday, August 19th, 2009

1. Cut and paste the first block of code into your html. In your body onload event call CycleQuotes().
2. Cut and paste the javascript into your page or into a .js file
3. Provide your own image files. I use eight of them to cover the four buttons and the four hover states.

<!-- Previous, Pause, Play, Next images -->
<div id="playercontrols">
<img src="previous.png" alt="Previous" onclick="PrevClick()" onmouseover="this.src='previoushover.png'" onmouseout="this.src='previous.png'" />
<img id="pauseimg" src="pause.png" alt="Pause" onclick="PausePlayClick(false)" onmouseover="this.src='pausehover.png'" onmouseout="this.src='pause.png'" />
<img id="playimg" src="play.png" alt="Play" style="display: none;" onclick="PausePlayClick(true)" onmouseover="this.src='playhover.png'" onmouseout="this.src='play.png'" />
<img src="next.png" alt="Next" onclick="NextClick()" onmouseover="this.src='nexthover.png'" onmouseout="this.src='next.png'" />
</div>

<div id="contentContainer">
	<div id="content0" style="display: none;">Text</div>
	<div id="content0" style="display: none;">Slideshow</div>
	<div id="content0" style="display: none;">With</div>
	<div id="content0" style="display: none;">Fades</div>
</div> 

(more…)

Some More History

Tuesday, August 11th, 2009

I thought I would delve a bit further into how I ended up in software development in the first place. I believe the first time I did work on a project was in middle school. My older brother’s friend Anthony came over to use our computer for a computer science project. He was older, cool, a kick ass soccer player and most certainly someone I looked up to at the time.

The project was to create a website for that new thing called “the internet.”  In typical younger brother and wanting to be cool fashion I stuck my nose in while he explained the project to my brother. They “took a break” from never really starting to watch MTV (music videos at the time of course) and I snuck onto the computer and proceeded to do his homework. I was genuinely interested in how this whole web thing worked and I wanted to take on the challenge of a homework assignment four grades above my level. I mucked around in HTML for a few hours and made a pretty badass website for the time (1995ish). As I recall it most certainly involved a heavily gradient background, a bunch of pictures with white backgrounds, some hyperlinks in flashing red and enormous bolded text.
(more…)

Text Slideshow with Fades (or any content with fades)

Sunday, August 9th, 2009

Quick Version
For my online resume I decided to create a slideshow of recommendations from my coworkers. I wanted this display to be unobtrusive and to fade in and out so that it does not intrude on the visitor’s experience. I included player controls so that those interested in the quotes can toggle through them at their own pace or halt it completely if the animation is annoying. I checked out a few slideshow examples but all of them seemed to lack all the features I wanted. Fade transitions, pause/play/next/previous buttons, and most importantly grabbing my content directly from my page. I don’t want to have a ton of strings hardcoded into my javascript file. We should be using best practices and leaving the content on the page and the javascript just handles manipulation of it. So here is the code and it is of course good for any content, not just quotes.
(more…)

Introduction

Sunday, August 9th, 2009

Call me Tom. I graduated in 2002 from the University of Rochester with a degree in English and a focus on creative writing. I took a wide variety of courses covering Quantum Physics, Java, Chemistry, Psychology of Sexuality (a course that should be required), Tai-Chi, Swing Dance, Introduction to Violin/Cello/Bass, Multidimensional Calculus, Linear Algebra, and of course a smattering of english classes that ranged from old english (very old) to Shakespeare to Victorian to Modern and so on. I also was a writing tutor for two years and worked with dozens of students to improve their writing skills.
(more…)