Sunday, July 25, 2010

Neurons to inspire future computers

The way neurons communicate could inspire the next generation of computers.

Basing computers around neurons could lead to improvements in visual and audio processing on computers.

It might mean that computers learn to see or to hear in the future rather than just rely on sensors.

The way nerve cells communicate is being studied by the research teams.
As well as building computers, the researchers are also helping to improve understanding of nerve cells and how they operate.

Smarter seeing
While artificial neural networks have been around for more than 50 years they typically do not copy real neurons very closely.
By contrast the project being co-ordinated by computer scientist Dr Thomas Wennekers from the University of Plymouth wants to model specific physiological features of the way that neurons in one part of the brain communicate.

"We want to learn from biology to build future computers," said Dr Wennekers. "The brain is much more complex than the neural networks that have been implemented so far."

The early work of the project has been collecting data about neurons and how they are connected in one part of the brain. The researchers are focussing on the laminar microcircuitry of the neocortex which is involved in higher brain functions such as seeing and hearing.

The data gathered has fed highly detailed simulations of groups of nerve cells as well as microcircuits of neurons that are spread across larger scale structures such as the visual cortex.

"We build pretty detailed models of the visual cortex and study specific properties of the microcircuits," he said. "We're working out which aspects are crucial for certain functional properties like object or word recognition."
The researchers are unpicking the subtleties of nerve-to-nerve communication

There are hopes that the work will produce more than just improved sensory networks, said Dr Wennekers.

"It might lead to smart components that are intelligent," he said. "They may have added cognitive components such as memory and decision making."

They might even, said Dr Wennekers, start to be endowed with emotion.

"We'll be computing in a completely different way," he said.

Big brain

While Dr Wennekers and his team are working largely with software simulations, Professor Steve Furber from Manchester is using the inspiration from neurons to produce novel hardware.

Called Spinnaker, Prof Furber's project is trying to create a computer specifically optimised to run like biology does.

Based around Arm chips, the Spinnaker system simulates in hardware the workings of relatively large numbers of neurons.

"We've got models of biological spiking neurons," said Prof Furber. "Neurons whose only communication with the rest of the world is that they go ping. When it goes ping it lobs a packet into a small computer network."

Spinnaker uses Arm processors each one of which runs about 1,000 neuron models. The current system uses an eight processor system but, said Prof Furber, the team is in the final stages of designing the chip with 18 Arm processors on board, 16 of which will model neurons.
The ultimate goal, he said, was a system that controlled one billion neurons on a million ARM processors.

"The primary objective is just to understand what's happening in the biology," said Prof Furber. "Our understanding of processing in the brain is extremely thin."

The hope is also that the simulation leads to innovative computer processing systems and insights into the way that lots of computational elements can be hooked up to each other.

"The computer industry is faced with no future other than parallel," said Prof Furber.

The research might mean that computers learn to see
Despite this, he said, industry understanding of how to get the most out of all those computational elements was lacking. The big problem, he said, was how to run the system without being swamped by the management overhead of co-ordinating those processors.

Spinnaker might show a way to overcome some of these problems as the individual elements will be far smaller than the monolithic processors in use now and will, to an extent, to self-organise.

They will also offer advantages in that they are likely to use a lot less power than existing machines.

"We think there's a change in the game there," said Prof Furber.

Thursday, July 15, 2010

Rich Applications for Billions of Devices: What's New in LWUIT?

By Terrence Barr, June 2010

Although high-end smart phones have gotten a lot of attention lately, mobile developers realize that these only represent a small fraction of the overall mobile space. By comparison, mobile phones based on the Java Micro Edition (Java ME) platform, including RIM's Blackberry, Nokia, Sony Ericsson, and many other manufacturers, represent about 2.6 billion devices or two thirds of the total installed base.

Therefore, for developers seeking broad deployment and adoption of their content, portability and cross-platform support has become increasingly important. Traditionally, the graphical user interface (GUI) aspect of applications has been a major stumbling block in this regard -- UI toolkits and interfaces are often specific to a platform and the UI-related code typically makes up the bulk of the application. As a result, delivery of cross-platform applications is hard. What is needed is a well designed, platform-independent UI toolkit that has lightweight memory and resource requirements, is highly portable, and open source.

