Equilibrium

Saturday, April 26, 2008

Time flies

A lot has happened since I last blogged; whoops. Let's see...
  • I had my birthday. It was pretty low-key and relaxing; I just took off work and played Rock Band all day, then played games with Travis and Steven in the evening.
  • Steven and I went to Las Vegas and met James and Nick there. It was thoroughly overwhelming, but don't worry; I didn't gamble a cent.
  • I've gotten myself completely addicted to Culdcept Saga. It's basically a board game for the Xbox 360 that involves collecting cards (much like Magic: The Gathering) and then using them in a game that is similar to Monopoly. At the end of each game, you win new cards (there are almost 500 different cards in the game, you start with a random deck). I think the combination of collecting something coupled with the different achievements to aim for (there are both achievements and "avatar parts" - clothing for your character that you get for meeting certain requirements during the game) is what has me really hooked on the game.

Friday, February 15, 2008

Coincidence

Today on the way to work I happened to listen to the song "Jumper" by Third Eye Blind. Shortly after getting to work, Steven asks me if I want to see the new movie "Jumper" tonight.

Sometimes things like this shake my belief in coincidence.

Tuesday, January 22, 2008

Dvorak

I've decided to teach myself the Dvorak keyboard layout. So far the tutorial I'm using has taught me the home row (aoeuidhtns) and some of the top row (,.pgcr). Hopefully in a few weeks I'll be able to type as fast (or faster) using Dvorak as I can with the standard keyboard layout.

Thursday, January 10, 2008

New year, new wheels

It's a new year, and I was in need of a new car after mine decided its life was over. I looked at Mitsubishi Eclipses, but the Mitsubishi dealers in Everett pissed us off, and the next closest dealer was in Auburn (30 miles is a bit far for me to drive just to look at cars). We ended up going to the Honda dealer in Bellevue and I knew that I had found a car I liked right away. It's a 2006 4-door automatic Civic, with leather seats, a sunroof, and perhaps most importantly an auxiliary audio input jack for my MP3 player (I have strange priorities). I took a couple of pictures, here's one:

Tuesday, December 25, 2007

Winter travel, Kapitel zwei

After our flight being cancelled for no apparent reason and us rescheduling to fly to Kansas City, we got a notification that Steven's ticket was being refunded. This sounds like a good thing, but it turns out to mean that they only rescheduled my ticket (despite us being booked together originally). We called back and had to argue with the representative that she should at the very least get us the ticket at the original price. When we got to the airport, Steven had a standby ticket. The only good news from this story is that Steven got the second to last seat on the plane...in first class. Since we were travelling together, I got moved up with him, and we made it to the wrong city a day late.

Sunday, December 23, 2007

Winter travel

Apparently Wichita got a good deal of snow yesterday, and United decided that it would be a superb holiday trick to cancel our flight that was supposed to get to Wichita at 11 tonight. I received no e-mail or phone call that both of my outbound legs were rescheduled for tomorrow to arrive in Wichita at 9 PM. Fortunately, my parents knew the weather was bad in Wichita and checked the status this morning and saw that they were canceled. Steven called and found out that there were no available flights to either Wichita or Kansas City today. Since we were going to be going to Kansas City eventually anyway, we managed to get on a flight tomorrow to KC.

At least we didn't end up driving 30 minutes to the airport, trying to find satellite parking, and then showing up at the terminal only to find out that we had to come back tomorrow.

Saturday, December 15, 2007

The benefits of meticulous metadata

When I tagged my pictures on Flickr, I tried to be pretty specific about including information about where they were taken. I tagged them with the names of places, and geotagged most of my pictures. I guess someone found that information useful. About a week ago, I got an e-mail from an online travel guide publisher called Schmap. They wanted to know if they could use my picture of Lake Union in their guide. I was torn about agreeing...on the one hand, they weren't offering any compensation. On the other hand, I'm flattered that they liked the picture and were willing to use it. In the end, my ego won out, and they've used the picture. I'll keep this tactic in mind in case I ever want to put up a website and need lots of pictures but don't want to pay anyone for them.

Sunday, November 25, 2007

Priced to sell

Steven and I went in a knickknack store in the Bellevue Galleria yesterday because we were early for Beowulf. They had lots of nice Christmas ornaments, but none that were priced so that I would buy them. Then, we wandered into the non-Christmas section. I noticed this very cool looking cup made of a colored glass mosaic with a copper lattice between the glass. I guessed it was probably $50-$100. When I saw the price tag was over $1000, I was shocked. I decided not to pick anything up after that. Then we saw an antique painted dresser...$14,000. Who buys that kind of stuff?

Sunday, November 11, 2007

Still alive

I'm still hanging on. Work's been rough, but Steven and I got an XBOX 360 with a couple games to make everything OK. It's amazing how fast time can fly with some good games; I'm on a month-long Oblivion/Guitar Hero II/Eternal Sonata high.

