James Terry - Software Developer

James Terry is a software developer with over twenty years experience creating software in a wide variety of environments. Past clients have included large companies (Amazon, Sony, Nike, Merrill Lynch) and many more modest in size. Available for hourly and project consulting.


Free Initial Consultation

Call 646-586-3095 or Email jdt@jamesdterry.com

Stay tuned for a cool App September 23, 2010 / 721 comments

It's been awhile since I posted but I have a good excuse. It's not quite out yet but I've got a neat App just about ready to go. This post is going to be a bit of a tease because I can't quite spill the beans yet but be assured you can do some neat stuff with video and iOS 4.

Stay tuned!

Hey Steve, no assembly language? May 03, 2010 / 20 comments

By now I'm sure you've seen and/or heard of Apple's prohibition on using anything other than "approved languages" when developing for the iPad/iPhone.

Here's the infamous text:

3.3.1 - Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

First off, no assembly language?!? What if I want to go right to the metal and make sure my App is as small, fast and power preserving as possible. Surely this is just an oversight. And I'm being only a little facetious. The first version of the AI code for my Cherokee Checkers game on the iPhone was too slow when written in Objective-C. I rewrote it in straight C (saving lots of object creation and destruction) and that speed it up significantly. But I was looking at moving it into assembler if needed - I'd like to see the objection to that.

In the end these kinds of arbitrary rules that are only driven by Apple's monopolistic tendencies will likely come back and bite them. Of course they can just drop it when it's convenient for them, so I suppose it might even make business sense. It kind of brings a soap opera feel to the whole mobile development scene.

iPad, What is it Good For? April 07, 2010 / 39 comments

Just think of the old Edwin Starr tune (http://www.youtube.com/watch?v=2pIqxuygWwM) and sing along "iPad, what is it good for - absolutely something".

So far, yes to games, no to browsing while watching TV - can't have IM or another app running and it's a real pain to page down with a swipe after a while. Of course I'm comparing it to the Mac Air, which actually feels lighter. And with a notebook, I can close it and feel like it won't suffer any dog or kid damage. The iPad screen is always out and vulnerable.

Book reading is yet to be determined; it's a lot heavier than the Kindle. I hope to try that out later tonight.

It sure does look purty though.

iPad Thoughts February 01, 2010 / 27 comments

The waiting is over and the jumbo iPhone is out. The name may be a little disconcerting to some women - http://www.youtube.com/watch?v=lsjU0K8QPhs but I suppose we'll all get used to it.

I'll start by saying I do intend to order one (after all I will be writing software for it). Apple is positioning it as a device that will fit into a niche between laptop and a mobile phone. That's the $64,000 question, is there a niche? Is this the right device for that niche? I'm actually typing this on a Macintosh Air laptop while sitting in front of my TV so I'm right on one side of the niche. The tech pundits are complaining about the lack of multi-tasking and the tethering to iTunes while the Apple fans are saying those things don't matter. As with the iPhone I think software will be the difference. (Ok, maybe I'm a little biased.) Having a developer ecosystems already trained, excited and in place will mean any App anyone could need will be available. Unleashing the ingenuity and creativity of thousands of software developers should be the goal of any platform creator. It worked pretty well for Bill Gates with DOS and Windows and I think Apple has replicated that winning combination with the iPhone, no reason it shouldn't keep things going with another device in the family.

I still think it's mobile phones that will cut into the iPad market the most. It's hard to beat the convenience of a device in your pocket or purse. When will a pad make sense? It might replace the laptop you use while sitting in front of the TV (what, you watch TV without a laptop?). Certainly for some mobile jobs that need more screen space it will be a good fit, I can see the iPad being big with Doctors for example. Maybe it doesn't seem that large a market, but just wait till all us software developers get one in our hands. We'll figure out a way to make such a cool gadget useful.

Getting your head into Cloud Computing January 25, 2010 / 566 comments

As engineers we may think our world has nothing in common with unnaturally thin models wearing odd shaped outfits preening down a runway in Paris, but as strange as it may seem technology is a susceptible to fads as any other area of human endeavor. Cloud computing is currently all the rage in our world, as anyone glancing at blogs, book and newsletters can tell you. But does cloud computing deserve the attention from the paparazzi of the hi-tech press? Or is it just a face lift covering up a paradigm who's time has passed? Let's take a look.

First, let's try to define cloud computing. As Supreme Court justice Potter Stewart famously said about a much more prurient subject "we know it when we see it". It involves moving storage and computation from a local desktop PC over the network to a server. But that's not quite enough of a distinction; the Internet has been going strong for years doing just that. I think more precisely we can view cloud computing as providing storage, computing and networking as a service that can consumed at a variable rate. It is the "utility" nature of the resources provided by cloud computing that distinguishes it from the plain vanilla client server model.

It's no shock that Google and Microsoft have two of the leading cloud computing offering but those not up on the subject may be very surprised to learn that Amazon has been the vendor at it the longest. Starting with storage (S3) and then adding computing (EC2) and even harnessing human power (Mechanical Turk) Amazon has a comprehensive, mature product line - the full product is known as Amazon Web Services (AWS). Yes, Amazon does a lot more than sell books. EC2, elastic computing cloud, allows both Linux and Windows based "instances" to be launched on demand. These are straightforward virtual machines that you can use like any other Linux or Windows machine. This is both the strength and weakness of AWS. While Amazon does have unique services like a database offering (SimpleDB) and message queuing service (Simple Queuing Service) if you don't use those services you won't be locked in to Amazon. You can stick with standard LAMP services and move your application to another provider if needed.

Conversely using Google's cloud computing product, Google Application Engine or GAE, will lock you into Google. You can program your application in Python or Java. (Some existing frameworks have been ported to GAE which ameliorates the lock in issue.) GAE gives you access to one of the Google's crown jewels, BigTable, to use as the storage layer. BigTable let's you store lots of data but since there's no such thing as free lunch, there are few tradeoffs. BigTable is not a SQL database, you can forget those hard learned lessons about data normalization, BigTable doesn't have concepts like joins. GAE is good choice when you expect your dataset to get very large - why not take advantage of all the work Google has done?

Microsoft's cloud offering is Azure. You can look at Azure as cloud computing the .Net way. While you can make use of Cloud services via web standards such HTTP, Rest and XML the primary focus is .Net. One unique aspect of Azure is that it does, as part of its database layer, provide a full, relational database. This could be a make or break feature for many applications.

I've implemented a site, Hear Ye, based on Google App Engine. Hear Ye aspires to compete with sites like Craigslist so the ability to handle a large amount of data was a core requirement. The site groups classified ads under keywords. Since BigTable doesn't provide any relational features I generated each permutation of the keywords and stored each with an entry pointing to the ad. BigTable lets you trade space for missing features.

With three of the largest names in computing already competing and many others joining the party I think it's safe to say cloud computing is more than just another pretty face. Application developers can build on these offerings today and look forward to more innovations in the future.