Posts filed under 'Software Development'
I just did a quick Google search, trying to find an existing Excel spreadsheet template to do sprint burndowns for Scrum. I badly mistyped, and ended up requesting Google do a search on ‘excel spritn burdown chart’. Google couldn’t find anything on that search request (imagine that), but did offer: Did you mean: excel sprint burndown chart .
Not too long ago, I considered applying at Google. They’re now up in Pittsburgh, we’ve got family up there, and wouldn’t it be interesting to get to work at a company that’s just become such a hallmark of our times. I ended up deciding that, one, we weren’t really all THAT interested in moving to Pittsburgh, and also that I liked enjoying the idea of being able to say I worked at Google more than I enjoyed the practicalities of interviewing and working there. Frankly, I’m not sure I’m smart enough to work there, and I’d rather not prove it to myself (or worse, have it proved to me). (Even worse, somehow, would be the idea that you DON’T have to be smart to work there, that all of the things that they’ve built have been built using generally good folks like me who just somehow create technical magic.)
Anyway, Google’s intuition of my real search term needs brought all of that to mind and inspired an impromptu mid-day blog. Now back to my generally interesting, but not nearly so AI-like kind of existence.
June 13th, 2007
A sign that I work in a male-dominated field: the ranking guy at my new office had to send out an e-mail to the guys in the office. He told them that that since their newest hire is female, the gents would no longer be able to commandeer the ladies’ room to use the shower there after their lunchtime bike rides. Sheesh…. I’m used to being in the minority, but this is amusingly out there.
May 30th, 2007
Take a quick look over on Dice’s Rant Room… These folks are competing for a “a maxed-out Alienware Area-51® m9750 Notebook.”, and hopefully not raising the wrath of their HR departments, or their potential employers.
One that amused….

