Archive for December, 2005

New website coming soon

Posted in Daily Entries on December 30th, 2005 by Mike Taber – Be the first to comment

No, not this site. I’m talking about Moon River Software’s new web site. Building a new web site is pretty tedious, especially when you’re creating new marketing content to go with it. You have to make sure that you use your key words effectively and often enough, but not so often that search engines will mark them as redundant. Last night I was up until 2am working on it. Tonight I’ll take a breather, and most of this weekend will be lost to New Years laziness.

But the new web site is looking extremely good. I’ll likely take some screen shots of the old site and put them side by side with the new one when it’s finished, just so everyone can see the differences. It’s pretty striking to be honest. It’s amazing what a little bit of effort (and a whole lot of time) can produce. According to my corporate goals for 2006, I need to have this done by January 9th. I should be able to make that date by a long shot. The real trick will be getting everything to say what I want it to say. Look for a new site late next week.


Setting Goals for 2006

Posted in All Articles, Moon River Software on December 28th, 2005 by Mike Taber – Be the first to comment

The past week and a half, I’ve had a chance to reflect a bit on what’s gone right this year, and what hasn’t. Most people do this at this time of year because they have all decided that after feasting like a pig at various celebrations, they need to lose some weight. Others decide to try and kick bad habits that will simply come back in 4 weeks to haunt them like a mortgage payment. (”Hello there…. PAY ME!”)

I decided to put this time of reflection to good use and made a schedule that I’d like to adhere to this coming year. While I didn’t publicize it too much, I had two main goals that I wanted to achieve by the end of 2005.

1. Publish Milestones v1.0.0.
2. Log a profit for the year.

It would certainly seem easy enough to do both of these, and in fact I have. MRS Milestones Version 1.0.0 , which is our bug tracking software, was made available to the general public earlier in December, and v1.0.1 is due out within the next couple of days. Score 1 for the home team.

Logging a profit was a much trickier obstacle to overcome. Let’s take a look at the company expenses first. I’ll leave out a lot of the more trivial stuff, and only include things that cost over a few hundred dollars.

Item Cost
Quicken $79.99
MSDN Universal Subscription $2,016.47
Verizon Business DSL (3 months) ~$240
VMWare Subscription $299
Icon package $499
.NET Obfuscator ~$1,500
Wise for Windows Installer $1,429
Vonage Small Business line ~$120
CityDesk $299
Random computer hardware ~$450



There are a number of other expenses that I’ve had as well. A few business meetings discussed over lunch that I expensed, snacks for the office, shipping costs for equipment/postage, $50 for a 2Checkout account, etc. Nothing really major aside from what I’ve listed, except for one last thing. My salary.

I’m in my 10th week of working for MRS full time now, and as of December 31st, I’ve come to the conclusion that my net profit for the year will have been $136.58, after all of the above expenses and my salary. I have to say, that I cut it extremely close. Unfortunately, there’s still that pesky little cash flow problem that I talked about during my Milestones postmortem.

While things are certainly better now than they were at the end of November, as of December 31st, I will have 8 open invoices that are owed to me. It’s a decent chunk of change, nearly all of which is owed to various places, including my own salary. So, while I have technically met my end of year goals, I certainly do not have the cash on hand to show for it. It will take close to 10 weeks before the net profit from my outstanding invoices catch up to the point that I am cash on hand positive. That just goes to show that unless you have the ability to manage cash flow properly, you’ll go out of business very quickly. Had I broken out from under the thumb of ‘the man’ earlier in 2005, I’d likely be cash on hand positive as well as cash flow positive.

However, the point of this article isn’t to talk about what could have been. I’d like to outline the goals that I have set forth for Moon River Software for 2006 and illustrate what setting goals should and should not be.

Goal 1: New logo and new web site by January 9th, 2006
Purpose: I think it’s fairly safe to say that by looking at the current MRS web site and logo, you can tell that a color blind monkey with a man in a yellow hat designed it. It doesn’t look professional, there’s more text than anything else, and it’s rather boring to look at. What’s worse, is that I did some usability tests on it, and realized that one of the navigation buttons said ‘Milestones‘. I never thought anything of it until I watched someone navigate the web site. Their first thought was that ‘Milestones‘ was referring to company milestones, not to a product named ‘Milestones‘Doh!

So, that needs to be changed. January 9th seems like an awfully aggressive date to get a new logo and a new web site put together. Fortunately, I have a designer who has been diligently giving me various proofs of different logos, and should have the final implementations ready by the end of today. Here’s a look at what will probably be very close to the final one.


Then, we’ll be working together to put together the web site itself. Next week, I’ll contact a marketing guru that I know and ask her to help me with some of the content, to be sure it’s on par with what people would expect from a corporate site.

Goal 2: Start advertising ‘Milestones‘ on January 13th.
Purpose: You may think that it’s intuitively obvious that if you have the best software in the world, you won’t have any problems selling it. This simply isn’t the case, even if you did have the best software in the world. If nobody knows it exists, it won’t matter how good your software is. You need to advertise and do effective marketing to drive traffic to your web site before people will start using your software and buying it.

The original deadline for Goal 1 was January 3rd, but some things have come up which pushed it back a week. That’s a good lesson in setting goals though. If you’ve ever used a Gaant Chart, you know that some tasks are dependent upon others, and if a task is late, it can push others out of the way and they will no longer be accurate. This is called “You just missed all of your deadlines”. If you can help it, always use soft dates for your deadlines, which is what I have done. There are no tasks that absolutely require the deadline to be hit. If it is missed by a little bit, that’s generally ok. The point of setting a goal date is to avoid procrastination.

College students are famous for waiting till the last minute to do homework or study for tests. It’s a widely accepted theory among professors that no matter how long students are given to complete a project, unless they are forced to meet various milestones along the way, some will inevitably wait until the last minute to start the project and miss the deadline.

Technically, part of Goal 2 has already been met because I have an advertisement for Milestones set to run on January 13th. We’ll see how that turns out. I also signed up for a Google AdWords account, but I haven’t paid anything yet, or started advertising. Throughout the course of January and February, I’ll be trying out various advertising techniques on Google, Yahoo, and MSN. I’ll keep you posted on how all of that turns out.

Goal 3: Design a new product by January 20th.
Purpose: Companies with more than one product have more than one revenue stream. The more revenue streams you have, the less dependent you are on any one of them. This is generally why large companies buy out smaller companies that have related products. I already have the idea for this new product, and a prospective buyer as well. The first few weeks of January will be spent doing research into the competition for this product, the potential demand, and sending design documents back and forth to my prospective buyer.

