Tuesday, June 27, 2006

Burn Baby Burn

I woke up last week and on the morning news they were talking about flag burning. It seemed there was support for a Constitutional ammendment that would give Congress the ability to protect the flag, even though the Supreme Court had ruled that flag burning was a form of speech (hence the need for an ammendment.) I cringed upon hearing this.

I remember when the Court struck down a Texas law banning flag burning. I was incredibly happy. So was my father. My father served in the Air Force for 25 years, including three wars. He enlisted at the end of World War II. I remember him remarking to me "I didn't fight the Nazis just so they could come to power now."

So a showdown on this kind of issue is the ultimate litmus test. Are our leaders willing to trade away freedoms in exchange for jingoistic saber-rattling? Still I have to admit that I was pessimistic about this vote.

That pessimism grew a lot worse when I saw this op-ed article in USA Today from one of my senators, Dianne Feinstein. I'm a Democrat, but I dislike Democrats and Republicans both. Still I usually dislike Republicans more than I dislike Democrats. Why? You can usually count on Democrats to protect civil liberties, even though they can also be counted on to violate property rights. There was once a time when you might expect Republicans to do just the opposite, but now all you can really count on from Republicans is for them to take away civil liberties. They have done a terrible job of protecting property rights.

So why the hell is Feinstein supporting the Flag Protection Ammendment? I thought that maybe she had some kind of argument I had not thought of, so I read her op-ed. Nope. Typical nationalistic drivel:
On the morning of February 24, 1945 — when I was a 12-year-old girl — I picked up a copy of the San Francisco Chronicle. On its cover, there was a full-page picture of the now iconic JoeRosenthal photograph of American marines raising the United States flag at Iwo Jima. For me and for the nation, the photograph was a jolt of electricity boosting our morale during the terrible island-to-island Pacific battles of World War II. The sight of those troops hoisting Old Glory forever cemented my view of our flag.
Boy am I glad I didn't vote for her in the primary this year. I didn't vote for her then because she had voted for invading Iraq. Anyways, this incredibly disppointing. Maybe now I should assume that Democrats will not only abuse my property rights, but will also take away my civil liberties. After all Democrats proposed an alternative bill that would create all kind of situations where flag burning would be illegal.

Maybe that's not fair. One Democrat had an eloquent argument against the bill:

"Our country's unique because our dissidents have a voice," said
Sen. Daniel Inouye, D-Hawaii, a World War II veteran who lost an arm in
the war and was decorated with the Medal of Honor. "While I take offense at disrespect to the flag," he said, "I nonetheless believe it is my continued duty as a veteran, as an American citizen, and as a United States senator to defend the
constitutional right of protesters to use the flag in nonviolent speech."

Sound like he and my dad would have gotten along pretty well. The ammendment failed, by one vote, with most of the nays coming from Democrats. But don't fear! The Republicans in the House voted in support of a bill that would prevent condo and homeowner associations form restricting how the flag can be displayed. It's great to see the Republicans have found a way to use nationalism to remove property rights...

Technorati Tags: , , ,

Monday, June 26, 2006

Hope for Health Care

It's finally happening, and I didn't even realize it. I came across this article on wellness centers at retail stores and pharmacies. This could be huge, and I don't know how I missed it. Health care has needed this kind of innovation for so long it's not even funny. But wait, it gets even better.

The last paragraph in the article mentions that one of the companies that is operating these clinics is using software to generate a recommended diagnosis that a nurse practitioner either approves or overrides. I've been waiting for this to happen for at least six years now. I became convinced that this is what health care needs six years ago when I was sharing a pizza with some friends at Zach's in Berkeley. One of the guys there, Joe, was a recent med school graduate doing his residency at UCSF. He was complaining about the incredibly long hours he had to work, and how zombie like it made him. I commented that it was not encouraging to know that when you see a doctor at a hospital, there is a pretty good chance they are in zombie mode at the end of an eighteen-hour shift. He told me not to worry, that 99% of what he did, "a monkey could do" and that a zombie mode doctor was perfectly effective.

Now of course any fan of Star Wars has had to wish for a medical droid while waiting in a hospital ER. So the idea of replacing doctors with technology (computers generally smell better than monkies) is hardly new. But the medical droids always seemed like such advanced technology. They seemed as fantastic as lightsabers and hyper-drives, and definitely a lot more advanced than a monkey. But that all comes from the myth that what doctors do is so hard. The truth is that what some doctors do is incredibly difficult, but the bulk of what they do is mundane. Not only mundane, but perfectly well suited for technology. Matching symptons to afflictions and making a diagnostic is exactly the kind of logic that a computer excels at.

Anyways, all this reminds of me of several great articles I've read over the years on how to fix the health care industry. First off the problems of health care come from licensure and the barriers to entry that it creates. This was spelled out by Milton Friedman's quintessential Free To Choose:

One effect of restricting entry into occupations through
licensure is to create new disciplines: in medicine, osteopathy and
chiropractic are examples. Each of these, in turn, has resorted to
licensure to try to restrict its numbers. The AMA has engaged in
extensive litigation charging chiropractors and osteopaths with the
unlicensed practice of medicine, in an attempt to restrict them to as
narrow an area as possible. Chiropractors and osteopaths in turn charge
other practitioners with the unlicensed practice of chiropractic and

This is still a big problem, as these new wellness centers are still restricted in what they can offer and have to partner with MDs on some cases. These barriers to entry make it difficult for disruptive technologies to lead to innovation and cheaper health care. The software mentioned in the article could be viewed as a potential disruptive technology. As such, I would expect the AMA come after it in a big way.

How Medical Boards Nationalized Health Care
Will Disruptive Innovations Cure Health Care?

Technorati Tags: , ,

Friday, June 23, 2006

Good (Java) Programmers

There's been a couple of great blogs out there about the value of good PHP programmers and how to find good PHP programmers. These are all good reads, and I've had some fun in the comment sections of a couple of these blogs.

It made me start thinking about the value of good Java programmers. If you scan craigslist, you'll find a lot less Java freelance work than PHP. Looking at Elance, there were 75 PHP projects but only 29 Java projects, in web development. So it's a lot harder to talk about Java freelance work, and what's valuable, etc. It seems that most Java developer probably work for a company, instead of doing freelance work. It is also well known that Java development is more costly, which is probably why there is less freelance work -- typical food chain kind of thing.

One of the great points that Ben makes is that when doing freelance work, you should never under-bid. I agree with this, even though I definitely don't obey this. You see, I love doing freelance "moonlighting" work in my spare time. To me it's a chance to try out new technologies and hone my craft solving real world problems. Plus it's extra money, and who doesn't like that? Finally, I learned a valuable lesson when I was working for a consulting company. For any given project, there's at least twice as much money to be made as the client says there is. So if I see project out there with a fixed bid of $2000, I assume there's a pretty good chance I'll make $4000 in the end. Still, I think Ben is right. I underbid only when the project is an "investment" for me, i.e. a chance to learn or try out a new technology that I'm interested in.

Ok, so on the other side of things, how do you tell if somebody is a good programmer? I'll talk mostly about Java programmers, though most of my analysis is valid for many other kinds of programming. Let's get that out of the way first, actually.

So what's make a good Java programmer? They need to be a good programmer, period. That means the ability to think analytically and abstractly. Now that is a more difficult combination than you might think. I'm actually not as big on the kind of logic puzzle and brain teasers that are popular at Microsoft and now Google is famous for. I was recruited by Google last summer, and while I found some of the questions fun, I found little value in many of them.

I like problems that I see more of a direct connection to programming. It's not hard to come up with such problems, they're all around you. Just ask a non-programming friend about their job. Listen to what they do, then ask about things that are boring/tedious for them. These are all programming projects waiting to happen.

Of course it's also nice to take more "known" problems, i.e. problems where the solutions involve concepts that are common in the programming world. I was also recruited by Yahoo last summer, and they had much better questions there. Unlike with Google, I didn't sign an NDA about their process so I can talk about some of the questions they asked me. I interviewed with one of their search teams, and one problem I liked was about how to figure out the most frequently searched for terms. This is the basis for their Buzz Index. Anyways the problem boiled down to having lots of different data sources that kept track of searches and having to aggregate things efficiently. It's a real world problem where knowledge of data structures (heaps in this case) were helpful. But even if you didn't know about a heap, you could still come up with a good solution. Or even better, you could come up with a bad solution and the interviewer had the chance the criticize and give you a chance to improve on your solution. An English professor of mine loved to say that "writing is revision" and the same is true of programming.

So to me that was a good programming question. Of course I may be biased since I did well on the question. I think it's a much better question than "what is a heap?" or even "what is a heap and when would you use it?"

As for more Java specific things... Understanding the JVM is important to me, especially with regards to the trade-offs you make when you use Java instead of other programming languages. Despite what I do for a living, I'm a big believer in "right tool for the job." Most people (me included) don't usually have that luxury, i.e. you are quite limited in what tools you can use for a given job. Doesn't dimish the value in recognizing the limits of Java (or whatever) on a given task, and thinking about how some other technology might address the problem more easily. I don't like to get too involved in Java specifics. If people mention specific areas of expertise, then I do feel obliged to probe. That's as much about verifying integrity as it is about testing their knowledge.

And that brings me to my last point. There are many qualitative things that I look for in interviews. It's not just how good of a solution to a problem people come up with, it's how well they articulate it and how quickly they can solve it. If they get stuck, do they ask questions? If you give them help, how do they use it? For that matter, how quickly do they grok the problem at all? I also like to make stupid comments or questions. I like to see if they will reject this. These are all things that are good indicators of how productive they are going to be in the long run, and how much value they will add to my team.

Technorati Tags: , ,

Tuesday, June 20, 2006

Net Neutrality

