Posts in the ‘Programming’ Category

On Xcode

From Apple’s Xcode description: “Xcode is… a productive and easy-to-use development environment, and is the same toolset used by Apple to produce Mac OS X and iOS.”  If that’s true, I pity everyone who works at Apple.

You see, Apple has a… creative… definition of “easy to use”.  They’ve redefined it to mean “backward and counter-intuitive even when it’s not actively fighting you”.

Did you know that removing a source file from your Xcode project (without deleting it from disk) won’t remove it from the compile process?  Xcode merrily compiles it along with the rest, and if the file conflicts with your other changes you’ll get build errors with no indication of where in your project the problem is occuring.

There are two file-browsing panes.  Near as I can tell, the one on the top only lists the files you’ve selected in the one on the left.  In other words, it’s a complete waste of screen space.

The UI designer is a separate application.  Enough said.

The code auto-completion tool (Xcode’s answer to Visual Studio’s vastly superior Intellisense) is completely broken… especially in Objective-C, which is ostensibly Apple’s favored language.

Yeah, they’ve done *that* poor a job with their IDE.  I said I pity Apple’s developers, but maybe I should be impressed at how much they’ve accomplished *despite* Xcode’s epic suckiness.

Share on Facebook

A shout-out

Just wanted to give a quick shout-out to Mike Wille, for saving me a ton of frustration.  Thanks man, I owe you one sanity (TM).

Share on Facebook

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.

Share on Facebook

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.

Share on Facebook

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…

Share on Facebook