Friday, December 30, 2005

Return of The King

It's been a long time since I've blogged. I've had a good reason. My wife and I had our second child on November 17. We had lots of family come out for the birth of Raymond Howard Galpin, and then of course there were the holidays... So no time for blogging until tonight.
A lot has happened since then, too much to try to go back and write about everything. So I'll just hit a couple of big things:
  • Yahoo! -- Yahoo has been doing some very interesting things. Their acquisition of is the most interesting. They were already trying to do something similar with their "My Web." I don't know if actually has more users (or even as many,) but it certainly had a lot more mindshare. Yahoo also did a couple of hosting deals with some of the popular blogging software. To me this along with their other acquisitions (Flickr and Konfabulator) indicate a clear strategy of trying to embrace disruptive technologies. Yeah they probably are just doing this because of their compettition with Google, but they still deserve credit for such smart acquisitions.
  • Patriot Act -- The Patriot Act is one of the worst pieces of legislation ever passed. I was very happy to see that the filibuster threat was going to keep it from being renewed. The President's attempt to turn public opinion was actually a little surprising. It seemed very Schwarzenegger-ish, which made it even more suprising given Arnold's lack of success in 2005. The news about illegal wiretaps being endorsed by GW definitely helped the Democrats' stance. Let's just hope they can keep this up in 2006.
Alright that's enough for now. I'll definitely have more "year in review" kind of stuff to write about as 2005 winds down and 2006 begins.

Tuesday, November 08, 2005


The big news in football this week has been the suspension of Terrell Owens. The whole thing kind of reminds me of the steroid controversy in baseball. It's amazing how seriously people take sports. I love sports. I'm a huge football and baseball fan (just ask my wife.) But at the end of the day, sports is just entertainment to me.

That's why I think the T.O. controversy is totally ridiculous. The guy is obviously a ego-maniac who holds a certain amount of contempt for the rest of the world. Kind of reminds me of Bobby Fischer. Put a microphone in front of him and he's bound to say some things that are going to offend the rest of the world. So it wasn't too surprising to me when he ragged on Donovan McNabb (again) and the Eagles front office (again) last week.

But my question is: Who Cares? Sure maybe Donovan McNabb should be angry. Obviously the Eagles management have a right to be angry. But what did the guy really do at the end of the day? He made childish remarks about people. So what? Don't we all have co-workers who make the same kind of remarks on a daily basis?

If the Eagles want to suspend him, there's nothing wrong with that. If I criticized my boss I might get canned. Of course I think it's pretty stupid. They are a much better team with T.O. than without him. Still that's their mistake to be made. Obviously Donovan McNabb's comments about them being better without T.O. just shows that he can be almost as childish as Owens.

I think things would be a lot different if the Eagles were 8-0 right now. But they're not. It's obvious to everyone that their defense is not as good (especially without Corey Simon) and that Donovan McNabb is hurt. So they know they're not a contender this year, which makes it a lot easier to come down hard on Owens. T.O. is probably the best receiver in the league and there's no way a contending team would do what the Eagles have done. If I was an Eagles fan, I would be pissed that they were suspending T.O. because it just means that they're raising the white flag.

technorati tags: , , , ,

Special Election

This morning I voted in the California Special Election. It was a pleasant experience. There was a poll at the school next to my house, so I simply walked over there. I went around 9:30 AM, so there were no lines. This was the first time I had voted at the polls in California since 2000. There were no polls near my old house in Concord, so I had to vote by absentee ballot. I was surprised by the lack of security. What I mean is that all I had to do was give my name and address. I did not have to present any identification to verify who I was. Anyways, once I did that, they gave me a voting card for the touchscreen machines. It was very quick and easy.

So how did I vote? Well let's just say that I felt like I had changed sides and become a Republican. Here's a breakdown:

Prop 73 -- Parental Notification : Yes
I'm generally against any kind of restrictions on abortion, but not in this case. I really think that parents need to be held more responsible for their children, and so they have to be informed.

Prop 74 -- Public School Teachers Tenure : Yes
Tenure gives lots of guarantees to teachers that most workers do not have. My employer can lay me off anytime they want. They don't have to wait for two consecutive unsatisfactory performance evaluations. So why do teachers have extra protection? Unions of course.

Prop 75 -- Union Dues/Political Contributions : Yes
Speaking of unions... Actually this one was a little more difficult for me to decide. On one hand, why are we passing laws to regulate how unions spend their money? Shouldn't we stay out their business? On the other hand, unions get way too much special treatment. People are pretty much forced into joining unions, so at least this gives those people some power back. Of course what we really need is to remove the many laws the grant special protection of unions.

Prop 76 -- State Spending Limits : Yes
Again this one was a little difficult. I don't like the state minimum school funding requirements. However, I don't like the language of this proposition. It seems to embrace but modify Prop 98, when a total rejection is really needed. Of course, there's probably no way the governor could get a repeal of Prop 98, so I guess this is still some progress.

Prop 77 -- Redistricting : Yes
I've been very amused by the number of ads on this proposition. This one is a no-brainer to me.

Prop 78 -- Drugs Discounts : No
What's this, a new government program overseen by the state? Oh, and it's back by big business. Talk about a recipe for corruption and government enforced monopoly...

Prop 79 -- Drug Discounts : No
This one is equally bad as Prop 78, maybe worse because of more management by the government.

Prop 80 -- Electricity Regulation : No
From the ballot description: " Imposes restrictions on electricity customers' abiity to switch from private utilities to other electric providers." That's all I had to read to figure out how to vote on this one!

So there it is. I really do feel like a Republican suddenly. It's very unsettling.

Saturday, November 05, 2005

AJAX-MVC with Rico

     I recently re-did the PocoPay welcome page. It now shows an invoice, similar to a monthly statement like you would get with a credit card. It also has links to the invoices from past months. The past month functionality was a good candidate for some AJAX. After doing some AJAX with lots of custom JavaScript, I thought it was good time to try out an AJAX library.
     There are a ton of AJAX libraries out there, which is not surprising. It seems like one of the most common ones for Java apps is DWR. I considered using it, but I have some “philosophical” issues with it. I really hate scriptlets inside JSPs. I think this comes from bad experiences with such JSPs early on in my career. I’ve also had to deal with some really bad programmers who thought that the only way to program in Java was to do it in a scriptlet on a JSP page. So the idea of using DWR to directly invoke a business method just seems like a step backwards.
     So instead of using DWR, I chose to use Rico. I liked that it was built on Prototype, an object-oriented JavaScript library that is the basis for the excellent AJAX support in Ruby on Rails. In Rico, really allows for AJAX support similar to ROR’s with any server-side technology. Rico is also just a JavaScript library.
     Rico lets you register parts of your page that can be updated. It then makes the XMLHttpRequest for you, and when it gets the callback, it simply takes HTML from the response and uses it to replace the corresponding part of the page. That means that your response just needs to create some XHTML that is wrapped in a little XML. I really like this because the XML/XHTML response is really just another view in the application that happens to be consumed by a JavaScript callback function instead of a web-browser. PocoPay already had similar non-HTML views used by the VoiceXML scripts.
     For my app (PocoPay), I use Spring MVC. I basically created a new model (command,) controller (simple command controller,) and view (just a clean JSP that declares itself as XML.) All of the parts of the page I wanted to be updated I simply wrapped in <div> tags. I then registered these divs and my view returned the new HTML for them. That was it! No crazy JavaScript to learn. It was truly AJAX-MVC to boot.      

Monday, October 31, 2005

