net comments edit

Here’s the setup:

You have a project that uses NUnit 2.5.5. You don’t actually have NUnit installed - you have it checked in along with your project’s source as a third-party dependency. (You did it that way so you can have different projects using different NUnit versions without having to install/uninstall things.) You’re using TestDriven.NET to run tests inside Visual Studio but you noticed that it ships with NUnit 2.5.3 - an earlier version of NUnit - and you want to use the version your project references.

How do you tell TestDriven.NET to use your project’s version of NUnit?

First, make sure your checked-in version of NUnit keeps the same directory structure it’s distributed with. That means you have a folder that contains the appropriate version of NUnit-Console.exe, etc., and a subfolder called “framework” that has the nunit.framework.dll in it, like this:

YourProject
|
+-lib
  |
  +-NUnit // Has NUnit-Console.exe in it
    |
    +- framework // Has nunit.framework.dll in it
    |
    +- lib
    |
    +- tests

Ensure you’re referencing nunit-framework.dll from the NUnit “framework” folder. There’s an nunit.framework.dll in the NUnit folder, probably, too, but don’t reference that one - reference the one in the “framework” folder.

Open the TestDriven.NET install folder. This will be something like C:\Program Files\TestDriven.NET 3. On a 64-bit system it might be in C:\Program Files (x86)\TestDriven.NET 3 or the like.

Go into the TestDriven NUnit folder for the version you’re referencing. You should see a folder called “NUnit” in the TestDriven.NET install folder. Open that. Inside there you’ll see different folders for each version of NUnit. Right now there’s “2.2,” “2.4,” and “2.5.” In this example, we’re looking at using NUnit 2.5.5 instead of 2.5.3, so we’ll open up the “2.5” folder. You should now be in a folder like C:\Program Files\TestDriven.NET 3\NUnit\2.5.

Copy the nunit.tdnet.dll file into your lib\NUnit folder. Look in the TestDriven.NET NUnit version folder you should be in right now. You’ll see a file called “nunit.tdnet.dll.” Copy that into your checked-in lib\NUnit folder - the same folder that has NUnit-Console.exe in it. You will need to check this in along with your NUnit dependency.

Go into the TestDriven.NET “framework” folder. Still in that C:\Program Files\TestDriven.NET 3\NUnit\2.5 folder - open the “framework” folder under that. You should be in C:\Program Files\TestDriven.NET 3\NUnit\2.5\framework.

Copy the nunit.framework.dll.tdnet file into your lib\NUnit\framework folder. In that C:\Program Files\TestDriven.NET 3\NUnit\2.5\framework folder you should see a file called “nunit.framework.dll.tdnet”. Copy that into your lib\NUnit\framework folder - the same folder that has nunit.framework.dll in it. You will need to check this in along with your NUnit dependency.

Run TestDriven.NET. Now when you run your tests with TestDriven.NET you should see it report that it’s using the version of NUnit you have checked in along with your project. That wasn’t too hard, now, was it?

What if I need to customize the locations? What if you don’t have the whole NUnit/framework folder structure and such? The basic principle here is that nunit.tdnet.dll needs to be in the same folder as NUnit-Console.exe and nunit.framework.dll.tdnet needs to be in the same folder as nunit.framework.dll. You may need to open the nunit.framework.dll.tdnet file in a text editor (it’s an XML file) and modify the “AssemblyPath” node in there. I haven’t actually tried this myself, so YMMV, but it should work.

media comments edit

A couple of weeks back I blogged about setting up my Onkyo TX-NR3007 receiver. Now that I’ve had it for a couple of weeks (even if I was out one of those weeks), what have I learned?

A lot, actually, but not all of it is directly related to the Onkyo TX-NR3007. Some is just “modern home theater” stuff, but since I learned it while messing with this receiver I figured it’s as good a place as any to put it.

Onkyo
TX-NR3007

Electrical relays are annoying. I stepped up from a low-to-mid-range Yamaha receiver bought a little over 10 years ago to a new, modern, upper-mid-range receiver. My old receiver had one set of circuitry to process everything so there was no switching going on. In this new receiver (and, I gather, most newer receivers), different sets of circuits process different audio input types. When different circuits switch on, they make a clicking noise because there’s an electrical relay switching them on and off. This clicking is not quiet (though it’s not loud, either - it’s just audible) and gets annoying.

TV broadcasters need to get their acts together with respect to sound signals. Say you’re watching an HD broadcast on a national network. That broadcast will probably have full Dolby Digital sound coming with it. Now the commercial break hits and switches to the local network affiliate… who shows a standard-def commercial with stereo sound. The relays on the receiver switch over to process the stereo sound (click!) and then the national network plays a full HD commercial so the sound switches back to Dolby Digital (click!) and then back to local affiliate (click!) and then back to the TV program (click!). This gets really, really annoying. I actually watched one local commercial that switched audio signal types from stereo to mono and back every three seconds for the full 30 second spot (click click click).

