Sunday, December 31, 2006

2007 Resolutions

  1. Continue to lose weight. I should get down to my target weight of 185 lbs. this year.
  2. Run a half-marathon. Maybe the SF Marathon this summer?
  3. Pay off college loans. Finally...
  4. Scripting languages. I've dabbled in Groovy, and have written some small webapps with Ruby (and Rails of course.) Time to write something that's actually complex this year.
  5. Organize my documentation. I write a lot of documentation, I can't help it. I need to be more organized with it, though. Documentation (always before coding) really helps me think through my design, but the lack of organization makes it less than useful to others.
  6. Play more chess. I started to play a little this year, but then stopped. I need to hone my skills, since I'll need to teach it to Michael, Jr. pretty soon.
  7. Bike to work. Not everyday, but at least once or twice this year when it's warmer. My big problem with it is not biking to work, but biking back home at the end of the day. I'll just need to bike home before dark one day, or early enough to catch the train.

Favorite CDs of 2006

I mentioned before that the Red Hot Chili Peppers' Stadium Arcadium had to be my favorite CD of the year. I bought it in May, and the two discs have continuously occupied slots #3 and #4 in my car's changer pretty much ever since (after I had ripped the discs with CDex of course.) A lot of people criticize it for being a double-CD. Double-CDs are always a little indulgent, and everyone can always make their personal list of what songs should have been included in an-even-better single CD. Of course usually everyone's list are slightly different. Stadium Arcadium has a ton of really great songs that are more and more rewarding on subsequent listens. That defines a great CD to me. My favorite songs on it are "Especially in Michigan," "Snow (Hey Oh)," "Wet Sand," "Desecration Smile," "Stadium Arcadium," "Tell Me Baby," and yes, "Dani California." Here's my other favorites, in no particular order:

Hip Hop is Dead by Nas -- My favorite CD of 2005 was Kanye West's Late Registration. I wondered if it represented a return of great hip hop CDs. The answer is no. Hip Hop is Dead is a very good CD, but it's pretty much the only really good hip hop CD this year. I kind of like Snoop's new one, too, but it's nothing too special.

The Crane Wife by The Decemberists -- I really liked last year's Picaresque, but The Crane Wife is even better. Much better actually. If it wasn't for the Peppers' opus, this probably would have been my favorite of the year.

St. Elsewhere by Gnarls Barkley -- Yeah there are other songs on here besides "Crazy." None as good, but several very enjoyable ones.

Pearl Jam by Pearl Jam -- Maybe I was biased on this one. This is a very good CD, but I probably like it more just because it's by Pearl Jam and it's their first good CD in awhile. Still, you could make a good case for this being the soundtrack of the political changes in America in 2006.

Taking the Long Way Home by The Dixie Chicks -- What is this, country music on my list? This CD is fun and relaxing at the same time, with several memorable songs. The popular "I'm Not Ready To Make Nice" is a great anthem, but I really love "Lullaby." It makes me think of my two sons. What can I say, I'm getting old.

Boys and Girls in America by The Hold Steady -- This CD rocks. It's great to listen to driving or running. I love the singer's voice.

Friday, December 29, 2006

XML Schema Parsing

You might have heard that XML Schema is dead. I read that, and the article it links to as proof, a couple of weeks ago, and was not overly impressed. Not that I don't agree that RELAX is generally easier, but the proof that "everybody with a choice picks RELAX" just does not cut it as a logical argument. It is a classic appeal-to-authority logical fallacy, where the authority here is the collective unconscious of the technology world.

Recently I had a surprisingly difficult problem to solve. I had an input document that was very simple. It looked like this:

<doc>
<param1>val1</param1>
<param2>val2</param2>
...
</doc>

Then I had metadata that mapped param1 to an XPath for a target document. For example, param1 -> /foo/schmoo/do/wop/dee , etc. I needed to generate an XQuery that would take my input document and produce the target document with the correct values (val1, val2, etc.) inserted into it.

Seems pretty easy. It gets a little harder because this is also possible for the input document:

<doc>
<param1>val1<param1></param1>
<param1>val1a</param1>
<param1>val1b</param1>
...
</doc>

I still have the same XPath for param1, i.e. something like /foo/schmoo/do/wop/dee. Obviously there's some repeating elements in my target document, but where does the repeating occur? From the above information, you could have a target doc like:

<foo>
<schmoo>
<do>
<wop>
<dee>val1</dee>
<dee>val1a</dee>
<dee>val1b</dee>
...

Or:

<foo>
<schmoo>
<do>
<wop>
<dee>val1</dee>
</wop>
<wop>
<dee>val1a</dee>
</wop>
<wop>
<dee>val1b</dee>
</wop>
...

Obviously there are even more possibilities than this, but you get the point. There's no way to be sure. But I was armed with two more bits of information.

First, and this is big, I knew that there could only be one repeating element in a given XPath. Of course this is not true in the abstract, but for my particular problem it was true. So either wop repeated or dee repeated, but not both. Next, I knew the XML Schema of the target document. So I could figure out if it was wop or dee that repeated. That is enough information to create the XQuery.

Now all I had to do was parse the XML Schema for the target document. No problem, right? There are a lot of Java XML Schema parsers out there. I was already using Sun's JAXB Reference Implementation, and it included Sun's XSON XML Schema Parser. So I decided to give that a try.

XSON is a pretty pure implementation of the XML Schema specification. It's objects correspond directly the ones you see in the spec, as do the relationships between these objects. And there's the problem. The spec is very complex. It has the smell of a class "design by committee" spec.

In a design by committee, everybody has their own ideas on how to do things. So the design winds up being "all-inclusive" so that everyone's ideas are present, and nobody gets their feelings hurt. Such all-inclusive designs are complete Frankensteins. XML Schema is definitely a Frankenstein.

My task was really simple. I knew the name of an element from the XPath. I just needed to get the cardinality of this element. First thing first though, I had to parse the schema. This wound up being trickier than I expected. The schema I needed to parse referenced two other schemas. Here's its references:

<xs:include schemalocation="includedSchema.xsd">
<xs:import namespace="urn:my:namespace" schemalocation="importedSchema.xsd">

The schemas were sitting in the same package as the schema I was parsing. I knew that this was going to be an issue, so I wrote a simple EntityResolver that would use a ClassLoader to load these schemas. Only that did not work. My EntityResolver would not get invoked at all. Instead, XSOM would throw an exception complaining about relative URLs being used with no base URL being set.

This was aggravating. If it would only give the EntityResolver chain a chance, then all would be resolved. But no. So I had to change the include and import statements:

<xs:include schemalocation="http://complete.garbage/includedSchema.xsd">
<xs:import namespace="urn:my:namespace" schemalocation="http://complete.garbage/importedSchema.xsd">

Amazingly this worked. Now it invoked the EntityResolver chain, and my custom resolver loaded the referenced schemas. Here's my parsing code:

EntityResolver resolver = new MyCustomResolver();
XSOMParser parser = new XSOMParser();
parser.setEntityResolver(resolver);
// load the initial schema into an InputStream
parser.parse(myInputStream);
XSSchemaSet schemaSet = parser.getResult();
XSSchema mySchema = parser.getSchema("myNamespace");

Now back to finding the cardinality of the element. To find the root element turned out to be very easy:

XSElementDecl rootElement = mySchema.getElementDecl("root_from_xpath");

That's easy. No need to check the cardinality of the root element, as it cannot be greater than one. It turns out that even if I wanted to check it, I could not. Why? Because in XSD, Elements do not have cardinality. Only Particles have cardinality. A Particle can be an Element, but the relationship is not reflexive, i.e an Element cannot be a Particle.

Unless you are already familiar with XSD, you're probably thinking what I thought: WTF!?!? What is the point of this non-reflexivity? Every Element except the root one is in fact a Particle. So by disallowing a symmetric relationship, you've only made sure that you can't get a Particle for the root Element. That's all you've bought. And what have you suffered? Well instead of finding an Element and getting it's Particle to get its cardinality, you must find a Particle that happens to be the Element that you want, and check that Particle's cardinality. It's like you descend to the lowest level of a tree to check some metadata, then go back up a level to get the other metadata that you need. I did find a nice diagram that shows this relationship, though it doesn't make it look as diabolical as it really is:



So back to the problem. As I descend an XPath, I need to find the Particle in the tree representing to the Element whose name corresponds to the name in the XPath. So I need the ComplexType of the current parent Element. Obviously some recursion is needed, so I defined a XSComplexType variable called current to use for the recursion:

XSComplexType current = rootElement.getType().asComplexType(); // initial value

Then at each step in the XPath, I had a string localName that was the element name:

XSContentType content = current.getContentType();
XSParticle particle = this.findParticleForElement(content.asParticle(), localName);
XSElementDecl element = particle.getTerm().asElementDecl();
if (particle.isRepeated()){
return element.getName();
} else {
current = element.getType().asComplexType();
}

The key is the findParticleForElement method:

private XSParticle findParticleForElement(XSParticle particle, String elementName){
XSTerm term = particle.getTerm();
if (term.isElementDecl() &&
term.asElementDecl().getName().equals(elementName)){
return particle;
} else if (term.isModelGroup()){
for (XSParticle p : term.asModelGroup().getChildren()){
XSParticle temp = findParticleForElement(p, elementName);
if (temp != null){
return temp;
}
}
} else if (term.isModelGroupDecl()){
for (XSParticle p : term.asModelGroupDecl().getModelGroup().getChildren()){
XSParticle temp = findParticleForElement(p, elementName);
if (temp != null){
return temp;
}
}
}
return null;
}

You might wonder why the extra recursion in the find method. Well XSD allows for inheritance, and this is what causes the extra recursion. An element can have a ModelGroup as a child, and the children of that ModelGroup can be ModelGroups themselves. So you could have to descend several ModelGroups before finding the target element, just to find a direct child element.

Sunday, December 24, 2006

Favorite Songs of 2006

I was picking songs to listen to on my iPod last night, and thought about my favorite songs of the past year. Here they are, in no particular order:

Supermassive Black Hole -- Muse
Vicarious -- Tool
Crazy -- Gnarls Barkley
Where'd You Go? -- Fort Minor
Out Here All Night -- Damone
Had a Bad Day -- Daniel Powter
Upside Down -- Jack Johnson
Hip Hop is Dead -- Nas
Paralyzed -- Rock Kills Kid
Gold Lion -- Yeah Yeah Yeahs
Think I'm in Love -- Beck
The Joker and The Thief -- Wolfmother
Snow (Hey Oh) -- Red Hot Chili Peppers
Especially in Michigan -- Red Hot Chili Peppers

I could probably list a lot more songs from the Red Hot Chili Peppers' Stadium Arcadium. That was definitely my favorite CD of the year. Maybe I'll make a list of other good CDs later next week.

Saturday, December 23, 2006

Bose Quiet Comfort 3 Headphones

My company bought everybody Bose Quiet Comfort 3 Headphones as holiday gifts. I thought that was a pretty nice gift. I think last year my old employer gave me a flashlight as a holiday gift... I wear headphones a lot, especially while programming. So I was pretty happy about this gift. The thing is, I already had some pretty good headphones.

