Recently after an upgrade of my Plesk panel, my web site was down.

In fact ALL of the domains I host on that particular cloud server were not working. A quick call to 1and1’s server guys and it appeared that there was some step in the upgrade process that failed.

They had it fixed in a moment, and then went the extra step to send me the command to fix this myself in the future:

/usr/local/psa/admin/bin/httpdmng –reconfigure-all

That simple command reset all the server config files and got all of the domains working again.

A huge thanks to the 1and1 Server Support guys and Khristian Byrd specifically !!!

Enhanced by Zemanta

I got an email from Microsoft today (Office Insider) that included an article about how to add a calendar to Outlook that would give you the March Madness schedule in Outlook as an example of publicly shared calendars.

Publicly shared calendars are nothing new, they’ve been around for years: Apple created the webcal URI to access iCalendar files using WebDAV (over HTTP) for iCal.

So I figured Microsoft probably wouldn’t have reinvented the wheel here and tried clicking the link in the article to see if it would fire up iCal.

webcals dialog box

Turns out that the URI in the link was very slightly different than a standard iCalendar, so instead of the normal “webcal://” it starts with “webcals://”, which interestingly enough tried to fire up Outlook (in my Windows virtual machine).

Luckily this URI isn’t yet associated with a particular app, so I was able to click on the “Choose an Application” button and pick the iCal application.

Once iCal is chosen, the dialog box shows both Microsoft Outlook and iCal:after choosing iCal

After choosing the iCal application, and clicking “OK”, iCal fires up with a dialog asking you to enter the URL of the calendar you wish to subscribe to, with the URI from the web page showing:

iCal URL entry

Now clicking “Subscribe” of course doesn’t work, since iCal has no idea what to do with “webcals” as a URL.

So to fix this, you have to modify the URI to be either “webcal://” or “http://”  (turns out “https://” works as well).