This product must meet his needs, and if it does, he’ll buy it. If not, then I just wasted a lot of time on a product which may not have any buyers. If at all possible, you should work closely with your first couple of prospective customers. Best case scenario is that you work on a consulting basis, building a product from scratch on somebody else’s dime with full rights to the final product. When you see the pink elephants start flying, be sure to look into that.

Goal 4: Complete Beta 1 for the new product by the end of February
Purpose: I’ve given myself a lot of room here to actually write the code for this product. It’s not particularly complicated, but it does need to be tested and written. It also needs to look good. This initial beta will give my prospective client a hands on look at the final version of the software, so he can see how it works in a live environment. Design documents are no substitute for a live product to play with. If you’ve ever had arguments with product management because the spec said one thing, and they meant another, then you know what I mean.

Goal 5: Launch new product by the end of March.
Purpose: By launching this new product at the end of March, MRS will effectively have two potential revenue streams in place by the end of Q1 2006. The rest of the year can be spent gathering customer feedback, implementing new features, and marketing these two products.

Goal 6: Design new products in April and July. Launch these products at the end of June and September, respectively.
Purpose: Again, back to the idea of having multiple revenue streams, more products is better, so long as you have the manpower and the resources to keep up with implementing new features and doing bug fixes for all of them.
Fallback Position: If time and resources do not allow the implementation of these new products, at the very least they should be designed. It is wise to have a fallback position which will set you up for the future. If you don’t have a fallback position, it can be very difficult to cut your losses in the pursuit of this goal. ‘Management by objective’ suffers from this problem.

Management by Objective is the idea that management will set forth goals that need to be achieved, and rewards are typically offered for achieving those goals. Typically, this is regardless of the price that has been paid to achieve those goals. Implementing software that will save the company $10,000 per year isn’t worth much if you spent $1 million to develop it. If the software is saving the company $10k for each employee, the $1 million can be easier to justify if the maintenance is low enough, the lifetime is long enough, and there are a high number of employees.

Goal 7: Become completely self sufficient on software sales by the end of 2006.
Purpose: Consulting is a decent gig to be honest, but it suffers from economies of scale which is a serious problem when you’re trying to make money.

If you start a business making birdhouses, assuming it takes you about 4 hours to build each birdhouse, and each provides you with a net profit of $10 after materials, then you’re making about $100 per week in profit. If you set up an assembly line, and are able to halve your production time, you can maybe get $200 per week. Beyond that, you need to start hiring people to help you make bird houses, which introduces a lot more overhead. There’s more materials, more tools required, and a lot more sawdust. Before you know it, your productivity drops because your operation has expanded and your birdhouses are no longer of a uniform quality.

Fast food restaurants used to have this problem, until McDonalds came along and specified that burgers must be cooked for thirty something seconds on each side and every burger is exactly the same. That holds true whether you get it in upstate New York at a rest stop on the Thruway, or in Trinidad. Trust me, the burgers from McDonalds in Trinidad are exactly the same. The menu is slightly different, but the hamburgers taste exactly the same. McDonalds has gone out of their way to ensure this conformity.

As a consulting business expands, the quality can suffer. Most successful startups are successful because the first few people were incredibly talented. As more people are hired, the overall talent level drops closer to the average. The larger a company gets, the more this becomes true. This is why large companies don’t seem to have hordes of incredibly bright people working for them. They certainly exist within the organization, but on average, they’re vastly outnumbered by the average and below average people.

McDonalds suffered from a manufacturing problem, which they were able to address. Consulting companies suffer from a slightly different scaling problem. It’s the fact that when someone is not performing billable work for a client, the company is paying the employee, but not being reimbursed in any way.

Compare a software company that makes $1,000 per week, and pays a developer $900. Over the course of a year, the company has made $5,200. Using similar numbers for a consulting company yields some very different results. If the developer is billing out $1,000 per week, most companies provide about 25 days (5 weeks) of vacation time. This will not be billable to clients. This means that revenue has instantly been cut by $5,000 while costs have stayed the same. The net result is that the software company yields $5,200 of profit, while the consulting company yields only $200 of profit. That’s a mighty big difference.

Software can be sold whether the developer is there working on it or not. To the customer, it doesn’t matter. Consulting companies also have the quality scaling problem as well. I like to think of myself as a pretty good developer, but when I hire people, will they have the same standards that I do? Of course not. They could be a little higher or lower, or they could be vastly different. Given the choice, I would much prefer to be in the software world than the consulting world.

From the goals I’ve listed above, you should notice a couple of different things. First, each of them is what’s called a measurable goal. They’re not as nebulous as “Increase Sales”. It’s stated as “Become completely self sufficient on software sales by the end of 2006.”. Nebulous goals should be avoided at all costs. The ability to argue whether a goal was met or not shouldn’t exist.

Second, there is a date that each goal must be completed. I could easily say “My goal is to make $1 million.” That’s a pretty silly goal to be honest. Unless I die way before my time, I’m going to reach that goal. The real question is when will I meet that goal. By placing a date on it, you associate a sense of urgency with it. This sense of urgency will help to get things done. If you’ve got 3 years to meet that goal, then setting intermediate milestones will ensure that you achieve it. These intermediate milestones help to form a closed feedback loop where you can make adjustments and corrections to help you achieve your ultimate goals.

Speaking of milestones, here’s part of one now.



UPS Update

Posted in Daily Entries on December 26th, 2005 by Mike Taber – Be the first to comment

It’s been 12 days since I was informed that UPS would make a detailed investigation that would be completed within the next 1-8 business days with the status of what happened to my server. Now, to be sure I found it more than a week ago. As a test, I decided to not bother calling them to say I’d found it on my own, no thanks to them.

I’m curious to know when they’ll decide to conclude their investigation. I’m a bit surprised that their investigation hasn’t involved calling me again to ask me any questions. It reminds me of a friend who listed me as a reference for a government security clearance. They never called me either. Still, there’s money on the line, and the package was insured for over $1,000 so I thought they would have wanted some more details.

Alas, they have not. Good thing it’s the holiday season and they can make it up on volume.


The Winners and the Losers

Posted in Daily Entries on December 22nd, 2005 by Mike Taber – Be the first to comment

No, I’m not talking about the Red Sox players heading from Boston to New York like the killer white rabbit has come to town. I’m talking about the strike by the New York City Transit Workers that just ended.