I've been using Sony MDR-V600 headphones since high school. I remember in 1990, when I was a sophomore in high school, and a friend of mine had just gotten back from his first year at UF. He had his Discman with him and told me "dude you have to hear this." It was Nine Inch Nail's Pretty Hate Machine. It blew me away. What also blew me away was my friend's headphones: Sony MDR-V600's. I knew I had to have both that CD and those headphones. I got the CD a couple of days later, and the headphones the next year ($100 headphones aren't the easiest to come by for a high school kid, especially back in 1990.)

I've been a huge NIN fan ever since, and I had those V600's for eleven years. They were with me on numerous cross country trips from my home in Florida back to Caltech in L.A. By 2002, they were in terrible shape, and my girlfriend bought me a new pair (just a few months before we got married.) I've had those for almost five years now. So I've been a V600 listener for almost sixteen years.

But now I have those fancy Bose headphones. At first, I didn't think they sounded as good as my V600's. I think part of that was because I had been listening to the same headphones for sixteen years. Another reason was because the QC3's needed different equalizer settings the V600's. Again, when you've used the same headphones for sixteen years, you forget about changing the equalizer. For what it's worth, the QC3's needed more treble and less midrange than the V600's. Finally, the QC3's are less sensitive than the V600's. It's a common stereo salesman trick to use the higher sensitivity of a speaker as a way to "prove" the speakers sound better and are worth the extra $$$.

Now I actually think the QC3's sound as good as the V600's. I think the midrange and treble are a little clearer on the QC3's, but the V600's have a little more detail on the low-end. The QC3's are punchy on the low-end, but lack some detail. This is pretty typical of Bose, from what I hear. These are the first Bose products I've owned.

The QC3's are really comfortable and the noise cancellation is excellent. They also seem like they will be more durable. I've gotten a lot of use out of the V600's, but their headbands and ear cushions fall apart pretty easily.

Thursday, December 21, 2006

The End of Computer Viruses

Remember back when the news was filled with stories of some new computer virus or worm that was wreaking havoc with corporate networks and home computers all over the country and world? Remember Melissa, I Love You, Code Red, Slammer, Blaster, and MyDoom? Of course you do, it was only two years ago when "malicious" code and "outbreaks" were in the headlines on a regular basis.

Do those days seem long gone? We really haven't seen any kind of "outbreak" in the last two years. The last worm that got any kind of press was Zotob. One can argue that the only reason it got a lot of press was because it hit CNN's website.

So what's happened? Are people much better at keeping their OS updated with the latest security fixes? Do we all have anti-virus software that is also frequently updated? Those things are probably true. You have to give credit to Microsoft, too. The mighty XP Service Pack 2 (and Server 2003 Service Pack 1) plugged a lot of holes. It turned on firewalls and it annoyed the crap out of you if you didn't have the latest patches and an updated anti-virus program always running.

Vista is even more secure than XP-SP2, with Microsoft finally realizing that having every user as an administrator by default is a flawed strategy. However, is the extra security even needed? Maybe it will provide extra deterrence to spyware, but the age of the computer virus appears to be over.

I'm not just saying this because of the lack of notable outbreaks over the last two years. I recently had coffee with a friend of mine who works for a major security software company. He told me the entire emphasis in the company has switched from viruses to spam. It's not nearly as high-profile. There's not going to be a story on CBS about spam making it into your inbox, but that's where the money is now. The only capitalist conclusion is that viruses are dead. Of course to put my money where my mouth is, I should turn off the antivirus software on my computers...

Wednesday, December 20, 2006

Sharefare Update: Ludi Labs & Roost

Six months ago, I posted that I had left Vitria and was working for a start-up called Sharefare. I couldn't say too much about what we were doing at the time, since we were in classic stealth mode. I've gotten some pings from a couple different folks lately about Sharefare, and there's been a lot going on, so I figured it was a good time for an update.


First, Sharefare changed its name to Ludi Labs (I think this still points to the old Sharefare site, be patient.) Ludi Labs comes from Herman Hesse's The Glass Bead Game. The name change was made official about a month ago, and I even have a fancy business card with the new name.

Update, February 2: The CEO of my company has asked me to temporarily remove the information I had provided in this post. I was quite surprised by this request, since I didn't really think there was anything revealing, but c'est la vie.

Sunday, December 17, 2006

Christmas Shopping @ Circuit City

Saturday I finished up my Christmas shopping. I was researching a certain product and found it very cheap at Circuit City. What was bizarre was that it was $10 cheaper to buy online than at the store. Circuit City offers in-store pickup at no extra cost, so basically I could save $10 by buying it online and picking it up at the store. So that's what I did.

They gave me a confirmation number to use. Of course the Circuit City site suggested I print out the confirmation number, I probably would usually (trees be damned, heh.) But at the time, my wife was in the middle of printing a ton of Christmas stuff. The confirmation number was emailed to my GMail account. So I figured that even if I really needed the number, I would just get it off my GMail via my cell phone. However, I didn't really think I would need the confirmation number.

So I went to Circuit City, where I had to battle crazy Christmas traffic just to find a parking spot. I finally did, and waltzed into the store. There I was greeted with a long line to customer service, and there was a sign indicating that customer service was where I needed to go for "web pickup." Fine. So I waited in the line, and finally got the customer service counter. There the clerk asked me for my confirmation number.

I told him I didn't have it, so he asked for the credit card I used to buy the item online. This was exactly what I expected. I handed him my credit card, but after swiping it he said there was "no hit." He asked for the phone number I had used when I placed the order. I gave him this number, but again "no hit." He then preceded to lecture me on how I should have printed out my confirmation number.

At this point, I brought out my cell phone only to see the dreaded "no service" indicator. How could this be? My phone is through Verizon and Circuit City sells Verizon phones! I've had the phone for a year and I've never lost service on it anywhere in the Bay Area. I've taken it to the east bay, San Francisco, all over the penisula, and of course all over Silicon Valley. Never any problems. I've biked in the hills south of San Jose, up to Calero Reservoir, and never had problems there. But for some reason at Circuit City in South San Jose... no service. The ever-so-helpful then suggests that I go use "the broadband terminal" to retrieve the confirmation number from my email.

I was annoyed to say the least. I see the "broadband terminal" and of course there's a ton of people there. So I went outside, where I had some spotty service, and retrieved the number. Then I stood in line -- again -- and finally met with the same clerk, but this time with confirmation number in hand. Finally I got my purchase.

Amazing how I can pick up eTickets for thousand dollar plane tickets with just the credit card used to purchase the tickets, but this is not good enough at Circuit City. I'm not sure what bothers more -- that this did not work, or that the guy tried to use it and it did not work. I'm not so sure I'll be doing the in-store pickup again at Circuit City anytime soon.

Wednesday, December 13, 2006

Hacking My A950

About a year ago, I switched my wireless service to Verizon and bought a Samsung SCH-A950. It has a lot of nice features, but in typical Verizon fashion, some of these were crippled.

First off, it is a music player, but Verizon made it where it could only play WMA files, not MP3s. I had read that Samsung included an MP3 player, but Verizon just disabled.

Next, while it is a Bluetooth phone, it only supports Headset and Hands-free profiles. In particular, it does not support Dial-up networking. That's a real shame given the EVDO network it can connect to.

I had found this link on enabling MP3 and DUN, but it seemed like too much trouble. But today I cam across this gem. I enabled the "Hidden Menu" by simply punching in 1475369126874#*. From there it was easy to enable MP3 playback. I haven't tried the DUN option yet, since it's not over Bluetooth and thus it's not as interesting to me.

Monday, December 04, 2006

BCS -- The Final Chapter

So it was a good weekend for the Gator Nation. I was surprised to see USC fall, though they've really been pretty shaky at many time this year. I was pleased to see how well Florida played against Arkansas, particularly the Florida defense holding Arkansas to 130 yards total on the ground. I still thought that there was a very good chance that Michigan would get a re-match with Ohio State for the BCS Championship.

Then I saw a lot of people lobbying for Florida on Saturday nigth and in the papers on Sunday morning. I think the thing that held weight for a lot of people was that a team playing for the national title should have won it's conference. A Big 10 vs. SEC championship just made a lot of sense to people, so even though they may not have liked Florida, they moved them up to #2 in the polls. That turned out to be enough, and now Florida will play Ohio State on January 8.

I'll be the first to admit that Florida may not be as good as Michigan. However, I don't think Michigan could do any better the second time against Ohio State than they did the first. It is usually harder to beat a team twice, but Michigan was lucky to be within 3 points at the end of that game. A neutral field would help them, no doubt, but I think Ohio State would have won by double digits. Maybe Florida doesn't have a chance either, but I think their defense will give Ohio State some problems. Ohio State has not played against any team with anywhere near the speed of Florida's. But whatever. Florida deserves a shot at the title more than Michigan, who has already had their chance to beat #1. We all know that a playoff is needed, and now they'll be a lot of people from Michigan behind that idea. The entire SEC has been behind the idea ever since what happened to Auburn a few years ago.

Tuesday, November 28, 2006

MP3 CDs


One of the nice features of my car is that it's stereo plays MP3 CDs. However, the display is kind of annoying. One of the great things about MP3s is that they have embedded metadata. So notice that the artist (A Tribe Called Quest) is being displayed on left side of the display and that the name of the current song ("Butter") is also being displayed. So what is up with "TITLE 004"? What ID3 tag is being used for this? Why doesn't it say the title of the song ("Butter") there instead? Also, up in the right corner notice FOLDER 04. What should be there?


The CD in question was made using iTunes. Admittedly, iTunes' support for MP3 CDs is not exactly extensive. It burns them just fine, but it doesn't expose the folder concept. The only way to get folders on the MP3 CD is to sort the playlist by the Artist. If you do this, iTunes will create a folder per artist, and the inside that folder, a folder per CD. So in the case above, there was a "A Tribe Called Quest" folder and it contained a folder called "The Low End Theory." The song "Butter" was in this folder. So instead of FOLDER 04, I would have really liked it to say THE LOW END THEORY.

Anyways the TITLE 004 is more annoying. Even if it said the title of the song, it's still weird. There are four fields for displaying data, but only three logical pieces to show (song title, artist, and folder/CD.) I guess you could also show something else like genre or year, but that doesn't seem like what my stereo is trying to do.

So maybe there is better software out there for creating MP3 CDs. I have used Nero, and manually created the folder structure. I got similar results to what I got with iTunes, but obviously spent a lot more time creating the CD. Time to do some research...

Monday, November 27, 2006

JRockit and Tomcat

I decided to try out BEA's JRockit JVM a try as my server JVM. It bills itself as being a much faster JVM on x86 machines. So far it doesn't seem that much faster, except when running the JVM in debug mode. For that, it seems to launch much faster than HotSpot did. Actually there seems to be little difference in its startup time in debug mode vs. "normal" non-debug mode.

The only weird thing was that when I attached Eclipse to it, Eclipse complained about some line numbers not being reported by the code. This had no effect on any of the breakpoints I had set. Those worked flawlessly. It seemed to be around CGLIB enhanced byte-code, but there were obviously no breakpoints set in such code. I set a breakpoint in code that I knew would be CGLIB enhanced, but that still worked fine.

Just for kicks, I decided to also use JDK 1.6. I had a colleague tell me that "Mustang" was a lot faster than JDK 1.5. I was in for quite a surprise. My application threw an NPE while starting up. Why would changing JVMs cause an NPE? The startup was indeed much faster, but that was because the NPE caused less things to load. The NPE happened while Spring was "gluing" together several beans. I investigated a little, but found nothing obvious. Maybe I will dig deeper later.

Update: Not sure what caused the above problem, but since the official release of Mustang, I've switched over to using very successfully. There are definitely some big performance improvements, both in the client and server modes. I'm looking forward to making use of its scripting language features.

Sunday, November 26, 2006

This Week's BCS Musings

I have to admit, I was more relieved that Florida beat FSU than thrilled. It wasn't because I'm getting caught up in the hopes of a national championship for the Gators, it's just because it was so obvious that Florida was a much better team, yet the game almost got away. The Seminole defense really rallied at halftime and the team played with a lot of emotion. That was scary. Having two drives deep into FSU territory that resulted in zero points in the first half was scary. Picking off FSU three times in the third quarter and getting nothing from it was even scarier. Losing Deshawn Wynn and Percy Harvin (Harvin's injury particularly scary) was even scarier. So it was a relief to watch Chris Leak being allowed to just drop back and throw the ball down the field and put up a go-ahead TD in the fourth quarter. Coach Meyer let Leak do what he does best, and Leak responded with a huge day overall and a clutch performance in the fourth quarter.

Once the feeling of relief was over then it became a thrill to have beaten FSU three years in a row. Then it was time to start thinking about the BCS. The big game was Notre Dame at USC, of course. The "smart" thinking is that USC needed to knock off Notre Dame and then lost to UCLA if Florida was to have a chance of going to the BCS title game. Well USC took care of Notre Dame. Yay.

There were a lot of other BCS storylines this weekend though. First, LSU knocking off Arkansas was probably a bad thing for Florida. It means that beating Arkansas next week (big assumption there by the way) will not boost Florida's BCS standing as much as it would have if Arkansas had beaten LSU. Of course it shouldn't matter if Team A beats Team B, as long as Team C beats them both, right?

Still the LSU win was part of several wins that show just how tough Florida's schedule has been. LSU, a team Florida beat, is a top ten team and they beat another top ten team. South Carolina, another team Florida beat, defeated a top 25 team in Clemson. Georgia, another victim of Florida, beat another top 25 team, Georgia Tech. Tennessee, a team Florida beat on the road, beat a seven-win team in Kentucky. Altogether, teams that lost to Florida earlier in the season knocked off four teams with a combined record of 33-10. Interestingly, 33-10 is also the combined record of LSU, South Carolina, Tennessee, and Georgia if you leave out their losses to Florida.

So what was I saying about not getting caught up in the BCS madness? I'm really not. Numbers are just interesting to me. Florida has very little chance of playing Ohio State. I will be happy if they just beat Arkansas next week. Arkansas's McFadden is the scariest player the Gators have faced this year, and that's saying a lot. Hopefully the Gators can force Arkansas into passing, because that's obviously a weakness for them. If so, it will be Florida's first SEC championship since Spurrier left, and that's a big deal.

