Yesterday morning, I decided to roll out a new version of Connect the Dots in hopes that it would fix a bug due to Motorola’s Droid OTA update. In case you haven’t followed the story, Motorola released an update about two weeks ago that made my game nigh unplayable. This only affected Droid, and I don’t have a Droid, and so that made it very tricky to debug. I tried recruiting help from a Droid-owning cousin and even some of the kind people who emailed me bug reports, but the truth is, most folks only know how to install apps from the Market. It’s not intrinsically hard to install from an APK that someone emails you, but the Android team didn’t go out of their way to make it easy either. Must not be a key scenario.
I pushed out version 0.2.2, took a shower, and then downloaded the app to my Nexus One to make sure it was still happy. Running the app, I realized that I inadvertently left some experimental code in one of the classes, and suffice it to say that it led to suboptimal user experience. By this point, it was around 8:30am, and I need to be on campus for a prospective student fair by 9:15. I booted my development machine into Linux — my preferred development OS — only to find my screen would not go to a resolution above 640×480. I have no idea why, but Win 7 did this to me the previous day too, and I did not have any interest in figuring it out then. Reboot into Win 7, where I realize I did not have the ADT plugin installed for Eclipse. I run the installation, and suddenly I can no longer browse my svn repository. No repository, no code. I come very close to throwing anything I can find, then rush off to campus, hoping that I have everything I need on my office workstation.
(Also, it’s my sixth wedding anniversary, I haven’t even said “Happy Anniversary” to my wife, and I’m heading into a day at work, plus my bike is in the shop. Let’s say I was not in a good mood.)
Fortunately, my office workstation is all set up, so I update my working copy of Connect the Dots and start investigating. Sure enough, I had made a mistake when pulling from an old tag into the trunk, and some of the experimental junk code in the trunk had not been overwritten. Fortunately, all I had to do was copy all the ConnectTheDots.java changes from tag 0.2.1 into the copy in the trunk — version control FTW. I go to check to make sure this version is working correctly, only to find that I don’t have a micro-USB in my office so I cannot hardware test 0.2.3. Par for the course. It can’t be worse, and the emulator shows that at least the experimental code is gone, so 0.2.3 gets published.
That’s all the backstory. I show up at Cardinal Preview Day along with Josh, an amicable undergraduate who agreed to help me talk about the department. He’s kind enough to listen to my story while we get our complimentary coffee. We stand by the Computer Science table as prospective Ball State students meander around, learning about different departments.
The second group to stop by consisted of a young man and who I assume to be his parents. He had just been to Purdue to talk to their CS department, and so he and his parents had some very pertinent questions. I have fielded these questions before, so I was ready to discuss some of the qualitative differences between BSU CS and Purdue CS. This group stayed to talk for a while, and I think I counted three other family groups that joined the periphery of the discussion. I tried to address the first student’s questions while sharing other information over his shoulder to these other prospective students.
He asked about some of the work that was shown on the display behind me, so I went through a litany of some of the interesting student projects we have going on.When I mentioned that I am teaching HCI through Android application development, he stopped and asked if we had anything on the market. He reaches into his pocket and pulls out … you guessed it … a Motorola Droid.
YES I DO HAVE SOMETHING ON THE MARKET I’M SO GLAD YOU ASKED.
Actually, that’s what my brain said, but my mouth knew better. I explained that I had just uploaded an untested update that I had no idea whether it would fix a Droid-specific bug or not, and he was kind enough to oblige. I actually brushed off a real question or two while he went to download it. This was important. He opened the Market, did a search, downloaded the app, and presto! It’s working perfectly! Que alegria!
The rest of the day went on as expected, and mid-afternoon, I took a moment to check out the reviews on Connect the Dots to see if people had gotten the update. Recently, there had been a lot of comments on how it was broken on Droid. There were already four positive reviews thanking me for fixing the Droid bug, including this five-star review from “Eric”:
Met the developer at ball state, he’s a cs prof. This game is great!
Thanks, Eric, for brightening the day of a frustrated developer.
Postscript: Motorola’s update botched their handling of points as size specification. Points are defined as 1/72-inch, which is resolution-independent. It seems that after the update, my specification of the dots as 12pt radius was misinterpreted as 12-pixel (12px) radius. I changed the dimension specification to 24dp, where “dp” is “density-independent pixels”, which are pixels as if you are running at 160dpi. Note that both pt and dp are resolution and density independent. The change to dp did not change the behavior on my G1 running 1.6 or on my Nexus One running 2.1-update1, but it did fix the bug on Droid. Dear Motorola: it’s hard enough to support the variety of Android devices without your breaking spec.
Tags: Connect The Dots