Where did the sun go?

I spend my nights with the quilt on,
Trying to keep warm.
Summer should be here right now,
But it’s not been at all.

It’s supposed to be,
Hot and sunny every day.
We should be at the beach,
Or sweating, or sweating, in the shade.

Where did the sun go?
Did you put it on a train?
Did you leave it in Bris-bane?
Or down in Mexico?
(repeat)

I wanted to go for a walk,
Or maybe a bike ride.
It’s raining once again,
Another day inside.

Sometimes the beach it calls me,
And the park it calls my name.
Says “don’t forget your brolly”,
‘Cause it will prob’ly rain!

(saxophone solo)

And the kids are going crazy,
Stuck inside all day.
I wish it would stop raining,
And let them run and play.

Where did the sun go?
Did you put it on a train?
Did you leave it in Bris-bane?
Or down in Mexico?
(repeat)

(sung to the tune of Wham’s “Where did your heart go?” – originally by “Was (Not Was)”)
(for anyone not in Sydney, Mexico = Melbourne)

How to delete a Windows volume mount point for an invalid drive

When I rebuilt my server earlier this year to run Windows 7 (rather than Windows Home Server), I decided to use Windows mount points to expand the storage rather than using separate drive letters or something like RAID to span disks.

The structure I use is similar to this:

C:\
  - Backup
    - PCBackups
      - T510
      - T60
      - Server
    - Photos
    - Video
- Data
    - Photos
    - Video

Each bold entry is a mount point – an empty directory on my C: drive to which I “mount” an external drive (using Windows Disk Management). So every bold entry above corresponds to a separate hard drive (indeed, it could relate to a specific partition on a drive with multiple partitions). Yes, I have a lot of hard drives in my server.

This means that, rather than accessing an additional drive in my server using a new drive letter, I can instead access it through a path such as C:\Data\Photos.

This gives incredible flexibility to add and remove drives – since you can easily change mount points, or use a new drive at a mount point if you run out of space. Any empty folder can be used as a mount point.

An example of this flexibility is from my PCBackups folder, where I store backup archives from my various laptops and computers. I created the C:\Backup\PCBackups folder on my system drive, then mounted a large hard drive at this point to give me plenty of space to store my backups. However, over time I eventually filled this drive and needed to expand the capacity. My laptop backups were taking the most space, so I renamed my laptop backup directory temporarily (C:\Backup\PCBackups\_T510), created a new empty folder (C:\Backup\PCBackups\T510) and then mounted another new drive at this point, greatly increasing the capacity of my PCBackups folder. I moved all the old T510 backups into the new folder, which moved them to the new drive, also freeing up space on the existing drive for other backups at the same time.

One of the nice things about this structure is that Windows remembers the mount points, so if you remove a drive temporarily – it will automatically remount the drive when it is reconnected.

The downside of this is that if your drive dies, or you remove it and use it else-where, the folder where the drive was mounted is not available for mounting of a new drive because Windows is still looking for the old drive to mount there.

Unfortunately, Windows Disk Management doesn’t give you any way of dealing with this – I had a drive die, but could not mount a replacement drive in its place because Windows was reserving that mount point for the old drive. I couldn’t connect the old drive to remove the mount point, because Windows no longer recognised the dead drive.

A bit of Googling found a simple solution – there is a command line tool (at least in Windows 7 – not sure about earlier versions), called “mountvol”, which allows you to manage volume mount points.

Using a command prompt running as Administrator (Start > All Programs > Accessories > right-click on Command Prompt and select “Run as administrator”), I was able to use the “/d” switch to remove a volume mount point from the folder where the dead drive was previously mounted, and then re-create the mount point for the replacement drive using Windows Disk Management. Easy as.

There are instructions on how to use Mountvol on the Microsoft TechNet site.

How to configure PEAR for Zend Server Community Edition on Windows 7

I decided to try running Zend Server CE (PHP v5.3) for my local development environment on my Windows 7 (64-bit) machine.

After discovering that I needed to explicitly choose to install MySQL and phpMyAdmin (simply fixed by running the installer again and modifying the installation), I found that the PEAR libraries some of my existing code relied on, was missing.

After a bit of research, I learned that I needed to run the PEAR installer:

C:\Program Files (x86)\Zend\ZendServer\bin\go-pear.bat

… however, this resulted in some very confusing error messages:

phar "C:\Program Files (x86)\Zend\ZendServer\bin\PEAR\go-pear.phar" does not have a signature
PHP Warning:  require_once(phar://go-pear.phar/index.php): failed to open stream: phar error: 
invalid url or non-existent phar "phar://go-pear.phar/index.php" in
C:\Program Files (x86)\Zend\ZendServer\bin\PEAR\go-pear.phar on line 1236

After a bit more Googling, I finally came across a suggestion on the PEAR blog: PHP 5.3 Windows and PEAR (go-pear.phar) | PEAR Blog

I ran the following command from the PEAR directory, which worked:

C:\Program Files (x86)\Zend\ZendServer\bin\PEAR>php -d phar.require_hash=0 go-pear.phar

… all that was then required was to follow the instructions (I needed to enter the path to the CLI php.exe, which is C:\Program Files (x86)\Zend\ZendServer\bin), and it worked.

 

Profile privacy on meetup.com

My wife and I run a private meetup.com group and I was asked by someone about what information is displayed publicly on meetup.com and what information is private. While investigating, I discovered some things I didn’t know before – so I thought it would be a good idea to share them with everyone.

There are two sets of profile information maintained by meetup.com for each user …

1. a personal profile specific to yourself and related to meetup.com in general and not to any specific meetup group.

2. a “meetup group profile”, specific to each group you are a member of.

Some of the information in your personal profile is made public (some you can hide), so be careful what you post on your personal profile. Some information on your personal profile might be indexed by Google and show up in search results for your name.

We made our meetup group private, so any profile information posted as part of our group, including introductions, discussions and meetup gatherings, is only visible to other approved members of the group. None of this information is visible to other users, nor is it visible to Google, so it won’t show up in search results.

Members of private groups should check their meetup.com personal profile to make sure that nothing they have posted there is visible to the public / Google. There are a few settings which are enabled by default which you might want to hide.

  1. Make sure you are logged in to meetup.com
  2. Click on the “My Groups” link at the top of the page (not on the groups in the drop-down list, click on “My Groups” itself).
  3. Click on “Hide my Meetup Groups” at the top of the list of groups if you don’t want people to know which groups you belong to
  4. Click on the “Intro” tab
  5. Under your bio, click on “Hide this” to hide your bio information
  6. If you have added interest profiles listing other topics you are interested in joining meetup groups for, you can click on “Hide this” below the list of interest groups on the Intro tab too.
  7. Click on the “Photos” tab
  8. You might want to click on “Hide profile photos” to hide any additional photos you have uploaded to your profile. Note that your main public profile photo is still displayed on your public profile page – this only hides additional photos.
  9. Click on the “Greetings” tab
  10. If you have had people leave greetings on your profile, you might want to delete them if they contain personal information you don’t want Google to see.

Note that none of these actions impact on what you have displayed in your private meetup group pages – you’ll need to edit that separately if you want to – but it’s not visible to Google, so you might not need to worry.

You should also be aware that anything you post to your profile page for a specific meetup group (including answers to profile questions) is visible to other members of that meetup group. If you want to change any of that, go to your meetup group profile page and edit your profile information – from your meetup group home page click on “My Profile” under the “Members” menu.

How to convert scheduled tasks from Windows XP to Windows 7

When I decommissioned my Windows Home Server recently, I decided to replace it with Windows 7. However, I had over 20 scheduled tasks running on the WHS box to do things like back up my websites and backup files on the server and such.

I wanted to recreate these scheduled tasks on the new Windows 7 install, but discovered that Microsoft had changed the format for scheduled tasks in Win7 and provided no mechanism for importing the old .job files from Windows XP / Windows 2003. Windows 7 now uses XML files for import and exporting task definitions – but no conversion tool from the old .job format.

I really didn’t want to be spending the time manually recreating all of these tasks, but a bit of Google research found a possible solution involving remote invocation of the schtasks command line tool. Here’s what I did.

The first issue was that I had already decommissioned the WHS install, although I did save the C & D partitions on the system drive so I could have theoretically booted it up again. However, I had already changed some of the machine’s hardware (new MoBo, new SATA controller, etc), so that was always going to be a last resort and fraught with potential boot-up issues.

Fortunately I still had an old laptop running Windows XP, so I was able to copy the .job files I had backed up from the WHS box over to the XP machine and have them recognised by Task Scheduler there.

Next, I ran the following command on my Windows 7 laptop from an “elevated” command prompt (Start -> All Programs -> Accessories -> right mouse click on “Command Prompt” and select “Run as administrator”):

schtasks /Query /S remote_computer_name /U remote_username /P remote_password /XML > output_file.xml

… where the “remote_computer_name” was the name of my Windows XP machine, and “remote_username” and “remote_password” were for a valid administration user on that machine.

This command tells the remote machine to dump a list of all parameters for all scheduled tasks and send it to my console and the /XML flag tells the Windows 7 box to convert that information to the new XML format, and then I piped the output to a new file, “output_file.xml”.

The output was a concatenated list of all XML task data (which itself is not a valid file to import into Windows 7 task scheduler), so I used a text editor to copy and paste the individual tasks that I wanted to recreate and then used the “import” feature in Windows 7 task scheduler to import the new task. I believe there is a flag you can set to have the combined output XML for all the tasks  be valid to import directly, but I didn’t try that, preferring to manually select which of the tasks to import and doing them one at a time so I could then check the settings each time.

There are a plethora of new features and settings in Windows 7 task scheduler, so it does pay to verify and tweak any settings after importing them. I really am quite impressed with the new functionality in Windows 7 task scheduler!