Project Thermostat II


If you haven't read my first post on Project Thermostat, you might want to check it out first.

I decided to just go out and buy the exact same thermostat we had before on the Dutch ebay variant. A second hand one that looked really battered only cost me 15 euros. I took out the damaged print (leaking battery stripped away some of the conducting lines) and replaced it with the battered one.

Problem solved! But I did have a nice time looking for a self-built alternative. It should be really simple, but would costs at least as much as a ready built one. I'm wondering how much of the costs of these little devices goes into certification and standardization trials, patent costs etc. It must be a lot, because I can, with simple devices such as the .NET Gadgeteer create one with a material cost that is around as much as what a ready made device costs. If you add cool features such as wireless networking, usb support, remote access and others, then I can put together the hardware way below the costs of the alternatives offered in the market right now.

If anyone takes up an open Thermostat project, I'd like to dump some of my ideas ;). Until then I'll keep buying secondhand Chronotherm 4's.

Generating a changelog from TFS


Update: I filed a request on the Visual Studio User Voice for an export to text and excel for this feature. Please vote for it!

We have a requirement to deliver a list of add, removed and changed files as part of every release. TFS of course contains all this information and it's very easy to extract it using the "Folder Compare" option.

For both the Source Path and the Target Path select the option to query against a "Server Path...". Then specify a date, label or changeset version for the source. In our case we generally select "Latest Version" for the target.

Click OK and you're presented with a nice overview of all your changes:
The problem with this window is, that you can't copy paste anything out of it. So you can't include this information in a changelog or a similar document.

tf folderdiff $/;C5 $/;T /recursive /noprompt /filter:!bin\;!bld\;!ClientBin\;!Debug\;!obj\;!Package\;!Release\;!TestResults\;!*.*~!*.appx!*.appxrecipe;!*.cache!*.cer!*.dbmdl!*.dll!*.docstates!*.docstates.suo;!*.err!*.exe!*.ilk!*.ipch!*.lastbuildstate!*.lce!*.ldf!*.lib!*.log!*.mdf!*.msscci!*.ncb!*.obj!*.opensdf!*.pch!*.pdb!*.pri!*.res!*.resources!*.sdf!*.suo!*.swp!*.temp!*.tfOrig*!*.tlog!*.tmp!*.trx!*.user!*.unsuccessfulbuild!*.v11.suo!*.vcxproj.user!*.vsix!*.vsmdi!*.vspscc!*.vssettings!*.vssscc!*.wrn!*.xap > changelog.txt

This will create a nicely formatted text file with all your changes. You can grab most of the information for the commandline from the UI. The source and target path and the correct versionspec are displayed in the title of the Folder difference screen (see above); the filter can be grabbed from the Folder Compare window.

If you execute the command line from a mapped folder from the same Team Project, you don't need to specify the projectcollection, username nor password.

Just-in-time updating of source files in an existing solution

Today a developer on my team tried to create an MsBuild task that would re-generate a few generated files during a Rebuild or as part of a Clean. Turned out to be a lot harder than we expected and it was mostly caused by an unknown feature that speeds up the build process inside Visual Studio. We actually want to regenerate the WCF Client proxies and the SPMetal generated code during build.

Visual Studio actually keeps the files that make up your solution in memory to improve its performance. MsBuild will actually detect that it's running inside Visual Studio and will grab the files from the in-memory cache instead of grabbing them from disk.

The problem is that any changes made to files in the solution during the build aren't picked up by MsBuild until the next time you build your project. The inner workings are explained in this post in the MSDN forums.

In our case we decided to make MsBuild use the on-disk files by setting the "UseHostCompilerIfAvailable" property to 'false' in the first propertygroup of the project file we were trying to patch on the fly.

Things I'd want to change to the Samsung 7 Slate


I've been using the Samsung //Build slate as my primary machine for the past few weeks and I can say that I like it very much. There are a few things I'd change to it if I had a chance.

Different dock
The dock that comes with the device is great, don't get me wrong, but I'd want to be able to order a different type dock. One that can be fitted to a VESA monitor stand. One that includes more USB ports and one that has a power supply built in. It's meant to be fitted to my working desk so it doesn't have to be all portable. It would also be great if it would come with a dedicated DisplayPort or VGA/DVI port instead of the HDMI port that comes on the standard dock. For a work machine the HDMI port isn't all that useful.