There's been a lot of debate over net neutrality lately. It's an interesting debate. I can sympathize with the net neutrality supporters, but must oppose their efforts.

They have some good arguments with regards to free speech. One could imagine ISPs blocking "questionable" content from their end users. That could start off being things like kiddie porn sites hosted in the Czech Republic, etc. That's an obviously slippery slope to go down, and sites could be blocked based on politics or religion, much like we see with The Great Firewall of China. Free speech is incredibly important so I can definitely sympathize with the concern here.

Many of the backers of net neutrality have far less noble principles. This includes some of the big web companies like Google and Yahoo. They have an obvious and selfish agenda. They are starting to offer video services online -- services that consume large amounts of bandwidth. They are worried that cable operators will either deny or slow down their services unless some kind of payment is made to them. This would obviously hurt Google's ability to compete with these cable companies on video services.

I can see how that seems awfully unfair Google, but so what? It's not Comcast's duty to make it easy for Google to compete with them. In fact their shareholders would say it's their duty to do just the opposite. Nobody has to make things easy for Google. The world is not fair.

It's ridiculous to say we should pass laws to help Google compete with Comcast. Of course I know the argument that some would make, that such compettition will mean cheaper/better services for consumers. So what? The Constitution is not about cheaper better services for consumers, and when you pass laws you better talk about The Constitution. At the end of the day a net neutrality law would limit the ability of a private part to use its own property as it sees fit. That's a big deal. Anytime you are going to tell people how they can use their property, you better have some real good reasons. Protecting Google is not a good reason.

But what about free speech? The importance of the internet as the ultimate vehicle for speech should not be downplayed. How much of the information you absorb comes from online sources? Ultimately, free speech as a right is with regards to the government. The government cannot prevent people from exercising their right to free speech. Other people can certainly stop you. I can speak in public and get booed. It's the government's job to arrest the boo-birds so that my speech can be heard. I can send a letter to the editor of my newspaper, and my newspaper doesn't have to print it. It's not the government's job to make the newspaper print my letter. I can email a video to my local tv station, but they don't have to show it on the news. It's not the government's job to make show my video. So I can make a website and it's not the government's job to make sure that people can access my website.

Technorati Tags: , , , ,


Last week marked the 1.0 release of JBoss Seam. This is the latest project from Hibernate founder Gavin King, and so I've been watching it closely over the past couple of months. I downloaded the 1.0 release and built its samples. None of them worked! This was very surprising. I went through the JBoss forums, and found the problem. Even though Seam 1.0 is GA, the version of JBoss that it needs is not. Luckily King posted a link to the beta installer. Once I used this version of the installer, the samples worked fine.

So what is Seam? I think the introduction given by King and other JBoss types is somewhat obtuse. They talk about a lot of different things that Seam involves, all tied around Annotated Pojo-components. Instead of talking about the cool things you can do with Seam, they should really talk about how easy it is to do some of these cool things. That's where its strength lies. Anything you can do with Seam you can do without Seam. It's that Seam makes some things easier.

Take a classic catalog example. You have a catalog of items. Each item has some info on it, name, price, description. You have two web pages, one for showing the list of items, one for adding a new item. With Seam, you would create two classes. One class for modeling the item and one class for providing an item service used by both pages.

For example, to get your catalog page to retrieve the catalog from the database, you would have some method like findItems() and would annotate it with @Factory("catalog") where "catalog" is some logical name for your list of items. Then you just tell your catalog page to use the "catalog" object (#{catalog} using JSF expression language) and Seam would automatically execute your findItems() method, which could initialize your "catalog" object using a query. 

Similarly you could have a saveNewItem() method ony our service, and then in your edit item page you have a button whose action is "itemService.saveNewItem" where "itemService" is just a logical name for your item service.

This is a really simple example, but that's the point. You can do really simple things, really easily. That may seem like a silly statement, but if you've ever tried to write a Struts app that used a Stateless Session EJB and an Entity EJB ... well then you might have moved on to PHP or Ruby on Rails. Well that's essentially what's going on in the example given above. Ok, so JSF and Struts are not really equivalent, but you get the point.

My biggest sore spot with Seam has always been its use of JSF. I'm not a big fan of JSF. I know it was intended to allow for easier WYSIWYG development, but that's of little solace to me. However, its component lifecycle makes it work well with EJB3 and that's how you get Seam.

As for all of Seam's many other features... the new AJAX support sounds promising. I haven't tried it out yet. Sounds very similar to DWR, in that operations on your Seam components (like the item service mentioned above) are exposed via JavaScript. It uses a remoting servlet for processing AJAX requests (maybe they really are using DWR.) One amusing thing I found was that the JS libraries come from the servlet. The developer has to do a lot of the AJAX themselves -- triggering a JS call on some event, handling that event to make a remote call, processing the result of the remote call by updating the page DOM. Seam, like DWR, just makes it easy to make the remote call and get the results back. Seems like with the integrated component model, better AJAX support should be possible.

Saturday, June 17, 2006

Windows Vista Beta 2

Windows Vista had its first public beta released last week. I had tried out the first beta last year, so I was very interested to see the new beta. So I decuded to download it from Microsoft.

Microsoft wants you to use the Akamai download manager. That sounded fine to me. I was using Firefox, so it directed me to a Java version of the download manager. Only problem was that it never worked! I would get a message there were too much traffic. So just for kicks, I tried to do the same thing with IE. For IE, there is an ActiveX control to use instead. What do you know, it worked the first. It opened up four connections and downloaded at a very nice ~850K/sec. So much for too much traffic.

Now there was the question and what version of Windows to download. I have an AMD Athlon X2 processor, so I decided to give the 64-bit version of Vista a try. I am currently running XP Pro, and even though is a supported "upgrade" OS, the upgrade was not possible to the 64-bit version. Why? Simple, the installer is clearly compiled for a 64-bit OS, and thus it won't run inside XP. I had to boot up with the installer DVD, and if you do that then upgrading is no longer an option.

No big deal, I was already planning on installing to my "spare" 40 gig partition I've used for all kinds of things. Once I booted up with the DVD, installation was no problem. It was very slow, but OS installs almost always are I suppose. I then booted into 64-bit Vista.

Here' s where the problems started. I knew that drivers were going to be an issue, so I had already found and downloaded (to my main partition) the drivers for my wireless card and my graphics card. I figured (correctly) that I wouldn't need to do anything special to get the basic on my motherboard working.

I then tried to install the drivers. Vista refused to install the drivers. During the installation process I had remembered something about turning off digital signing of drivers. So I went back to XP, and figured out how to do that. Didn't work.

Time to start over! So I downloaded the 32-bit version of Vista. It was a gig smaller anyways. I re-formatted my spare parittion and installed 32-bit Vista there. This time it already recognized my graphics card driver, so I didn't to install that. I tried the same wireless card driver, and this time it worked.

Now everything worked! I tried out some of my other hardware -- sounds, printers, memory card readers all worked perfectly. I created a VPN connection to my company. This was as easy as in XP. Only weird thing was that once I had the VPN active, only requests inside my company's intranet worked. Anything to the internet did not. This was not the case with XP. There's probably some configuration issue here, but I didn't feel like figuring it out.

Now on to the more subjective parts... The UI has not changed too much from the earlier beta. Lots of dark, glossy colors. The start button is bigger than ever. The windowing system is clunkier. Doing an "explore" on the start button opens Explorer. It's hierarchy of folders jerks around a lot and is slow on refreshing when switching folders. There's also often a big pause when opening or closing Explorer windows.

Here are a few screenshots. More can be found here. Here's Windows Explorer, with the new icons to indicate what's inside folders:

Here's Firefox. You might notice the Google Browser Sync. This is especially useful on a fresh install. I got basically the same setup (cookies and bookmarks) as I had on my XP install. It might be nice if it could sync the extensions as well.

Here's Word 2007. Lots of glossy blackness!

There are a few new apps included. Microsoft's anti-spyware app, Defender is one of them:

Another new one is DVD Maker. I'm guessing that this might be one of the extras you get with Vista Ultimate. Unfortunately I couldn't try it out, since it said my GeForce Ti 4400 was not good enough!

Another new one looks like Microsoft's answer to iPhoto, or Picasa/Adobe Photoshop Album on Windows. It's called Windows Photo Gallery:

Finally, one really weird thing with Vista. I installed my favorite development setup: Java, Eclipse, Tomcat, and MySQL. For Eclipse, I installed Web Tools, but the installation failed. Apparently some of the files in WTP had file paths there were too long for Vista. I tried it with Eclipse installed in C:\, but no luck. I'm curious what this limit is on Vista, and why is shorter than on XP?

Update: I have somehow managed to corrupt IE on my Vista install! When I try to launch it hangs, completely pegging out one of the cores on my cpu (but thankfully only one core, not both.) I have to kill it in the task manager. I thought that maybe I had done by shutting down a few services. Much like XP, there are many useless services launch by default. The only important ones I shut down were Windows Firewall and Windows Defender. I have a real (hardware based) firewall, so I shutdown Windows Firewall on XP. I thought that maybe Defender was causing Windows to be incredibly slow when extracing ZIP files. Switching it off had no effect. Switching it back on did not help with IE. The only other services I shutdown were either things that I shutdown on XP (like computer browser and distributed link management) or new things that seemed related to media center functionality (services for downloading tv schedules and scheduling recordings.) Turning everything back on had no effect! So I'll just use Firefox, as I do on XP. Only problem is that I can't set Firefox as the default browser via Windows. I can even tell Firefox to check for this and make itself the default browser. It's convinced that it is doing this, but it is not. That's one way to keep people using IE, if only it would launch...

Technorati Tags: ,

Monday, June 12, 2006


A couple of years ago, I decided to use JAXB for parsing an XML configuration file. There were a lot of other ways to do it, but I liked the strongly typed object references it gave to my runtime classes. I wasn't concerned about performance, since it was only going to be used onced -- to unmarshall a single configuration file at application startup. I looked at a couple of the implementations of the JAXB spec. Sun's reference implementation was commonly used, but I liked the way that Apache's JaxMe worked better. It had some nice JAXB+ extras I liked as well, even though I didn't plan on using any at first.

Two years later I find myself considering using JAXB once again. My use for JAXB would be a lot different this time around. I thought it was good time re-evaluate some of the JAXB implementations.

JaxMe has not changed much in the two years. In fact, I had upgraded the version of JaxMe that the app I wrote two years was using, so I had already used its latest. It had improved in quality quite a bit, with many "features" (support for advanced XSD constructs) added and bugs fixed.

I took a look at Sun's reference implementation, JAXB-RI. The biggest change with it is that it uses Java 5 Annotations to greatly reduce the amount of code generated from a given schema. This is really nice. Now there's no need to generate a separate SAX handler for every complex type, and of course there's no configuration file mapping complex type -> Java class and complex type -> SAX handler. It also no longer generates separate interface and implementation class for each complex type.

Of course this is exactly why Annotations were introduced, to simplify boiler-plate code. The generated code is simple and clean. It has no dependencies on anythin JAXB-RI specific, just the Annotations that are part of th JAXB spec. It would be asy to take an existing class, add some of these annotations and use JAXB to generate XML.

So kudos to the JAXB-RI team. There are still some areas for improvement, but this is a very nice improvement on a useful technology.

Google Killed The Internet?

One of the really great things about going to a great college is that I made friends with some really smart people. Every once in awhile I read something that makes me realize just how smart some of my friends are. That happened today while reading an article on The Motley Fool called How Google Is Killing the Internet.

The article talks about how AdSense "fake sites" are being setup in droves. These sites show up on searches, have either no content of their own or its copied from somewhere else (like Amazon) but they have AdSense ads all over the site. All it takes is a click on one of those ads and they make money. It's annoying, no doubt about it. But does it mark the end of the internet, or is it just another wrinkle in the ever-evolving complexities of the strain of unstructured search known as web search?

Whatever. These sites do provide the stepping stone to some actual insight by the author. The real threat out there is click fraud, not the bogus AdSense sites. This is the ultimate threat for Google, though I'm not sure if that makes it the ultimate threat to the internet (or if it makes a threat to the internet at all.) The author then claims that click fraud is a big problem, much bigger than Google admits. He claims that they don't care about doing anything about it because they are still making money, and that their virtual monopoly (60% market share) on search gives people little choice but to live with the click fraud. He then goes on to claim that is why Google is busting out with so many other offerings, since they know that the AdWords/AdSense money machine is going to fall apart one day because of click fraud. He then points to insider sell-off of Google stock as further evidence that its management sees the end coming.

This is where I realize how smart some of my friends are. The guy writing this article, Seth Jayson, is probably supposed to know a lot about Google. He's probably very technology/internet savvy, and has a nice education. Making this kind of analysis and writing about it is what he does for a living. The article in question is a nice piece of analysis, and makes a lot of sense. It's totally wrong though, and I know this just because of a conversation I had with my friend Terry a couple of weeks ago.

We were talking about Google as well. I don't remember how it came up. Click fraud is indeed the ultimate threat to Google. Offline advertising hurting. DVRs are killing TV ads. Print ads in newspapers and magazines suffer because people would rather get their information online. Radio ads are hurting because people are listening either to their iPod or satellite radio instead. Online ads are the way to go, yet they are suffering too. Unsolicited ads are being stymied by pop-up blockers and spam filters. But targeted ads, as executed by Google, or thriving. Widespread click fraud would crush that. Monopoly or not, people are not going to pay for ineffective advertising.

That's where all the other Google apps come in. Why offer GMail? It does provide more advertising opportunities, but what it does even better is force you to login to Google. It verifies identity. If your identity is verified, it cannot be used for click fraud. Any clicks you make are legit, no fraud. Imagine if Google made you login with an encrypted password whenever you clicked an ad. That would have the same effect as having you login to GMail. Or Blogger. Or Google Pages. Or the new Google Spreadsheet. Or if you use the Google Browser Sync on Firefox. All of these services force you to verify your identity and thus make your clicks certifiable and golden. Take that click fraud.

This was the insight of my friend Terry. This is a level of insight that Mr. Seth Jayson does not posses, even though he's probably a lot more time and effort into thinking about Google and click fraud than my friend Terry has. Yet Jayson's analysis misses the most crucial part of Google's strategy.

French Fried Disappointment

I set my DVR on Saturday to record Sunday's French Open final. Talk about a "game of the century" kind of setup. You had the (current) greatest player in the world (maybe ever) in Roger Federer going for his first French Open and a "Roger" slam -- winning all four grand slam events consecutively. Against him you had the only guy who has beaten him this year and winner of 59 consecutive clay court matches, Rafael Nadal. I was almost tempted to wake up early to watch it, but settled on recording it.

Talk about a major disappointment! The first two sets were terrible. Federer played poorly even though he won the first set 6-1. Nadal definitely clean up his game after the first set, but these two guys are capable of so much better tennis. You have to acknowledge the environment. It was a very hot day, and that certainly contributed to the poor play. Plus this is clay court tennis, where typically it's he who has the least errors (28-51 in favor of Nadal) who wins, not he who has the most winners (35-25 in favor of Federer.) But still, this did not seem like a match between arguably the greatest player ever (Federer) and the greatest clay court player ever (Nadal.)

So all this begs the question, are these guys actually not that good? Are they simply good players in a age of mediocre players? For so many years, tennis has enjoyed a string of great players. In the late 70s and 80s, we had Borg, McEnroe, Connors, and Lendl. Then we had Becker and Edberg. Then it was the golden age of American tennis with Sampras, Agassi, Courier, and Chang. Nobody would question how great all these players were. Federer and Nadal seemed like a continuation, and possibly an evolution of these greats. Federer's game seems nearly flawless at times. His play was impressive defeating Agassi last year at the US Open, but Agassi is far from his prime. Maybe's Agassi's ability to still make the US Open final is more evidence that tennis is very mediocre right now.

Friday, June 09, 2006

Desktop Linux

One of the fun things about my new job, is that I am running Linux on my workstation, and only Linux. I've been a hobbyist with Linux over the years. Not as much the past couple of  years, as my hobby time has shrunk. Despite my enthusiasm for Linux, I was never convinced that it was mature enough to be somebody's every-day OS. Of course technology evolves all the time, so now I've really gotten to test this theory.

The distribution used at my work is CentOS. I think that's mostly because we use Red Hat on our servers, and of course CentOS is exactly equivalent to Red Hat. By default, it only installs Gnome with Red Hat's bluecurve theme. I always preferred KDE, so I installed that and use a slightly tweaked version of its modern theme.

So how easy or difficult is it to use Linux as my day-to-day OS? Let's take a look at some of the daily tasks I use my computer for.

Web browsing -- This is pretty good on Linux. CentOS came with Firefox 1.0.x. I updated it to Firefox 1.5. This is exactly what I would be using on a Windows or Mac system. It seems a little slower on Linux, and there are more rendering abnormalities. So I also installed Opera. This runs very fast on Linux, at least as fast as it does on Windows. There much fewer browsing quirks. I love all my extensions on Firefox, but it is tempting to switch to only using Opera on Linux. It is a far superior browser on Linux.

Email -- CentOS comes with Evolution. I'm not a fan of this program, so I installed Thunderbird. This works great, just like on Windows. Seems as fast as it is on Windows, unlike Firefox. The only weird thing is that I can't seem to get its email notifications working. I actually think that not having email notifications is kind of a blessing, since it is easy to get distracted and become less productive because of email notifications. So I'm not too upset with this. I also installed an open source GMail notifier. Unlike work email notifications, there is less downside to getting personal email notifications. This worked great, but did take a little configuration. It also seemed a little dangerous that I stored my GMail password in plain text in a configuration file.

IM -- Gaim is great. I've often thought of using it on Windows, but it totally rocks on Linux. I'm actually using my AIM account for the first time in a long time. A couple of years ago, this didn't work for me on Gaim because my AIM account was actually a .Mac account. Now it works great. I log in to it and my more heavily used Yahoo and Google Talk accounts. Only complaint would be that the Google Talk account should be able to generate GMail notifications, but I got the GMail notifier mentioned above to make up for that lack of functionality.

Development -- This was the easiest thing. I do most of my work in Eclipse, which works great on Linux. The only slight issue came from CentOS installing JDK 1.4 and putting this on the path. This could not be upgraded in pace to JDK 5, which I had to have for Eclipse to run (and to actually do my job.) So I installed it separately, and modified my .bashrc and .bash-login files to modify my path with the proper version of Java. No problems with things like Apache, Tomcat, or MySQL. I did have a weird problem installing DBD::mysql from CPAN, though.

Desktop Publishing -- Here's where things got tricky. I used to produce a lot of technical documents with MS Word and Visio. Open Office's Writer program works pretty well. Its UI leaves a lot to be desired, but I'll probably get used to it. It is slow to load, but pretty responsive after that. As for a Visio replacement, Dia claims to be one. This program seems awful though. It's UI makes Writer look nice, and everything about is cludgey. This was inadequate for producing software documentation. I could do some basic UML, but nothing very advanced. So I downloaded the free version of Visual Paradigm for UML. This is a nice program. It's more equivalent to Rational Rose than to Visio, so it has a lot more advanced features. I had a little bit of trouble getting started with it. Maybe if I was more used to Rose, it would have been more intuitive. But in the end, I was able to be productive with it. I may have to get my company to buy the more advanced version of this program. However, I had some serious issues with printing from any of these programs. I had no problems with printing from Firefox or Thunderbird, but for some reason the Open Office apps have issues.

Music, movies, photos -- My workstation is actually a server. Thus it does not have a sound card and only CD-ROM drive. So I haven't really been able to do much with music or movies. As for photos, I installed Picasa for Linux. This uses Wine and seems to work great. I did manage to crash it mysteriously once, but I wasn't doing anything with it at the time and restarted with no problems. It is surprisingly fast. I did need to do a little bit of image editing, and busted out The Gimp for that. I experienced what all Photoshop users experience when they use Gimp -- everything seems like it is in the wrong place. There is some logic to how Gimp organizes things, but it is difficult to get used to. Like the Open Office apps, it is also kind of an ugly UI.

So there you have it, desktop Linux. It is working just fine for me. Of course I am a programmer with prior experience with Linux. Most of the "advanced" things I did are things that most people wouldn't need to bother with. I do a lot of weird things to Windows as well, like modifying environment variables and disabling default services. So I don't think I did that much more on Linux. Maybe it really is ready for the masses...

Election Results

I've already written a lot about this week's election, so I'll keep this short. I wasn't too upset about Angelides defeating Westly. There really wasn't much difference between these guys. I don't know if either would be more likely to defeat Shwarzenneger.  I'm sure that I'll vote for Schwarzenneger again.

I was very surprised to see both state propositions go down, and go down hard. Then again, many theorize that liberal issues/candidates do poorly in elections with low turnouts, and primaries typically have low turnouts. Whatever the case, it is good that these propositions failed.

I was not surprised by the San Jose mayorial results. I voted for Mulcahy. If I had to rank the candidates it would have been Mulcahy, Pandori, and Reed. So I will probably vote for Reed in the runoff.

Of course the other big news of the elction was the special election for Congressional district 50, down near San Diego. Many thought that a Democratic victory could occur in a very conervative district. Many people believed that a Democratic victory there would be a sign of many more Democratic victories in the fall. I think too much was being read into this. Anyways, it didn't happen. Yawn. My friend Terry thinks it was a classic case of Republicans controlling the agenda by using immigration to swing things in their favor. He's probably right. So why can't Democrats controll the agenda? Because when it comes to the issues that Republicans are weak on, such as the war in Iraq and corruption, Democrats are also weak. After all the lies that Bush used to justify war and all the casualties on both sides, it's weak when all you can say is "we need an exit strategy."

Technorati Tags:

Tuesday, June 06, 2006

Elections Party 3: Election Day

Today is election day, err primary day. I voted this morning. There is a poll at the school right behind my house, so it was a short walk there to vote. Actually if I jumped the fence in my backyard, it would put me right next to the poll. Anyways, there were a lot more things to vote on than just the Democratic candidate for governor and the two state propositions. Most of these things were of a local variety.

Mayor of San Jose was one of the big draws, in terms of number of candidates. I've only lived in San Jose for a little more than a year, so I actually felt kind of guilty even voting for this. My short time in San Jose made it even more difficult. I did my best to identify some important issues in this order: road improvement, bike trails/parks, and urban development.

The first two are things that I think are exactly what should be looked for from governments: infrastructure. I probably would not have come up with the second one a year ago, but now that I bike a lot, it has become obvious to me that this need to be worked on. There are many trails in San Jose, but they are not connected and in many places are disrupted. As for urban development, I mainly want the government to stay out of it. Several of the candidates want to halt urban sprawl. Given the housing situation in the valley, I just can't agree with that. I don't want to government to prevent more houses from being built in an area that has way more people than it does houses. There are already government agencies that put up hurdles, that's enough (too much actually.)

As I read more about the candidates, I realized there was another important issue, or at least event. Current San Jose mayor Ron Gonzales was "caught" making secret deals with Norcal, a waste management company. There is not much worse than an elected official making non-public deals involving millions of taxpayer money. It seemed that several of the other candidates were complicit in this, only backing away from Gonzales once the backlash began.

So with all that in mind, I wound up voting for Michael Mulcahy. The only thing I wasn't real crazy with him was his stance on tax breaks for certain high-tech industries. I don't like government playing favorites in general, but this is not a terrible idea.

Besides mayor, there were several other local issues. There was a half-cent sales tax increase for Santa Clara county. I voted no on this, simply because there was no specification to how the money would be used. There was a measure to continue transferring money from the "general" fund to a fund devoted to parks. I voted yes for this. There was a similar measure for continuing a transfer to benefit the school district I live in. This was a difficult decision for me. If voting no would have meant a tax reduction, it would have been easy. But my desire for private schools won out, and I still voted no on this.

That's enough on the elections... for now. I'll need to get back to technology soon, and my new job has certainly provided a lot of material for that.

Technorati Tags: ,

Monday, June 05, 2006

Elections Part 2: Propositions

The upcoming primary election is novel in that it only has two propositions for California voters to vote on. Of course there was last year's infamous special election that was all propositions, so maybe there's less to go around this year because of that. Unlike the Democratic primary for governor, these are much more interesting.

Proposition 81 -- Bonds for libraries. I like libraries, I really do. Growing up, I frequented the public library near my house. In high school, I would spend many hours at the libary at the community college, doing research for papers. In college, I would troll around the 7th floor of Millikan Library, the math floor. However, I must oppose this proposition. I wouldn't mind more funding for public libraries, but not via bonds. These are debt instruments with no pre-defined repayment mechanism. If bonds were not used and a more well defined and defensible tax mechanism was proposed instead, I would reconsider my position. Plus as it is, libraries are becoming less and less valuable with the advent of the internet. Most of the information that I once had to go to the library to find, I can now easily find online. A couple of years ago I almost took a job with a very cool company called eBrary. They provide a library portal that's kind of like the Dewey Decimal System on steroids. Right now they try to sell to public libraries, but I think it would be a great component to complement private schools. Enroll your kid in a private school and get access to that school's eBrary portal. I digress... No on Prop 81!

Proposition 82 -- Universal Preschool. I just know that this is going to pass. It uses the old "think of the children" trick to justify atrocities. Where to begin on this? I'll try to stick to two basic points.

Free preschool will devalue preschools. Think of how bad public schools are in the United States and in California. This same kind of devaluation will result from tax payer funded preschools. Sure the preschools themselves may remain private, but they will have to conform to state regulation in order to be eligible to receive state money for student tuition. Refusing regulation will mean that they will lose students (and future students) of parents for whom the tuition reduction of letting the state pay for preschool is too great to turn down. This is in its own way just as bad as the No Child Left Behind fiasco. Proponents like to talk about how much better off children who attend preschool are, but it's a useless statistic (correlation does not imply causation!) Children who go to preschool have parents who spend money on sending them to preschool. Those parents are going to be very interested in making sure their kids the most out of preschool because of their considerable investment. The preschools themselves are also under pressure to perform, since kids don't have to go to preschools so their parents could easily remove them from the school completely or just to change schools. If you give away preschool, then parents will not have the investment in it and will not be compelled to be involved as much. This is exactly what happens with public schools. Similarly with less pressure to compete, the preschools themselves will only be motivated to pass their state mandated regulations and nothing more.

Financial unfairness. One of the reasons why this will surely pass is because it is funded by a tax on people who make over $400,000 annually. There's not too many people like that and so their votes are useless, and many people will say "those people are rich and can afford to pay the tax." That's an awful way of thinking in my opinion. Here's how I look at it. People with that kind of income can already send their kids to preschool, and probably do so. Thus they will receive little or no benefit from the program that they are being told to fund. You can't get more unfair than that. Now I know that there are already many such programs based on the same funding principle, but does that justify another one? This is basically singling out a minority (people with high income) and forcing them to do something against their will. But they have money, so it's ok, right? Some of the first persecutions of the Jews in not-quite-yet-Nazi Germany were based on these same principles. No on Prop 82!

There you have it. Two propositions, two Nos. Given my track record on propositions, I'm sure both props will pass.

Saturday, June 03, 2006

Elections Part 1: Angelides vs. Westly

This will be the first of several posts about the elections on Tuesday, June 6. Probably the "biggest" of them is the Democratic Party's primary for its gubernatorial candidate. There are many candidates, but for whatever reason, it has become a two-man contest: Phil Angelides vs. Steve Westly. These two guys are so similar it's ridiculous. They have almost identical views on everything. I will probably vote for Schwarzenegger regardless of who wins this. Angelides seems to favor more taxes and seems like more of a union whip, so that makes me lean for Westly. However, I thought it would be interesting the compare these guys on another, more technical level -- by examining their campaign websites.

Phil Angelides for Governor -- His site is pretty simple, nothing too Flashy. Examining its HTML, it seems pretty clean. Structurally it looks like a good designer setup the page templates. There is a LOT of JavaScripts sprinkled through the pages, instead of in typical JS files. Seems a little hacked together. Closer examination reveals a lot of the inline JS is for WebTrends analysis, so that was probably hacked in after the pages were designed. It was also quickly clear that the site was using Java, and in particular Resin. This was obvious when I tried the search box and got an exception for the result (clearly a text parsing exception to boot.) So extra points for using Java and even more for using Resin. Can't be too happy with a page bombing like that though...

Westly for Governor -- Definitely a Flashier site with more effects. A look at the HTML and it looks very 1990's. Lots and lots of embedded tables. Closer inspection reveals that it's all written in ASP.NET, so probably a lot of the HTML was generated by Visual Studio. Hence the tables-gone-wild approach. No crashes at least. Still ASP.NET is a little disappointing for a former eBay guy who still lives in Atherton. You're not running for governor of Washington! Definitely a more hip site though. It even has an RSS feed.

So in the end, I'd have to favor Angelides' site, despite its lack of hipness and broken search results. At least it has a search, Westly's does not and neither does The Governator's. It wasn't a clear enough of victory though, so I'll probably still vote for Westly for the reasons listed at the beginning.