Posts in the ‘Programming’ Category

The iPad

There has been a lot of nerd rage and fanboyism on both sides of the “is the iPad actually interesting” debate.  Of course, that means I’m going to subject you to my opinions on it. So, without further ado…

I have always had a love-hate relationship with Apple’s products.  They’re generally shiny and easy-ish to use, but they aren’t really meant for half of my computer usage (gaming), and it’s much cheaper to just build my own desktop myself.  Their “PC vs Mac” commercials anger me.  I’m very much against intrusive DRM.  All told, I’m simply not in their target demographic.

… Then I got an iPhone.  It’s a gorgeous little device.  The interface is intuitive and responsive.  The built-in apps are slick.  The App Store, while technically DRM-laden, does not intrude with its DRM (as I only own the one Apple device, and even so, apps are transferable to other Apple devices).  The App Store itself is extremely convenient.  It’s handy having an internet connection available on-the-go.

So what does that all mean with respect to the iPad?  Probably nothing.  I still don’t like Apple any better than I did before I got my iPhone… but they do make sleek products.

A lot of people are saying that the iPad is merely a giant iPod Touch.  Others are outraged at the implication, and go out of their way to point out every single minute difference in an attempt to show that the two devices are completely different.  The intent of this post is to show that I fall somewhere in between those two extremes, and to explain why my opinion falls there.

The first question to get out of the way is, “How is the iPad similar to the iPod Touch?”  Here is a short list of the similarities I see:

  • The iPad’s look and feel was deliberately designed to be similar to the iPod Touch and iPhone, both in software and hardware.
  • The iPad’s operating system is largely identical to that of the iPod Touch and iPhone; it merely contains some additional functionality suitable for a device its size.
  • The iPad is capable of running unmodified iPod Touch and iPhone apps straight from the App Store.

You could, in effect, use the iPad as nothing more than a giant iPod Touch, and you would see virtually no change in usage.

Let’s pretend for a moment that we want to make a device that is, literally, little more than a giant iPod Touch.  We take the existing device, and enlarge it to 10″ diagonal.  We upgrade the internal hardware appropriately for its new size, and we redesign the UI to take advantage of the additional screen space.  (We’ll say that these upgrades merely make it faster, rather than adding new features, so that it really is just a large iPod Touch.  Upgrading from 802.11g to 802.11n would fall within the scope of these changes, since no new functionality is obtained, but adding a built-in SD card slot would not.)  Let’s call this hypothetical device the iGiant.

The question now becomes, how is the iPad different from the iGiant?  (Stating the question in this matter actually addresses the crux of the issue – it lets us see whether the iPad is in fact an innovative device, or whether it is simply a giant iPod Touch with some UI polish.)  I’m going to further narrow down the question by explicitly discussing the wifi-only iPad, since I do not intend to purchase a 3G-enabled iPad.

So let’s see if we can figure out the differences here between the iPad and the iGiant.  UI differences are irrelevant, as the iGiant would, hypothetically, make virtually all the same UI upgrades.  Let’s see if we can list any features of the iPad that wouldn’t be on the iGiant:

  • Increased bluetooth capabilities.  The iPhone and iPod Touch are only capable of pairing with headsets or with other iP* devices, whereas the iPad is capable of also pairing with keyboards and, theoretically, other bluetooth devices, though a mouse is not supported.
  • Video output capabilities.  The iPad is capable of connecting to an external display.  Natively, the iPad will only mirror its display onto the external one, but the SDK allows for using the external display as a *second* display, which opens interesting possibilities for using the iPad as a control panel for whatever is being displayed on the external monitor.
  • Local file storage.  This makes it far easier to use the iPad as a writing tool.  While it would technically be possible to do word processing on the iGiant, its lack of local file storage would make the prospect cumbersome at best.  This can be seen in existing iPhone and iPod Touch apps (mostly for jailbroken phones) which attempt to enable local file storage by using the app’s configuration storage as file storage.
  • iBooks.  The iPad will come with an integrated eBook store, which presumably will not be available for iPhones and iPod Touches.  Some people will find the iPad’s screen to be better for reading than (for example) the Kindle, but that’s mostly personal preference, but the iPad will also enable additional content in eBooks like color pictures and video, which could make for some very interesting educational eBooks.
  • A few hardware peripherals.  The camera adapter is an interesting addition, allowing you to use your iPad as a photo organizer (the iPod Touch can’t do this without using your computer as an intermediary), and the same goes for the SD card adapter.  The keyboard dock is also interesting.

I can’t think of anything else, really, and Apple’s tech specs on their iPad page don’t give me any other ideas.

