Published by nick on 25 Apr 2008

Debugging rules

My co-worker, Artur Bergman, gave a talk today at the Web 2.0 Expo.

He highlighted these rules of debugging, and they were great, so I wanted to share.

  1. Understand the system
  2. Make it fail
  3. Quit thinking and look
  4. Divide and conquer
  5. Change one thing at a time
  6. Keep an audit trail
  7. Check the plug
  8. Get a fresh view
  9. If you didn’t fix it, it ain’t fixed.

Brilliant! See http://www.debuggingrules.com/

Published by nick on 14 Apr 2008

Going to Wikia

I left Yahoo recently, Friday was my last day. After taking some time off for family travel, I’m going to work for Wikia.com. Wikia is building niche community sites on the wiki concept, using the Mediawiki software.

They are also working on Wikia Search, a community driven search engine and crawling effort. If Jimmy Wales and Wikia can do what they did for Wikipedia, and apply that concept to search, I think has a decent chance of taking on Google

Published by nick on 28 Mar 2008

Leaving Yahoo! because of Microsoft

I’ve resigned from Yahoo!. Those that follow my blog knew this was coming, given
how outspoken I’ve been about not working for Microsoft. To make it very clear — Yes, absolutely, positively, my only reason for leaving was the upcoming Microsoft takeover. Otherwise I would have stayed at Yahoo! for many years to come.

I’ll miss Yahoo!, they are a great company, with a very smart, passionate group of people. I hope that everything goes well for my fellow Yahoos!. I’m sad to miss the people, the great culture, and the company perks. Gone are the days of free coffee, shuttles to work, tech talks, hack days, and a tremendous amount of community support. :(

But — what if I’m wrong and the deal doesn’t go through? Yep, I am willing to accept that risk. By my estimations, there is a small (less than 10%) chance that Yahoo! will avoid a Microsoft takeover. There may be a white knight or a wild card savior, and there are anti-trust issues still to be cleared — the deal may never go through.

Everyone chooses their own path through life. Personally, I don’t play "wait and see" with my career. Based on my research, I think the Microsoft takeover is all-but-inevitable. And even if they aren’t going to radically change things right away, the company will move in a direction that I’m not in agreement with.

It’s importantly for me to be passionately engaged with my work, and I’m excited to do that for a company whose values I believe in. Where am I going next? More on that soon. :)

Published by nick on 24 Mar 2008

Code reviews before every commit?

First, a little cartoon about measuring code quality.

How true this is! See the original article here:
http://www.osnews.com/story/19266/WTFs_m

All developers talk about code reviews, but most of the time, it’s one of those things that there is never enough time for, and always takes a back seat to other priorities, which means it’s easily left off.

I work part time at Wikinvest.com, and we have a policy that requires that all svn commits are code reviewed first. When this policy was first introduced, I thought that this policy was Draconian and would slow things down.

I kicked and screamed inside, thinking that it was unnecessary and was going to hamper productivity. I was told that this was common practice everywhere, which I knew wasn’t true. I went along — begrudgingly. Since I’m part time, it’s not my place to try to shape development policies.

However, now that I’ve done this for a few months, I’ve come to feel differently. Here are the advantages I’ve found in having every commit code reviewed.

  1. Less bugs — this is obvious. More mistakes are caught. The live site has less bugs. Duh. The evidence: Wikinvest.com has less live site bugs than any place I’ve worked. The time savings for this benefit alone more than make up for the total time spent fixing bugs.
  2. Higher initial code quality — Why? Hacks will be reduced. If you know that your code is going to be reviewed by someone else, you’ll take that extra time to write it well. Your name and reputation is on the line, and it will be presented to someone else for review. You know this as you are writing the code, and you’ll be encouraged to treat the project like a high quality craftsman would. Comments will be clearer. Edge cases will be more thought through. Logical flow will be enhanced. In general, developers will take more pride in their work.
  3. Enforced cross training — Every new piece of functionality, feature or fix has at least one other person that has seen it, and taken the time to understand it. This insures better code coverage across the team in case someone leaves or goes on vacation. Development managers — this will solve one of your biggest problems! When someone changes something on their own without letting anyone know, and the live site breaks, now you have at least one other person that might say "I think I know what it might be."
  4. Developers learn from each other — I can attest that my code quality has improved because of code reviews. I’ve learned better practices, both by seeing others code closely, and by having others critique my code. I’ve been in several code reviews where I’ve told people about a better approach because I knew about some special function in PHP or I had previously solved the problem in a more elegant way. Big thumbs up here.
  5. Coding standards and conventions are better enforced — Even with the best intentions, we can miss the way the rest of the group is doing something. Perhaps we shouldn’t have that particular variable hard coded in the script, because someone else has already moved it to a configuration file. Or perhaps there is a new standard way for getting a database connection, but you missed the e-mail that announced the new practice. Code review to the rescue! It’s always good to go along with what the group is doing and adopt standards. Get two sets of eyes on the code to make sure.