Tuesday, October 16, 2007

Rejected icons

When I was making the chevron buddy icon (bottom right in the previous post), I decided to have some fun with vectors. Unfortunately, the resulting icons turned out a little bit too...gay? This is fine, of course, but they were too colorful for me to ever use as a buddy icon.

Rainbow Icons

Iconic

My esteemed colleage and I were discussing buddy icons, so I decided to upload all of the ones I still have (which covers roughly the last two years). I know it's not quite the impressive collection he has, but enjoy it none the less.

Buddy icons

Saturday, October 13, 2007

Poll

Yesterday I went through the semi-regular ritual of reinstalling Windows on my work machine. Somehow, my copy of Excel.exe became corrupted and wasn't being recognized as a valid Win32 executable. I tried repairing and uninstalling Office, but both actions crashed the Office installer. While I was backing up my files, I realized that I actually enjoy wiping everything out quite a bit. I get to have a fresh machine, where everything is organized and pristine. Even more, I know that it's pristine because the entire drive has been wiped clean. If I were to go through all of my files and delete the old downloads and junk that's accrued on my desktop, and organize my enlistments to only have the enlistments I'm actually using on my machine, I would still have that nagging doubt that somewhere on my machine there are unnecessary files and folders laying about, destroying perfect order. Instead, I back up files from certain locations (like my desktop and documents folders) to a sandboxed "backup" folder on another drive. If I ever find that I needed a file from my old machine, I go look for it there (I rarely do such a thing). Once that backup folder is a year old, I just delete everything in it. In addition, if I were to try to get Office uninstalled by deleting registry keys so that the installer thought there was no more Office on my machine, I would have that horrible feeling that at some point, those deleted registry keys would cause instability in my operating system.

So, are you the kind of person who will wipe a machine clean for the joy of order, despite the inconvenience and time-sink of having to install software again? Or are you the kind of person who prefers to try to fix the machine at all costs, even if it means doing dirty things like deleting registry keys to get applications uninstalled?

Saturday, October 06, 2007

Flat tire

While riding to work on Tuesday, I saw one of my coworkers on the side of the trail with his bike upturned. He had a flat tire and had put a patch on, and was having trouble getting it pumped up with his hand pump, so I stopped to help him. I don't have a patch kit or a hand pump, so I thought, "whew, glad this didn't happen to me, but I should probably get a flat repair kit soon". Of course, the very next day I had a flat tire about halfway between home and work in the morning, and of course I hadn't gone to get a repair kit yet. To make matters worse, I noticed that the brand new, less-than-a-week-old flashing reflector I got had snapped off. Fortunately Steven was kind enough to come pick me up and take me to work.

Software understanding

Wow, it's been a long time since I blogged. I've been hard at work on some fun WPF stuff. I'm getting to the point with WPF where I almost daily hit edge cases or bugs where it is very difficult to comprehend what the root cause is, and if it's my fault or the platform's fault. One bug I hit recently turned out to be two bugs conspiring together to make me miserable. The first bug is widespread in WPF: controls self-setting a value locally on a DependencyProperty (using SetValue) takes precedence over values coming from bindings targeting that property. Some controls use SetValue internally to set the value of a property, which can lead to bindings on that property not working. This particular bug happened to me, but only in a very weird case. If I had a non-default CollectionView bound to the ItemsSource of a TabControl, then my binding on the SelectedItem property didn't work. However, using a default CollectionView worked fine. It turns out that internally, the IsSynchronizedWithCurrentItem property defaults to different values if a default or non-default CollectionView is the view the ItemsSource is set to. Also, the ItemsSource property is applied first from XAML before the SelectedItem and IsSynchronizedWithCurrentSelection properties because of the order they're declared in (which is based on the order that static constructors run, the 2nd bug). In the non-default CollectionView case, the TabControl would set the SelectedItem internally using SetValue because the default for IsSynchronizedWithCurrentItem is true for non-default CollectionViews. Then, my binding was applied to the property (which never actually took precedence). I couldn't force the binding to happen first (or for IsSynchronizedWithCurrentItem to be false) because of the ordering of the property evaluation. Ever weirder, it turns out that this problem only happened to me because I used a Menu first in my Window's XAML. Menu is an ItemsControl, but not a Selector. TabControl is both an ItemsControl and a Selector. Thus, the ItemsSource property was initialized first (from Menu), then IsSynchronizedWithCurrentItem and SelectedItem were initialized from TabControl.

The solution? Well, I had two choices. I could either try to influence the order of static constructors, or clear the locally-set value on the TabControl after construction. I opted for the latter; trying to make sure that Selector's static constructor runs first inside Visual Studio itself would not be easy, and would be very fragile. Of course, calling ClearValue(SelectedItem) in a Loaded event handler is also pretty strange, but at least it's much easier to control and remove when the bugs get fixed.

