The "Ultimate" in startups


Ok … so I’m beating the whole “Startups are like X” thing to death … and then maybe death again. Quite the opposite of original, this is a rebuttal to my fellow Attassa co founder Rod Frey’s blog “The top five reasons entrepreneurs love hockey”
I present to thee …
If startups most resembled of a sport, it’d be ….
Ultimate Frisbee; and not just because both are dominated on the west coast!

4. Ultimate Frisbee is a sport without any financial compensation. As a matter of fact one scrimps and saves to just play the damn sport. In the same way I remember spending the night on the floor of my cousin’s apartment in Lethbridge Alberta I remember spending the night sleeping on an air mattress in Seattle apt.
3. Ultimate Frisbee is self officiated. No ref’s to enforce the rules, no coach to layout a game plan, no trainer to motivate you to work harder. In ulti, and in startups, you, you’re team-mates, are the sole stakeholders.
2. Plays and game plans go out the window! Much like design docs and business plans, ultimate Frisbee plays serve as the required starting point to a dynamic and ever changing game. They pretty much get thrown out the window once you start playing.
1. And much like hockey, ulty is a game of time and space. Unlike any other sport, ultimate Frisbee relies on you reading the competition, getting into the right position at the right time, and reacting swiftly when opportunity arrises.

#1 lesson learned in 2007


Perception and happiness is governed 10% by facts and 90% selection and presentation of these facts.

I was reminded of this by my godmother Millie in a late night phone call while feeling overworked and alone. Millie, always good for a picker upper, reminded me that you …. and only you … are in control of your happiness. While this is tough to believe for anyone who has been dealt life’s equivalent of a 2-7 off-suit ; I believe this to be true within reason.

Along this line of thought I’ve realized that life, happiness, and perception really is all about the projection of facts.

On one hand I could have written a Christmas card spinning a glamorous tale about my year in 2007 – how I bought a nice home and flipped a profit in under 6 months, was a founder in starting up a software company which achieved funding, moved into a hip and funky apartment in one of Seattle’s trendiest neighborhoods, traveled to Texas for consulting opportunities.

While on the other, I could focus on how I sold too late in the Edmonton housing market, how I miss family friends and loved ones in Edmonton and Canada, and how the kitchen sink in my apartment in Seattle continually gives me electrical shocks, how the bathtub continually backs up leaving me standing in a pool of my own filth when finishing a shower, and how the neighbors … F#$((# you Jennifer!!! …. Are incredibly loud.

Focusing on the positive, while at the same time neither remaining ignorant or improving on weakness … make it my resolution.

Fitnesse Results in Cruise Control Build reports

It’s been a bit of a battle getting fitnesse reports included in CruiseControl reports.

Here’s the outline of what I had to do:
1. Launch the fitnesse tests using the task in the cruise control project
2. Launch a batch file that translates the resultant fitnesse raw html file to a cruisecontrol readable xml file
3. Merge the xml file to the cruisecontrol log

Things that caused me some pain …
– For some reason the java class for creating the .xml file had to be launched using a batch file. I couldn’t get the class to load using task directly in the cruise control project
– I had to place the after the merge task within the publishers tag. When it was before, the resuts were not being merged in.

Still to do: The results are only appearing on the dashboard for the build. For some reason they are not being added to the email notification

Here’s my ccnet.config file added tasks

TestRunner.exe
C:\fitesse\dotnet
-results c:\fitnesse\results\FitNesse-Results.html localhost 81 SystTestScrub
60

FitnesseReport.bat
c:\fitnesse
60

c:\fitnesse\results\FitNesse-Results.xml

FitnesseReport.bat looks like the following:
cd c:\fitnesse
java -cp fitnesse.jar fitnesse.runner.FormattingOption C:\fitnesse\results\Fitnesse-Results.html xml c:\fitnesse\results\Fitnesse-Results.xml localhost 81 SystTestScrub

Unlocked bmx bike


Staring outside the bustling Seattle espresso shop watching the Loius Vuitton designer bags, the color co-ordinated scarves, the lights, the buskers playing christmas carols, I’m watching a 15 year old remove the seat of his bicycle, the front tire, and proceed to lock the bike to a no longer lonely light post.

It’s funny how now after so many years of being away I look back upon growing up in simple small town Gull Lake Saskatchewan with such fondness.

I can’t help but think of carelessly tossing my bmx bicycle to the curbside outside of freds trophies; unlocked and unattended for hours; as I went inside to spend my weekly allowance on Bubble Bobble, or whatever the trendy game of the day was.

After I’m done sipping on this Grande decaf Americano, I’ll wander on past Sonic Boom, the Peoples Pub, Mattador restaurant, and proceed to unlock the 3 locks that guard my bachelors apartment. Is it just me, or was it a daily occurrence to head off to Gull Lake High School along with my sister and mom, leaving the house completely unlocked for the whole day?

Windows installer – Reverse engineering COM self registration for a .exe COM server.

