03 Feb

Don’t Be Late for Scrum

We all know the importance of being on time for meetings, and since scrum is designed to be a short meeting, if you’re 5 minutes late for scrum you can miss a third to half of it.

I’m a morning person, so I find myself most focused and most productive before lunch.  That often means that when scrum rolls around at 9:30 I can be totally lost in thought with no concept of time.  In other words I have a tendency towards running late. 
The obvious thing to do is to set a reminder, but I usually run my sound through my headphones so if I’m not wearing them there’s a good chance that reminder is just going to pop up and not be seen.  When I worked in an office I’d see the other developers moving out of the corner of my eye and realize what time it was, no problem.

Since I’ve been working from home we’ve been having scrum over Skype.  Our leader starts a group call and thanks to Skype’s ability to ring through the speakers while using my headset for communication I was never late.

That worked great, but we recently moved our scrums to a Google Hangout.  On the plus side, we’re all doing video (not sure why we didn’t with Skype) and having a blast with Google Effects.  The downside of course is that we need to “dial-in” to every day.

I realized immediately that this left me with the potential to be late or even miss scrum, here’s the solution I came up with.  I’m using Task Schedule that is built into Windows to launch Chrome and navigate to our Scrum hangout.  Just create a Basic Task, set the schedule, choose Launch a Program for Action.  Select the path to your favorite browser for the Program, and put the URL in the Add arguments field.

Now every morning when scrum starts Chrome opens a new tab and brings up the Scrum hangout.  All I need to do is click the “Join” button.

06 Jan

New Year’s Resolutions 2014

Here’s my list of New Year’s Resolutions for 2014:

Blog More

Historically, I only wrote technical posts whenever I came across something really novel and wasn’t so specific that I didn’t think anyone else can use it.  This year I’m going to loosen my standards for a technical blog posts.  That means there should be more posts, but some of them might just be a different spin on things that others have covered, or things that are really specific and may not be as useful to a broad audience.

Find more ways to share knowledge

For most of last year I shared an office with a very green developer.  Helping him learn the ropes has also been a great learning experience for myself.  Having to explain some concepts I take for granted to a beginner stretched me in ways I didn’t know I needed to be stretched.  I’d like to explore other ways to share what I have learned.  I have already volunteered to do a short talk on T4 at my local users group (after the main talk), hopefully I’ll be invited back after that.  I’m also going to keep a lookout local volunteer opportunities for things like Hour of Code


I’ve worked with and met a lot of great people, but many of them I haven’t spoken with in years.  My goal is to reach out to someone twice  a week either through email or phone.

Personal Stuff

I also have a few resolutions on a more personal level:

Go to bed earlier – I’m an early riser by nature, and every thing in life is easier when I’m well rested

Lose weight – It’s the cliche New Year’s resolution I know, but I lost a bunch of weight before my youngest son was born last April and have packed on the pounds since then.  I make bad food related decision when I’m tired and a new baby isn’t anything if it isn’t tiring.  I’d like to lose 40 pounds and keep it off for good.  No crazy diet here, more of a lifestyle change.  Just eating a little less and working out a little more.  I should be able to lose all of that weight by the end of 2014.


20 Aug

I’m Back

After a long hiatus I’m going to start blogging again.

“Where have you been?” you might ask.  Well, I’ve had a few big changes in my life this past year.  

First, I took a new job at Winxnet, a software consulting and IT management company based in Portland, Maine.  It’s been a big switch.  The first contract I was assigned to was an enormous SharePoint project. Being a WPF developer, the switch to web development really stretched me, and the Sharepoint part was just an extra wrench thrown in the works.  I was learning a lot of things that most web and/or SharePoint developers would probably consider pretty basic.  It’s always fun getting stretched like that, but it left no time or energy for blogging.

Second, in April my second child was born.  Anyone with kids knows that I get a free pass for a few months for that, no questions asked.

Third, I’ve started another side project (no public details yet).  This has eaten up a bunch of time the last couple of months, but it has also got my gears turning with ideas for blog posts.

Oh, and one more thing.  My install of WordPress died.  I can no longer log into the admin account.  Rather than spend the time trying to solve the underlying issue I thought I’d check some other CMSs.  I’ll be migrating my old posts over the next week, then I’ll actually create a few new techy posts.

26 Sep

Career Goals

I’ve had a few people ask me over the last few weeks what my long term career goals are.  The first time someone asked me, it caught me a little off guard.  It’s not a question I get asked a lot, and it’s not something I’ve really given any thought to in the last few years.  My answer was that I didn’t have any career goals, that I was happy doing what I was doing.

Do I really not have any career goals?

The more times I was asked about my career goals the more I became embarrassed by my answer.  Why didn’t I have any career goals?  Shouldn’t I have a goal?  Without a goal aren’t I just drifting through life?  Then it finally occurred to me, I do have a career goal.  It just doesn’t involve moving up the corporate ladder.  Or down, or across. 

My goals* are:

  1. Continue writing code
  2. Continue learning and improving
  3. Continue working with current technology

If I stop with #2, then I’ve failed at #3 and should probably stop with #1 for the sake of anyone who might have to maintain my code.

