Sunday, February 28, 2010

Alternative use of Linux Live CD: to fix Windows installation

Somehow, either because of my installation of Service Pack 3 for Windows XP, or because I accidently removed a driver, my XP installation on my desktop computer was refusing to start up.  Just prior to loading Windows, it complained about something like "a corrupt or missing file C:\WINDOWS\INF\BIOSINFO.INF ...".  According to Google results, this can be repaired by booting from the XP installation CD and running the Recovery Console.  Unfortunately I could not provide the administrator password the Recovery Console was looking for.

However, although I don't actually have my desktop dual-booting, I could use my Ubuntu 9.10 install disc to run Ubuntu from the CD.  Ubuntu is able to access my XP partitions, and thus I could copy the BIOSINFO.INF file from the XP install CD to the C:\WINDOWS\INF\ folder!

Saturday, February 20, 2010

Zimbra Desktop and managing your free webmail accounts

Zimbra Desktop is useful for aggregating your various webmail accounts.  You know those email accounts that you check so seldomly?  Zimbra can help keep track of them.  Assuming Yahoo Mail, Gmail, and Hotmail are the leading free webmail providers, Zimbra has support for all of them.

As far as I know, it is the only desktop software that is able to sync with a free Yahoo account.  There is no problem with Gmail since Google openly allows POP and IMAP access to Gmail (Zimbra also has a pre-configured Gmail set-up for convenience).  Finally, Microsoft does seem to allow Hotmail access over POP; here are the settings to use.  One annoying thing for Hotmail in Zimbra is that your mail is deleted from the Hotmail server's mailbox after you've downloaded from the Hotmail server to Zimbra, and folders you may have created in Hotmail are not sync'd to Zimbra.    

You can also add your work or ISP mail accounts to Zimbra Desktop as long as you know the POP or IMAP and SMTP settings to use.  Zimbra itself is a decent email client so it's ideal as a one-stop-shop for your email.

Sunday, February 14, 2010

Windows 7 Ultimate and Ubuntu 9.10

About a week ago, after booting into Vista, the keyboard and touchpad on my Acer laptop stopped responding.  Editing the Bios settings or using the Ubuntu Live CD, the keyboard/touchpad worked fine so it wasn't a hardware problem.  After trying to dual boot Ubuntu and Vista, I arrived at a Grub "No filesystem found" error.  May be due to the OEM partitioning which was consuming a lot of hard disk space unnecessarily too.  So it was quite easy to resolve to do a clean install.  The Ubuntu Live CD allowed me to access the Windows partitions to back up the little data I hadn't already backed up.
  1. Loosely following the instructions here, I first ran Gparted and created one primary partition for Windows and one extended partition for Linux.  In the extended partition, I created two logical partitions, one formatted ext4 for / (root), /home, etc. and one formatted linux-swap (2 GB) for swapping.  Note that unlike the instructions described at ubuntuguide.org, I did NOT require a small partition for storing Grub files
  2. Since I have a valid MSDN license, I downloaded Windows 7 Ultimate and burned a DVD with the .iso image.  During the Windows 7 installation, I choose a "Custom" installation, which allowed me to choose which partition to install Windows into.  Yes, this Windows 7 installation does play nicely.  Also, with a clean install, Windows 7 takes a little over 15 GB in hard disk space, compared to the OEM Vista installation.  This is because I don't have the OEM hidden partition containing the recovery media, nor the Windows XP Embedded partition, nor the Acer OEM software, none of which was really that useful. 
  3. After testing that Windows 7 was installed properly, I ran the Ubuntu 9.10 CD.  By default, the Ubuntu installation ignored the two partitions that I had already created for Linux purposes.  Instead it proposed to create a fourth partition for Ubuntu exclusively.  However, choosing the manual/advanced option, I could specify where to mount each partition (i.e. for root and for swap purposes) so that the partitions that I created earlier could be put to use.
Now Grub starts initially and allows me to choose to boot into Ubuntu (default) or Windows 7.  Also, no problems with the keyboard/touchpad in either OS.  New life is breathed into my year-old Acer laptop!

Wednesday, February 3, 2010

Virtual PC 2007, Vista Home Premium and Linux distributions

Wanted to have access to a Linux environment on my Vista laptop. Although Virtual PC 2007 is not officially supported on Vista Home Premium, I gave it a try and so far it appears to run fine. Attempted to install Ubuntu 9.10 within Virtual PC but there were some display problems and eventually it appears that it started Ubuntu in the demo mode. That is, not installed to (virtual) hard disk. Moved to the second most popular Linux distribution according to DistroWatch which is Fedora 12.  This had display problems after the initial boot-up.  So came to Open Suse, which I have installed before without problems.  The current version, 11.2, also installed without too many problems (two seemingly corrupted files?).  Access to internet and Gnome GUI desktop environment within virtual environment.

Monday, August 17, 2009

Nitro PDF Professional ver 6.0.0.29