The current dock is great of short work, but if you expect to use the slate for more extended sits, it's better if you were able to have the screen at eye height and thus on an adjustable dock. The VESA stands are readily available. A dock that you could screw onto one of these would be ideal.

Update: a colleague suggested to have a simple L-shaped piece aluminium bolted to the VESA arm, that might actually work just fine :). The power plug, HDMI and USB port can be exposed through holes cut into the carry arm if needed. With some creative work I might even be able to make the VESA arm a dock-dock if you get my drift. The Samsung dock would then plug into the arm and the HDMI, usb and power would just be forwarded to an already connected monitor, power adapter and sound system. I like that... Another project to consider.

Physical on/off button on the bluetooth keyboard
It took me a while to figure out how to turn off the blue tooth keyboard. There's a number of press combinations you can use on the power button. Quick press to turn it on; Long press to put it into pairing mode; Something in between press to turn it off.

My other blue tooth keyboard (a Logitech diNovo Edge) has nailed this. It has a physical on/off button and a dedicated pair/reconnect button. That's what I want.

Update: Turns out that the diNovo Edge can be connected to the built in Bluetooth by the press of a button. Given the extremely long lasting battery performance of this keyboard, I might actually use this is my default from now on. Just means I''ll need to get the Rapoo for my HTPC at home.

A touch pad on the keyboard
I'd very much like a touch pad on the keyboard as well. The Logitech on my desk has it and it doubles as a great remote control for media player. Rapoo has a very nice one which lets the touch pad double as a numeric keypad. Too bad it isn't available as bluetooth, I'd have bought it already if they had one. One thing these tablets can't handle is a lot of usb receivers due to the lack of usb ports, so Wifi-Direct or bluetooth is a requirement for me. I'm not going to carry another USB hub with me. Or else I'll take longer setting up my desk than actually getting some work done.
DisplayPort support
While HDMI is great for a consumer device, it's awful for a business environment. Our monitors have VGA or DVI-D support and non-default HDMI resolutions. DisplayPort would have been a much better choice. If only for the large number of adapter cables already available for MacBooks which carry this as their default display connector port.

As mentioned in my previous post, I've found a number of adapter cables for HDMI, but I had to order them abroad, the DisplayPort cables are available from MediaMarkt around the corner.

Update: Displayport doesn't support sound as I now understand. Who forgot to add that ;). There are Displayport to HDMI adapters that have an audio in option, but I suddenly more understand the choice for the HDMI port.
One thing I noticed though is that if I put the device in the dock, I can't use the HDMI-D connector on the device, so I'll actually have to carry a HDMI-A to HDMI-D connector plus a bunch of conversion plus. Urgh... Why didn't they just put an HDMI-D connector on the dock as well for consistency's sake.

Kensington lock thingy
At Avanade (as well as at a lot of our customers), leaving an unguarded device is not allowed without first bolting it to something. I haven't been able to find a kensington lock hole on the slate anywhere. I guess this is because the tablet itself doesn't have much to actually bolt to. A possible solution here would be to be able to lock the slate in the dock and actually be able to bolt the dock to the kensington cable. Two simple holes in the bottom of the dock would have sufficed.

Installing Windows 8 Release Candidate on the Samsung //Build slate


As you all probably have seen all over the internet, Microsoft has released Windows 8 Release Candidate! I installed it onto my Samsung //build slate PC. And while doing so ran into a few issues I'd like to share, as I've found solutions for most of them.