I also noticed that the Showtime HD broadcast for The United States of Tara inevitably has two or three hiccups where the sound broadcast flickers for just a fraction of a second… but it’s enough for the receiver to realize the sound dropped (click) and came back (click). That’s happened for a couple of weeks in a row.

A little forum searching and talking to folks and it turns out this isn’t news, just news to me. Having the lower end receiver that didn’t know the difference between the signals meant I was a bit on the ignorant side.

(Note that this signal switching doesn’t happen if, say, you’re watching a movie on Blu-ray or something. Once the signal’s set and running, it’s set. On the other hand, the Blu-ray disc menus may be in stereo sound while the movie’s in DTS or something, so the signal will switch if you toggle back and forth.)

UPDATE 4/28/2010: A commenter reminded me of something I left out - the clicking is primarily around switching between audio processing circuitry, so if you force all of the input typesto use the same audio processing modethen you won’t get the clicking. The problem you’ll run into here is that there are very few processing modes common to all of the input types, so you end up with a “lowest common denominator” scenario. I have my receiver set to process everything surround with the “THX Cinema” mode and everything not surround with “Neural THX Cinema.” This has drastically reduced, but has not eliminated, the click. I want the THX processing, but you can’t process stereo input as full THX surround, hence the need for the “Neural THX Cinema” setting - it approximates surround with the limited input. If I switched to something else I could possibly find a setting that all the inputs support, like Dolby Pro Logic IIz, or I could turn the audio processing off and just let the raw signal play through, but then I’d also be missing out on some of the features that I originally chose the receiver for to begin with.

Calibrated sound is awesome. I thought my old receiver sounded good, but after running through the auto-setup with this new receiver, I found that I had my rear speakers set far lower (volume) than I should have and the balance was a little off. Now that it’s set up right, it’s an amazing, noticeable difference.

A calibrated video image may not “look right” to you. As part of the install, I borrowed a copy of the Spears & Munsil HD Benchmark disc from my friend Alex. As long as I was getting my sound set up right, might as well set the picture up right… right? I got the whole thing calibrated correctly and, as expected, the picture was not quite as bright and “poppy” as it once was, but you were able to see the subtle differences in darker tones and so forth a lot clearer. That said, I found that some video sources (like Xbox 360) sort of assume you’re running with the high brightness/high contrast thing going so the menus are a little dark. I also found myself in a couple of discussions with Jenn about how things didn’t “look right.” So, as it turns out, “correct” may not be “right” for you. For now I’ve gone back to the original video settings on the TV and will probably look more at this for the future, probably coming up with a happy medium that isn’t quite “perfectly calibrated” but isn’t as high contrast, either.

Pandora through your receiver is awesome. I like Pandora and I ended up subscribing to it because now I can really take advantage of that higher-quality feed and the other additional benefits - listening directly through the receiver! I’ve actually used the service more since I got the receiver just because it’s so convenient and cool. (There is a huge cool factor to getting Pandora through the receiver.)

Internet radio is awesome. Along with the Pandora support, the receiver comes with vTuner built in (and free) so I’ve been enjoying that.

The receiver runs hot… sometimes. I can’t really predict this one. I can watch a movie for two hours and it’ll be nice and cool… or I can watch a half-hour TV show and the thing will be so hot on the top you can’t hold your hand on it. I can’t figure out the pattern. I will probably look into some sort of fan setup to vent the hot air. The whole back of the entertainment center where the receiver is has a hole cut the size of the receiver (because it was too long to fit entirely) so it’s not like there’s no circulation. I’ll have to watch this.

The PS3 (older models) can’t bitstream Dolby TrueHD or DTS Master Audio. Apparently the newer PS3s have the ability to do this, but older PS3s (like the one I have with the backwards compatibility) decode Dolby TrueHD and DTS Master Audio and stream it to the receiver as 5.1 or 7.1 PCM. Old hat for some, but sort of surprising to me. This isn’t a huge problem, but it does mean I can’t take advantage of the decoder in my receiver for this and instead have to rely on the PS3. I’d honestly rather have the receiver doing that decoding… but it’s not enough for me to warrant getting a new PS3 or a different Blu-ray player. Not yet at least.

 

Anyway, I’m still learning stuff, and as I figure it out I’ll post it. This is what I’ve learned so far, and so far I like the receiver a lot. The clicking thing had me a little worried and still sometimes makes me jumpy, like I wonder if the receiver is misbehaving or if there’s something wrong every time it switches… but it’s not, it’s just the TV broadcast being flaky.

Hope this helps!

I had last week off (so I’m hurriedly catching up this week on work) and Jenn and I decided to take a couple of days to head down to San Francisco.