Saturday, September 15, 2007

Bicycling

I've been riding my bike to work lately. It's about 10 miles each way, so it's a fairly significant distance, and takes me about an hour. I love riding on the Sammamish River trail; it's quiet, flat, and beautiful. Unfortunately, that's the opposite of the rest of the ride. There are some pretty substantial hills in Redmond and Kirkland, and I have to go up a monster one each direction. The streets that I can conveniently use to get to the trail are pretty busy, and in some places don't even have sidewalks or bike lanes. When there are sidewalks, they're extremely annoying to ride on because of the huge dips at driveways, roots, and low-hanging foliage.

Anyway, my overall impression is that riding to work is much better exercise and more enjoyable than driving, at the expense of a bit more time. If you figure that I would have spent that time otherwise exercising anyway, then it's definitely worth it to ride instead of drive. Sadly, the days will be getting shorter and colder, so I'm not sure how long I'll be able to keep it up. I refuse to ride in the dark.

Sunday, September 09, 2007

Typelepsy

Today, I have been having the strangest time typing. I keep typing parts of words that I'm about to type. For example, I'll add in three or four letters from the next word I'm thinking while I'm typing, realize that I made a mistake, and have to backup and retype the word. It's really frustrating because it's killing my ability to type quickly. In fact, while typing this post I've made about 20 mistakes. Maybe it's become a self-fulfilling problem, and just typing about typing incorrectly causes more mistakes.

Tuesday, September 04, 2007

More marketing madness

Today we got a gift from the lady at our insurance agency. The special treat? Some mailing address labels printed on label paper. Wow, what did I do to deserve that? Did they determine that mailing people address labels made them want to buy more insurance, or maybe just not switch companies? I really don't understand marketing.

Veritas

What's the right thing to do when someone asks you a very personal question, and answering honestly will hurt them deeply? Is it alright to tell that person a lie if it spares them lots of suffering? Or is it best to tell the truth always and let the person come to grips with it themselves? It seems like for small things, being brutally honest is sometimes not the best strategy. A hypothetical example would be not telling a good friend that you'd rather play a new video game than talk to them, even if it's true. Maybe even "little white lies" like this are wrong; I don't know. I do know that convincing myself to tell a "big white lie" is much harder.

Wednesday, August 29, 2007

Identity implosion

Today I got spam addressed from "Matthew Johnson" to my work e-mail address. Inside the e-mail I was addressed as "Matthew Jones", who we've previously established as the old owner of my alias. I swear, I'm one straw away from changing my name to a GUID.

Wednesday, August 22, 2007

Identity collision

A few weeks ago, I was informed that I wasn't receiving an invitation to a birthday party sent by evite.com. Apparently someone else registered my work email address with the site already. I didn't really think anything of it and just had the person send me the invitation via e-mail.

Today I was asked about another birthday party that I hadn't heard of. Surprisingly enough, someone else also used evite.com. Annoyed, I went to the site and used the "forgot password?" feature. Interestingly enough, evite.com sends you your original password in plaintext. So now I have some guy named Matt Jones's password for evite.com. I went to log into the site, and it turns out the guy has 9 e-mail addresses associated with his account, and the invites have (presumably) been sent to another address. I decided to be nice and remove my work e-mail from the list, and informed the guy at one of his other 8 e-mail addresses that he should really reset his password. Hopefully he actually still owns the e-mail address I used.

Failure points:
1. Microsoft, for reusing e-mail aliases.
2. Evite.com, for stupidly keeping passwords in plaintext.
3. Matt Jones, for not removing e-mail addresses he no longer controls from accounts which can use the e-mail address for completely controlling the account.

Monday, August 20, 2007

PII

I was informed that linking people's full names to their blogs may reveal more personally-identifiable information than some people want associated with their blogs. I have therefore demoted all names to first-name only. This has been a public service announcement from yours truly, who has no problem associating his full name with anything because it might as well be "John Doe".

Friday, August 17, 2007

Quality control

This morning, I pulled out a syringe to make my lunchtime shot and found that the plunger was missing the deployment cap (I made those last two terms up). In all my 13 years of being diabetic, that's the first such syringe defect I've seen. At an estimated average of 3 syringes per day (I used to take 2 shots a day, now I take one per meal/large snack + 1 at night), I've probably seen around 14,235 syringes. I'd say 1/14,235 isn't a bad defect ratio. If Dr. Scott Swenseth were reading this, I'm sure he'd have something to say about six sigma, kanban, or poka yoke.

Thursday, August 16, 2007

Shol'va