Install from USB drive
I installed the Preview release onto the slate previously and used the USB/DVD download tool to create a bootable USB drive and then restarted the build slate from the control panel by selecting the option Advanced Startup.
But I was presented with a friendly message requesting me to insert a proper bootable device. This worked the previous time round :(...

So instead I cleared up 20GB and installed the Release Candidate from inside the Consumer Preview. The end result is still a full re-install, so all is well. Remember to remove the Windows.Old folder. You can't do this from Explorer (all kinds of permission issues), but the Disk Cleanup tool will happily remove it for you.

Bluetooth keyboard causes all input to freeze.
After a clean installation the tablet would resist any type of input after an extended period of use. This would start with the keyboard disconnecting and shortly after that the mouse and touch input stopping to respond. You're basically left with the option to turn off the tablet by long-pressing the power button. This seems to be a long standing issue with Windows and blue tooth, as there are forum posts going back to Windows Vista with this issue.

The basic solution which is provided is to not allow Windows to turn off the blue tooth adapter to conserve power and restart.
Even after this tweak input still freezes if I have the bluetooth keyboard connected. 

Update1: I've updated the driver for Bluetooth with the latest version from the Broadcom website. Let's see if that improves things.

Update 2: The new drivers seem to be a little more stable, but after a sleep/hibernate the problem still occur. I've posted a question in this issue at the msdn forums. Let's see what comes from that.

Update 3: Turns out the instability is being caused by the Intel HD Graphics drivers. Removed those yesterday and no freezes since then. I've reverted the Bluetooth drivers to the default Windows Update version.

Connect to a WPA2-Enterprise protected wireless network
Wireless networks at our office and at a lot of our customers is protected using WPA2-Enterprise. But the build slate would always keep trying to verify the server and not connect to the network. WPA2-personal works just fine. 

After installing the Windows 7 driver for the Option GTM67x PCIe Wireless network adapter everything was back to normal. The driver can be downloaded from the Samsung support website. After installing the driver Windows Update will attempt to overwrite it with a newer version (which will again break WPA2-enterprise). Right-click the update in Windows Update and choose "Hide Update" to prevent this from happening.

Update: There is an even newer driver on the Atheros website. IT enables WPA2-Enterprise and re-enables the wifi on/off switch in the Wireless control panel on the tablet. The driver version is v9.2.0.474 and it can be found on the Atheros website. The site is a little hard to navigate, this is the direct link to the download.

Update 2: Microsoft responded to my support request and it turns out the new Windows 8 drivers support a new feature of the 801.11w spec. There is a bug in certain Cisco access points which causes the association process to fail. The Windows 7 drivers don't support this feature and thus connect without any issues.

Intel HD Graphics OpenGL support
OpenGL and OpenCL support for the Intel HD graphics adapter are needed to run Photoshop or Angry Birds. The drivers provided by default don't include the proper libraries to enable this support.

Install the Windows 8 Preview drivers don't forget to restart after installing. Windows update will again try to push a driver update over this one, it will fail to install because the installed driver is 'either more compatible or better' according to the windows update error code. I chose to hide this update as well.

Update: I've since uninstalled the beta drivers from Intel to solve the stability issues with the tablet. And since the uninstall, the issues have indeed gone away. Yay! Now let's wait for a new driver version. 

Update 2: Ok, so the instabilities haven't gone away completely it seems. Today I had another freeze after not completely shutting down the tablet since Friday. I think I can live with that for now. The freezes also seem to be linked to the use of Google Chrome, as all freezes so far happened when Chrome is running and has been running for an extended period (playing music from Google Music in this case).

Update 3: Taking the tablet in and out of the dock or connecting a second screen to the HDMI port seems to trigger this as well. Turning the device off, placing it it the dock and the turning it one works just fine. This is, however, not how I tend to use the tablet.

Update 4: Intel has released a new set of drivers. Same version number, but b2 this time. They're on the same page as the earlier drivers. So far so good. The freezes still haven't completely gone away, but it looks like there is a fix on the horizon! And it looks like I'm not alone ;). Hang in there all!

Update 5: Freezing issues fixed by installing a hotfix from Windows Update.

Connecting the Samsung //Build Slate to a projector or a second screen
If your projector supports HDMI, this one is easy. Order the proper cable and you're all set. If your projectors are a little older (like the ones in our office), you'll need a set of adapter cables. I ordered the following cables to solve my issues.
Samsung has a Micro HDMI to VGA adapter, but I've been able to get hold of one, it seems to be on back order almost everywhere (I need to order through or for shipping to The Netherlands). I've ordered an adapter from DealExtreme instead, though I just found a few alternatives:
I will report back on the VGA adapters when I receive them. For the docking station, you can order a HDMI-A male to HDMI-D female adapter so that you can use the same set of adapters. can deliver the more advanced Accell HDMI to VGA adapter on request for €69.95 excl shipping in The Netherlands.

Update 1: The elcheapo adapter is indeed crap. The image comes across very bland and it's not workable with long (projector) cables. I'm going to be buying the Accell cable after all.

GPS adapter isn't recognized
The driver for the GPS adapter isn't distributed through Windows Update, nor with the Windows installation disk. A quick chat with Microsoft people unearthed that the driver is unstable and will be updated sometimes in the future.

None really. Wait for a better solution. You can install the Windows 7 driver available from the Samsung support site, but I can indeed confirm that it's unstable

Most Reading