We chose to take the train down from Portland since neither of us had been on a long train ride before and the train is kinda fun. It’s a 14-hour ride from Portland to Emeryville, CA and then a 15 minute bus ride into San Francisco. We got a sleeper car so we could have our own private space and have a decent bed to sleep in.

Travis in the sleeper
car

We had a good time on the train, but we learned two very important things to take forward with us:

  1. It is not as easy to sleep on a train as you might think. It sounds relaxing, right? The train will rock you to sleep, you’ll be like a baby in a cradle. This is a lie. Sitting up, yeah, you rock to sleep and it’s like a long car ride. Laying down, you wake up every half hour or so because you feel like you’re going to roll clean out of bed.
  2. It will take a day to get your land legs back. You know how you go roller skating and after you take your skates off you walk around on solid ground and you still feel like you should be skating? When you get off the train after 14 hours, you feel like the ground should still be rocking back and forth. It feels like a hangover where the room’s spinning a little and can make you sort of nauseous. You have been warned.

Issues aside, the train ride down was fun and was part of the experience.

As soon as we got down there, we dropped our bags off at the hotel and went straight to Alcatraz.

Alcatraz, as seen from the ferry ride
over

Broadway - the main row of cells down the center of
Alcatraz I’d been to Alcatraz once before with my dad when I was a kid but I don’t think I really appreciated or understood it at the time the way I did this trip. They really set up some interesting exhibits and things to tell you about the history of the island. There’s a wonderful audio tour that takes you around the cell house and is narrated by correctional officers and inmates who were actually at Alcatraz when it was a functional facility. It was pretty cool to see all of that.

There are several very lush gardens all over the island as well as some areas for birdwatching (there are a lot of marine birds like gulls and snowy egrets that nest on the island). We didn’t expect that, but it was neat to see.

It was also neat to call out various places we saw in the movie The Rock since that’s one of our favorites.

In all, we spent several hours walking around before taking the ferry back to the mainland.

After Alcatraz, we walked down to Ghirardelli Square.

Ghirardelli
Square

It was getting late in the day so several of the shops were closed, but we made it through the chocolate shop and got to see the general area.

We picked up some SF Muni three-day passes and ran down to hop on the cable cars to see Lombard Street - “The Crookedest Street in the World.”

Lombard
Street

We didn’t have a car, so we didn’t drive it, but we did walk down from the top and back up again. It’s a heck of a climb, particularly after walking Alcatraz, and it wore us out. Thank goodness for the cable cars.

Cable cars in San
Francisco

We rode those back to the hotel, took a quick nap, and headed out for dinner at Bubba Gump Shrimp Company. I’d never eaten there before, but it was really good and the wait staff was really nice. I know it’s not, like, “authentic San Francisco seafood” or whatever, but we’re tourists so we did some tourist things.

And that's all I got to say about
that.

The next day we hopped on the cable cars and went to the cable car museum, which is not only a building that tells you the history of cable cars and how they work but also is where the engines that run the cables are. It was amazingly fascinating to see all the cables running all over and learn how that works. It’s free to get in, so if you are down there, that’s a definite must-see.

After that we hit Chinatown, which we thought was going to be… well, more Chinese and less tourist trap.

Entrance to
Chinatown

Unfortunately, it turned out that most of the shops were basically tourist junk shops, which is different from how I remember it when I was here years ago… but maybe I’m just not remembering right. Jenn was a little disappointed because, like me, we both expected to see… oh, I don’t know, like ducks hanging in windows and stuff. You really don’t see that. But if you want to buy some silk brocade pencil cases, Chinatown’s your place.

After Chinatown, we basically wandered around. We stopped by the old Del Monte Cannery, but it appears most of the shops have moved out of there and it’s primarily a hub for restaurants. After wandering for a bit, we took a quick break at Ghirardelli Square and had a strawberry hot fudge sundae.

Jenn and Trav at
Ghirardelli

We stopped a few times at Boudin Bakery and we even ate dinner there. The bread is worth having, and clam chowder in a bread bowl was fantastic. I literally ate until I couldn’t eat anymore and that thing bested me… but I wanted to keep eating because it was so good!

Boudin Bakery: Clam chowder in a bread
bowl

The next morning was basically spent packing up, checking out, and making it from the cable car to BART to the Oakland Airport. We flew home in about an hour and a half, which is a lot faster than our 14 hour train ride but not quite the experience.

It was a really fun trip and I’m glad we went. I have to say, though, that it felt a lot like Seaside, OR, which is not that far from our house. I think if Seaside had a lot more money behind it, it’d be San Francisco. Very similar atmosphere, similar kinds of shops, etc.

The full picture album is here:


2010 San Francisco Vacation