So even though the URI is not quite the standard webcal one, it is possible to open as a web calendar with iCal, and the same trick works for Google Calendar. Just copy the URI from the link in the page (webcals:// by right clicking and copying the link:

copy link location

Going to my Google calendar, I then click the little “Add” button at the bottom of the “Other Calendars” area, and choose “Add by URL”.

This brings up the dialog box that lets me add the calendar, and I paste in the URL I copied before, and just edit the first part to be “https”:Add Calendar by URL

Since it’s already a public calendar, I didn’t check that box, although I’m thinking that makes it a public calendar on Google, which might make it easy to find with Google.  At any rate, now the calendar shows up for me both on iCal and Google (obviously it would work in Outlook as well had I followed the original link).

Google calendar with March MadnessiCal with March Madness

JetBlue Airways logo Category:Airline logos
Image via Wikipedia

I was on my way home from a business trip and wanted to print my boarding pass. Most hotels have a PC set up that is primarily for that purpose, and this one was no different.

The PC they provide is set up so that it wipes itself every time somebody logs in, which in theory protects you from somebody eavesdropping and/or stealing your information. The down side to this approach is that you’re stuck with whatever they decide is the right version of software to work with.

The problem (for me) came in because I was flying JetBlue. Now I love JetBlue, but they (for some unknown reason) use Flash in the page to print out your boarding pass.

You’d think this wouldn’t really be much of a problem, since I’m sure they probably have some sophisticated check that will catch if the browser doesn’t have Flash and redirect you.

… Except …

The PC did have Flash loaded, but the JetBlue page wanted a higher version installed than was on the machine. So the browser helpfully asked if I wanted to upgrade, which I said “yes” to, only to find that the generic login doesn’t have install permissions (surprise, surprise).

So I asked the desk to help, but they had even more locked down machines, so I figured I’d just have to punt.

Until I remembered that I had my Mac with me. I went to my room, ran through printing the boarding pass from the JetBlue site straight to PDF. Then I uploaded the PDF to my Google Docs.

Back down to the hotel computer, log into my Google Docs, open the PDF and presto – the boarding pass is printed !

Bottom line is that by relying on Google to connect me, I was able to get what I needed in spite of the software incompatibility. Once again I’m loving the cloud (and Google Apps).

As a project manager, I’m often faced with the problem of how to deal with configuration management, which is how we make sure that everybody is on the same page. I typically like to use a content management system to handle this issue. For my current project, I’m using Sharepoint, which also has some nice built in collaboration capabilities.

There are two out of the box workflows on the Document Library: “Approval” and “Collect Feedback”.

Both work pretty similarly, and for general document collaboration they work pretty well.

When you get a document to where you’d like to gather feedback, you can fire off a Review workflow by going to the workflows page for the document:

This will take you to a page that displays the available workflows (will also display any that are in progress):

Choose the “Collect feedback”  workflow and it will prompt you for who you’d like to review the document and a message that you’d like to send. You have complete control of who you pick, and you can also cc people if you just want to keep somebody in the loop:

Once you pick the people you want to review, assign a due date, and click the “Start” button, the workflow is running.  The people you assigned the task to will get a notification that asks them to review the document. It includes your message, and links to both the document and the workflow tasks (I assigned this one to myself):

As the creator of the workflow, you’ll also get a message for each reviewer you assigned that has the link to their task:

Note that the tasks are stored in a SP library called Tasks, and if you click on the “Edit this task” button, you’ll get the form that lets you provide feedback:

This is where you would give feedback that doesn’t need to go into the document. It also allows you to reassign the task if you aren’t the person who should review it (by default it will assign back to the person who assigned the task to you, but you can also use it to reassign to somebody else):

Once the workflow is running, you can see the status at a glance by going to the workflow page again:

If you click on a workflow, it will show you the current status, and you can update individual tasks:

This takes you to the Task in the Sharepoint “Tasks” library (you can get there by clicking the “Tasks” link above) and a web version of what you see when you click the “Edit This Task” from Outlook:

If you want to see all of the outstanding tasks you can go to that library by clicking on the “Tasks” link on the workflows status page (above):

I’m a big fan of making people more productive by sharing data entry. In my current project, the tool we have for collaboration is Sharepoint 2007.One of our team members is really comfortable with Access development, and built a nice database for tracking the status of our document deliverables. The problem with this is that since Access is a local sort of solution, it doesn’t allow for people to make updates as they work, so we end up spending a lot of time with the database owner updating status.

The solution (in this particular environment) is to utilize Sharepoint lists. Access 2007 has a nice wizard driven approach to building Sharepoint lists, as long as the database is built correctly.

So here are the iterations I had to go through to make this work …

First pass: Diving right in, I loaded up the database to see what it looked like (how many tables, what sort of structure was there, etc). The designer did a good job of making a lot of the fields lookups, and had named all of the reference tables with the prefix of “REF” – so far so good:

So, thinking it would all work fine, I simply start the “Move to Sharepoint” button in the “External Data” tab of the Access Ribbon:

This starts the wizard, which walks you through the process of building the lists on Sharepoint. Once the task is finished, you are left with a new Access database that is linked to the newly created Sharepoint lists.

Looking at these lists I noticed something off: it didn’t appear that any of the reference tables were being used. They were there as linked Sharepoint lists, but when you looked at the data in either SP, or Access, there was no drop-down or choice to be made, they were simply text fields.

So digging a bit, and having a discussion with the developer, I found a few issues: Most of the reference tables weren’t actually setup as relationships in Access, and some of the reference tables didn’t have an ID column (an Autonumber primary key).

The wizard requires the links between tables to be relationships on autonumber primary key fields, in order to build the field as a lookup.

Looking at the base relationships, it turns out that there was only one of the myriad of tables that actually had a relationship:

In order to get the Sharepoint lists to build fields that were lookups to the “REF” tables, I would have to create new fields that linked to the primary keys in those tables. To do that turns out to be relatively simple in this case.

First I open up the design of the main table, and look for the fields that are using lookups (in the case below, Contract_Task):

Then I simply create a lookup field that has the name of the table in question (in this case REF_Contract_Tasks). First step is to insert or append a new column :

Name the new column the same as the table in question:

Choose “Lookup Wizard …” for the Data Type:

Then complete the lookup wizard:

Choose the table you are interested in (in this case REF_Contract_Tasks):

Pick which fields you want to display (typically this will just be a name field, but you can choose whichever fields you think would be helpful):

Choose the order you want things displayed:

Format the columns for lookup display (it’s recommended not to display the ID column):

Choose a name for the field (if you already typed this in, you don’t need to change it):

The wizard now asks you if you’d like to save the changes, which you should do:

Now if I look at the relationships, and hit “show all relationships”, I see the newly created link:

Right click on the relationship line to edit the relationship:

And I typically just check the “Enforce Referential Integrity” box to make sure it is an identifying relationship:

Once that is done, I can either build an update query, or copy the contents of the original row to the new one in datasheet view. For the purposes of this database, there aren’t that many rows, so a simple cut and paste works fine:

Hit ctrl-C or choose “Copy” from the menu:

Select the new row, and paste the data there:

Repeat for all of the other rows in the table that have some query in the lookup tab …

Now in a couple of cases, I got prompted for which field to use to establish the relationship. These are the tables that didn’t have an autonumber primary key. The fix for this is relatively painless (once you discover which tables have the problem).

Just add a new field to the table that has a Data Type of Autonumber, and make it a primary key.

The trick with this is that the primary key won’t likely have the same numbers as the original ID column, and you can’t create an AutoNumber column with data in it. So in order to get the new field updated, the easiest thing to do is create an update query and edit it to use the old join values.

Do query wizard, and choose the columns in question, in this case Deliverables, and REF_Projects. Since you created a relationship with the new REF_Projects field on the Deliverables table, you should end up with something like this:

In theory you should be able to edit the relationship in the GUI by dragging it around and/or right clicking on it. I’ve actually had limited success with this, so I tend to simply add the column I want to update (REF_Projects) to the query, then hit the button on the Design tab of the ribbon that says “Update”:

Then switch to SQL view in order to modify the join properties more easily:

The query so far will be something like:

INNER JOIN Deliverables
ON REF_Projects.newID = Deliverables.REF_Projects

SET Deliverables.REF_Projects = [REF_Projects].[newID];

And you want to update it with the old columns from the lookup query that was in the original table, so in this case it becomes:

INNER JOIN Deliverables
ON REF_Projects.ID = Deliverables.Project_Level

SET Deliverables.REF_Projects = [REF_Projects].[newID];

Then run the query and the values in the two fields should look relatively the same in the datasheet view (since they are now both pointing at the same rows.

Then another one that threw me off was one field that had a different column heading than the field name. When I got to the “Doc_Type” field, I didn’t see it in the Datasheet view. Turns out it had a value in the Caption area of the field definition:

So in the datasheet view it showed as “NDCP Standard”:

This field also has another interesting challenge – the values didn’t all match up with the values in the lookup table (REF_Doc_Type), so when I did my cut-and-paste trick I got the following error:

So looking at the REF_Doc_Type table, I was able to figure out that there is no row that is named “Standard” (likely it had been changed to “Program standard” at some point, and since this column stores the actual value, there is a disconnect).

So in this case, I chose to simply update the current column values to match the one I thought it should be with an update:

After that my cut-and-paste from the “NDCP Standard” field to the “REF_Doc_Type” field went without a flaw.

This same trick needs to be applied to any of the tables that will be worked directly with (typically those that contribute to forms) in order to make sure all of the proper links are built.

Once you have the links built, you want to rename the original table and build a view (in Access this is called a Query) with the same name that has all the joins you need in place. So after you rename the table, just build a simple query with that table in place (I use the wizard and make sure I include all of the fields):

I’ve made a slight change to the way I’m doing meeting minutes for standing meetings that I find helpful.

I am using a feature of OneNote that allows me to check off attendees a bit more easily.

It’s a bit of setup in the beginning, but it really works nicely once you have it done the first time.

Step 1: launch your meeting notes as usual from Outlook (by clicking the OneNote button on the ribbon). If you’ve installed the meeting template you’ll see something like:

Step 2: Now, because we haven’t figured out how to make the fields all flow into the right place in the template, a lot of the meeting information is actually way down at the bottom of the template. So scroll down until you see the meeting information (normally I just delete that). In this example, no attendees show up (I think because it’s not my meeting):

Step 3: Insert the meeting details by choosing “Insert Outlook Meeting Details” from the menu (Do this near the existing text in the notes so that you don’t have to scroll as much):

Step 4: Choose the meeting you want the information for from the list:

Step 5: Now you have a copy of the information for the meeting, including the attendee list (in the order it is in the invite):

Step 6: Copy the list of attendees to the Attendees section of the notes:

Step 7: Highlight the names and choose the “To do” tag from the tags list on the ribbon bar (or hit ctrl-1):

Step 8: Reformat the attendee list in whatever way makes the most sense to you (for long lists I typically split it into multiple columns):

Step 9: use this as the template for your roll call, click the check box for anybody who is in attendance, uncheck if they’re not. If your attendee list doesn’t change much, you can just copy the notes from a prior meeting and go forward with that.

It’s also easier for people receiving the notes to see who was actually there.

I’ve been working with the VA on a large project, where I was recently issued a laptop. Due to security concerns, they only allow VA government furnished equipment to connect to their network.

It’s the first time in a long while where I’ve had a setup where I didn’t have an adminstrative account, and some of the restrictions surprised me. The work I’m doing is for a group in Austin, Texas (located at the AITC), which means the computer was set up in the CST time zone. By default, Microsoft restricts setting the time to the administrator account (I think because it affects all users of the computer, although for a laptop that really shouldn’t matter), so I can’t change the time zone without desktop support.

While trying to see if there was a workaround in Outlook, I learned that you can set up a second time zone there, which helps you see the difference more easily.

Step 1: Go to Tools/Options from the menu:

Step 2: click the Calendar Options button:

Step 4: Add a label to the current windows time zone (CST unless you’ve had desktop change it for you).

Step 5: Check the box that says “Show an additional time zone”, and add the PST zone.

Step 6: click OK, and you’ll see both zones in your calendar.

Note:  Some web searches I’ve done have suggested that it is possible to create a policy  to allow a restricted user to change the time zone. (Computer ConfigurationPoliciesWindows SettingsSecurity SettingsLocal PoliciesUser Rights AssignmentChange the time zone), but without that you won’t be able to change the time zone as the computer is restricted to only allowing administrators to change the system time (Computer ConfigurationPoliciesWindows SettingsSecurity SettingsLocal PoliciesUser Rights AssignmentChange the system time)

Image representing Windows Live Mesh as depict...

Image via CrunchBase

I’ve been playing with the beta of Live Mesh from Microsoft for some time now, and find it a very useful technology. So far the only problem I’ve run into has been some bug that was introduced when I upgraded to Snow Leopard.

For some reason, after restarting or hibernating my machine, Live Mesh gets left in an odd state that leaves it unable to connect to the mesh, leaving it in a weird state where the login action is greyed out:

Live Mesh greyed out login

After a bit of Googling and searching around on the Microsoft Connect site for people experiencing this bug, I found a couple of different solutions.

Two possible workarounds, both require Live Mesh to be shut down:

Method 1: delete the Live Mesh preferences file ~/Library/Preferences/

Live Mesh preferences

This method is what I typically use, since it is the least intrusive. It reconnects all the folders that I’ve added to my mesh, and re-establishes the synchronization. It does tend to fill up my hard drive with files, since the initial synch puts most (if not all) of the files in the folders into the Trash.

Method 2: Star with a clean slate:

  1. Quit the Live Mesh client.
  2. Delete the Live Mesh settings in Application Support (~LibraryApplication SupportLive Mesh).
  3. Delete the Live Mesh preference (
  4. Launch Live Mesh client.
  5. Log in and select the folders you want to synch like you did originally.

This method is effectively like doing a complete uninstall, since it removes all the settings and preferences. It does cause a complete re-synch of the folders, and you can choose if you want to “merge” or “replace” based on whether you think you might need to or not.

This will also end up with lots of files in the Trash, so watch out for your disk filling up.

Method 3: Never shut down or let you machine sleep ;-)

Obviously, this method isn’t practical, but I figure I’d mention it. Until Microsoft adds some code to the Mac client it is probably worth trying to remember to shut down the Live Mesh client before you reboot or leave you machine in a state where it loses it’s connection with the network.

My guess is that the Microsoft developers aren’t listening for the right events, and therefore leaving things in a state where they don’t know how to recover. Most Mac apps are pretty smart about knowing when the machine is going to shut down, or when the network connection goes away, and handle the problem as gracefully as possible.

Live Mesh is still in beta, so it’s likely they will fix this before it becomes a real product. Like most Microsoft beta products, Live Mesh is still incredibly useful and solid on Windows. I’m hopeful it will get there on Snow Leopard as well.

I received an post on a group I follow reminding people not to send out documents in the Office 2007 format of Word. Now, I’ve been using the 2007 suite since the first betas (way before 2007), and have learned this lesson more than once (mostly because of lost settings when I’ve had to do a reinstall).

The new format for files in Office was created by Microsoft in an attempt to create an open file structure. Any file you save in a default install of 2007, will have the letter “x’ appended to the file extension, signifying that it is saved in this new format.

There are many ways to deal with this problem, and the most successful strategy is actually to simply configure your 2007 products to default to saving in the older format.

You can also point the person who is using the older version to the Microsoft dowload pages to get the Microsoft Office Compatibility Pack which lets Office 2003 open the new files. The problem with this approach is that many organizations don’t allow their users to do installations (in a lame attempt to keep spyware and viruses out of the company network), so it’s either not possible, or difficult to get done.

You can do a “Save As” to create a copy in Word 97-2003 format, RTF, or even as a PDF (yes, the new product lets you create PDF files). But doing a “Save As”, requires you to remember to do that each time, and you end up with multiple files which could end up with version problems (you start with the docx, save as doc, then make a change – now which one is current?)

So the trick is to go into the options, and set your save format to the “Word 97-2003 (*.doc)” format, and then you don’t have to worry about it.

To change the options in Word (or for that matter any of the Office products), click on the Office Button

You will then see the menu pop up, with the “Word Options” button at the bottom:

Office menu

Click on the  Word Options button button, to get to the options, then click on “Save” in the left hand column to display the save options:

Save options

If you haven’t updated yet, you will see “Microsoft Word (.docx)” as the option for the “save files in this format”. Click the drop down and choose “Word 97-2003 (*.doc)” as shown below:

Choose option

Finally hit the button at the bottom of the dialog that says “OK”, to save your changes.  Create a new document, and save it, and you should no longer see the “*.docx” format.

From now on, whenever you save a document, it will save in the old format unless you do a “Save As”.

Enhanced by Zemanta

This month has been a bad one for me and computers. First my MacBook Pro died (due to a video card that had been recalled), and then my desktop PC decided to fall over dead.

The Mac failure was another study in why I love Apple service: The video just died one day, no screen, external monitor wouldn’t work. Since a Mac has a real operating system (Mac OS X – a Unix variant), I was able to determine that the machine was actually still working by connecting from my desktop PC using ssh.

I did a bit of system administration black magic, and turned on the remote desktop service (see or for a writeup of how), and was able to connect to my MBP using VNC. That allowed me to validate things were working, and to make sure I had a current backup before doing anything else.

A quick call to Apple’s support desk, and the helpful tech looked up the problem, found there was a recall on the video logic board for certain MBP systems, and walked me through a few things to validate it wasn’t just user error. He gave me a case number, told me to go to the Apple store, and have them check for the recall.

So I made an appointment at the store, got there a little early, and waited for that piece. In a reasonably short time, my “Genius” was testing my MBP for the recall issue, and sure enough that was the problem. Next a few minutes as he got the RMA set up, inspected the machine (noting that there was a small ding on the case), and asked me if I wanted it shipped back to my home address. The usual disclaimer about “if we can’t fix it, we might charge you $100 for looking at it”, and it was off to the races.

A couple of days later, I get a call from the Apple Repair Center. The guy on the phone tells me that yes, the recall is covered, but it appears the machine was dropped (which it was many moons ago), and there are all sorts of things that need to be replaced to bring the machine back to factory specs. This all comes with a price tag of $1,200 … Once I recovered my breath, I tell him “but at the store they said all I needed was the recall”. He tells me that, yes that would give me a working machine, and they could probably have fixed it at the store, but since it’s at the repair center they have to apply quality to it.

I tell the guy I’m not in a position to come up with the $1,200 right now, so can he ship it back to the store and let them do the repair. At this point, he tells me, that since I’ve been nice, and since I’m a good customer, he’s going to waive the fee. So Apple basically solidifies my glowing opinion of their service, and I get what for all intents and purposes is a brand new MacBook Pro.

I’m so relieved that this didn’t happen with my wife’s PC …..

Murphy’s law bites me again …

…. But while my MBP was off for service, I revived an old laptop I have for backup purposes. I had it almost completely configured when I got my MBP back. Then, a few days ago, my desktop PC (a Sony) crashed.

I go to the Sony web site, and do one of those instant chat sessions, and through a little back and forth, the chat agent tells me it is either a bad video card, or my memory has gone bad. In either case, it will require service. Now the wheels start spinning, because I know how much video cards cost, and I know I’ll have to pay a few hundred bucks just to get somebody to look at the machine (no Genius bar to bring my Sony to).

In the old days I would have just replaced the video card and memory with spares, but since I’m greener (and don’t really work on hardware any more) these days, I don’t keep things like that around. So now I have a useless desktop, with an unknown problem, with 500Gb of data that I can’t get to. Worse, the Sony has a RAID card, so I’m not sure the disks will be readable  except in that machine (it’s really 2x250Gb).

So I’m still trying to figure out what to do to recover the PC, but I’m guessing that will wait for a while …

Restoring my wife’s PC

Luckily for me, I had rebuilt my spare laptop, so I’m able to get the most important files onto my spare laptop, and within a few hours, it’s happily driving my big Gateway monitor (with Quicken and email files restored).

This is possible because of two backup strategies: Quicken online backup (which is a remarket of Connected Backup), and Microsoft Live Mesh.

I’ve used the Connected product ever since I learned about it while working at Cisco. They use the enterprise version, and it does a great incremental backup of your PC, that helped me recover accidental deleted files more than once. For a few bucks a month, the home version does the same thing for a few gig of data.

Live Mesh on the other hand, is a synchronization tool, that is a bit like the old Microsoft Briefcase on steroids. You mark a folder as being a Live Mesh folder, and it gets replicated to the Microsoft cloud. You can then synchronize that folder across systems, and even share it with other users. I created Live Mesh folders for all of my web site work as a way to share files with my clients, and to keep data on my Mac and PC in synch.

What I hadn’t really realized was that I was in effect getting a backup with this as well. I simply shared the folders to my backup laptop, and voila, I had all of my important data back and ready to update. For me, this is one more bit of evidence that there will continue to be interesting applications brought about by the cloud: I hadn’t really thought of Live Mesh as a backup strategy, and it lacks the versioning piece, but in a pinch it’ll do.