*I know these are not great goals as they are not measurable, but that’s as close as I can get to good goals for my career.  If you have suggestions for how I might clarify them please leave a comment.

28 Aug

Why I hate performing in front of friends and family*

*Not a technical blog, you’ve been warned.

Over this last weekend we had our neighborhood block party.  This year, my contribution was to plan the live music portion of the event.  For this I was able to get 2 solo acts and a 3 piece band to commit to playing for “all the hot dogs they could eat.” 

In the end one of the solo acts and the band couldn’t make it due to family emergencies.  To fill the gap I decided I’d play a few tunes even though I previously decided to leave myself out of the show.  I told myself it was because I hadn’t been practicing for a year of so, but there was more to it.

I enjoy playing music.  I like going down to an open mic with some friends and belting out a couple of tunes, and I always had fun performing in the band I was in a few years back, but I was really dreading playing music for my neighbors.  It wasn’t the crowd, and it wasn’t my neighbors friends, it was my neighbors that I didn’t want to play in front of.

It’s not that my neighbors are judgmental, mean, or anything like that.  Quite the opposite, they are all great people and  I knew the would be supportive even if I bombed.  I couldn’t ask for better neighbors.

So why did I dread playing for them when I was perfectly comfortable going into a bar and playing for a bunch of strangers who always left an awkward silence where the polite applause are supposed to go?

There’s 3 reasons I hate playing for friends and family:

  1. I respect their opinions.  If I didn’t respect their opinions, they wouldn’t really be my friends would they.
  2. I don’t really trust their compliments.  I know that if I bomb they probably won’t tell me, they’ll focus on the positive unless I press them for an honest opinion.  I did that once, it confirmed what I already knew but it really sucked to hear it from someone I respected.
  3. I’m going to see them again and again and again.  The nature of strangers is that you rarely, if ever, see them again.

So there it is, that’s why I hate performing for friends and family.

07 Jun

Typing Speed

So, I read one blog by Steve Yegge linked from CodePoject about typing speed (which is a great read if you have the time).  Then Steve Smith tweeted his blog post on the same subject, which was in response to Jeff Atwood’s post.  Apparently all 3 articles are from 2008, but I read them like they were news today.

Was that enough name dropping?

I read those 3 articles, and all 3 have the same premise.  You should be a fast efficient typist if you write code for a living.  They go almost as far as saying it’s the most important skill.  I don’t think that’s true, but being a better typist will most likely make you a better programmer.  If I code type as fast as I thought, I could either put out a bunch more code per day, or I could put out the same amount of code, just better thought out.  Or some combination in the middle – a little more slightly better thought out code.

They also linked to this typing speed test.  Steve Smith and Jeff Atwood were both in the mid 80′s and Steve Yegge claims 120 WPM.  I have no reason to doubt Mr. Yegge, but his measurement may be from typing his own thoughts whereas the rest of us used the typing speed test where you are copying text and I think there’s quite a difference.  I suspect Steve Smith and Jeff Atwood would easily put out 100+ WPM of their own thoughts.

Of course I tested myself and came up ~55 WPM.  I did the test 3 times at 54, 56 and 54 WPM.  Each test had between 1 and 3 errors.  I was not impressed with my performance (partly why I took the test 3 times), so I’ve set a goal to double my speed on that test.

My plan is this:  I’m going to switch to Dvorak layout for ~10-15 minutes a day and practice with some sort of online typing tutor.  Once I have the keyboard memorized and I’m typing >30 WPM, I’m going to add a few hours a day in Dvorak, the rest in Qwerty.  Once I hit >50 WPM, I’ll switch to full-time Dvorak, and continue with the typing tutors for the 10-15 minutes per day until I reach 110 WPM.

Through this I’m going to try to update here every week or two to report progress.

30 May

How I got started as a developer

A response to a request for everyone to share how they got started down the road to become software developer.

I wrote my first code on a Kaypro II.  My mother bought it around 1987, and there were 2 things you could do on it.  You could use the word processor (I think it was WordStar) or you could program in some variant of BASIC.  I did a little of both.

My mother had a handful of programming books left over from getting her Associates degree a few years earlier, and I would copy some of the sample applications, or try to do some of the problems in some of the chapters.  Between the things the books left out and the bugs I added while hunting and pecking the code into the computer I had plenty of debugging to do.  In some ways I wish I had some of that code, but mostly I’m glad the evidence has been destroyed.

Next my mother bought an IBM pc running Windows.  My recollection was 3.1, but I’m almost certain I got it before 1992 so who knows?  I don’t remember how much ram it had, maybe a couple of MB?  I do remember the disk was 25mb.

The first challenge with that was to try to get this one flight simulator running on it.  I spent weeks modifying the autoexec.bat and config.sys on a boot disk to loaded the absolute bare minimum into memory and get every configured just right to be able that flight sim.  Then I spent countless hours playing purchased and/or pirated games and playing in Q-Basic.

Around that same time I got a programmable calculator for my high school math class.  I started writing programs to do the math problems for me.  I still had to show the work, but I could be certain the answer was correct.  I also created a simple black jack game and a two player howitzer game with random landscape and wind.

