.NET Gadgeteer-powered RoombaCam – Update

Two months ago I posted about the prototype of my .NET Gadgeteer powered RoombaCam I had been working on. At the time I thought RoombaCam was mostly done and I was only waiting for delivery of the Wifi module to replace the Ethernet module on the prototype.

Rewritten from scratch…

So the other day I installed the latest bits for the GHI Electronics components I have and it turns out, a lot has changed since I had last done an update. This includes a bunch of changes to the networking libraries for the Wifi and Ethernet modules, so my code wouldn’t even compile. Since I wasn’t very happy with the architecture of code inside Program.cs, I basically rewrote the entire thing this weekend. It is now much more modular and much better architected, if I may say so myself.

After the rewrite using the latest libraries, the application didn’t want to run, however. The problem were a bunch of files inside the project’s bin and/or obj folders that still referenced the old libraries causing some incompatibilities. After I deleted those two folders and rebuilt the solution, everything was deploying just fine.

…but problems persist

The following picture shows the modules I am using. There are a couple of extra ones, because I still can’t access my home network correctly: Wifi gives me an exception upon joining the network, Ethernet gives me a network down event immediately after I set up the web server in the network up event. I was kind of hoping to get this to work by tomorrow (when my Roomba will do its next sweep of the house), but because it is currently 36°C outside and I can’t think clearly anymore, I have given up on this for the moment and will have to come back to it some other time.

Module layout

Anyway, below is what this thing looks mounted onto my actual Roomba. I think it’s kinda funny, how roughly 350 EUR worth of electronics is being held together by about 90 cents worth of screws, fasteners and a rubber band (not pictured). The power is supplied by battery pack that contains 4 AA rechargeable batteries and has a mini-USB output (12 EUR on Amazon). My earlier tests have shown this to be enough for about 3 hours, though I don’t know yet how that will be affected by using Wifi.

RoombaCam

Shout-out

I just wanted to mention that I am using one extra library not contained in the pieces linked to above and that is the .NET Micro Framework Toolkit. I need it to set the time based on a NTP time server, as done in this example on Channel 9. Another article worth mentioning is the .NET Gadgeteer Web Service Surveillance Camera, a project actually very similar to mine that I hadn’t found out about until I was having problems with my Wifi. It does a really good job of explaining what you need to do to set it up properly. This article by the same author contains some hints in the comments for a networking problem similar to mine, but that didn’t help either. The way it looks now, I guess I will have to turn to the support forums sooner or later.

Source Code

I’m maintain the source code on GitHub, so you can find the current version here.

Norway Travel Log

After a call from M, we made a spontaneous decision to go to Norway for a couple of days. This post is my account of our trip. Unless otherwise noted, all pictures shown below were taken by her, although I may have done some light touching up.

Below is my favorite picture from the trip, the view from our room taken on our last day at Finse. Because I love it so much, I have also made a widescreen desktop wallpaper and a Windows Phone 7 wallpaper version of it, so I can use it as a background image on all my devices.

Finsehytta

Our itinerary was inspired by the Norway in a Nutshell® tours, although we decided to do book everything on our own.

Day 1: Arrival in Oslo, train to Finse

On the morning of 04 August, we took a Lufthansa flight from Düsseldorf to Oslo. The flight was surprisingly cheap, even though it was a major carrier and between major airports. From Oslo airport, we took a train (actually a two trains and two buses, because the were doing work on the railroad tracks) to Finse. we had bought Interrail passes beforehand, so train travel was pretty cheap. But since we hadn’t reserved seats, we had to give up ours a couple of times when the train was full.

While there are terminals for you to buy your tickets at the train station, you cannot use them to plan your itinerary, as there is no way to print out the list of trains to take and the tracks they leave from. This is a much better experience with Deutsche Bahn’s terminals here in Germany. The staff, however, was super nice and their English was impeccable. Something you can’t say about Deutsche Bahn’s staff.

Calling Finse a village would probably be too much, as it is just a hotel, a youth-hostel-like lodge and a couple of houses with a railroad station. Finse is, however, located perfectly for hiking and mountain biking (in the summer) and skiing (in the winter) at 1222m above sea level.

We stayed at Finsehytta, a staffed lodge that is kind of like a youth hostel in it’s amenities. Unfortunately, many things were labeled only in Norwegian (there was a surprisingly large number of Norwegians there, who lived in the cities but spend their vacations there). So while the food was generally good, I had some things, I would normally not have taken had I been able to read its label.

