
I have really been enjoying my time off the past several weeks. I've been reading some good books, watching some good TV, spending quality time with my girlfriend, and trying to improve my overall health (running and eating much better). But I'm ready to return to real life now and ready to begin earning a paycheck again! I'm happy to let everyone know that I have officially accepted an offer to join Kayak.com, the best travel search site out there, and I start this Monday. Initially I will be with their mobile team working on their iPhone products. Very excited.
If you are like me then you have probably never heard of Kayak.com before. I'm told that brand awareness is their number one challenge right now and improving it is their top priority for the year. If you haven't heard of them yet you should soon. The good news is that they are already doing extremely well and the people who know them love them. Before booking your next flight or hotel room, check them out.
When I began my job search I had one specific kind of company in mind and kayak.com definitely doesn't fit the model I was looking for. After meeting with a number of companies and talking to a few mentors I decided to broaden the type of company I was willing to consider. I'm really glad I did that. If you are currently looking I urge you to do the same thing. There are lots of different companies out there. They will all offer different benefits and a unique experience. Why limit your opportunities? Talk to everyone. You might get surprised and find something you were not looking for.
Thank you to everyone who helped me out over the past several weeks. I really appreciate the emails, advice, job forwards, and references. Thank you so much.
Time to go write some software and pay some taxes.
Friday, March 5, 2010
Going to Work at Kayak.com
Tuesday, February 2, 2010
Lesson #2 - Consider Hosted Software Development Tools
This is my second post (the first is here) in my series on Lessons Learned from Zeemote.
In 2006 I was the first software engineer hired at Zeemote (a now defunct company) and at the time we still didn't even know what our product was going to be. We had a few hundred lines of demo code (written mostly by an outside contractor) and we had no bug database or version control in place. The closest thing to version control was zip files stored in email attachments.
Like many small companies we used an outside IT firm to manage our network and computers. Unfortunately as time progressed some in our company lost confidence with the firm and they were replaced. This became a recurring problem and during my time at Zeemote I witnessed 4 or 5 IT firms get hired and fired (a discussion I'll save for a future post).
One consequence of the above was that our developer tools (subversion and bugzilla) were being maintained by our software engineers rather than the IT "company of the month". Maintained is too generous a word though. As we grew and became increasingly busy and stressed out we had little time to really care for these tools. I don't think we ever made a single version upgrade and only occasionally checked that backups were functioning properly. I began to lose sleep over the situation.
Soon another problem presented itself. As we rushed to develop and test our second software product we contracted with two outside resources. One was a development house in London and the other was a testing house in Pennsylvania. We were suddenly becoming a global distributed software development company! But to use these guys we needed to provide remote access to our internal version control and bug database. This would require the IT "company of the month" to set up VPN and making sure that they only had access to what they needed. Given our experiences with IT this was going to take too long and the results were going to be error prone.
After a few intermediate steps we ended up with, what I regarded as, a great solution: hosted software development tools.
Over the past decade nearly all software products have been moving to the cloud. As it turns out, software development tools are following this trend too and several companies now offer hosted version control and bug tracking. These companies host and manage the software on their servers. They provide encrypted remote access to the tools and also a web based interface for simple administration tasks.
They handle the hardware and software maintenance issues (backups, upgrades, uptime) and you focus on your core work.
After some deep thought I came upon with the following minimum requirements that any service provider should meet in order to be considered:
- Must allow automated downloads of nightly backups to our servers. This protects us in case the provider goes out of business or has a catastrophic failure.
- Must use an open / standard data format. This prevents vendor lock in and allows us to easily switch providers if we become unhappy with them or they go out of business.
- Must provide a basic NDA or terms of use policy that clearly states the data is ours and reasonable steps will be taken to protect it. This is to minimally satisfy the IP folks and investors in the company.
- Must be within our (modest) software budget. Affordability is always a requirement.
- Must speak with us on the telephone and instill confidence. Anyone can set up a website these days. Talk to a real person before choosing a provider. A serious company will be happy to give you a demo and answer any questions or address any concerns you may have. After speaking with one company we ran for the hills as it became clear the "company" was just two college kids with precious little experience.
The concern about poor performance or downtime could be mitigated (at least partially) in two ways. The first was that if performance or downtime did become a problem we could always switch providers because of requirements #1 and #2. Also one of the tools we hoped to use, subversion, is explicitly designed to work "offline" anyway. In most circumstances when a subversion server is inaccessible, one can simply continue working and sync back later.
The second concern about losing "control" of our tools and data was, I think in our situation, more of a mental road bump. It was a bump that I initially struggled with this too but eventually got over.
Requirements #1, #2, and #3 show that we would be the ones who maintained ownership and real ultimate control. Sure we would be allowing another company (a partner) to have access to our code but that is a fact of life for most software companies. If you don't want anyone outside your company to have seen your code then:
- don't form any tight development partnerships
- don't hire any contractors
- don't fire anyone
- don't let anyone quit or retire
So sure it wasn't perfect (few solutions are) but we had to move very quickly and what we were doing wasn't sustainable. Having software engineers worry about maintaining servers and backups isn't productive or efficient. In balance outsourcing these tools was a no brainer.
While I faced internal opposition a new CEO joined the company and (luckily for me) he was open minded, willing to hear me out and gave me great support.
After searching we went with Codesion.com (formerly CVSDude.com). For an extremely cheap price they provided terrific service for us. While we did have a few outages and a few performance problems they were all quickly corrected. Overall it worked out great and I highly recommend them.
The lesson learned here is that hosted development tools can provide a great option for many software companies and should be strongly considered when building your development team's infrastructure.
I'm very proud to say that at Zeemote, Inc. we never lost of single line of code or piece of change history since the first week I joined the company.
Thursday, January 28, 2010
Managing Status on Facebook, Twitter, and LinkedIn
I was asked today how I manage and post status updates to the various social networking sites I use. I figured I'd put my answer here in case anyone else might find it useful.
The three major social tools I use are:
- Twitter - used to share links & short thoughts "publicly". I mostly use Twitter for professional purposes which for me means mostly technical & business related stuff. I keep this network public.
- Facebook - used to keep in touch with friends and family. I try not to post much tech/business stuff here since most of my Facebook friends aren't interested! Instead, on Facebook, I post more personal stuff or more "pop culture" type stuff. I keep this network private.
- LinkedIn - used for professional and networking purposes only.
- On Facebook install and configure the Selective Tweets Facebook application. It will monitor your Twitter feed and update your Facebook status with your tweet IF it includes #fb.
- On LinkedIn install and configure the Tweets LinkedIn application. It will monitor your Twitter feed and update your LinkedIn status with your tweet IF it includes #in.
- Post an update to Twitter and include #fb and/or #in accordingly.
Friday, January 22, 2010
Personality Ethic vs Character Ethic
Prior to writing The Seven Habits of Highly Effective People the author Stephen Covey reviewed much of the "success literature" (i.e. self help books) written in the the United States since 1776. He found that after World War I the focus of these writings generally changed in what they taught to be the foundation for achieving success.
In the most recent 50 years success, we have been taught, is primarily a function of what he calls "Personality Ethics". Some quotes:
Success became more a more a function of personality, of public image, of attitudes and behaviors, skills and techniques, that lubricate the process of human interaction.This differs from what the first 150 years of literature focused on which is something he refers to as "Character Ethic."
This Personality Ethic took two paths: one was human and public relations techniques, and the other was positive mental attitude (PMA) ... expressed in inspiring and sometimes valid maxims such as "Your attitude determines your altitude,"
Other parts of the personality approach were clearly manipulative, even deceptive, encouraging people to use techniques to get other people to like them, or to fake interest in the hobbies of others to get out of them what they wanted, or to use the "power look," or to intimidate their way through life.
things like integrity, humility, fidelity, temperance, courage, justice, patience, industry, simplicity, modesty, and the Golden Rule.Covey admits that while parts of Personality Ethic are important and in many circumstances critical--things like communication and presentations skills--these skills are at best secondary. To truly sustain long tern success one must focus first and foremost on Character Ethic. It is primary.
A great example he gives is with respect to trust. Everyone can agree that trust is a critical element for success in business, family, and friendships. While Personality Ethic suggests communication techniques / tricks to gain trust, Character Ethic says to just be trustworthy.
If I try to use human influence strategies and tactics of how to get other people to do what I want, to work better, to be more motivated, to like me and each other--while my character is fundamentally flawed, marked by duplicity and insincerity--then, in the long run, I cannot be successful. My duplicity will breed distrust, and everything I do--even using so-called good human relations techniques--will be perceived as manipulative.and conversely
There are people we trust absolutely because we know their character. Whether they're eloquent or not, whether they have the human relations techniques or not, we trust them, and we work successfully with them.This resonates with me because at heart I'm in idealist and always like to think that "the good guy" always wins in the end. It is nice therefore to read something that makes sense and reinforces that belief. It also helps because I think I lack some of those Personality Ethic skills!
Funny, as I read about the approaches two specific people stick out in my mind. One who excels in Personality Ethic and one who excels in Character Ethic. How about you?
Seven Habits of Highly Effective People

Sometime last year I was looking for new business books to read. I talked to mentors and colleagues and searched the web to discover that the The Seven Habits of Highly Effective People was in almost everyone's recommendation list. First published in 1989 it is already widely regarded as a classic. I went ahead and ordered it without reviewing what it was all about and without even carefully reading the cover. Last week on a plane trip between Tampa and Boston I finally opened it and began.
I've only read two chapters so far but it is clear to me that this is not a "business book" in the traditional sense or at least what I think of as a traditional business book. It would be much better described as a "self help" or "personal change" book and to be honest, had I known that in advance, I probably wouldn't have bought it.
Thus far the book resonates very deeply with me. It reinforces some of my core believes but introduces some new and powerful ideas and concepts. It also helps that the core of the book's message appears to address what I know to be among of my largest and quite serious flaws which is that of balance. Most of my current, or in some cases former, colleagues, friends, family, and girlfriend(s) can attest to this weakness.
The author Stephen R. Covey suggests the following:
I would suggest that you shift your paradigm of your own involvement in this material from the role of learner to that of teacher. Take an inside-out approach, and read with the purpose in mind of sharing or discussing what you learn with someone else within 48 hours after you learn it.I think this is a great suggestion for this or any non-fiction book. Taking notes and discussing what you read will multiply by several times what you soak in. Coincidentally this also happens to be a great marketing technique to spread work of the book but I will avoid being cynical! I have decided to take up Stephen's suggestion and discuss some of the ideas & concepts that I learn and find interesting here on my blog. I may also post noteworthy quotes to twitter . If you have read the book or have something to add I would love to hear from you. This may take some time since another weakness of mine is slow reading.
Thursday, January 7, 2010
A Theory: Why the iPhone doesn't allow background applications
The lack of support for background applications on the iPhone drives me crazy since it prevents a number of very useful apps from being deployed on it. The one I miss most from my BlackBerry is Google Talk for instant messaging. Today I was thinking about why Apple would disallow a basic feature that every other modern OS supports. I can think of two complementary reasons.
The first has to do with user interface. Most users don't understand the very concept of "background applications". I'm not sure I've ever seen a really great UI for managing running processes on a desktop OS let alone a mobile one. Since most applications don't need the feature anyway my guess is that Apple just punted on it.
The second reason is more technical. Currently the iPhone only supports application development using Objective-C. More notable is that it is Objective-C without garbage collection. This means that each developer is responsible for his or her own memory management. All but the most egotistical of developers would admit that managing memory is a difficult problem and most of us do a bad job at it. If allowed on the iPhone many of our poorly written applications would run in the background eating away at the memory and slowing the phone down until the frustrated user reboots it. Foreground-only applications means that won't happen since the application will be destroyed after just a few seconds or minutes. As a result I suspect that most iPhone developers do little to no memory management what so ever.
iPhone OS will have to support background applications eventually and my prediction is that it will arrive on the same day that garbage collection does.
Monday, December 21, 2009
Zeemote Assets Sold to Aplix
Five weeks after Zeemote ceased operations it was announced Thursday that the assets of the company have been sold off to Aplix Corp.
The obvious question then is who is Aplix?
Aplix Corp is a Japanese based company that creates a JVM / KVM called JBlend that it licenses to handset manufacturers. I've seen JBlend on older Motorola feature phones (like the RAZR and PEBL) as well as few Windows Mobile devices. As far as I know though they have very little market share in the US or in Europe.
It seems like an odd marriage but hopefully they can help add Zeemote support to more games and devices and to improve the overall user experience. I also hope they allow, encourage, and aid in getting the Zeemote supported on non-JBlend devices since MIDP (Java ME) based devices (Aplix core business) are quickly dying in favor of more capable smartphones. Just Friday the press went wild with reports of the rising success of the java-hating iPhone in Aplix's home turf of Japan.
Congrats to those at Zeemote who got the deal done and are continuing on. I decided to turn down their offer but will be watching and rooting for them to turn this into a success. Good luck.