When you weigh all the above advantages, the extra time spent code reviewing for every commit is easily offset by all the above benefits, and I’m sold that this is the right approach.

Here are some best practices to consider if you are implementing in your development environment.

  1. Set up a process for getting the reviews done and commits to happen quickly.
  2. Spread it around! Everyone should review everyone else’s code. Discourage silos. Remember, one of the key benefits is to have developers learn from each other. If two buddies always review each others code, you aren’t getting all the benefits from spreading knowledge across the team.
  3. Discourage any exceptions. The only exceptions are "trivial" changes like spacing or comments.
  4. The svn commit message should contain the name of the person that did the code review.

Instituting code reviews before every commit won’t be a popular approach for everyone. People will kick and scream, like I did. The chief argument will probably be time. "It will slow us down too much". Yes, commits will be slower. But overall development will be much more efficient, and there will be less bugs. Would you rather spend less time on code reviews now or more later on bugs?

In doubt? Give it a try and see what happens to the code quality and developer engagement.

Published by nick on 17 Mar 2008

300 parody of Yahoo Microsoft takeover

This is fantastic.Steve Ballmer, Jerry Yang, Sue Decker, Bill Gates, all portrayed as the appropriate characters.

Published by nick on 11 Mar 2008

Wikinvest wins award for Best Business website of 2007

In addition to being full time at Yahoo!, another company I work for part time, Wikinvest.com, won an award at the 11th Annual South by Southwest Interactive Web Awards for best website of 2007 in the business category. See the complete list of winners

Hooray!

Shameless Plug:
Wikinvest is a website that applies the concept of wikipedia (community edited content) to the world of investing. We’ve got some great content, some very interesting expansions to the MediaWiki software, and the Search is pretty damned cool do (I built that). ;-)

If you are into investing, I encourage you to take a look

Published by nick on 07 Mar 2008

Is Microsoft changing it’s evil ways?

As a Yahoo! employee that stands emphatically against Microsoft’s hostile takeover, I’ve been pretty vocal about how awful Microsoft is because of their poor technology, their anti-open source stance, and their anti competitive history. So much so that Yahoo! management has asked me to "tone it down". Ha. Ever since grade school, I do what I think is right, not what I am told to do.

Could I be wrong? Could Microsoft be changing it’s ways?

First, Microsoft announced that they were open-sourcing some of their platforms, a clear attempt at making-good with the open source community. I cautiously applauded this when it happened, even though I think that the timing was very convenient for appeasing Yahoos.

Today I ran across an article by Robert Scoble, where he highlights what good Microsoft has done in the last 6 months, and I agree the results are encouraging.

I just had dinner with a bunch of Italy’s top tech bloggers and technologists and Marc Canter. Plus I’ve been talking with people all day long. Microsoft hit major Internet home runs today with its announcements, based on what I’m hearing from formerly-skeptical developers.

I haven’t heard this level of excitement about Microsoft’s Internet Strategy in years.

Interesting story, it’s worth a read. I support a change of heart by Microsoft, and I hope it’s genuine.

Not believing that Microsoft could really be trying to be a good citizen, I dug deeper and found an article by Dana Gardner, and he poses some interesting questions on what Microsoft’s ulterior motive may be:

And that raises the same old questions. Will the power increase to a point where the openness declines? Will the standards over time be increasingly set by the de facto marker leader? Will the Internet and its efficiencies work best for consumers and users, or those that can manipulate it best?

See the full story here

Hmm. What are they up to? We will see. Most of the past 10 years of Microsoft’s business practices are marred with bad karma. If they are good citizens for the next 5, they can show the world that they have changed.

Published by nick on 02 Mar 2008

The most effective cure for electronic problems

Wii Icon

As a computer geek, I’m often consulted by my friends, family, and neighbors when anything electronic fails. People assume that because I wear glasses, I have some magic ability that has me more capable of fixing their microwave then they do. And they are right, I do. I have one valuable piece of information that fixes most electronic problems, more on that in a bit.

People in the computer industry are often hounded by those around them to fix their computer/electronic problems. Some guys get admired for their height, or their dashing good looks, the car that they drive, and how their hair seems to always be perfect. Girls look at them and say "Ooo, look at his hair, I bet he will take care of me." or "He’s got big muscles, I bet he’s good in the sack".

