Monday, March 17, 2014

Javascript Patterns Collection

A co-worker shared this link to a collection of Javascript patterns that is marvelous.  Had to share:

Wednesday, September 18, 2013

A realization in advance of VT Code Camp 5

This coming Saturday is our fifth Vermont Code Camp!

Those of us involved in the planning are running around engaged in our last minute preparations to ensure this event will be as successful (or more) than our prior 4 camps.  One of the things we do differently from other code camps is engage the whole tech community in our area.  Most code camps are centered on .NET and other Microsoft platforms - while there are BAR Camps and other events for different technology stacks. But Vermont having such a small population we've found that working with as many of the user groups as we can gets a much more robust set of speakers, exposure to different technologies and a wider sense of community.

So we usually provide a hand out listing the various technology user groups in the area.  Today as I was compiling the list I was struck by how vibrant the Vermont technology scene really is.  Here's the list (sorry for the spoiler VTCC5 campers).  It's a page and a half of groups and events that demonstrate Vermont has it going on!

I'm moving onto the next task to prepare for this weekend - but I'm very happy to be part of such a wonderful community.

Oh, by the way, have you registered for VT Code Camp yet?

Wednesday, July 17, 2013

Slides from my July 15 presentation to the VT .NET user group

Monday I presented a talk to the VT .NET user group titled "Using the Decorator Design Pattern to Address Cross-Cutting Concerns".  The slides for this presentation are now available on SlideShare at  I'm still trying to figure out how to share the source code through that site, though.


I've uploaded a video of the presentation to YouTube:

Thursday, July 11, 2013

Career advice from someone who got lucky

I've got a secret.

It's not a bad secret, I didn't kill a hobo or anything.  

And it's not a particularly well kept secret - lots of folks who know me have heard about it.  

Although I've been a software development professional for nearly 20 years - my degree was in History.

Why am I going public with this confession?  Because one of the things which has happened in the course of my software development career is I'm occasionally hit up for career advice - often from people who have a stronger foundation than I did starting off.  I'm always happy to oblige with whatever meager insights I can offer; but I sometimes feel I need to qualify it with the fact I fell into this career by happenstance.  I'm very glad I did, too, because I've enjoyed myself and had a bit of success in the process.

So when I got an email recently from a member of our local user group asking what skills have helped me my career I thought it would be a good topic to cover as I rediscover my blog.

It's a pretty open ended question when you think about it.  One I would probably better be able to address in a conversation rather than an blog post.  But there are a few things that I can put down which might help him out.
The first thing that I thought of was a post I did several years ago that covers a related topic, staying current.  The post is  It's a little dated, obviously, but staying current from a technology standpoint is very important.  One update from the original post, too, is my participation in the user group directly lead to my current job.  The few presentations I did combined with actively asking questions during others' presentations raised my visibility in the local development community.  My current employer knew about me before I knew about them and that gave me an edge in the job hunt.  Local user groups are also a key opportunity to build and maintain your professional network.

Another thing I believe is nothing beats experience.  Getting a programming position if you are not already doing it professionally - after college or during a career change - can be challenging.  You're up against a lot of candidates.  One way to differentiate yourself is to have a history of actually coding.  There's a bit of a chicken and egg issue there, though; how do you get meaningful programming experience if you're not already in a position?  During my tenure as a hiring manager I would advise inexperienced candidates that one approach to that dilemma would be to begin contributing to an open source project.  It will expose you to programming skills and techniques that you won't get from books or many tutorials.  Once your contributions are actually folded into the project you'll be able to cite those contributions to a potential employer.  So go to or other open source option and get coding!

Finally, what worked for me, and this is definitely because of the non-traditional trajectory my career took, was to be patient and not expect to be programming straight away.  The reason I said I have nearly 20 years as a "software development professional" and not as a "programmer" is because I started out doing customer support for a software company, transitioned to being a software analyst, transitioned to a developer analyst and then finally into a full-fledged programmer.  For me, the process took about 3 years but it was worth it.  My understanding of the software development life cycle is thorough and based on experience.