I really think that Florida's offense is two (no, not one) years away from being the explosive offense that Meyer can produce. Chris Leak is a great quarterback, but he is a bad fit for Meyer. I think that Meyer has done a poor job of making use of Leak, Dallas Baker, and Andre Caldwell. They aren't his kind of players (Caldwell can fit into his offense, but it's not a great fit) and he hasn't done a good job of adjusting to them. Next year he will have Tim Tebow in there, but I really think it will be 2008, with Tebow as a junior, that the offense will put up huge numbers.

The defense is championship caliber this year, though. People love offense though, hence all the talk of "style points" and Florida's lack of them. Could Florida run the tables in a playoff? It's hard to say. The defense has been great, but in all fairness, they haven't played any really elite offenses. Tennessee is the best offense they've played, and they were very good against them. LSU is also a good offense. They will be tested next week against Arkansas, but it's hard to say if they could shutdown an elite offense like Ohio State, Michigan, USC, or Notre Dame. Maybe we'll get to find out in the Sugar Bowl...

Saturday, November 25, 2006

Food, food, food

I changed my diet and lifestyle in August of 2004. Since then I've lost 135 lbs. and I'm planning on losing another 20 lbs. or so. That doesn't change the fact that I love food. My "diet" has been counting my calories and fat very closely during the week, but eating pretty much whatever I want on weekends. Since this is Thanksgiving weekend, I thought I would write about some interesting eats I've had recently.

Last weekend, my sister Jeana was visiting from Florida. She's been out here several times over the years, so she's seen most of the typical tourist things in the Bay Area. We decided to take a little trip down to Santa Cruz. It's the off season there, but as somebody who grew up in beach town, I know how pleasant it can be to visit the beach in the winter.

I could write about a lot of things in Santa Cruz, but this is about food. We had lunch a little Mexican place right across from the Boardwalk called El Paisano Tamales. The remarkable thing about this place was its giant burritos -- fifteen inches. I had to order one. It was a pretty good burrito, and it was huge. I've had better burritos, but never a bigger one.

Next, back at the Boardwalk they had the kind of food you usually find at carnivals and fairs. That included a fried cheesecake. I had to give one of these a try. It was a lot like fried ice cream, but with cheesecake inside the fried tortilla instead of ice cream. It was good, but I think it could have been better if the cheesecake would have been cooler.

For Thanksgiving, I like to make a pie every year. Other people make the traditional pumpkin pies, so I try to do something a little different. Last year I made a cherry-red raspberry pie. I liked it, but everyone else seemed to think it was too tart. I probably needed to reduce the filling more than I did, which would have sweetened it up. This year I decided to make an easier pie, a traditional apple pie. I found a great recipe that was both really easy and very good. The key ingredient was applesauce. More gourmet recipes use Cortland apples that reduce into an applesauce during cooking, so this is kind of a shortcut to accomplish the same thing.

This was a Paula Deen recipe. My wife and I were watching her show and she had an interesting recipe for the classic cheeseburger and fries. We tried those this weekend, and they were great. We only made "one level" burgers instead of the giant duplexes from Mrs. Deen's recipe, but they were still delicious.

Wednesday, November 22, 2006

Eclipse Tuning

Everybody loves Eclipse, right? It's become ubiquitous, right? It's been my primary IDE for a couple of years now. Lately, I've run across some issues with it though. And when I say issues, I mean crashes.

Eclipse has a relatively easy to find log file (in $project_home/.metadata/.log) and I quickly found the problem:

!MESSAGE Failed to execute runnable (java.lang.OutOfMemoryError: PermGen space)

The dreaded Java out of memory problem. I found a couple of interesting bits on this particular variant of the out of memory problem, i.e. PermGen space. This article points to using the JVM flags for increasing PermGen size, while this one claims that HotSpot has garbage collection problems on long running processes (I have Eclipse open all day usually) but that JRockit does not have these problems.

I have some experience with tuning my JVM, so I decided to tune Eclipse as my first option. To do this, you just have to edit $eclipse_home/eclipse.ini. Here is what mine looks like now:

-vmargs
-Xms256m
-Xmx512m
-Xmn128m
-XX:+UseParallelGC
-XX:MaxPermSize=128m

This seems to work pretty good. I haven't had any crashes since then and Eclipse launches much more quickly. I threw the UseParallelGC in there to take advantage of the extra core on my CPU, but I'm thinking of removing that. Seems like Eclipse is a little less responsive with that option, but that's very subjective.

Monday, November 20, 2006

Another Year, Another BCS Controversy

I wasn't too worried about the "what if Rutgers goes undefeated" talk and how they would "deserve" a shot at the BCS title. However, as I suspected, Michigan's loss to Ohio State only dropped them to #2 in the BCS standings.This has caused Urban Meyer to go crazy about the possibility of a rematch between these two teams.

First off, I don't think Michigan should be #2 in the BCS. They only lost by a field goal, but the game really was not that close. They stayed in the game because of Ohio State turnovers, and they were lucky to get two of those three turnovers. They had luck on their side and they still needed a late TD + 2pt conversion to get within a field goal. If it wasn't for the turnovers, they would have been blown out. Ohio State was clearly the better team. If the two teams do play again in January, there is no question that Ohio State will win by double digits.

That being said, Michigan is probably just as deserving as anybody else out there, where anybody else is USC, Florida, Arkansas, and Notre Dame. I would love for Florida to play Ohio State, even though I would also be very nervous that they too would get blown out. However, USC has the inside track, current BCS standings be damned. Michigan is done. USC's ranking will go up if they beat Notre Dame and UCLA, and they don't have go up much to put them ahead of Michigan. They control their destiny.

Things only get crazy if USC loses. I don't think Notre Dame will go ahead of Michigan or the SEC champion. It seems very unlikely that The Irish will play Ohio State. It seems like the SEC champion should move up to pass Michigan, but it's a little bit of a crap shoot. Certainly if something bizarre happened like Florida lost to FSU, but then beat Arkansas would lead to the Big 10 rematch.

I still think it's unfair to Ohio State that they would have to beat Michigan twice, but Michigan would only have to split with them to win the national championship. However, I think Ohio State would handle Michigan easily, but who knows. Many people have pointed that Florida State faced a similar situation in 1996 when they had to play Florida again the Sugar Bowl. That was probably unfair for FSU, but that was also one of the "problems" that the BCS was supposed to solve. That year, FSU was #1 and Ohio State was #2, but they did not play because the Big 10 did not participate in the BCS at the time. So Ohio State went to the Rose Bowl and was upset by the Jake Plummer lead Arizona State. The next day, FSU played #3 Florida in the Sugar Bowl, and was completely crushed by the Gators. It only became a national championship game because of Ohio State's loss. If Ohio State had won the Rose Bowl, then they would have been national champions without having to beat the #1 team, FSU. So a lot of things were messed up then.

Sunday, November 19, 2006

Milton Friedman 1912-2006

This week saw the passing of the great economist, Milton Friedman. There is a nice homage to him on Cato. I can proudly say that I am one of the many people influenced by Friedman. I double majored in economics for three years in college, before I wimped out and settle for a single degree in math. The economics classes at Caltech were definitely tilted to the highly analytical theories of Keynes. I would often find myself dreaming of IS-LM curves. I knew about Hayek and the Austrian School, but they seemed to be saying "it's too hard to use math on economics, so don't even try." A lot of their theories were reactionary ones to the rise of fascism and communism as well, so they seemed dated in the 90s. Then I read Friedman.

Actually it was Friedman's writings on health care and the AMA that really got to me. When I learned this was from his book Free to Choose, I had to read that. It made me question some of the "traditional" interpretations of the causes of the Great Depression. It occurred to me that it was a revisionist view that the Depression was caused by "capitalism gone wild" and that it was government regulation, particularly the Federal Reserve monetary policy, that had really aggravated the Depression. Suddenly the Depression was no longer an IS-LM consequence, and the kind of "solution" implied by that kind of analysis actually made the Depression worse.

Now I can't say that Friedman turned me into a Republican or even a Libertarian. I know he advised Regan, but I really don't think Reagan's economic policies reflected the kind of theories presented by Friedman in Free to Choose. I am still convinced that despite Friedman's opposition to communism, that his theories were totally incompatible with Reagan's policies towards the former Soviet Union. Embargo and massive military spending had no place in Free to Choose. I will say that my opposition to public education is tied to my interpretation of Friedman's theories.

So I must pay my respects to Friedman. A lot of people claim that times has shown that Friedman was wrong and that Keynes was right. What's funny to me is the revisionism at work. The great success of capitalism in the 90s has been racked up to successful monetary policy. They say that Keynes stood for this, not the fiscal policy of the New Deal or the socialist democracies of Western Europe. That's the real legacy of Friedman. He's caused history to change its version of Keynes.

Tuesday, November 14, 2006

BCS

It's that time of year again. Time for BCS controversy. I have a particular interest this year, as the Florida Gators are ranked #4 in the BCS. Clearly the winner of this weekend's Michigan vs. Ohio State game will be #1, so the question I am most interested in is, can Florida make it to #2?



It seems to me they will need some luck. Their final two regular season games are against Western Kentucky and FSU. Now in most years a game against FSU would be a chance to improve your BCS ranking, but not this year. The Seminoles are only 5-5 going into this week and just came off a game where they were shutout at home. In the BCS view of teams, they are a cupcake, only slightly better than Western Kentucky.



So that would leave the SEC Championship game as Florida's best chance to improve its BCS standing. Indeed, Florida could play Arkansas, another one loss, top ten team. A win over Arkansas would be huge, and could really push Florida forward.



Still, I think Florida needs to hope for USC to lose. They have home games against Cal and Notre Dame is ranked similarly to Arkansas, and Cal is far ahead of Western Kentucky or FSU. So if they "take care of business" it would seem like they would stay ahead of Florida. If they lose to Notre Dame, the Irish would seem like they would have a decent chance of passing Florida. It would be close, but I think Florida would stay ahead.



Of course the other wildcard in things is the loser of the Ohio State/Michigan game. Would it be too far fetched to see the loser of a close game, particularly if it was BCS #1 and road team Michigan, stay ahead of USC and Florida? It would seem kind of unfair for the winner of that game to have beat the other team twice to win a National Championship. That's what FSU couldn't do in 1996 to setup Florida's only National Championship. How many more years like this before we finally get a playoff...

Monday, November 13, 2006

Slideshow Software

This past weekend was Raymond's first birthday party. One of the things I did for Michael's first party was make a slideshow video of the best of the many, many pictures we had taken of Michael. Of course a lot of the pictures were really cute, and it's also interesting to see him grow up in the pictures. I thought I would do the same thing for Raymond.

When I did Michael's slideshow, I used my G5 with the iPhoto/iDVD integration. It's been almost two years since then, and I am no longer a Mac user. I didn't think something as simple as making a slideshow would be require very sophisticated software. I decided to try Windows Photo Story. This was a disaster.

It was easy enough to add photos, edit photos, etc. It was the music that became the first problem. First, you have to place the music in the slideshow manually, i.e. pick which picture to start each song on. There is no fit to music. It default to 5s durations per slide. So you basically have to either pick enough music to take 5s * number of pictures or edit the duration of each slide. If you go the second route, it gets worse. There is no way to change the duration for all the slides or even two slides at a time. That's right. If you wanted to make it 6s per slide and had 200 slides, then you have to change this one at a time on all 200.

But wait, it gets worse. Photo Story incorrectly calculates the length of variable bit rate mp3s. If you're like me and use LAME to rip most of you music, then most of your mp3s are variable bit rate mp3s. So for example, I wanted to include the song "Close to Me" by The Cure. If I look at this song in iTunes, it correctly shows it as being 3:40 long. In Photo Story, it was convinced the song was over 6 minutes long. So in my editing of the slideshow, it showed what slide the song would end on. Of course I picked the next slide to begin the next song, and what did I get? Three minutes of slides with no music behind them.

I thought about trying Windows Movie Maker instead, but then I figured that a more general purpose program for Microsoft would probably not be any better at a specialized task. So at the advice of my wife, I tried using Adobe Photoshop Elements.

We use Picasa for organizing our pictures, but before we switched to using Picasa, we used Adobe Photoshop Album which then became Adobe Photoshop Elements. This was a much better experience. First off, it had the coveted "fit to music" feature. However, it still had issues with vbr mp3s. All was not lost. It allowed me to simply edit how long each song was to play. So I could look at iTunes and see how long each song really was, edit it to play for that much time, hit the fit to music button and I easily had seamless music for my slideshow.

There were some things that were nice about Photo Story. It automatically did the Ken Burns effect, something I liked from using iPhoto. I'm not sure if there was an option for this in APE. I liked Photo Story's UI a little better too.

Now it was time to burn my little slideshow so I could play it at the party. Here is where things were not so good again. APE did not have any kind of DVD burning option. It did have a VCD option, so I thought I would give that a try. First it converted the slideshow to Windows Media Video file (why oh why this option) and then it tried to burn it to a CD. It took forever for it to make the WMV file and then it had an error burning the CD. I couldn't just put in a new CD for it to try again, it had start over. This was really annoying.

So instead of doing the burn VCD option, I decided to just export to WMV so that at least the fruits of the labor would be persistent. Again this took a long time. I had done this on Photo Story and it was much faster (and gave a lot more options on the quality, and it was encoding a slideshow with the aforementioned Ken Burns effect enabled, which would seem like a more complex encoding task.) The encoding did seem to make use of both cores on my computer, keeping one core maxed out and the other at around 70%, but it still took close to an hour to encode a 20 minute video.

Once I had the video, I decided to use Nero to burn it. My only option with a WMV on Nero was a Super VCD, so I went with that. Again, Nero had to decompress the video before burning it, which took awhile. Once it did that, it burned rapidly. The quality was really not that great. The WMV movie looked very good, but the burned result was so-so. I made the WMV at 800x600, the highest quality offered by APE and a much higher resolution than Super VCD supports. Still the encoding-decoding-encoding process is going to be lossy, no way around that.

So all this made me really miss my Mac! It was so nice being able to create the slideshow in iPhoto, then just export it to iDVD. The DVD it would burn was really nice, and of course I could do other fun things like create menus, etc. for my DVD. The WMV creation with Photo Story was definitely a lot faster than the similar step on the Mac, but was painfully slow from the Adobe program. I'm not sure if it was slower than the same thing on the Mac. The other steps were a lot faster than they were on the Mac, but again I'm comparing a first generation G5 Power Mac to a year old, custom built Athlon 64X2. Still, I would have gladly traded a slower encode/burn process for an easier creative process.

Now there are other software packages out there. I used Roxio Easy Media Creator at the recommendation of my brother-in-law. It was an incredibly slow program to use, and seemed very unstable. Perhaps it is better now. Still, it's really disappointing that there's not an easy way to do something like this on Windows.

Sunday, November 12, 2006

Data Islands

My company's resident JavaScript guru likes to use a technique called Data Islands. While I can roll some JS and have even been known to make asynchronous calls before there buzzwords to describe such a thing, I had never heard of this term until a few months ago.

The idea is simple. You have some server side technology that is serving up data as (drum roll please) XML. This XML is consumed by the client side. If you're doing a lot of AJAX after the initial page load, then you might already have client side assets for reading XML and rendering it in the browser. This technique leverages the same thing, only the XML comes over with the initial load of the page.

So how to embed XML? Well somebody at Microsoft apparently decided it would be great just to have an XML tag in the page and dump it all inside that tag. Hence the term data island.

Surely you see where this is going. The data island is a Microsoft thing and its corresponding implementation via the XML tag is only understood on IE. Still it seems like a technique with some merit, and there are ways to get it to work on Mozilla based browsers, too.

Mozilla will ignore the XML tag as just some unknown HTML tag. However, it will try to show the contents of the tag (and the child tags) so first thing for cross browser support is to give your island an invisible style (style="visibility:hidden".) Next you can slurp up the contents of the tag since it still part of the page DOM. You can pass the contents into a DOM parser, a voila!

A couple problems, though. Mozilla still thinks everything is HTML and "reads" it that way first. So if you have a tag that shares its name with an HTML (or JavaScript) tag/reserved word, you'll have issues. No label or title tags. In fact, even an image tag won't work because of it's use in JavaScript. Similarly, no self closing tags like . If you do it like it won't cause problems, but it will be ignored completely, like it wasn't even there.

That's a lot of baggage to deal with. I investigated some alternatives.
  1. Load the island asynchronously. Chances that the reason you would use the data island technique is that you are also using AJAX for updates to your page, thus you wanted to re-use script written for that XML. In that case, you could just load the data island with a separate AJAX call after the page loads. Obviously the big drawback here is that you have to make a second call to your server to load the page.
  2. Emebed your XML as a JavaScript string instead of an HTML tag. In this case Mozilla won't try to read it as HTML, so it won't give you all the weird things mentioned above. The big drawback is that this is not as efficient on IE, since you aren't making use of the special mechanism, and you have to make sure to make your XML string JavaScript string friendly.
  3. If you're going to go the route in #2, then you might just consider going one step further. Don't use XML at all, and just make your data into a JSON string that is evaluated when your page loads. I didn't do any testing, but this would seem like it has to be pretty close to being as fast on IE as the data island, while still being cross browser. Maybe I'll put that hypothesis to the test. Obviously the big drawback is that you'll want all your client-server communication to use the same mechanism, so you don't have redundant code. Thus you'll probably want to use JSON for your AJAX calls.
I'm kind of partial to #3, which is probably the biggest mutation of the data island technique. I can hear a lot of people saying "well you shouldn't try to make use of an MS extension to HTML anyways..." Don't forget that XMLHttpRequest was once an IE-only extension from MS, but became a "standard" that is now the cornerstone of so many web applications. The data island technique is very complimentary to AJAX, so maybe it will see the same kind of adoption.

Friday, November 10, 2006

San Jose and Pro Sports

There's been a lot of interesting south bay/pro sports developments recently. There's been a lot of speculation that the Oakland A's would move to Fremont, and that seems to be coming true. I was near the proposed site of the new ballpark, just a few weeks ago. I was eating at what used to be my favorite restaurant when I was in college. It should be a great place for a ballpark. Their is already a lot of progress in widening 880, the freeway that would run by the park, and BART is being expanded down there, too. There is speculation about a name change for the A's, to either the Silicon Valley A's or San Jose A's. I like the latter. I don't know of any pro sports team named for a region instead of a city (or a state, and the California A's seems unlikely.)