Steven and I have been rewatching Stargate SG-1; we're currently on the 3rd season. Just watching 3 or 4 episodes a night has got me thinking random Goa'uld words that are often repeated, kind of like having a song stuck in my head. Similarly, after reading the final three Harry Potter books, I found myself thinking some of the commonly-used spells in my head. I suppose these words are unfamiliar and yet used so frequently that it's somewhat natural that they surface in my thoughts.

Left hand

I just found out from our team's admin that drafts of our annual commitments are supposed to be due this Friday. This was the first notification I received; I haven't spoken to my manager in weeks, and I have no idea what I'll actually be working on for the next year. The saying about the left hand not knowing what the right is doing comes to mind.

Tuesday, August 14, 2007

HackWND

Having done a fair amount of Win32 development in my past, I'm usually not surprised by the kind of annoyances that come up in Win32 APIs. For example, there are often several ways to do roughly the same thing. For example, you can use the GetWindow function to get the next window in the z-order, or you can use GetNextWindow. You can also use GetWindow to get a window's owner, or you can use GetParent. There are also a plethora of the "ex" methods, such as CreateWindowEx and RegisterClassEx, which were written to provide new functionality for new versions of Windows.

Having noted these things, I was completely stumped with the simple task of creating an HWND which did not show up in the Windows taskbar. I though that surely one of the extended class styles available for RegisterClassEx or CreateWindowEx would cover creating top-level windows that don't show up in the taskbar. Finally, having read all of the descriptions and found nothing, I did what any reasonable developer would do and searched the Web. The first result I found was this article by Chris Maunder, one of the co-founders of CodeProject. His technique is to create a top-level window that isn't shown, and then create an owned window whose owner is the hidden window. A bit skeptical that there wasn't a better way to do this, I decided to look in Reflector at the System.Windows.Window class's ShowInTaskbar property. It turns out that WPF does the same thing, and creates a hidden owner window if you set ShowInTaskbar to be false. This appalls me so much; I find it hard to believe that it was by design that one can achieve top-level, taskbar-less windows this way. In all likelihood, there was no way to create a taskbar-less window until someone discovered this hack, and now it's become a permanent feature of Windows until the end of time.

Monday, August 13, 2007

Impressions

As a completely scientific study of the readers of this blog, I'd like to perform a test. Looking only at the shirt in this picture, please post the first noun or adjective that comes to mind describing the shirt (Steven, you can't respond for at least a week).

Friday, August 10, 2007

Dangerous showers

I bumped my knee on the shower door while getting into the shower today. Now it's all swollen and doesn't like to bend. I'm pretty sure it's not permanently damaged, but man, a damaged knee would be pretty horrible, especially in our house of 4 different half-levels.

Monday, August 06, 2007

Banana pancakes

In case you hadn't caught on, I'm done with posting daily pictures. Hopefully they were enjoyed; I'll of course continue posting pictures as I take more.

I decided a few weeks ago that banana pancakes sounded like something that would be delicious. Unfortunately for a few weeks ago, I didn't have any overripe bananas. Fortunately for today, I had two. I made a half-batch of the "recipe" on the Bisquick box ("recipe" being used lightly since it's just eggs, milk, and Bisquick) but also added two mashed-up bananas. Turns out two was probably excessive, but the result was delicious. I think I should have used slightly less of the other wet ingredients, though, as the pancakes were quite moist. Afterwards I Googled for recipes and found out that not only are there many, but Banana Pancakes is a song title too. Who would have guessed?

Wednesday, August 01, 2007

Amazing view

Today's (belated) picture: The incredible view of Washington from the summit of Mt. Pilchuck.
Cascades

Monday, July 30, 2007

Frightening dentists

While going to the bank today, I saw a sign near the edge of Microsoft's campus:

"Now accepting patients at Megasoft Dental.com"

I think that's about the most horrifying name for a dentist. Online universities are pretty scary, but dental offices that sound like they're online are in their own level. Ones that sound like they stole their name from a bad 1980's Sci-Fi movie probably just shouldn't exist.

Sunday, July 29, 2007

Esther L. Kauffman Academic Residential Center

Today's picture: The place I called home for 4 years in Lincoln: Kauffman.
Kauffman

Saturday, July 28, 2007

Obsessive-compulsive

I checked Last.fm and was appalled to realize how little I've actually listened to music on my computer lately. I generally listen to almost an entire album worth of music while commuting every day that doesn't ever get "reported" to Last.fm, and so I fear that my music tastes may not accurately reflect what I've been listening to. This horrifies me so much that I will probably start recording what I listen to in the car and then submit it to Last.fm when I get home.

Olympics

Today's picture: The Olympic Mountains viewed from Hurricane Ridge.
Olympic Mountains

Friday, July 27, 2007

Jericoacoara

Today's picture: Sunset on the dunes in Jericoacoara, Brazil.
Sunset over Jericoacoara

Thursday, July 26, 2007

Spire

Today's picture: What's more Seattle than the Space Needle?
Space needle