Check it out to see more of the trip. We didn’t get as many photos this time because most of the trip was on video, but you’ll get the idea.

GeekSpeak comments edit

This whole thing started out because I was trying to get Logitech SetPoint to use the built-in Windows Aero Flip 3D task switcher rather than the built-in one (I like the Aero one better). SetPoint doesn’t have an option to use the built-in one, so I thought I might be able to use the “keystroke assignment” function. (I didn’t figure out how to get SetPoint working, but I learned a lot of other things.)

Windows Aero Flip 3D task
switcher

The first thing I discovered was that while Winkey + Tab brings up Flip 3D, Winkey + CTRL + Tab will bring it up and let it sit there so you don’t have to hold the keys down anymore. That’s what I wanted to do with the task switcher.

I tried to assign Winkey + CTRL + Tab to the mouse button for task switching… but it turns out you can’t assign Windows key combos to mouse buttons through SetPoint. Fine.

A little more searching and I found that you can also bring up Flip 3D in a persistent fashion by running the following:

C:\Windows\System32\rundll32.exe DwmApi #105

That got me wondering if I could have the mouse button execute an arbitrary program.

You can’t. You can only assign a keystroke.

So can you have a global shortcut key that doesn’t involve the Windows key? Turns out you can. You can create a program shortcut on your desktop (or in your Start Menu hierarchy), assign it a shortcut key, and that becomes a global shortcut.

First, create a folder in your Start Menu. I created mine at C:\Users\tillig\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Tools. (That’s on Windows Server 2008/Windows 7 – you’ll need to adjust that for your Windows version appropriately.)

Set your shortcut to execute that rundll32.exe command line I gave you earlier.

Give your shortcut a nice name like “Aero Flip3D Task Switcher.”

Name your
shortcut

So now you should have a shortcut like this:

Shortcut in the Start
Menu

Now right-click that shortcut, select “Properties,” and on the Shortcut tab, click in the “Shortcut key” field and then press your shortcut key combination. Your shortcut key will show up in that box. Click OK to save the changes.

Enter your shortcut key in the shortcut
properties

Now you should be able to use that new shortcut key combination to run the shortcut regardless of where you are. Nice!

Note that this order appears to be pretty important. I had to make sure the shortcut was in the Start Menu hierarchy before setting up the shortcut key or it wouldn’t work. The first time I tried it, I set the shortcut and shortcut key up in some other folder not on the desktop or in the Start Menu… and it didn’t work. If your shortcut key isn’t working, make sure you put the shortcut into the Start Menu and then set up the shortcut key.

Unfortunately, as it turns out, I still couldn’t use this to hook Logitech SetPoint up the way I wanted. I’m not sure why, but it just wouldn’t issue the key right, or maybe it wasn’t being issued the same way it does with the keyboard so Windows wasn’t handling the key.

Regardless, I learned a lot about some long-time Windows features and it looks like it could be useful in other situations. Hopefully it helps you, too.

gists, windows comments edit

I develop on a daily basis on a Windows Server 2008 R2 machine. I do that because that’s my target deployment environment and it’s really helpful to be able to actually run the full product and debug right there on my “workstation.” As such, I have the full “desktop experience” enabled - Aero, themes, the whole bit.

One problem I noticed was that the drop shadows under the icons on the desktop… they just don’t stick around. I set my visual effects settings to “best appearance” and everything looks correct, but if I log out and back in, the setting remains checked but there’s no drop shadow. That doesn’t sound like a big deal except… well, I have a theme on the desktop that changes background images periodically and the icons get impossible to read without that shadow.

Visual Effects in Windows Server 2008

The only way I’ve found to get the drop shadows back is to go all the way into the control panel, select “Adjust for best performance,”click “Apply,” and then select “Adjust for best appearance” and click “Apply” again. Basically, reapply the settings.

I’ve tried just modifying the registry values corresponding to these settings, but those values don’t get applied when they change. You actually have to inform the desktop engine somehow to “refresh.” I couldn’t figure out how to do that… so I went about it a different way.

UsingAutoIt v3, I wrote a little script that automates this for you: it actually opens up the dialog and does the whole re-application of the settings. In the event you’re in the same boat as me (both of you still reading), here’s the script:

#RequireAdmin
ShellExecute("sysdm.cpl")
WinWaitActive("System Properties")
ControlCommand("System Properties", "", 12320, "TabRight", "")
ControlCommand("System Properties", "", 12320, "TabRight", "")
Send("!s")
WinWaitActive("Performance Options")
Send("!p!a")
WinWaitActive("Performance Options")
Send("!b{ENTER}")
WinActivate("System Properties")
ControlClick("System Properties", "", 1)

Running that will prompt you for admin credentials if you’re not already an admin (because changing system settings requires admin privileges) and clicks all the right buttons to switch you to “best performance” and back to “best appearance.”