So now you know my secret.  It's just between us, though, because my other secret is nobody really reads this blog. :-)

I'm back in the technical saddle

After a 2 year stint as a software development manager I've decided to focus my career on a technical path again.  While I had a fair amount of success in the management role I never got the same level of job satisfaction that I do from working on code and having it run.  A podcast I listen to occasionally, Manager Tools, described the difference between being an individual contributor and a manager as being like the difference between volcanic eruptions and tectonic plate movements.

So I'm back as a senior engineer on the team I managed.  ASP.NET MVC4, SQL Server 2008R2, jQuery, unit testing... Lots of fodder for blog posts and getting back into doing presentations at user group meetings.

I'm definitely more of a volcano kind of guy.

Thursday, April 7, 2011

Input on mobile devices - The long awaited follow up

Remember my last post?  I said I was going to give the Swype beta a try?  That was back in January.  I'm still using it and can't see a reason not to continue with it.  It's a very good blend of gesture based input with the keyboard layout I expect.  That's not saying it's perfect.  I still sometimes struggle with things like entering times because including the colon (:) triggers the auto complete.  I also wish entering "your" would allow me to select "you're" from the options of what you might have meant.  But these are quibbles and on the whole I'm very happy.

I thought you might like to know.

Tuesday, January 18, 2011

Input on mobile devices

Since the last time I posted (I know, way too long ago) I've changed my phone from a Palm Treo 800w (Windows Mobile 6) to a HTC EVO (Android).  I've got to say I love my new phone.  It does everything I want it to do seamlessly.  This includes managing my Google calendar and Gmail, Twitter, Facebook, etc.

One of the things I was apprehensive about in making the switch, though, was the lack of a physical keyboard.  I've always benefited from the tactile response you get from actual buttons.  For example, I drive a first generation Prius.  In my car the radio station presets are exposed as "buttons" on the center display screen - so no physical buttons.  To change the radio station I have to press the "Audio" button on the dashboard (that's a physical button) then look on the screen to press the preset station "button" to change the station.

Which means taking my eyes off the road.

While driving.

So I've learned to hate the on-screen buttons (and to content myself with one radio station that I rarely switch from). What I didn't anticipate with the phone, however, was the fun I could have experimenting with different input methods you get when the physical keyboard is eliminated.

The EVO comes with a standard on-screen QWERTY keyboard.  There are options for having the phone vibrate for each key press (do you call it a key press when there are no keys?) to provide that tactile response I mentioned (although, again, there's no way to determine which "key" you're on without looking at the screen).

And I was merrily using that when one of my co-workers, Pat, directed me to 8Pen.  Now I could try to describe 8Pen, but really you should go to their web site and watch the introductory video.  Go ahead and watch it, I'll wait...

Pretty cool, right?  I thought they made a compelling case for ditching the QWERTY keyboard.  So I tried it. I installed 8Pen and made a decision to go cold turkey.  I knew there would be a learning curve and it might take a while to adapt.  It has a number of improvements over the default keyboard. For example, the auto-complete functionality is much than the default.  However, after a month without using the default keyboard I decided to ditch 8Pen.  It's not that it doesn't work as advertised - it does.  But even after a month I was still being slowed down trying to find certain letters.

Why was that?  Why am I measurably faster using a QWERTY keyboard?  I think the answer is explained by a blog post I read several years ago.  Back when I still read the JoelOnSoftware blog this post resonated with me.  The central point that I took from it is users have a positive or negative experience with software depending on how that software conforms to their previous experiences.  That bias is called the user model.  Well, after 25+ years of typing on QWERTY keyboards I'm really efficient at locating letters in that arrangement.  Additionally, because I continued to use a QWERTY keyboard throughout the day on my laptop and desktop my assimilation of the 8Pen layout was constantly being subverted.  So I cried "uncle."

The good news is that Pat came to my rescue with a link to the Swype beta.  It has the benefit of the QWERTY layout while embracing a gesture based style of input.  It's been a week and so far I'm really enjoying it.  It's not perfect either, of course, but I'm willing to at least give it a month like I did 8Pen.

Stay tuned.