Extra Pepperoni

To content | To menu | To search

Tag - computers

Entries feed - Comments feed

Thursday, September 11 2008

iTunes 8's Video Improvements, and Updated App Bugs

Update: Thanks to Dave Makower for a workaround. Per Dave's suggestion, I signed out of the Apple Store and signed back in as my account @mac.com. This is the default, so signing in with just my account (without explicitly typing @mac.com) should worked just as well, but apparently it doesn't. Thanks, Dave! I hope short names work properly in iTunes soon. Or perhaps it's just that I used a different login name when I initially downloaded the software...

Update 2: from Kevin Ross:

Hi, I'm emailing to let you know that I had similar problems updating apps. My solution was to go through the app store and "buy" every app over again. I did it with all my free apps first and they all upgraded fine, then I did it with Super Monkey Ball, iTunes saw that I already had it, told me so and said I wouldn't be charged, and installed the upgrade free of charge. Just a little tidbit to help you out in case Dave's workaround doesn't work later.

I just discovered that iTunes 8 makes large strides in handling videos. Previous versions were unable to change the Movie/TV Show/Music Video type flag, or set Show, Season, or Episode. v8 adds all these capabilities. I no longer need Set Video Kind from Selected from the most excellent Doug's AppleScripts for iTunes, and can now sort out imported video from iTunes' Get Info window.

Additionally, iTunes used to say it had over a dozen application updates for me, but fail to access my account or say I had none when I tried to get them. Now it shows me 19 updates, and seems to have the correct list, although it cannot actually install them. It appears to be something about upgrading free applications, which was broken last week (in different ways) too.

Here is what happens when I click Download All Free Updates:


Here is a bogus tooltip for Life (not necessarily related to the updating problems):


And a message telling me I cannot get Life 1.0.3, apparently because I don't have an earlier 1.x version of Life (actually, I have 10.0.1). I get this for every app.

Individually, I am able to upgrade free apps -- I don't mind paying their full price of "Free". I'm not willing to test Apple's bugs to find out if Apple they would really re-bill me for what should be free upgrades to purchased apps, though, as this erroneous message claims. Here iTunes told me I cannot get the free LifeGame for free; I get the same message for every app, free or purchased.

You do not qualify for this price.

To make the problem even more aggravating, App Store on the iPhone has the same issue -- when I try to upgrade Twitteriffic Premium or Toy Bot Diaries, it tells me I'll have to pay full price. I want those updates! I hope this is sorted out soon.

Thursday, September 4 2008

Open Source Is Beautiful: code_swarm

I never took that quite so literally as Michael Ogawa. Watch Apache httpd around December 2000 for my favorite bit.

Wednesday, August 27 2008

Firefox 3: Restoring http://www. .com URL expansion behavior

Firefox 3 defaults to searching words entered in the URL area. This makes sense, as the Mozilla Foundation makes a bit of money every time they send a search to Google.

I don't like this behavior, as there's a perfectly good Google box to the right. If I type in google/calendar, I want http://www.google.com/calendar/, not Google's search results for "google calendar". After some searching, I found out how to disabling this feature, but it wasn't in the first 10 things I found. So here's a breadcrumb for the next person who prefers to partial URL canonicalization rather than using Google as a keyword finder (shades of AOL!).


Also, on the subject of Firefox 3.0.1, here's the list of keyboard shortcuts, which appears to auto-customize to the browser's reported OS.

