Trip to Ottawa and Requirements Traceability

I just got back from Ottawa, where last night I was speaking to the Ottawa .NET community about Visual Studio Tools for Office. (more on that later).

I wasn't surprised by the Grep Cup weekend inflated hotel rates, but I was surprised to find a “2.8% DMF Fee” on my hotel bill (on top of the 15% worth of federal and provincial taxes). Upon request, I was informed that this was a “Destination Marketing Fee” which goes to fund marketing efforts to promote tourism in the area. Various Ontario tourism centers (including Hamilton - go figure?) have been lobbying the provincial governments since post 9/11 in an effort for them to allow a tax (a real tax, not a fee) for the same purpose. This past summer however, the hotels decided that this was going nowhere so they decided to start collecting (on a voluntary basis) a fee (not a real tax).

Maybe it's just me, but I'm thinking the best way to attract people to your city is not to put a sneaky “DMF Fee” charge on those same people's hotel bill when they come to visit you and hope they don't ask about it. Even worst, because it's a fee charged by the hotel, and not a real tax - guess what - you pay tax on the DMF Fee. Icarumba! It turns out it's voluntary fee and not hotels collect it. The front desk staff sensed I was not pleased about being asked to pay for marketing fees on top of my room rate so they quickly waived the fee. But I wonder how many people willing pay this?

This all reminds me very much about requirements management and software development. Often, people, usually too close to the problem, design features into software that doesn't meet the requirements of the user. Take for example those goofy glyphs on the Lotus Notes login window. What about clippy? Is that satisfying anybody's requirements - or is it just pissing you off? With all of our best intentions, it is extremely important that we take the time to perform reality checks on what we are building against the requirements of our users.

Now to bring it all home. Do users really want to do their work in a web browser? Browsers are great for wandering and finding stuff, but do they want to see the value of their stock portfolio in a browser? You need to find the best environment for the job your users are trying to accomplish. If somebody is accustomed to using Excel to aggregate a bunch of their financial information, then maybe Visual Studio Tools for Office is the right tool for that job. While writing applications in Excel isn't exactly new, with VSTO you have the integration with the .NET Framework, Web Services, and the smart client deployment model, you can apply all professional development skills you have at your disposal to creating applications with Word & Excel. And don't worry, I have yet to see clippy show up in Visual Studio Office projects.

 

Visual Studio Team System and XBox/Halo 2

What does project management, test management, defect tracking, build servers, methodology, automated testing, code coverage, and software diagramming have to do with Halo 2? I'm not sure really, but if you want both - then you need to come to the Toronto Visual Basic User Group meeting tomorrow night. I'll be doing a “powerpoint free” drive through of Visual Studio Team System AND raffling off an xbox console and a copy of Halo 2, worth about $270.  More details here: http://www.tvbug.com/

Get lost, have fun.

Ok this is too cool. Bell Mobility has this Location Service called MyFinder. Using Cellular triangulation they can figure out pretty close to where you are. It costs 25cents to locate yourself on any Bell Mobility Cell phone with a browser (plus air time ). You can do things like find the nearest gas station to where you are right now (or ATM, restaurant, etc.) and then using Map Point will give you driving/walking directions. I tried out this service in Waterloo and it found me within a block of where I actually was. Bell says within 150m. In my example that would be pretty close. So your mileage might vary (no pun intended).

If you are lucky enough to have Sanyo 8100 or an Audiovox 8450/8455 you can also use MapMe service which will download a map to your device and your location plotted on it - along with nearby places. This appears from the screenshot to be something along the lines of a Pocket Streets derivative. It costs $5 (one time) for the software, and again 25 cents to be located per use plus air time (unless you have the Mobile Browser Bundle).

Bell Mobility also has a few multiplayer games that you play against people nearby. Less cool. Get a life.

Perhaps the most (potentially) practical is a #TAXI phone number that connects you with the first available taxi based on your location. It uses many cab companies. It sounds like they might find you a taxi parked around the corner but I don't think it quite works that way. It found my city and routed me to the phone number of the nearest taxi company. It also sent me a text message with their direct phone number. A $1.25 a call? The taxi company should pay for that - no?