I’m amazed at the short sightedness of just about everyone involved. I was a bit shocked when I heard Mayor Bloomberg declare it as a “selfish and illegal strike” on the news. Not that he didn’t have a judge back him up on it because he did. However, it was a surprising choice of words, nonetheless.

If you look at the chaos that ensued, there were 7 million people who had large difficulties getting to work. Some 40% of stores along a stretch of 8th Avenue weren’t open, with only days before Christmas shopping season ended. The current estimates put the cost of the strike to businesses in New York to nearly $1 billion. And to top it off, the city administration is pushing for a fine of $1 million per day of the strike, which from what I’ve heard will essentially permanently destroy the Union representing the TWU. And thus, everybody loses.

The unfortunate thing here is that even after all of the back and forths that have gone on, these people are still going to have to work together. They still need to hammer out an agreement that works for everyone involved, and after the actions that both sides have taken, right or wrong, they will interfere with their negotiations.

What’s the moral of the story? “Never burn bridges” my friend.

No matter how much you hate the other guy, chances are that you will need him in the future, and even if you don’t, remember that he’s got friends. No matter how much it hurts, no matter how much you want to, don’t burn those bridges. When you start pissing people off that you still need in any way, shape or form, working with them isn’t going to be nearly as easy.

And one day, probably not to far from now, when you find yourself lying face down in the gutter with a knife in your back, and the other guy has the option of either calling 911 or kicking you in the stones, you’d better hope that he needs you for something. Because like an elephant, everyone remembers the bad things that have happened to them and the people who caused them.


Volume IV: Rewards and Incentive Programs

Posted in All Articles, Bootstrapping a Business on December 18th, 2005 by Mike Taber – 1 Comment

It’s that time of year again. I’m not talking about Christmas, Chanukah, Kwanza, or <insert your personal holdiay here>. It’s getting towards the end of the year, and it’s typically around this time, that companies start doling out bonuses of one sort or another. I’ve been giving some thought to this, as my own personal bonus is something I still need to decide on. Moon River Software can certainly afford to give me nearly any bonus that I desire, but there are a few lingering questions in my mind about this. Many questions in fact.

Will giving me a bonus make me work harder? Will I be grateful for that bonus? If I had a dozen employees working for me, would I give out bonuses to all of them, some of them, or none of them? On one hand, a nice bonus at the end of the year is a little something to tell your employees how much you appreciate all of their hard work. You appreciate their contributions to the company, and those late nights they’ve spent making sure that the products you make are perfect and well tested.

So how do you roll up all of those “thank you’s” into a gift? It turns out to be far more difficult than you might think. You see, there’s something about the corporate reward system that strikes me as odd. For the most part, it applies to end of the year performance reviews as well. In my eyes, performance metrics are pretty worthless. Lines of code, bugs opened, bugs fixed, customers called, calls fielded, money spent taking clients to dinner, etc.

I used to run a game called Cry of the Ancients. It was a simple, web browser based game that at its height, had around 400 players or so. I learned some valuable lessons running that game that are very applicable to any type of reward system. Any time that I added a new feature to the game, I had to be extremely careful to think about the consequences of that action. Once given a new tool or an option, it is very difficult to remove it without causing an incredible uproar.

I learned this when I decided to add assassins to the game. In the original version of the game, there were Generals that you could train, and use for various things in the game. Basically, they accomplished a number of tasks, and each had attributes which helped him to accomplish that task better. As players used their generals, they became increasingly better and better at their tasks. This eventually resulted in huge power swings that could literally topple the mightiest player within a few hours. So, I introduced assassins to help get rid of some of these ‘Uber-generals’. It didn’t quite go as I had planned.

It turned out that instead of solving the problem, I had made it worse. Originally, players with these Uber-generals would attempt to topple one another and that was generally the end of it. By allowing players to purchase assassins to kill these generals, players started creating multiple accounts to buy these assassins and then use them to topple their enemies anonymously. So, I limited the number of assassins that any one player could have to only 5. Players created still more accounts to house these assassins.

Eventually, I grew tired of the back-and-forth game I had entered into and decided to simply no longer allow assassins in the game. Fortunately, since assassins were not a renewable resource and could only be used once, I was able to simply let the game run its course. Not many people realized that new assassins were not entering the scene until it was much too late. By then, most of them had been used, and the few that were left were somewhat inconsequential.

Similar situations arose when I wanted to implement a reward based system for getting more people signed up for the game. I had wanted to get a few thousand people playing, and knew that only through the help of the players could that be achieved. Even before I implemented anything, I could quickly see that rewarding players for helping to attract new players wasn’t going to work out very well. To reward a player for attracting new members to the community, you need to measure their contribution. And in measuring that contribution, you open up the doors to abuse that reward system.

The reward itself needs to be significant enough to entice people to make an effort. It also needs to be low enough that it doesn’t create imbalances in the game. Giving additional gold for each new player you attract would create an army of fake accounts, each drawn by current players who are getting bonuses for doing nothing more than creating fake email accounts. The entire game was such that even small changes could make a world of difference in how the game played.

And this is the inherent problem with reward systems. How do you reward someone for doing a good job on something that they should be doing anyway? If they do a poor job, should they be rewarded? If you say yes, then you are reinforcing their poor performance. If you do not reward them, then you further alienate the person, who will be upset when he or she may think that they are doing a good job. When you implement a system where additional incentives are given for specific performance metrics, the people in question will do things to meet those metrics, regardless of the surrounding variables.

Many corporate executives are given this very incentive, typically via stock options. The value of these stock options is often so incredibly high that it overshadows their salaries. For the sake of someone to pick on, take a look at Microsoft. Bill Gates is listed on Yahoo! Finance as having a salary of $1 million per year. He currently has over $40 billion in assets, the vast majority due to the stock options he was granted when he started the company. Indeed, looking at any number of publicly traded companies will show you that corporate executives hiring packages and bonuses far outstrip their salaries.

In addition, their sole performance metric is quarter over quarter growth of the company, both in terms of dollars generated and profit per employee. It is these same executives who decide that cutting 100% health coverage to 80% will save the company a bundle because the employees will bear that other 20%. All so Bill Lumbergh’s stock can go up a quarter of a point.

I have personally seen people run projects over budget, cutting into company profits in order to meet their personal performance metrics. It would be a crime for an employee to write himself a check for $25,000 but it’s perfectly acceptable to run a project $100k over budget just to meet another deadline on a checklist that results in a $5k bonus for the employee instead of a $2500 bonus. Is something missing from this equation? Are companies really this dumb?

