9. Cross-platform mobile app dev
The iPhone boom has brought many things to programmers beyond the urge to simulate bodily functions with apps like iFart. The most enduring legacy is familiarity with Objective C, a language first introduced with Steve Jobs' NeXT Computer in 1988.
[For a deeper look at mobile app dev, check out Peter Wayner's Test Center articles, "The cross-platform option: Web apps for smartphones" and "iPhone development tools that work the way you do."]
So why not start with something simple written in the languages spoken by every Web developer? When I built Web versions of my book, "Free for All," I added a special markup that let the iPhone install the Web page as if it were a regular app. All of this code will work on other WebKit-enabled browsers, like the one in Android, and it's not hard to make it work on the BlackBerry.
Others are porting popular languages like Ruby. The Rhomobile tool, for instance, embeds a complete Ruby interpreter and Web server inside your app so that you can write everything in Ruby. The folks at Apple forced them to remove the eval function because it hurt their ability to completely test each app, but aside from that, it's like building a Web site in Ruby. The code runs on the major platforms.
All of these approaches are surprisingly good -- if you're not looking for superfast performance or perfection. Game developers can use the accelerometer with these apps, but only to build simpler, two-dimensional games that don't need access to the deepest levels of the video hardware. Fonts and layouts are sometimes just a bit different from platform to platform, and this can be annoying. But if your requirements are simple and you already know Web development languages, these approaches are much easier than learning Objective C.
For enterprises, cross-platform app dev eliminates a key barrier to developing and deploying mobile applications developed in-house. It's difficult to mandate that all employees use the same smartphone, and even if you could, coding your apps for a specific platform locks you in. With cross-platform app dev, you can write it once -- without having to learn the quirks of a specific platform -- and run it across many devices. At last, widespread deployment of mobile enterprise applications may become a reality.
--Peter Wayner 8. Hardware power conservation
We all know the "two kinds of green" cliché: Save the planet and save money by reducing power consumption. The technologies to accomplish that dual purpose have already found their way into servers, desktops, and other hardware, but in some cases, the benefits will accrue only as better software support emerges.
More efficient power supplies, along with hard drives that reduce speed or shut themselves off when they aren't needed, are delivering the goods right now. But in order to "park" inactive cores and motherboards or other components that go to sleep, multicore CPUs generally need to be told to do so at the OS or application level.
[ Policy and practices play an even bigger role in power conservation than hardware. See InfoWorld's "10 power-saving myths debunked." ]
Power supplies are the simplest way to save energy. They need no software support and produce a double savings; they waste less electricity in the AC-to-DC conversion process and produce less heat -- reducing the power required for cooling. The 80 Plus certification program, funded by a consortium of electric utilities, provides incentives for manufacturers to produce power supplies that are at least 80 percent efficient, a jump from old units that went as low as 50 percent -- that is, only 50 percent of the power reaches the motherboard. The other 50 percent generally dissipates as heat.
Several storage vendors produce hard drives that can spin down or power off when not in use. Most of the systems shipping now limit the functionality to slowing down drives, since the time required to spin up or shut down a drive is longer than most applications support. There are generally three levels of power savings, each conserving more power and requiring more time to return to full functionality; think of them as slow, slower, and off. The first state can be recovered from in 1 to 2 seconds and the second in less than 30 seconds, while recovery from the powered-off state can take as long as two minutes. The latter causes problems with most applications, so most vendors don't use it.
The latest CPUs support core parking, powering down cores that aren't needed when loads are light. The feature is supported in Windows 7 and Windows Server 2008 R2. It's most useful in servers that are intermittently loaded or lightly used outside of business hours. A two-, four-, six-, or eight-core processor can shut down all but one core and still respond to requests, and return to full functionality if the load on the single core increases beyond a set limit.
Motherboards and add-ons such as network interface cards are introducing the capability to power down components when not in use. For example, some motherboards, particularly laptop systems, support two video systems: one built into the motherboard and one discrete. The built-in adapter uses less power, while the discrete one offers higher performance. The motherboard can switch between the two as necessary to offer either power savings or high performance.
Network interface cards can shut down when the network is not in use, and other components are adding similar capabilities. But until these features are supported by the operating system -- and, in some cases, individual applications -- they are of little use. It's great to have a NIC that powers itself down, but you need an operating system that can power the thing up again.
-- Logan Harbaugh