The Lightweight User Interface Toolkit (LWUIT), released in mid-2008, has been a boon to mobile developers right from the start. LWUIT is a UI library targeted to a wide range of mobile devices, from mass market to high-end smart phones, and has now also been ported to other embedded platforms. The rich functionality and clean design of LWUIT makes developing and deploying rich and engaging cross-platform applications easier than ever. LWUIT is an open technology with its source and binary freely accessible for individual or commercial use.

.

IMC connection  diagram
LWUIT Screen Shots

LWUIT has seen widespread adoption by developers, ISVs, and other third parties. Numerous resources are devoted to LWUIT, including a developer guide, articles, tutorials, code samples, videos, a site with featured LWUIT-based applications, and last but not least, a very active developer community and associated forum.

This article provides a brief overview of LWUIT for those who are unfamiliar with the technology, along with a list of resources for further learning. The remainder of the article focuses on the latest features and enhancements of LWUIT 1.3, along with hands-on code samples.

What is LWUIT?

As described above, LWUIT is a UI library that is licensed under the GPLv2 open-source license together with the Classpath Exception. This license encourages broad adoption while ensuring transparency and compatibility at the library level.

LWUIT offers advanced UI capabilities and a clean API that is inspired by Swing. With LWUIT, Java developers don't need to write device-specific code for different screen sizes, but instead can add UI components as needed to provide a consistent and compelling look and feel to their applications which works across a wide range of devices from different vendors.

Let's look at the LWUIT Demo application, which was written to showcase many of the different features of LWUIT such as theming, custom rendering, animations, buttons, transitions, and more. The three screenshots below show the identical application binary file (with no built-in device-specific knowledge) running on three entirely different Java ME platforms:

  • On the Java ME SDK 3.0 Mobile Emulator
  • On a mid-range Sony Ericsson G705
  • On an HTC Diamond touch screen device
IMC connection diagram IMC connection diagram IMC connection diagram

Screen shot 1: The LWUIT demo application running on the Java ME SDK 3.0 Mobile Emulator
Screen shot 2: The same application running on a mid-range Sony Ericsson G705
Screen shot 3: The same application running on a HTC Diamond with touch screen

Thanks to the LWUIT toolkit the application presents a rich and consistent user interface across devices and automatically adapts to and takes advantage of device-specific properties such as screen size, graphics capabilities, and touch screen support without any extra effort by the developer.