Discovered some quirks when converting from PDF to Word document:
  • something like "01/2003 - 06/2003" was converted to "0112003 - 0612003"
  • some weird things happening with the footers and page numbering (footer appeared off the page and page numbering skipped 4) but eventually after completing editing, numbering seemed OK

Saturday, November 1, 2008

Syncing with multiple Google Calendars

I use Google Calendar a lot (and use multiple calendars) so naturally I want to have access to my calendars on my phone. Of course, if I have a Wi-Fi connection, I can use my Google Calendar with the web browser on the phone; this is a no-brainer. But what if I want to use the Windows Mobile Calendar on the phone itself? One way that might work for most people is with Google Calendar Sync. Here is another way that requires some tech savvy (and support might not be available in Outlook versions lower than 2007):
  • As opposed to Google Calendar Sync, this is one-way synchronization (Google Calendar to MS Outlook to phone) but multiple Google Calendars is supported (Macro below needs to be adjusted slightly)
  • ActiveSync syncs with the MS Outlook default calendar (for the Profile the phone has partnership with; more on that in another post)
  • You can add the Google Calendar in Outlook (for 2007 version, go File > Data Management > Internet Calendars tab, View and subscribe to Internet Calendars)
  • After you've set up the Google Calendar in Outlook (http://www.google.com/support/calendar/bin/answer.py?answer=34576), the trick is to copy the Google Calendar items to the Outlook default calendar as that is what ActiveSync synchronizes to. Use this macro within Outlook

' Author: Alan Leung (in 2008)
'
' MAPI
' |
' +-- Personal Folders
' | |
' | +-- Deleted Items
' | +-- Inbox
' | +-- Calendar
' | +-- ...
' |
' +-- Internet Calendars
' |
' +-- Deleted Items
' +-- Google - Personal
' +-- ...
'
' Interesting articles along the way:
' Import Calendar Days To Specific Cells - Excel Help & VBA Help: http://www.ozgrid.com/forum/showthread.php?t=66377
' How to: Create Appointments: http://msdn.microsoft.com/en-us/library/ms268752(VS.80).aspx
' How Do I ... in Outlook: http://msdn.microsoft.com/en-us/library/bb208173.aspx
' How to programmatically import Outlook items from Access: http://support.microsoft.com/kb/290658
'
' TODO: recurring events do not appear to be copied over

Const CREATED_BY_SYNC_MACRO_TAG As String = "CREATED_BY_SYNC_MACRO"


Sub CopyBetweenCalendars()

Dim eraseDestinationCal As Boolean
eraseDestinationCal = True
Dim originCalName1, originCalName2 As String
originCalName1 = "Name of Calendar 1 in Outlook"
originCalName2 = "Name of Calendar 2 in Outlook"
Dim destinationCal As Outlook.MAPIFolder

Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")
' This would do the same as the following line
' Set destinationCal = ns.folders.Item("Personal Folders").folders.Item("Calendar")
Set destinationCal = ns.GetDefaultFolder(olFolderCalendar)

' Erase destination calendar
If (eraseDestinationCal) Then

For Each appointment In destinationCal.Items

If appointment.BillingInformation = CREATED_BY_SYNC_MACRO_TAG Then

appointment.Delete
End If
Next appointment
End If

CopyAppointments originCalName1, ns
CopyAppointments originCalName2, ns

MsgBox ("Done executing CopyBetweenCalendars()")
End Sub


Sub CopyAppointments(ByVal originCalName As String, ns As Outlook.NameSpace)

Dim originCal As Outlook.MAPIFolder
Set originCal = ns.Folders.Item("Internet Calendars").Folders.Item(originCalName)
' Set originCal = GetCalendar(originCalName, ns)

' Copy appointments over; TODO: easier, more accurate way to do this?
Dim original As Outlook.AppointmentItem
For Each original In originCal.Items

Dim apptCopy As Outlook.AppointmentItem

Set apptCopy = CreateItem(Outlook.OlItemType.olAppointmentItem)
With apptCopy
.Subject = original.Subject
.Body = original.Body
.Start = original.Start
.End = original.End
.AllDayEvent = original.AllDayEvent
.Location = original.Location
' TODO: recurring appointments?
.ReminderSet = False ' Don't remind, you'll be looking at Calendar
.BillingInformation = CREATED_BY_SYNC_MACRO_TAG
End With

apptCopy.Save
' Something like this doesn't seem to be necessary
' destinationCal.Items.Add apptCopy
Next original
End Sub
  • Once you see the "Done executing CopyBetweenCalendars()" message box, let ActiveSync do its thing and voila, you have your Google Calendar items on the phone!

My HTC 6800 (Windows Mobile 6.0)

I purchased my HTC 6800 from Bell Canada back in September 2007. Initially it was kind of neat, then it felt awkward and unintuitive. Because it cost me $400 at the time (no data plan), I was forced to wrestle with it rather than chucking it in the garbage. Now I think it has become quite practical and useful in my daily life. I'd like to share some tips on my blog for this and other Windows Mobile devices.