Sunday, December 31, 2006

I just made my first trip to Costco Wholesale Corporation yesterday with The Wife. She's been going with her lady friends for quite a while and I've managed to dodge the bullet up until yesterday.

It was an enjoyable outing and my buddy Marc turned me on to the deal for a hotdog or polish sausage and a soda pop for $1.50 after making your purchases. Quite a deal! They even have these little boxes with a crank on one side. You hold your dog on the other side, turn the crank and either onions or relish come out the other side! Brilliant!!

So, I was meandering down an isle of wholesale goods with other shoppers when I laid eyes on the Rogaine.

Now, I've always said that when it comes time, I'll give it the ol' buzz cut instead of the comb-over, swirl over, or other means of denial. But this was Costco Wholesale Corporation and it was cheap! Like $10.00 cheap! Why pass up an opportunity for imortality?!?!

So on a lark, I was about to chuck a box in the cart until The Wife reads the side of the package and says "This isn't for you, dear." Turns out this Rogaine is for balding around the crown of your noggin' and not for the exceedingly high forehead, like mine. Alas, it'll be the clippers for me before too long. I wonder if I'd make a good Mr. Clean head like Doug Purdy or King Kong Bundy? It's not too smooth, but I do have a lot of "character" bumps.

Sunday, December 31, 2006 3:36:16 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, December 20, 2006

XPathmania
I caught the Barcelona episode of DotNetRocks. At the very end of the show they chatted with Don Xml and his recent open source contribution on CodePlex: XPathmania. Its a VS.Net 2005 add-in that helps developers test and validate XPath expressions.

It works like this:

  1. Launch VS.Net 2005
  2. Load up an XML document
  3. In the menu bar, click View > Other Windows > XPathmania
  4. Enter an XPath expression in the textbox and click the Query button
  5. See the XPath expression matches in the results table
  6. See the highlighted nodes in the source XML document

Brilliant! It also helps out with default namespaces, which have been huge headaches for me before.

Wednesday, December 20, 2006 10:21:05 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Friday, December 15, 2006

So the long awaited service pack was released yesterday. Here are the release notes. I downloaded the nearly half-gigabyte download and installed it. My laptop churned through it in about 40 minutes.

The experience would be a little better if all of the clicky parts of the install were way up front; then a very clear message could say, "Its OK to get a cup of coffee now; this is going to take a while." I wanted to walk away from the laptop and let it do its thing, but I was never quite sure if I would come back only to see a prompt that paused the installation.

I've been dodging the csproj files for ASP.Net 2.0 all this time, but now I guess its time to get back in there. I did it all the time in ASP.Net 1.x and I still get a good bit of joy out of just deploying a single .cs file to a web server. Now, its back to compiling all the code-behind pages for the site into a single assembly.

Among many other things, the ASP.NET Web Application template is included in SP1. I highlighted the new web application project template below. The temporary Web Project bits that were released a few months ago have to be uninstalled before SP1 is installed.

Here, I created a new project and there's the good ol' .csproj file keeping track of everything.

At least the ASP.Net compilation step will zoom now. It was a little pokey without the project file. Scott Guthrie had some workarounds, like configuring VS.Net to not compile code-behind pages, but that's all in the past now.

Friday, December 15, 2006 5:09:43 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, December 09, 2006

Last Thursday, The Wife was out with the car and it wouldn't start. The tow truck jumped it, so she could drive it home. He said the battery cable was loose so the diagnosis should start there.

I received this news late Thursday while out with my darts team for the division championship. We had just lost the very close game, so this was just about the perfect time. No need to bring on sour news when I'm feeling good; better to here about it when I'm already in the dumps.

My friend let me borrow his 2nd car that night so The Wife could drive to work on Friday. Just to put a little pizzazz into it, there was police activity smack dab in front of our house. When I rounded the corner to our street, a couple of police cars had pulled over a car and were searching it. I parked a few houses down and waited about 20 minutes. They hauled the guy off and a tow truck promptly took his car. I walked outside around 12:30am and drove my friends car into our driveway. Great.

