Nicholas DiToro’s Radar Screen

January 23, 2009

Mobility is Embedded… (but Embedded is not necessarily Mobility)

Filed under: Connectivity, Embedded Systems, Mobility, Wireless, Wireline — nicholasditoro @ 5:50 pm

“Mobility” in the context of electronics has been a marketing buzzword for a few years now. Embedded is an electronics category with a history that extends much further into the past. Mobility falls into the embedded category. With mobility, people usually think of cell phones (e.g., mobile phones), associating wireless with mobility. This can be a valid association as well, but not always. Confused yet?

These terms are not well defined. However, I can give you the flavor without too much trouble. Embedded systems generally refer to any device, that has a computer in it, that is not a Desktop Computer (or mini, mainframe, workstation, etc.). In other words, the computer is embedded into the device. Within the embedded genus, you have the mobility species.

Mobility, again in the context of electronics, generally refers to embedded devices used while the user is moving. For instance, an On-Star® system is a mobility device. It is also a wireless connected device, as it offers wireless voice and data communications. The figure below illustrates the continuum of mobile and connected devices. Accounted for in the figure are connectivity sub-categories of wireless and wireline. Also incorporated in the figure is a connectivity “application” idea, as in SMS texting on the PC. See Enterprise Guide to Gaining Buisiness Value from Mobile Technologies p. 12 for a similar kind of diagram, and an interesting and comprehensive treatment of the subject (Wiley; A. Kornak et. al.).

Some opinions vary as to whether mobility is embedded or not; perhaps because embedded does have something of an “Automotive Controls”/Industrial/Military connotation. You could even go as far as to say this blog entry is an opinion piece. I will offer the following touch-points to support my claims: Wind River, Microsoft, Xilinx, and AMD were present at both the Consumer Electronics Show (CES) last week, and Embedded Systems Boston (ESC) in October. (Intel was notably missing from ESC in October, but their website has a strong embedded section.) A total of 128 organizations (including Intel and Microsoft) categorize themselves in the “embedded” category and came up in a “mobility” search query at the CES website. Mobility is Embedded.

“But what about Mobility Laptops?” you ask. This will be a personal topic of discussion at the “Get Mobile 2009″ meeting of the Entrepreneurs Forum of Greater Philadelphia (www.efgp.org) on January 26, 2009. I hope to see you there!

Nicholas DiToro

October 20, 2008

Device Driver Programming is a Tough Job!

Filed under: Developer Tools — Tags: , , — nicholasditoro @ 8:30 am

Creating device drivers is one of the most difficult jobs in software. Device driver code and its close cousin system level code have two faces, one face talking to the hardware, the other talking to the operating system. The hardware facing side is often referred to as “device specific code” and is a major focus for embedded systems companies.

In reviewing Steve McConnell’s recent and very enlightening book Software Estimation: Demystifying the Black Art, I ran across some productivity graphs for this and other kinds of programming. I recompiled data read from the graphs to derive the graph on the right. The vertical axis shows the amount of code for average projects measured, in Kilo Lines of Code (KLOC), and the horizontal axis shows staff months expended on the project. The graph shows data for Driver and System level code (which can include Firmware, BIOS, Kernel, and digital hardware diagnostics code), Scientific and Engineering code (such as weather simulations), Internet code, and Business code.

To illustrate the point with an example, at 20 staff months of effort a team working on a Driver or System level coding project will produce 12,000 lines of code. Compare that to the Business Software team with two and a half times the productivity at 30 KLOC, with the same effort! Having worked with device specific code for a long time, I attribute this productivity shortfall to lack of development tools. This will be a favorite topic of discussion at the SAE Convergence conference in Detroit (Oct 20th to the 23rd) and at the Embedded Systems Conference, Boston (Oct. 27th through the 30th). I hope to see you there!

Nicholas DiToro

October 17, 2008

ISO 9000, Six Sigma, and Software Quality

Filed under: ISO 9000, Six Sigma, Software Design Process, Software Quality — nicholasditoro @ 7:05 pm

A wise man once told me that the amount of red tape you have should fit your organization, your product, and your process. This is the first thought that comes to my mind when I hear the words “ISO 9000″ or “Six Sigma”. My first experience with such “Red Tape” as a software engineer was working on a military embedded system designed to go into harm’s way. Designing safety critical software systems is an especially sobering task when you have your users’ lives at stake and the addition of national security as your responsibility.

A software organization designing safety critical code is often required to be ISO 9000 compliant, and compliance does not come cheap. After reviewing C. Jones’s recent and intriguing book Estimating Software Costs, one of the things that is in the forefront of my mind right now is this statement: “Unfortunately in a software context there is insufficient data available to judge either the defect potentials or the removal efficiency levels of companies … certified under any of the ISO 9000 – 9004 standards.” Mr. Jones goes on to say “When software projects are measured in companies that utilize the Six Sigma approach … the defect potentials are below … U.S. averages.”

I’ll be seeking out some more opinions and data on this subject at the SAE Convergence conference in Detroit (Oct 20th to the 23rd) and at ESC Boston (Oct. 27th through the 30th). I hope to see you there!

Nicholas DiToro

March 15, 2008

Linux Drivers Advice: Buy your hardware after you choose your Linux OS!

Filed under: Linux — Tags: — nicholasditoro @ 9:46 pm

Most of the desktop Linux aficionados I talk to install their favorite distribution, or “distro”, on an old spare machine. The older the hardware, the better, as it seems it can take a while for Linux hardware drivers to become available. Difficulty in finding drivers for newer hardware such as printers or software for handhelds can range from very tough to impossible.

