File Sharing Technologies

Over the past while, I've been trying to solve a business need with some file sharing technologies.  There's some neat things out there for this purpose.  The irony of the ones I've used, however, is that they are 3 distinct products, all made by Microsoft, and each of which treats things slightly differently.

Before I get into the software, here's the issue I've been facing:

In addition to being the Controller at Fairwinds, I'm also the only on-site IT guy.  It's therefore up to me to make sure that I've got all the information, when needed, where needed, in order to restore the systems should they go down for any reason.  And while I may call in outsourced techs to do the dirty work in restoring things, it remains up to me to be able to provide them with the information that they need.

I have a few really important documents that I basically need to be able to get to.  While I have remote access to my system, the issue is that it's when the systems are down that I need the docs most, and I can't get to them.  So basically, this meant that I need to create my Critical Info Document, save it (password protected) on my laptop, and save it to the server.  When I go on vacation, my boss needs a copy, and it then becomes important to make sure his is up to date, just in case he's ever contacted because I'm unavailable.  I also want to share a copy with my outside support consultants so that they can deal with issues without me, should they need to.  (They are trustworthy and professional.)
So now I have several copies of the document that I need to maintain.  Maybe it wouldn't be a big deal if the document wasn't as fluid as it is.  But that's neither here nor there as the reality is that it gets updated at least once a week, and sometimes once a day.  Saving and emailng copies of this document is not desirable from either a managment or security point of view.
So, enter the file sharing technologies.  Here's the ones I looked at:

Groove

Groove has a bunch of uses including sharing calendars, sketchpads, and documents.   You can also set up full File Sharing folders to sync up between PC's.  I looked at this very quickly, as it costs to install Groove on each PC.  In addition, because Groove is a big program, it feels a bit "heavy" if that's all you want to do.  Of course, to access your files, you need to log on to a computer with your Groove account installed.  I'm also not convinced that you'll get updates unless at least one user is online that you can sync to.  I've been told otherwise, but haven't tested that for myself to date.

Don't get me wrong, Groove is a great program, but I wouldn't buy it if all you want to do is share files.

Windows Live FolderShare

FolderShare is a Windows Live Beta technology.  Pretty neat stuff, as you can create libraries to share between PC's, libraries to share with other users, and even use the internet to access the files on your PC from a remote site (if it is on.)  What is cool here is that, when sharing a folder, you can invite others to it, and give them a variety of rights from read only to full editing.  It seems pretty light-weight and works fairly well from what I've seen.

The drawback here is that, if you are at a remote site without your PC, and it doesn't happen to be on at home or in your office, you can't access your files.  Maybe not a big deal to you, but if I need access to my Critical Info Document and all I have access to is an internet cafe...

Windows Live Mesh

This one is actually pretty cool, classified as a "Tech Preview", which I believe is before even Beta.  It's got all the benefits of FolderShare, and adds a couple more components.

Mesh has 5GB of storage "in the cloud".  (Read as on Microsoft's servers.)  So basically, when you connect to the internet, your selected folders sync up to the storage in the cloud, then down to your other PC's.  This means that you can access your files over the internet, even if none of your PC's are on.

And if one of your PC's does happen to be on, throught the net you can remote control it, just like you would using a program like LogMeIn.

Mesh also displays a nice little message that synching with a mobile phone is "coming soon".  That will be a pretty cool feature to add.

Some of the drawbacks with Mesh, at this point:

  • When inviting others to share a folder, you have to give them "Owner" rights.  That kind of sucks, as it would be nice to be able to decide who should have Read Only rights.
  • It's a little bit awkward to set up synching folders, IMO.  Could be a bit cleaner.  Once you get used to it, it's okay, but it's not really intuitive.
  • "Non-US" customers are not eligible to sign up for an account, and they validate your email address to make sure it ends in .com 😉

A Security Perspective...

One of the things that I found ironic about these technologies is that you can't share network drives.  I'm guessing that this is probably designed around security concerns, as we wouldn't want all of our users sharing critical work files, would we?

Instead, we now push our users to save into non-network folders, which usually aren't backed up, and push the storage to personal computers outside the company control.

Things I'd Like To See

Now, thinking about my critical information document that I share with consultants, it would be awesome if these technologies could be set up to do the following:

  • Prevent users (depending on permissions) from copying out of a folder that they have been given access to.  (I wouldn't want them sharing with all their friends.)
  • Allow for a way for the owner to revoke files from an invited user.  (If I were ever to discontinue using these consultants, how can I assure that they lose access to my info?)

Go TomTom Go!

A couple of weeks ago, I took the most relaxing vacation of my life.

My family and I went to the Okanagan Valley and spent some time in Osoyoos BC at Walnut Beach Resort.  It was purely awesome, and I think we're just going to have to go back there next year.

So what made it so relaxing?  From the time I left work on the Friday afternoon until I returned to work on the Monday a couple of weeks later, my laptop was turned on twice... both times it was so my wife could read her blog posts.  For the very first time in my life, I shut off for my vacation.  It was something I badly needed to do, but honestly never thought I could.  I didn't even check my email on my smartphone or anything.  Pure bliss, seriously.  (The place was awesome too, as was the weather.)

One of the things that I did do on my vacation was to really use my TomTom Go 920 on a regular basis.  I'd used it to drive to/from work (like I don't know the way), and it seemed to work pretty well.  On vacation, though, now this was a serious test!  So here's my feedback on GPS (this is the first one I've ever owned), and some specifc TomTom features.

