October 31, 2007

Happy Halloween!

Happy Halloween kids! This past weekend Timber and I went to a Halloween party dressed as a beat up Sharks player (me) and an injured fan (Timber).

Posted by troutm8 at 06:43 PM

October 30, 2007

5.6 Magnitude Earthquake Just Hit

A 5.6 Magnitude earthquake just hit. I had time to get under the dining room table with Wookie, but I could feel the ground under me roll and the condo all around me shake. Also, the USGS already has information up on their website about it. They rock! Here's the link.

Posted by troutm8 at 08:13 PM

October 29, 2007

Water Use

I just got the water bill today and decided to start tracking our water usage over time, because I would like to find ways to reduce it. Our water usage for this bill (2 months) was 13 CCF (1 CCF = 100 Cubic Feet = 748 Gallons). When I busted out the calculator (13 CCF * 748 Gal = 9724 gallons). So over 2 months (60 days) it looks like we are using 9724 gallons/60 = 162 gallons a day. I don't know, that seems a little high to me. When I checked out the web site for my local water company and found out that average water use in San Jose over the same period of time (2 months) is 40 CCF. So our usage is roughly 1/3 of a normal household in San Jose. Not bad, but I think we can do better. Hopefully by this time next year (or by looking at old bills) I'll be able to put together a picture of our water use over a year or more.

Posted by troutm8 at 11:56 PM

Called In The Big Guns

The plumbing saga is finally over. Here's a full run down.

A few months ago:
We started thinking about changing out our kitchen faucet after it became more difficult to work with. We started shopping around.

About a month ago:
After finding a model that we liked I shopped around and found something very similar for $99 on overstock.com . I ordered it and it came in about a week later.

This Past Sunday:
Time to start changing out the faucet! I have the Home Depot Home Improvement 1-2-3 book and all the tools I think I'll need. Time to get started. I closed the water valves under the kitchen sink and got started. It took a little while longer than I expected to take out the old faucet due to some rusty nuts, but I was able to eventually get it done. Then I walked through installing the new faucet, but after a lot of pain and suffering I got it put in and turned on the water. Then I ran into problems. I had leaks both under the sink and on top of it. I could work with the leaks under the sink but the leak in the hose above the sink was a deal breaker. I had to stop at this point and plan on getting another faucet the next day at Lowe's.

On Monday I drove down to Gilroy after work to pick up the original faucet that we wanted which was about $200. After I got it I ran home and started working to put it in. I took out the overstock.com faucet and then put in the one from Lowe's. Then the problem was that the hoses for the Lowe's faucet wouldn't work with the valves that I had. So I had to stop at this point and go to the hardware store the next day and get some 3/8 inch compression valves.

I went to OSH and got the compression valves, but I realized that I would have to change out the master valves under the sink in order to fit the new faucet's hoses. In order to do that I'd have to find and shut off the master water valve. I looked all over the house, upstairs, downstairs, inside, outside, and I just couldn't find it. Finally I ran out of time and had to call it a night.

I finally found the master shut off valve, but since I live in a condo building with 8 units there were 8 master shut off valves at the end of the building. And unfortunately for me, only 3 of the 8 were labeled, and none of the 3 were for my unit. So after a few educated guesses and accidentally turning off my neighbor's water I finally go the right one. And as it turns out one of the master valves was labeled incorrectly. I also tried to turn off the water valve at the water meter. But after getting rid of the black widows in my way I was not able to turn that valve at all. But the water in the house was stopped, so I went into the house to finish the job. The next problem was that all of the faucets upstairs were out of water but the valves underneath the sink that I needed to change still had water. At this point I had to call it quits and plan to call the plumber the next day.

First thing in the morning I called the plumber and made an appointment for them to come and finish the job later in the day. Two plumbers showed up during the alotted 2 hour window. They checked out the scene and decided that they needed to change the water valve outside to get the water to fully stop, and to finish changing out the valves inside the house and plug the faucet in. It took them roughly 2 hours to do all their work. Finally everything was done and it only cost me lots of hours and a $500 trip from the plumber. Whew!

Posted by troutm8 at 11:32 PM

Yeah Boy!

The picture says it all.

Posted by troutm8 at 11:17 PM

October 23, 2007

Fight Through It