There are a couple compelling reasons to capture the self registration of COM components inside Windows installer tables instead of allowing windows installer to register the component through registration calls.

– It allows the installer to be more consistant and truly contain a pre-and post install snapshot of the system
– Allows the install / uninstall to be transactional
And most importantly; allows the installer to install components per/user, so that non-admins can register components.

The most difficult part of this effort is to capture these registry settings so they can be added to the installer tables. WIX (the tool we are using with attassa/collabomatic) comes with a tool called Tallow. This receives .reg files as well as dll’s and derives the registration settings for the files in the form of wix fragment. This works great for dll’s but unfortunately it doesn’t work so hot for .exe COM servers.

For this, I use the following process (using regcap.exe from a dos prompt).

DOS: Regcap.exe /o component.reg component.exe

DOS: tallow.exe –reg component.reg > component.wxs

This produces the components fragment file that just requires a few touches before it’s merged into our main installer using light.

The lighter side of Collabomatic

Today was the first day that Dwayne, Rod and I were all together in the same room after “becoming a real company.”

We’re not anywhere near claiming victory until millions are enjoying using Collabomatic, Dwayne is navigating his submarine across Lake Washington, I’m flying overhead in my new helicopter and Rod is catching up on 5 years of TV absence by watching his very own HD set … But …

Being able to focus, pay ourselves, and plan for the future does feel a bit like a milestone achievement.

So after getting home from dinner in Seattle tonight, I became nostalgic and started digging through my emails from some of our early conversations. In doing so I started to compile a list of some of the funnier and more notable moments from the last 10 months and did what any good nerd would do … I blogged about it.

In no particular chronological order, mainly cut and pasted from email tonight, as well as memorable quotes from various conversations that stand out ….

“Mom; please please please could you not use the phone; I’m waiting on an important call”
– Rod, about 30 seconds before receiving a call from potential investors while we were still working from his parents basement.

“I unplugged the phone upstairs just in case she tried to pick up during our investor call”
– Rod, still paranoid, the next day about 5 minutes before a follow up call with potential investors.

“My Elevator pitch requires about a 67 story building”
– Dwayne, when describing his elevator pitch at a recent startup event.

“David and I just finished our lunch. David’s a pretty good guy
— great hair, likes the right beer. I won’t screen his calls.”

– Rod, to Dwayne and I after Rod and I met for the first time on a “geek blind date” at Mongolie grill in Edmonton.

“We really need a codename! I can’t get through a pitch without someone in the room laughing every time I say “Collabomatic.”
– Dwayne, in an email to Rod and I after giving a pitch to some Seattle Tech startup guys. 10 months later, we still call ourselves and our product “Collabomatic.”

“Damnit”
– Rod after spilling coffee on one of his only 2 dress shirts that made the trip to meet potential investors in Texas.

“Get your mom and dad to move to Edmonton. Problem solved”
– Dwayne, in an email to me after I told him I wasn’t sure what the he@#ll I was going to do now for money now that I had quit my job.

I’m sure this is only the surface and I’ll wake up with a fresh new set …

Modern user interfaces could learn a lot from Tecmo Super bowl

My fellow NFL enthusiasts from Canada and I were engaged in a conversation this past weekend regarding “the best hit in NFL history” which lead to a Youtube search of “Christian Okoye Steve Atwater.” If you’re an NFL fan, you know what video clip we were in search of. However, instead of the mind blowing Steve Atwater hit we were seeking, the majority of search results were actually of the classic Nintendo cult hit “Tecmo Super Bowl.”

Watching these old clips from the game, frustrations of just getting spanked 38-0 in NFL 08 on the Xbox 360, and a recent Collabomatic UI design session reminded me how simplicity is often a design decision that is overlooked in favor of using every bell and whistle in the book.

In the old Nintendo classic, functionality was dead easy. Offensively 8 plays were at your dispense, defensively, Quarterback controls were limited to 2 buttons (cycling through intended receivers with ‘A’ and throwing with ‘B’). Madden 2008 on the other hand allows for about 9 formations, each with 20 plays, each with audibles, players in motion etc etc. Obviously, Madden appeals to power users.

I’m not suggesting that there isn’t a time and a place to cater to the power user and allow for highly customizable functionality, but I do believe that the in 99% of software interfaces, customization hasn’t delivered enough value to make up for the loss of ease of use.

I think that most if not all software systems start with simplicity being an initial goal; but I see a couple obvious reasons why this goal becomes convoluted.

1. As you start to gain traction, some percentage of users start to ask the “how do I” questions. Because we’re geeks and always looking to make people happy, the easy non-confrontational solution is to build this feature if it’s not already there.

2. As your system progresses, other technologies (hardware, supporting libraries, platforms, frameworks) become available for usage. Because we’re geeks and want to be using the latest and greatest, we often leverage these systems, This is one of the things that Tecmo Super bowl resisted doing. When the game was moved from the Nintendo to the Sega Genesis, the decision was made to stick to using just 2 buttons, even though the Genesis made 3 buttons available.

