Sunday, January 27, 2008

swollenface Yep, that's my head as of last weekend. I had my two remaining wisdom teeth extracted by Dr. Bell at the Head & Neck Surgical Associates in NW Portland, Oregon. Le Wife says it got a little larger than this at the peak on Sunday morning.

I had the other two extracted in my twenties back in Chicago; a truly horrible experience. I was naive for picking a dentist arbitrarily from a listing and this particular dentist was an idiot for trying to do it. He said he could take all four out without much of a problem. I hadn't gone to a dentist in years and it seemed like a reasonable thing to do; I was in my twenties, so it was time to get the wisdom teeth removed. After multiple hours of pain and agony, he removed 1.5 teeth out of four total. He packed me full of gauze and handed me the address of a surgeon. I drove my corvette to the other office and the surgeon finished taking out the second tooth in about five minutes.

So, I waited about ten years or so on removing the other two. When the Wife and I moved to Portland, we found our dentist, Dr. Halvorsen, right away via referral from a friend and we've been keeping up reasonably well with six month cleanings.

At my last cleaning, I decided to have the final two teeth removed. I knew it would take some time to recoup and the baby is coming in late April, so I made plans to have the procedure in early January and be done with it. They recommended Dr. Bell's office for some super impacted wisdom teeth.

Dr. Bell and his staff did and outstanding job. I had a consultation and scheduled the procedure for about two weeks later. They were friendly and efficient. I arrived at the office, got into the chair, chatted with the nurses, got prepped with an IV, received some drugs, and was sitting back in my car in about 60 minutes total. I nearly didn't believe him when Dr. Bell said the entire procedure would last between 60 and 90 minutes during an earlier consultation.

I *felt* like I could drive home, and the Wife just laughed. I knew I couldn't but the drugs didn't make me feel wobbly or anything, they just targeted the pain.

That night I was back on the computer working on some code. I was prescribed some oxycodone and ibuprofen for the pain and swelling and thankfully, it didn't interrupt my coding much; albeit I might have been a little slower and more *creative*.

The pills worked good as long as I kept my belly full of food. I found out that I got nauseous if I didn't eat enough food with the pills and/or I would get an stomach ulcer feeling. After I figured that out, it was much better. I probably can't go to the gym for another two or three weeks, so this isn't going to help my gut much.

Yet, I'm glad I timed the procedure with the MLK holiday because this past week stinks with pain management and thinking really hard about code. I think I only snapped with cranky responses a few times during the four day work week. :) Its much better to work alone when you're in pain. I figure another couple of weeks I'll be good as new, er... good as a thirty-four year old new guy.

Sunday, January 27, 2008 7:37:46 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, December 22, 2007

Portland Trail Blazers Le Wife and I have tickets to some Portland Trail Blazer games this year. Last night was the first one we attended this season. It just so happened to be an opportunity to keep the streak going and make it ten wins in a row.

As a gesture of respect, I dropped Le Wife (who is now 21 months weeks pregnant) off right in front of the stadium and I parked the car. That was harder than I anticipated. I guess thousands of people congregating on a single place do tend to make traffic and parking more difficult.

Word to the wise — parking in the under the Oregon Convention Center for $6 and walking 200 yards north is very handy. Its deceptively close; walking under I–5 makes it seem farther than it really is. Plus, this lot wasn't crowded 20 minutes before tip off. I might think twice about parking there in a pouring rain, but it was a pleasant walk for me; a nice brisk evening.

