A long time ago in a mind-set far away, I spent a lunch with friends trying to figure out what we'd do if we could reprogram our cellphones. Our ideas were, in retrospect, lame. Maybe we would change the font on the dialer or come up with a screensaver animation. Wouldn't it be cool if we could get flying toasters running on the screen of our cellphone?
The iPhone was still several years away when we came up with those ideas. The millions of ways people would be reprogramming smartphones just a few short years later was beyond our comprehension. The App Store and the effort of tens of thousands of programmers changed that.
[ Beware the 7 myths of programming, and verse yourself in the 10 hard truths developers must accept. | Test your smarts with our programming IQ tests: Round 1 and round 2 and "Hello, world": Programming languages quiz. | Learn how to work smarter, not harder with InfoWorld's roundup of the tips and trends programmers need to know in the Developers' Survival Guide. | Keep up on key application development insights with the Developer World newsletter. ]
The smartphone has proven that a marketplace for delivering code can appear seemingly out of nowhere, and developers would have another choice for showcasing their wares. It's not that the App Store was new -- you could develop for Nokia, Windows Mobile, and Java phones long before it came along. But Apple eased the process and provided enough features that made it worthwhile for developers to start creating.
So when we say that some day in the possible near future you may be targeting your apps at users' shirt pockets, not what they put in them, you may think it's time for the straitjackets. But all it takes is a market. The technology is already there -- sort of.
To help you get a jump on these promising platforms, we did a little digging in what might seem to be unlikely places. In many cases, raw APIs are already well-established, ready for apps to exploit them. Scratch the surface, and you'll get an idea of the potential of porting your wares beyond the smartphone/PC paradigm. You can bet the manufacturers of these products are interested in establishing their own app ecology. And as we've seen with both the PC and smartphone, the first to arrive is often the one whose app gets the most sales.
Emerging development platform No. 1: Your car
The computers buried in your car are better platforms for developing software than your cellphone. While car batteries do run down and cars do run out of gas, they're still more reliable sources of electricity than that tiny battery in your smartphone. The dashboard is already engineered to be at the driver's fingertips, and much of the car is already accepting digital commands through the OBD-II (On-Board Diagnostics) interface built into all new cars. Though you can forget your smartphone when you go on a road trip, you can't forget your car. Automobiles are made for apps, and their manufacturers know it.
Safety comes into play when developing apps for cars, and this is among car builders' greatest detractions in opening up their platforms. While people can manage to change radio stations while driving, changing a CD isn't nearly as safe. Plus, some argue, even the best-designed hands-free interfaces can't solve the cognitive limitations of the human brain. The driver's brain should put driving first; even talking on a hands-free phone can be suspect.
That's just the surface. Computer programmers aren't known for building crash-free products, and in the auto business, the word "crash" has much more ominous overtones. It's one thing to let the curious programmer monkey around with the OBD-II interface to suck down statistics about the combustion efficiency of the engine, but what if that same programmer stumbles onto a switch that changes an important setting irrevocably? Curiosity may not always kill the cat, but it only takes a few high-profile mistakes to sully the platform.
That may be why Ford is moving slowly with opening up its Sync platform for developers. You can download apps for interacting with Twitter (OpenBeak) or Pandora, but you won't find thousands of choices. Most of the few on hand revolve around the radio, and the company is introducing Roximity, an app might have been named by Scooby-Doo but is actually used for identifying location-dependent daily deals.
General Motors is opening up an API for its OnStar service, a wireless tool that can track your car, unlock it, and even start it remotely. There's already an iPhone app, RemoteLink, and all this power could be yours if you're accepted into the program. Just write to firstname.lastname@example.org. The most commonly cited application is RelayRides.com, a company that helps you rent out your car when you're not using it.
This platform will expand, as car manufacturers become more confident and users become more welcoming. It doesn't hurt that a number of robot-driven cars are appearing, leaving the humans in the vehicle free to monkey around with the latest apps.
Emerging development platform No. 2: Your television
The Internet may rule the world during the day when people are connected to laptops, but it fades when people retire to the living room. Streaming services like Netflix and Hulu are making inroads, but they're still just showing unadorned video. We're a long way from a compellingly interactive item.
The most ambitious incursion of developers into the living room may be along a path paved by Google, which has had only limited success pushing its Google TV box to people on couches. Logitech and Sony manufacture them, and the API offers several avenues to get your code in front of people's eyes.
The simplest way to the TV may be to write a Web app. The TV's browser is a relatively new version of Linux Chrome, the WebKit browser that also handles Flash 10.1 content. There are small changes, and you can detect them by looking at the UserAgent string. Geolocation, for instance, isn't available.
If your website works well on Chrome, it can work well on the TV. The main challenge is dealing with the size of the screen and the UI. While many modern televisions show 1080p signals, with 1,080 lines of pixels, not many eyes can make out the small differences. You can't pack text with the same density as you can on a monitor that sits 20-some inches from a face.
Google is not limiting itself to HTML5 applications. Android developers will be able to target the living room in the future by including a separate layout. Google suggests targeting "large" tablets because the "apparent size of the Google TV screen turns out to be only slightly different from a mobile phone's screen."
There are other opportunities. XBMC is a great, open source distribution meant to turn a PC into a television command center. Its core is written in C++, but many of the add-on scripts are written in Python. Perhaps the easiest way to develop content is to create a website that delivers the content in a format that's easy for XBMC to scrape.
Other TVs offer simpler options. For example, Samsung has an API that accepts HTML5 content. It's like building a Web page, but on a bigger screen for someone who is farther away. It's available on some TVs and Blu-ray players. Yahoo has a similar item, complete with a widget marketplace where people can buy your wares.
Not all platforms are as open. Apple TV, for instance, is willing to accept encrypted content that mirrors your iPad screen via AirPlay. It's not the same as writing your own code, but maybe someday, Apple will open up a TV App Store.
Emerging development platform No. 3: Your clothing
It may be made of cloth today, but there's no reason why your garments can't be one of the next great development platforms. We take our clothes everywhere, and electronics are now small enough to be sewn in without being noticeable.
There are already early experiments in garment hacking. Scott eVests and jackets are prized because they were designed to hide wires. You can put your iPod in a pocket, and the wires carrying your earbuds are threaded through channels so that they pop out of the cloth near your ears. They're not constantly getting tangled or misplaced -- unless you forget where you left your jacket.
One jacket from Hammacher Schlemer has a "five-button control system woven into the outer sleeve" so that you can change tracks without taking off your gloves or removing your iPod from your pocket. The buttons lock up after a few seconds to prevent an errant bump from shifting items.
The simplest way to experiment may be with one of the Anduino chips embraced by the Maker community. The LilyPad chip set is already designed to be sewn into clothes; just add LEDs and the right software.
The first adopters may be people who want to program their clothes to change color or patterns to music, mood, weather, or, say, a command sent by the advertising company that purchased the space on your sweatshirt. These apps will be able to communicate with people near us, and they'll enable a new twist to the fashion industry, with artists being able to upload new patterns and wearers able to swap them. People wouldn't ask where you bought that shirt; they would just download the pattern from their friend at that moment. The friend might even get a commission.
That's just cosmetic. Our clothes are always with us, so they may make a better place to put our electronic wallet than in our cellphones. Apps could follow our schedule and zap us if we forget an important taks, like taking our medicine. We may not feel the rumble from a cellphone, but our clothes are much closer.
Emerging development platform No. 4: The electrical grid
In much of the Western world, electricity is so stable that it's boring: Plug your device into the wall and it works. A month later you get a bill, and after you pay it -- as they say in the country music business -- the circuit remains unbroken.
But there's no reason why we can't enjoy a much richer, more sophisticated electrical grid with flexible pricing, self-healing circuits, and an app market full of opportunities. Filtrete, for instance, offers a programmable thermostat that is Wi-Fi-enabled and ready for remote access.
Many appliances are already integrated. The X10 standard has been widely used for home automation for some time, and libraries for languages like Java are common. Some controllers, such as Insteon, have built-in Web servers that let you interact with devices by POSTing data to the URLs.
There are more complex APIs. The ZigBee standard is growing increasingly common because it offers a more elaborate, energy-savvy API for making decisions about energy use.
Some areas of the world are already experimenting with flexible meters that charge different amounts when electricity is cheaper and when it is more expensive. In the future, your refrigerator may come with an app that watches this metric and cools down the freezer when the power is as cheap as possible. Your air conditioner, furnace, oven, and home Hadoop cluster may do the same.
Changing the price for the electricity is just the beginning. There's no reason why the home electrical grid can't have a fair amount of intelligence inside it. Instead of dumb outlets, we can have nodes that watch the flow of electricity through the outlets. If a wire shorts out or a kid chews through a cable, the smart outlets will be able to shut down the instant surge in power.
Emerging development platform No. 5: Retail
In many ways, the computing world has already split into a taxonomy of acronyms for use by venture capitalists. The B2B world helps businesses communicate with each other, the C2C helps consumers talk with each other, and the B2C helps the B sell to the C.
The app world should also split along these lines on the smartphones; when the software finds a larger, more prominent platform, the apps will only get more interesting and, in some cases, more annoying.
The movie "Minority Report" gave us a glimpse of digital advertisements that adjust themselves as people walk by. Some companies are building smart billboards that use cameras to guess the age or gender of pedestrians, and others use Microsoft's Kinect platform to let people interact with the screen. A company called After-Mouse married the Kinect with Windows API to build a retail platform. The Kinect's infrared sensors work through many forms of glass, making it possible to set up the displays behind shop windows. They interact even when the store is closed, a feature that might be used to take orders.
The devices don't need to be limited to advertisements. One simple application can help guide humans to what they want to buy. Already some warehouses have LEDs that flash to guide the humans packing orders. A store can have a similar system that interacts with any app to help people find products without searching and searching. Think of how much easier it could be to shop at Costco.
It's important to recognize that the retail API does not need to interact with the human. Cellphones constantly broadcast their ID numbers in the clear, and some stores track their customers to help plan store layouts. A savvy API might simply detect and identify the human from the cellphone signals, then reconfigure the store experience.
This retail ecology will begin to flourish when there's a good, open standard that makes it simpler for companies to be certain that their interactive display software will appear correctly in the stores, malls, and bus stops.