Evil Getters and AJAX

    A couple of years ago, I read a great article by Allen Hollub called "Why getter and setter methods are evil." If you've never read this, I highly recommend it. Let me give a very quick synopsis. Exposing data via accessors (getters and setters) causes tight coupling between components in your code. So if something changes about your data, then many other components must also be changed to accommodate this change. So getters and setters are evil.
    That's all well and good, until we start talking about UI. Most of the UIs out there, whether they are desktop applications or web pages, use an MVC paradigm. This inevitably leads to your view calling lots of getters on models to display data. Similarly your controllers wind up calling lots of setters on models to process input. So MVC requires lots of getters and setters.
    So is MVC evil? That would be a problem because it is the de facto standard in UI technologies. Let's just concentrate on Java web apps for the moment. Struts and JSF are both MVC based frameworks. My new personal favorite UI technology, Spring MVC is also clearly and MVC framework.
    The more object oriented approach to UI would say that objects should know how to render themselves. If they know how to render themselves, then other components (views) do not need to call getters. These objects should also know how to construct themselves. So their components (controllers) do not need to call setters. This is clearly against MVC which says that the view of an object needs to be separated from the object.
    Holub's original article caused quite a stir. He stuck to his guns and presented an alternative approach to MVC in a follow-up article last year. Here he suggested that a Builder Pattern be used to build different representations of an object. This could an include an HTML representation to be used by a web app.
    This is a clever idea. I liked it quite a bit. However, when I read it, I could totally see an experienced UI developer looking at all of these builder classes that had a lot of nasty code to build HTML strings, and thinking "this is stupid."
    Something has changed this year that may change people's minds. That something is AJAX. One of the many things that AJAX encourages is the ability to render on a much more granular basis. You don't want to always re-render an entire when a request is processed. Instead you need to be able to just re-render the parts of the view that have been affected by the request.
    I saw an article on TSS about adding AJAX to an existing Struts web app. I couldn't help but be amused by their ridiculous strategies for doing this. They recommend re-using your view, but putting lots of if-tags in so that only parts of the view can be rendered based on data in a request. They then recommend using the request.responseText so that you can just dump the HTML from your view directly into your page.
    To me, this just shows the limitations of the MVC approach. The view object is the only thing that can be rendered, so everything has to go through it. These views are supposed to correspond to web pages, so a lot of hacking has to be done to turn a view into something that is not a web page and can be used by AJAX.
    What if you didn't have a Struts app? What if you had crazily taken Holub's advice and gone with a builder approach instead? One can imagine that your life is suddenly a lot easier. To use AJAX, you can easily just ask your sub-component to render itself and send that back to the JavaScript handler on the page. It can also render itself as HTML or as XML, allowing you to use the more powerful request.responeXml object. It is not only easier but much more natural to adopt AJAX to a web app that does not use MVC.

Tuesday, October 25, 2005


I'm writting this blog using Flock. There's been a lot of hype leading up to the beta release of Flock. It's been billed as Web 2.0's browser. It has built in support for a number of trendy sites, like and flickr and is built on top of Firefox. It also has a built-in blogger, that I'm using right now. So what's my opinion of Flock?

Flock is not-bad. It's a good idea to introduce a browser like this whose aim is to make it easier for people to push their own content to the web. It's integration with is a great idea. I could see that as a tool that a lot of people will use. Of course Yahoo! is trying to do the same thing with their My Web tools, and I'm sure Microsoft will follow suit (not so sure about Google.) This kind of tool fits more naturally inside a web browser. Yahoo! uses its toolbar to enable similar functionality, but not everybody has their toolbar or would even want it. To be sure, My Web has other cool features, but I still think is a better combination.

Having a built-in blog tool is not quite as much of a hit. The biggest blog-site, Google's Blogger, already has a pretty nice interface. For more advanced blogging, Google provides a MS Word plugin that works great. Still Flock has some nice touches. The one I like is the tagging. Tagging is an important part of Web 2.0 and it's nice that you can tag your blogs easily. Actually, they really need to make tagging easier when adding a site to your collection. One of's best features is that this is super easy to tag when using their bookmarklet, and they do a pretty good job of suggesting tags. Anyways, the blogging tool in Flock is not bad.

Now for my real complaints! This is one buggy browser. I installed it on my laptop and on my home desktop. I'm blogging from my laptop, partly because I could not get the blogging feature to work at home. I had a hard time getting integration working on my laptop, though it was easier at home. However, I get prompted for my password a lot on my home machine, but not on my laptop. Its performance is actually not as bad as I expected (Firefox + lots of extensions often becomes slow.) There are many other minor bugs. They've really got to get the blogging and integration working though, as those are their calling cards.

Technorati Tags: ,

Monday, October 24, 2005

Twenty-Four Hours of Seattle

This past Thursday night I flew to Seattle. I was there until Friday evening when I flew back home to San Jose. Why was I in Seattle? Well that's the subject for another blog that I will definitely write in the not too distant future. This was my first trip to Seattle, so that makes for a pretty good blog subject all by itself.

First off, I flew Alaska Airlines to Seattle. This was my first time flying Alaska, I was very unimpressed. Their terminal in San Jose and their planes all seemed like they had not been redecorated since the 70's. Both of my flights (to and from) were late. The flight attendants were especially annoying. They were like watchdogs when it came to making sure people shut down their laptops and iPods.

