Me on Marc Fleury on Sun purchase of MySQL

The last post was supposed to be this one, but I got distracted on how I found it. Needless to say, I’ll probably be haunting marcf.blogspot.com more, because he has some interesting commentary, as does Mark Shuttleworth of Thawte and Ubuntu.

Unlike Marc Andressen, who, while once genius, has become a trivial marketing guru and vaccuous political dilettante. Which I admit I’d probably become if I got rich too. Although, if Ning were better, judging by the postings on Guru.com, he’d be rich. Maybe its because Dolphin is eating his lunch. But if I had $100 (the typical asking rate on Guru for a MySpace or Facebook clone) for everyone who wants to build a social network site, I’d be pretty rich too.

I’m risking getting completely off track again, so here’s what I said about the purchase of MySQL:

Reward buyout.

Sun has already made a fortune off of MySQL. So has Oracle, so have Microsoft, Redhat, IBM, and Cisco.

Sun isn’t really trying to make money off of MySQL, they’re trying to make money off of the *next* MySQL. I don’t know what that is. But it will be open source, and it will increase productivity immensely. It will, as Bob Young says “grow the pie.”

Before MySQL there were two types of databases, Oracle and Access. Oracle was really good and Access had a lot of users. MySQL currently has *way* more users than Access did when MySQL came on the scene, and MySQL now is probably a better database than Oracle was then.

That’s not saying MySQL is so great, but that technology has come a long way. Did Oracle in 1995 have some features that MySQL doesn’t? Sure.

Whether you’re using Postgres, SQLite, Oracle, Microsoft SQL Server, HSQLD, Firebird, Derby, or whatever, you’re benefiting from the popularity of MySQL. If you’re still using Progress, dBase, or Sybase, maybe not.

My point is that MySQL did for databases what Netscape did for the internet, what Apache did for web servers, what Star Office did for alternate word processors, what Sendmail did for email servers, and what JBoss did for J2EE.

In the startup investment averse climate these days, acquisition is the way the market rewards innovation. You of all people should be aware of that, Marc. But perhaps you’re a little too close.

Despite the real value that JBoss brings to Redhat, (and perhaps MySQL will bring to Sun) the biggest reason for its acquisition is making you rich.

Because when the next Marc Fleury comes along with a silly idea to quit his job and move into his in-laws’ garage for a year to work on an idea he has for some open source application that will vastly increase the market size of technology X, the RedHats and Suns (and Ciscos and Dells) of the world want him to succeed. Or at least believe he’s got a shot.

Redhat itself was probably the biggest reward acquisition of all time. Only it was an IPO climate then. People wanted to reward Bob Young, and Alan Cox, and Linus Torvards, Tim O’reilly, and many open source folks they knew (or hoped) were in on the IPO.

That’s not to say the market always does what it wants or is always rational. Not everyone with a great (and successful) idea is always rewarded. Eric Allman, by all rights, should be almost as rich as Marc Andressen. While I doubt he’s doing too badly, I’d say email was as at least as big of a productivity gain as the browser. Maybe its because sendmail wasn’t as revolutionary as Netscape, or because it was open source, or because he had more modest ambitions, or greater risk aversion.

While I worry about JBoss “stagnating” at Redhat or MySQL “floundering” at Sun or Tangosol getting “buried” at Oracle, I’m not too worried. Because these products have already made huge productivity gains, and even if they died instantly on acquisition, they’ve already done the damage of 1) releasing their ideas and 2) showing other bright young entrepeneurs it can be done.

If only my in-laws had a garage.

Of course I’m spending 6 months off in Ecuador, but I haven’t made nearly the progress I’d like, due to lack of focus and perhaps biting off more than I can chew. I think QA Site is the way to go and CuencaTravel (somewhat of a social network site) is a good product to test it with.

I’m lacking in some areas of expertise, such as email server administration, graphic design, and sales.

Advertisements

A simple junit rant

I’m going to make this very simple. My last junit rant (online — I think on theserverside.com) resulted in a nice email from Cedric Beust about this new thing he was working on called testNG. Oh how I wish I could use it at work. Luckily, that will be an option in 3 days, as I will retire and work for myself full time. JUnit 4 has been a blessing over 3, though dependencies and useful annotations are still sorely missed. @BeforeClass is also mostly verboten, but is allowed in special cases when it shouldn’t be used!

Anyway, this is a very simple rant, though I’m very curious about how I uncovered it.

No assertNotEquals() yet!?!

I’ve wasted time trying to find a rationale. Of course, I have found the junit addons package, but I’m not going to force my employer into that dependency. Maybe I’m missing something, but this is probably the most valid unit test. The likelihood of two things being equal when you expect them to is pretty high, and the likelihood of something being true when you expect it to is even higher. What you really want to know is when something isn’t true (not difficult, even without assertFalse(), which for some reason is religiously implemented) or more especially when two values aren’t equal.

Roundoff errors immediately come to mind, and are an ideal candidate for the architypical unit test. Date handling is another example, and string munging also makes sense. So would image manipulation, though Java isn’t a good language for that.

Anyway, how I came across this, and I’m probably just stupid, is with temperature conversions. Here’s my test that I would expect to fail:

Temperature t = new Temperature(-40.0, ‘F’);
assertEquals(-40.1f, t.convert());

And here’s the code that is being exercised:

public float convert()
{
if (scale == ‘F’) { return 5 * (temp – 32) / 9; }
else if (scale == ‘C’) { return (9 * temp / 5) + 32; }
else { throw new RuntimeException (“unknown temperature scale”);
}

Maybe I’ve spent too much time in scripting languages that do a better job of casting or something. Anyway, it’s not a big issue what’s causing my bug, but I want my test to uncover it.

NOTES:

1 – It looks like there is no assertEquals(float, float.) So it is calling assertEquals(Object, Object). Behind the scenes is it treating them as doubles, integers, or strings?

1.5 – It looks like assertNotSame() will do the trick for this particular case. Is this the answer to checking round off errors? Still, it wouldn’t work on more complex arrangements, or on bit arrays (images), right? I guess it’s fair to write your own assert for comparing images, but surely someone’s done it before.

2 – It also looks like TestNG doesn’t have assertNotEquals either. I’ll probably get another note from Cedric that it was added to and and released yesterday or something.

I admit I was a bit star struck and felt ahead of the curve too that someone with reputation responded to my message. I should start a geek celebrity sighting scrapbook. I still remember when Havoc Pennington responded to an simple question about Metacity code. He dismissed it at the time as a pet project he’d abandoned and then a year or two later it got adopted as Redhat’s default X window manager. I seriously doubt my asinine patch was ever included. But I’ve got (or had) code in docuwiki. I wanted prettier table layouts and hacked a few features into it. I think that was the point I realized that I thought I could really code, submitting a patch and getting it listed on the release notes.

Nobody expects the QA inquistion

Our primary area of focus in testing is usability. Usability and security. Security and usability. Our two main areas of focus are usability and security…and functionality… Our three areas of focus — don’t forget stability. Among our areas of focus — Amongst our many areas of focus are included usability, stability, functionality, and security…and performance.

I’ll come in again.

The Quality Assurance TEAM