Archive for category Uncategorized

The Best Cloud Music Options for the Linux Desktop

Posted by on Wednesday, 8 February, 2012

Not that long ago, desktop Linux users were left out of most of the online music services. But these days, as the industry has trended towards cloud-based music services — from online “jukebox”-style file lockers where you store your own tunes all the way to subscription services that offer on-demand access to every track you can think of. Unfortunately, they all seem to want to run in their own dedicated application, and every audio player has plug-ins for a different subset of the available options. What's a music nut to do? Find out in this break-down of the cloud music tuning options available to Linux users.


The Embedded and Mobile Linux Trends Shaping 2012

Posted by on Wednesday, 8 February, 2012

We’re preparing for our weeklong extravaganza of mobile and embedded development next week. Android Builders Summit kicks off Monday and ELC follows on Wednesday, taking place February 15-17, 2012. For the really hard-core, we’ve even lined up some hands-on mobile and embedded Linux training courses over the weekend. I’m especially looking forward to the Yocto Project crash course.

This is a great way to kick off our annual events calendar for 2012, and it provides me a good excuse to share my take on the state of embedded Linux.

The face of embedded software development is changing fast. The power and functionality of mobile and embedded devices are reaching new levels of performance previously found in general purpose systems, such as desktop and mobile computers. The classic definition of an embedded system being “a computer system designed for specific control functions within a larger system” may still hold true for control modules found in cars, machinery and other core embedded applications. However, the lines are becoming blurry when it comes to mobile devices, Smart TVs and other consumer electronics products. These devices now allow users to customize their look and feel and user experience, installing third-party software applications, downloading media, and more, which a few years ago was only possible with personal computers.

Following is a breakdown of the trends I see shaping the embedded Linux area and the ways that engineers write software for these systems in the year ahead.

Convergence of development and deployment platforms

If you are a veteran embedded engineer you very well know that the systems you once utilized to develop software were substantially different from the systems you were developing for. In the majority of cases, the target systems had a different processor architecture, different I/O functionality, substantially less processing power, different or no memory management, and many other diverging characteristics. System-on-Chips (SoC) integrating processor cores of general purpose CPUs with peripheral devices typically found in embedded systems into a single chip allows software developers to tap into a large software pool previously written for general purpose CPUs. The most prominent example is certainly the Linux kernel.

Before the advent of SoCs, Linux was not a good choice for embedded or mobile systems. General purpose CPUs required too many external peripheral devices to be economically used in an embedded system, and microcontrollers typically used in such systems did not fulfill the memory management requirements of the Linux kernel. A second hurdle for Linux in embedded system design was the need for a read/write file system. Not too long ago, file system meant the use of hard drives, which are not practical for embedded and/or mobile use. Memory Technology Devices (MTD) are now closing the gap. SoCs and MTDs are enabling the use of Linux in embedded and mobile devices.

The utilization of Linux for embedded devices is naturally bringing deployment and development platforms together. Now, developers can use the exact same software development tools they are familiar with on their Linux development system to write software for a Linux-based target. The same processor architecture on development system and target may even make the use of cross-development tools unnecessary. In some cases, developers are even given the possibility of directly developing software on the target itself. Many SoCs have integrated graphics and USB ports, making connecting a display, keyboard and mouse a breeze. Development boards available for most processor architectures provide all the necessary functionality in single board computer form factor to jumpstart embedded software development.

Emulation and simulation

In the past, embedded hardware and software development were mostly serialized. Software development did not start until the first prototype of the hardware was available for the software engineers. Emulators allow software engineers to test new features even before they are accessible in the form of hardware. For example, the QEMU open source machine emulator and virtualizer can easily be used to test new CPU instructions and compilers to create code for these instructions long before the first silicon gets in the hands of software developers. Simulation can be utilized to test new APIs for sensors and other hardware devices. GUI simulators facilitate rapid prototyping of user interfaces.

Virtualization