The game went right down to the wire with neither team making it farther than 8 points ahead (if they did, it wasn't for very long). In the end, our guys managed to hold off Allen Iverson and Carmelo Anthony to make it ten wins in a row. The packed stadium was booming, I'm looking forward to the next game!

At one point the crowd started cheering really loud — just before the end of half time. Up on the big screen above center court was a live shot of Greg Oden sitting behind the Blazers' bench in a sport jacket and white button up shirt. He didn't see the camera and looked around quickly to see the cause of the cheers. Then he looked up at the screen above center court and realized what was going on. He grinned wide and looked down at the ground in the biggest "aw-shucks" moment I've seen in quite a while. Portland is going to love seeing this guy on the court next year!

sergio-rodriguezAnd perhaps the biggest boon of the game — bobble-head night! I am now the proud owner of a Sergio Rodriguez bobble-head doll. There's a bright warning on the side of the packaging:

WARNING: Contents in box may make a no-look, behind-the-back pass without warning.

events | fun
Saturday, December 22, 2007 2:17:40 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [1]  | 
 Tuesday, December 18, 2007

LINQ is an acronym for Language-Integrated Query and a new feature in v3.5 of the .Net Framework from Microsoft. This new version of Microsoft .Net reached RTM status a couple of weeks ago — this framework is chock full of brilliant things I can use to improve my efficiency and effectiveness on daily tasks here at Pop Art.

As one of my favorite features, LINQ helps me write data-driven application even faster than what .Net 2.0 brought to the table. A common example starts with launching Visual Studio 2008. After dragging a collection of tables from a SQL Server database onto a surface in my solution, I can see a visualization of the columns in the tables as well as the relationships between them. Click the following thumbnail to see a larger image.

database schema

Next, I start writing data access code directly in my C# program as opposed to switching languages and writing in the T-SQL language. Visual Studio gives me Intellisense here too; as I type the name of a table and click the period key, all of the columns in the table appear where the cursor is located. Big time saver. Huge! I'm certain that I didn't misspell a column name and that my code will compile.

intellisense is beautiful

The syntax for LINQ in a C# program is very similar to the T-SQL language, which is a "set based" language. LINQ statements are compiled, just like the rest of my C# code. The first thing someone well versed in T-SQL will notice is that the columns normally specified in a SELECT query are at the end of the LINQ statement instead of the start as in T-SQL. The idea is that you're articulating your constraints at the start of the LINQ statement and then pulling out the fields you need at the very end.

a LINQ sample

Behind the scenes, LINQ is using the relationships expressed in the database to generate T-SQL scripts on the fly. This is a clear line of demarcation for LINQ. If you're using stored procedures exclusively for database access, then LINQ isn't going to buy you much. You'll still get Intellisense inside Visual Studio and you can specify an existing stored procedure instead of using the auto-generated SQL, but you're giving up a lot of acceleration tools. Perhaps more than you're getting in return.

LINQ really shines in multiple table joins and aggregation. The following two blocks of code show a query is performed in LINQ and its equivalent T-SQL script. The query retrieves product information from three tables where the list price is below a given amount and a sub-category name exists. If you go the T-SQL route, you will still need to write some C# code to call your database query.

Which of the following versions would you rather author and support?

LINQ Version

a more complex LINQ statement

T-SQL Version

an equivalent T-SQL statement

MSDN is a great online resource for developers and they really hit a home-run here. They have a page with 101 LINQ samples. This is my preferred way to learn when I already know the surrounding technologies and I want to fill in a specific gap. The page categorizes several ways of retrieving and iterating over information.

Tuesday, December 18, 2007 5:36:23 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Sunday, December 16, 2007

mocha master I think you're a good person, but I can't be with you. I have to break up. Sure 2007 was a fun year, galloping around the estate with that thick scent of delicious coffee in our hair and eager for the new dawn of a dark roast. We had some good times. The Techni Vorm label made me feel European too and I tried to embrace it, I really did. Its not you, its me.

virtuoso It wasn't easy with your friend, Virtuoso, the coffee grinder. He never made it simple for us. I don't think he ever really accepted me. What was up with that static electricity? It let forth a brilliant shower of charged coffee grounds after each use. I'm mean really, how can he expect to keep someone around? Sure his sleek exterior and large bean reservoir would make anyone grin, but I've got to think of myself sometimes, I have to ask, what's in this for me? It was just too much of a mess to clean up after every grinding session.

Mocha Master, why did you start spilling over? At first, I was willing to blame it on the other people you saw. There were several accounts sent around on how to properly make coffee. But time and time again, you spilled when no one was looking. The final straw was when you spilled yesterday for me. It was me Mocha Master! I was here all alone with you and yet you forsake me. How could you do it? You know the level of coffee grounds in there was well within the accepted norms. Somehow you clogged up and spilled over the counter just like all of the times before. I have to give you up.


mr coffee Hello Mr. Coffee, its been a while. I know I've been a bad friend and traipsing all over the coffee producing regions of the globe with my European friend, but its over, I swear.

I see you've gotten some new buttons and they look great, all shiny and in different colors. I've even started using a carafe so you don't need to worry about burning the coffee and ruining the flavor.

starbucks grinder Oh, and hello little grinder! How have you been? I sure do miss you. Sure, you're from Starbucks, but that's ok. You're a good little guy and you don't have any static electricity. We love large machines and small machines alike. Sometimes you're abused and blamed for a mess, but its far and few between and I know you mean well. You can't fight gravity! Plus, you can grind your beans in 10 seconds flat. I'm going to enjoy seeing you around.

Mr. Coffee, I want you to know that I'm ready to get down to work and you won't have to worry about any more whimsical adventures from me. We have a simple agreement in place; you make coffee and I'll drink it. We don't need any drama in our lives around this matter and neither of us wants a high maintenance relationship. I'm glad you were willing to come back. I love you Mr. Coffee.

fun
Sunday, December 16, 2007 2:15:49 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Thursday, November 29, 2007

I was fortunate enough to pop up to a special event on Silverlight at Microsoft in Redmond, WA today. Mithun Dhar, Laurence Moroney, Arturo Toledo, Adam Kinney, Ernie Booth and Jesse Liberty gave us some sweet tips on building apps and organizing a good workflow between developers and designers.

Arturo is an awesome graphical designer. Oddly, or perhaps not, I liked his presentation the best. He made the Expression products fly and gave me (a developer) good tips on working efficiently with my design team. Jesse was a close second with his fundamentals presentation - he really clicks well with developers.

The crowd was mixed with about 60% developers and 40% graphic artists. I saw the ScottGu blog post this morning announcing that Silverlight 1.1 is now named Silverlight 2.0 - between that and the hints dropped at today's meeting, it feels like Silverlight is getting ready to explode. I think I'll still remember this day very well in three to five years.

Thursday, November 29, 2007 2:53:08 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, November 28, 2007

http://www.justsayhi.com/bb/html_quiz

I forgot some easy ones like <div> and I thought I typed <fieldset> because I also got <legend>, but a respectable score; maybe? ScottV got a couple more than me.

fun
Wednesday, November 28, 2007 12:23:08 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

I got a favorable message, so I reckon its not all that bad.

http://www.lhotka.net/weblog/MagenicWantsYouThisTimeWithAQuiz.aspx

After all, Rocky got an 84. I think I rocked most of the ASP.Net questions, but the smart client stuff and multi-threading is a little foreign to me.

What did you get?

Wednesday, November 28, 2007 12:07:19 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, November 24, 2007

Under ordinary circumstances, all three of my blog readers know that I don't like playing blue. Yet sometimes, it is the only possible response.

This is to the 1998 Honda Civic Headlight Replacement Technical Writer:

You Suck.

I'm no mechanic, but I have replaced my car battery, and I'm generally aware of what goes on under the hood. Plus, I'm a good reader. I can follow directions. In my older cars, the bulb was encased in the complete housing. A few screws and a plug-and-play later was all it took. Not so today. All you get at the store is the actual bulb. Much smaller and easier to ship.

The following images show the 1.5 page description of how to replace a light bulb in a 1998 Honda Civic.

The instructions for headlight replacement begin on the right side of the following page. The author notes some good points to understand before tackling the job.

civic-headlight-p185

Then, it gets into the meat of the job with a full page shown in the following image.

civic-headlight-p186

As you can plainly see, at no point does the author state the following truth:

If you are reading this manual, then your best course of action is to return it to the glove box and drive to your nearest Oil Can Henry's location. Request a bulb replacement and happily pay the fee knowing that (a) you didn't have to do it (2) you didn't break anything; aka, less swearing and (iii) the delta between the cost of the bulb at the NAPA auto part store and what you paid at the shop are negligible.

And for that malfeasance, this technical writer sucks. It is my opinion that anyone replacing the driver's side headlight in a competent manner would not need to resort to the manual. For if they did, it would be a clear indication of the pain to come.

For starters, a light source for working under the hood is a good idea. I used one of these pod lights. Press the light to turn it on and off. They're small and nimble.

 Light Source

So here's what we're dealing with. The drivers side headlight sits squarely in front of the power steering reservoir. The following image shows my finger on the reservoir. Its connected by one hose on each side and is seated on a small cradle. You can already begin to see the terribly small spaces we're about to engage.

Power steering reservoir

Just from the previous photo alone, you can see how the designers failed with this bulb location on the 1998 Honda Civic. Per the instructions, I am to lift the power steering reservoir out of the cradle and push it aside so I can gain access to the bulb housing. Those two hoses that attach to the reservoir aren't too keen on movement. I finally ended up disconnecting one of the hoses and stuffing it with a rag to stop the flow of power steering fluid to my garage floor. There was quite a bit of cussing to just reach this state.

Now that I had the reservoir propped up and out of the way and the power steering spill slowed to a slow dribble, I could being the real work. The following photo shows an overhead view of the bulb housing and my light source nestled into a good crevice.

Driver side headlight

Next, I need to pinch the tabs of the bulb housing to release it. This is very important, so you would think that the book would do a good job of describing where they are and what they look like. Not so. The tabs are nearly invisible, even with great lighting. They're about the size of a small pea on each side as indicated in the following photo. Before learning this, I cracked the plastic housing on the bulb housing with the pliers. Go me!

Bulb Housing and Tabs

After the bulb housing is removed, the rubber seal and wire latch can be removed to produce the following item of grief - a blown out halogen bulb. I bought a new one at NAPA for $8.00

Expired Halogen Bulb

When you're wrestling with the wire that provides a constant pressure on the bulb housing and keeps it in place, be careful not to snap off the little plastic tab that hooks onto the wire; that's bad. Grrrrrr.....

Headlight Stabilization Wire

Finally, I drove (the other car) to the NAPA auto parts store (again) and purchased a small amount of power steering fluid. When I arrived, the very nice man behind the counter saw the section I was looking and advised me on a good brand of leak sealant. I explained that I actually wanted power steering fluid. Sizing me up accurately, the man tilted his head and asked why I wanted power steering fluid. Evidently, I didn't pass muster. I explained that I had spilled some quantity onto my garage floor when I was replacing a headlight. At that point I must have passed some threshold of the "i-know-what-i'm-doing" home mechanic or the "complete-idiot" home mechanic. He was nice enough to stop the inquiry there and saved me a little face. So for $3.75 I left the store with a some power steering fluid and a small funnel to refill the reservoir.

So, in summary, this experience was an absolute unnecessary pain in the ass. I realized the folly of my plan about one-third into the debacle and kept thinking of reasons that I should just fold up now and waltz in to the nearest Oil Can Henry's to stop the suffering. Yet, I persisted and now I have two functional headlights in my car, and one extra piece of wire in my garage.

fun
Saturday, November 24, 2007 10:10:42 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [5]  | 
 Wednesday, November 14, 2007

I'm installing DotNetNuke v4.7 and I scroll to the bottom of the standard page that I've seen many times before, when lo and behold, I come across this for all to see!

dnn-install

Everyone who installs a brand new version of DotNetNuke gets to see a tiny photo of me on the cover with Shaun Walker. Sweet!

Wednesday, November 14, 2007 4:08:11 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [1]  |