It would appear so. The scandals of Enron, Adelphia, and many others have shown that people are willing to do incredible things to the companies they are supposed to be helping to the best of their abilities in order to achieve some measure of personal gain. And why is this? Because they have been giving performance metrics to meet, and if they don’t meet them, bad things happen.

These examples merely show that when nobody is looking, incentive based plans don’t work because people look for ways to actively meet their objectives easier, thus manipulating the system. One of the reasons you implement an incentive based system is because you simply don’t have the time or resources to stand over people telling them exactly what to do every minute of the day. This is entirely self defeating.

But lets come back to my own personal dilemna. Will a bonus really make me work harder? Probably not. In fact, I know that it won’t, just as the lack of a bonus won’t make me work any less hard. I work for Moon River Software because I want to. I work long hours, I work very nearly every single day. I don’t recall the last time I went more than 24 hours without turning on my computer and working on something, or using my notebook to jot down business ideas. I have been doing this for nearly 2 months now with no compensation other than my salary, which started only this past weekend.

Should I get a bonus every week that I work more than 40 hours? The company could certainly justify it, and as company doing consulting for the time being, those extra hours are certainly benefitting the company monetarily. I keep returning to the very same idea though. Giving myself a bonus will not make me work harder, and the lack of one will not be detrimental to my work. Why is this?

I’ve come to the conclusion that it’s for a number of different reasons, all of which are rolled up into a single concept.

I’m happy here.

It turns out, that most people hate their jobs. The reasons generally tend to vary widely, but they seem to revolve around inept managers, insensitive policy decisions, and a lack of recognition for individual accomplishments. There’s a common theme here, which is lack of communication, between employees and the company. The remedies for this vary, but I’ve got my own set of rules that you can follow to help ensure that your employees stick around for as long as you want them to.

1) Set clear goals for the company and make sure the employees know what they are. This sounds simple enough, and many managers do a half assed job here. I’m sure all of the executives know what the company goals are, since they were likely in the meetings that these goals were set. But does anyone else know? Are they published somewhere? Does everyone else have access to the whiteboard where they are listed?

Chances are, probably not. By keeping the company goals in plain view for everyone to see, employees will have a fair idea of what needs to be done to achieve those goals. Even if they’re not certain what needs to be done, most people are smart enough to see the need for the things that they are doing. Why am I stuffing envelopes again? Oh yea, it’s because we’re trying to hit $1 million in sales by the end of the year, and these envelopes are going to all the CFO’s of the Fortune 1000 companies. If I don’t stuff these envelopes and send them, the CFO’s won’t see them, and our company won’t make its goal.

People need to be able to appreciate the significance of their actions. Understanding why their job is important is key to this appreciation. Without it, people start to slack off because their work is somehow devalued. Eventually, this leads to unsatisfied employees who leave the company for better opportunities, typically those whose responsibilities do not include stuffing envelopes.

2) Set clear goals for the employee with the employee. The key here is really the second piece. Sitting down with the employee is very important because it helps keep them involved in their own career development. Simply telling an engineer that you want them to learn the latest .NET stuff so they can assist with an upcoming project just isn’t good enough. In fact, it’s incredibly naive. Does the person even want to continue being an engineer? If not, then you’ve got a problem. If you have an open communication line with your employees, then finding out they’d like to do QA instead of Support, or Support instead of Engineering is really a blessing in disguise.

It means that your employees can look inside the company for new opportunities, rather than outside of it. You will certainly run into cases where the goals of an employee are not in line with those of the company, as was the case in my previous job. I wanted to run my own software company, and they wanted me to continue doing development for them. These seem to be mutually exclusive operations, but we found that they were not. Since then, I’ve been doing some contract work for them here and there. I get to run my own company, and they get my engineering talents. It’s a win-win situation.

By sitting down with employees on a regular basis, you can gain valuable feedback about their career paths, what goals they want to achieve, and what is important to them. I’ll give you a hint. It’s not always money. Personally, I took a 5% pay cut to work for Moon River Software. But I can still pay my bills, Moon River Software is still in business, and I am master of my own destiny, which suits me just fine.

3) Let people own their projects. People like to own things, even if they’re not even real. There are hundreds of thousands of people out there who are buying and selling virtual property all the time. Want to buy a sword in Everquest? What about World of Warcraft? Even most software is licensed, not sold. Ideas and project responsibilities are no different.

Early in my career, I worked for a company called Clearwire Technologies in Buffalo, NY. I ended up there mainly because someone I knew turned down a co-op there and I needed a job. He referred me, I had a phone interview and was hired shortly thereafter. Within a few short months, I was learning all sorts of things about embedded systems, multi-threading, wireless routers, and software engineering. It was great. I got involved with the IT department there, and eventually my boss ran out of things for me to do.

He told me he’d have something for me to do in a few days, and in the meantime, he wanted me to pick something that I wanted to learn more about and read up on it. He didn’t care what it was. So, I started learning CGI programming using HTML and perl. Within a couple of months, I was writing the online order entry software for the company. Eventually, I was in charge of nearly every aspect of the project, from working with the sales team, the network team, clients, member ISP’s, etc. I was even flown to Dallas one week to give a presentation on the software to the CEO, CFO, and all of the VP’s. It was exhillerating to know that so much rested on my shoulders.

Eventually, people started to get scared. They were putting a lot of faith in me. Too much in fact they thought. Was my software really going to manage all of their operations? I was too young to be in charge of something so important, and there was a lot of VC money riding on the company. So, they brought in some consultants who had offered them customizeable software which would manage their company. The meeting started, and these two men started their presentation. Forty-five minutes into the presentation, the CEO starts pressuring them for pricing. They backpedaled a bit, trying to ease into it, but the CEO cornered them and asked “How much” three times in the space of 5 seconds.

$20 million, plus customizations. Needless to say, the meeting ended abruptly within the next 5 minutes as the entire executive team cleared the room, leaving me, my boss, and the two salesman. I was very happy with the way things ended, but I wasn’t particularly thrilled that the meeting had taken place to begin with. I owned that project. It was my baby. I poured my heart and soul into it, doing everything possible to make everyone happy. All because it was my project.

Let people own their projects. They will work harder all on their own, and amazingly enough, they’ll be happy to do it.

4) Maintain an open door policy. Make this known, and frequently reinforce this. Employee happiness should be your number one priority. I’ve worked at a number of different places over the years, and I think that the one that I felt the most comfortable talking to my boss about anything was at Clearwire. Perhaps it was because I was much younger then. I didn’t know nearly as much about software as I do now, and I thought I knew more about software than I do now. Apparently I was brilliant in my youth. I’m not sure what happened.

It turns out that talking to an employer about your employment satisfaction isn’t very easy to do. There are a number of reasons for this, but there’s one that sticks out the most in my mind the most. “Will it really make any difference?” Well, it depends on where you work. At Moon River Software, I’d like to think so. Making your employees happy should be your number one priority, for this very reason.

It’s more expensive to replace someone than it is to ask “What can we do to make your work more enjoyable?” and then go ahead and do it. Good people cost a lot of money to replace. And once they’re gone, you’re probably not going to get them back. Even if you hire them back as a contractor, they’re likely going to make more money than it would have cost to make the necessary changes to convince them to stick around in the first place.

At MRS, I decided a while ago that eating was important enough that the company should pay for it. I’ve worked at two different companies which provided free meals for the employees. You can’t imagine how much of an incentive that is for people. I know people who have stuck around for the free lunches alone. At the moment, money is still a little bit tight, so it’s mostly microwave meals, snacks, free beverages, and a number of other things. But it’s so worth the investment, and the cost is minimal. In the past 4 weeks, I think I’ve spent under $100. Over the course of a year, an additional $1,200 in expenses for food is minimal compared to salary, software, hardware, etc. In fact, I spent nearly $1,500 on the Wise Installer. The expense of free lunch for a year is less than the cost of a single software license. Not bad. Not bad at all.

5) Let your employees help make important decisions. It’s important to note that when you’re a manager or the owner of a company, you need to get feedback from your employees when decisions are going to be made which affect them. Cuts to benefits can be a huge problem. As I mentioned earlier, once you have given a benefit of any kind, it’s notoriously difficult to take it away. I like to think of this rule as being the opposite of the Open Door Policy. While the open door policy is about letting the employees know that they can come to you with their problems and concerns, you should also have the reverse policy where you can go to your employees with your problems.

Lets use my previously made up example and say that we have two companies who are suffering from low income and need to start cutting benefits to help make ends meet. We have “Employees Suck Up Our Profit, Inc.” and “Our Employees Rock, Inc.”.

“Employees Suck Up Our Profit, Inc.” has decided that laying off people is going to be worse than anything, so instead, they’re going to cut employee benefits to help keep people around. The executives make the decision, tell their employees that the decision has been made, they’re affected, and hopefully things will change.

“Our Employees Rock, Inc.” handles things a bit differently. The executives realize that they are not going to be able to meet the demands of payroll, benefits, and all the other expenses, and cutting the company health plan is probably the best way to keep costs down, without laying people off. So, they call a company meeting and explain that the company is in some financial trouble. They need to save money in every way possible, and this is the most likely way to keep the company in business. But if people are willing to work some extra hours, and help meet a few more of the company goals, it is likely that things will turn around and the health plan can remain intact.

Whose plan do you think is going to go over better? Where would you want to work?

Now I understand that depending on the size of the company, you simply can’t always do this. But calling a company meeting and telling people in advance that things are headed downhill and the consequences of not meeting the company goals is going to result in the loss of health benefits is a far better plan. It allows for options, and people appreciate being in the loop when things in the company are happening. I don’t think I could ever work in a publicly traded company because I feel so blind to what’s going on.

How is sales doing? What customers are looking at our products? How are people using it? What can we do to help land deal XYZ?

In a publicly traded company, unless you’re in management, you’re pretty much in the dark, due to insider trading laws. And that sucks. I’m the type of person who hates to fly because I’m not in control of the plane and I can’t see where I’m going. At least if I can see where I’m going, I can offer suggestions and be on the lookout for trouble. But if you don’t tell anyone that you’re in trouble, they can’t help you until it’s 12:01am on the day after the due date. Then it’s too late and there’s nothing anybody can do.

So, now that I’ve ranted long enough on this topic, it’s important to recap just a bit and say that the biggest incentive and biggest reward you can give someone is a great place to work. One where your employees don’t hate dragging themselves out of bed in the morning. I loved working at Clearwire. It was one of the best places I ever worked, because I felt like I was making a huge contribution to the company, and I was responsible for an important project.

Make your employees feel important, and they’ll be happy to work for you. Once you’ve accomplished that, any bonuses/rewards that are offered will be just a bonus for doing their best, which they will do regularly because they enjoy it. If your employees are looking forward to the bonus as something which is supposed to make them stick around, then chances are that you’re going to be posting on sooner rather than later.


Milestones version 1.0.0 Postmortem

Posted in All Articles, Moon River Software on December 11th, 2005 by Mike Taber – 1 Comment

Well, it was a long hard road, but Moon River Milestones is finally out the door. It’s less than a week after the launch, and while I accomplished a huge amount of work, there’s still a lot left to do. I use Milestones mainly for my own project management, both in the business, in my personal life, and while doing project estimates. It’s really nice to use it for everything to help keep me organized.

On the other hand, it’s a bit disheartening to see how much work there is left to do. For example, I have identified thirteen bugs in the software already. Thirteen! And it’s only been 5 days since the launch.

Some of them are exceptionally easy to fix, for example Issue 211 says that when viewing sub-project milestones, the ‘Inquiry’ field actually duplicates the ‘Feature’ field. While I haven’t looked into it yet, I’m certain that this was simply a copy/paste error in the code that went unnoticed for a very long time. I don’t make extensive use of subprojects myself, although I know that some users will.

Other bugs, like Issue 164 states that if a session expires, and the user had already uploaded some files, those file uploads are lost. Hmmm. Much more difficult to fix. Basically, it means someone started to enter a new issue and either took more than 20 minutes to do it, or left their machine after uploading the files, and then came back to do it. This is much more difficult to fix. It would involve creating temporary pointer objects embedded in the page to rows in the database representing these files. It’s a much more complicated problem, and addressing it can create even more problems.

I currently have 38 issues targeted to Version 1.1.0, and of those, 12 are bug fixes. The lone bug which will likely get pushed off to Version 1.2.0 is the file upload during expired session bug. Everything else works in that situation, it’s just that the files uploaded are lost if the page didn’t postback within the last 20 minutes.

What went right:

Time Management - Now that I’m doing contract work, my time is generally my own. It’s nice to not have to commute for 2 hours every day. It helps a lot in getting things done. By maintaining roughly the same schedule as I was before, I get 2 hours more to myself every day, and for the most part, I’ve been using those hours to help me get Milestones out the door. It also helps that my hours are no longer set.

If I want to work 10+ hours in a day doing contract work, I can. If I feel like I’m not getting anywhere with Milestones, I can switch to the contract work for a while, log some hours to help pay the bills, and come back later. I’m a total night owl when it comes to working. I’m very comfortable working till 3 or 4am and sleeping till 10am. On the other hand, I’ve had days where I’ve been up at 6:15am and working till 10pm before as well. What it amounts to is that my time is much more efficiently used than it ever was when I was on a strict 8 hour schedule.

Product Evaluations - With the lone exception of the ‘bug’ I ran into while evaluating the Wise Installer, everything seemed to go pretty well. It was a little bit frustrating attempting to set up my automated build environment though because I absolutely needed to have non-evaluation versions to get the batch processes running properly. The trial version of the obfuscator I chose didn’t allow command line mode. Also, the evaluation version of the Wise Installer forced the user to click on a dialog box every time it ran, command line mode or not.

But to be honest, neither of these problems was earth shattering, and both went away very quickly once I purchased the full versions of the software.

A Business Credit Card - Bank of America has been my bank of choice ever since they took over Fleet. I used to have my Game Thoughts business account with Fleet until they were acquired. I never had any problems and if anything, the service simply got better with Bank of America. When I set up my business checking account, I received a ton of business credit card applications in the mail. I ignored them for the most part, since I wasn’t quite ready to go full time with the business, but when it came time to do so, Bank of America laid down an offer I couldn’t refuse. 0% financing on all purchases for 1 full year.

With a new business, cash flow is a mighty big problem. How do you buy things without money? You buy it on credit. Well, as a new business, you have no established credit, so then what? Simply put, you’re screwed.

When I saw this offer from Bank of America, I knew I’d be killing two birds with one stone. The service would be great, I didn’t have to go outside my bank, and the 0% interest on all purchases for a year really put it over the edge. I applied for it, was accepted and given a healthy line of credit which I used to fund all of my business purchases. While I am personally liable for all charges incurred, by having a separate business credit card I can write checks out from the business checking account and not have to worry about paying for anything myself.

What went wrong:

Not Enough Time: While my time management skills are pretty good, and Milestones certainly helps me to budget my time wisely, there’s simply not enough hours in the day at times. It turns out that certain things, like marketing and research, take an extraordiary amount of time to do, and there’s very little immediate return on that time investment, which seems like a good reason to put it off. I’ve worked 16 hour days in the past 2 months trying to get everything done for the product launch, and the installer problem set me back a good 3-4 weeks. Even after I solved that problem was the additional issue that the connection string created by the Wise installer is an ODBC style connection string, not a Sql Server connection string. This forced me to do some pretty funky parsing to convert from ODBC to SqlConnection before using the connection string.

There are simply too many instances where time was a factor. Luckily for me, testing was done as time went on because I was using the software so much myself. Every day, I pounded on the machine, bravely vanquishing bug after bug as each of them reared its ugly head. I also went above and beyond my specs by adding in decent looking icons before the v1.0.0 release. The old icons were probably copyrighted anyway, and that simply wasn’t an issue I wanted to deal with if I didn’t have to. So, I bought an icon package and spent about a day integrating the new icons and making the UI look a lot better than it did before.

Cash Flow: As someone who is somewhat unfamiliar with the consultant market, I realized a very important lesson very quickly. You need to have a very strict budget when you first strike out on your own. It’s very easy to trick yourself into thinking that just because you’re getting paid x times what you were before, you’re going to have an easy time making ends meet. Welcome to the real world my friend.

Consultants don’t exactly get a weekly paycheck. In fact, after you submit a bill, it could be 30, 60, or even 90 days before you see a check, depending on your client. I was in the fortunate position of being subcontracted out to a company whose client had committed to paying within 21 days and had electronic invoice submissions. In addition, when the invoice is paid and the funds clear the account, I am issued a check. So after I submit an invoice, I get a check in about 30 days or so.

Don’t get me wrong though, I was sweating bullets at the end of November. I was able to make ends meet before I got my first two checks but only by dipping into my wife’s emergency fund. Now, things seem to be going well, but it was a bit stressful for about 2 weeks there. If you go the contractor route, make sure you get guarantees about when you’ll be paid, and have money stashed away to help make ends meet if they don’t come through when you need them to.

Not Enough Manpower: Doing everything yourself is a very difficult task. I wish that at the very least, I had a junior programmer helping me full time go through these things in Milestones. Even now, there’s documentation to be written which is likely to take a while because there are more important things to do than documentation. Everything is up and running, the online trials seem to be working perfectly, but marketing has a huge gap right now. People simply don’t know that Milestones even exists. It’s hard to make money on a product when nobody knows about it.

Milestones also has a great way of telling you how much work you have left to do on any given summary of the issues you’re looking at, so long as you filled in the time estimates of course. But it’s disconcerting to see that number trend steadily upwards as the work piles up and you’re spreading yourself too thin to keep up with it all.

Mild Burnout: When you’re working seven days a week and putting in more than 10 hours a day each and every day, it won’t take long before you burn yourself out. This is one of the more serious dangers when creating a startup, especially because of the smaller team size. If it’s just you, and you aren’t doing anything, you can be seriously screwed. Even if you have a partner, unless you talk about burnout, there’s likely to be some resentment because one person is doing a lot of work, and the other isn’t doing much at all. That’s no way to get a business off the ground.

It turns out that I’ve been experiencing a bit of mild burnout. Fortunately, I could feel it coming and took some steps to prevent it from ruling my entire world. In my off time, I like to play video games, and I like to read fantasy books. On my bookshelf, I’ve had some David Eddings books which I never quite finished reading. I read book 1 of The Tamuli, but never bought books 2 or 3. I reread book 1, and then bought books 2 and 3. I still have a little ways to go in the third book, but I’m nearly finished.

Reading does two things for me. First, it relaxes me because I’m not staring at a computer screen anymore. Second, it gets my mind completely off of work and I generally just forget about everything else. I’m an extremely fast reader though, which I think is one my my downfalls. I remember when I was about 12 years old, I would go to the town library, check out 6 fantasy books at a time, and have all of them read within the next 2 days. Doing nothing but reading, I can burn through about 1200 pages in a day, non-technical stuff only of course.


It would seem that of the things that went wrong, there are a couple of areas which will straighten themselves out on their own. From this point on, I don’t forsee cash flow to be much of a problem in the near future. While that may change should my client decide to go in another direction, or the work tapers off, I think that the software side of my business should help buffer any sudden changes.

Not enough manpower is something which probably plagues every company on the planet. There’s always more work to do, and always more features to cram into the software. I think the key is to set a schedule, make your best guess estimates at how long anything is going to take, and continually revise and update the schedule to reflect ongoing changes.

Burnout is always going to be a problem. The key to burnout is managing it effectively. By keeping tabs on how close to being burned out you are, you can mitigate the effects by making sure to add time off to your schedules. In the game development world, it’s seen as a badge of honor to be working 12-16 hour days for weeks or even months on end. That’s just incredibly stupid. Once that final push is finished, the developer is so burnt out that it can take months, or even years to recover. I know this because I’ve been burned out for months at a time before. It’s not fun, you have no motivation, and the quality of your work really isn’t all that good.

I hope that this has been somewhat enlightening for you. Having written it, I’m certainly more aware of the things that have changed over the past few months, and some of the challenges that lie ahead for Moon River Software.


UPS Newsflash Update

Posted in Daily Entries on December 11th, 2005 by Mike Taber – Be the first to comment

I found out this morning what actually happened this past week with my server. It turns out that UPS did indeed have my correct address on my server. But it wasn’t that they misheard The UPS Store. It’s simply that they can’t read, and it was delivered next door. Since it was late at night, a friend of my neighbor saw the package lying on the front step and took it inside to keep it safe. UPS really did leave my server outside in the freezing cold, but thankfully it was only there for about 20 minutes or so.

This morning, having realized that the name on the package was not that of my neighbor, and realizing it had been misdelivered, this good samaritan stopped by and dropped it off for me.


Now I just need to find the package that the post office says they delivered on November 23rd.


Paychex checks in

Posted in Daily Entries on December 8th, 2005 by Mike Taber – Be the first to comment

I met with a representative from Paychex this morning, and the experience was extremely pleasant. I’ve known for a while that I would need to outsource my payroll needs. You might think that it’s just a matter of writing yourself a check every week, but it’s a bit more complicated than that. In fact, it’s a royal pain in the stones. There are forms, forms, and don’t forget some more forms. There’s quarterly reports you need to file, income tax, state unemployment tax, federal unemployment tax, Medicare, etc. The list goes on. And those are just the taxes the business has to pay on top of your salary. That doesn’t include the taxes that are taken out of my salary afterwards, nor does it include changes to the tax laws in the middle of the year.

As an example, lets use nice round numbers and say I’m paying myself $1,000/pay period. Based on the 11% corporate employemnt tax, the business will pay out $1,109.80 to Paychex, plus the processing fee of around $30, give or take, and depending on the pay period. I’ll need to have around $1,150 in the business account to handle payroll for the week. Then, Paychex deducts all the state taxes, federal taxes, and whatever else gets taken out of my paycheck just like everyone else (who legitimately pays their taxes of course). Then on payday I’d get a check for probably between $600-$700, depending on deductions, income level, pay frequency and what-not.

Paychex will handle all of that for me. From what I understand, I go to their web site every week, tell them how much I need to be paid, the funds are withdrawn from the company account the day before payday, and the following day at 12:01am, the funds show up in my personal checking account, sans taxes. Sounds pretty simple to me, and that’s what I’m paying for. Simplicity, and the fact that it gives me more time to work on my business.

I could certainly do it myself, but to be honest, I really just don’t want to. It’s well worth $30/pay period to have them do it for me and simply tell me whether I’m breaking any laws. Mind you, they made it very clear that they’re not there to advise me on what I should be doing. They do what I tell them to. Their advice was to ask my CPA for advice.


Attention UPS: It’s winter in New England

Posted in Daily Entries on December 7th, 2005 by Mike Taber – Be the first to comment

There’s something about the lack of attention to details that irks me sometimes. I realize that I myself am guilty of this on occasion, but I do my best to stay on top of things. And if, for example, it’s your job to move boxes from one place to another without destroying their contents or putting them in danger, you’d do that right?

I recall years and years ago a poster that was hanging up in the Computer Engineering department at RIT which said something to the effect of “Is 99.9% good enough?” As college students, we quickly applied the metaphor to tests and homework grades, for which 99.9% was indeed good enough. However, there are a large number of cases where this is simply not true.

If 99.9% is good enough, then:

  • Two million documents will be lost by the IRS this year.
  • 811,000 faulty rolls of 35mm film will be loaded this year.
  • 22,000 checks will be deducted from the wrong bank accounts in the next 60 minutes.
  • 1,314 phone calls will be misplaced by telecommunication services every minute.
  • 12 babies will be given to the wrong parents each day.
  • 268,500 defective tires will be shipped this year.
  • 14,208 defective personal computers will be shipped this year.
  • 103,260 income tax returns will be processed incorrectly this year.
  • 2,488,200 books will be shipped with the wrong cover in the next 12 months.
  • 132,412,800 cans of soft drinks produced in the next 12 months will be flatter than one of the 268,500 defective tires.
  • Two plane landings daily at O’Hare International Airport will be unsafe.
  • 3,056 copies of tomorrow’s Wall Street Journal will be missing one of the three sections.
  • 18,322 pieces of mail will be mishandled in the next hour.
  • 291 pacemaker operations will be performed incorrectly this year.
  • 880,000 credit cards in circulation will turn out to have incorrect cardholder information on their magnetic strips.
  • $9,690 will be spent every day on defective, often unsafe sporting equipment.
  • 55 malfunctioning automatic teller machines will be installed in the next 12 months.
  • 20,000 incorrect drug prescriptions will be written in the next 12 months.
  • 114,500 mismatched pairs of shoes will be shipped this year.
  • $761,900 will be spent on tapes and CDs that won’t play.
  • 107 incorrect medical procedures will be performed each day.
  • 315 entries inWebster’s Third New International Dictionary of English Language will be misspelled.

I’ve traced this list back to being nearly a decade old, so if I could give credit to the source, I would. Unfortunately, I don’t know who originally created it.

I recently had a package shipped from Dallas to my home office here in Massachusetts. Nothing fancy. Just a server that I had colocated there for a long time. The UPS Store was more than happy to go pick it up for me, package it, and ship it to me via UPS ground for a mere $55. I was fairly pleased at the cost. When I had originally sent it to Dallas, it cost me about $110, but I was sending it 2 day air so it was more expensive. UPS gave me a tracking number early last week, and it seemed that I would have it back by Monday.