So based on this list, I would conclude the iPad is more than just an iGiant, but not by much.  Edit: You might be wondering why I dismiss the features I’ve listed as “not much”.  The reason is that the iPad doesn’t do multitasking, making real desktop-class usage impossible, and that in my opinion disqualifies it from being “completely different” from the iPod Touch.

Does this mean the iPad isn’t an interesting device?  Hardly; the larger touchscreen is by itself significant.  People have innovated quite a bit with the smaller touchscreens on the iP* devices we already have; I imagine we’ll see even more creativity when people get their hands on a larger interactive area.

All in all, I think the iPad is an interesting and tantalizing move by Apple, and it does have a lot of potential as a platform, but I don’t think it’s anywhere near the world-shaking innovation some fanboys seem to think it is.

Do I plan to get an iPad?  Probably.  The cheapest one.  It will be fun to play with, and I have some interesting ideas for apps that will be fun to tinker with even if I never sell them.

Visual Studio 2008 pricing

I was just looking at the pricing for Microsoft Visual Studio 2008 Standard Edition.  As it turns out, there are two pricing options:

- Full version ($299)

- Upgrade version ($199)

Alright.  You see that and you realize “Ok, self, if I have a previous version of Visual Studio, they’ll give me a discount for upgrading.”  But then you look at the “before you buy” note about Upgrade eligibility:

To qualify for upgrade pricing, you must be a licensed user of an earlier version of Microsoft Visual Studio or any other developer tool (including free developer tools, such as Visual Studio Express Editions or Eclipse).

(Emphasis mine.)  So to qualify for the “Upgrade” pricing, all I have to do is download and install free software – and one of the products that qualifies isn’t even Microsoft’s software!  (I guess they’re concerned people are migrating away from Visual Studio to Eclipse, so they want to give those users incentive to come back?)

That being the case, there doesn’t seem to be any reason to offer a “Full” version at all.  The product they ship you is virtually identical; they just change the packaging a bit.

Marketing at its finest.

Engineers, if they were like bad programmers

…Hey guys, look! I made the black hole generator we were theorizing yesterday! See? I just have to press this button and

This comes from a comment someone made on Slashdot earlier today.

The idea is that bad programmers sometimes come up with clever ideas, often without thinking through the consequences.  (Alternatively, good programmers sometimes come up with clever ideas but use them maliciously.)

For Reddit, the consequence was merely a slew of self-replicating comments on their articles.  For an engineer working on the Large Hadron Collider…

PHP Slicehost API

A couple of days ago I added a bunch of features to my Slicehost API interface class (for PHP).  Most of you are about to say “Uh, what’s Slicehost?”  Click here.  (They’re the server hosting company I use.  If you sign up, please use this referral link or put “heron@xnapid.com” as the referrer so I get a referral bonus :) )

Slicehost provides an application programming interface to let you control your hosted servers (”slices”).  This API can do everything from creating a new slice, to restoring a slice from a backup, to deleting a slice, to managing the domain name resolution settings on your account.  (So when I bought orderingdisorder.com, I used the API to automatically add the DNS entries to my slicehost account so “the internet” would know where to find this site, rather than adding the entries manually.)

Anyway, my PHP interface class is just a PHP class that lets you conveniently access your Slicehost account from the convenience of a PHP script.  My last update added the ability to create, reimage, reboot, or rename slices.

If you find yourself needing the class, you can download it here:

http://sourceforge.net/projects/php-sliceapi/

Or, you can grab it from the Subversion repository, if you’re into that sort of thing:

https://php-sliceapi.svn.sourceforge.net/svnroot/php-sliceapi/trunk

Project Euler

I like Project Euler.  If you’ve never heard of it, it’s a website with a few hundred math/programming puzzles to solve, and it keeps track of which ones you’ve solved, who else has solved them, etc etc.

Yesterday, I was working on solving one of the problems.  The way you know you’ve solved it is by entering the answer into the website, and they tell you if it’s right.

I wrote some code, ran it, and got an answer.  They said it was wrong.  So I double-checked my code, ran it again, and got the same answer.  Wrong.  I re-wrote the code from scratch, and got the same answer.  Wrong.

Finally, I got fed up and googled the answer.  Someone’s blog listed what they claimed was the answer – but it was wrong.

So I copied the algorithm used by that blogger, and ran it.  It produced my original answer.  Not the answer they posted on their blog – the same answer I had all along.

I submitted it again, trying not to scream in frustration.  This time, it was accepted.

I don’t know why the site didn’t accept my answer the first couple times.  I don’t know why that blogger posted the wrong answer but the correct algorithm.  I guess Project Euler just wanted to waste some of my time?

(If anyone’s interested, you can see my Project Euler profile here.)