Thoughts On Keyboards

When Apple first released their wireless keyboard without the number pad attached I thought “What are they thinking?”. But having worked on a macbook with a small keyboard and an integrated touchpad, and then consequently getting neck pains from pad posture and switching to an external keyboard and monitor, I now see that having the keyboard right next to your mouse or track pad for both speed and ergonomics, is a really good thing.

I’ve since bought the small Apple keyboard for work, along with a Wacom Bamboo Touch for work, since I prefer it over a mouse (2 finger scrolling FTW!). I’m now selling/trading my Apple keyboard that I have at home with a number pad built in as its not for me, maybe for those doing a lot of a numeric entry (like when I worked in an investment bank doing excel all the time). Let me know if anyone wants it or want to trade for the small Apple keyboard.

With the Bamboo Touch, its not quite as good as an Apple touchpad. I would love an Apple keyboard with one built, just like a laptop. I had to turn off Add left and right taps to click and drag, and stick with the release fingers and retouch to have a click to keep the Bamboo Touch from detected accidental clicks, which the Apple one tends to ignore better. The texture isn’t as good as the nice glass Apple touchpads either, but I still prefer it over a mouse.

HTTP headers and raw POST data for PHP-CGI

I host my website on Dreamhost and as good value as it is, with great email/SVN/MySQL and hosting, there are some limitations. One of them is trying to read raw POST data from $HTTP_RAW_POST_DATA and the other is trying to read custom HTTP headers because PHP runs as a CGI module using there service.

I realised the working around for getting raw post data is to use:

$data = file_get_contents(‘php://input’);

And that you can use mod_rewrite to to pass HTTP headers to the $_SERVER variable, as described here. If you want to add additional header values, you must specify each one as a seperate E= statement in your .htaccess file. I was writing a CALDAV server and wanted to be able to (1) use the HTTP authentication described here, (2) read the “Depth” HTTP header, and (3) redirect all requests queries through a single php file:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [E=REDIRECT_REMOTE_USER:%{HTTP:Authorization},E=DEPTH:%{HTTP:Depth},L]
RewriteRule .* – [E=REDIRECT_REMOTE_USER:%{HTTP:Authorization},E=DEPTH:%{HTTP:Depth},L]

Mail.app RSS Smart Mailbox

If like me you have quite a lot of RSS subscriptions within Apple Mail.app you may find that you either get sick of navigating each RSS folder on the left individually but don’t want to put all your RSS subscriptions within your inbox. What I realised you could do is create a smart mailbox to only show read RSS items, greatly saving space in the left hand pane, and making it easy to navigate all unread subscriptions.

iSync icon after iTunes sync

For some of you this maybe so minor its not worth worrying about, but I really don’t like how if conflict resolver is shown when syncing my iPhone with iTunes, the iSync icon gets added to my menu bar no matter whether I click sync now or later after resolving the conflict. I’ve contacted Apple about this, but I recently found this article (http://www.tuaw.com/2009/11/02/mac-101-how-to-manually-enable-menu-extras/) that helps explain how to load menu items. What I’ve done instead is rename the sync menu item, so that it never gets loaded. Quick disclaimer, I’m not responsible for any damage to your computer using this command.

sudo mv “/System/Library/CoreServices/Menu Extras/Sync.menu” “/System/Library/CoreServices/Menu Extras/Sync2.menu”

iPhone Idea

My friend Janakan just got a Google Andriod. I think they’re pretty cool along with the Palm Pre and iPhone. Abduction on Google Android is great :-P

Anyway one thing the iPhone could improve is adding a central notifications area to show all push notifications. The way I’d see this working is to swipe right from the home screen to where spotlight/search is now, and show a chronological list of all notifications for all apps. Then if you start typing it starts to search your iPhone as usual.

US$150 Off Dreamhost Promo Code

I use the excellent Dreamhost webhosting service to host my webpage. Its use by my church and some other companies I work closely with and it has seriously good performance / features for the price.

I have 5 special promo codes that expire on the 16th of October. They get you $150 off signing up for 5 years or $200 off 10 years! 5 years might seem like a lot, but its a seriously good service, and they have a 97 day complete money back guarantee, so if you don’t like it you can leave. Normally the maximum is $97!!!

When you sign up here https://signup.dreamhost.com/ use one of the following promo codes, let me know if one doesn’t work and I’ll take it off the list.
027454987515
255736220221
976239709269
197256262936
970929354547

Apple Remote Control

I recently came across this utility for access the apple remote. It should be possible to use in shell scripts, applescripts and even Java as described here

I wanted to be able to have exclusive access to the remote and I found this discussion which showed me how to do it by changing the open command to use a 1 (this occurs in two places in the command.
ioReturnValue = (*hidDeviceInterface)->open(hidDeviceInterface, 1);

I have uploaded my changes here: http://jameslow.com/content/software/misc/iremoted.zip
How to compile is in the source code, but it took me a while to realise that, so here’s the command: gcc -Wall -o iremoted iremoted.c -framework IOKit -framework Carbon