"Go Confidently"

This is actually TomTom's tagline, and couldn't be more appropriate, as far as I'm concerned.  When driving around, I never had to worry about getting lost, as TomTom could always get me back on route to my ultimate destination.  It allowed me to drive to Victoria last weekend with no concerns about having to read a map, and allowed us to find our hotel with ease in a city I'd never spent time in.  One day, when we showed up an hour early for a B&B, we decided to go exploring.  Not a concern in the world as we headed off the beaten track.  We saw some REALLY out of the way countryside, TomTom constantly re-routing to let us know how to get back to the B&B when we were ready.  I'd NEVER have done that, or seen those roads, without TomTom on board.  Very cool.

Accuracy

This isn't a knock on TomTom so much as it is on general GPS technology.  The device will get you close, but you need to do the final looking for your destination.  The route is easy, but the last 50-100 metres can be a little confusing.  I think it's because a lot of places are plotted on the map by their street address, but as we all know, that sometimes doesn't actually match exactly to their physical address.  (Driveway on the side road, mall stores are particularly difficult, and addresses where houses are tight together don't have to the foot accuracy.)  I hope that over the next few years that this can be improved overall, and would further suggest that it will be user communities that make this happen.  And fortunately TomTom has done some work in this area.

Corrections

Correcting the actual location address of a "Point of Interest"(POI) is pretty easy in TomTom.  I managed to "move" the Fairwinds Centre (where I work) to it's actual address fairly easily.  (It was off by about 100metres when I first got it.

Unfortunately, while moving POI's is easy, I had bigger hopes for updating the map.  TomTom has "mapshare", which leads you to believe that this should be easy, but I'm not convinced.  My subdivision is not accurate, with a new road being put in that isn't on the map, and another road being moved.  Neither road is straight, which adds complications.  I was really hoping I could delete two roads and re-create them in the right place.  It looked like I did, but those changes don't seem to take effect, despite the fact that I made them, and have asked to have all map corrections.