All that and I chose sports medicine as my major in college?  Yup.  How I got from sport medicine back to software development would be a whole post in itself.

So really, it was my Mom who got me started down this path.  She not only bought the computers, but she taught me how to debug.  How to work through the problems.  How to go step by step until you see where things where things go wrong.  Skills I still use every day.

Thanks Mom.

What’s your story?

22 May

App Reviews

A quick word about app reviews:

  • Most people don’t review.  I average about 1000 ad impressions a day.  In other words users are playing 1000 minutes a day.  So there are people who are using Chess Tactics but are not reviewing it.  There have been about 1500 downloads, and only 8 reviews in the US.
  • Most reviews are not that helpful.  I have a handful of reviews that are on the low-end with no indication about what they don’t like.  Either they left it blank or just state they didn’t like it.  One Australian rated it a 1 star and commented that he wished he could give it zero stars.
  • Fixing complaints doesn’t necessarily raise your rating.  There were a couple of reviews that complained about having time factored into the scoring.  I put out an update that allowed them the option to remove the time factor from the scoring.  One reviewer did re-rate the app, but they left the negative part of the review, and just added that it was fixed at the end.  The other reviewer hasn’t changed his rating yet.
  • It’s hard not to take it personally.  I worked hard on the app in my and the negative feedback is frustrating.  I just have to keep in mind that even wildly successful products have a handful of people who think it’s crap.  Just take a look at the review for any product on Amazon.

What I really wish was available through the review system was a way to reach out to those who did review the app, or respond to reviews.  How nice would it be to attach a comment to a low review that disliked the time factor is scoring to let them and the world know that I took their feedback and fixed their issue.  Or maybe it would be nice to email the user, but I understand that could open up an opportunity for abusing negative voters.

I did include a feedback email address in my app, and I have received responses from 2 users.  One had a question about a particular problem, and the other suggested an option to keep the phone from sleeping (coming next release).  I really enjoyed those interactions, and I hope there are more.

Finally, I hope this experience changes the way I review apps and give feedback.  If it’s at all possible I will give specific feedback in the review.  I’ll also try to follow-up with an email so they can let me know if they change what I didn’t like about an app, so that I can adjust my review.

20 May

Minimum Requirements

The Visual Studio team just announced that the Visual Studio 11 will have the same hardware requirements as Visual Studio 2010.  So, we’re getting more features, they’ve improved the performance throughout (yes, I am using it and the differences are obvious in places), and we could run it on yesterdays hardware, but we’re likely to have upgraded since then so faster still.

This seems to be a trend at Microsoft, or at least I hope it is.  Earlier this year (or was it at Build last September) they announced that they had improved the performance and memory usage in Window 8 to the point where it was faster than Windows 7, used less memory and that the minimum requirements wouldn’t change from the Windows 7 minimums.

For so many years improvements in hardware were negated by bloat in software.  If this trend continues we should be computing noticeably faster in a few years.  Combine that with Microsoft’s push around asynchronous programming and the user experience a few years from now could be vastly better than it is today.

Of course Microsoft can only do so much, it’s now up to the world 3rd party and in-house developers to take up the challenge and write software that uses less memory, performs better and runs all long running processes asynchronously.  Microsoft targeted processes that take longer than 50 ms, I might raise my target a bit above that, but I am accepting the challenge.

12 May

Mobile Analytics

In my previous post I complained about the 6 day delay in getting download number from Microsoft.  Since then I have done a little bit of research into other ways of getting that information in a more timely manner.  I found two good options MTIKS and Flurry.  They both provide much more information than I was looking for from Microsoft, and I will be using one or the other unless I find something better.

They are both very easy to use.  All you need to do is add a reference to their dll, then add one line of code to Application_Launching and Application_Activated to tell them to start a session, and another line to Application_Deactivated and Application_Closing to tell them to end the session.

They both also allow you to report exceptions and events.  This would allow me to see how many problems users are playing, or what percentage of users turn off time based scoring in Chess Tactics.

Of course each has their strength and weakness.


MTIKS biggest strength is that it can detect pirated apps so you can see how big of a problem pirated apps are for you.  My apps are all free at this point, so I’m not worried about pirates, and this feature isn’t a great selling point for me.

The other thing I really like about MTIKS was that it was real time (or very close to it).  I could start up a session in the emulator, click refresh on their site and see the session.

The one problem I did see with MTIKS is in their exception handling.  The stack trace gets overwritten if you log the error for Application_UnhandledException.  I contacted them about this and they responded quickly and are looking into the problem.  I’ll update this when they fix it.


Flurry looks like it does a great job on the reporting side.  They allow you to compare your app to the aggregate data of other apps collecting the same info.  It lets you segment your reporting based on your users age, gender, language, location and even custom events (user who clicked the review this app button for example).  If you’re not collecting this information, Flurry will make some estimates for you.

The downside here is that Flurry runs on a about a 1 hour delay.  I of course would prefer instant gratification, but 1 hour isn’t too long to wait.  Right now I’m facing a 6 day delay in download numbers and a 3 day delay in exception reporting, so one hour seems totally resonable.