LWUIT is supported on MIDP 2.0/CLDC 1.1, has been ported onto CDC platforms, other mobile and embedded devices, and is the basis of the user interface layer for specifications such as Ginga-J for interactive TV (see: http://en.wikipedia.org/wiki/Ginga-J).

IMC connection  diagram
A TV Set-Top Box User Interface Based on LWUIT

Development and Deployment Model

LWUIT is designed with modern UI requirements, programming styles, and best practices in mind. For example, LWUIT provides a clean separation between the UI development, the graphics design, and the business logic and therefore allows domain experts to work independently on their specific area of expertise.

IMC connection  diagram
Separation of UI Design, Graphics Design, and Business Logic

Also, LWUIT is based on the MVC (model-view-controller) paradigm. For example, the List Component can display an unlimited number of items because it only renders what is visible, while the model has the data responsibility. You can show a very large list without worrying about memory consumption.

Rapid Development: One of LWUIT's key benefits is rapid development. Since the API is inspired by Swing, it is easy to learn and adopt. LWUIT itself was built from scratch and does not depend on AWT.

Portability: Another benefit is portability, and little, if any, device-specific code. To ensure portability, LWUIT was built using low-level common elements in MIDP 2.0. LWUIT applications look and run consistently across different devices and different Java runtimes.

Flexibility: Flexibility is yet another important aspect: Almost everything in LWUIT is customizable and extensible, so if there is a missing feature or component, you can create your own and plug it in your code.

Easy Deployment: Not only is LWUIT extremely powerful, well designed, and easy to use, it is also easy to deploy. During development, simply bundle the LWUIT library and resources with the application. The LWUIT components become an integrated part of the application deployment unit and are downloaded and deployed transparently when the user installs the application on their device (for example, via the standard MIDP OTA mechanism).

Wide Range of Platforms: LWUIT requires only MIDP 2.0 and CLDC 1.1 (or similar basic graphics capabilities on other platforms) and is being continually tested across a wide range of today's mass market devices -- from low-end phones with limited memory, small screens, and numeric keypads all the way to high-end devices with fast processors, high-resolution touch screens, and built-in keyboards.

Key Features

  • Rich Widgets: LWUIT offers a rich set of UI widgets out of the box: basic widgets such as label, button, text box, input field, etc., as well as advanced widgets like list, table, calendar, tree, spinner, virtual keyboard, HTML renderer, and more
  • Layouts Manager: A very flexible and powerful feature, particularly if the application runs on different screen sizes
  • Pluggable Look and Feel & Themes: The Theme Creator toolkit lets you create a CSS-like file that can be loaded or changed at runtime, controlling the look and feel of the application.
  • Fonts: The library features bitmap fonts and a tool that lets you create fonts on your desktop.
  • Touch Screen: All LWUIT components support touch events. No special coding is needed for a LWUIT application to run on a touch-enabled device. Pluggable kinetics enable customized behavior.
  • Animations & Transitions: Various visual effects that are available out-of-the-box through the library add life to applications, automatically utilizing advanced graphics capabilities of the underlying platform.
  • 3D and SVG Graphics integration
  • Bi-directional text support support for right to left text
  • I18N/L10N
  • Clean API, familiar to Swing developers
  • Applications are highly portable and well performing across a wide range of mobile devices.
  • Lightweight: Low memory footprint and processing requirements, adapts to platform
  • LWUIT itself is very portable and has only very basic requirements on the underlying platform.

LWUIT Theme Creator

LWUIT provides a Theme Creator tool for editing and creating themes and resources. This is a standalone application for creating and viewing background painting, objects, and other theme elements. It even features a live preview of the application that changes whenever updates are made to the theme or screen properties:

IMC connection  diagram
LWUIT Theme Creator

LWUIT and the New Java ME SDK 3.0

The new Java ME SDK 3.0 is the de facto standard for the creation of Java ME-based applications. It offers a comprehensive development suite with a host of features giving developers a powerful and convenient environment and set of tools to efficiently build and test applications.

Of course, the LWUIT toolkit can be used with the traditional Java ME tool chain. But getting started with LWUIT has never been easier now that the Java ME SDK 3.0 offers built-in support for LWUIT:

The LWUIT Demo application can be run and explored right from the main screen of the Java ME SDK 3.0. A new project type called LWUIT Application provides the necessary resources and project structure that allows developers to start building LWUIT-based applications in minutes.

IMC connection  diagram
Java ME SDK 3.0 Running the LWUIT Demo

New in LWUIT 1.3 and Beyond

LWUIT 1.3 was made available in December of 2009 and offers a number of new features and improvements.

LWUIT 1.3 Features and Improvements:

  • New UI Control: Table layout and table component allows complex tabular UI's including support for features such as spanning rows/columns.
  • New UI Control: Lightweight Virtual Keyboard support: Allowing for customizable touch screen user input
  • New UI Control: Tree Component supports nested elements and expanding
  • New UI Control: Spinner component for date, time and numeric input within a range
  • Bi-Directional Text Support: Extends LWUIT support for right-to-left languages such as Arabic and Hebrew
  • Touch Device Improvements: Button menus, improved kinetic scrolling, tactile touch (vibration on touch)
  • Pixel-based Scrolling: Allowing scroll to work as expected even when components/containers exceed screen bounds and not just for focusable components
  • Reimplementation of the ComboBox widget
  • Enhancements to Theme Creator (formerly known as LWUIT Designer/Resource Editor) - SVG backgrounds can now be used for creating themes
  • Resource File Specification
  • Redesigned List Renderer "rendering" logic paints the backgrounds of the renderers first, and then the selection and foreground
  • A Number of Performance Improvements and bug fixes, many of which are based on community input

More Goodies in the Open-Source Repository

Beyond the official LWUIT 1.3 release, the LWUIT open-source subversion repository contains ongoing and additional improvements such as a pre-release version of the HTML component. The HTML component allows applications to easily render HTML conforming to XHTML Mobile Profile 1.0.

Let's walk through some of these new features in LWUIT 1.3 and the latest repository.

Table Component

The table component in LWUIT features sophisticated functionality, such as support for a large number of rows and columns, horizontal and vertical scrolling, in-place editing, custom cell renders, and on-the-fly creation of cells that can feature animations, handle events, and more. Despite the multitude of functionality offered, creating tables is very straightforward -- thanks to a default table model.

IMC connection  diagram
Screen Shot of Demo of Table Component

The below sample application creates a complete table consisting of a header row and three columns, where column 1 and 2 are editable. Each editable data cell can be edited in place by clicking on it. The table automatically becomes scrollable horizontally and vertically if it is larger than the available space:

public class TableDemo extends MIDlet implements ActionListener {

public void startApp() {

Form form;
Resources res;

Display.init(this); // initialize LWUIT

// Load theme
try {
res = Resources.open("/res/businessTheme.res");
UIManager.getInstance().setThemeProps(res.getTheme(res.getThemeResourceNames()[0]));
} catch (IOException ioe) {
// error loading theme
}

// Create main form and add Exit command
form = new Form("Table Demo");
form.addCommand(new Command("Exit"));
form.setCommandListener(this);

// Create scrollable table with header and columns 1 and 2 editable
TableModel model = new DefaultTableModel(
new String[] {"Unedit.", "Editable", "Multiline"},
new Object[][] {
{"Row 1", "Data 1", "Multi-line\ndata"},
{"Row 2", "Data 2", "More multi-\nline data"},
{"Row 3", "Data 3", "Data\non\nevery\nline"},
{"Row 4", "Data 4", "Data (no span)"},
{"Row 5", "Data 5", "More data"},
{"Row 6", "Data 6", "More data"},
}) {
public boolean isCellEditable(int row, int col) {
return col != 0;
}
};
Table table = new Table(model);
table.setScrollable(true);
table.setIncludeHeader(true);

// Add table to form and show
form.addComponent(table);
form.show();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void actionPerformed(ActionEvent ae) {
// only action is from Exit command
destroyApp(true);
notifyDestroyed();
}

}

Running this code is easy by following these steps:

  • Download and install the Java ME SDK 3.0 (available for Windows and MacOS) from here: http://java.sun.com/javame/downloads/sdk30.jsp
  • Download the
    TableDemo
    project from here: http://tinyurl.com/348jn29 and expand the zip file
  • Open the
    TableDemo
    project (the Java ME SDK 3.0 should recognize the TableDemo directory as a project)
  • Make sure your emulator platform has the "Mobile Media API 1.1" enabled. To do that, right-click on the
    TableDemo
    in the Projects pane, choose Properties and then in the Platform->Optional Packages panel select the Mobile Media API 1.1 check-box.
  • Run the project by clicking the green triangle icon

Lightweight Virtual Keyboard Support

Touch-screen devices can take full advantage of the virtual keyboard functionality now available in LWUIT. A Virtual Keyboard that can be bound to a text field will slide up when the user clicks or touches the text field to input characters. The Virtual Keyboard supports a number of different input modes (text, symbols, numbers), different keymaps for customized keyboard layouts, special keys, and other sophisticated features.


Graphic: Screen Shot of Virtual Keyboard Demo on Startup and Screen Shot After User Clicks/Touches the Text Field ("Click for keyboard")

Using a Virtual Keyboard in an application is straightforward. This example application shows a basic LWUIT application with a title, an EXIT menu, a text field for entering text, and a label to display the text:

public class VKBDemo extends MIDlet implements ActionListener, FocusListener {

Form form;
Resources res;
TextField textField;

public void startApp() {

VKBImplementationFactory.init(); // initialize virtual keyboard
Display.init(this); // initialize LWUIT

// Load theme
try {
res = Resources.open("/res/businessTheme.res");
UIManager.getInstance().setThemeProps(res.getTheme(res.getThemeResourceNames()[0]));
} catch (IOException ioe) {
// error loading theme
}

// Create main form and add Exit command
form = new Form("Virtual Keyboard Demo");
form.addCommand(new Command("Exit"));
form.setCommandListener(this);

// Create text field with constraints
textField = new TextField("Click for keyboard");
textField.setConstraint(TextField.ANY);
textField.setInputModeOrder(new String[]{"Abc"});
textField.setFocusable(false); // only one component: prevent being focused right away
textField.addFocusListener(this);

// Create virtual keyboard and bind to text field
VirtualKeyboard vkb = new VirtualKeyboard();
vkb.setInputModeOrder(new String[] {VirtualKeyboard.QWERTY_MODE} );
VirtualKeyboard.bindVirtualKeyboard(textField, vkb);

// Add text field to form and show
form.addComponent(textField);
form.show();

textField.setFocusable(true); // after initial display, make focusable
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void actionPerformed(ActionEvent ae) {
// only action is from Exit command
destroyApp(true);
notifyDestroyed();
}

public void focusGained(Component cmp) {
// If user selects text field, clear it
if (cmp == textField) {
((TextField)cmp).clear();
}
}

public void focusLost(Component cmp) {
}

}

As with the TableDemo, you can download the VKBDemo project from http://tinyurl.com/348jn29 and run it with the Java ME SDK.

HTML Component

The HTML Component is not part of the official LWUIT 1.3 release but is now available as a pre-release in the LWUIT open-source repository.

Being able to display HTML content within an application (without having to call an external content handler) is useful for a number of reasons -- not so much to implement a full-blown mobile browser but to be able to render rich text locally, to dynamically display content pulled in from the network, or to embed web flows into your application -- basically, to fuse HTML concepts and content with your local Java application.

For these reasons, an HTML component has always been high on the LWUIT developer wish list and is now available in an early version. The support for the XHTML Mobile Profile 1.0 is about 90% completed, including text, fonts, lists, tables, forms, images, etc. as well as WCSS.

Screen Shot of  HTML Component Rendering the Mobile Twitter Page
Screen Shot of HTML Component Rendering the Mobile Twitter Page

Here is a code snippet using the HTML component that shows how to display an HTML page, such as the mobile Twitter page:


 // Creating a new instance of a request handler
HttpRequestHandler handler=new HttpRequestHandler();

// Creating the HTMLComponent instance and setting its request handler
HTMLComponent htmlC = new HTMLComponent(handler);

// Creating a form, adding the component to it and showing the form
Form form=new Form("HTML Demo");
form.addComponent(htmlC);
form.show();

// Setting the component to the required page
htmlC.setPage("http://m.twitter.com");

That's it! And since the HTML Component is just like any other LWUIT component it it fully touch-enabled, you can do transitions with it, theme it, etc.


Source: http://java.sun.com/developer/technicalArticles/javame/lwuit_v1_3/

Wednesday, July 14, 2010

Microsoft Launches Appliance For Building Private Clouds

Microsoft has developed a private cloud appliance with hardware partners and the $60 billion-a-year, online marketplace, eBay.

The Azure platform appliance is designed to be deployed in an on-premises private cloud in racks of hundreds or thousands of servers. It will run both Windows Server and a software stack that matches what's available in Microsoft's Azure public cloud. In addition to enterprises, the appliance is geared for use by large cloud services suppliers.
Microsoft is seeking to help build private clouds, not at the expense of its Azure public cloud, but on a pattern that matches what's available in Azure. Such private clouds, locked down behind firewalls and intrusion detection systems, will be able to handle private customer data and financial transactions. To do so, Microsoft is willing to run Java applications on its appliance as first class citizens alongside Microsoft .Net languages, such as Visual Basic and C#, Microsoft's Java competitor.


"They got that right. We decided to move forward with them," said James Barrese, eBay's VP of technology.

Earlier this year, EBay, as a $60 billion-a-year online marketplace, was looking toward its next generation infrastructure and showed Microsoft its blueprint for future high volume, scalable operations. EBay in the past has built up its own data centers.

But it was seeking greater automation of pooled resources, greater ease of maintaining security and easier administration of users. "We asked, do we want to build this ourselves or partner with somebody who can do it," said Barrese in an interview. "We see Azure appliances as being able to scale out very quickly," he said.

In positioning itself as an architect and builder of the private cloud for eBay and others, Microsoft is also ensuring that its existing customers stay wedded to Windows as they move toward cloud computing. The Azure platform appliance will do many things the same way Azure does, so it's also building potential future users of its public Azure cloud.

Microsoft is partnering with HP, Fujitsu and Dell, who will adopt the appliance for use in their own cloud services, then make versions available to customers. EBay plans to install a limited production release sometime later this year for the Garden by EBay site, where it tests partner's ideas and new customer applications. Barrese said eBay expects to move beyond the testbed site to broader use of the appliance in production systems at a future date.

"This offers scalability, efficiency, the ability to rapidly respond to changing situations," he said. The number one reason to implement a cloud appliance is for "internal agility," although Microsoft is saying the ability to manage large numbers of Azure platform appliances will lead to cost savings as well.


"I could build it myself, but I don't want to," continued Barrese. "I can focus my engineering effort of a better experience for buyers and sellers."

The appliance is aimed at giving enterprise data centers more of the elasticity and manageability of the public cloud while still being able to meet compliance requirements and regulations. The appliance will become available in a "limited production release" later this year, said Amy Barzdukas, general manager of the Microsoft Servers and Tools Business communications, in an interview. No date has been set for general availability.


EBay's buyer, seller and trading systems are based on Java applications, and Barrese said his firm was surprised when Microsoft assured him that the Azure platform appliance would be optimized to run Java. Windows Server has run Java in the past but Barrese noted the friction that had existed at one time between Microsoft and Sun Microsystems, Java's originator. He hadn't previously considered Microsoft as a potential partner in developing a future Java environment, he said.

"We run the majority of our Java applications on Windows Server today. We see this (appliance) as a natural extension of our existing environment," Barrese said. EBay plans to continue to work with Microsoft for years to come on the design and implementation of the appliance as a way to contain its own data center management and configuration costs, he noted.

The Azure appliance will run, in addition to Windows Server, the Azure SQL data management system on x86 hardware built to a Microsoft networking and server specification. The appliance will have its own storage as well, said Barzdukas. Although Microsoft is calling it an appliance to indicate it will be preconfigured for the customer, there will be variations based on partner value-adds, she said. But all Azure platform appliances will have "a common identity, based on Microsoft specifications, and management model."

There will be "a much smaller range of variability" than found on Windows Server in the typical data center, she added. It will often be sold as a set of identical machines on a rack of servers with shared network and I/O settings.

The appliance was announced at Microsoft's Worldwide Partner Conference Monday in Washington, D.C., by CEO Steve Ballmer and Bob Muglia, president of the Server and Tools Business.

Tuesday, July 13, 2010

Windows Phone 7 beta is out

PERENNIAL MOBILE LOSER Microsoft has released a Windows Phone 7 Beta, which might mean that it is nearly ready to be foisted on the great unwashed.

In a statement the Vole said that the Beta release represents the near final version of the tools for building applications and games for Windows Phone 7.

A spokesperson said that the Windows Phone Developer Tool CTP has been widely embraced by the community, because they do a lot of that hugging stuff in Silicon Valley.

But now that the hugging is over it is time to "get serious" according to the Vole and build apps and games for Windows Phone 7 that consumers will be looking for starting this upcoming holiday season.

The beta has a few interesting things. The first is Microsoft Expression Blend for Windows Phone. Blend is now integrated completely into the Windows Phone Developer Tools Beta.

There is the Developer Registration Utility, which allows you to unlock your Windows Phone 7 device for development purposes. There is an XAP Deployment Tool in case you ever want to stick an XAP file into an unlocked device.

"Many namespaces that were previously distributed over several different DLLs have now been consolidated into one. In addition, there have been realignments and changes in several other namespaces as well. Push Notifications, Accelerometer and App Bar APIs have all been updated," the Vole said.

Still to come are more controls for the devices. Stuff like Panorama and Pivot didn't make the beta release.

Microsoft's Paul Bryan burbles enthusiasically about the beta in the Windows Steam Blog, if you like that sort of thing.

Monday, July 12, 2010

Google App Inventor Lets Anyone Make Android Smartphone Apps

Google on Monday revealed a new software tool that lets just about anyone make apps for mobile phones that use its Android software.

The beta version of the Web site for App Inventor for Android went live from Google Labs with a video showing how easy it is to make apps, including a number of ideas for apps people can make themselves.

"To use App Inventor, you do not need to be a developer. App Inventor requires NO programming knowledge," the Web site says. Software code is written by App Inventor software, while users are given options on what to include in the app.

The site offers several suggestions in app creation, including using the handset's GPS function for location, creating SMSs for friends, or building apps that link to other services, such as Twitter.

The new software tools should give Google's Android mobile software a leg up against rival smartphone software, including Apple's iPhone OS. The App Inventor site lets anyone become an app creator, giving people the power to design software specifically for their own needs. That's not so easy on the iPhone. Not only do people need software developer skills to make apps for the iPhone, but Apple vets all new applications before approving them for download.

One strength of Apple's system is that it can weed out apps with malicious code designed to steal or erase data. It's unclear what safeguards Google has in place for App Inventor.

Anyone interested in using App Inventor to start making Android apps will need a few things, including a Gmail account, a computer and an Android-based handset, according to the App Inventor site.

Google announced App Inventor nearly a year ago, saying that faculty from dozens of colleges and universities were involved.

"Mobile applications are triggering a fundamental shift in the way people experience computing and use mobile phones," wrote Hal Abelson [CQ], a professor of computing science and engineering at the Massachusetts Institute of Technology and leader of the Google project, in an old blog posting. "Today, smartphones let us carry computing with us, have become central to servicing our communication and information needs, and have made the Web part of all that we do."

Tuesday, July 6, 2010

Reading on Paper is Faster than iBooks on the iPad

It will take you longer to read a book on an iPad or Kindle compared to the printed page, according to a recent study. Dr. Jakob Nielsen of the Nielsen Norman Group--a product development consultancy that is not associated with Nielsen, the metrics company--compared the reading times of 24 users on the Kindle 2, an iPad using the iBooks application, a PC monitor and good old fashioned paper. The study found that reading on an electronic tablet was up to 10.7 percent slower than reading a printed book. Despite the slower reading times, Nielsen found that users preferred reading books on a tablet device compared to the paper book. The PC monitor, meanwhile, was universally hated as a reading platform among all test subjects.

The Study

Nielsen's findings were based on the performance of 24 users who "like reading and frequently read books." The subjects each read different short stories by Ernest Hemingway on all four platforms, and were measured for their reading speeds and story comprehension. Overall, it took each user an average of 17 minutes and 20 seconds to read a story regardless of the platform and comprehension levels were virtually identical on all four reading formats.

However, Nielsen says the printed book was the clear winner in terms of speed. Users were reading 6.2 percent slower on an iPad compared to paper, and 10.7 percent slower on the Kindle 2. Nielsen did not provide any statistics on the reading time for the PC monitor.

Interestingly, Nielsen's results appear to show that reading on the iPad is significantly faster compared to the Kindle 2. But Nielsen was quick to dismiss this conclusion arguing that the reading speeds between the two devices were "not statistically significant." "The difference [between reading times on the iPad and Kindle 2] would be so small that it wouldn't be a reason to buy one over the other," Nielsen wrote.

The study also asked each user to rate how they liked each format on a scale of 1 to 7. The iPad, Kindle 2, and printed book were nearly tied at 5.8, 5.7, and 5.6 respectively, while the PC monitor ranked last at 3.6 points. The test subjects said that reading on the PC felt too much like being at work, while they found it more relaxing to read a printed book than on an electronic device.

Tablets Still Can't Beat the Book

So it appears technology hasn't quite figured out yet how to replicate the experience of the printed page. That said this study leaves a lot to be desired owing to its small test group size, but it would be interesting to see a similar study on a much larger scale. I'd be curious to find out, for example, if there's any big difference in reading speeds based on age groups.

Would people in their 20s read faster on a screen than a book since they've spent a majority of their lives consuming digital content? How would the younger group compare to people in their late 30s and early 40s who also grew up with electronic devices such as the Commodore Vic-20, the original Mac, and IBM clones?

This study also left out reading on a laptop, which is a far more mobile reading experience than a desktop PC and could therefore be more enjoyable. I'd also like to know if the iPad would remain a faster reading experience than the Kindle in a larger study. On the one hand, the iPad can render a new page faster than the Kindle, which could account for the uptick in speed. But you would think the Kindle's ability to closely mimic the printed page, thanks to its e-ink display, would bring its reading speeds closer to the traditional book.

Regardless of how fast people can read on an electronic device, the e-reader is becoming more popular every year. E-books raked in $313 million in 2009 growing by 176.6 percent compared to 2008, overtaking audio book sales. In 2010, e-book sales are currently growing at a rate of 217.3 percent versus 2009, according to estimates by the Association of American Publishers.

If you want to check out Nielsen's findings for yourself, you can find it here. It's a fairly short read, but if you're pressed for time you might want to print it out.