On a whim, I decided to see where it was the next day. No update on the UPS website. In fact, they hadn’t even picked it up yet. I was slightly irritated, but for $55, you can’t exactly expect fast service. By the following day, UPS had picked it up and it was on its way. Saturday, I checked again and there weren’t any updates. “Strange”, I thought. Usually they’re pretty good about updating their site with the shipping information. Well, FedEx is anyway. Competitors usually do similar things, but perhaps it was different with UPS ground. I’ve always felt that FedEx was a much better run company in terms of updates, rerouting, and service. They’re a bit more expensive most of the time, but the cost is well worth it in my eyes, especially when you’re looking for reliability.

Monday came and went, with no server. I checked mid-afternoon since I’d seen the UPS truck nearby, but didn’t see it stop. I thought maybe they missed me and the note on my door had blown away. It was awfully windy. Tuesday came and went. Still nothing. Curiously, around 11pm Tuesday night I checked the UPS site, only to find that it had been delivered at 6:02pm on Monday night. It gets dark here at 4:30pm and it was after 6pm when it was dropped off. They apparently left it by the garage…. BY THE GARAGE!!!

I’d like to point out that The UPS Store packed my server. (I would link to them here, but they totally don’t deserve it.) They knew it was a rack-mount server. The guy I talked to didn’t even need the address of colo facility where I picked it up. He knew exactly where it was, since he’d gone there many times and done this before. When I received my copy of the MSDN from Amazon, there were two UPS guys waiting at my door to make sure I signed for it. TWO OF THEM! After all, it was worth about $2,000 so I’m sure Amazon wanted it to get to me ok. But to be fair, the MSDN subscription is a set of plastic disks, which would hardly be ruined by asome time in the cold, or even in the rain.

But, UPS apparently did indeed leave my rack mount server outside, in December in New England. It said so on their website. I don’t know if any of you watch any Patriots games on tv, but it snows here… a lot. And it snowed this past weekend. (Global warming my ass.)

I checked by my garage, and no server. I checked across the street, thinking they mistakenly put it at my neighbors house, since we’re right across from one another, and I suppose that a substitute UPS driver may have confused them, but he doesn’t have a garage. After spending 20 minutes outside, in the freezing cold searching all over the place, I called it a night. I couldn’t imagine what the temperature was doing to my server.

Wednesday comes, and I call the UPS Store to ask about it, telling them I haven’t seen it, and that according to the tracking number, it was supposedly delivered on Monday. I give them the tracking number, and he checks the UPS website to see what’s going on. Then I’m told that “The UPS website says it was delivered at 6:02pm on Monday”. I thought I just said that? Hmmm. Well, he’ll check into it and call me back.

A few hours later, I get a phone call from the UPS Store telling me that UPS apparently delivered it to my neighbors house. He said that UPS kept giving him a very slightly different address than it was supposed to have on it, and they put my neighbors address on it instead of mine. Way to pass the buck. You could be president someday buddy. I check at my neighbors house by the garage, and there’s nothing there. She’s in Florida for a little while, so I know she didn’t take it inside. I call The UPS Store again and report it missing. At this point, my server could be face down in a ditch with a knife in its back for all I know, victim of some gang attack by AMD servers. Wiley little bastards.

What it really comes down to is attention to detail. Any number of steps along the way, this entire problem could have been averted. The guy who packed it should have made sure it was signed for. The person who dropped it off should have had some visibility to the fact that the package was insured for so much money and needed to be handled with some care, forcing a signature of some sort and not leaving it outside. If the numbers hadn’t been mixed up in the handoff between The UPS Store and UPS, then the package would have been delivered to the right place and I could have received it personally.

While the package is insured, the data on the hard drives is more important to me. Thankfully, I averted a total disaster by downloading all of the important information before I had them ship the server back to me. But now I have to wait for 1-8 business days (who makes up these timeframes?) for UPS to do an investigation and figure out what happened and what to do. Worst case scenario, I collect the insurance money for the server, and buy a new one. Best case scenario, it is found somewhere, and the hardware isn’t dead because of the cold. I would expect it to be largely ok, but you never know what sub-zero temperatures will do to a computer. I can’t say I’d have wanted to wait in line with my own hardware to try it out.

I am a bit upset that I didn’t insure it for the full value of the server though, since I’d forgotten how much I originally paid for it and how much it would cost to replace it when I was asked how much insurance I wanted to put on it. I suppose not everybody pays attention to details all the time.


It needs to just work

Posted in Daily Entries on December 6th, 2005 by Mike Taber – Be the first to comment

As time goes on, software should get better right? I always thought this to be the case. Enter Firefox v1.5 to prove me wrong.


These are screenshots that were spliced together and show the memory and CPU usage of Firefox when I was downloading a bunch of icon packages that I bought from VirtualLNK this past Friday. VirtualLNK, LLC makes a great product by the way. Their icons are top notch, and when you combine the quality with the price, you’ve definately got a winning combination.

As I was saying, Firefox basically choked on these downloads. It’s certainly a good thing that I bought more ram for my computer several weeks back. Several came across with CRC errors as well, which are not present in the original files on the server. (I checked with VirtualLNK support on that, just to be sure.) So it would seem that Firefox has taken a proverbial step backwards, making their product worse instead of better.

I find this very unfortunate. I’ve been using Firefox for many months now, mainly for the tabbed browsing, but with the past few releases, it seems like things are getting worse, not better. It’s gotten to the point that I only have three options left to me.

1) Suffer through it, hoping they get it right in the next version. This isn’t much of an option. It’s just not tolerable.
2) Downgrade to an earlier release of Firefox. This may not be an option if I can’t find one. I haven’t seen any compelling new features in a while, that downgrading to version 0.9.6 would be a big deal.
3) Ditch Firefox entirely and go back to Internet Explorer.

Throughout the browser wars, I must admit that I’ve been quite the turncoat. I’ve switched sides more times than I care to count, and the change has generally always been pleasant. To date though, I’ve never switched because of bugs in the product. It was generally new innovations that I simply had to have. Eventually, the other product would catch up and I’d change my attention back.

I think this time is different though. If Firefox can’t keep it together, I don’t think I’ll be sticking around much longer, and I might not be back the next time around. I simply don’t have time to waste on something as stupid as a browser. It needs to just work.