The original intent of the Java platform was to provide a hardware independent platform for interactive television. It was too advanced for the digital cable television industry at the time but its adoption by the Android mobile operating system as application development and deployment platform proved that the concept of virtualization for embedded and mobile systems is fundamentally correct. Virtualization provides several benefits for embedded and mobile systems: secure partitioning of applications, migration of legacy applications, platform-independent application ecosystems. Depending on the focus for the virtualization, different solutions are appropriate. Secure partitioning of native applications can be achieved with a hypervisor. A hypervisor may also be the solution for migrating existing and consolidating existing software on a new platform. Ecosystems for third-party applications are a major differentiator for mobile devices. While Java is Android’s technology for building an application ecosystem, web browsers, WebKit, HTML5 and other web technologies provide the abstraction layers necessary to build application ecosystems that extend across many different device types and categories using a variety of hardware technologies, processor architectures and operating system.

HTML5

Ecosystems for third-party applications are a vital part of mobile device platforms and will undoubtedly influence purchasing decisions for other consumer electronics products such as Smart TVs, and potentially cars, in the near future. The more applications that are available for a particular platform, the more valuable it becomes in the perception of the consumer. If you trust the forecasts of market analysts, then the battle of the ecosystems has just begun. And within the next couple of years, two to three prevailing software platforms (with their respective ecosystems) will evolve as the winners. The winners will bring on board the critical mass of application developers providing a steady stream of new applications to maintain the attractiveness of the platform to consumers. In my opinion, HTML5 will make the discussion about the winning mobile platform moot and end the predicted battle of the ecosystems.

A major headache for mobile application developers is the rapidly increasing number of variances in devices, form factor, screen resolution, operating system versions, etc. An application designed for a mobile phone with a 4″ screen typically viewed in portrait orientation will most likely not provide the same user experience on a tablet with a 10″ screen commonly viewed in landscape orientation. Current mobile software platforms and their respective application development environments do not provide an adequate solution. HTML through CSS, allows easy separation of presentation from business logic making it straight forward for developers to change the visual layout of their applications and have it automatically adapt to the form factor and orientation of the device. HTML and CSS also give developers more freedom to design their own look-and-feel. Current SDKs for mobile applications are rather limiting in how developers can create differentiating user experiences.

New markup tags introduced with HTML5 further close the gap between native and web applications. Web applications can now access sensors, cameras and other hardware devices found on mobile platforms, store application-specific information on the device and play media through standardized tags and objects.

With these features, HTML5 provides a unique opportunity to create an application ecosystem for embedded and mobile devices that is truly independent from the underlying hardware and software platform. This ecosystem will benefit all parties involved with the value chain: the device manufacturers, the application developers and the consumers. None of them will have to make the decision for a particular platform wondering if the investment will be voided by becoming obsolete before returning the expected value.

Security and privacy

A steady and rapidly increasing number of embedded devices are either directly or indirectly connected to the Internet. This poses new challenges for embedded system developers. Even if an embedded device is only connected to a private network, engineers now must keep security in mind since other devices on the private network could act as bridges, deliberately or involuntarily, providing outside access to those devices. For instance, an engine management module in a car connected to the vehicle’s private network could potentially become exposed to the Internet through an infotainment head-unit connected to the same private network while also being connected to the Internet via data modem and cell phone network. Encrypted data communication on private networks and embedded firewalls to protect them will soon become standard for embedded systems.

The widespread proliferation of smartphones may enable botnets of entirely new dimensions. Access to platform sensors, such as GPS, makes it easy to physically locate the bots and aggregate the ones close in location for attacks in specific areas. For example, thousands of compromised smartphones in a Super Bowl stadium could be used to create a mass panic or do other harm. Embedded and mobile device designers must devise technologies to protect the platforms against viruses, Trojan horses and other malware.

As more and more users of smartphones use them for online banking, financial transactions at store checkouts and to unlock their cars, among other applications, the protection of the private data stored on these devices becomes mandatory. But not only the data that the user explicitly stores on the device is at risk. but also the data that the user indirectly creates while carrying and using the device: the places he visits, the stores she pays, the pictures of places and people he takes, the tunes she plays, etc. While each piece of data by itself may be meaningless the combination of it together with information found online through social media networks and personal websites may expose the person to identity theft and more. It is not a trivial task to enable user convenience and at the same time keep the user’s personal information safe from unauthorized access.