May 24th, 2007
Interesting perks of my job of late:
- seeing us on Nickelodeon and the Cartoon Network in banner ads, and part of the SpongeBob Friend or Foe episode sponsorship.
- knowing that we’re in Best Buy (search ‘kajeet’ on BestBuy.com) and LimitedToo (again, search ‘kajeet’ on LimitedToo.com)
- We were in the WashingtonPost: my boss is the guy holding the cellphone
- We were on CBS News (!) tonight. See clips ‘Eye to Eye: Kids Go Mobile‘ and ‘Marketing Cellphones to Kids‘ (note that we’re the good guys at the end of this clip looking at all the bad things that happen in the market of selling cellphones to kids).
All very cool, and nowhere near anything I’ve had at previous jobs. I’ve been there a bit over a year, and seen us grow (sniff, sniff) from an idea / architecture to an operational system. My part in it? Based on some stats run against our code-base, approximately 28% of the code, or some 125,000 lines of code. (Note that I didn’t run the stat tool and count the numbers highly suspicious. That said, I’m holding onto the email that says ‘She is personally responsible for more than 125,000 lines of custom kajeet code, all written while leading a team of engineers, managing collaboration with Marketing and Product Development/Management, and interacting with half a dozen vendors.’ )
The sad part is that I’m leaving kajeet for pastures closer to home. The commute is killing me (running about an hour and a quarter each way for me in Beltway traffic, since I don’t live that close to Bethesda). That said, that leaves a wonderful opportunity for someone to come and fill my shoes. (No pressure here, looking at those stats above.) Cool job: Java technologies, interesting frameworks, agile development, smart team members, and a focus on building stuff that’s really going to get used. There’s no shelf-ware here: something you build today will hit the production system and be used by customers within a matter of weeks. Those Best Buy customers will be using YOUR stuff. Those CBS news viewers will be checking out YOUR stuff.
Check a job posting for a software engineer at kajeet. Multiple positions being hired, on a variety of skill levels. But it’s a good snapshot of the technologies and platforms in use.
May 16th, 2007
Another EBF (Emergency Bug Fix) night. I hate ‘em. Hate deployments in general, in fact, if I’ve already got a system up and running. The model that came to mind tonight: systems are like Rubik’s cubes. You can get yourself in a lot of trouble if you try to make that one last cube line up right.
January 27th, 2007
In my attempt to be a conscientious tester of a new feature in our codebase, I put in some stub code to allow me to test locally and hit all the various boundary cases. In a painfully ironic twist, that test code introduced a bug which only reared its head in a small set of boundary cases. Note that all of our operational tests after deployment test transactions with the main path.
So, in being a good(?) tester, I broke the system. The fun of pushing bits.
January 26th, 2007
Here’s the setup: product/legal required us to update our terms of service on the site. They delivered the new terms of service in a Word file. Headache #1: manually compare that Word file to the text in our site’s JSP. Note to self: require product/legal to at least show us the diffs. Nothing worse than a Saturday morning spent diff’ing legal text. (No, converting from Word to HTML wasn’t helpful: have you seen the cruft it spits out?)
Headache #2: I realized that the terms of service are also in our store site. To the user, it’s all one site. However, physically, it’s a separate site, separate code repository, and the like. NO way I was diff’ing that legal document twice! (I did mention I was doing this on the weekend, right?) Brilliant Idea #1: refactor the terms page from the main site to use an included file (the text of the terms) that I could share across the two projects. Note that the two sites are built differently: both are done on top of Struts, but one uses JSPs and one uses Velocity. That meant that the syntax for the include would be different (<%@ include versus #include), but then their containing pages would be different, not the text of the terms themselves.
Headache #3: when I brought up the separate sites in my local environment, realized that the terms had URLs embedded in them. In the original site, we used html:rewrite Struts tags. That wasn’t going to work in our Velocity setup (at least, not in a way I recognized, anyway). Also, since the URLs referenced all lived in the one site, the webapp context didn’t have to be taken into account. From the store side, I had to deal with it. Solution: update hte URLs in the store side to use an application level variable for the path. It’s not the best solution, but it’s consistent with how URLs are built in the other areas of the application.
Now the include files are different (unfortunately), but at least the changes should be isolated to the URLs. Now if we need to update the terms again, we can convert back and forth readily for the two sites, at least.
December 31st, 2006
…. corrupt your .svn file structure on your local system. Then, disconnect your project from Subversion via the Subclipse plug-in. Now, try to get things up and running again.
Steps thusfar:
* copy my working copy to an -old folder (just in case I need something).
* remove the working copy
* Do a new checkout from Subversion (command-line style, since Eclipse is still unhappy).
* Hmmmm…. that didn’t help me within Eclipse. OK, do a checkout from the SVN Repository tab within Eclipse: that’s deleting my new working copy folder and getting a fresh new checkout.
Ugh. I hate it when I have to wrestle with configuration management.
Useful resources:
(1) help files in Eclipse for Subclipse plug-in. (Team –> Share didn’t help me much, but was useful to find out about.)
(2) Version Control with Subversion
December 26th, 2006
I keep hearing that Scrum’s name comes from rugby, that a rugby scrum is a great model for a self-organizing, adaptive software project following the Scrum methodology. (Note: I’m in a scrummaster training course today and tomorrow, am a practicing scrummaster, and also played and coached rugby for many years. So, I’m qualified to rant on this particular topic.) But the scrum is the least self-organizing and adaptive kind of play in rugby. Here’s what a scrum is: it’s akin to a kickoff to restart play after something’s screwed up the normal flow of the game. It’s a set piece, with each player knowing their position and standing in the same place each scrum, trying to do exactly the same thing each time. When I coached, it was important to me to teach proper repeatable scrum technique because if anyone doesn’t do their part or somehow changes the formation, someone can get seriously hurt: necks get broken in poorly formed scrums. So, that’s what we say our software processes aspire to: a play you use after someone’s f’ed up the normal flow of the game, where each person does exactly the same thing every time, in which a failure to conform can break someone’s neck.
Now, there is a rugby play which is completely self-organizing and adaptive. It forms to continue play when the ball’s about to change possession. Say I have the ball, and I’m about to get tackled. I want to get the ball out to my teammates so I turn around to give them a chance to get it (rather than have the other team strip it away from me). I fight like mad to stay on my feet and let my team get to me, at which point they’ll start piling on in a proscribed sort of fashion, but driven by whoever’s nearby and can get to me fastest. The number of folks involved and amount of pushing depends on how much force the other side musters, and whether my team can get the ball away more quickly than the other team.
Now the problem is the name of that play: it’s called a maul, which understandably might be a bad nom de plume to attach to your software project. In nearly as bad a naming situation, it’s companion play is called the ruck. That’s when I don’t manage to stay on my feet, but end up tackled and trying to protect the ball on the ground with my body. There my team doesn’t just shove me around, they actually step over (though hopefully not on) me to push back the other team and retain possession of the ball. However, I’d still rather compare my software process to a maul than to something which my team would do when someone on either side screwed up and stopped things from progressing.
I’ll end my rant now, with the additional noted rugby qualification that, in true rugby style, all rant listed above was influenced through the imbibement of beer.
December 20th, 2006
I hate getting a new system. I’m not a person who enjoys tinkering with her computer’s configuration. Once I’ve got something working, I tend to leave it. Which means I tend to forget how I got it to work in the first place. Which leads to royal headaches when I need to change machines.
Work “gifted” me with a newer laptop… a dual core machine that’s supposed to speed up our build cycles. (On my old machine, a single build cycle, including clean, compile, build, and unit tests, could take up to 7 minutes - bleah.) Distributing the load across the two chips, I’m supposed to get a notable improvement. Except that it costs me a day’s worth of work to get my new machine up and running: install Eclipse, install Oracle, install Tomcat, set Subversion up, make sure Ant’s configured, get my hosts files all working correctly, is Cygwin going to let me XTerm into our production environment, etc, etc… Undoubtedly, I’ll find six different things I’ve gotten wrong that I have to figure out how to fix. And, of course, the versions of tools out there are now newer than the ones I had, which always gives me pause. Even the JDK is at a new minor release version (no, I’m not taking that beta 6 version, thank you very much). Oy, my nerves.
Right now, my VPN client is happily blocking me out (nicely, on both laptops), and subversion isn’t giving me any feedback as to whether it’s on my system or not: typing svn gets me a grand bit of squat. If I mistype it as svb, I at least get a command not found response. Svn gives me nuttin’. Arrrrgh.
Tomorrow I turn in the old laptop and flounder on the new. Luckily, I don’t need to do any “real” work until after Thanksgiving.
October 30th, 2006
Next Posts
Previous Posts