Adding roads at all is painful.  (Why can't I just turn something on to say "start here and track me as a drive" then "end here"?)  The worst is that without the immediate feedback on my map, I have no reason to give this feedback.  I'll correct all of Nanaimo if you let me... just let me!

Distant POI's

Not all POI's are in TomTom's database, so you need an easy way to find remote POI's.  I struggled in this area as well, as I seemed to need to know which city things were close to.  So I'm trying to locate Fintry Provincial Park, which is across the water from Kelowna.  I tried looking up FIN with Kelowna as the closest point... no luck.  Then I tried near Westbank... no luck.  Now, I know about where it is, but I couldn't find a way to pull up a BC map to try and drill down.  The software needs to have a way to do this.

Itinerary Planning

This is kind of a neat feature, but again needs some work, I think.  I laid out our entire vacation in the planner, then saved it.  And since it has the abilty to set waypoints along the route, I did exactly that.  Great, but...

I treated my waypoints as somewhere I wanted to stop.  TomTom seems to treat them as somewhere to pass by.  I suppose this makes sense, but it doesn't totally work due to the accuracy issue I mentioned above.  At one point, we stopped at Manning Park and, in fact, drove all through it.  I'm not sure where the address TomTom picks up for Manning actually is, but it never marked as visited.  So as we're driving away, it tells me I need to pull a U-Turn.  It took me a bit to figure out that Manning was never marked as visited.

By contrast, in Naramata, where the wineries are next door to each other, it was marking them as visited before we even found them!

Problem solved by marking them all as destinations, as I actually had to manually select each destination I wanted to visit.  I guess if you just want to use the waypoint to route yourself a specifc way, then it would work well.

A really good thing with the planner, though, is that you can save and recall multiple itineraries.  So we ended up setting one up for each day we did wine tours.  I can look back in TomTom and see which wineries we went too, and where they were.  Yes, we hit that many!  🙂

Funny Things

While TomTom had a TON of wineries in it's list, the Okanagan Valley has many new ones.  Because of this, we had to set some destinations without the aid of a POI.  I don't know who you'd point at for this, but I found that the local maps seemed to have roads by local names, where TomTom had different names.  (i.e 325th Street was shown on a local map as #11 Road.)

Extras

Love the fact that you can customize the voices, and the "Quick Start" screen, but I wish you could add specific items to the Quick Start.  There are a few things you can add, but they are pretty specific.  I'd like to be able to choose what I want there, such as a "Next Itinerary Destination" button.

QuickGPSFix is awesome.  Where the GPS Unit would normally take a minute to locate satellites, if you sync to the QuickGPSFix, it downloads the satellite positions for you from your PC.  Then when you get in your car it takes about 5 seconds.  Pretty cool there.

The hands-free functionality works pretty well when linked to my Bluetooth phone, although my wife tells me that I sometimes sound like I'm underwater.  Moving the GPS closer did fix that a bit, but you can only move it so close before you start getting it into your driving view.

The only other comment I'd make on the phone is that it's not ideal if you are making a call to somewhere that has an extension.  If you can quickly call up a screen on TomTom to dial the extension after the call has been answered, I haven't found it.  (Not that I've generally put a lot of attention to it, as I've been driving.)

Overall

Any qualms I've raised above are minor compared to the awesome benefits of having this puppy in the car.  I love it, and would recommend it to anyone.  😀

Windows Mobile Smartphone thoughts

I still love my phone, but there are a couple of things I'd like to see...

We're activating the feature which requires our users to put in a password to unlock the phone.  In addition, we'll be activating automatic wipe of the phone if the pin is botched five times.  This should be interesting, as I haven't yet tested just what "rest to factory defaults" means.  (I don't know if I have to call the provider to reactivate it or not.)  I do know that it will clear all email, tasks, contacts, files, IM's, pictures, etc... off the phone.

The issues I have with this are that, when the phone is locked, the screen is so dim that you can barely read it.  If you are in sunlight, the contrast is so poor that you really have to get close to the screen to see it.  If anyone knows a way to change this, I'm game to hear it, as I'm trying to type my password into a virtually invisible field to access the phone.  (Not to answer a call mind, but more on that later.)  My concern is that, because I can't see what screen I'm typing in, I *could* end up wiping my phone be accident.

Another thing that I'm not huge on is that I constantly have to shut down applications to get memory back.  If I open the web browser, it stays open.  If I open email, it stays open.  If I play a game, you got it... it stays open.  So I constantly need to go to the task manager to shut down my apps.  This might be good for your IM client, but I wish there was a way to set a timeout on features so that they automatically closed at some point.