Embedded and mobile system developers must learn to understand the threats, be aware of them and proactively design their software accordingly. There is no absolute security and privacy; however, a simple message during installation that an application accesses the user’s contact list, the data network, the camera, etc., and asks the user whether to proceed or not is not merely a security concept but simply an excuse.

The Future Belongs to Embedded and Mobile Computing

The future of computing is in embedded and mobile. Orders of magnitude more of these systems will be deployed and used for a myriad of applications than have ever been for PCs or other computers. The possibilities and opportunities seem limitless but so seem the challenges. However, lessons learned from the personal computing era and the Internet still apply. As embedded and general purpose computing platforms converge, embedded and mobile developers must adapt to harvest the benefits and meet the challenges.


Zuckerberg is Spot on with “Hacker Way” (but The Linux Community Already Knew That)

Posted by on Tuesday, 7 February, 2012

Facebook filed its IPO last week , which is big news in and of itself. However, what struck me most was the letter from Mark Zuckerberg to potential investors that puts an exclamation point on something that the Linux community has been practicing for years: first – don’t do it for the money, second maintain the hacker way. And, the money follows.

Zuckerberg points out that Facebook wasn’t started to become a company. It was a cause. It was an idea — to connect people. Linus Torvalds had a similar idea 20 years ago when he started Linux as a way to collectively develop software. Linus kicked off the project “just for fun” and has repeatedly stated that his motivation behind Linux is solving interesting problems with code.

In the letter, Zuckerberg clearly demonstrates how he and his company have been inspired by the core principles that Linux and the open source software movement started twenty years ago.

Just take a look at these statements:

“People sharing more — even if just with their close friends or families — creates a more open culture and leads to a better understanding of the lives and perspectives of others.”

“Hacker culture is extremely open and meritocratic. Hackers believe that the best idea and implementation should always win — not the person who is best at lobbying for an idea or the person who manages the most people.”

“The Hacker Way is an approach to building that involves continuous improvement and iteration. Hackers believe that something can always be better, and that nothing is ever complete. They just have to go fix it — often in the face of people who say it’s impossible or are content with the status quo.”

“We think the world’s information infrastructure should resemble the social graph — a network built from the bottom up or peer-to-peer, rather than the monolithic, top-down structure that has existed to date. We also believe that giving people control over what they share is a fundamental principle of this rewiring.”

Sound familiar? Zuckerberg’s interpretation of the “hacker way” could be cut and pasted from the daily workings of Linux kernel development for the last two decades:

“Code wins arguments.”

“Quickly releasing and learning from smaller iterations.”

“The best idea and implementation should always win.”

Linux is the quintessential example of the hacker way. As an example, if you don’t think that code wins arguments, post some bad code along with the best-crafted argument in the world to the Linux kernel mailing list and see how it goes.

Linux is the fastest moving collaborative software project in the history of computing; it releases every three months and in small iterations with literally thousands of code changes in every release. In fact Linux is often a leading indicator of things to come. Virtualization technology, high performance computing, and more are often developed in the open first in Linux and then productized by companies later.

Of course, Facebook wasn’t just inspired by the hacker ethos. It is built on hacker code itself: Linux and a wide variety of open source technology. In fact, the economics that come with having open source software at its base makes Facebook’s filing even that much more compelling. Without the cost and flexibility advantages of open source, Facebook would be tied into proprietary contracts that would impede its ability to add users without the need to generate significant revenue. Before open source it was simply too difficult to scale, and the risk of your costs rising without your control was just too great. Zuckerberg made a brilliant decision — albeit inevitable — when he built Facebook on Linux using open source components. Would this IPO even be happening had he written Facebook as a Windows application?

It is no coincidence that one of the greatest entrepreneurial success stories of the last decade is deeply rooted in one of the greatest technology innovations of the last two decades: Linux and open development. Facebook is a great example of code + ethos that is driving great things.