Last week and this week have been tough ones for me. The reason is that everything seems to be breaking down. Last week the Vespa had some sort of valve malfunction and lost all of its oil. Luckily I was still in my condo complex and was able to take it back and then clean up the oil later in the day. Then, over the weekend my attempt to replace the kitchen faucet was fraught with a faulty replacement faucet and rusty parts on the old faucet. In addition to all that two of my 3 machines at work decided that they would have fan problems causing one not to boot up at all and the other to shut down after an hour, threatening to put me way behind schedule on a development project I'm trying to finish this week. Even though the problems I've had are insignificant to real problems other people deal with every day I think the way to cope with them and get around them are the more or less the same. You fight through it. I'm fighting through all of these problems one small bit at a time and eventually I'm going to get them all fixed and get back to doing the things that I'd rather be doing. I'll post more information on the kitchen faucet later (when I'm actually done with it).

Posted by troutm8 at 02:38 PM

October 22, 2007

Search Query Log

I was looking at my log of saved search queries on Google today and I started wondering how far back they were tracking them. In my case all my search queries dating back to May of 2005 are tracked. That must have been when I got my gmail account. I like the monthly, dayly, and hourly charts. I think it illustrates that I'm more of morning person and I can also tell from the charts when I usually eat lunch and dinner. :-)

Posted by troutm8 at 10:47 AM

Got Legacy Code?

If you have legacy java code, you should check out this demo from Agitar Software. Overall it looks cool, but I would have to see it work and make sure the tests that it generates are actually useful.

Posted by troutm8 at 10:12 AM

October 19, 2007


This week's TTF (Tom Tech Friday) is for the hard core geeks. I'll be talking about Search Relevancy Testing. Search Relevance is the measure of how relevant a given set of search results is for the given query. If you think about it you might come to the conclusion that search relevancy testing is subjective, because you don't always know what the user "wants" when they enter a search query. But push that thought out of your head for now... :-)

There are different types of search queries. Some of them are:
Navigational (specific) -> alaska airlines
Discovery (broad) -> airplane
Informational (directed toward a single topic) -> california fishing regulations
Transactional/Resource-Based -> u2 tickets "hp pavillion" "san jose"

Then there are forms of queries. Some of them are:
Terms Only -> san jose weather
Natural Language -> flights from sfo to jfk on american airlines
Question -> What is the traffic in Chicago like right now?
Domain Specific -> AKAIR7855
Metadata -> url:cnn.com topnews

You can rate the relevancy by manual means which is generally more accurate, but way more costly (you have to feed people but not machines). There are a few manual methods to doing this, they are:
Numeric Method -> rate results from 1 to 5
Binary Method -> thumbs up, thumbs down
Google Method -> vital, useful, relevant, off-topic, offensive

There are also algorithms for automatic relevancy evaluation. Some of them are:
Qrels Validation -> URI based, only works with static content
Trels (term relevance) Validation -> matches on-topic (+1) & off-topic (-1) with variations like off-topic multipiers and point per occurence.

Some of the metrics used include:
Precision (of the result set) = (# of Relevant Results)/(all results)
Instance Recall = Number of topics that are covered over the first N results.
Mean Search Length = Number of irrelevant results until the first relevant result
K-Call@N succeeds if the top N results have K relevant results (ex -> 1-call@10 succeeds if we find one or more relevant documents on the first page (10 results per page) of the result set.

A lot of companies, including mine, use automated methods and TREC data to do our Search Relevancy Testing. It is interesting stuff, but I think we could probably do more of it.

Posted by troutm8 at 04:01 PM

October 18, 2007

Tech Support Sucks

Not too long ago my brother bought an Apple Wireless Router and needed some help setting it up. Even though I've never used this particular product, I've set up plenty of wireless routers, so of course I was going to help out. Each night for the past couple of nights I got the manual for the router (in pdf form) and spent at least an hour on the phone with my brother trying to get this thing set up. It is pretty tough to walk someone through something like this over the phone when you can't see the screens they are seeing and all you have is the manual. To make a long story short we got it working for a little while, and then for some reason unknown to me it just stopped working. After going through all the same steps over and over again I gave up and told my brother to call Apple Technical Support. I just hope that he gets to talk to someone that actually knows this product and they help him get it working. I would hate for him to have to put it up on a shelf and wait until I'm there at Christmas to get it working in person.

Posted by troutm8 at 10:17 PM

Outdoor Soccer

This summer I started playing outdoor soccer again for the first time since I moved to California. After playing arena league soccer exclusively for 7 years the pace of outdoor seemed slow and the games seem to drag on. And playing goalkeeper in both indoor and outdoor I noticed that the net in outdoor isn't that much bigger than indoor, and there are no rebounds off the boards. I'll probably play outdoor again next summer but I'll hang the cleats up for the winter to make time for snowboarding.

Posted by troutm8 at 10:05 PM

Pumpkin Patch Attack

This past weekend Timber wanted to head down to the pumpkin patch in Morgan Hill to check out the giant pumpkin weigh off. The winning pumpkin ended up weighing more than 1300 lbs. After we saw the giants we had a bite to eat and checked out the plethora of pumpkins they had for sale. This is the best pumpkin patch around.

Posted by troutm8 at 09:56 PM

Apple Picking

On Saturday, October 6th, Timber and I did some apple picking as part of a charitable event organized by Apple (the computer company). We and a bunch of Apple employees went to one of the last orchards in Cupertino, the same one we went to back in March to prune the trees and put compost around them. This time we had more fun picking the apples because we got to eat some of them and it wasn't as messy. The apples that we picked were all organic, of the pippin variety, and all (save a few boxes for volunteers) went to local food banks. It was a good time and I definitely think we will be back in the future to help out at the orchard.

Posted by troutm8 at 09:39 PM

An Inconvenient Truth

I finally got around to watching An Inconvenient Truth. If you are not familiar with it, it is a documentary about the Al Gore presentation. This is the presentation that Al Gore shows when he travels around telling people about Global Warming and how we'd better do something about it now otherwise we are going to see lots and lots of problems. So the documentary is basically this presentation on steroids. It includes video clips, background information, and other side stories that you just wouldn't get if you only attended the presentation itself. And I have to say that is is very convincing. In fact, it scared the crap out of me. I'm a pretty conservative guy that has become more environmentally conscious after moving to California, but I still am sometimes skeptical when I hear about global warming on the news and the different things that environmentalist groups are doing. I've had my own questions about global warming which are:

Could the warming that we are going through right now be just a normal part of our planet's heating and cooling (ice ages, etc...) cycles?
If global warming is really happening, what can we even do about it? Isn't this just a runaway train?
If we try to stop global warming isn't it going to hurt our economy and cost lots of jobs?
Are environmentalists just plain crazy? Do they even care about people?

Al Gore answered all those questions in An Inconvenient Truth. He builds the case mythodically and takes apart all of the various arguments against the existence of Global Warming and the inertia of doing nothing to stop it. I've actually seen some of the effects of global warming when I lived in Alaska. The main signs that I saw were the Spruce Bark Beetle infestation on the Kenai Peninsula and the melting of the permafrost. I've seen large tracts of forest killed and then later burned because the spruce bark beetles have gotten out of control. I've also seen houses and other buildings get twisted and broken because the permafrost under them has melted causing the ground to move up and down.

So even if you are skeptical about what the environmentalists are saying just watch this movie with an open mind. Even if only half of what Al Gore is saying is true, we still need to do something about it. And I'm fairly certain that all of the things he is saying are bullet proof, otherwise he would have taken them out of his presentation a long time ago.

Posted by troutm8 at 05:12 PM

October 17, 2007

iPhone SDK Coming

According to this note from Steve they are going to release an SDK for the iPhone in February '08. Woohoo! Prepare to say hello to Skype, Lotus Notes Connectivity, Terminal, and other apps to run natively on the iPhone. I'll also be happy when the widgets that I have for my mac (movie showtimes, netflix, library book search, etc...) will also run on my iPhone. Don't laugh, it is (probably) coming...

Posted by troutm8 at 01:24 PM

October 12, 2007

Tom Tech Fridays Part VII

This edition of TTF revolves around Selenium. Not the element, but the test tool for web applications. Selenium allows you to do automate web GUI tests. Before I go on about the details of Selenium and why I use it I first want to touch on subject of automating web GUI tests.

First, while tools like Selenium are getting better and better all the time, I make no illusions that you will be able to automate all of your web GUI tests and walk away and have them run over and over again. If you are a manager and reading this you need to remember that automation is not a silver bullet to solve all of your problems. Automated testing just doesn't work that way, especially on a product that is constantly changing. The problem with automated tests in general is that they require care and feeding (contant updates) as the application changes. Don't get me wrong, I think automation is a good thing and that you should automate as much as possible, but at the same time know when you've automated enough. And when you set out to automate a web application I recommend first focusing on automating against the API because that is a lot less likely to change than the layout of the GUI. So you'll get more bang for your buck there. Then focus on automating the main functional paths through the GUI and then branch off into the less likely occurences from there as time and resources allow. And lastly, even if you've automated nearly all the web GUI functionality, you still want to have a human take a look and run through at least some tests every few days. You would be amazed at how many things a person can catch that would never be caught by automated tests. OK, moving on to Selenium...

I use Selenium for a few reasons. They are:

1. It is open source and doesn't suck as much as other GUI automation tools that I've used.
2. I can use Selenium RC to run against all the browsers that my product (OYE) supports.
3. You can write the automated scripts in java, c#, perl, php, phython, or ruby. and Selenium RC can play them all back.
4. You can easily plug it in to other test infrastructure to have it run on a regular basis.

Where Selenium fits in for me:

On my project we plug it into Jameleon which is then can be kicked off via ant scripts. Right now we don't use it as part of CruiseControl or BuildForge, but it can easily be plugged into those frameworks and run every time we get a build. And the way we do our Selenium tests is that we write a "tag" in java that performs each function (login, logout, add web crawl, etc...) and then each test case (xml file run via Jameleon) is basically just a collection of tags put together in different orders. One way to think about it is that each "tag" is a lego block, and each test case is a lego castle or boat or whatever. That way when things change in the GUI (login, logout, navigation, etc...) all we have to do is update the tags and not actually update the test cases. Another benefit of this division is that you can have less technical personell write the test cases in xml and have the more technical ones write the tags (in the language of your choice). In our case I'm the one that does both for GUI automation.

So if you are interested in automating your web GUI tests I highly recommend checking out Selenium. You don't have to get complicated like I have on my project. You can use the Selenium IDE to record and play back your tests, but this method is brittle and will easily break if anything in the GUI changes.

Posted by troutm8 at 04:38 PM

October 07, 2007

My Kind Of Song

This is my kind of song. :-)

Posted by troutm8 at 10:24 PM

October 03, 2007

Phones For Christmas?

According to this article, Verizon is getting a few new phones ready for the holiday shopping season. That got me thinking, would I ever buy someone a phone for Christmas? I think about it kind of like getting someone a dog as a pet, you just don't do that (for so many reasons). What if it is on a different network, would I be responsible for the monthly bill and the cost to terminate their existing phone contract early? What if they don't like the phone? What if it doesn't have the features and functionality they want? I think the biggest stumbling block is the service plan that comes with the phones here in the US. The mobile network companies find some way to tie us into a goofy, overpriced, underutilized plan when we get a phone. Then we pretty much have to hold onto it for two years before we are free to shop around again. Maybe the problem is that most of usually want the latest and greatest phones with as many features crammed into them as possible, and that's how they get us. From that perspective, something like the openMoko sounds pretty good. Too bad I had the iPhone for a while before trying the openMoko, because in comparison, the openMoko sucks.

Posted by troutm8 at 09:38 AM

October 01, 2007

Tom Tech Fridays Part VI

Yes I know today isn't Friday, but other things always come up on Fridays that delay these postings. But at the very least I'm trying to keep the number of these Tech Fridays postings. This episode concentrates on my test of the new wifi iTunes store. I'm starting to think that my testing of everything is some sort of mental disorder. I got the software update for the iPhone which was somewhere in the order 130 MB. After I downloaded it via iTunes, it installed on my iPhone and the phone rebooted. After that I saw the new wifi iTunes icon on my iPhone main page. When I clicked on it I was brought to the wifi iTunes store. The first thing I noticed was that it was a clean, minimalist interface. I scrolled up and down checking out different genres and top 10s. I also did a few searches which worked well. The previews were downloaded pretty quickly (due to my fast network speed) and were intuitive to use. I had a tough time finding something that I wanted to buy and test out the download functionality, but I eventually bought an Amy Winehouse album and saw the files moved over to my downloads section and then I watched the progress as each song was downloaded. In less than 5 minutes I was able to play all the songs in the album. Later on I synced the iPhone up with my computer and I saw the songs move over to the computer. All in all it was pretty easy to use and it is pretty scary how easy it is now to spend money on the iTunes store. One recommendation I would like to make is that when I don't have a wifi connection the icon for the wifi iTunes store should disappear. If I don't have access to a wifi network and I click on the wifi iTunes store it tells me that I cannot connect to the iTunes store and that I should try with a wifi connection. I also think Apple did a pretty good job of architecting iTunes since you can easily access pretty much the same stuff (no video of any kind or podcasts) as you can with the regular iTunes store. I would like to see access to podcasts via wifi iTunes eventually. I wonder if the connection to the iTunes store is encrypted? When you buy something it only asks for your password, but how is that transmitted? The wifi iTunes store shows nothing to say that it is secure. I would recommend only using this on an encrypted network for now...

Posted by troutm8 at 04:43 PM

Tom Tech Fridays Part V

This week's Tech Friday piece is around CruiseControl. In case you are not familiar with it, CruiseControl is an open source product that allows you to build your product, run unit tests, perform code analysis (code coverage, static analysis), or just about anything you want on a regular basis and report the results on a web server. If you do software development you should really consider using CruiseControl or something similar. On my project we have CruiseControl run every few hours, and when the unit tests fail it sends an email so that we can fix the problems ASAP. What we run is as follows:

jUnit Tests
Emma (code coverage)
FindBugs (static analysis)

The benefit of continuous integretion on a software project is that it allows you to tackle problems while they are small instead of waiting to do your integration at the end of development which can be really painful if you run into problems. And since the changes in between builds is small, you can easily find out what change broke the build. Not all projects are ideal for continuous integration, but most projects nowadays are a pretty good fit, and the benefit is that once you set this stuff up it can run over and over again by itself, and you'll probably see the quality of your product go up if you pay attention to the errors that are thrown by these tools.

Posted by troutm8 at 04:06 PM