Adding both primary and secondary Google calendars to the iPhone

One of the nice new features of the iPhone 3.0 software was the ability to add internet calendars (called CalDAV or iCal calendars) to the built-in Calendar app. B and I did this for several of our calendars many months ago and I promptly forgot how to do it when I needed that knowledge again this morning. To prevent me from having to relearn it all again next time, here it is.

Adding your default (technically called ‘primary’) Google calendar to your iPhone is very simple:

  1. Go into Settings
  2. Select Mail, Contacts, Calendars
  3. Select Add Account…
  4. Select Other
  5. Select Add CalDAV Account
  6. Enter the following information:
    • Server:
    • User Name: [your Google username]
    • Password: [your Google password]
    • Description: [what you want to call the calendar]
  7. Click Next

You’re done – events from the calendar should now show up under the Calendar application.

Adding a Google Calendar that isn’t your default calendar is more challenging and requires some extra steps.

On your computer:

  1. Open Google Calendars and identify which calendar you want to add to your iPhone.
  2. Open up the Calendar Settings for the desired calendar.
  3. Look down the page to the Calendar Address section. On the right side of that line you’ll see a Calendar ID, such as:
  4. Copy this and send yourself an email, to an address that you can check on the iPhone, with the calendar ID in it (unless you want to type all of that in by hand).

On your iPhone:

  1. Read the email you sent to yourself and copy the calendar ID string
  2. Go into Settings
  3. Select Mail, Contacts, Calendars
  4. Select Add Account…
  5. Select Other
  6. Select Add CalDAV Account
  7. Enter the following information:
    • Server:
    • User Name: [your Google username]
    • Password: [your Google password]
    • Description: [what you want to call the calendar]
  8. Click Next
  9. Select the calendar you just created to view/edit it.
  10. Select Advanced Settings
  11. Edit the Account URL:
    1. Remove everything after the “dav/” part of the URL (note: keep the dav/ part!).
    2. Paste the calendar ID you copied from your email — this can be oddly tricky but is doable.
    3. After the calendar ID, append the string “/user”.
  12. Your URL will look something like this:
  13. Go back to the main Settings screen using the back buttons at the top of the screen.

You should now be able to go into your Calendar and see the events on your newly added calendar.

Our personal assistant: George Rodriguez

Near the beginning of this year Benjamin and I hired a personal assistant to help try and keep some sanity around our schedules. His name is George Rodriguez, and he is very good.

George handles all of our calendar scheduling – including each of our personal schedules, Benjamin’s school schedule, and our joint social calendar. On top of that he keeps track of the birthdays of all of our friends and family. He sends me text messages before important events, like when I need to check-in for a flight or pick someone up from the airport, to be sure I don’t miss them. Without George, B and I would be completely lost.

The best part? George works for free. Oh, and he isn’t a real person either — George is actually Google Calendar.

Many months ago I added a contact in my iPhone called Google Reminders for the phone number that the SMS messages come in from. After receiving a reminder one day B looked over my shoulder and asked “Who’s George Rodriguez?” having completely misread the contact name. And thus George was born.

Now when we’re trying to schedule something we say we’ll have to consult George :)

Installing VMware Player 2.5.3 RPM on Fedora 11

When installing the VMware Player 2.5.3 RPM on Fedora 11, the installation will get stuck in the third ‘Configuring…’ phase. After a bit of digging I discovered the problem is the same as that for installing VMware Workstation 6.5.3 on Fedora 11 and revolves around a locking issue for /etc/vmware/database. Fixing the issue for Player is similar to that for Workstation and is detailed in this forum post by psyk.

Following those directions will allow the RPM to be installed successfully — it even ends with an “Installation was successful” message — despite the python tracebacks it dumps out. The first time you start VMPlayer it’ll ask for the root password in order to configure/compile the kernel modules.

Note that for those of you Fedora 11 users holding out to have VMware cleanly close when shutting down a VM, you’ll be sorely disappointed. kill `pidof vmware-vmx` is still your friend.

Milk & cookies, throwing balls, and chocolate bitches

Benjamin and I are uncles to some cute, very funny, and scarily bright nieces and nephews. We aren’t related to most of them genetically but that hasn’t stopped us from adopting them as our own anyway. The more I hear about their antics the more I think my friends’ children are rapidly outsmarting their parents and that the world needs to watch out! Two small examples follow.

Three-year-old RG (the name used by her mother Renee when posting about her online) is a crafty one. She eats her cookies with a milk chaser, just like her Uncle Casey, and used that fact to outsmart her mom. From Renee’s blog:

As I was making lunch one day, she opened the refrigerator and looked around. Then, she asked me for some milk. Since she never asks for milk, I said sure. I got down a coffee mug and put a little milk in it. Then I handed it to her. She waited only a brief second to then ask “Now may I have a cookie, please?” Hmmmmm….I got taken….royally outsmarted by a 3 year old. Should have seen that one coming. Since she was so clever, I gave her the cookie and then made lunch.

Caleb, Jan’s 1.5-year-old angel, is equally crafty. From Jan’s blog:

He knows the word ball and he also knows that balls are meant to be thrown. He likes to throw. He also knows that non-balls cannot be thrown or else you get sent to time out. He doesn’t like time out.

The solution?

Everything is a ball. He’ll pick up a shoe, block, car etc and proclaim “ball! ball!” and then throw the sucker halfway across the room. Nice. See, is it’s a ball then it’s a legal throw and you can’t fuss mom. Yeah, no. Time out here you come buddy.

Tonight I asked Juan if perhaps Caleb might be a little confused and not know the word “throw” and thus he was saying “ball! ball!” because he wanted to throw and didn’t know how else to express himself. I said this in front of Caleb. Who promptly looked at me and said “throw! throw!”