We were also super lucky with the weather as we had no rain and mostly blue skies, even though the weather forecast had indicated clouds and some rain.

Day 2: Glacier tour

For the second day we had booked a glacier tour. This was a really interesting experience, as I had never done this before. It was roughly a 7h hike, although I had not given too much thought about how physically challenging that would be. The greatness of the experience more than made up for being totally exhausted afterwards.

I also think that such guided glacier tours where everyone if tied together with a rope make for really good team building exercises. Because not only do you have to watch closely where you are stepping (ideally using the exact same spots as the guide), but you also have to make sure that you are moving at a speed such that the rope in front of and behind you is tight, so in case someone does break into the ice, they don’t fall far.

Glacier

Glacier chasm

Day 3: From Finse to Bergen

SONY DSC

After two nights in Finse, we set off to Bergen where we were going to spend the remaining three nights. While I originally resented M’s idea of staying at a lodge like Finsehytta, it was a great experience and I wouldn’t want to have had it any other way. For Bergen, though, I insisted on a real hotel (i.e. a place that has showers in every room, which Finsehytta did not). So we stayed at Rica Hotel Bergen. The hotel was ideally located in the city center, so everything was within walking distance.

Day 4: Flåm

The following day, we took a train to Myrdal (which is much closer to Finse than Bergen, actually) where we boarded the Flåm railroad (Flåmsbana). It’s only 20km long, but features a constantly changing scenery. Unfortunately, the Interrail pass does not cover Flåmsbana, although it does give you a 30% discount.

Flåm itself is kind of surreal place existing only as a tourist destination. In addition to the train station, there is a pier where cruise ships arrive, there are a couple of restaurants, souvenir shops and a  few places to stay overnight, but that’s it. The old village center of Flåm is actually located a couple of miles inland, as was pointed out by the announcements on the train (picture below). Note the stave church, a building style once common in Northern Europe.

SONY DSC

If there is one thing about Norway that I found the most striking, is that there is water everywhere. Below is the Kjosfossen water fall (93m meters of free fall). The train actually stops there for a photo-op, music starts to play and dancers pop out on the rocks next to the water fall performing what I have to assume is a traditional Norwegian water fall dance (no explanation was given, so it might just be something for tourists to take pictures of that has nothing to do with anything).

SONY DSC

From Flåm, we took a Norled express boat. Despite its name, it still took five hours to make the trip back to Bergen. That trip through the fjords was really beautiful though. You start feeling really small, when on both sides of the water, there are walls of solid rock, maybe a hundred meters high. Also note the shadows cast be the clouds. Looks really interesting.

SONY DSC

SONY DSC

Day 5: Bergen

SONY DSC
On our last full day we stayed in Bergen to see a bit of the town. In the morning we had planned to take the Fløibanen Funicular up to one of the mountains framing the valley that Bergen is located in. Looking at the line of maybe 100 people, however, we decided to wait a little and do something else first. Big mistake. When we came back some time later, there were like 400 people waiting in line. The wait was totally worth it, though. The view over Bergen is spectacular as you can see in the picture below.

Before we had been to the Nordnes peninsula in Bergen. Even though it is quite hilly, it’s a really beautiful neighborhood with a lot of patches of green and wooden houses like those in the picture on above.

Since Norway in general is pretty expensive, and we wanted to be frugal when it came to being dinner. So the first night we ate at Café Opera, a place recommended by my Baedeker. They have a nice menu, the food was great and quite affordable (by Norwegian standards). Since we couldn’t find anything comparable, we also ate the following two nights there.

SONY DSC

Final thoughts

Easily my greatest vacation in recent years. I have seen and experiences so many things in these couple of days. It was so amazing. Every time I look at these pictures and think back, it puts a smile on my face.

Reading up on User Experience Design

I am currently in the process of coming up with user experience design guidelines that we are going to use for all our in-house Windows client applications going forward. Because we are writing for Windows and I want our applications to fit in well with the rest of the system, I am going to base my guidelines heavily on the Windows User Experience Interaction Guidelines (PDF) from Microsoft. I am deviating from these guidelines where I feel that the kind of data-heavy applications we are writing primarily requires a different approach.

However, I also want to include input from the other sources and learn about basic design principles that aren’t necessarily limited to designing the user experience of a software product. So far, I have found the following resources quite helpful:

Leave a comment, if you know any other books or web sites that have valuable information I should consider for my own guidelines.