Neither of these reasons is deserving of catering to the few and sacrificing simplicity.

Off to the Seahawks game.

Distributed automated quality assurance

Distributed continuous Quality Assurance

I’m gonna toss this google tech talk into the *wow, that sounds amazing, but how the he#$# would you implement something like that in real software systems without developing a testing harness of equal or greater complexity than the product under test … but there are practical lessons to be learned from theory” bucket.

Stumbling around QA videos on google tech talks tonight I happened to be interested enough in Adam Porter’s Google talk regarding distributed continuous integration testing to devote an hour of my life to this cause. The basic premise (obviously I’m skimming over vasts amount of detail given a 1hr speech is now condensed into 4 points) goes something along the lines of

a) Derive a list of legal configurations and variables for the system under test

b) Develop a centralized “Quality assurance space” server I’ll coin it the QAS which will hold the conditions under tests, results, and heuristics for deploying these to test clients who call back home.

c) Deploy a number of said rogue testing clients to thousands of test machines (vm, clusters, and others) that will call back home to the centralized machine

d) Machine learning and pattern recognition within the QAS

Aside from the fact that there’s obviously constraints involved in deploying any significant number of rogue clients even with the advent of VMware, I completely agree with Adam that modern systems are bigger, more complex, and more geographically distributed than in the past, and traditional Qa functional and automated testing results in controlled environments are being reduced to nill. However, 99.9 % of quality assurance groups (let’s just say everyone outside of Microsoft and Google), lack the resources (both processional and machine) for such an elaborate system. However, there were a few pieces of data that I pulled out from the speech that I can easily apply to Collabomatic automated tests.

a) In Adam’s test results, traversing 2 way option paths yielded nearly as many defects as did an exhaustive test of a complex system. In other words a high wide test of scenarios covering at least 2 combos of all of valid input as opposed to an exhaustive search was just about as good but required about 1/10000th the execution and design time. Because of computational power of my 3 Collabomatic test machines (I’m guessing that no one would allow me to deploy rogue software yet), 2 combos is about as much as I could expect. A system such as this could be administered from the centralized fitnesse server I have deployed.

b) A good set of configuration settings that easily map back to automated tests allows for a focus on variables that really do matter. This allows for tests to become more intelligent over time in stressing areas and configurations with a higher defect yield. In the practical sense, this allows a software engineer in test to derive automated tests in those areas, flipping those configurations around, and leave areas

c) Adam himself admits that quite possibly the most valuable data they gained from these tests was the exercise of deriving all of the legal configurations. This is very much the same 80/20 school of thought where QA involvement at the design level finds bugs when they are cheap to fix (ie. Before the code is even written). Anyway, we’ve all heard that song and dance but it was interesting to hear that even after a beast of an automation tool was designed one of the most effective testing results was gained through a glorified design review.

Anyway, I’d highly recommend viewing the video for anyone interested in emerging QA technologies. I’m excited about such a system as described, have gained some ideas for that I can apply to Collabomatic automated tests.

Email sucks for collaboration

Collaboration via email sucks.

Collaboration using email is inherently broken. While Collabomatic … the company that I have co-founded base our business primarily on this hypothesis … this was truly validated recently in a real life scenario.
—- Insert Plug Her —-
Our basic premise with Collabomatic is that email for ad-hoc collaboration is broken … and we aim to fix this. Knowledge workers experience significant pain around using email for team projects, not the least of which includes fractured documents and revision history; splintered conversations with accidental omissions of people and lack of context around individual emails; and pain with fluid team membership. Ultimately managing files and participants within these collaborations becomes unruly and using email as a solution ultimately breaks down, leading to lost information. Existing solutions don’t completely solve the pains as they force users to change the way they work … either by forcing them to a 3rd party web site like google groups … or engaging a menacing IT team to install a product like sharepoint.

Collabomatic solves the pain by seamlessly integrating into the Windows shell and into Outlook to provide team functions that do not force the users to change the way that they work by integrating into normal Outlook use and Windows use. Users can continue to work as they always have but get all the benefits of collaboration solutions.

—– End Plug Here —–
I experienced the pains of email collaboration first hand recently when working on contract. One of the outputs from my consulting agreement was a test plan. This plan (a 25 page word doc) needed to be sent off for review by the stakeholders in the project. These reviewers in turn sent the document out to external reviewers for comment. 6 comment (all sent back to me via email) and 2 days working through these comments I finally had a second revision to get reviewed. This copy was sent to the project manager for sign off. Much to my surprise, I was being asked similar questions that I had been asked before. What the #$($#. Ok, long story short, I’m sure you can see where this is going, but the fie revisions had become so unruly that the document sent out for review was actually the same document as sent out originally. While I’ll spare you all the nitty gritty details of how Collabomatic could have saved the day …. It sure does feel good when the pain that you envision you are solving is reinforced through personal experience.