The Linux Drivers website is a good place to start to find supported hardware, and can be found here: http://www.linux-drivers.org.

“Linux drivers” being a major search query on the list of “Linux” queries evidences where we are on the supply and demand curve for Linux Drivers. You can see where it stands now by typing “Linux” in the Wordtracker tool link below.

http://freekeywords.wordtracker.com

I was surprised that Walmart began selling Linux PC’s a couple of years ago. I guess it fits in with their “cheap is good” philosophy, but your average consumer is asking for trouble if they buy such a machine. You can forget about Apple I-Tunes synchronizing to your I-Pod without some serious hacking. Getting your old printer to work correctly with Linux could very well turn out to be an exercise in futility. Despite these challenges, the Walmart / Everex $200 Ubuntu box is selling well. Dell has also embraced Ubuntu as its Linux Distro of choice, and seems to make a more concerted effort to attract seasoned Linux enthusiasts. I laughed when I saw a Linux PC web page that said “If you’ve gotten here by mistake, click here to get a Windows PC.”

Here is one of many experiences that has contributed to forming my opinion: My off-brand laptop has limited Linux display driver support, the reason being the wide screen is a rarity. I hacked my way throughto get a Debian Linux to boot some time ago. This problem remains unfixed. Maybe I will get around to properly fixing it myself one of these days.

The essential problem is that writing and testing hardware drivers is tough. Not only are programmers dealing with operating system requirements, but they also have to understand the hardware, which can be much more abstract and complicated. Some hardware, such as network or graphics controllers, require that you program hundreds to thousands of parameters into pigeonholes called registers. It takes teams of engineers months to years to create and test this software. If a more cost-effective method to create drivers could be created, more Linux support would be one of many benefits.

Nicholas DiToro

February 15, 2008

Blank Venn Diagram Template for a 4 Way Venn Diagram

Filed under: Graphs — Tags: — nicholasditoro @ 10:41 pm

The way most people draw Venn diagrams allows the display of, at most, three sets and their combinations. Microsoft Word’s Venn diagram tool also has this limitation. If you need to illustrate all of the intersections of four sets, you can download my Microsoft Word template of a Four Set Edwards’ Venn Diagram (EVD) here.

Here is an example that illustrates the utility of EVD’s in a story called BORG Island.

BORG Island

The Mayor of BORG Island decides to build a new village. The island pilgrims consisted of men and women from Belgium, Oman, Rwanda, and Greece. (We will later match these nationalities to the colors Blue, Orange, Red, and Green, the first letters of each color forms the BORG acronym.) Several generations have elapsed since the pilgrims first inhabited the island. The current Mayor’s constituency represents any and all combinations of these original nationalities.

The Mayor consults the Postmaster about how to lay out new zip codes for the new town. The Postmaster breaks down the Zip Codes according to national heritage, as in Table 1, and uses the Microsoft Word diagram tool to create the Venn Diagram of Figure 1, representing neighborhood layout. They soon realize there are people who will be homeless because they do not fit into his layout.

BORG

Meaning

Zip Code

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Greek

Rwandan

G+R

Omanian

O+G

O+R

O+R+G

Belgian

B+G

B+R

B+R+G

B+O

B+O+G

B+O+R

B+O+R+G

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Table 1. BORG Island Zip Codes

The Mayor is of Belgian and Rwandan decent, and is one of the homeless of the soon-to-be-built village. He angrily kicks the Postmaster out of the New Village Planning Commission, and replaces him with the island Mathematician.

Figure 1. The Postmaster’s new village neighborhood layout.

The Mathematician comes up with the improved arrangement of Figure 2, which is inclusive of all groups living on the island. The appreciative citizens then re-elect the Mayor, despite scandalous allegations of bribery in connection with the construction of the island’s new village.

Figure 2. The Mathematician’s new neighborhood layout.

A branch of discrete mathematics called combinatorics addresses the problem of the BORG Island example. Discrete math is a favorite subject of computer scientists and computer engineers. You can read more about these kinds of diagrams here:

http://www.combinatorics.org/Surveys/ds5/VennWhatEJC.html

January 15, 2008

KVM Switch Software (Minus the V)

Filed under: Developer Tools — Tags: — nicholasditoro @ 10:28 pm

Control all of the computers on your desk from one keyboard and mouse, for free.

KVM switches electrically switch the Keyboard, Video monitor, and Mouse that you are using to other computers on your desktop. Synergy (a free download) provides the software version of this function, without the video switching, by utilizing your network connection. The software can help un-clutter your desk, and possibly save you from carpel tunnel syndrome as well. I have found it to work very well on my Linux and Windows XP systems.

Synergy is well documented, and is available for free through Source Forge. It took me about 15 minutes of clear thought to get the software installed and configured. I did have to refer to the documentation to get things running.

Having video switch functionality or even an extended desktop is on the wish list for this software. I did try to hack around this limitation by using Cygwin’s xserver on my Windows machine (i. e., by running the xhost command on Windows/Cygnus, and setting the DISPLAY variable on my Linux box). This did not work for me, possibly because “X” and Synergy are fighting over resources. Despite this, Synergy is handy. I am able to utilize both my machines, for instance, one for Browsing web pages, and the other for coding. Clipboard text can be transferred between machines; a very nice feature.

The Synergy web page can be found here:

http://synergy2.sourceforge.net

Kudos to Chris Schoeneman and the development team for providing this extremely useful software! Keep up the good work!

Blog at WordPress.com.