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

Spring

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:

Pros
  • 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.
Cons
  • 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.
Funnyfox
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 ...

Only
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.

Sunspots
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.

Monday, March 28, 2005

This is my second try at a blog. My first was back in 2003, while my wife was pregnant with our first child. Of course becoming a dad took a lot of my time and the blog went down the drain. Now our son is a year old, and I have a little more time. This time I'm going to stick to non-personal stuff, mostly technical and political. I'll try not to mix the two, since the technical ones may be reposted on my company's intranet. So let's start with a political one.

The Terry Schiavo ordeal has really gotten out of hand. It's amazing that Republicans have been so willing to try and step in to an affair that was legal one handled by a state court. Of course nobody wants to have to make the decision of letting a love one die, but would it really be better to have the government make this decision for us?

Even more annoyingly predictable is the anti-judicial system banter. I had to hear a pundit on CBS radio last night talking about how wrong it is to let unelected judges make important decisions like this, instead of having our elected officials do so. This is usually the kind of talk you hear when the courts protect flag burning or don't allow prayer in public school.

Of course liberals are just as bad. I'm constantly getting bombarded by emails from liberal groups about trying to block Republican appointed judges. Maybe the judicial branch always winds up being hated? I guess that makes sense because they are not elected and don't have to worry about re-election. If they were elected, then we would just have to blame ourselves for electing them but could vow that they would not be re-elected.