What I got really annoyed with was hearing about how there wasn't going to enough room for all the carry-on luggage. Why do they have a policy of one carry-on plus one "personal" item if they don't actually have room for that? They kept threatening to make people check their luggage. Then they would point out that if you had to check your luggage at the gate, you would not be able to claim at the gate (you'd have to get it from baggage claim) unless you were flying first class. How rididculous is that? Earlier this year I flew to Florida with my wife and one-year old son. We bought an umbrella stroller for pushing him around the airport. We would then check this at the gate when were boarding the plane. We would then pick it up when we were getting off the plane, so we could put him back in it. This was especially useful considering we had to change planes in Atlanta. I guess if we were flying Alaska then, we would not have been able to get our stroller back until we got to Florida.

Ok, so Alaska Airlines sucks. Next up was my hotel in Seattle. I stayed at the W Seattle. I was really looking forward to the hotel. It looked really nice online and it sounded like a place that really pampered its guests. This was exactly the case, but yet I was still very disappointed with the W.

The W is one of those places that tries way too hard to be cool. You've known people like that. They're not inherently bad, but you don't really want to be around them much. That's the W. The place is poorly lit. The hall outside my room was very dark, with only low-lit purple lighting. Yes purple. The lobby was dark with booming techno music. This was true when I arrived at 10 PM on Thursday night, and was still true when I went jogging at 7 AM on Friday morning. They like to advertise about the thread-count of the comforters on their beds and their goose feather pillows, but the most important part of a bed is the mattress. Their beds were way too soft. Maybe kids might like that, but most adults will wind up with a back-ache because of the lack of back support. Actually my wife likes super-soft beds like that, but she's the only adult I know who doesn't need back support from their beds, and the W's beds had no back support. The room did have a nice chair and desk. It also had a cool-looking couch that had soft cushions to sit on, but no cushions for the back. So you'd sit down, sink into the seat cushions, then tip backwards and hit the hard board back of the couch. The W is all about form over function.

But here's the worst thing about the W. Despite being a very nice hotel and very expensive hotel, they totally try to nickel-and-dime you. Things that are included at most nice hotels are not included at the W. They deliver USA Today to your door each morning, without you even having to ask. However, they charge you $0.80 for it. They have internet access in the rooms (though no Wi-Fi, which I found very surprising) but you have to pay $15 a day for it! My wife and I recently stayed at a Best Western in Cambria and it had free internet access in all rooms, with free Wi-Fi in most rooms and all public areas. That was a Best Western. You would think that a fancy hotel like the W would have at least as many amenities as a Best Western in central California.

Ok, so I also hated the W. Otherwise though, I really liked Seattle. I was impressed with the cleanliness of the city. I really enjoyed jogging downtown. Seattle seems like a big sports town. The new stadiums (Qwest Field and Safeco Field) are both very impressive. There were tons of sports bars. The weather there was beautiful while I was there. Everyone claims that the rainy-ness of Seattle is greatly exaggerated. Of course fall is generally a nice season in most parts of the country, but it was definitely quite nice in Seattle. I didn't get a chance to try much food there, and didn't even try any coffee while I was there. Maybe next time.

Tuesday, October 11, 2005

Oracle Buys Innobase

I was pretty surprised to hear about Oracle buying Innobase, makers of MySQL’s InnoDB engine. I’ve used MySQL/InnoDB many times over the years and have always had very positive results with it. Their combinations of speed plus data integrity (foreign keys and rollbacks) make it ideal for small scale OLTP systems. MySQL has numerous storage engine options, but I think InnoDB has to be one of the most popular.

So now the big question is why did Oracle buy Innobase? Many people fear that their only reason is to damage MySQL. Given Oracle’s reputation, this is not surprising. Perhaps they fear that open source databases like MySQL will start to eat at their profits (maybe they already are?) InnoDb is GPL’d, but like all MySQL products, they sell support. It’s the money from those support contracts that pay the salaries of the developers who write InnoDB. The MySQL/Innobase contract is up next year, so theoretically Oracle could prevent MySQL from offering support to InnoDB users. That support includes a hot backup tool for InnoDB, a real must for sensitive, high volume customers. So indeed, Oracle could wound MySQL.

Personally, I’m not completely convinced. Does Oracle really fear MySQL that much? If they do, then I’m impressed. Oracle’s never shown that kind of foresight previously. If this is the case, then it would be a strange combination of insight and ignorance. They would be insightful for expecting MySQL to erode their market share in their more profitable spaces. They would be ignorant to think that an open source project could be crippled easily. MySQL already has other transactional engines. There are also many other open source transaction databases out there. It would not be difficult at all for them to replace InnoDB. Their very architecture makes it easy from a technical standpoint. Sure there would be some existing customers affected, but it’s really hard to imagine those people dropping MySQL and switching to Oracle.

And that brings me to the reason why I’m not convinced Oracle is trying to damage MySQL. MySQL and Oracle do not compete directly as much as one might think. Sure there are definitely companies that consider both. I really don’t think there are that many MySQL installs out there where they would have gone with Oracle if MySQL did not exist. If those existing MySQL customers were running Linux (Linux and MySQL put the L and M and in LAMP after all), then they probably would have gone to Postgres instead (or maybe Firebird.) If they were running Windows, then they would definitely go with SQL Server over Oracle, because of the price difference and the fact that they could clearly live without a lot of Oracle’s features.

Basically I don’t think MySQL’s customer base currently draws from would-be Oracle customers. It’s mostly people who want something free that won’t require them to have a full-time DBA to make it work. They want the opposite of Oracle. The two databases really are at the opposite ends of the spectrum.

So maybe Oracle will actually try to strengthen InnoDB and thus strengthen MySQL. Think about how much more attractive MySQL could be if it could boast that Oracle had contributed to its transaction database engine. One could really see MySQL eating into SQL Server’s market share. Meanwhile MySQL could have a lot more support contracts, which in turn could make the idea profitable for Oracle too.

Thursday, October 06, 2005

Nano Nano

(Anybody get the Mork reference?)
In 2001 my wife bought me the first-generation iPod as a Christmas present. At the time we weren’t married, but after getting that kind of present, we tied the knot in 2002. That iPod has seen a lot of use. For years it was my companion on my long commute from the East Bay to Silicon Valley everyday. It was also my companion on numerous personal and business trips across the country. More recently it has been my jogging companion each morning.
Earlier this week, I retired that iPod and finally bought a new one. I bought a 4 GB iPod Nano. As I mentioned, my primary use of the iPod now is for jogging, so the Nano seemed like an even better iPod for that than the iPod Shuffle. For $50 more I could’ve gotten a 20 GB fourth-generation iPod, but the Nano is far better suited for jogging. I rip my songs as high quality VBR MP3s using Lame, so I’ve only got about 500 songs on my Nano. So I sync it with a playlist in iTunes, as my full music collection is over 30 GB in size.
Anyways, I couldn’t be happier with the Nano. It’s really hard to believe how small and light it is. The wheel is very easy to use and the screen is bright and easy to read. It looks like anti-aliased text on the screen actually, a very nice touch. I’m planning on picking up the Nano lanyard to make it even easier to use while jogging.
As for my venerable old iPod, I’m not sure what is to become of it. It still holds a decent charge (~90 minutes, at least while jogging) and is in very good condition. I checked eBay and it looked like I could probably get $50+ for it, but I don’t know if I’d want to sell it. I’m not a very sentimental person, but maybe I’ll just have to keep it around.

Thursday, September 29, 2005

Fun with AJAX

I recently added some AJAX bits to the PocoPay website. It was surprisingly easy, especially with the help of a great article on IBM’s developerWorks site. Of course AJAX is either the trendy technology of 2005 or a technological breakthrough that will allow for web apps to really start replacing desktop apps, depending on who you ask. Certainly sites like Google Maps and Flickr have a lot of wow-factor. I used AJAX on our PocoPay to allow for users to request their security code be re-sent to their email address or cell phone. It was well suited to this task since the place where they request this information is the same place where they need to use it, so not having to go to another page or do a refresh of the same page is very nice.

There are a lot of much more interesting web apps out there using AJAX besides just the big names noted above. There are several out there trying to replicate basic office applications (word processing, spreadsheet, presentations, PIM) using AJAX. I’ve also seen some very cool apps in the pipeline from some large business software vendors. One of these combined AJAX with SVG to create amazingly interactive graphical tools. I had used an earlier version of this product that was a Swing application. This new version was not only orders of magnitude faster but also was much easier to use and interact with. Part of that was lessons learned about usability for the product, but certainly AJAX+SVG had really empowered the developers of the product.

Friday, September 09, 2005

The A-Train Rolls On

     I love tennis. I started playing when I was very young because my two sisters played. I started getting up early to watch Wimbledon when I was maybe seven years old. I had my first Wilson Jr. racket about that age as well. I played through high school and college. In 1992 I clocked a 107 MPH serve. In 1994 I hurt my back playing on the 4th of July. In 1996 I went to Vegas to see a Davis Cup match between the US and Sweden.
     So of course growing up when I did, I was a big fan of the great American players of that time: Pete Sampras, Michael Chang, Jim Courier, and of course Andre Agassi. Agassi has always been my favorite player. I had some of his Nikes when I was in high school (the black ones with the hot-pink soles.) I’ll never forget when he won Wimbledon in 1992.
     I don’t watch a lot of sports on TV these days. That’s part of being married and having kids. Usually I watch ESPN News (muted) each night when I put my son to sleep. That’s what I was doing Wednesday night, when I saw on the ticker that Andre Agassi and James Blake were in a fifth set at the US Open. I immediately got my wife to change the channel (my hands were full with my son.) Luckily I was just in time for the fifth set tiebreaker.
     All I could say was wow. Tennis does not get any better than that. For that matter, sports don’t get any better than that. It was all I could do not to start yelling and jumping up and down watching that – I was putting my toddler to bed, so that would not have been productive!
That’s what is so great about sports. It made me want to jump up and down and yell triumphantly as Agassi crushed a forehand winner on match point. It’s the ultimate diversion from reality. Just moments before when Blake saved a match point, it reminded me of Agassi losing to Pete Sampras in the semifinals of the 2001 US Open – a match that was probably the best tennis either could play. Then just a minute or so later, Agassi’s victory brought back the joy of seeing him win Wimbledon in 1992. It’s like the old ABC Wide World of Sports theme: “the thrill of victory, the agony of defeat.” It’s those two sides of competition that make sports so memorable and enjoyable.

Monday, September 05, 2005

More Hurricane Frustrations

     I shouldn’t complain about being frustrated with the hurricane relief efforts on Louisiana and Mississippi. After all, I didn’t lose my home. I haven’t been stranded in hellish conditions. I haven’t been short on clean water and food. For what it’s worth, I haven’t even had to pay over $3 per gallon for gas (yet.)  So I really shouldn’t complain. But this is a blog, so of course I will.
     If there’s one thing I have really come to hate over the past few days it’s all the speeches and news conferences by the politicians involved in this fiasco. These speeches are worse than their typical platitudes. These speeches are filled with politicians congratulating and thanking each other on all the “hard work” they’ve been doing. It’s so patronizing and condescending. They’ve all been guilty of this, Democrats and Republicans alike. It’s so sickening to hear them congratulate each other one minute, then promise things will get better the next. If they’ve done such a great job already, then shouldn’t things already have improved dramatically? Of course next is how personally touched they all are by the disaster and then they shed some fake tears.
     Of course the worst of these politicians has been the Unholy Trinity of George W. Bush, Michael Chertoff, and Michael Brown. I don’t know who is the most incompetent between these three. Chertoff’s “City of Louisiana” comment is an Instant Classic. Brown has proved to be no better at managing disaster response than he was at managing Arabian horses. And then of course there’s Bush who seems more schizophrenic each day with all of his we-this, we-that type of comments (“We’re not satisfied with the relief efforts so far.”)
     How refreshing would it be to see some leaders step up and take some personal responsibility for what has gone wrong? Just imagine somebody saying “We weren’t ready for this hurricane even though we should have been.” How nice would it be for one of these guys to finally promise that The Government will help them, instead of directing them to The Red Cross, Salvation Army, or the Bush-Clinton Charity Machine? Wouldn’t that be nice to hear a leader tell a victim “We’re going to help you.”
     At least it seems like it’s finally OK to criticize the incompetence of our government again. Ever since 9/11, criticizing the government meant that you were being political. You couldn’t say that the FBI/CIA/whatever should’ve done more to keep terrorists off those planes on 9/11. You couldn’t say that we should’ve captured Osama bin Laden. You couldn’t point out that the President had said we needed to go to war with Iraq because they had WMDs, but that no WMDs were ever found in Iraq after we conquered it. You couldn’t say any of these things without somebody saying at best that you were being political or at worst saying you were being unpatriotic. So if one good thing comes out of Hurricane Katrina, maybe it will be that people can once again point out facts without fearing censure.

Sunday, September 04, 2005

Hurricane Katrina

I grew up in Panama City, Florida. I’ve been through a lot of hurricanes. So I had a chill go down my back last Saturday night, when I saw that Hurricane Katrina was a category four hurricane with 145 MPH sustained winds. I could only hope it would miss all of family that still live in Panama City. I got a second chill when I saw that it would probably miss Panama City, but was headed more towards New Orleans.
I have family in New Orleans as well. My uncle has lived there for around twenty years. He and his family used to live in Violet, a suburb of New Orleans in St. Bernard Parish. They moved to Lacombe about ten years ago. Lacombe is near Slidell, across Lake Pontchartrain from New Orleans. His oldest daughter, my cousin, lives in Metairie now, right next to New Orleans, with her husband and two children. Seeing a major hurricane headed their way concerned me, but there was something else. I knew about the doomsday scenario of a major hurricane hitting New Orleans. I knew it could overwhelm the levee system and flood the city. So the sight Katrina moving that way frightened me.
You can imagine how I felt the next day when I saw Katrina’s winds reach 175 MPH as it moved ever closer to New Orleans. My wife and I were both incredibly worried. We called our family in Florida to see if they had heard from uncle and cousin. We found out that they had evacuated and were heading to Florida.
We were relieved, but still incredibly worried about New Orleans and its people. Why was not more being done to evacuate the city? We didn’t understand why there weren’t busses to evacuate the people. The doomsday scenario was no secret in New Orleans, and we knew that the people who could get out (like our family), would get out. But New Orleans is a big city and a very poor city. We knew there were tens of thousands that could not get out. We saw people going to the Superdome. That’s a big building, but could not come close to housing all the people that had no way of getting out of New Orleans.
Everyone knows what happened next. Everyone knows about the immense damage done by Katrina. Everyone knows about the levee breaks. Everyone knows about the flooding of the city. Everyone knows about the people stranded in New Orleans and the horrible conditions they had to endure.
Like so many other people, I have been distressed to see the pictures from New Orleans. I’ve tried to do what I can to help the victims, donating money to the Red Cross. My family is still in Florida. My cousin has no idea if her home is still there. Information she’s seen shows that her neighborhood was submerged in three-four feet of water this week. She’s renting a house in Florida, and her husband is trying to find a job. Her oldest son is six and she’s trying to get him in school in Florida. My wife and I are sending her new clothes for her children, since they only have what they could pack in a few suitcases before they left New Orleans last weekend.
And like so many other people, I am outraged by the events this week. I’ve seen both our President and several members of his cabinet claim that nobody could have seen this coming. It’s the biggest lie I’ve heard him tell since he claimed that we needed to invade Iraq because they had weapons of mass destruction. I’ve heard about the doomsday scenario in New Orleans my whole life. Just last summer, when Hurricane Ivan hit Florida, the doomsday scenario was all over the news. Certainly just last weekend it was a major topic of discussion. The mayor of New Orleans listed it as the reason why he had ordered the evacuation of the city.
No, people knew this could happen. It wasn’t difficult to imagine it happening last Saturday. So why didn’t people prepare for it? When I say people, I mean the government. There was an imminent threat to millions of Americans last weekend, and the government did not do much to deal with it. It wasn’t until the damage was done and – most importantly – pictures of it were all over the television that the government responded.
Why didn’t the government step in and help evacuate New Orleans? Why weren’t there more busses, or airplanes to get people out of harm’s way? Why wasn’t the National Guard ready to be sent in to the city after the storm? Why weren’t they read to respond to the levee breaks? Why wasn’t there a plan in place to bring food and supplies to the people stranded in the city after the storm?
I don’t know the answers to these questions. Some have suggested that it shows the operational incompetence of the President and his administration. It is similar to how unprepared they were to govern Iraq after it was conquered. I think there’s some truth in that. Bush ruined several companies before he went in to government, and that seems consistent with his inability to manage large operations as a President.
The President toured the gulf coast on Friday. A woman there told him she needed help because she had no clothes for her children. I found The President’s response very telling. He told her that The Salvation Army would help her. I hope she wasn’t hoping the federal government would help her, because she would be disappointed.
Indeed, The President’s chief concern seems to be security. This is certainly a valid concern. You can’t help people if you’re being shot at. But when people are in such horrible conditions, then you would like to know that your President wants to do more than send in troops to shoot people stealing TVs.

Tuesday, August 23, 2005

National Broadband

There was a recent report about the US “falling behind” other countries in terms of broadband use. This has sparked a lot of interest and made a lot of people state the federal government needs to do more to make broadband more accessible for more Americans. This is yet another case of well-meaning people supporting a very bad idea. Here is a good rebuttal of the idea, but I have my own reasons for being against this.
One of the main ideas behind national broadband is that broadband is similar to public utilities such as electricity and telephone service. This will be the first idea I will debunk. The biggest problem with this idea is that there are exact functional equivalents to broadband – name dial-up service, but there is nothing similar for electricity or telephone service. Certainly another big problem is that it’s hard to compare web surfing and email to having your lights turned on or being able to call 911 in an emergency. It’s just not an accurate comparison, at least not yet.
Another big problem with nationalizing broadband access is that internet access in general is still an emerging technology. Do you know anybody who has had broadband at their home for more than ten years? Other technologies are emerging that could provide better service for less price, such as broadband over power lines and Wi-Fi/WiMax. These new technologies will not have a chance if they have to “compete” against government backed broadband (or government backed broadband providers.) Competition between existing broadband and emerging technologies will certainly lower costs for all and provide a test to see which technology is best. And of course there are probably other technologies that are even better that we haven’t heard of yet. These too would be stifled by a government backed broadband service.
So those are the more practical arguments against national broadband, but for me they aren’t even necessary. The big problem with national broadband is that eliminates choice. As soon as taxpayer money is being used to provide/subsidize broadband, then we’ve all had a choice of whether to use broadband or not taken away from us. Now I know there are countless other things like this already, but that’s no excuse to willingly give up another freedom.
Ultimately national broadband will mean yet another government agency to administer and manage either the actual the service, or the distribution of funds to subsidized providers. This only begs for more corruption and government backed monopolies. That’s always bad, but especially bad when it comes to a fast changing technology. You see, monopolies don’t like change and only have an interest in keeping the status quo.

Saturday, August 13, 2005

Beta Stuff from Microsoft

A lot of people like to criticize Microsoft, and I must admit that I enjoy partaking in that, too. However, I use Windows just like everybody else. I've been an XP user since summer 2001, when I installed the beta. I recently installed their two latest beta offerings, Windows Vista (Longhorn) and IE 7.

First off, I installed IE 7 on to my XP box at home. I'm actually composed part of this post on IE 7. First the good... I like the UI. I haven't used IE 6 much for the last three years or so, but I had its UI stripped down very similarly to IE 7. Of course it will draw comparison to Firefox. It is definitely weird where they put the menu bar. The new tab button looks odd, but I think it's actually pretty intuitive, especially if somebody has not used Firefox or Opera before, as will be the case for most IE 7 users. Ok, now for the bad... It is slow and a memory hog. It tried some JavaScript and dhtml benchmark sites, and it is much slower than IE 6 and Firefox. Opera is still the king in terms of speed of course. It is also uses a lot more memory than IE 6 or Firefox, especially when you start opening up multiple tabs or you hit a site with lots of CSS or DHTML. Finally, it is well known that IE 7 does not and will not pass the ACID2 test. That doesn't bother me as much as it might others, since neither Firefox or Opera pass it either. Also it should be noted that Microsoft generally tends to introduce features first, then optimize performance later on their beta type releases. This is the right way to engineer software, but it was still surprising to see the performance of IE 7.

Now on to the bigger fish, Windows Vista a.k.a. Longhorn. I created a small partitition on my XP machine to install Vista and had no problems with the install. The installer is much simplified, though it is still a very long procedure. Since this is an entire operating system to consider, let's break things down:

UI. I had heard a lot about the revolutionary new graphics and UI in Longhorn. I did not see it in Vista though. I've also heard that some UI elements are disabled if your graphics card is not beefy enough, but if that was the case for me then it never indicated this. My graphics card (Nvidia GeForce Ti 4400) is pretty decent, though a couple of years old. I think 128 MB of dedicated video ram and DirectX 9 support should be enough for the operating system, so I'm going to assume that nothing was turned off. Given that, the UI is disappointing. It's relatively clean, but the grey/silver windows are just ugly. I don't mind that there is less chrome, just don't like the look of the new chrome.

Windows Explorer. I give high marks to Windows Explorer, though some of its toolbar items can be confusing. It's easy to accidentally specify some kind of sort on a set of files that could take a long time. This does not cause the whole system to lock up though, it just makes the window you were looking at lock up for a few minutes. I have to say that it really reminded me of Finder...

Security. Windows Vista makes lower-powered users the default, or at least its supposed to. The beta simply logs you in as the administrator, but you can create limited users pretty easily. The new authentication mode allows for you to do everything as this lower powered user and simply have Windows prompt you for administrator password when needed. In other words, Windows has finally added sudo. This is done exactly how Apple does it on OSX, so it's pretty good. I haven't encountered any bugs with this, though I have heard of others that did. Otherwise, security is much the same as in XP-SP2.

Compatibility. As expected, I got to encounter to some hardware issues with Vista. It wasn't too bad though. My wireless PCI card was initially not recognized so I had to install its driver. The driver installed nicely, but the config tool supplied by the vendor (Belkin) did not work and would crash immediately when you would try to launch it. I was able to get Windows to connect to my home network, but it's connection was much more unstable than it is on XP where I use the vendor config tool. Otherwise, things seemed ok. I was able to install and run Java, as well as Tomcat and Eclipse. I was also able to install iTunes and burn CDs, and plugin my digital camera to import pictures.

Performance. Like IE 7, performance stinks on Vista so far. It boots/restarts very fast, but file management is much slower (and that's without anti-virus software...) and application performance is noticeably slower. This was a little noticeable on stuff like code compilation but much worse on something like Photoshop image filtering.

Other Stuff. I wanted to try the integrated search (the current MSN desktop search I believe) but it has been very slow in indexing. Of course I don't leave it running overnight, since I normally stay booted in XP. I did have good experiences with MSN desktop search when I tried it in the past. I was not surprised to see the desktop search built in to the start menu, though I expected there to be options for desktop vs. web searches.

Tuesday, August 02, 2005


I've been doing a lot of work lately with the Spring Framework. I'm still a little undecided about dependency injection as a way to implement inversion of control. Certainly IoC is good in principle. Dependency injection can make for some pretty clean code. That's all well and good, but if that was all that Spring promised then there wouldn't be such buzz around it. The bigger thing that IoC in general and Spring in particular promise is to allow for more portable and reusable software components. This is The Holy Grail of software (or at least of object oriented programming.) However, simply declaring your dependencies and allowing your container to resolve those dependencies does not guarantee reusable software. Another pre-requisite is that all the dependencies resolve to things that are also reusable. For example, I could have controllers that declare a dependency to some BigBadService class. That class must have all of its dependencies declared, and they need to resolve to interfaces (or to some other class that in turn has its dependencies resolve to interfaces, etc.) So Spring could definitely be used to simply clean up some code, but it takes a lot more than just that to really reap benefits from Spring.

Enough about that, I wanted to talk about some of Spring's features. I really like it's implementation of dependency injection. I am among those people out there who gets annoyed with too many and overly complex XML configuration files. There are definitely frameworks that verge on having "xmlscript" as a secondary language. Spring is a little guilty of this. Their configuration files can get pretty ugly, but that usually indicates a very complex application. They can be pretty simple to start. For pure dependency injection, they are very simple and clean. It's when you start adding others things like transaction management and web flow that things get ugly. I definitely think that transaction management should be done through annotations, a la EJB 3.0. Configuring controllers is always somewhat complex. The legacy of the original servlet spec is going to push a lot of this complexity into ugly xml files, so I don't totally blame Spring for that.
Of course dependency injection is just one of the many features of Spring. I haven't tried them all yet, but I'll describe a couple. First, it's previously mentioned transaction management is pretty solid. I used the DAO+Hibernate modules for this. The one thing I didn't like was that it was a little tricky to declare transactions for a class that I did NOT want to Spring to manage the creation of. I had a class that I wanted created by a factory. Spring managed the creation of the factory. Since I had a factory, I did not need it to manage the creation of the objects created by that factory. However, I wanted those object to be transactional. So I had to have it manage the creation of those objects, though I was able to tell it to use the factory. I felt like I was jumping through a hoop here. Otherwise, the Hibernate integration was very easy and well done.
The other module I used was Spring MVC. When I read the documentation on this, it really seemed like a nice step forward from other MVC incarnations. Of course, I'm not actually a big fan of MVC. I think it encourages a lot of coupling between presentation and data. This is especially bad given that the motivation for MVC is a separation of these things. I worked on a project once where we had a nice architecture that involved session beans that exposed XML only. Our servlets then applied XSLT. The motivation was that we needed to expose the exact some business logic but to many different user interfaces. The big problem with this kind of architecture was that the XSLT became incredibly complex. That's where the biggest advantage of using an MVC framework comes from, at least to me. It handles data-binding (and related things like validation messages) nicely.
Back to Spring MVC... It is very easy to get started with, but also very easy to start having problems with. The reason is its flexibility. There are so many options, and many of them are designed to have you write less code. Whenever you write less code that means the container is doing more for you. The combination of lots of options + lots of "invisible" container services can cause a lot of confusion and unexpected behavior. Fortunately it didn't take me too long to sort through the different options and understand them well. The Javadocs were great for this, much better than any of the tutorials/quick-starts out there. Once you understand how each controller-type works, the associated options are obvious. I like the command objects in the framework. They encourage abstraction and less coupling between business objects and the UI. Of course it would be easy to abuse this and basically make your business objects the same as your command objects.
All in all, I'm very pleased with Spring. There are certainly many more features that I have not explored on it. Its web flow particularly interests me. I think its IoC implementation is nice, and both of its dao/transaction packages and MVC packages really help the developer to write less code while not burdening him with arduous configuration.

Monday, June 27, 2005

More Supreme Court Decisions
The Supreme Court has been busy lately. There's a couple of rulings that I wanted to write about.

Kelo v. New London
This was a pretty outrageous decision. It's amazing that the liberals of the Court would rule in favor of allowing large companies to claim property from low income residents all in the name of commerce. This case definitely has really pushed me away from the Democratic Party. I usually think that Democrats can make some stupid decisions because they try too hard to do the right thing. Minimum wage is a good example. They want to help more low-income people, so they go with a law that would seem to do that (though it actually does not.) However, the liberal Justices on the Court are definitely not like this. They are willing to increase government power just for its own sake, even if it hurts average people, like the residents in New London, and helps big business.
Personally I am generally opposed to imminent domain. It is never necessary in my opinion, so that even when it might be justifiable (building a road, canal, whatever) it is still not the best option. I could still live with it for public usage, like roads, etc. even though it is still very prone to corruption. I grew up in northwest Florida, and there is an old story there about why Interstate 10 does not go through the cities on the coast, Panama City, Destin, Ft. Walton Beach, etc. Instead it goes through very rural areas some 30+ miles north of the cities where all the population lives. This would seem like a poor design. Supposedly this was caused by Earl Hutto. He was northwest Florida's Representative in the House when Interstate 10 was built. Supposedly the original design was for I-10 to go southwest from Tallahassee and then along the coast where all the cities were. Hutto got it changed so it went through thousands of acres of rural land to the north instead. His reason? He owned the land in question and got double its market value courtesy of imminent domain.
All that being said, I can still understand imminent domain being used for things like an interstate. I cannot understand it being used to transfer land into private hands, such as in New London. I do not think The Constitution gives the government the right to transfer private property from an unwilling owner to another private interest. That totally seems like a Nazi Germany type of policy.

MGM Studios, Inc. v. Grokster, Ltd.
This one just came in today. It was also somewhat surprising, as much for the decision as for the unanimity of the decision. It seemed the court really stressed on Grokster's advertising model as much as its business model. MGM was suing because of what people did with Grokster's software. The Court was concerned over how Grokster advertised their software. They did not seem to address the capabilities of the software. It was these capabilities that caused MGM to sue. Basically The Court stressed intent over action. To me, this really violates the Rule of Law. It would seem to suggest that somebody could produce identical software to what Grokster made, advertise it differently, and not be held to the same standard as Grokster. What makes it even more dumbfounding is that this was a unanimous decision. It's amazing that everyone on The Court would agree to this kind of duplicity and implicit violate of the Rule of Law. One can understand grade school children being anxious for summer, but The Supreme Court?
Seriously, this decision while somewhat shallow on the surface, is still likely to embolden a lot more legal action against software makers. As a software maker myself, the idea that I could be held legally responsible for anything done using my software is pretty scary. This decision does not state that -- The Justices were not willing to tackle that broader question, but chose to patronize the public by concentrating on Grokster's advertising. Still, the decision would only seem to encourage such a tactic, whether its by an industry trying to protect itself from a disruptive technology (such as MGM) or by parents of juvenile delinquents who happen to be fans of violent video games. We all know that in this country, just the threat of lawsuit is often enough to discourage people. There's going to be a whole lot more discouragement and in turn, a whole let less innovation because of this ruling, even it is eventually weakened when the broader issues are (finally) addressed by The Court.

Sunday, June 19, 2005

New Music
The past two months has seen a lot of new music from well known artists. I did a long review of the new Nine Inch Nails CD. Here's just a quick if the others:

Guero by Beck -- Beck tries to become Beck circa 1997. It's ok, but kind of boring.

Bleed Like Me by Garbage -- I actually liked their previous record, though it was considered to be their weakest. This CD has a lot of energy, but is kind of forgettable.

Mesmerize by System of a Down -- This CD is mind-blowing. Definitely less bass-heavy and more guitar-driven than previous CDs, but still their best. Can't wait for "side two" to be released later this year.

Out of Exile by Audioslave -- The beginning of this CD is really great. Much tighter than their first CD. The rest of the CD is a little hit or miss, but solid.

Get Behind Me Satan by The White Stripes -- I didn't like this CD too much at first, but now I love almost every song on it. I really disliked "The Nurse" at first, and still don't like that song. Everything else is amazing.

X & Y by Coldplay -- My biggest dislike with Coldplay's last CD was that they seemed to lose their sound a little from their first CD. X & Y is definitely more like Parachutes, but with several more patented Coldplay ballads. Overall very good, though a little too calculated.

Thursday, June 09, 2005

Raich v. Ashcroft Decision

The long awaited decision arrived this week. I was definitely disappointed, but not very surprised by the decision. I was somewhat surprised by the vote, though. I thought that the more conservative judges would show their true colors and vote against Raich. I thought their states' rights stance was disingenous, that would side with the religious right over states' rights. I was wrong though. Two of the three who sided with Raich were Rhenquist and O'Connor -- two of the most conservative judges. All the so-called "liberal" judges (Souter, Breyer, Ginsburg, and Stevens) sided with the fed. The majority opinion they wrote was even more infuriating -- telling cancer sufferers to look to Congress. Their willngness to side with Congressional power over Constitutional law is truly disheartening. I would not be surprised if Raich v. Ashcroft becomes more important historically than Wickard v. Filburn.

Monday, June 06, 2005

Apple and Intel
Yes it's the big news in the tech world. Apple is switching to Intel CPUs. It's a pretty shocking turn of events. It is very difficult to say if it is a good move or not. Here's what I think are the pros/cons:

  • No more IBM. Clearly this is as much about the falling out between IBM and Apple as it is about Apple suddenly becoming enamored with Intel. As Steve Jobs pointed out, IBM has not delivered on the clock speed for the G5 and has not delivered a G5 suitable for laptops. It's really no wonder for IBM. If you look at the direction they've headed, creating desktop/laptop processors just isn't part of their plans.
  • Intel is dedicated to desktop/laptop processors. Intel is once again battling hard against AMD for dominance on the desktop. Right now most people would agree that they are behind on the desktop, in terms of technology. However, they are clearly dedicated to furthering desktop CPU performance. They are also clearly ahead of AMD when it comes to laptops. Again, they appear to be dedicated to maintaining this lead. Intel's roadmaps for their desktop and laptop processors looks promising, especially now that they've finally letting the megahertz megamarketing machine dictate their designs.
  • Better compiler support. One thing people often overlook is how much effort Intel puts into their compilers. Their compilers do a very good job of optimizing for their platform. I don't know if Apple was really relying on GCC, but it was terrible at optimizing for the G5 (and the G4 for that matter.) This should really allow for better use of the underlying CPU by most programs (though there are some potential exceptions, see below.)
  • Lower prices? Apple got some good prices from IBM, by most accounts. So it's hard to say if they will get significantly lower prices from Intel or not. Still, Intel is always competing with AMD, and one would guess that switching from Intel to AMD would be very easy for Apple. So that would always be a card that Apple could play to drive a good bargain from Intel on the CPUs and chipsets. It's also widely known that Intel chips in for Dell marketing, and a similar subsidy would seem reasonable for Apple.
  • Rearchitecturing has historically cost Apple about half of its market share. It's very likely that they will sell a lot less Macs until the x86 versions are rolled out. So if you're a Mac user and need to buy a new computer this year or next year, but don't want to buy a PowerPC based Mac because its going to become really obsolete very soon, then what do you do? Buy a Dell of course. There goes the market share.
  • Developers are going to be upset. Jobs basically said that all developers using Code Warrior are screwed. That's most longtime Mac developers right there. Nobody likes being forced to switch to XCode. Developers aren't going to like the alternative either: sticking with Code Warrior and its PowerPC binaries and going through the Rosetta emulator (no matter how great Jobs says this thing is.) Apple saw this when they rolled out OSX. It took forever for Quark to be ported to OSX, and the Adobe products suddenly became much more at-home on Windows than on a Mac for the first time. All of this can cause people to switch to another platform, and even worse can cause Mac people to doggedly stay with the old platform that ran their apps better.
  • The x86 architecture. It definitely has its problems and limitations. People (including Steve Jobs) have been predicting its demise for a long time. It has stuck around because of backwards compatibility. If you remove that benefit, it's hard to understand why anyone would choose it.
  • Battling Hackers. Hackers everywhere are now dreaming of running OSX on the whitebox system they put together from parts bought on eBay and Newegg. Apple has already had to answer the question "Will OSX run on non-Apple hardware?" with a resounding "No!" Their rationale is obvious: they charge a premium for their hardware. So they will probably resort to a BIOS trick or maybe even using some kind of DRM built into the Intel processors they choose. I'm sure they will be very clever about it, but this is a losing fight. Just ask record companies, movie companies, or for that matter, Microsft and Adobe. Actually Apple should already know this. It is easy to defeat the DRM on songs sold from iTunes, just use the open source JHymn. This can easily become a time-consuming effort, putting up a new protection scheme only for hackers to defeat it a few hours later. Actually, maybe they did learn from iTunes and JHymn. Maybe they will put some protection scheme, but won't bother trying to constantly beat the latest hacks.

Thursday, May 26, 2005

American Idol

I've been hooked on American Idol for three years now. I know it's lame, but it's like a guilty pleasure. Actually that's a good way to describe all reality tv, but let's not get off topic here. I was definitely rooting for Bo Bice tonight. How could I not root for a long haired rocker from Alabama? But I was not surprised at all that Carrie won.

While watching the final performances on Tuesday night, I commented that the fix was in. The producers of the show knew that Carrie was much more of sure thing in terms of $$$. It will be easy for her to serve up a CD of pop-ish country dance songs and ballads a la Shania Twain or Faith Hill (or any of their dozens of clones) and sell several million records. It would be more difficult to get a by-the-numbers pop CD out of Bo. He would be better served by more of a rock record, but rock fans tastes are much more finnicky than country or pop. A rock formula is much complicated than a pop or country one.

So what did the Idol masters do? They changed the format so that the singers had to do two "original" songs (picked by the producers) and had to do a song they had already performed for their third song. This didn't really help Carrie directly, but totally killed Bo. They made him do two sappy ballads -- songs he would never have picked on his own. They let him do one song of his choice, but because it had to be something he already done they took away one of his major advantages -- his knack for putting an original, fresh intepretation of his songs. They totally took him out of his game and handed the prize to Carrie.

The sad thing is that they probably did not need to do this. Bo vs. Carrie is almost a blue states vs. red states battle all over again. And all we know how that turned out. It's even worse really. American Idol is less popular among many blue state citizens. So the red states win again.

Tuesday, May 24, 2005

Movie Review: Star Wars Episode III Revenge of the Sith

That's right, I'm doing a movie review. You won't see too many of these, but this is Star Wars. This is what I grew up on. I don't know how many times I made my dad take me to see A New Hope and The Empire Strikes Back. My sister pretended to be my mom so she could check me out of school to go see Return of the Jedi on the day it opened. So I'm kind of a big fan.

That being said, I wasn't one of those people who hated the first two prequels. Sure Jar-Jar was incredibly annoying, but so were the Ewoks. The Phantom Menace and Attack of the Clones were not as good as any of the originals, but they weren't bad movies. So I was not pre-disposed against Revenge of the Sith, in fact I was very optimistic about it. And I was not disappointed.

This was by far the best of the prequels. It was probably as good as Return of the Jedi and A New Hope, though not as good as The Empire Stracks Back. That is saying a lot. This is what people had waiting for and why they were disappointed at the first two prequels. They wanted something as good as the classics, and this is the only one of the prequels that delivers.

So what was so great about it? The key to any Star Wars movie is the story. Let's be honest, all of the characters in all of the movies are stock characters. The only character that ever saw any real development was Luke, and that was not until Return of the Jedi. It's the story, the myth that made the originals great. Revenge of the Sith has a great story. What makes it even better is that we all know what's going to happen. You know that Anakin is going to go over to the dark side, but Lucas manages to tell the story without it being anticlimactic. The transformation is really well done. He goes from a Jedi with doubts and fears to a Sith full of anger and lust for power.

Of course what would a Star Wars movie be without great effects? The effects are very good here, but not overdone. They don't steal the show from the storyline. They don't need to. The final battles between Obiwan and Anakin and between Palpatine and Yoda are both spectacular, as is anything with General Grievous.

The movie really left me thinking about Darth Vader and the Emperor. What got me thinking was the Emperor's quote while battling Yoda, that even if Yoda were to kill him that Anakin would wind up being more powerful than either of them. Now he could have just been talking trash, but given Anakin's hailing as "The Chosen One," one could not blame Palpatine for thinking that Anakin was going to be a more powerful Sith lord than even Palpatine. So fast-forward to Return of the Jedi. Clearly Palpatine had to be incredibly disappointed in his apprentice. I mean, what did Vader accomplsih in all those years? He led the attack on Hoth and set the trap for Luke on Bespin. Those were only partial victories and Vader had a lot of help on both.

And what about all those years between Episode III and IV? What was Vader up to during that time? You've got to figure that Palpatine would have sent him looking for Yoda and/or Obiwan. I mean, what else did he have to do during that time? And what about this talk of Vader being the most powerful Sith/Jedi ever? He didn't seem to ever surpass Palpatine. He killed Obiwan, but Obiwan let him do that so that Luke could see it and be less likely to feel any sympathy for Vader once he found out the truth. Of course it would seem likely that Vader would have defeated him anyways, given Obiwan's advanced age. Vader defeated Luke on Bespin, but Luke was very inexperienced at that point. There never seemed any doubt that Luke could defeat him in Return of the Jedi.

So Vader had to be a huge disappointment for Palpatine. Perhaps that makes sense after seeing Revenge of the Sith. Perhaps Anakin's powers were weakened by all the self-loathing he had to go through for all those years. Whatever the case, one cannot blame Palpatine at all for wanting Luke to take down Vader and take over for him. Basically all Vader was good for was as a way to get to Luke. Otherwise he was really a liability to Palpatine.
If you haven't seen funnyfox, you defintely should check it out. Pretty humorous. Personally I've been a Firefox user since it was called Phoenix. It's my default browser on my all my computers. I really like Opera sometimes too. It's great for quickly looking up documentation, like the exact syntax of Preferences for example. It's just a lot faster than Firefox (or IE for that matter.) Firefox works a lot better for Google-related sites, like Blogger and Google Maps. Opera used to really suck on GMail, too. Of course that's as much Google's fault as it is Opera's, but that's not reason enough to not use Google Maps for example.
The traction that Firefox has gained is really pretty remarkable. I've been able to "switch" my wife's parents and her sister. They were all eager to be rid of pop-ups and spyware. Firefox is really great for most people with pretty basic browser needs. It's also great for "power" users, with its myriad of extensions. Personally I use the user agent switcher and the Google bar. I'm also thinking of adding on one of the enhanced ad blockers for my home computer. I've noticed more and more sites with ads (pop-ups/flash mostly) that seem to get by the standard pop-up blockers of Firefox, IE, and Opera. That will probably only get worse for awhile.

Tuesday, May 17, 2005

Nine Inch Nails With Teeth Review
As mentioned previously, I am a NIN fan from the 90s and have eagerly awaited the next NIN record. With Teeth was released earlier this month, and I've been listening to it non-stop. So it's about time that I put $0.02 out there about it.

A sidenote of the Napster/iTunes age of digital music is that the idea of "album oriented" music is really over, at least for popular music. Many people will decry this, but I won't bother since it's usually stupid to protest progress. Albums (CDs more accurately) really are the sum of their songs and nothing more these days, so I will go through With Teeth, song-by-song.

All The Love In The World
I liked this song instantly. From the mellow build-up to the disco happy climax, this song is immediately likeable and memorable. It is sure to be a fan favorite, though unlikely to be a radio hit. That is the true sign of a great NIN song though. Great pop songs, but very "true" and not worried at all about being commercial.

You Know What You Are
After something mellow, you can always trust Trent to kick your ass a la Piggy - Heresy from The Downward Spiral. Great energy and aggression, but sonically not overdone (something Trent's been guilty at times in the past.) People have been making a lot of David Grohl's drum work on this record. It is great on this song (and many others.) There is definitely too much hype around his drum work though. There have been some great drumming on past NIN songs like March of the Pigs and Burn just for example. Anyways, the drums are great on this song. The chorus is a lot of fun. Some of the lyrics are a little weak (especially given the chorus,) but that has always been Trent's biggest weakness.

The Collector
Another great rocker. Great drums, again. Actually these are probably the most impressive drums by Grohl with a vicious but syncopated beat. This song would have fit on The Fragile, though it probably wouldn't have been as stripped down. This one of the first of a couple of songs where Trent actually seems cool. There seems to be a little bit of irony even.

The Hand That Feeds
Ah yes, this song. Another great beat, though this one sans Grohl. This may wind up being overplayed on the radio, but it will still go down as a great NIN song. Great, polished aggression. Cool lyrics, maybe even political?

Love Is Not Enough
This song takes a little more patience than the last one. It's a little brooding and meandering at first, but when the guitars kick on for the chorus it really takes off. The chorus again seems a little hipper than usual for Trent. This winds up being a very strong song. I actually think it would have been a great name for the record, too.

Everyday Is Exactly The Same
This is one of the best songs on the CD. Very cool lyrics. The mentally ill seems to be a theme of this record, more so than in the past. This is not depression and self loathing, but is paranoia and sedation. Great chorus that is very memorable. This song will get stuck in your head very easily.

With Teeth
This is one of two tracks on the CD that are a little weaker than the rest. It does have a cool build-up and a somewhat catchy chorus. It's "quiet" bridge is a little spooky and generally kind of interesting. Not a bad song, just not as strong as the others. Plus it's sandwhiched between two of the best songs on the CD ...

This song is just cool. Hip 80's-ish synths at the begininng that give way to a killer guitar/bass line. Cool lyrics with a cool delivery (really.) Great chorus. Yeah it's a little simplistic, but catchy and fun aggression. I love to blast this song in my car.

Getting Smaller
This song absolutely rocks. Very cool guitar and drums at the beginning and a very cool guitar line. The chorus just kicks and has great manic energy. Classic NIN lyrics and probably the coolest guitar work on the CD.

This song has my favorite beat and bass line on the record. It's also Trent's coolest of several cool songs. Probably the sexiest NIN song since Closer. I love the falsetto in the chorus. Stripped down and straightforward but fantastic.

The Line Begins To Blur
This is the "other" weaker song on the CD to me. Cool atmosphere and lyrics. Good chorus, too. This song has great "sounds" -- the kind of sounds that really make you wonder how Trent creates such things. It really took me awhile to like this song at all, but it definitely starts to grow on you.

Beside You In Time
Cool lyrics and cool sonic craftsmenship. Very cool buildup and throbbing, drone guitar. The only downside to this song is that sounds a little like it was meant to be an intro to the next song... Very hypnotic.

Right Where It Belongs
Another gem. The haunting melody and cool fade in midway both make this song so instantly memorable. I love the piano and the lyrics are also very good. One of the best NIN songs ever.

Wednesday, May 04, 2005

XML Databases
I came across an interesting article on Slashdot about the future of databases. There was a lot of stuff in this article, but one thing that caught my attention was the mention of XML and databases. This is of particular interest to me in my work. There are a lot of "XML database" products out there. Many smart people consider these to be trendy junk-ware, just trying to capitalize on the popularity of XML. Many people consider XML itself to be a trend. That's a big story itself, but it seems to me that XML has only gained more and more popularity/use for about seven years now. That would seem to be unusual behavior for a trend.

Anyways, here's what I see when it comes to XML these days. XML has taken over as the de facto standard for exchanging information. EDI is not gone, but definitely fading away. XML is really good for exchanging information. The mistake a lot of people make is that XML is that they think that XML is also good for storing information. That is not really true. It is only as good as any other text file format (maybe not as good as some, but that's not relevant for this discourse.) If all you need to do is read some information in, text files (including XML) are good for this. If you only need to change the data infrequently, text files are OK. If the amount of data you need to store is small, again text files are fine. It's when lots of people need to start reading and reading in complex ways, as well as writing to the data that text files run out of usefulness. That's why we have pseudo-RDBMS systems, a.k.a. databases (they're not true RDBMS but that's yet another story.) Relational models and mathematics allow for wonderfully complex manipulation of data.

So XML databases are a sham, right? Well maybe, but maybe not. If I am a business, there's no way that I should store my data as XML. It's just not an efficient way to gain access to my data. An XML database does not change the equation here. If I need to exchange data with partners, then I will probably use XML for that. I'd prefer not to take my data and stuff it into XML, but that's probably the easiest way for my partners to accept data from me. Similarly, I can't expect my partners to send me data that is "formatted" for my database, so I will probably prefer XML from them. This still does not change my equation. I will still have to parse what they send me and store in a relational DB to gain maximum use of the data. So there is no need for an XML database.

That does not mean there is no need for XML database technology. Again, XML is great for data exchange, but the people at either end of the exchange are still going to want to store their data in a relation DB to get the most out of it. So they don't need an XML database. However, there are often "things" in between the data exchanging parties. These "things" are processes. If "something" must be done to the inbound data before it is ready to become part of my database, then that something will probably prefer to deal with the XML directly. After all, it is just an intermediate. It is not going to store the data long term, so it does not necessarily gain any value from putting the data into a relational database. It's also a fact that often these processes involve manual operations and human interaction. So the XML may need to stick around for awhile (persisted) and may need to viewed by people (queried.) Now that sounds like a time when I would need an XML database.

So if I was an engineer at Oracle, I wouldn't feel a pressing need to add robust XQuery capabilities to Oracle 11 (or whatever comes next for them.) Of course, they actually have added some of these abilities, but I think that's just because of the XML "buzz." Oracle is certainly not open source, but I would still guess that they are mapping things to their relational model and leveraging their existing technology. Anyways, the point is that XML database technology is never likely to be something needed by most companies, even if most companies use XML for data exchange. It does have its place, and that's around business processes. That could be a big market, but it will be tiny compared to the overall database market.

Monday, April 25, 2005

Ruby on Rails
I read an interesting article a few weeks ago comparing Ruby on Rails to the popular J2EE stack of Hibernate/Spring/JSTL. This is not really a meaningful comparison, but Ruby on Rails is a very interesting technology. It waves the mythical carrot of zero (or close to zero) configuration in front of the faces of developers and managers. It is one of the most aggressive attacks on that problem that I've ever seen.

Of course one of the most surprising things about RoR vs. J2EE is that no J2EE vendor has ever come up with something like RoR and sold it. The most obvious vendor for something like this is Oracle. They have certainly had their share of proprietary extensions to Java and SQL. At the end of the day, Oracle has always wanted people to write SQL. Sure they have Toplink, but it was never intended to allow true decoupling of one's domain model from its data store.

So now that Java has begun to embrace declarative and aspect oriented programming, shouldn't it be able to do something like RoR only better? One would think so. Of course high browed Java programmers (myself included!) wrinkle their noses at some of the shortcuts that RoR takes. Java is also chained to a legacy of interacting with legacy systems. For a long time it was Java's ability to interop that was a major selling point, but we're really past that now. Java 5.0 was definitely about giving developers the ability to do things quicker so they can compete with other technologies. J2EE 5.0 should be an even bigger step in that direction. This is all following what open source had already been providing. So now open source needs to go a step further and provide 'Java on Rails'.

Wednesday, April 13, 2005

I read this article a few weeks ago about why Americans suck at making cars but are good at making software. The conclusions were a little surprising: Americans are all about just getting something done as fast as possible, not about quality and craftsmenship. As somebody whose job it is to create software, this made me really think. Is the author right?

The answer is no. Americans are great at innovating, and that's not because we just want to get things done and don't care how we do it. It's because we have more freedom than most nations. We have a history of people challenging established ideas. You have to be careful when making such sweeping generalizaions about a country as large and diverse as America. There are certainly parts of our society that are less tolerant of new ideas and challenging the establishment. There is a name for ideologies that are less tolerant: conservative. Indeed the Red States don't tend to produce as much innovation as the Blue States. Of course it can be a little bit of a chicken-and-egg thing. More innovation usually means more economic success and that leads to more urbanization, which of course leads to more tolerance.

So maybe that's why Americans are more innovative and have great success at things like movies and software. That doesn't explain why Americans suck at making cars. I don't think its that Americans are incapable of making great cars, it's just that other countries (Japan, Germany) work a lot harder at it. They work harder at it because they have to. If you aren't innovative as a compettitor, then you have to make sure that you pay more attention to detail and quality on the things that you both make. If you can't come up with new products/features to compete, then you must be better at making the common things or you have no way of competing. It's really just a function of specialization in the marketplace. Does anyone think Hondas would be nearly as great if they were only sold in Japan?

Friday, April 08, 2005

Baseball, baseball, baseball

Ahh spring is really here when baseball season starts. Of course you couldn't tell it here in San Jose, where it's cold and rainy. I'm not letting that curb my enthusiasm for the start of the baseball season. I grew up an Atlanta Braves fan, though I'm also a fan of the Florida Marlins. Of course I root for the home teams here, too. I love going to Giants games.
Of course the big news in baseball is steroids. I think the whole thing is ridiculous. I don't care if a guy uses steroids, just like I don't care if they take vitamin supplements or if they've had Tommy John surgery. These are all modern "miracles" that let people get more from their body than ever before. There's a big downside to steroids though, but if somebody wants to take that kind of health risk, then that's their business. Trying to ban steroids is trying to stop progress. It won't work and is a waste of time anyways.
What's even worse than fans complaining about steroids is Congress getting involved. What an amazing waste of time. I suppose they think they have the right to do this, because they've granted MLB protection as a monopoly. That in itself is an outrage. They shouldn't be involved at all with baseball. It's a gross misuse of power. Let MLB have whatever steroids policy they want. If fans don't like it, then let them not go to games, not watch games on tv, not buy merchandise, etc. MLB will adjust their policy accordingly. There is no need for the government to step in. Of course there will pundits crying "but what about the kids!" That's what parents are for. Let them take responsibility for what their kids do.

Friday, April 01, 2005

Notable Deaths

Despite supporting Terry Schiavo's right to die, I took no pleasure in her passing away. I am glad the ordeal is reaching closure for her family. I think the continued outrage by Republicans is absolutely shameless. It always makes me wonder: do the Republicans really believe in crap like this or is it just pandering to the religious right? I'm not sure which is worse. If they really believe in it, then they really do have more in common with Mussolini than with Hayek. If they don't (which is more likely I think), then their duplicity is truly appalling.

As for The Pope ... well it's just sad. Basically the whole world watched his health steadily decline and the got to sit vigil as he passed away. I'm not Catholic, and disagreed with The Pope on almost everything, but it is heartbreaking to see somebody wither away, especially a person as beloved as The Pope.

Wednesday, March 30, 2005

The Hand That Feeds

Ok so this is neither programming or politics, but I felt like writing about it anyways. I spent about an hour last night listening to the new Nine Inch Nails song, The Hand That Feeds. I bought it off iTunes (along with what I guess is the digital age equivalent of its B-side, The Line Begins To Blur.) NIN was my favorite band when I was in college, and I saw them and David Bowie in concert at the Forum in LA in 1996. It was one of the highlights of my years at Caltech :-) Anyways, the new song is awesome. I cannot wait until the new CD, With Teeth, is released on May 3. There's actually a listening party tonight at a club in San Francisco. If I was single and still living or working in SF, I would probably try to go, even though I'm not exactly a club guy.

Tuesday, March 29, 2005

More On Unit Testing

My JUnit presentation stirred some interest at my company. We are working on a lot of code that runs inside an application server. JUnit is not really meant for such apps, but there are extensions that are. The one that I pointed out in my presentation was Cactus. There were some other people touting JUnitEE today in email threads at work. Others quickly pointed out the many advantages Cactus has over JUnitEE, though I actually think other would probably be sufficient for testing EJB session beans, which is the most common thing we have to test. Cactus is better for web apps, and since we have a framework we've built for building web apps, it seems like a more logical choice.
Unit Testing

Yesterday I made a presentation on JUnit and unit testing in general. I tried to make my presentation very informative, but it's really a pretty interesting topic. I think unit testing is one of the most misunderstood aspects of software engineering.

Most engineers resist the idea at first, and for good reason. It seems like a lot of overhead being added to the development process, and it's usually overhead that nobody is going to give them time for. I know that's the way it seemed to me when I was first introduced to unit testing. I started to change my mind on the subject because I was able to experiment with it first. Having a structured but easy-to-use framework for testing my code as a I developed it was great. As I became more and more familiar with it, and had the chance to teach others about it, I became more in-tune with the philosophies behind it and more rigorous in my approach.

I really became cognizant of the misconceptions about unit testing while I was working at KeepMedia. On one hand I had a manager who did not like the idea of introducing overhead, just as I had felt years before. On the other hand, we had a very understaffed QA staff, and they looked at developer written unit tests as a way to get quality building blocks for regression testing. Of course there are flaws with both of these mindsets.

Unit testing is overhead, but not necesarrily significant overhead if you use a framework like JUnit. Of course the more complex an application is, the more effort there will be in creating sufficient unit tests. A complex application needs more unit tests, though, and that's the point. Unit tests don't add as much overhead as you think because they help you catch a lot of bugs early on. So the extra time you spend early on writing unit tests will translate into less time later. It can also translate into less time during the QA cycle, which is a bonus since there are more people's time involved at that stage. The hard thing for inexperienced engineers and managers to understand is that bugs will happen, and that's what makes unit testing valuable (well there's other things too, but I won't get into that yet.) My manager at KeepMedia was inexperienced in managing software engineers, so this was not easy for him to understand.

Now I mentioned the QA cycle above and how unit testing can reduce that cycle in many cases. However, unit testing is not meant for QA, it is meant for developers. Of course functional testing by QA has a lot in common with unit testing, but QA should never use unit tests written by developers as a substitute for their own functional testing. JUnit (especially with Ant) makes the aggregating and automated running of unit tests very easy, and it can be tempting to leverage this for regression testing. This is an equally bad idea. I was actually surprised that QA people would want to do this, since you would think that they would see that such an approach would eventually eliminate a company's need for QA at all. If developers write all the unit tests that you need to perform functional and regression testing, then why do you need QA? Many XP pundits would actually say that you don't, but I think QA is still very valuable. I think they are valuable because of their objectivity, but you really lose that if they make use of unit tests written by developers.