And my first Firefox 3 bug: I was unable to cycle to the left of the left-most tab with Command-Shift-[; after I had cycled past the right-most tab, I was suddenly able to go past the left edge. Bizarre.

Tuesday, August 26 2008

Time for More RAM

pepper@prowler:~$ top -l1|head -7
Processes:  105 total, 3 running, 4 stuck, 98 sleeping... 439 threads   20:08:26

Load Avg:  0.68,  1.05,  1.10    CPU usage: 22.86% user, 42.86% sys, 34.29% idle
SharedLibs: num =    4, resident =   41M code, 3032K data, 3172K linkedit.
MemRegions: num = 39625, resident =  824M +   20M private,  207M shared.
PhysMem:  269M wired, 1159M active,  554M inactive, 1990M used,   58M free.
VM: 16G + 374M   5256473(0) pageins, 1406422(0) pageouts

A pair of 2gb DIMMs are en route from NewEgg, for $75.

Wednesday, August 20 2008

MySQL Initial Setup Crib Sheet (RHEL5)

Update 2008/08/22: There's actually a simpler command to create the database, once MySQL is secured and the account exists:

mysqladmin create newdatabase -u existinguser -p.

To test Movable Type, I needed a new MySQL installation on a CentOS 5.2 (equivalent to Red Hat Enterprise Linux 5.2) system. Here's a crib sheet with the steps I took to set up a new MySQL installation.

Get and Start the Software

  • yum install perl-DBD-MySQL mysql-server # Install MySQL server and the DBD perl module that Movable Type needs to talk to it.
  • service mysqld start # Start mysqld (the MySQL 'daemon', or server).
  • chkconfig mysqld on # Set mysqld to run at boot in future.

Secure MySQL

MySQL uses internal accounts which are totally separate from UNIX accounts. My MySQL installation came with 3 distinct root accounts (without passwords); a RHEL4 system configured MySQL with a pair of anonymous accounts! The MySQL RPM suggests securing the default accounts with mysqladmin, but the website points out that mysqladmin doesn't get all the accounts. Fortunately MySQL offers instructions on how to secure the initial accounts manually.

mysql> select host, user from mysql.user;
| host           | user |
|      | root | 
| localhost      | root | 
| mmm.reppep.com | root | 
3 rows in set (0.00 sec)

In WordPress, each blog has its own account and database (that's how I configure them, anyway). In Movable Type, a single account & database will be used for my whole Movable Type installation, which makes administration simpler.

  • Secure both root accounts by setting strong passwords.
  • Delete both anonymous accounts.
  • Create a new account for the blog.

To make sure I really did configure a required password for root, I logged out of MySQL and then tried to login without a password (which is how got in initially). This failed, telling me I had successfully disabled passwordless root access. Then I logged in as root with a password, to continue setting up MySQL tables. Note that I never supply passwords on the command line, because that's insecure. Instead I supply the password when prompted by the mysql command, which keeps it out of command history and ps output.

  • mysql -u root # Log into MySQL, which doesn't yet have a root password.
  • Delete the non-localhost root account.
  • Set passwords for root@ & root@localhost.
  • Log out of mysql:
[root@mmm ~]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> drop user 'root'@'mmm.reppep.com';
Query OK, 0 rows affected (0.00 sec)

mysql> set password for root@ = password('unencryptedpassword');
Query OK, 0 rows affected (0.00 sec)

mysql> set password for root@localhost = password('unencryptedpassword');
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
[root@mmm ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@mmm ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> exit;
[root@mmm ~]# 

Create a MySQL Database & Account for Movable Type

mysql> create database movabletype;
Query OK, 1 row affected (0.01 sec)

mysql> grant all on movabletype.* to movabletype@ identified by 'unencryptedpassword';
Query OK, 0 rows affected (0.00 sec)


I'm not covering MySQL backups here, but I use http://sourceforge.net/projects/automysqlbackup/.


  • use movabletype;
  • create user dotclear@localhost identified by '****';
  • grant all privileges on dotclear.* to dotclear@localhost;
  • show databases;

Monday, August 18 2008

Red Hat Kickstart without DHCP

Red Hat Kickstart is the right way to install RHEL, but Red Hat's Linux documentation assumes the host can boot via DHCP. If DHCP (or bootp) isn't available, there are some obscure options to provide the network configuration on the linux command line (at the boot: prompt). These options are ip, netmask, gateway, and dns, as in:

linux ks= ip= netmask= gateway= dns=

I found several pages of kickstart docs which are missing these options, but they are listed on http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Installation_Guide-en-US/s1-kickstart2-startinginstall.html.

Thursday, August 14 2008

Suggested iPhone apps

Frank just got an iPhone, so I was listing off suggested apps, and decided to post the list. Almost all of them are free.

  • NetNewsWire/iPhone: RSS reader which synchs with NNW on Mac, FeedDemon on Windows, and Newsgator Online; all are free
  • Instapaper: Multi-computer bookmarking service -- links to http://www.instapaper.com/
  • (paid) Twitteriffic Premium (Free shows ads): http://twitter.com/reppep
  • Stanza: ebook reader
  • Remote: iTunes & AppleTV control
  • (paid) TouchTerm: ssh client
  • (paid) pTerm: ssh client
  • Facebook
  • AIM (just for free SMS)
  • Now Playing
  • Scribble: need a drawing program to play with Julia
  • Shazam: identifies recorded music the iPhone can "hear"
  • Shakespeare: complete works
  • Yelp (Amy likes)
  • Google


  • (paid) Toy Bot
  • Phone Saber
  • Fire Drop
  • Moonlight Mahjong Lite
  • Labyrinth LE
  • Life
  • Tap Tap Revenge
  • Advent (I don't play it, but keep it for the ecstasy it will someday induce in an old Zork fan)

Thursday, August 7 2008


I've been a serious BBEdit user for years (I suspect a beta password many years ago was a joke at my expense). I use vi daily but am not a fan, and I find emacs inexplicable. As an system administrator, editing text files (typically configuration files and scripts) is a large part of my job.

So spending my days using Windows, with no BBEdit, was a concern.

I used kate a bit, and it's not bad, but it's limited (cannot even compare 2 windows!), and Exceed's Copy & Paste support is extremely erratic.

Many people suggested UltraEdit, but due to an installer issue, I was unable to use it. That issue has been fixed, and I got it running today. I'm quite impressed, although I have already discovered that its sorting capability is downright feeble compared to BBEdit's GREP-enhanced sorting. I see that UltraEdit offers 4 different flavors of Find & Replace: Plain, perl regex, UNIX regex, and UltraEdit regex. This seems crazy to me -- I consider anything that's not 100% backward-compatible with PCRE a bug, but I am not selling to a population of users who live in MS Word.

Truly weak: Find for $ doesn't work properly in perl regex mode with UNIX line endings.

I am both impressed and mildly aggravated. UltraEdit is much better than anything else I've used on Windows (or Linux or Solaris), but it's also less polished than BBEdit. I'm not sure how much of my frustration is because I have the advantage of years of experience of BBEdit -- compared to only a few hours to learn UE so far -- and how much is real deficiencies and lack of polish in UE.

Monday, August 4 2008

Indirection in Configuration Management

"Give me a place to stand and a lever long enough and I will move the world."

I was grumbling under my breath at a configuration management system today, and reminded of this wonderful statement by Archimedes.

Configuration management is the discipline of building systems which manage other systems -- cfengine is a well-known open source example. I needed to reboot a few hosts on a regular schedule -- easily handled in 5 minutes with "vi /etc/crontab" on each, or an ssh loop to append to the crontab on each affected system. I was struck by how many levels of indirection I needed to traverse to get this done with configuration management. This in turn prompted some thought about why jumping through the various hoops was worthwhile.

There are many excellent reasons to use configuration management:

  • Time savings -- over repeating the same actions over and over; this increases with the number of hosts involved.
  • Consistency -- configuration management ensures that (portions of) systems which should be identical really are.
  • Reproducibility -- because CMS is naturally tied into version control, it is easy to either examine or recreate the state of affairs at an arbitrary time in the past.
  • Modeling -- a CMS ends encompasses a representation of all the systems it manages. This efficient representation of those systems is quite useful for examining and comparing them. It's especially useful with a large or dynamic population of administrators, as it provides a single place to learn about the whole constellation of systems, and enforces some consistency among the various ways admins can manage systems.

In the simplest case, to make a machine reboot once, I could pull the plug and put it back (assuming I was near, or could get to, the machine). In a non-CMS scenario, I would do it with ssh and the shutdown -r. In this case, it was considerably more involved:

  • Launch PuTTY.
  • Log into a system with a checkout of the CMS configuration files.
  • Find the appropriate file (non-trivial if the managed constellation is complicated).
  • Fetch the latest version of the file (with multiple users, it's unlikely my checkout is current).
  • Edit the file corresponding to /etc/crontab or /var/spool/cron/root (I used kate, as I don't enjoy either vi or emacs, and BBEdit wasn't available); kate popped back an X11 session tunneled through ssh.
  • Create a pair of local machine sets in the file (cfengine calls these 'aliases'), each including half the covered systems (the systems reboot at staggered times, so they're not all down at once).
  • Create the pair of crontab lines, one for each machine set, embedding the pair of different reboot times and the shutdown -r command.
  • Check the modified crontab file back into the version control system; enter a message for the change log.
  • In a distributed CMS, staging hosts pick up the changes from version control, either on a schedule or when manually kicked for emergency/rush changes.
  • The affected hosts pick up the change from the CMS, and implement the specified change.

The reason Archimedes' quote is apropos is that configuration management provides excellent leverage -- I can edit one file in one place, and easily affect several systems (potentially hundreds or thousands). Each hoop I have to jump through provides an additional fulcrum. I can sit at my desk and use PuTTY to log into dozens of systems, across the world -- without even knowing where they are. Each change I make to the version control system is automatically picked up by every host participating in the system, and available to every admin with a checkout. I don't have to log into 8 machines (even uninteractively) to make them reboot -- I can orchestrate it all from my local workstation.

Unfortunately, mistakes are leveraged too; there is often no good way to test changes to production systems during business hours. If the changes are restricted to non-production hours, when the admin might not be around to monitor them (and shouldn't have to -- it's an automated system, after all!), the window could be closed by the time the admin sees whether the change was successful. Missing a change window can easily defer a change 24 hours.

iPhone 2.0 Subtleties

I upgraded to iPhone OS v2.0 a while before I got a 3G iPhone (very worthwhile for me, since I spend most of my time outside Wi-Fi coverage now). Since the upgrade, I have noticed a few things which I have not seen mentioned elsewhere.

Continual pseudo-GPS updating in original models

On my original iPhone under iPhone OS v1.x, tapping the crosshair button in Maps used to locate me -- the button turned blue while the iPhone was fixing my location, then turned grey again when done. To update my location I had to tap the button to get a new location fix. Under v2.0, after tapping the button it stays blue, and the iPhone updates my location automatically until I tap again (to turn it grey and switch location auto-updating off) or exit Maps. This is well-known on 3G models, but I was surprised and pleased to see auto-relocation on the original iPhone.

Pause to rotate (walker unfriendly)

Under iPhone 1.x, I could rotate the iPhone to re-orient Safari while walking. Under v2.0 the iPhone does not reorient while I am walking -- I have to stand still for it to notice the change in orientation and rotate. Annoying, as it means I will have to stop in the middle of crowds to trigger rotation.

More switches to iPod.app when resuming music playback?

Under v1.x, after a sync or reboot, the first time I hit the earphone button to start music playback, the iPhone would switch into iPod mode, but I could stop and start without switching into iPod mode. I have a feeling that it switches into iPod mode sometimes now (after I first started and stopped playback), at times when it would not have before. This is unconfirmed, though.

Upside-down for iPod videos

I believe this changed from v1.1.4 to v2.0, but could be wrong about when. In earlier software versions, iPod movie playback only worked when rotated 90° counterclockwise. Alex hates this, as it puts the speakers behind your right hand. With v2.0, iPod movies can also be played back 90° clockwise, which puts the speakers under the left hand. YouTube still only works counterclockwise, though.

Loss of background functionality with apps vs. Safari

I am very happy with NetNewsWire, Twitteriffic, and Instapaper, but iPhone 2.0 doesn't let them run in the background. This means NetNewsWire and Twitteriffic always need to update when I launch them, as opposed to the Mac apps which update automatically in the background. It also means I cannot multitask -- when I was using NewsGator Online and m.twitter.com, I was able to switch between Safari tabs and Mail, and keep them working in the background as I switched to whichever was done. The apps are much better than the webapps, but the regression of having to wait really bugs me. Fortunately it's lessened somewhat by the 3G iPhone's improved update speed.

Another disappointment is that neither NetNewsWire nor Twitteriffic supports rotation. I thought Apple didn't support it outside Safari proper (both NetNewsWire and Twitteriffic incorporate the WebKit engine Safari uses) until I realized Instapaper supports rotation, and Stanza supports rotation (even upside-down, which Safari does not). I'm sure there are real reasons Brent & Craig have not yet provided rotation in their apps, but as I understand it, they are not allowed to discuss them, or how Instapaper & Stanza do it -- even under NDA, despite the fact that this is released software!

On the other hand, reading Slashdot via NewsGator Online stunk. The delay to get each article was very aggravating, and NGO was useless on the train. NNW/iPhone makes reading Slashdot a pleasure.

Also, Remote is great.

Sunday, July 13 2008

Today's Linux tip: "yum localinstall"

I needed to install the Citrix ICA client on CentOS 5.2 (RHEL 5.2), but it has very strange dependencies -- it complains about a version of libXaw which is present, demands an older version of libXm, and requires manual installation of openmotif 2.2.

The trick (thanks, FriedChips!) was yum --nogpgcheck localinstall ICAClient-10.6-1.i386.rpm, rather than rpm -Uvh yum ICAClient-10.6-1.i386.rpm. This way yum chased the dependencies for me, and didn't refuse to install the unsigned Citrix package.

Next I associated launch.jsp with /usr/lib/ICAClient/wfica.sh -- Citrix should have used .ica instead, because .jsp is used for other things. IIRC, EMC NetWorker used .jsp to launch their graphical console.

Unfortunately the ICA client insists on being wider than the physical display, but I can work around that. I wonder if it's because I simultaneously connected to the same XP system via RDP from both Linux and a Mac with different resolutions.

Update: Citrix is fixed on the size of my MBP's 1440*900 main display, which means it doesn't fit properly on the MBP's external 1280*1024 (or landscape 1024*1280) or my Linux box's 1280*1024.

Annoyingly, Citrix assigns the Mac's Command key to Alt on the Windows host. This doesn't work well, because although they avoid most Command key combinations in the ICA Client, Command-Tab switches Mac apps rather than Windows windows. Guys, just use the Option key! It even says alt on it, and nobody needs that key for Mac specific functions! Today's happy discovery: Command-Option-Tab switches Windows apps.

Next I have to figure out how to de-assign Alt-Tab from switching virtual workspaces in KDE. Copy & Paste don't work consistently when connected from KDE either, presumably because some events are being interecpted locally and others are being passed through. I won't need to use KDE as a Citrix terminal for much longer, though.

Crud. After all that, the Citrix ICA client doesn't display most text, making it useless. I can get some things to display by selecting them, but many things (including dialog boxes) are un-selectable. Junk!

Friday, July 11 2008

iPhone Apps: First Impresssions

I've been waiting for NetNewsWire for iPhone since I first heard of it, and have already registered Twitterrific Premium, which is very slick (although I'm not sure how GPS or photos work). I am somewhat disappointed that NNW/iPhone doesn't proactively download updates; that's one of the nice things about NNW on the Mac -- it's always pretty current, and I never have to wait for an update. On the iPhone, where I may not even be able to get an update on the train, it's problematic. I was hoping NNW/iPhone would proactively sync feeds, so I could use it on the subway while out of coverage, but no joy.

Twice, all apps have failed to launch until I rebooted, and I've had a couple unexpected reboots.

Most apps are very slick, although AIM and iMaze both disappoint. Very much looking forward to using Remote for real, and wondering if I should have gotten an Apple TV for our living room stereo instead of an AirPort Express/n...

There's a trick to replacing the 4 persistent apps in the Dock at the bottom: you cannot drag into the Dock to bump them out of the way; instead you must drag something out of the Dock to make room first, and then you can drag an app into the free space.

It's annoying that deleting an app from the iPhone leaves it on the Mac; moreso that re-synching re-installs the app on the iPhone and forces a full (slow) backup of the iPhone. Adding insult to injury, I cannot control-click an app in iTunes to re-install it, or get rid of the confirmation on every deletion from iTunes.

The AIM client stinks. Not sure if it's push enabled, but it has serious flaws and bugs, both.

Moving apps around Springboard is a bit buggy. As I moved them from one screen to another, Springboard moved a bunch of extra apps to later screens -- many more than were actually necessary to make room. I always have 7 screens of apps, even when they all fit on 6. Under 1.1.4, there were no empty screens -- empty ones were automatically removed; I preferred that behavior.

I expect to get an iPhone 3G Monday -- can't do it this weekend.

Where's the OpenSSH port?!?! I do hope Apple didn't reject a submission...

Update 2008/07/12: The extra screen is correct. When in app rearrangement mode, the iPhone always provides an extra screen so I can move apps there; in normal mode the extra screen goes away.

Wednesday, July 9 2008

reppep service interruption

Ouch! At 10:31pm last night, I started patching both Linux servers running reppep and associated domains, prompted by Rich's BIND alert. At 12:33am, www.reppep.com finished installing approximately 255 CentOS patches (including BIND), and I rebooted. Everything looked fine, and I went to bed. This morning, I thought it a bit odd that I didn't have any new email, but not that unusual.

Melissa left me a message that mail wasn't flowing, but I couldn't fix it at work. Tonight I discovered that amavisd-new, which handles filtering for reppep email, was unable to start. Strangely, it was complaining about the Compress::Zlib perl module, which was actually installed (version 2.008, via the perl-Compress-Zlib-1.42-1.fc6 RPM). Some more digging indicated Scalar-List-Utils-1.19 needed to be reinstalled, which enabled amavisd-new to start (it checks for Compress::Zlib and refuses to start if it finds something wrong, which was apparently triggered by the Scalar-List-Utils issue).

mailq showed me postfix was now getting errors from amavisd-new about MIME::Parser and File::Temp. CPAN reinstalled MIME::Parser and said File::Temp was already current.

I bounced amavisd-new again, and tried postfix flush. Over the past 15 minutes, postfix has delivered the ~~650 outstanding messages, and all seems well.

Separately, Alex noticed our blogs were inaccessible, but bouncing BIND tonight cleared that -- odd, as I checked http://www.bertpepper.com/ and got valid DNS resolution from both nameservers immediately after patching, but obviously something I didn't notice was still scrambled.

Anyway, at 8:45pm, all seems present and correct.

Sorry for the disruption!

Wednesday, July 2 2008

Halo 2 & 3 Done

Thanks Lyman!

Now I'm letting myself be be sucked into trying GTA (IV).

Monday, June 16 2008

Gaming Defensively

I have a compulsive personality, I like finishing things, and I enjoy computer games. I have developed a simple set of rules to avoid blowing all my time gaming.

  1. I test games written by friends. I only have 3 friends who have written games. Howard wrote Spectre and Gridz, but was distracted running an ISP for a while. Andrew wrote Battle-Girl but we're no longer in touch. Peter wrote Greebles, but doesn't currently appear to have any plans for further game development. So I haven't spent much time on friends' games in several years, although beta testing gets pretty involved. I also played several Delta Tao games, and might even try Return to Dark Castle.
  2. I play coin-op games. The sad thing here is that for years as a kid, I wished I could afford to spend a lot of time playing arcade games, but didn't have lots of money to blow on it. Now that blowing a roll of quarters isn't a big deal, I don't have much interest or time, and don't live near any arcades.
  3. I play Marathon; I played through Marathon 1-3, and Halo 1 (really Marathon 4). Last week I bought an Xbox 360 (my first gaming console ever) to play Halo 2 & 3 -- I'm waiting for Lyman's extra 20gb Xbox hard drive and VGA cable so I can get started with Halo 2. Unfortunately I'm not good at FPS games, so it will probably take me a long time to work my way through Halo 2 and then Halo 3. My intention is to sell the Xbox after Halo 3, assuming it has any resale value at that point.
  4. I don't sweat the small stuff. When Luxor came out, I spent a few hours playing the demo, then deleted it. On the Xbox, I'm playing demos and freebies (which tend to come with 1-3 sample levels -- pretty anemic) while I wait for the hard drive so I can play Halo 2. Halo 2 was only released for Xbox, not 360, so it needs to download patches from Xbox Live and store them on a hard drive; the 256mb flash card that came with mine is inadequate.

These rules keep me from sinking my life into video games. Also general lack of time, especially as a parent.

Sunday, June 15 2008

iPhone 3G Economics

Steve Jobs announced that the iPhone 3G would be "Twice as fast. Half the price".

Ever since Om Malik's interview with AT&T's Ralph de la Vega, people have been noticing and commenting on the fact that this ignores the mandatory 2-year AT&T contract, and in fact iPhone 3Gs will generally cost more, thanks to the higher monthly fees.

Unfortunately, Amy doesn't want my original $400 iPhone -- perhaps a friend who can't justify the 3G charges will buy it for $100.

The $300 16gb iPhone 3G will be worth the money for me -- I spend a significant amount of time each day waiting for pages to load, and still take a Treo 650 & Bluetooth GPS unit on driving trips. But I'm disappointed in Apple for choosing a clearly misleading catchphrase for a product which doesn't need deceit and customer confusion to sell well.

I don't use SMS much, but I do sometimes, and I don't want to worry about the astronomical per-message costs, so I like the $5/month flat rate plan. And I certainly want the $30/month unlimited 3G data plan.

Fortunately, I'm now able to drop back from the 900-minute/month plan I upgraded to, down to the base 450-minute/month plan, which will save $20/month, and nicely offset the additional $15/month for unlimited 3G & 200 SMS.

Now that AppleCare has failed me, and the iPhone isn't as much of a hardware investment, and I don't walk outdoors across campus (drops on carpet are much less destructive than on asphalt or concrete outside), I've decided not to purchase AppleCare or a case for my new iPhone (my 11-month-old plastic incase protector is falling apart, and kept the iPhone from fitting in any dock). I like the idea of leaving the iPhone charging in its dock overnight, rather than lying on a night table.

So with the new iPhone, I'll save $70 on a 2-year AppleCare contract and $30 for the case. This is enough to pay for MobileMe service. Hopefully it will be solid, as opposed to the current .Mac service, based on the unreliable iSync.

I wonder how much turn-by-turn GPS with spoken directions will cost on the iPhone. I know TomTom and Garmin are quite interested, and Google Maps can do real-time driving GPS without spoken directions -- I don't know what the iPhone options will be, though.

I have a couple large questions. First, how well will MobileMe work? Second, how much will turn-by-turn GPS with spoken directions cost? Hardware GPS units are in the several-hundred-dollar range, while Google offers free or cheap GPS with directions but no speech. I'm looking forward to seeing what is available using the iPhone SDK.

I'll have a much faster iPhone (and probably OpenSSH -- hooray!), and next time an attractive upgrade rolls around, I won't have $500 invested in the previous generation.

To sum up, I'll save $20/m on extra minutes, and pay an additional $15/m on 3G data & SMS. I'll save $100 on protection, and pay $100/year on MobileMe. If things don't change over the next 2 years, I'll end up paying $40 more, which isn't bad, but also isn't "Half the price."

Monday, June 9 2008

This Must Be 2008 -- Blogs Are Everywhere!

When Amy mentioned to Joyce (of Scarce) that she now has a blog, Joyce was amazed and impressed at how cutting-edge Amy is. There's definitely a geographical factor here, because at my picnic earlier the same day, we figured out that of the 6 adults and Julia present (all Brooklynites), every single one of us has a blog.

Devjani's is firewalled. Julia's Journal runs on hand-crafted HTML rather than blogging software, but that's because it dates back to mid-2002; I will move it over at some point. Sharon has two. In addition to Extra Pep, I edit Securosis.

Thursday, June 5 2008

Childhood dreams fulfilled

Being the compulsive sort, it bugged me whenever I missed an episode of a TV show I watched (I used to watch a lot of TV; now not much). Similarly, it bothered me that I didn't have complete sets of the comics I read -- they were both hard to find and expensive, especially since I almost never started at the beginning.

Inspired by Ernie Cline, I've recently been watching Airwolf. It hasn't aged well, and was never great storytelling, but it's still enjoyable. And it's nice to see as a coherent whole over weeks, rather than scattered across years with commercial interruptions. I'm in the middle of season 2, and will skip season 4 (I don't think I ever saw it, fortunately); don't know about season 3. Perhaps I'll watch The Fall Guy next!

Nowadays, with the Internet, back issues of comic books are pretty easy to find. I've completed a few series that were missing issues, such as Badger crossovers, Dynamo Joe, and Tailgunner Jo. I'd love to collect various other series, but a full run of X-Men would be prohibitive -- both in terms of money and time to read them all!

I was pleased to discover Marvel made several of their more popular titles available to GIT, who released them on DVD. Unfortunately, the license was terminated in favor of Marvel's online service, but some DVDs are still available. James gave me Ghost Rider for my birthday, and despite some aggravations (they photographed the open comic books, so there's dead space around the corners, and didn't bother to split left & right pages, so it's too awkward to read in single-page portrait mode) which make the comic harder to read than it should be, I'm enjoying the old Ghost Rider issues. It's amazing what a loser Johnny Blaze originally was -- he's an idiot (sloppy writing), a coward, a regretful devil dealer, and not really faster or more skillful than gang members. As time has gone on, and Marvel has super-sized its characters, Ghost Rider and his cycle have gotten faster, stronger, less human, and ironically much more innocent.

Wednesday, June 4 2008

The Serious Shit

At Wheaton, I helped found the Progressive Alliance, a student political club. I don't remember most of the members (in fact I no longer recall the names of most of my classmates), but Kirsten Cappy was one of the heads -- one of two co-presidents, if I recall correctly -- and Steve Amster (a good friend to both of us) got me involved.

As the nerdiest Progressive, I ended up laying out The Serious Shit in PageMaker. Articles were of course always late, so I remember having to shorten articles I'd just stretched out to fill space, in order to fit post-deadline content onto the page (issues were one to two pages, letter or legal sized).

The Shit was posted on the bathroom stall doors, where we had a guaranteed audience with time to read. I don't recall much more about it, although if Jason Snell revives my old 210mb hard drive, I might get some old issues back -- unless they're on my 6 even older 44mb SyQuest cartridges.

The other thing I recall about TPA & TSS is that my mother convinced me that if I listed "Progressive Alliance" as an activity on my resume, people would decide I was a Communist and not hire me. I don't remember if I took her suggestion and called it "The Humanist Alliance", or simply left it out entirely. There was never any question of listing The Serious Shit on the resume -- I never interviewed for a job where that would have been a plus.

Fortunately, after my first job at Rockefeller University, I had more relevant things to put on my resume, so the Progressive Alliance dilemma quickly became a non-issue.

Thursday, May 22 2008

Nicer Batch Encoding with HandBrake

A while ago I posted a script for driving HandBrakeCLI. But it was lame that I had two not-quite-identical versions of the script -- one for iPhone output and another for Apple TV. At a guess, Brian Beardmore only needed one type. Now that we watch movies on the Apple TV and I watch on the iPhone, it was silly to have two different scripts. So I added simple argument processing.

hb.sh v1.0.3

If there first argument is iphone, then hb.sh optimizes for iPhone. If the argument is appletv or there are no arguments, hb.sh optimizes for Apple TV. It's very easy to tweak or add your own types -- just look for myArgs in the script and add or adjust as desired. I run this script on my Linux server, which has lots of disk space and is generally idle.

On my MacBook Pro, I have a couple aliases to facilitate things. I copy DVD folders to ~/tivo/tivo-inspector/input and run one of these. When done, the script opens up ~/tivo/tivo-inspector/. I move the DVD folders out of input and the processed .m4v video out of output; then I drop the .m4v files onto iTunes' LIBRARY area (so it doesn't stop whatever it's currently playing) and check iPhone videos to sync to the iPhone (the Apple TV has plenty of space, so everything syncs to it). Note that these lines may be too wide to display properly in WordPress -- just Copy and Paste, and you'll get the full text.

alias hbatv="ssh -t inspectore time screen bin/hb.sh appletv; open ~/tivo/tivo-inspector"
alias hbip="ssh  -t inspectore time screen bin/hb.sh iphone;  open ~/tivo/tivo-inspector"

Note that inspectore is the name of my Linux server. This would work just as well with HandBrakeCLI on a Mac "server" -- or even Windows, if you set it up to accept remote commands (CygWin, anyone?).

Reminder: You must adjust the inputSearchDir and outputDir paths for the running HandBrakeCLI.

pepper@inspector:~$ egrep tivo bin/hb.sh

In the future version I'd like to support for arbitrary HandBrakeCLI arguments on the hb.sh command line, but I first have to see if HandBrakeCLI can handle gracefully conflicting arguments from built-ins and the command line.

- page 2 of 11 -