Me? Sigh. No. Girls look at me, a computer geek with glasses, and say, "Ohhh wow, I bet he can help me fix my computer!"

If they are hot nice enough, I usually will. I’m not looking for extra work or anything, but I do like helping people. Sometimes it does get tiring though, and the last thing we want to do after working with computers on fun stuff all day is to fix your broken computers. This sentiment is captured well by a T-shirt from ThinkGeek.com, which states, "No, I will not fix your computer".

I have noticed that this has gotten better in recent years. Why?

  • Electronics are more reliable then they used to be. The bar for reliability in electronics continues to rise, although it’s still far below what it should be.
  • Computers are more reliable. Microsoft Windows sucks less than it used to, and more people are using Macs instead of PC/Windows. Macs are more reliable and easier to use. Often times when people come to me now with Windows problems, I’m obligated to remind them that I don’t have problems like they do because Macs "just work".
  • The Geek Squad can be called.

So enough background, what is my secret? What is the most effective cure for fixing electronic problems? It’s a two step process.

  1. Turn it all the way off.
  2. Turn it back on.

Yep, that’s it. That’s my secret. A good portion of the time when electronics fail, simply resetting them to their original state will have them start working again. Now notice that I say "Turn it all they way off". This includes unplugging it from the wall, or taking the batteries out. I mean all the way off.

I’ve had this be very successful on a number of different electronics.

  • Microwave that wouldn’t turn on
  • Printers with various issues (5+ times)
  • Fax machines that wouldn’t work
  • Washing machines with strange error codes
  • Televisions that wouldn’t turn on
  • DVD players with strange messages
  • Xbox and Xbox 360 that wouldn’t turn on
  • Playstation (1, 2, and 3) that were acting odd
  • Car navigation systems
  • Ipods that weren’t playing correctly
  • And of course, Microsoft Windows computers - rebooting Microsoft Windows has fixed 100+ problems for me. Linux and Apple also need to be occasionally rebooted, but 99% of problems can be fixed by restarting services, so there is no need to reboot the whole computer.

My family and friends know that before asking me to fix anything electronic, that they better have done this, because it will be the first thing I ask them: "Did you turn it off and back on again?". ;-)

The next time you have something electronic fail, before calling up your friendly computer geek, try turning it all the way off, and then back off again, and see what happens. Comments and success stories welcome.

Published by nick on 29 Feb 2008

Microsoft and Yahoo!-what happens now?

I’ve seen a few blog entries lately from others saying "I’m so glad that Yahoo rejected the Microsoft offer." This is far from accurate, the offer was only the beginning. Here is a compilation of the current options that lay before Microsoft (MSFT) and Yahoo! (YHOO), based on all of my research. This isn’t a report — it’s a collection of my thoughts. First, some important facts.

Important fact #1 - Since Yahoo! is a publicly traded company, the Yahoo board has to make decisions based on short term shareholder value, not necessarily what is right, what is good for Yahoo!, what employees (including themselves), or what is good for the Internet as a whole.

What does this mean? Well, as much as Jerry Yang loathes the idea of his company being taken over (those are my words, not his), he is obligated, by law, to "act in the best interest of shareholders". That’s why whenever a CEO gives a speech, you’ll notice that they will always include the line "maximizing shareholder value".

And what if he doesn’t act in shareholders best interests? Then shareholders sue. There are currently 7 Pending lawsuits against Yahoo over their handling of the Microsoft deal. Jerry is damned if he does, damned if he doesn’t. Remind me to never take my company public.

Important fact #2: Just because YHOO rejected the offer, that doesn’t mean it’s over. Microsoft made it clear in their initial offer that they would get nasty if they needed to. From Steve Ballmer’s original offer:


Depending on the nature of your response, Microsoft reserves the right to pursue all necessary steps to ensure that Yahoo!’s shareholders are provided with the opportunity to realize the value inherent in our proposal.

Translation: You can do this the easy way, or we will take you by force.
The day after Jerry rejected the bid, Microsoft hired a "proxy firm", which will lobby the shareholders to overthrow the board, one of the first steps in a hostile takeover. Microsoft is making it well known that they will be hostile if need be.

Important Fact #3 - Jerry can’t simply say "No", he has to do something that will get the stock price up. See #1. He has to act in shareholders best interests. In Jerry’s rejection of the bid, he states that $31 "substantially undervalues" Yahoo!, which leaves the door open for Microsoft to come back with a higher offer. But since the stock will slowly drop back down to $20, he has do to something.