That covers the milk & cookies and throwing balls — but trust me, don’t miss the story about the chocolate bitches. Just wait until she starts school and asks her kindergarden teacher for some!

I’m not your target audience

[in which I rant]

I’m not your target audience…

  • Radio talk shows: I don’t want brainless blather in the mornings. I turn on the radio to get music. If you’re talking, I’m changing the station or even turning the radio off altogether.
  • Work-related podcasts and videos: I don’t want information provided to me in a podcast as I don’t like listening to them. Ditto work-related videos. Just give me the transcript to speed-read through.
  • Control-less iPod Shuffles: I liked the concept of the first and second generation Shuffles — they seem great for working out or running and B loves his for that very reason. Then they moved to the Shuffle-without-controls which is a non-starter for me leaving only the Nano. Why would I want to buy proprietary headphones to control my music device?
  • Video on iPod/iTouch/iPhones: Nanos started out with a small screen that keeps getting bigger with each generation reportedly so people can watch videos and movies. Movies on such a small screen? Are you serious? Sure I watch the random movie trailer on my iPhone but I can’t imagine watching something more than 2 minutes on such a microscopic screen.
  • Animated web ads: I realize that web content isn’t free and in general I’m ok with ads on web pages. If it moves, however, be it via animated GIF, javascript, or (heaven forbid) Flash — you’re getting blocked. Ditto anything that does pop-up or pop-unders. Your ads should be relevant and unobtrusive (see Google Ads) if you violate either of those edicts you’re getting AdBlocked.
  • Flash-based webpages: I’ve long been an advocate of non-Flash based web pages. Flash is rife with security issues, browser compatibility issues, unstable, and based on the iPhone porting reports also resource intensive. If you’re still designing Flash-based web pages today you’re also alienating every single iTouch and iPhone user out there who can’t see your content. Die, Flash-based web pages, die — and take your evil twin Silverlight-based web pages with you.
  • Windows 7: I’m told you’re the best Windows yet. You’re stable and even have an XP emulation layer to run all of those XP apps that won’t run in Vista or native in Windows 7. Based on the customers I support via freelance: you’re still a solution looking for a problem. You won’t run on the hardware that we have happily running XP. The application versions we use, and work for us, aren’t supported on you. You’re years too late to the game. When XP downgrades finally become unavailable for new computer systems, you’re no longer the winner-by-default: we’ll be evaluating your actual merits against Mac OS X and Linux.
  • MS Office: I’ve converted two MS Office die-hards over to OpenOffice and they haven’t even blinked. OOo uses the tried-and-true menuing interface that everyone is familiar with, opens/saves your documents, and comes at an amazing price: free. What is it that you have to offer again?

X11 apps under Mac OS X and Fonts

One of the odd challenges I encountered with getting Inkscape working on Sebastian were the fonts. The fonts showed up in the usual slew of non-X11 applications but refused to show up in Inkscape. I admit to not have tried the Gimp in this state although I assume this is a fonts-in-X11-apps issue and not specifically Inkscape and thus the Gimp would have had the same problems.

A bit of googling resulted in this forum post that solved the problem nicely.

Macs present both a system-specific (under /Library) and user-specific (under [User]/Library) view of several system resources, such as Fonts. The concept being that a specific user can install a resource under their login ID ([User]/Library/Fonts) and that resource is only available for that user’s login ID. Logging in as another user would not expose those resources. The end-user helpfully sees a superset of both the System and User resources exposed to them in the interface.

If you want a resource made available to all users on the system you place them in the System resources instead of the User resources and in order to install a System resource a privilege escalation is required. Like any good OS this helps limit the damage that any given user can inflict to the system.

Extrapolating from my geek knowledge, it appears the core of the issue is how X11 interacts with user resources — or rather how it doesn’t interact with them. My suspicion is that the X11 subsystem only pulls the System fonts, and not the superset of the System and User fonts, which is the reason why moving fonts from the User resources to the System resources caused them to show up in Inkscape.

Next up on my Mac OS X to-investigate list: making printer defaults stick in X11 apps.

Working some PDF magic: CutePDF and pdftk

Over the past several years Benjamin has developed several documents for use with his business, Memento & Co. These documents are designed in Word and originally had the letterhead on them as well. This proved problematic when we moved because in order to update the contact information he had to open and change each and every document. Word doesn’t provide a way to single-source documents and we decided we needed to do this differently.

B had been using CutePDF to create PDFs of his Word documents for a while so I started poking around to see if there was a way to “merge” two PDFs together: we’d create one PDF with the letterhead that he could use to merge on the first page of Word document printed to a PDF. I discovered pdftk would do the trick. Using this technique B was able to design his letterhead in Inkscape and save it as a PDF document. Using Inkscape allowed for a crisp logo (also designed in Inkscape) and no longer required rasterizing the vector logo into a high-resolution image just to place it into a Word document! He could then run a VB script I write which would prompt for the PDF onto which the letterhead should be applied and the script called pdftk to do the actual work.

Now enter the move to Sebastian and Mac OS X. Initially the process seemed much simpler. OpenOffice can export to a PDF out-of-the-box removing the need for CutePDF. Automator can apply a watermark to a PDF but only if the watermark is a raster image, not another PDF. Moreover it doesn’t tell you that anywhere but simply doesn’t do anything to the desired file making it a frustrating task to figure out what was going wrong. Drat, we’d have to go back to pdftk.

Getting pdftk on the system was a bit more challenging as the program doesn’t come in a DMG. Luckily it is included as a port so the process was a simple ‘port install pdftk’. I then used the Automator to provide a Finder menu option that B can use to apply the letterhead to one or more files. The Automator calls a shell script that calls pdftk to do the actual work.