New iPhone 3G S

So I bought a new 32GB iPhone 3G S this morning at a Rogers Plus store. Was painless and, since I give them so much money each month, I received the $299 pricing.

Different from last time is that the staff activated the phone before handing it over.

I plugged it into iTunes which offered to restore my previous unit’s backup and I’m good to go. Smooth!

iPhone OS 3.0, Tethering and Rogers

I thought I’d let everyone know that I upgraded my iPhone 3G to iPhone OS 3.0 yesterday and tethering Just Works™ over both Bluetooth PAN and USB. In fact, it’s much simpler to use than I expected.

I have an original 6G data plan with Rogers and according to their FAQ, this is a supported feature and I am not going to get a multi-thousand dollar bill next month. :)

Comparing Modern Sleeping Pads

I’m working on this table to compare sleeping pads. I am starting by putting together a table listing available options:

Sleeping Pad Comparison

Comparison of modern sleeping pads.
ProductSize (cm)Thick (cm)R-valueWeight (g)Price
Therm-a-Rest NeoAir Sleeping Pad Small51 x 1196.302.50260$150.00
Therm-a-Rest Z-Lite Sleeping Pad51 x 1302.002.20280$28.00
Therm-a-Rest Prolite Sleeping Pad51 x 1192.502.20310$79.00
T-Rest ProLite 3119 x 512.502.30370$70.00
T-Rest ProLite 4119 x 513.803.20480$79.00
Therm-a-Rest Prolite Plus Sleeping Pad51 x 1193.803.80480$79.00
MEC Kelvin Summer181 x 528.000.00555$40.00
MEC Kelvin 2.5153 x 512.502.50590$39.00
MEC Kelvin 3.8153 x 513.802.80645$45.00
Big Agnes Air Core182 x 516.404.10680$75.00
T-Rest Women ProLite 4168 x 513.804.10680$89.00
Therm-a-Rest Prolite Plus Sleeping Pad (W)51 x 1683.804.50680$89.00
Exped Downmat 7178 x 527.005.90855$155.00
Exped Downmat 7 Pump Sleeping Pad65 x 1937.005.90905$142.00
Exped Downmat 9193 x 659.008.001200$190.00
Exped Downmat 9 Pump Deluxe Sleeping Pad193 x 659.008.001250$174.00

Note: prices are approximate values in Canadian Dollars.

Oxford

Thursday Update: We are finally taking him home! :)

Wednesday Update: Oxford is being kept one more night to have his major wound cleaned again in the morning. Hopefully he will be home tomorrow. :|

Tuesday Update: The veterinary surgeon called to tell us that Oxford will not need surgery! He should be coming home tomorrow.

Monday Update: We heard from the vet that he is doing very well and should be ready for surgery on his paw Tuesday.

Oxford was hit by a car on Thursday, January 22nd. He is not out of the woods yet, but we think he will make it.

Oxford in the hall at the vet

Obama

As I listen to the speech being given by Obama, one line stands out for me:

As for our common defence, we reject as false the choice between our safety and our ideals.

This man is a breathtaking orator.

Tip: Use Rice to Dry Out Your Electronic Device

A client of mine in New York City recently dropped his iPhone in the snow where it stayed for some time before he noticed. Unfortunately, the unit no longer operated properly so he called AppleCare. After the usual attempt and a full wipe and restore of the iPhone, they then asked him to put his phone into a Ziploc full of rice for 3 hours. What a great idea! Since rice is a desiccant, this technique should completely remove any humidity from the device.

Sadly, this did not fix the problem. Luckily, Apple replaced it under warranty.

Solaris Shared Library Troubleshooting Notes

Recently I have been building a few packages under an OpenSolaris Zone hosted by Joyent. Ran into a few issues with shared libraries, so here are my notes:

Telling the Linker Where to Look

You will often get an error like ld.so.1: conftest: fatal: libreadline.so.5: open failed: No such file or directory. This simply means the linker can not find your library. The following command will tell the linker to append a new entry to the existing search path:  

# crle -u /path/to/lib/dir
You can retrieve the current configuration by simply running crle on it’s own, output should be something like this:
$ crle
Configuration file [version 4]: /var/ld/ld.config
  Platform:     32-bit LSB 80386
  Default Library Path (ELF):   /opt/local/lib:/opt/csw/lib:/usr/lib:/lib
  Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
Command line:
  crle -c /var/ld/ld.config -l /opt/local/lib:/opt/csw/lib:/usr/lib:/lib
 

Getting Yourself Out of Trouble

You can easily get yourself into a situation where your system is a brick by having an incomplete search path for the linker. For example, if you run crle -l /foo/path/lib, you will no longer be able to run anything at all since the linker will not find basic libraries it needs. I found a great post on this topic which instructs you do use the LD_NOCONFIG environment variable to tell the linker to use a default configuration. You can then fix the issue:

$ sudo crle -l /opt/local/lib -l /opt/csw/lib -l /usr/lib -l /lib
ld.so.1: sudo: fatal: libpam.so.1: open failed: No such file or directory
Killed
$ LD_NOCONFIG=yes sudo crle -l /opt/local/lib -l /opt/csw/lib -l /usr/lib -l /lib

OpenID With Your Domain