The more surprising news was that the San Francisco 49ers want to move to Santa Clara. I'm not sure if this is just a scare tactic to getting a new stadium in San Francisco, but really it makes sense for them, just as it makes sense for the A's. The San Jose/Silicon Valley area has more people than San Francisco or Oakland, and more importantly, they are more affluent. There's a lot more land in the valley. There's a lot of rich companies who could be corporate sponsors for stadiums, scoreboards, whatever. More money and more people ... what's not to like about that? The Sharks have been very successful in San Jose. Now we just need the Warriors to move down here, since Larry Ellison failed to bring the Sonics here. I'm guessing the 49ers might want to keep their name, but I like the sound of the San Jose 49ers.

Election Results

There's a lot of happy Democrats these days. Tuesday's elections could not have gone much better for them. Crazybob pointed out that a big win on Tuesday was not necessarily a good thing in terms of winning in 2008. I'm generally pleased. Many libertarians like to point out that gridlock is a good thing in Washington. I'll more or less agree with that.

Of course part of me wonders why it took two years for people to realize what a terrible mistake Iraq was. That's the real difference between now and 2004, right? There are a lot more people willing to say something negative about us being in Iraq now, but in 2004 such people would be quickly labeled unpatriotic. So what's changed? It may sound glib, but I don't think most people are that bothered by the American casualties and they certainly don't give a damn about the Iraqi casualties. So I guess the main reasons are just the general lack of progress and probably more importantly, the fading of the blood lust inspired by 9/11.