www.bell.ca/finderservices

You can develop applications using this service too. If you are lucky to live in Canada and be a Bell Mobility Subscriber - then you are in luck (as I am) since Bell is now providing realtime MS MapPoint Location Service. It almost makes up for being on a CDMA network and having that limited phone selection problem.

Microsoft MapPoint Location Server is a new component of Microsoft MapPoint Web Service. You will install this component (along with SQL Server) in your enterprise and using the MapPoint Web Service and location data from your provider you can get an inventory of all the people in your company and their locations. For doing dispatch type of applications, 150 meters is probably close enough. General Information on both here (http://www.microsoft.com/mappoint)

MSDN Universal, Enterprise, and Professional subscribers are eligible for a free subscription to MapPoint Web Service (a requirement of using MLS)(https://s.microsoft.com/mappoint/msdn/msdnspec.aspx)

Bell Mobility Developers Web site for location based services (http://developer.bellmobility.ca/lbs/)

 

 

Hooray for Google Canada Local

http://local.google.ca/

Penguins are sneaking into my house and leaving the doors unlocked.

In the past 3 weeks I have purchase, installed and used 2 Linux systems in my house....accidentally. First, I purchased a Roku High Definition Photo Viewer and MP3 video player for my TV. This is a nice little device that acts as a screen saver for your TV/Plasma Screen to avoid burn in....say of the DVD logo that you see from your DVD player when there is no disc inserted. The device sits between the TV and the rest of your home theatre video inputs - daisy chain style. It monitors the video traffic for no signal or no motion and after a time duration kicks in with your family photos. The photos can be retrieved over the network jack to a series of shares on your home network, or via a plugged in USB wireless adapter. It also has Compact Flash, SD/MMC, SmartMedia and memory stick slots. Not to mention of course I find out its running Linux. There was a bit of novelty involved in telnetting into my TV and using VI. That soon wore off when I discovered that the root password was blank, and that the change password binary was missing off install of Linux so I couldn't even change the password. Combine this with the fact that the setup wizard walks you through finding the network shares in your house and storing your userid/password credentials - this becomes a rather obvious security hole that could have been fixed by the manufacturers fairly easily.

Is this security attitude prevalent in the Linux world? I hope not, because yesterday I discovered another Linux box in my house.

I also recently acquired a NetGear Media Router. It's a regular router with the addition of a USB host port. This allows you to plug in a memory stick or a USB external drive to share as NAS storage. I was a bit surprised to see it show up in my Network Neighbourhood as a UPnP device named “Linux Internet Gateway“. There is also a GPL license in the box so I think that all points to it running Linux.

The device also has a nice feature that when you turn it on and it detects a network connection, it automatically decides to download and install updates to the flash bios. God forbid I turn the device off while it is doing this unbenounced to me. Bam, too late. I guess the power light goes from green to yellow when it's doing this. The 1 page card manual included with the device doesn't mention this nice “feature”. I found out the hard way. When you go the web page to administer the device in this mode you get to see that file system in it's raw form.

Downloading the manual tells me to reset the factory bios I have to hold down the reset switch with a pin for 90 seconds. Nice. I was able to do that but can't seem to get an IP out of the device any more.

I'm still evaluating the security risks of this device. It is slightly more secure with my data (via USB storage) by including a password on the administration of the machine - which is “password”. There is no password on the share it exposes and I can't see an option to put a password on the share so every body on my network (say when my geek friends come over and plug in) will have access to my financial records and family photos. Nice.

So I have accidentally installed 2 Linux boxes in my house with major security holes. I'm savvy enough to discover this on my own, but I doubt the typical residential consumers of these products would realize the security hole they are introducing into their personal data stores.

With the proliferation of these types of Linux devices into the average home, I'm sure this will draw the attention of script kiddies. Wouldn't it be cool to take over somebody's television set?  Maybe they'd throw some porn up during daytime TV, or steal my personal data - or delete it. Scary.

My Long Weekend Vacation, Pocket Excel and the Time Value of Money

I just came back from a lovely weekend at Blue Mountain Village near Collingwood in Ontario. I hadn't been to the area since I was a kid. It's changed a lot.

The good:

  • every room has high speed internet for a reasonable cost.
  • a lovely private beach onto Georgian bay for guests that included lounge chairs, towel service, toys for the kids, and kayaks to borrow. You can walk out close to a kilometer before it gets past your knees so it's great for the little ones, and you don't really care that the water is only a couple of degrees higher than freezing. Of course in the hot sun, the shallow water warms up nicely.
  • our room looked out into a lovely village square. Panoramic Photo here (2.3mb).
  • can you say beer festival? We came back Saturday afternoon from the beach to find there was a Blues, Brews & BBQ festival outside our room. Waterloo, Brick, Big Rock, Creemore, Sleeman's, Rickard's, Steam Whistle and a slightly out of place Coors Lite booth. All appreciated though. Pig roast too - strangely right across the aisle from some place giving out samples of vegetarian hot dogs.
  • the square had some kind of computerized fountains with a small waterfall and man made river - not only artistically pleasing, but the designers knew kids would want to play in this fountain - so they embraced that idea and made a nice entry into it and put lots of chairs around so grown ups could watch their kids (right side of photo)
  • a big fire pit in the middle for pseudo-camp fires which the kids loved.
  • Friday night they had an outdoor movie in the square with popcorn.
  • a surprising amount of things to do right in the village square. Many shops and watering holes. Lots for the kids: scooter rentals, remote control cars & boats for the pond nearby, peddle boast, catch & release fishing, a small water park with water slides & splash pad for the kids. Rock Climbing, face painting. If you've never tried a beaver tail, you must.
  • there is some good golf & tennis available, and in the winter, best skiing in Ontario (not saying much). On the "mountain" there is some good downhill mountain biking to be had during the summer. There are also lots of hiking trails and scenic caves.
  • handy underground parking for the hotel.
  • only 2 hours from Toronto!

The Bad:

  • it's not really a mountain - just an edge of the Niagara escarpment. May not be great vertical, but the largest horizontal around.
  • the open air gondola which was suppose to be open July 1st wasn't.

The Ugly:

The same old timeshare crap sales pitch reminded me of my first day in business school. My Econ101 prof said: "If you learn one thing from university, remember this: At some point in the future, some salesperson is going to try and tell you that money today is worth the same as money in the future." Boy did I run into that here this weekend. I don't mind hearing a good sales pitch, and I had pleasantly enjoyed my vacation to date, so when somebody in the activity centre asked if I wanted to go see a presentation and they would give us a $100 gift certificate for anywhere in the village, I willingly obliged. I also knew it was going to rain that afternoon.

I was a bit surprised that the presentation was not high pressured at all. Intrawest has probably one of the better point systems for Timeshares. You can go anywhere, any time of the year, and for any length of stay. You basically buy points into the system to spend throughout the year. You pay a premium if you book through their travel agent to an external real estate but you basically aren't screwed if you don't like their resorts. Since we don't ski or golf all that much, and not on family vacations to date, I'd be in the “paying extra“ category pretty much every year.

It all boils down to you pay a large chunk of money up front as an equity “investment“, in this case $26K, which gives you 150 points per year, which works out to about 7-10 days depending on what time of the year, what location and what kind of accommodations you want. You also pay an annual maintenance fee of $850. I quickly bumped that up to $1200 to account for the premiums I'd have to pay to book outside the system. The salesperson was quite friendly, but at some point said that "your annual vacation - hotel room part anyway, is basically only costing you $1200 per year". That would probably give me on average 10 days of hotels. So $120/night for a 1 bedroom suite on average was quite good.

WRONG!

What about the $26K? That would probably earn between $800-2000 as investment income if invested somewhere else. The timeshare equity doesn't really appreciate under the point system. It can, but you have a very limited market to where you can sell it, so it generally doesn't. Intrawest will buy back your investment at par in 8 years should you want out of the system.

The salesperson offered all kinds of perks if we accepted - right there on the spot, but if I returned tomorrow I wouldn't get those perks. She said the last 20 people who bought in, all did so on the spot. Of course they did - all the other folks who went home and entered a few numbers into a spreadsheet figured out they could invest their $26K in a t-bill and do much better and have more flexibility. She told me that "just last week" they had a customer come in with a laptop and crunch the numbers and ended up jumping on the deal. I happened to have my pocket PC and before I could enter in a single formula into Pocket Excel, she said, "you know what, this probably isn't going to be for you". I'm guessing she knew the answer to the spreadsheet and didn't want all the other people in the showroom listening to me figure out that my vacations were going to cost about 50% more than we pay now.

To make matters worst, I was being sold Intrawest points at a price of $170/point CDN. You can find these points for sale from existing people not satisfied with the program for less than $120/point CDN.....working out to roughly a 40% markup over current market rates. No wonder they don't want you to go away and “think about it“.

While stupidity and income aren't mutually exclusive, it strikes me that the average joe that meets Intrawest's financial requirements and has $20-$40K to invest in their vacations doesn't always factor in the time value of money. So here is a good refresher on the Time Value of Money that takes an IT perspective and shows you the formulas in excel. OK, we should all generally know this, but it's so easy to forget when you've just seen a great video of how your vacations are going to look for the next 10 years. Or you've just test driven a vehicle that's just a little nicer than you would have otherwise purchased, but has an “interesting financing option“.

So we didn't exactly waste 90 minutes. We saw some nice vacation resorts and a nice sales presentation. There was a torrential rain storm while we were in the meeting and our kids were getting treated to some fun arts & crafts activities in the next room. We ended up going out to a nice dinner on the house that evening. It's a little ugly when somebody tries to sell you something that they know is not a financially sound decision. It would have been a lot more honest had somebody just tried to sell us real estate on its own merits without the confusion & mis-direction.

Too late for Windows Update

I took the train to Montreal to see DevTeach Conference on Monday Tuesday. I managed to get a train without internet access so I took the opportunity to do a long time coming repave of my laptop. I installed from the Windows XP Pro SP1a msdn dvd. I knew I'd have a ton of Critical Updates to get from the Windows Update site when I got to my hotel, but at least I wasn't installed from the Windows XP gold 1.0 disc.

So I get to my hotel room and there is something like 20 critical updates to do. After I get through those there are some more iterations of recommended updates and more critical updates (on the the recommended ones). It was about an hour or so before I had my machine in a nice secure state......but the whole time I WAS CONNECTED TO THE FRIGGIN INTERNET.

I'm still uninstalling and cleaning virus crap off my VIRGIN XP install that I got while connected to the internet waiting for critical updates to secure my machine.

But the problem is that it's too late. What we need is a roll up (Windows XP SP2) but even that is going to get stale. I think what MSDN needs (or maybe Technet already has this) but a roll up of offline windows update stuff that comes out monthly. An Offline Windows Update of all critical updates that I can run on a virgin machine without connecting to the internet to get them. Isn't there some wishlist address at MS.COM I can send this too?

.NET Rocks: Test Driven Development

I'm doing the .NET Rocks thing tonight regarding Test Driven Development with John Alexander. Now where is my harp.

Update: This show is now available for download. Click Here.

White-box Unit Testing - in whidbey

James Newkirk shows how to write a white-box test in Whidbey He shows how to test the value in a private field and invoke a private method. While you can (not so) easily do that today in NUnit, he demonstrates the PrivateObject class that lets you easily invoke private methods and look at private fields.

Could this “PrivateObject“ class be used for evil? Yes it could be used for evil - I imagine - but no more evil than that of reflection.

James has some great holy war type feedback about Should I or Shouldn't I white-box test. Those who say no probably haven't fought with unit testing a singleton class where we have to test it under multiple configurations that *normally* get set during the initial (private) constructor and/or the private methods called by the constructor. So yes, I can see a use. Is this an excuse? I haven't really thought of another technique....but to quote Michaelangelo, “I am still learning...” (via a silly set of fridge magnets I saw at Chapters today). The silly part of course is how one can learn from (and quote) a famous historical figure through something as silly as a fridge magnet.

TechEd (Day 1): Play TechEd Buzzword Bingo

Marcie Robillard has put together a fun game for TechEd attendees. You can print out your cards in the Sails pavillion where all those computers are lined up row on row.

http://www.techedbingo.com