Since I will eventually be implementing OpenID in a commercial project, I thought I would go ahead and set myself up properly.

There are now a few free OpenID providers and I have setup my own account with VeriSign Labs Personal Identity Provider beta. Of course, I do not wish to expose the actual provider as my OpenID: what if I lose trust in them or they simply stop offering the service one day?

The solution to this is actually quite simple and allows you to use your own domain as your personal OpenID, exactly what I needed. The technical term is delegation and is fully documented. To implement this trick using WordPress, simply edit your themes header.php and add two meta tags. Of course you can do this with your software of choice, or even plain vanilla HTML. This is what I added to my blog:

<link rel="openid.server" href="https://pip.verisignlabs.com/server">
<link rel="openid.delegate" href="https://adam.sherman.pip.verisignlabs.com">

The above indicates that my personal OpenID is being delegated to https://adam.sherman.pip.verisignlabs.com which is hosted by the server https://pip.verisignlabs.com/server. Since the page at http://sherman.ca/ contains the above tags, I can now go to any site supporting OpenID (look for the logo: ) and simply use sherman.ca as my identifier.

I believe that OpenID’s time has come and I look forward to implementing it for some of my clients in order to give their users the ability to consume services without a registration page.

Unlimited Nothing

So Rogers (and their other brand, Fido) have Unlimited Data plans. And guess what? The fine print is so bad I do not know whether to laugh or cry. The Fido page says

The Unlimited surfing on your Fido option includes unlimited mobile surfing on your handset only and is only available on selected handsets (non-Fido certified handsets, WindowsMobile devices and PC cards are not eligible). Data usage incurred on ineligible handsets and devices, incurred while tethering (using a handset or device as a wireless modem or laptop) or incurred using non-Fido (third party) applications downloaded to your handset will be subject to pay-per-use charge of 5¢ per KB. Option applies within Canada only. While roaming outside Canada, data transmission charge of 5¢ per KB apply, except in the U.S. where data transmission charges of 1¢ per KB apply.

The Rogers page has a few good ones too, have a look.

This means that I can have unlimited data, but only on devices where I would likely not use much, right?

The Torontoist has an article on this subject.

Fancy Auto-Launching in Leopard

As mentioned in a previous post, Leopard uses launchd to automatically launch ssh-agent when needed. I just noticed that it does exactly the same thing for X11!

Try it: type xeyes in a Terminal window and watch X11.app magically launch itself. Very smooth. Relevant configuration is quite simple:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>        <key>Label</key><string>org.x.X11</string>        <key>Program</key><string>/usr/X11/X11.app/Contents/MacOS/X11</string>        <key>Sockets</key>                <dict>                <key>:0</key>                <dict><key>SecureSocketWithKey</key><string>DISPLAY</string></dict>        </dict>        <key>ServiceIPC</key><true/></dict></plist>

For more information on launchd, see the following man pages: launchd(8), launchctl(1) and launchd.plist(5).

A nice feature I was not aware of is the ability to put user-specific agent definitions in ~/Library/LaunchAgents, very cool.

blog
Pharmacy blog
buy soma
buy viagra
buy viagra online
cheap generic viagra
buy cialis online
buy cialis
buy levitra online
buy levitra
buy trial packs
buy propecia
buy propecia online
buy voltaren
buy cialis soft
buy cialis soft online
buy viagra soft online
buy viagra soft
buy acomplia
buy acomplia online

Quick Look on the CLI

A quick tip about using the qlmanage command to see the Quick Look preview of a file from the command line. Define this shell function:

ql(){
qlmanage -p $@ 2>/dev/null
}
Then you can invoke it as ql FILENAME when needed. Use C-c to exit.

Update: Scott left a great suggestion to use $@ instead of $1. This allows you to bring Quick Look up for multiple files. (It even provides a contact sheet view, nice.) Thanks Scott!

SSH Agent in Leopard

I received and installed Mac OS X 10.5 Leopard on Friday, now I’m getting used to it and will be posting a series of short notes about interesting features as they appear.

One of the first things I noticed is that Leopard seems to start ssh-agent at login. A little more digging reveals that this is due to a LaunchAgent provided by Apple:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>org.openbsd.ssh-agent</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/ssh-agent</string>
                <string>-l</string>
        </array>
        <key>ServiceIPC</key>
        <true/>
        <key>Sockets</key>
        <dict>
                <key>Listeners</key>
                <dict>
                        <key>SecureSocketWithKey</key>
                        <string>SSH_AUTH_SOCK</string>
                </dict>
        </dict>
</dict>
</plist>

The above causes the agent to be dynamically launched only when you actually need it. That is really cool!

Updated: I just read this hint which mentions that there is also a nice Cocoa ssh-ask-pass in Leopard! Funny thing is that I had seen the dialog a few times without noticing it at all, it seems to just be a normal occurrence. :-)

Quote of the Month: Steve Jobs on Spending Money

At Apple Inc.’s May 10 annual shareholder meeting, a member of the audience questioned Jobs on Apple’s relatively low figure of reinvestment in R&D, saying that he felt the company was missing low handing fruit with new product opportunities, particularly with the delay of Leopard. Jobs responded:

I wish it was just a matter of writing checks. If it was just a matter of spending money, Microsoft would deliver good products.

Terrific quote. :-)