Tuesday, November 07, 2006

Election 2006 -- Propositions

I didn't get to post this before I voted this morning. So here's how I voted on the many state propositions.

1A -- Yes. It's amazing this is even needed.
1B -- Yes. More roads are badly needed.
1C -- No. I don't need the state to support urban development.
1D -- Yes. This was a hard one for me. Public education is a disaster, thus it is easy for me to say no on this. However, a vote either way on this will not make it more/less likely for education to be privatized. So the positives outweigh the negatives.
1E -- Yes.
83 -- No. It doesn't make sense to me that the GPS monitoring of citizens can be constitutional. Right now it might just be "sex offenders" (which can include an 18 yr old boy who has consensual sex with a 17 yr old girl,) but maybe tomorrow it's speeders or whatever.
84 -- Yes.
85 -- Yes. As a parent, I would expect my consent to be needed for my child to have any kind of operation. Parents need to be responsible for their children.
86 -- No. A classic case of trying to use a tax to impose one group's opinion ("smoking is bad") on another.
87 -- No. I could actually stomach a big tax that made gasoline cost more. However, I can't stomach the money going to some new state bureaucracy.
88 -- No. Property tax is already ridiculous, especially given the housing market in California. Maybe my no vote here cancels my yes vote on 1D.
89 -- No. Tax payers should not pay for political campaigns, and citizens should not be prevented from making their opinion ("I want to vote for Mr. Smith") heard.
90 -- Yes. The anti-Kelo measure. Eminent domain has always been abused, but maybe this can decrease the number of instances of its abuse.

Saturday, November 04, 2006

Election 2006 -- California State Races

Next up on my look at who/what I will be voting for on Tuesday are the state elections. Might as well start off with the big one.

Governor
Back in May I voted for Steve Westly over Phil Angelides in the Democratic Primary. I probably would have voted for Westly over Schwarzenegger, but there is no way I would for Angelides over Arnold. Honetly it would have been a tough call between Arnold and Westly, and I may have voted for Arnold anyways. I've agreed with most everything he's done the past couple of years. As for the Libertarian candidate, Art Oliver ... His stance on immigration is too extreme. Plus he likes to quote "think tanks" such as Cato and Reason way too much. Think for yourself, or at least pretend to. He strikes me as somebody who embraces the Libertarian philosophy simply as a means to an end. That's the exact kind of Libertarian I dislike, and the kind that is willing to support the massacre in Iraq all in the name of lower taxes.

Lt. Governor
Does this position matter? Anyways... First the usual Dem. v. Rep. ... In this case it's John Garamendi vs. Tom McClintock. I really don't like McClintock from the recall of Gray Davis. I agree with him on a few things, but there are too many things that I completely disagree with him on. Garamendi isn't that great either, but he'll probably get my vote. What about third party candidates? Well, the Libertarian candidate, Lynette Shaw, is interesting to say the least. Her major issues are medical marijuana and amnesty for illegal immigrants. I actually agree with both of these stances. However, she seems very ... out there. Her website rambles quite a bit, and it's just hard to take her serious. American Independent candidate Jim King wants to do away with the state income tax. That sounds good. However, he's also all about the family-unit. That smells like bigotry. All in all, no good choices. So I'll probably vote against McClintock, thus vote for Garamendi.

Secretary of State
This is an interesting race just because its a position that emphasizes the regulation of elections. In general I favor electronic voting. I don't have the paranoia about this that most Democrats do. Embrace technology. We should know who wins an election within minutes of the polls closing. I don't favor requiring photo ID to vote. I think that would just lower the number of voters in some demographics, and I don't see how that can be viewed as a good thing. Finally, I don't favor public financing of elections. If I want to run for office, I should be able to spend as much money as I want to get the word out. Similarly, if my friend is running, I should be able to spend as much as I want to get the word out. That's freedom of speech. So the candidate closest to my positions is probably the incumbent, Bruce McPherson. I guess my stance is actually pretty close to "status quo."

Attorney General
One last interesting position. There are a lot of candidates with interesting stances. Green Party candidate Michael Wyman and Peace and Freedom candidate Jack Harrison both oppose the death penalty, as do I. However, they both want to "prosecute corporate thieves" and I hate that kind of demagoguery. Ken Weissman has a degree in math and is a Libertarian. He's against victimless crimes like prostitution and drugs. However, he's pro-death penalty, and it's hard for me to accept a Libertarian who is pro-death penalty. Next up are the "major" candidates. First there's Jerry Brown, Democrat. He puts "controlling greenhouse emissions" and "protecting a women's right to choose" as high on his list of priorities. Should those be priorities for Attorney General? Just seems like party line BS. Finally there's Republican Chuck Poochigian. His priorities include sex offenders, gangs, and the three strikes law. There's no way I'd vote for this guy. I'm especially opposed to the three strikes law. So, I think I'll vote for Weissman.

Monday, October 30, 2006

Election 2006 -- Local Races

It's election time again. The election is just over a week away, and I have a lot of candidates and propositions to read up on and make some decisions. I've been using SmartVoter to start my research on some of the lesser known candidates and issues. Here's my take on a few of the things I've read so far...

State Board of Equalization, District 1

Reading through the list of candidates, first I came to the incumbent, Betty Yee, Democrat. She sounded OK. She is endorsed by teachers. That's a red flag to me. After all, teachers have a huge vested interest in a regulatory position such as this one. Next was David Neighbors, Republican. He looked interesting. He's from San Jose and is very much in favor of tax and government reduction. Finally, I came to Kennita Watson, Libertarian. Now here's somebody to get excited over. She's went to MIT. I liked her position on some of the propositions that are being voted on. She wants to use technology to make paying taxes/regulations easier and the tax-collecting bureaucracies more transparent. She does seem a little naive, but what the heck, she's getting my vote.

State Assembly, District 24

Jim Beall, Democrat is the incumbent. He's big on funding education, a big negative in my book. His ideas for universal health care don't sound nearly as terrible as most such proposals. Kind of a wash overall. His website has issues, and that makes me think he's a little sure he's going to get re-elected. If there's one place where a candidate's website matters, it's Silicon Valley. Lionel Silva, is the Libertarian candidate. Unlike Ms. Watson, he doesn't seem like a libertarian I can agree with as much. He's against the Kelo eminent domain abuse, which is good. He's also in favor of "neutral" redistricting. That's one of those classic red herrings to me. Finally, there's Lawrence Hileman, Republican. He's a programmer, and wants to lower taxes. Those are good. But he's too caught up in immigration reform for me to vote for him. I think I will go with Beall, mostly for lack of a better alternative.

Mayor of San Jose

Ah yes, Chuck Reed vs. Cindy Chavez. This has been a pretty nasty campaign here in San Jose. Basically Reed played the "you're a buddy of Ron Gonzales" with great effectiveness, until Chavez found records of Reed making very questionable expenses as a city councilman. Reed re-paid the questionable expenses, but he had lost the moral high ground. So it comes down to issues. Reed is pro-business and development to combat housing prices. Chavez is big on law-enforcement and education. Not all of her education ideas are terrible (corporate sponsored scholarships sounds ok), but they are not great. Reed definitely seems like the smarter candidate as well, so he gets my vote.

Measure A

This is a local measure to place extra restrictions on "rural" lands. Reading the for/against arguments still leave this as a confusing issue. For me, extra regulation on land use is generally bad. Plus, it tries to make a county regulation to override municipal ones. I'd rather leave things up to the municipalities. So I will vote against Measure A.

Next I will look at some of the state races.

Thursday, October 26, 2006

More on Firefox 2.0

I upgraded my home computer with Firefox 2.0 when it became GA this week. The other critical factory in the upgrade was that the del.icio.us extension was upgraded to work with FF2. My wife and I both use this extension, so this was necessary if I was going to upgrade our home computer. That's when the trouble started.

The del.icio.us extension does indeed work with FF2. However, I immediately began having issues with it in combination with the Google Toolbar. My wife also uses the Google Toolbar, and she had the same problem. Disabling either one of the extensions seemed to solve the problem. We both chose to disable del.icio.us, as we both found the Google Toolbar more useful. She likes it's autofill for forms (I like this too) and I use its site search a lot. That's an invaluable tool for searching for things on open source forums. Those forums often provide their own search, but just using Google to search their site is almost always more effective.

Anyways, things didn't stop there. I was buying some stuff from Amazon, and FF2 froze up. This really annoyed me, especially since I had already entered in a credit card number in the order process. Of course Amazon is good at dealing with this kind of problem. I killed FF2, launched Flock (it's still FF 1.5 thankfully) and went back to Amazon. All was well, as my order was in my cart, and all I could pick up the checkout process right where I had left off.

So at this point I went ahead and disabled all my other extensions: Google Toolbar, Google Browser Sync, FireBug, and FireFTP. Maybe I'll try re-enabling them one at a time, to try and determine what was causing the instability. Hopefully the answer won't be "don't blame the extensions, blame FF2."

Friday, October 20, 2006

Hibernate Tools for Eclipse

There are a lot of Hibernate/Eclipse plugins out there. One that I used recently was the Hibernate Tools plugin that is part of the JBoss IDE. I'm paranoid about installing plugins in Eclipse, since I've used some that caused a lot of instability (XMLSpy comes to mind,) so I only installed the Hibernate Tools plugin, not all of the JBoss IDE plugins.

It seems to be very good for maintaining/upgrading Hibernate artifacts. It was very easy to configure a Hibernate console by using an existing Hibernate configuration file. This file specified annotated classes. I had made some changes to the database, but I was easily able to connect to the DB and generate new artifacts (new annotated classes, i.e. EJB3 Entity Beans.) This served my purposes perfectly.

I could also load a separate Hibernate configuration file, this one that specified classes mapped with good 'ol HBM XML files. I could easily generate Entity Beans for these classes as well (or new HBMs, etc.)

I also gave it a try at reverse engineering from an existing schema. This worked very well. I still like Middlegen's interface for this, since it allows you to easily customize data types (like specifying java.util.Date instead of java.sql.Timestamp) and relationships (removing inverses, etc.) Still, this seems to be a great all-around tool.

IE7 Released To The Masses

I got a "critical" Windows Update today to install: IE7. Yep, Microsoft has not only released it to the masses, but as expected, is pushing it as a critical update for all XP users. I had been using it on my work computer for awhile now, though I had kept IE6 on my home computer. I have been mostly pleased with IE7, so I will go ahead and upgrade it on my home computer as well.

Now that IE7 is out, I figured it was time to test its performance. I read this bit about how it performed a lot better than IE6 on sites heavy with JavaScript and DHTML. So I treid it against my favorite JS benchmark, BenchJS. I decided to pit it against the other "modern" browsers, Firefox 2.0 RC3 and Opera 9.0.

First I ran IE7. I stripped it down by disabling all add-ons and by stripping down all the XP chrome and effects. The last time I had ran IE6, it had taken around 19-20 seconds for BenchJS. IE7 did it in 9.3 seconds. This seemed similar to what the Zimbra blogger had said, that it was about twice as fast IE6.

Next I ran Firefox 2.0 RC3. Why FF 2.0, and not 1.5? Mostly because 2.0 is what I have installed on my work computer. Second, it seemed more fair to compare Mozilla's latest against Microsoft's latest. My old numbers on FF 1.5, had it clocking BenchJS at around 12-13 seconds. FF 2.0 did it in 6.4 seconds. It looks like Mozilla has also doubled up their speed.

Finally, I brought in the ringer: Opera 9. Opera always kills the compettition on BenchJS. This time it turned out BenchJS in 5.5 seconds. That was actually a little bit slower than last time I had ran Opera, but only by a couple of tenths of a second.

So Opera still holds the speed crown, but Firefox is suddenly only about 1 second behind. IE7 is a nice improvement over IE6, but FF 2.0 is also a nice improvement over FF 1.5! I'm sure the Mozilla devs were feeling a lot of pressure to stay ahead of IE and keep their momentum going. Looks like they've done just that. Microsoft will have to hope that IE's new UI is viewed as an improvement over Firefox. Otherwise, it is still behind the Fox.


technorati tags:, ,

Blogged with Flock

Wednesday, October 18, 2006

Random Bits

A few random things I came across while eating my lunch today.

First, there's this hilarious video about a guy and his struggles with his Mac.

As a former Mac user, I knew exactly what this guy was talking about. I'd still say that OSX crashes less often than XP (though still more often than Linux,) but definitely hangs just as often if not more. I definitely did a "Force Quit" on my old G5 on a regular basis. It definitely seemed to have extended (greater than 5 seconds) hangs that it would recover from as well. I often mused that the reason Apple pushed multi-CPU machines was because it was easier than fixing pre-emptive scheduling in OSX.

Next, there's this little nugget from Cato. It's not surprising to me to see that public schools spend more per student than private ones. Government run businesses are notoriously inefficient. Can a government run business ever be efficient? The USSR never seemed to have any luck, and our school system seems to be striking out as well. Of course there's more to the story than Cato or the Goldwater Institute would like to admit. Public schools include lots of "special need" students that may not be as common in private schools (maybe even non-existent?) It seems likely that per-student spending on such kids is much higher than on other kids. In general, having to support diverse groups of children is going to cause a lot of inefficiencies. Of course you can argue that's just more proof that public schools should be discarded.

Finally, Monday night I watched the MNF game, Chicago at Arizona. A lot of people were blown away by how Arizona "found a way" to lose a game where they had a big lead. That wasn't the most memorable thing to me though. I came away from that game thinking "ESPN has to get rid of Tony Kornheiser."

Now a lot of people have really liked him on MNF. This was easily the mos interesting game of the year so far on MNF, and it showed the problems with a guy like Kornheiser. He is obvious and unoriginal. He does not have insights, and simply looks to contradict the other commentators.

For example, there were a couple of times late in the second quarter where Chicago made bad turnovers. Arizona had chances to really build their lead. It could have been 35-0, but instead it was 20-0. That's a big difference. Theismann and the visiting Charles Barkley tried to raise the possibility of this being a potential turning point in the game. Arizona did not have the killer instinct to put away Chicago, and this was going to lead to a Chicago comeback. You can argue if that was insightful of them or not, but all Kornheiser could say was "Hey look at the scoreboard! Arizona is up by 20! There is no turning point!"

Later, Theismann first wanted Arizona to let Matt Leinart throw the ball more, since that was the only way they had success. Then after some incomplete passes, Theismann warned about how incomplete passes were stopping the clock and leaving Chicago with time to make a comeback. Of course Kornheiser had to point out the contradiction by Theismann, but that's all he did. He had nothing more insightful like "Just run the ball, even if you get 0 yards and go three-and-out" or "Don't worry about stopping the clock just stay aggressive, and have confidence in your defense." Theismann wanting to have it both ways is annoying, but Kornheiser just being "hey you screwed up, nyah nyah" is much worse.

Kornheiser is like the guy you watch an action movie with who is always pointing out how such and such stunt is impossible. Eventually you stop inviting that guy to watch movies with you. ESPN probably can't make that call, yet, but they will have to. He's OK in games that are blow-outs, where ragging on the team being blown out is one of the only wayts to keep it interesting. He just doesn't work in a game where the game itself is interesting. His negativity is just annoying.

Tuesday, October 10, 2006

GoogleTube

The big news in the Valley is Google's acquisition of YouTube for $1.65B. I gotta say that I was pretty surprised, like most people.  YouTube certainly has its share of naysayers. Mark Cuban thought only a moron would buy YouTube because of the possible copyright lawsuits that could erupt. Actually he has a lot of negative blogs on YouTube. Many other people point YouTube's lack of a business model.

So are they all wrong and Google right? Maybe. One would guess that Google has some ideas on how to monetize YouTube while maintaining its huge user base. Google is the king of non-invasive but effective online ads. So the question becomes, will Google get sued like crazy for all the copyright material on YouTube? Is YouTube really just the new Napster?

That's the million dollar question, or I should say the $1.65B question. What's interesting is that Napster got slammed by lawsuits before they had made much (any?) money. The music industry was more concerned that they were losing money because of Napster than they were with making money from Napster.

Thus can we say that YouTube is not viewed as having a negative effect on the TV and movie industries? Those mediums have certainly suffered in recent years. So one would think that if they thought that YouTube was hurting them, they would have sued already and shut them down. Of course, it may be a question of timing. Maybe YouTube just hasn't been around long enough. Maybe those kind of lawsuits would have happened next year.

Or maybe not. Maybe YouTube has little effect on movies. Most of its effect is probably on TV. I would guess that any effect it has on TV is insignificant compared to the effects of DVRs and audience fragmentation caused by the proliferation of cable content. Killing YouTube would not have helped the major networks.

That doesn't mean they won't go after Google/YouTube, given Google's deep pockets. But it would hardly be an easy fight. You must assume that Google would not have made the YouTube purchase if it was not prepared to fight. It would be a costly fight for the TV networks, and time is on Google's side.

No, even as Mark Cuban admits, Google would have more to fear from small content creators than from the major networks. He even thinks lawyers would upload content to YouTube just to build a case against them. Maybe he is right. The RIAA has shown that a big company taking on lots of people is not effective, even if they win most of the lawsuits.

Still, it seems like Google could prepare for this and try to make it as difficult as possible for these people. Setup some kind of system for taking down the content, thus forcing plaintiffs to jump through all kinds of hoops. As most customer service departments know, if you make it difficult enough, most people will give up.

On another note, Terry points out that Google's acquisition seems like an admission of failure for Google Video. I think that's right on. Google Video was a pain for personal content, unlike YouTube. Of course it also tried to double as a paid video service, competing with iTunes Video. I think that's the real story here. Google couldn't do amateur video as good as YouTube, and they couldn't do "professional"(paid) video as good as iTunes. Apple is winning the video download market, just as they've won the audio download market.

technorati tags:, ,

Blogged with Flock

Sunday, October 08, 2006

The Yankees and A-Rod

I was surprised as anyone to see the Yankees go down in four games to Detroit. I knew that New York's pitching was very suspect, but I thought that Detroit's pitching was hurting a little and that the best offense in baseball would get to it. Boy, was I wrong. Sure the Yanks got to them in game 1, but that was because Detroit's rotation was not setup for the playoffs. Detroit had battled Minnesota for the AL Central crown and had gone to extra-innings on the last day of the season trying to hold off the Twins. Once their big three starters got into the series in game 2, things changed.

Detroit was lead all year by Justin Verlander, Kenny Rogers, and Jeremy Bonderman. Verlander and Bonderman looked tired at the end of the season, Verlander sported a 5.82 ERA in August and September, while Bonderman had a 4.98 ERA. Meanwhile Rogers had struggled against the Yankees in the past. It didn't look good for the Tigers.

But you know the saying, that's why they play the game. The big three were 2-0 with a 2.10 ERA, 1.125 WHIP, and 17K in 21.1 IP in the ALDS. That's dominant. That was the story of the ALDS. The Yankees offense was silenced by the Tigers pitching.

So now things get interesting. Not just because we get a very interesting ALCS between Oakland and Detroit (though I'm guessing Fox is wishing New York was still in there,) but because we get the ultimate soap opera. Once the Yankees have fallen short and we get the soap opera of Steinbrenner trying to fix his team. Already we're hearing that Joe Torre is out, which is pretty shocking. But the big drama is around Alex Rodriguez.

A-Rod's 1-14 ALDS punctuated a season where Yankee fans have been furious with A-Rod. That despite A-Rod putting up huge numbers once again, and just a year after he won the AL MVP. All A-Rod has heard has been boos because "he doesn't come through in the clutch." This is only going to get an order of magnitude worse with A-Rod's 1-14 in the Yankees' ALDS loss.

So what should the Yankees do about A-Rod? Of course the whole thing is ridiculous. A-Rod is one the best offensive players in the game. He's going to challenge many career records for home runs, RBIs, etc. However, it is quite possible that because of all the negative feelings towards him, he may have an even harder time playing to his ability in New York. This is the fault of the Yankee fans and of Joe Torre. Torre should have left A-Rod in the cleanup spot no matter what this year. Playing him the 8th spot against Detroit is unacceptable.

Thus the Yankees may have to trade A-Rod, even though it is a stupid thing to do. Obvously they need pitching. Any team with a promising young pitcher would be fools NOT to trade for A-Rod -- if they can afford him. That's the rub. There aren't many teams that can take on 25M/year salary. So the Yankees will probably have to take on part of A-Rod's salary in order to trade him. I think a Matt Cain for A-Rod trade would be interesting. Maybe the Cubs can convince them to take Mark Prior for him.

A Roy Oswalt for A-Rod trade would be pretty interesting too. A-Rod's stats have suffered in Yankee Stadium (as was predicted by many when he was traded there) because it is a tough place for a right-handed power hitter. His numbers would explode at Minute Maid Park in Houston. Lance Berkman and A-Rod would make for the most lethal 3-4 combo in baseball. Oswalt would not only be the ace of the staff for the Yankees, he would put up huge numbers because he would suddenly have run support. Plus, he's thought of as a "clutch" pitcher who has performed well in the postseason. Again, the Yankees would have to pay part of A-Rod's salary, since there's no way Houston could afford to pay him.

That's only part of the story for the Yankees. They need to figure out if Jason Giambi can play 1st base or not. If not, they need a 1st basemen and they need to trade either Gary Sheffiled or Hideki Matsui (or Bobby Abreu, but I doubt that one.) Sheffield looked terrible at 1st base. That's another strike against Joe Torre.

They also need to move Randy Johnson out of the starting rotation. He cannot hold up for a full season at his age. He could be a terrific relief pitcher, though obviously Mariano Rivera is going to close games as long as his health allows. Mussina and Wang are the only two pitchers that should be in the rotation next year. They should throw some money at Jason Schmidt. That could be a nice rotatoion: Oswalt-Schmidt-Mussina-Wang-whatever.

Blogged with Flock

Thursday, October 05, 2006

My Experience with Vonage (and Comcast)

I saw this article recently on Slashdot. A similar thing happened to my wife, too. We are Vonage and Comast customers. Comcast called our house trying to get us to switch to Comcast VOIP. She made the same retort mentioned in the /. article, saying Vonage is cheaper. They tried to throw the same FUD at her. It didn't work.

We've been very happy with Vonage. Our call quality is excellent. It helps to have a high bandwidth connection (4 megabit.) We have our VOIP box configured to get max quality, even if that means slower connection speed on the computers in our home network. It's never been an issue. Voice quality is always good, and our internet connection is always fast.

VOIP is sometimes looked as a disruptive technology, but it doesn't even qualify I think. Usually disruptive techs are not as good as the techs they are disrupting. They're "almost" as good, and a lot cheaper. In a lot of ways, VOIP is better. It's nice being able to get email notifications that you got voicemail, and then be able to listen to the voicemail online. It's nice being able to re-direct calls automatically to a cell phone when we are away from home (particularly on vacation.)

We switched to Vonage a couple of years ago, when we lived in Concord. We moved to San Jose at the beginning of last year, but because of VOIP, we were able to keep the same number (a 925 area code, even though 408 is the area code in San Jose.)

There are a few things I'd like to see from Vonage. I would like them to setup service in Bakersfield and Panama City, FL -- where our families are. Then we could have virutal numbers in each of those cities, allowing our families to make local calls to us. Again this is something that convential telephone services can't provide. The only thing stopping it from happening is that Vonage doesn't have service in those two cities. I'd also like call blocking on blocked caller IDs, but that's a minor thing.

Oh the big thing that Comcast tried to claim over Vonage was all about 911 service. As long as you make sure that your home address is accurate in Vonage, then you can dial 911 and the police/fire/ambulance/whatever will show up at your door.

technorati tags:, ,

Blogged with Flock