I also find that my phone just stops responding in a variety of ways on occasion.  Disconnecting from a bluetooth headset randomly triggered issues for me where the phone locked up so solidly that I had to remove the battery to restart it.  (That particular one hasn't happened since I removed the Plantronics Voyager 510, and am only using my TomTom Go 920, so there may be something there.)  The other night, despite having closed all running applications, I still didn't have enough memory to take a picture.  A reboot cured that.  Our sales rep recommended that do a "soft reset" at least once per week on these devices.  He then showed us how to do that... take the battery out.  (Didn't seem so soft to me, but whatever.)  Personally, I don't think this should be necessary more than once every few months, but I end up popping the battery out at least once a week.

Having my contacts all in my phone is awesome, especially since it is synched up with our Exchange server.  I do wish, though, that the corporate contact list was just merged into my own contacts list.  (This is probably more of an Outlook issue, actually.)  The effect, though, is that I have to tell the phone I want to search the company directory, then type in the name, then select it.  This after I have already gone to my own contacts list.  I'd WAY prefer to just type part of the name and have it pop up the person, a la regular contacts without all the extra keystrokes.

The "holster" that comes with the phone either isn't padded enough, or the buttons on the phone depress too easily.  It is constantly activating the "unlock" screen in the holster when I bump the phone.  (I've pulled it off my belt and can see the keys lit up.)  Not a phone design issue, per se, but the manufacturer does outfit it with a standard case, so I'm tarring it with the same brush.

I have "Any Key Answer" set to Off, and yet, whenever it rings, the call often picks up and is answered in the action of pulling it from the holster.  Except for the confusion of trying to figure out if it was answered this time or not, this can be good.  I do get calls I'd like to ignore, though, and invariably those get answered too.  I was under the impression that "Any key answer"=No would mean you'd have to press the "Talk" button, but apparently this is not the case.

And, of course, I've already covered the lack of the "create Excel file" option.

Despite these minor annoyances, I still love the phone though.  I can totally see how people can get addicted to them quickly though... it's way too easy to sneak in and check your email when you should be doing something else... 😉

Things I want to see in the next Outlook version

Now that we've completed our systems migration, I'm actually using Outlook 2007 on a daily basis. Previously, we used Novell Groupwise at work, and I'm also a huge consumer of gmail for my personal stuff.

I don't mind Outlook 2007 overall, although I've heard some complaints that there are too many steps to get to each thing. Most of it is that people are trying to get used to the new UI, but I'd agree that it could be more efficient in certain areas.

Things I do like about Outlook 2007:

  • It has a softer feel than Groupwise 6.5
  • I can code against the object model (Okay, I'm a geek, but we knew that)
  • The calendar has a neat feature that, when shared, overlays others appointments against your own, so you can see everything that is going on.

Things that I think are sorely lacking

  • In Groupwise you could set up rules to file email once it had been marked read. In Outlook, even in 2007, you cannot do this. We can set up rules to file it when it comes in the door, but not after the email is read. Come on Microsoft! I don't want my email filed until I've had a chance to see it, or I'll miss it. This is WAY overdue!
  • Filing in folder vs labels. Microsoft needs to take a page from gmail and get this into the next version. Filing in folders is soooo 1997! I want to be able to label each email with MULTIPLE labels. None of this filing an email in one folder. I want to be able to tag it with each person's name, and maybe even a project description. As it is, I file based on the original sender, which means I'm pretty much restricted to using the search feature and waiting for it. Gmail is incredibly powerful in this regard, as I don't need to remember the original sender, just one of the participants in the thread, and I can find the entire email conversation. Ultimately, I'd like to combine this with rules, automatically applying rules to label the email when it arrives, (based on sender and/or subject) and having it clear out of my inbox once it's read.

The thing I'm still trying to figure out, that I'm sure is possible...

  • I'm still trying to figure out how to get all my contacts to file, and flow into email, by LAST name. By default, I have to enter the person's first name to get the email prompting to work. This simply isn't the way I work. I know it can be done, but haven't had time to fight it through yet.

I'm sure I'll have more as I go along. As it is, I've started publishing short articles to our staff on how to work with Outlook 2007, which I'm reproducing in the Outlook General Tips section of my website.

Office PDF/XPS Addin

One of the big things that Office 2007 was supposed to bring was the ability to save to a PDF file, without getting extra software. Somewhere along the line, they decided to make this feature an Add-in, which can be downloaded from Microsoft. Funny enough, they have three different ways you can download it:

For my sake, I downloaded the PDF and XPS add-in to try the PDF features in Office 2007. (It won't work in 2003.) As an aside, I have never seen an XPS file in the wild, so may revisit that format when I need to.

A few of you may wonder why I bothered with this at all, since I have a few pages dedicated to PDFCreator on my main site. The answer, sadly, is Vista. PDFCreator works great on Windows XP, (I have some revised articles to post about it, actually,) but it doesn't work on Vista. They are actively fighting the issue, but so far it's eluded the development team. I really hope they nail it, as I was less than impressed by the half baked PDF add-in that Microsoft has supplied.  (Update... the Vista issue has been fixed.)

Okay, maybe I'm being a bit unfair by calling it half baked. Here's the benefits of the Microsoft Add-in:

  • It's free
  • I will allow a user to save to a PDF file easily
  • It is found under "Save As", rather than being treated as a printer, which could be less confusing to new PDF users
  • You can code a routine to use the PDF add-in

Honestly, the biggest thing that made me dig into PDFCreator in the first place was that it was the only PDF writer which exposed it's object model for free. I'm rather cheap, so I didn't want to pay for the license to do so with CutePDF, Adobe, or any other engine. Had I come upon the Microsoft version at that time, I probably would have been quite satisfied.

So what's missing?

For starters, security. I find this pretty ironic, considering the huge push that Microsoft has been on to create secure environments everywhere. The PDF/XPS add-in does not allow you any method of setting security on your PDF documents. Maybe it's not important to most users, but it should be an available option, IMO.

The logic behind using this add-in is also different. The logic for printing multiple sheets to a single PDF would be as follows:

PDFCreator:

  • Loop through each sheet checking if we want to print it
  • "Print" the job to temporary queue
  • Combine all the jobs in the temporary queue into a single job
  • Print the job to the PDF file

Using the MS PDF Add-in:

  • Loop through each sheet checking if we want to print it
  • Select all the sheets we want to print
  • Export all the active sheets to the PDF file

Some sample code of printing multiple specific sheets to a PDF using the MS PDF Add-in:

[vb]Sheets(Array("Sheet1", "Sheet3")).Select
With ActiveSheet
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Test\Test.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With[/vb]

So here's the question... why do we have to select the array of sheets first? I hate selecting anything, as it's slow and, IMO, unreliable. I also despise dealing with ActiveSheet, as I never trust my users to take their hands off the keyboard when the macro is running.

Now, you can print a single sheet by referring to it directly, but not multiple sheets unless you print the entire workbook. This is where PDFCreator is superior. With PDFCreator, I can loop through the sheets, referring to them directly, printing the ones I want, and combine them into one job.

Another really big thing... while I have not done it yet, I can see no reason why you wouldn't be able to print reports from multiple applications to a single PDF using PDFCreator. That could absolutely not be done with the MS version, as you're stuck with the current application by nature of the "Activesheet" issue. Come to think of it, maybe I should write a routine to demonstrate the process using PDFCreator. Being able to print Word, Excel & Powerpoint documents to a single PDF could make for some really nice reports...

The final thing that I can say in PDFCreator's favour over the MS add-in is that PDFCreator can be used manually from any program, as it's just a printer. Not so with the MS add-in which is specific to the Office suite.

In Microsoft's defense, I will have to admit that there is much less code involved using their Add-in. A large part of this is due to the fact that you don't need to bind to the PDFCreator class to get going, clean up, etc...

At any rate, I'd be remiss in not showing a couple of other MS PDF examples as well before I end the post, so here goes:Here's an example of printing the active sheet to PDF, which does not automatically open the completed PDF.

[vb]With ActiveSheet
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Test\Test.pdf", _
OpenAfterPublish:=False
End With[/vb]

And here's an example of printing the entire workbook to a PDF file. This one DOES open the completed PDF in Acrobat once it is complete.

[vb]ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Test\Test.pdf", _
OpenAfterPublish:=True[/vb]

Naturally, you can also have it print to a variable sheet location such as:

[vb]ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Worksheets("FilePath").Range("A1").Value, _
OpenAfterPublish:=True[/vb]

I'll admit that despite the fact that the code for PDFCreator appears more complicated, I've got a lot of time invested in it, and know it fairly well. That may make me a little biased, but I really enjoy the robustness of what PDFCreator has to offer. I feel that it gives me more control over things, which is very important to me. I just wish that the team could get their Vista issue sorted.

New tool for Excel users

One of the big tools missing from my coding arsenal has been a place to store code that I've written.  Jon Peltier claims that one of his most important tools for developing is Google, and I can't argue with that.  One funny thing that has happened to me, though, is having Googled for how to do something, and the first hit was a KB entry at vbaexpress.com that I wrote!  I didn't even remember writing it actually...

At any rate, the reason I use Google many times is that it's quicker than trying to remember which file I used when I wrote something cool, and dig the file out.  I've long felt that it would be nice to have some place to store all of my code, but:

  • I'm not a fan of using the Personal.xls workbook to that end.  I wanted something that I could share across a network.
  • I didn't want to create an add-in, as I don't really need a huge workbook full of code loading every time if I don't need it.  Talk about wasting resources.

In discussions with some friends, (Bob Phillips being one,) the concept of code libraries were discussed, but nothing was readily available.  Until now...

Over the past few months, my friend Dennis Wallentin (aka XL-Dennis) has been building a new add-in called the Net Co Library, and early this week it was release to the public.

Net Co Library is a database system that snaps into the VBE, allowing you to store those key procedures for when you need them again.  You can store code snippets, procedures, modules and even SQL queries within the database.  Within those categories, you can create subcategories to organize your collected code samples.  You can even make notes that are stored with the procedures, and you can search any of these fields for keywords.  Here's a picture of the main Code Library UI:

nc1.png

As Dennis explains on his blog, the name of the add-in is NET, for the .NET language it is programmed in, Co for either Code or Connection, both of which is stores, and hopefully you can figure out the library part on your own.  🙂

On of the things that I really like about this is, because it stores its data in a database, I can access it from multiple locations at the same time.  To put it another way, consider the environment I run my systems in:

I run a Vista OS on my laptop and installed the Net Co Library.  I also have VMWare, and run my work PC (a Windows XP guest) as well as all my testing environments in VMWare images.  Within those images, I can map a network drive back to a shared folder on the host, which happens to hold the Net Co Library database.  With this setup, I can then use the same database between all instances.  In fact, I can even access the database on the guest while it's open on the host or vice versa.  It's just an mdb database, after all, which supports multiple users.

Overall, I'm really thrilled with this Add-in, and it's already become one of the "essential" add-ins that I will install on every system, along with MZ Tools and SmartIndenter.  If you do any amount of coding, you owe it to yourself to check it out.

Cool things with VMWare

I'm sure that Dennis, being a power user of VMWare, can list a hundred things, but I'm going to talk about a couple. One that is, IMHO, the number one reason developers should use it, and another that I experimented with briefly tonight.

Snapshots

This is a very cool feature, and the concept works like this...

  • Install an operating system in a VMWare disk
  • Snapshot it
  • Install an application on the virtual OS
  • Snapshot it

Now, the reason this is cool is twofold.

First, you don't have to consume the space on your hard drive for another full installation of the base OS. (And feel free to correct me if I'm wrong on this.) So if I decided to install Excel 2003 on my snapshot, for example, I'm increasing my storage needs by the size of the Excel install, and not the another full copy of the base OS as well.

Second, you can revert to a prior snapshot and branch off at any point. It also gives a really nice little tool that gives you a visual of what you have. Here's my current testing platform snapshot tree:

VMWare snapshot tree

As you can see, I have a Windows XP install, and a few different options to choose from. In the current view, I was testing some PDFCreator stuff on Office 2003. I could just as easily flip back to the base XP image and install Office XP or 97 if I needed to test something on that platform. I don't need to reinstall a full clean OS... I already have one to start from. So I can get my install up an running very quickly.

This is an incredibly robust feature in VMWare, and SO easy to use. The only hints that I would give you if you've never done this before are these:

  • Shut down your virtual machine before you take the snapshot. You CAN snapshot a running VM, but it then creates huge files as it has to save the running state of the machine. They are way more trimmed if the machine is off.
  • To get the best performance now and in snapshots based off earlier snapshots, always defragment the image inside the VM and shrink the disk before snapshotting. This keeps the image as small and efficient as possible.

While it is possible to do a similar thing using Microsoft's Virtual PC, (hereafter called VPC,) it's not nearly as easy to set up, nor to comfortably manage. VMWare has this set up so that it is intuitive, and easy to read. With VPC, in my experience, it's really easy to lose track of what disks are what, as there is no UI that tells you.  If you are using Virtual PC though, I linked to an excellent article on this subject in my first post about virtualization about a year ago.

Pre-built images

One of virtualization's big strengths is that it moves operating systems into a hardware agnostic environment. Basically, this means that VMWare/VPC translates between your host OS's drivers and the generic drivers needed in the VM. This allows for disaster recovery, as you only need to back up your VM, and you can reload it on any machine that has your virtualization (VMWare or VPC) software on it. It also allows for the next thing I want to talk about... pre-built images.

Last week, I saw a page (can't remember where) that pointed to a product called Deki Wiki. The only remarkable thing to me at the time was that it was provided in a VMWare image for you to download and use immediately. I kind of remarked at the time that it was a pretty neat concept. Well... yesterday at work it occured to me that a wiki might be an interesting tool to build procedure manuals at work. If everyone in the company could be set up with rights to create, search and update procedures for tasks, maybe we'd stand a chance of keeping our docs up to date. I figured I'd download it and give it a try.

The download was pretty big, but once in an unzipped, all I had to do was double click the vmdk file. It launched a linux server, I opened up my web browser, put in the IP, and away I'm playing with their wiki software. Pretty cool really. I didn't need to learn a thing about linux, didn't have to install a new program on my website, or anything.

It's not like this is the only one either, but it is the first open source project I came across. For MSDN and TechNet subscribers, we can download pre-built Virtual PC images of servers and such as well. And, of course, VMWare has a way to port Virtual PC images to VMWare workstations.

I'm curious if any other VMWare users out there have picked up any open source projects like this?

Visual Studio – first impression

I've been moving around in Visual Studio for the last hour, trying to get familiar with it.  As always, I feel that the best way to learn to use a program is to start with a project, so I decided to re-write my templates add-in for Excel 2007.  In truth, I would prefer to re-write my Favourites add-in, but it will be more difficult, so I'm using the templates one as a learning ground. 🙂

So here are my first impressions of Visual Studio 2005 from the point of view of someone who is pretty comfortable in the Excel VBE:

  • Overwhelming
  • Powerful
  • Exciting

That is exactly the order that my feelings went, with about 20 minutes between each...

There are so many commands in here, that it's hard to figure out what I'm trying to do.  It took me 10 minutes to figure out how to change the name of my project (right click on it and say "rename"... don't I feel like an idiot now!)   I may have complicated things though, as I installed MZ Tools immediately, just because I didn't have enough tools to get lost in right away.  😉

To further complicate things, (as if the new UI wasn't enough to deal with,) the code is all VB.Net.  This means that I'm going to have to convert some of my code (how much remains to be seen) to VB.Net from VBA.  The first example I came across was a Property statement.  In VBA, we'd have a Property Let and Property Get routine.  In VB.Net though, it's all in one routine:

[vb]    Public Property EditMode() As Boolean
'Author       : Ken Puls
'Macro Purpose: Holds value for edit mode

'Return the value of edit mode
Get
EditMode = bEditMode
End Get

'Set the value of edit mode
Set(ByVal value As Boolean)
bEditMode = value
End Set
End Property[/vb]

Now I haven't even got to the point where I can attempt to debug this yet, so it could be totally wrong, but it does look like the help file example.  ;)  If it is right, I actually like this better.  It  sure makes it easier to keep straight, and keeps the code collected better.

Now, back to the Visual Studio IDE... here's some of the things that strike me as really cool:

  • You can collapse blocks of code.  In the example above, I can collapse the Get portion, the Set portion, the comment portion, or the whole routine.  Very cool!
  • Adding code to deal with the Ribbon is as easy as choosing Project|Add Module|Ribbon support.  (Actually, this is a VSTO template, not strictly VS alone.)  As soon as you do, *poof!*, you have a module set up with the code to create a sample ribbonUI.  In fact, the RibbonX code is in another module, so you can edit it there.  All the info in one place, rather than flipping back and forth between Excel and the CustomUI editor.
  • An error list at the bottom of the screen highlights all the errors in your code.  (I have a ton right now!)  This is how I knew that my Property routines were at issue.
  • The help files seem to have a lot of information and it's actually helpful.  That may sound a little cheeky, but I always found the help files in Excel 2002 and prior quite frustrating.  2003 was okay, but 2007 seems better from what I've seen.  I may change my opinion on this, but the Property help page was quite easy to use.

At any rate, that's about as far as I've got with it so far, but I like what I see.  I do understand why Microsoft is pushing developers to use this product, but I still feel that they should give the tools to those developing within Excel from start to finish.  The reason I'm in this program at all is because the only hope I have of populating a RibbonX group on the fly is by writing a COM add-in, and that shouldn't be the case.

Just my 2 cents on the matter.  😉

Canning Vista

Well, I tried running Vista since mid November, so I figured I've given it a valiant shot.  On Thursday I blew it away, returning to the comfort and performance of Windows XP.

There were two real issues for me with Vista, and why I decided to can it.  Both of them revolve around hardware issues in a way, which I figured that I could work through.  I use a Toshiba Satellite P30 laptop, which boasts a 17" widescreen monitor (1440x900), a hyperthreaded 3.06 GHz processor, and was upgraded to 1 GB of Ram.  Based on all the specs for Vista, that should be plenty, despite the fact that the new OS now requires a whopping 512MB of RAM for it's own use.  (As an aside, I remember sitting on the bus in high school when one of the cool kids had just got a desktop with 512KB of RAM.  It was going to be a killer gaming machine! LOL!)

At any rate, armed with my healthy PC and the disk, I installed Vista, and took it for a 1 1/2 month test drive.

Now, I didn't hate Vista by any means.  It's a very attractive user interface.  Some of the gadgets that you can put on your desktop are quite neat, although you do have to minimize all your programs to see them.  (Something that doesn't usually happen in my experience.)  I'll admit that I found the updated explorer a little clunky, but that may have just been me.

So what were the issues that caused me to drop Vista?

Lack of driver support.

Okay, now I'd be an idiot if I thought that everything would be supported, and I'd like to think I'm not.  There were about 5 drivers in all that I couldn't get, and I only cared about one of them:  Video.  My Toshiba sports a Mobility Radeon 9600/9700 card, and the native drivers just didn't work.  Sure, they displayed an image, but the max resolution I could get was 1024x768.  Not only did it look a little funny on the widescreen, but I really felt the decrease in screen real-estate.  I waited about 3 weeks, hoping that it would be fixed, an then went on a hunt for experimental drivers.

Toshiba naturally didn't post any new drivers for my machine with Vista.  Why would they?  After all, this laptop is an obselete product, being purchased almost 2 years ago.  But this is where I found something that really surprised me... ATI is an AMD product.  Why am I surprised?  My processor is an Intel... I really didn't think that these guys would mix things up, but then what do I know?  🙂

At any rate, I found the ATI site, and they even had a Beta suite for Vista.  Sweet! I thought, downloaded it and installed.  The driver wouldn't even start.  So here I am no better off.  I submitted a detailed email to their team, and never received even so much as an acknowledgment.

Now, if there is one thing that really irks me, it's not bothering to reply to someone who sends Beta feedback.  I am going to the effort of testing your product.  The reasons I'll do this are varied, from interest to need, but the least that you can do when I volunteer my time and effort to testing your product, is send me an automated reply that says thank you.

Two days after I submitted my email, they uploaded a new build at ATI, which I downloaded.  Again, no luck with installation.  Again the driver did not even start, with errors generated in the Vista Problem Reports Section.  In three weeks, the build never changed again, and the claustrophobia finally got to me.

Performance

The other issue that really drove me up the wall was speed.  I still feel that my computer's specs are quite current, despite the fact that I don't have a dual core with more than a GB of RAM.

Vista boots quite quickly.  Faster, I think, than XP.  But trying to run programs is frustrating.  When I open Outlook 2007 on XP, it takes a few seconds.  When I did it in Vista, it would take over a minute, and show the "program is not responding" message.  Trying to open 2-3 programs at once... not good enough.

And then comes the UAC, or "User Access Control" feature.  Naturally, this is another one of those things that is supposed to protect you from yourself.  If you try to open a program that has not been digitally signed, you get prompted to ask if you're sure.  Fine, no problem.  But I have a few programs that are not signed, and that I use frequently.  By design, the team at Microsoft decided that you would not be able to check a box to say "don't ask me about this program again".  My personal feeling is that this was an absolutely ridiculous decision.  I believe that you can turn off the UAC feature, but why should I have to sacrifice the protection everywhere to allow certain trusted programs to run.  I hope that Microsoft one day realizes that the solution to security is not to add more clicks to slow users down, but rests in other methods.  (And no, I'm not saying I know what they are, that's up to them to figure out.)  Just think how effect it is with your printer's "are you sure prompt"... you click print, then you click "Yes".  Then you realize that you made a mistake!  Additional prompts are effective the first few times, then lose their effect.  Users become conditioned to them.

So there you have it... the reasons I canned Vista.  And I gave myself quite a scare on trying to replace it with XP too...  The disk I burned for the XP OS (legal, thank you), wouldn't boot!  It just skipped right by and went in to Vista.  I seriously thought that I was going to need a new laptop as Vista appeared to be holding on tightly.  LOL!  Fortunately I realized it, got a new disk, and was able to install XP Pro again.  And boy, at that point did I ever miss Vista's quick install.  6 hours later my machine was back on XP, patched, and programs installed.  In fairness, there aren't many patches for Vista yet, and less programs work there.  I'm also quite familiar with my XP install process, and like my machine customized to a certain way, all of which takes time.  I still feel that the Vista install is faster though.

At any rate, I'm back on XP now, and will try Vista again when my wife and I replace her PC in March and it comes pre-installed.   🙂

Using CustomUI Editor

If you are working with RibbonX code in Microsoft Office, you no doubt use the CustomUI editor from OpenXML Developer.

The tool has is an essential one for working with RibbonX and Office as it offers us the following advantages:

  • Much easier than manual adjustments to the Office file
  • A button to validate the XML for correctness
  • An easy way to import and rename pictures
  • A tool to generate callbacks with the correct syntax
  • Ability to generate sample XML code to start from

I will honestly say that I will not try to attempt to modify RibbonX code without it.

There is one thing that you need to be aware of, however, and that is the danger of overwriting your file by accident.

To modify your XML markup, you open your file in the CustomUI tool, edit it, and save it.  If you're anything like me, though, you then open it up in your application without closing the CustomUI file.  Why?  Because you have to ensure your controls are correctly referenced in VBA code and the spelling is important.

The danger of this is making updates to your XML.  If you've already added a ton of VBA code, saved the file (Excel workbook, Word doc, etc...) and exited it, well... no big deal.  The issue comes in if you edit the XML in the document that still sits open in your CustomUI editor, then save it.  *Poof!*  There goes the code you programmed.

It's like a copy of the file is opened in the CustomUI tool.  You can't overwrite the file until it's closed, but when you do, it's overwritten with the copy that is open in the CustomUI tool, not updated.

So, rule of thumb, if you are keeping the XML open to review, is to close the source file, then close and re-open the file showing in the CustomUI editor.

Hopefully it saves someone from re-writing a bunch of code.  🙂