Lunch beans

We found a Qdoba a few stores down from the stand-alone Starbucks. Just a few minutes from work. Queso burrito and grande soy latte are pulling my brain in opposite directions, but that’s all part of the fun.

Does anybody know how to give links into Google Maps? I’m currently too lazy to experiment.

Visual C# 2005: A Developer’s Notebook

O’Reilly “Developer’s Notebook” series is consistently good, presenting significant subject depth in a relatively small number of pages. My favorite so far has been the Niel Bornstein and Edd Dumbill Mono book (I’ve also been pleased with the Hibernate and SWT books). Now, Jesse Liberty has Visual C# 2005: A Developer’s Notebook on the new features of Visual C# 2005, based on the C# 2.0 beta. Hopefully this will live up to the series name, and especially the quality of the Mono book.

Sin City, C#, and drink

I finally got around to seeing Sin City. I loved Frank Miller’s graphic novels when I read them way back in school, and I thought they did a wonderful job bringing the look and attitude to the screen. I’m glad I caught it in the theater, unlike some other films lately.

Virtual PC 7 is surprisingly responsive on my Powerbook. There is some neat Dock/Start menu integration, but I’ve yet to decide if I’m going to run Windows Quicken on my Mac with it.

I continue to enjoy developing in C# land, but I am finding Visual Studio to be lacking in a number of respects. Tools like Resharper make life a little better, but Microsoft has a lot of room for improvement. For those of you back in Java land, at least you can take comfort in the fact that Eclipse is still one of the best core IDE tools available.

Why can’t you declare abstract static methods in C#?

Diet Cherry Vanilla Dr. Pepper is pretty good, but not nearly as good as its name promises. Diet A&W, on the other hand, I like almost as much as regular Barq’s. I would drink my salary in Red Bull every day if they simply had a decaf version. As it is, I’m probably averaging less than one a day. I am ashamed to say my coffee habit has left me; without Moe’s, the ritual just isn’t the same.

Apartment babble

My mom visited last week, and I’ve almost made her promise to come back in a month or so (it had been two years since her previous visit). I had a spontaneous chromatic color idea for the cheap little bathroom box shelves in which I so happily display my DVDs, and she was sweet enough to spend a day or two actually painting the damn things for me. Luckily she didn’t bother herself with any other hard work while she was here, and left the unpacking to me.

I thought it cute that she named my upstairs neighbor “Shrek”. I’m not sure if it’s my neighbor or just bad construction to blame, but my vents and windows consistently rattle when they rush to the bathroom.

My nephew and his support crew were also able to visit last weekend, and I was able to grab some footage off of their new camcorder to play with iMovie and iDVD. I have to say iMovie is the real jewel in the iLife series, but DV footage can fill up a laptop hard drive in a heartbeat, and MPEG2 encoding for the DVD is an overnight ordeal.

I hate staining furniture, but my tables are looking pretty sweet. I also hate shopping for furniture, but I’m pretty sensitive to my envrironment, so I’m trying to put a little effort into things (I need a bed frame, but I’ve currently limited purchases to a living room chair and a bookcase). Once I go through a few more boxes and rearrange a few things, this apartment will be offiically moved into. Seriously, those of you who know me probably won’t believe I live here when I’m done.

Warning, keyboard rant will follow

I now use a Dell laptop on a daily basis, and for the most part it’s a great machine. It has as nice high-resolution widescreen display (1680×1050, at approximately the same DPI as a 14″ screen at 1400×1050), and with a gig of RAM performance is nicely speedy. I was even impressed that it offers a nub pointer as well as a pad.

However, the keyboard and mouse buttons are almost unusable. True, I spent the past four years using Thinkpad keyboards, which are widely regarded as the best in the business. But this thing is bad. Very bad, did-I-click-or-is-the-app-slow bad. I had a bit of luck with a little hack involving sticking paper under the buttons to decrease the distance you have to press, but it’s still bad. Easily the worst keyboard I’ve ever typed on, and that’s saying a lot.

So what to do? The pixels on the screen are easily readable when your eyes are about two feet away; move the laptop another foot away to stick a usable keyboard in front of it, and it’s way to small. So, now I understand why there is a market for laptop docking stations. When I’m at work, my laptop mostly stays closed in a docking station, and that snazzy LCD in the lid remains unlit.

I’d have to guess that less than 10% of the Thinkpad users I know ever use an external mouse, and hardly any use an external keyboard. Yes, they are that good. I’m frustrated by the trackpad on my Powerbook and usually use an external mouse when at a desk, but the keyboard is nicely responsive. Seriously, how much could Dell possibly be saving on these shitty keyboards?

Best run in over a month

Moving to a new city is hell on most parts of one’s life, but it’s especially bad for things that depend on routine. Routine is particularly important when training for a marathon, and mine has really sucked for the past few weeks. Ever since a particularly rough long run a few weeks back in Raleigh (which was, at the time, my first run in a week), I’ve had a particularly hard time with any run over four miles. A ten-miler last Saturday was mentally about as tough as the 18-miler I did the previous week. Two runs this week (6.5 and 8.2 miles) were particularly nasty, mostly due to the heat (I’ll just say I didn’t sweat quite enough on the last one).

Which brings me to today. I carried water and a few GUs (tri-berry and orange, both of which I like) with me today, and cranked out over 16 miles in my best form in over a month. I was definitely helped by some beautiful weather, but I ate well today, had a Snickers marathon bar before the run (I think I almost prefer them to the regular Snickers bars, in case you haven’t tried one), a GU every four miles, and more water than I really needed. I was particularly proud of my pacing, sticking to 8:30+ miles for the first twelve or thirteen miles. I was so pysched that I let loose on the last three miles, averaging in the low sevens pretty easily. I barely completed half the distance on the same greenway just two days ago.

If every run felt like this one today, everyone would train for marathons.

Adventures in .NET Remoting, part 1

One of the nice things about the .NET Remoting strategy is that it allows you to turn most any object into a remotely available object by simply inheriting from one class (System.MarshalByRefObject), and making sure that your methods’ return types are serializable. There are some details about how you want to make the remote object available (as a singleton, client- or server-activated, etc.), but it’s pretty simple. Poof, you access your class locally or remotely the same way; the proxy class for a remote object is all under the covers.

So how do you get a remotable instance instead of a regular local instance? The first mechanism involves a simple static registration call that actually tells the .NET runtime that a particular type is a remote thing, and when you use the new keyword to get a new instance, it gets a proxy object instead. Slick, if you ask me.

I haven’t, however, figured out how to unregister a registered type, and types can only be registered once, so this isn’t without some issues. You can (and I do, in my little client object factories) call the helpful System.Activator.GetObject() method to get an instance of your remotable object, rather than re-routing the new mechanism. All you need is the type of the object to instantiate, and the URI where your remote object is available.

Almost done moving

I believe at least half of the comfort and stability I feel from “house and home” is simply having 24/7 access to a functioning washer and dryer. The other half probably involves being able to lounge about without tall stacks of boxes scattered about, but I will continue to address that for another few days.

No surprise, but the Tivo refuses to adapt to the Charlotte programming schedule over my Vonage service.

I will soon have room for all of the music equipment I have left at the Jones home for the last year. I’ll also be able to fit all my CDs in a single location, as soon as my rack extension arrives.