Friday morning, I woke up and examined the car. The battery was way low; it wouldn't even turn the engine over. So, driving it to a mechanic was out of the question. Paying to have it towed made me grimace too. The battery cable was a weird kind of loose. Tight at first glance, but if you wiggled it just right, it would pop off the battery post with ease.

I went inside and searched online for the nearest Napa auto parts store (for no particular reason, I think that's what my Dad always went to back on the farm). I walked about 20 blocks to the shop and purchased one model "51R" car battery for about $80. As the fella brought the battery out of the stockroom he looked at me and said "so, this is going to be a lot of money". Who says that? This guy should go to marketing school or at least take the correspondence course. I had a good guess of what a battery costs; maybe he thought I was going to ask for a deal or something. I was dressed pretty scruffy after 6 hours of sleep and a tough night of beer & darts. It was easier walking there than it was walking back; its heavy after a few blocks.

I removed the old battery and installed the new battery easily enough. It really helped that I found the needle nose pliers, vice grips and adjustable wrench in the house. They're weren't put back in their proper locations in the garage. Grrrrr!

The car started right up and I felt a little bit of pride in a job well done. I considered that I had probably solved the problem and it was most likely caused by the loose connection; thus, the battery was not being charged properly by the alternator and it was slowing draining all its resources. After several days, the battery finally gave up. Yet, in the back of my mind, I thought what if its really something bigger? I am a farm kid, but I'm no mechanic.

The same friend who loaned me the car highly recommended Dan's Automotive. I drove the car over there this morning and recited the story to the guy (Dan I suppose) then walked over to a coffee shop. He called me back in about 90 minutes and said to come over. The car was perfect, nothing was drawing too much of a charge and he looked all over for any other suspicious problems.

Then, he looked at me warily and said, "so, is $20 fair?" I grinned widely and agreed. The confirmation of no problems would be a deal at twice the price. He had a couple of customers in the shop and already had some cars up on the blocks. I was glad he took me on such short notice. Looked like he was doing a fair business; but not swamped. He was super friendly; which is very high on my priority list. So, Dan's Automotive is now my favorite place to take my car too. If you need a mechanic in NE Portland, you should try the place too:

Dan's Automotive
5811 NE Sandy Blvd
Portland, OR 97213
(503) 281-7788

Saturday, December 09, 2006 11:19:34 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, December 06, 2006

The project team wanted to ajax-ify some parts of a web page we were building so I naturally reached for the ASP.Net AJAX tools. I needed to configure the autocomplete textbox feature that looks at the characters in the textbox as you're typing and suggests actual values through a listbox that appears below the textbox.

This all works though a background web service call to the server that filters the total results that match the current prefix in some way.

I downloaded the ASP.Net AJAX 1.0 Beta 2 bits and got the Update panel working nicely. Then, I was onto the autocomplete textbox. I couldn't find it anywhere. I installed the AJAX Control toolkit from CodePlex but it wasn't there either. I just wanted to find and use this control:

<asp:AutoCompleteExtender ID="AutoCompleteExtender1" TargetControlID="txtSearch"
runat="server" ServiceMethod="GetCompletionList" ServicePath="~/Search.asmx"
MinimumPrefixLength="1" />

It wasn't in any of the assemblies. Then, through some forum, I forget where, I saw a reference to the ASP.Net 2.0 AJAX Futures November CTP. Ack! There is was.

This "futures" CTP installs in the same folder as the ASP.Net AJAX 1.0 Beta 2 bits so I'm not sure what was overwritten; I'd like to come back to this some day.

C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025

The important assembly to get is:

Microsoft.Web.Preview.dll

It seems that they've moved the autocomplete feature out into this assembly for Beta 2. Hopefully this will save you some searching if you need the feature too.

Wednesday, December 06, 2006 11:19:53 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Thursday, November 30, 2006

You are hovering over bacon and eggs I've developed this phenomenal practice recently of rising early with The Wife (as a high school math teacher, she gets up wicked early) and donning my ratty old pair of Uggs, I make some bacon & eggs and a pot of coffee while I read the newspaper.

I usually come away with two or three great stories that I can use for conversation when I find myself in front of a non-developer.

Today, I came across this gem in The Oregonian:

Caught in a web of stupidity
In a recent Edge, we told you that the approximate time it would take you to visit every site on the Web if you spent one second at each one was 1 day, 9 hours, 46 minutes and 34 seconds. See, we were so busy visiting this one Web site (hey, we thought they meant TURKEY breasts!) that we left out a line. The actual figure is 3 years, 2 months, 1 day, 9 hours, 46 minutes and 34 seconds, according to The Chicago Sun-Times. Hey, Persnickety McPickypants, we were only off by 3 years and 2 months!

Huh... After thinking about it, I suppose they mean just the home page of every site. Even so, its easy to see how a large array of computers can successfully scan the entire web quickly. Then, it occurred to me the truly hard part was returning "the right" results quickly on a search result page.

Thursday, November 30, 2006 4:42:19 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, November 29, 2006

Last weekend, during the holiday break, The Wife turns to me and says, "What do you think of getting a GPS device and taking up geocaching?"

I was shocked. I had been secretly coveting the Garmin Nüvi ever since Scott Hanselman talked it up a while back. I was very subtle in my hints, but I finally got it across that I was only interested in the Nüvi.

Well, The Wife is a keen lady indeed on the Google search engine. She discovered that the Nüvi is not recommended for geocaching; its much more suited for use in the car or walking around a tourist town with its (relatively) large screen size and feature set.

There's another set of GPS devices that are better suited for geocaching. The GPSMAP 78CSx series has a better waterproof standard of IEC 529 IPX7, a built in compass, altimeter, celestial information, tide prediction and other things are just meant for folks out wandering around in nature. There are several other sets of GPS units such as marine and aviation. I think my brother has a Garmin in his plane and my other brother has one in his boat.

I was bummed, but glad that we were going to purchase the right device. I'm still keen on the Garmin Nüvi though. :)

My day job involves building websites for companies and giving them a fantastic place to promote their brand, product or service so perhaps my bar is a little higher than some, but the Garmin website blows. The site has a semi-decent Flash piece to promote one part of the site, but over all, its a typical 1998 experience. The user interface could do well with a little bit of polish and take advantage of some usability factors we (the web development community) have learned over the past few years.

With the holiday weekend and all, I did extensive checking online for retailers and let my fingers to the walking. There's a wide range of phone experiences; from appallingly bad all the way to very helpful. REI was one of the best phone experiences, plus they had one in stock!

The Wife and I bundle up for the rain and head out to the local REI to purchase our new GPS device. REI held it for us at the customer service desk, so I just walked up to them and they handed it over. They provide fantastic service and I highly recommend them for your outdoor and sporting needs. During checkout, they asked if we were members and The Wife recalled that we signed up when we lived in Chicago. I had no idea. That ended up saving us nearly $50 off the price! Booya!

We brought the device home and booted it up. It's very pretty and has a great layout of buttons and controls. Unfortunately the device didn't synch up with the satellites. We saw between 2 and 8 bars in varying heights, but they wouldn't fill in, which would indicate a successful initialization. We tried all sorts of things including a reinstallation of the software using the USB connection. We even drove out to the airport to assure ourselves of a wide open range. We got the most bars there, but again, they were not filled in. We left it outside in our backyard for about 90 minutes too, still nothing. I even drove up to Mt. Tabor and tried it there. Nada.

We bought it on Friday and now it was Sunday. I got in the car and headed back down to REI to exchange it for a new one. I went to the customer service desk and explained the situation. The nice fella gave me a store voucher, took the broken device and asked me to go to the GPS display and get another one (downstairs). I was filled with glee!

I bolted for the display. Too bad, they were out. I did have a quirky exchange with one REI staffer at the display though. I explain the problem to him and he retorts, "Did you initialize the device? Do you even know what initialization is?" I was a tad startled by his gruff questioning, plus I was really interested in getting the device to work. Perhaps I had forgotten something and I was merely a few minutes away from eternal bliss. Alas, no. Everything this jerk explained was something I had already tried. I've written him off though; I still really like REI.

At this point, I could either ask REI to order another device for me, or I could try my luck on the broken device. I decided to go back to the customer service desk, retrieve the broken device and try some more for the remainder of the Sunday. With no luck, I phoned Garmin during the week and explained the situation. The fella was awful nice on the phone and said, based on my description that the device was probably broken. Since the bars appeared at varying heights, the antenna was probably fine and it could "see" the satellites, but it was having problems reading packets from the satellites. He said to return it to REI and grab another. Ha!

The Wife and I went back to REI today and exchanged the device. Fortunately they received a shipment recently, so they had a device available for us immediately. Yay! Plus, they were super nice to us. The Wife was immediately skeptical, so we walked a few blocks down to Jameson Square to test it out. It just took two minutes and we were locked in! Yay!

REI also gave us a $20 gift certificate for an Introduction to GPS Navigation Class. The Wife and I are looking forward to taking that for starters. I've been reading Patrick Cauldwell's posts about geocaching too. This looks like a great hobby to dive into.

Wednesday, November 29, 2006 6:29:24 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [1]  | 
 Monday, November 27, 2006

I saw this post on Jeff Atwood's blog about a new tool from SlickEdit, the makers of SlickRun; easily the most frequently used program on my laptop day-in and day-out.

The Command Spy
Whenever you click on a menu item or toolbar button in Visual Studio, you are executing what is known as a "command". Unfortunately, it's almost impossible to tell what command is linked to which menu items or toolbar buttons. The Command Spy monitors command execution and allows you to see exactly what commands you've run, how many times you've run them and what key bindings are used to invoke those commands. The main purpose of this tool is to allow you to learn what commands are bound to which keystrokes, so that you can work faster within the IDE.

I installed Command Spy over the Thanksgiving holiday. It totally rocks! Just run the VS.Net add-in while you're coding for a couple of hours and then take a look at your metrics. Command Spy will tell you how many times you've run a command without using the short-cut keystrokes. Its a great way to improve on your productivity.

Monday, November 27, 2006 10:48:29 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [2]  | 

I started using the RSS reader in Microsoft Outlook 2007.

I was using SharpReader for as long as I've ever had an RSS reader and subscribed to feeds. I really like having just one application running for my communications and work items (email, tasks, calendar, RSS feeds...). Its super easy to add a feed when you're visiting a web page too. I used folders quite a bit in SharpReader to categorize feeds, but I'm trying the "one big folder" approach for now in Outlook.

Sometimes, I got lazy and didn't open SharpReader on my laptop for a while. The posts would get way out of control. Sure, I could add it to my Start Up programs, but one of my quirks is to keep that list short, if not empty. Some weeks I even tell SQL Server to not startup automatically. Perhaps that's one of the old carry overs from living too long with too little RAM on a weak laptop.

Outlook 2007 as an RSS reader is nice, but I miss some of the basics, like identifying the URL to a blog I've already subscribed to. There's probably a way to display that information easily in Outlook, but I haven't discovered it yet.

To date, the most frustrating thing has been refreshing feeds. It gets joined at the hip with my email send/receive request. So, when someone comes by my desk in a general freak-out mode and asks how to solve a problem raised in a recent e-mail, I click on Send/Receive if I haven't gotten it yet. Now, thanks to the additional RSS feeds, I have to wait much longer as everything is updated. There must be a way to decouple these requests from each other in Outlook.

Overall, I'm very happy with the switch so far.

Monday, November 27, 2006 10:39:22 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [2]  | 

I've been using http://www.internetfrog.com/ for a few months now, but I read Doug Purdy's blog about http://www.speedtest.net/. I think this will be the new default speed test tool for me. Its awfully shiny.

Monday, November 27, 2006 10:31:03 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |