One Bad Apple Spoils the Market

The tech-news side of the Internet is in an uproar because Apple rejected the official Google Voice application for the iPhone and removed other applications that interacted with Google Voice.  I believe that the blocking of the Google Voice application is absurd, probably violates anti-trust laws, and definitely does violate my belief in a neutral Internet (which is that ISPs and wireless carriers should provide a bit-pushing service and nothing more).  However, I think the bigger problem is that Apple has contol over what applications run on the iPhone in the first place.

The fact that mainstream tech media and knowledgeable users have not railed against Apple from the start for this practice is really a shame.  The practice of a device manufacturer controlling the content that can be experienced through their device is not new, but it is definitely not universal.  For example, all major game console manufacturers have a process by which games are approved for the console by the console manufacturer before it can be released.  This, in my opinion, is just as damaging as Apple’s control over iPhone applications.

Some readers may disagree, saying that the device manufacturers have a right to protect their brand by ensuring that sub-par games and applications are not available on their device, guaranteeing a good experience for the user.  My contention is that it is not their place.  Manufacturers of DVD players do not decide which DVDs can be published so that no one ever sees a bad movie on their DVD player.  Web browser manufacturers do not block web sites that use blink tags.  Radio manufacturers do not limit their radios to only tune-in top-40 stations (thank goodness).

I believe that Apple, game console manufacturers, and others could achieve their desired goal of ensuring a good experience on their device by certifying certain applications that have been reviewed, but not blocking un-reviewed applications.  This would work just like the Certified for Windows Vista program that Microsoft offers.  This way, when buying an app for your iPhone or a game for your Wii you could look for an emblem or seal that would let you know that Apple or Nintendo had reviewed the game and that they recommend it.  But, you would of course still be free to install any app or play any game that you wanted because, you know, the device is yours.  Another option, employed by Linux distributors and carried over to the embedded device space by Nokia on their N770, N800, and N810 Internet tablets is to have a standard repository from which applications can be downloaded that have been verified and reviewed by the distributor or manufacturer.  In addition to the standard repository they allow other software repositories to be added and queried as well.  So, by default any user that doesn’t know or care would only be using certified applications.  But, with a little configuration change they could be running software from other sources, certified by other people, and enjoying applications that otherwise would not be available to them.

To wrap this thing up I just want to repeat that the issue is not with Apple blocking a Google Voice application, but with Apple having that control over your device.  There are alternative models that would let Apple achieve their goal of quality applications without giving them unchecked control over your device.  Apple does not have to like the solution.  We need to give them no choice by making the consuming public aware of the situation.  Maybe this Google Voice uproar will reach enough people so that they’re at least familiar with the problem.  Unfortunately, the slickness of the iPhone will probably continue to win people over, regardless of the limitations.  We should not be okay with this.

OpenID Delegate Plugin for WordPress

I just upgraded my wordpress installation to 2.5.1 from 2.3.3 or something like that.  2.5 is very nice.  The upgrade was really simple and the new administrative interface is pretty slick.  I decided it was time for me to manage my wordpress installation with subversion so that later upgrades are a simple ‘svn switch’ away.  The process of switching was pretty easy because I had scripts in place for backing up and restoring all of the custom parts of the site.

As part of the upgrade I had to make sure that all of the plugins I was using were moved over properly.  The one plugin that I really use is the openid delegation plugin.  This plugin lets you use your wordpress URL when logging in to a site using openid.  All it does is put extra <link> tags in the <head> of your home page that redirect the open id request to your real open id server.  I use claimid.com for this purpose.

I had made a change to the plugin at one point because it would not put the tags on my home page because my home page is a ‘page’ and not a ‘post’ in wordpress terms.  When I originally made the change I sent a patch over to the original author hoping that he would incorporate the change and put the improved version on his page.  He never did.  While moving the plugin today I almost over-wrote my changed file with his original.  Now, my changes amount to 6 or 7 lines of code, but I really didn’t want to have to go finding out which wordpress objects and hooks I had to use to recreate my change.  To avoid this problem in the future I decided to throw it in to my repository.  So, if you use wordpress and you’re looking in to open id, check out the slightly improved openid delegation plugin for wordpress.

Put Up or Shut Up

Yeah, so I can no longer disillusion myself. Either I’m gonna start contributing code to Gnome or I’m gonna start poking my eyes out. I’ve been living on the fringe here for a little too long. Plus, if I want to go to Guadec, which I do, then I want to actually have contributed something useful. It is always very hard to figure out where to start. I’m deciding to start by implementing proxy support in the gnome panel applets that need web access. That way I’ll be able to get my weather information and other nice things when I’m behind the proxy at work. So, I’ve set up a web proxy (squid) on the server I have here at home and I’m going through it right now. I just compiled gnome-applets from CVS and I’m going to try and add support for this and supply a patch. We’ll see how far I get. It would be pretty nice to get this working because I hate not knowing the weather at work. I guess we do have windows, but who has the time for that? Alright – here I go.
Update: Alright, I’m an idiot. It turns out that they have support for going over a proxy already because they use gnome-vfs. I’m still not sure why they don’t work at work. I’ll have to investigate a bit. Well, at least I tried. I did sift through a bunch of the code and found where it was doing all of its stuff. Another day goes by and nothing to show for it. Time to watch some Family Guy.

PS – I’m one of those people that just don’t get Sifl & Olly.
PPS – That’s right John, I just wanted to do the trackback thing that bad.

None of Us is As Dumb As All of Us

Steve got me a thinkgeek gift certificate for christmas. I’m most likely going to pick up this photon light thing. But, I’m still not sure what I else I want to get. I would really like to get this poster, but I don’t think I actually have the balls to put it up at work.

Speaking of work, I’ve been tasked with rewriting the part of our product which actually does the content filtering (that is to say it keeps kids away from porn). For many reasons this is pretty exciting. One of the main reasons it’s so exciting is that it’s going to be written in C. I don’t get to write in C all that often, and it always has its own set of ups and downs. Plus, this piece of software is like the cream of the crop over here. I mean, the whole product is based around this one piece. Most everything else basically configures it and puts a nice GUI around it. I’ve decided to base it on glib as well. This should make my life a whole lot easier and make the lives of many future developers easier as well. Using glib should also make it easier to use DBus if we decide to go down that road. Right now we’re just using sockets to get data from one place to another, and it would probably be beneficial to wrap that all up nice with DBus. It’ll also be nice to not be writing a web GUI for a little while. It gets kind of tiring when everyone wants everything to be just a little different. I won’t have to worry about any of that during this project. I’m sure it’ll go well. I’ll take a day or two to get knee-deep in C and then I’ll be on my way.

I got a new pair of sneakers. They fucking kick ass. They’re asics onitsuka tiger something-or-others. I love it that they’re called ‘onitsukas’ because it sounds like ‘on it sucka’. I’m such a fool. I told everyone at work that they’re made for playing office bocce.

Oh, and I stopped biting my nails. I don’t really know why, I just noticed that my nails were kind of long one day.

Alright, I’ve decided to go with these 2 t-shirts [1] [2] from thinkgeek. I’ll have to thank Steve the next time I see him.

Subversion & Office Bocce

So, I got around to installing subversion on the server I have running at my house. So now this little 366MHz machine is my IMAP server andmy subversion server. I checked my office bocce site into it so that I can better keep track of changes that are made to it. The site amounts to being only a few pages long, but it has been a lot of fun to keep the stats with at work. I’ve registered officebocce.com and should have this code running up there in a week or so. If you are interested (I don’t know why anyone would be) and you want to see the code so far (even though it is in this kind of limbo state and is unusable) you can check it out of subversion with the following command: ‘svn checkout http://markdrago.redirectme.net:8000/svn/bocce/trunk bocce’.
Subversion is a pretty cool version control system. I like it better than CVS in most respects. It certainly gets past a lot of the issues that always creep up with CVS. I have to admit that I’m not exactly sure how the repository should be set up (I have 3 projects and 3 repositories), but it doesn’t seem to work correctly with more than one project in a repository. Plus, subversion repositories aren’t exactly like CVS repositories. But, when I put multiple projects in one repository the revision numbers went up together with each project. That is, if I check in project A and then project B, they should both be at revision 1. Then, if I update project A it should be at revision 2 while project B is still at revision 1. This doesn’t seem to be the case. An update to project A would bring both project’s revisions up to 2. Then an update to project B would bring both revisions up to 3. I’m not sure if this is the way it was meant to work, but I didn’t like it. So, multiple repositories for me. It doesn’t look any different from the client’s point of view really. That is, I could combine all 3 repositories into one and still access it at the same URI. So, we’ll see how it goes. If you’re interested in subversion, there is a free book about it available online.