So what can happen now? Let’s look at some scenarios.

Scenario #1 - Microsoft accepts the rejection letter and walks away. Yahoo remains an independent company.

Pros:

  1. Both Yahoo! and Microsoft remain *better* positioned to take on Google by themselves. See Exploding the Microsoft-Yahoo-team-up-against-Google myth on why the combined companies would be worse off.
  2. Microsoft saves $44 billion for something else. Perhaps a donation to the Gates Foundation would help Microsoft offset some of its bad karma
  3. Yahoo remains a place where Yahoos would like to work.

Cons:

  1. Yahoo’s stock price is artificially inflated right now because of the Microsoft offer at $31/share. If the offer is withdrawn, the stock will likely plummet to what it was before the offer (~$20/share). Ouch!
  2. Steve Ballmer’s attempt at building a legacy of his own failed, and since he will win at any cost, he’ll set his sites on something else. The rest of the world should watch out.

Likelihood:
Not very likely. 5%. Why? Because the shareholders of Yahoo! will force Jerry’s hand. Since the stock will be at $20/share if Microsoft withdraws their bid completely, if Jerry can’t come up with a compelling plan to get it to $31, shareholders will overthrow the board and force Yahoo! to accept the offer. Isn’t corporate America great?

Scenario #2 - Yahoo! finds a white night. Some other company steps in and buys Yahoo! instead, keeping it out of Microsoft’s hands. Rumored possibilities have included:

  1. News Corp. WSJ report
  2. Google. NYT report
  3. AOL/Time Warner
  4. Comcast
  5. NBC

Likelihood:
Low. 10%. Most press states that these "white knight" rumors are mostly a negotiating tactic on Yahoo’s part to get the bid raised. It’s their way of showing the world that they have other options, and don’t need to take the Microsoft offer.

Scenario #3 - Microsoft raises its bid. Since the first bid of $31 "substantially undervalued" Yahoo! according the the bid rejection letter, if Microsoft raises its bid, then the Yahoo board will have to reconsider.

The interesting question on scenario this is surrounding the timing. When will they do it?

  1. At the 11th hour, before the hostile takeover. I personally don’t think that either company wants to go through the motions of the hostile takeover. It’s messy on both sides. It makes sense for Microsoft to threaten the hostile takeover, then at the very last minute, when it looks like Yahoo!’s days are over, Microsoft steps in with an offer of $33-$40, and the board accepts, with no other better options.
  2. Microsoft can just wait. As time passes, Microsoft position increases. Yahoo! will be under more and more pressure to come up with an alternative to Microsoft’s bid. When the stock is at $20, they can step in and offer $25, and the board may have no choice. However, there may be other incentives for Microsoft to hurry this along, such as regulatory approval and the upcoming election.

Likelihood:
High. I say 75%. Again, the real question is when.

Scenario #4 - Some other scenario that no one else has talked about. The wildcard. The crazy ass option that will just save the day and keep everyone happy. Do you know what it is? Please leave a comment.

Likelihood:
Low: 10%.


If Microsoft is successful in its hostile takeover attempt, there are still regulatory hurtles. Even after the deal is approved by both companies boards, it still has to pass anti-trust approval in the United States and European Union. Microsoft specifically addressed this in their initial offer:


We have dedicated considerable time and resources to an analysis of a potential transaction and are confident that the combination will receive all necessary regulatory approvals.

But this crazy. Everyone knows this will be a huge uphill battle. Microsoft isn’t exactly in good standing with the European Union right now, after just being fined 1.3 billion for even more anti-competitive practices.
And After Microsoft put Google through hell on Microsoft anti-trust issues for Doubleclick, Google has hinted that they will be doing the same. This deal will take many months (years?) to gain the necessary approvals, and the structure of the deal may be shifted to comply with the law.

It looks highly likely that Yahoo will fall to Microsoft. Anyone else have any ideas on how this can transpire? I’d love to hear comments.

Helpful Sources:
Full coverage of Yahoo-Microsoft on news.yahoo.com
Alleyinsider.com

Published by nick on 28 Feb 2008

Microsoft’s anti-competitive history

My recent blog posts on Microsoft’s Hostile Takeover of Yahoo have painted me, to some, as an open-source zealot, which maybe I am. However, there is another reason why Yahoos won’t work for Microsoft. It’s because of Microsoft’s history of anti-competitive business practices.

I wrote this as a one-liner before, but I decided to expand on this a bit. First, let’s look at the definition of competition. From dictionary.com:

1. of, pertaining to, involving, or decided by competition: competitive sports; a competitive examination.
2. well suited for competition; having a feature that makes for successful competition: a competitive price.
3. having a strong desire to compete or to succeed.
4. useful to a competitor; giving a competitor an advantage: He was careful not to divulge competitive information about his invention.

In business, competition drives success, which — ultimately — benefits consumers. The Bureau of Competition seems to think that American companies should avoid monopolistic practices. Karl Marx didn’t agree. And there are plenty of others that would say that government shouldn’t be involved in such matters.

Through all of these different stances on competition — they all agree that fair play is a must, or consumers suffer. Ok, check, most people would agree that healthy competition amongst business is good for consumers. So now what are some anti-competitive practices? Wikipedia serves us pretty well here: http://en.wikipedia.org/wiki/Anti-competitive_practices

From this page, I took a list of practices, and then we will see if Microsoft has done with each of these.

Action Description Microsoft?
Dumping Where products are sold into a market at a low price which renders competition impossible, in order to wipe out competitors. No examples found
Exclusive dealing Where a retailer or wholesaler is tied to purchase from a supplier. Yes. Microsoft works out exclusive deals with hardware manufacturers to lock them into selling Windows, and only Windows, on desktop machines.
Barriers to entry (to an industry) designed to avoid the competition that new entrants would bring. Yes. Entering the PC Desktop market is very difficult because Microsoft Windows has interoperability challenges with other Operating Systems. Some consumers stick with Microsoft Windows because they feel they have no choice if they want to use all of their programs, and this market share dominance prevents competitors from easily introducing new, competing operating systems that would benefit consumers
Price fixing Where companies collude to set prices, effectively dismantling the free market. Yes. The European Union seems to think so, after just fining Microsoft 899 million Euro for its practices
Refusal to deal E.g., two companies agree not to use a certain vendor Yes. According to this paper, the European and Microsoft anti trust cases cited "refusal to deal"
Dividing territories e.g., you get everything west of the Mississippi, we take everything east No examples found - not really applicable to software
Limit Pricing Where the price is set by a monopolist to discourage economic entry into a market. Yes. Windows is bundled with hardware at reduced pricing, sacrificing short term gains for longer term market share and profit from other software such as Microsoft Office, raising the barrier of entry for competition.
Product tying Where products that aren’t naturally related must be bought together; this prevents consumer choice. Yes. Two words. Internet Explorer. See full details on the Microsoft Anti-trust case in the U.S. and EU
Resale price maintenance Where resellers are not allowed to set prices independently. Yes. To be fair, this is common practice
Coercive monopoly All potential competition is barred from entering the market Yes. Reference above or below examples.

In looking at how many anti-competitive business practices Microsoft employs, we can see why Microsoft is a quintessential example of an anti-competitive company. Still not convinced? Let’s look at some specific notable examples in Microsoft’s history.

Case Study #1 - Microsoft vs. Apple, through anti-competitive business practices, Microsoft dominates it’s way to large market share to become the largest software company, even though Apple had a better product.

Case Study #2 - Microsoft vs. Sun. In an attempt to kill Java, Microsoft stops bundling Java with Windows

Case Study #3 - Microsoft vs. Netscape/AOL. Microsoft employes anti-competitive business practices to take over the browser market, going as far as intentionally crippling Netscape in releases of Internet Explorer. The United States Government steps in and penalizes Microsoft.

Case Study #4 - Microsoft vs. Linux via SCO. SCO receives investment help from Microsoft, and suddenly SCO sues effectively the entire Linux community with the new found funding, spreading FUD everywhere for businesses running Linux. Interesting coincidence.

Case Study #5 - Microsoft vs Real Networks. They settled a suit in 2005

Case Study #6 - Microsoft vs Novell. They settled a suit in 2004

Microsoft has an insatiable appetite to win, at any cost. They play dirty, and seem to disregard the moral implications. They’ll trip you in a foot race, foul you in basketball, or bite your ear a boxing match. All in the name of winning. Now the key question: When does the desire to win become unhealthy?
My answer: When it compromises your integrity.

I have four kids, and although I’m not perfect, I try very hard to lead by example. Among other things, I teach honesty and integrity as a core principal. My kids know that integrity is more important than winning. In my opinion, Microsoft has shown that winning is more important than integrity.

Having integrity as a core value is a critical factor in me choosing what kind of company I want to work for. How then, can I have a position where morality and integrity are so important to me, and work for Microsoft?

The answer: I can’t. And I won’t.

Update on March 28th: I’ve decided to leave Yahoo! because of the impending Microsoft takeover.

« Prev - Next »