Showing posts with label Rants. Show all posts
Showing posts with label Rants. Show all posts

Wednesday, June 24, 2026

Rant: Management Responsibility

Imagine you're the head of a small business and you need to hire someone to run a portion of your company. How would you go about doing that? Well, a reasonable person would evaluate various job applicants. You would check their qualifications. Do they have the necessary job skills and experience? Are they honest? Do they have a good work ethic? Is their temperament suitable for the job? Do they demonstrate good judgment?

Today I want to share my thoughts on the role citizens play in a democracy. There is a common belief that we are separate from our government and that we, as citizens, have no power over it. I would argue it's quite the opposite. We are the government and we have all the power. We just need to use it.

America is a Business

To understand this, let's consider the American government in terms of corporate structure. America, as well as its government, is a business. It produces work products such as roads and bridges, timely weather forecasts, various economic reports. The government also provides services like firefighting, law enforcement, public schools, and libraries for its customers, the citizens in exchange for taxes.

The government is managed by its citizens, people like you and me, who act as both the Board of Directors and its customers. We hire the management team, the elected officials in whom we place our trust to operate the machinery of government according to our policy directives. Our corporation has a set of bylaws called the Constitution which the management team is bound to obey and enforce. We have a separate board called the courts that provides guidance regrading the application of the bylaws and their resultant policies. Ultimately, all power rests with the citizens since we are the ones who sign the management team to their multi-year contracts.

But with great power comes great responsibility. In our case it's management responsibility. We have the responsibility to be engaged and vigilant. We must hire carefully, and constantly evaluate the management team's performance. In order to be good at this role, we must understand what our government does and how it works. We must understand the bylaws and how they shape the government. 

America Always Gets the Government It Deserves

So what happens when we neglect our management responsibility? A brief look around answers that question. In the year 2026, we have a deeply corrupt and incompetent government whose actions are dictated by a handful of wealthy donors, and these billionaires don't seem very interested in our well-being. So it's up to us to perform our management responsibility and straighten this mess out.

Now, I know that people are busy with their personal lives and don't have the time or necessarily the inclination to perform the required oversight, but the management of our government is important because it is tasked with securing our economic, societal, and environmental safety. Not something that you want to leave to chance or worse, exploitation by evil people.

Like they say, freedom isn't free.


Thursday, March 7, 2013

The Chromebook Pixel and the Meaning of it All


I’m typing this on a Chromebook Pixel. It’s not mine. I borrowed it from my good friend Norman. To start out, I will say that the Pixel is a very nice piece of hardware. It’s extremely well made, has a beautiful display, a pleasing keyboard, and a wonderful touchpad. However, it costs 5 times as much as the new Samsung Chromebook and I’m not sure the Pixel is 5 times better. But even at it’s lofty price, the Pixel is tempting.

The Internet is the Computer

I don’t know the reason Google chose to introduce the Pixel when they did, but  as someone schooled in industrial design, I understand that it’s easier to make something that is expensive than to make something that is inexpensive. Google is just starting out as a hardware developer and a high-end product (especially a well-executed one like the Pixel) is a good start. But beyond that, the Pixel suggests Google has higher aspirations for the Chromebook concept.

Just what are those aspirations? While Chromebooks have been positioned as low-cost secondary computers, the Pixel goes beyond that. The Pixel is positioned for the future, a future where the Chromebook is your primary computer.

Twenty years ago, the late, great Sun Microsystems used the marketing slogan “The network is the computer.” It referred to the local area networking technologies first developed in the mid-1980s such as network file sharing and remote control of systems and applications. Today, Google and a few others are pushing the idea to the next level: The Internet is the computer.

In this brave new world, you don’t rely on the limited processing and storage capabilities of the computer in your hand. Instead you use a wide variety of computing resources available all over the world. The question is how.




More than "just a browser."

Apps are a Dead End

I have argued for some time that native apps on mobile devices are not the future. Today, a platform’s chances of survival are determined by the vitality of the app developers that support the platform. This requirement of “hundreds of thousands” of native apps, presents an unassailable barrier to entry; Just ask Microsoft and Blackberry as they struggle to gain any traction in the mobile market.

A few companies are looking at something different. Samsung, the world’s largest seller of Android devices, and the Linux Foundation are developing a new, Linux-based  mobile platform called Tizen, Canonical is introducing a new mobile version of the Ubuntu operating system, and Google has Chrome OS. All three of these platforms are going to rely in large part on web apps that execute in a web browser.

If you think back to how native apps came to dominate the landscape of mobile computing, you realize that they were necessary because the web browsing experience on phones and tablets was so weak. Many apps don’t really do much beside provide a pleasing user interface to a remote server. Most mobile devices still lack the horsepower to provide a satisfying web-based experience but that problem will soon be solved. When it is, we will see less reliance on native apps and more on web-based ones.

Why? Because it’s cheaper. Web apps are a more efficient use of development resources. Look at the amount of work needed to port an application to both Android and IOS, not to mention Blackberry and Windows Phone. Even porting an app from an old Apple device to a new one requires effort due to the fact that app developers on that platform have gotten into the nasty habit of hard coding their graphics to specific screen sizes on iPhones and iPads.

Soon, when mobile devices are fast enough and mobile browsers are good enough, we will see apps that are simply portable among all devices and platforms. Of course there will still be some native apps, but a platform won’t need hundreds of thousands of them to gain acceptance. Web apps will open the market to new platform competitors, and that’s a good thing.



More Apple than Apple

The Pixel is an interesting product. It’s a very nice object, very fast and extremely easy to use. As I have said before, Chromebooks are “the computer you can’t screw up” and the Pixel is no exception. It provides a web experience that is unmatched on any other laptop. For many consumers, Chromebooks are a good choice because they perform the task most consumers originally bought a computer for (web browsing) and yet free their owners from the chore of system administration, a job that most consumers are woefully unqualified to perform. The Pixel is clearly a luxury product intended for a luxury consumer, but part of that luxury is the luxury of ease of use and the quality of the user experience. An experience that only this premium Chromebook can provide.

Thursday, October 18, 2012

The Pioneers of UNIX

Steve Jobs? Steve Jobs didn't do jack. If you want to know who is responsible for the modern world you have to look at the people working at Bell Labs in the 1970s and 1980s. The people who created UNIX. It was from that invention that we have the modern world. UNIX led to Linux which led to Android. UNIX led to the BSD family of operating systems which led to Apple OSX. UNIX led to the C programming language in which most system-level software today is written. Ever wonder why URLs use forward slashes? It's because UNIX was instrumental in the creation of the Internet.

Below is a 27 minute promotional video produced in 1982 by Bell Labs, where we meet some of the giants on whose shoulders we all stand today. Included in the video are:


In addition, you'll get a good look at some computer hardware from the early 1980s which is around the time I was starting my transition from TRS-80s to IBM PCs.

Sunday, July 17, 2011

Google Chromebook: The Computer You Can't Screw Up

I’ve had my Samsung Chromebook for a couple of weeks now.  

A lot has been written about the Chromebook concept, so I won’t go into it in detail here, but in a nutshell, a Chromebook is a specialized small form-factor computing device that is designed to act as an Internet terminal which can rapidly connect the user to network-based services.  It provides a software platform for web-based “apps”  which can be as simple as links to web sites, or as complex as browser extensions using the scripting facilities provided by the Chrome web browser.

My editor has an iPad and I admire its mobility and, more importantly, feeling of immediacy.  A touch or two and you are ready to go.  I have a netbook (actually two) and a netbook is certainly mobile, but it’s still a full-blown computer and that is not always an advantage.

While I understand some of the appeal of the iPad (especially as a media consumption device), the one thing that I can’t understand is how people tolerate its miserable web browser.  Slow and incapable of multitasking, the iPad has the bulk of a computer while unable to perform any better than a smartphone.  To my mind, a Chromebook has many of the desirable attributes of iPad (mobility, immediacy, long battery life) without its limitations.

The tech pundits have weighted in on the Chromebook and I have been quite surprised by the number of negative opinions that this product has spawned.  I guess that I shouldn’t have been surprised given how many negative things were said about the iPad at its introduction.

They Are Missing The Point

Let’s look at the main criticisms being leveled at the Chromebook:

1. “They are too limited.”  The problem many people have is that Chromebooks look like laptops but they don’t do  as much.  Yes, they look like laptops, but they are not laptops.  It is better to look at them as iPads with an actual keyboard, a real web browser, and USB ports.  True, you can’t run Photoshop on a Chromebook, but you can’t run it on your phone either.

2. “They don’t have enough local storage.”  While 16 GB may not sound like a lot, I have noticed that on my netbooks (both of which have 16 GB SSD drives), I don’t store anything close to that much data locally.  I’m always transferring it to other larger machines (Hint: Ubuntu One is your friend).  Besides, unlike an iPad, you can attach USB mass storage devices to a Chromebook.  So, if you want to download that massive video collection, just whip out your 3 TB external drive and go for it.

3. “They are useless without an Internet connection.”  As far as I’m concerned, in this day and age all computers are useless without an Internet connection.  Don’t believe me?  Disconnect your network for a while and see how much you can really get done.  Check your email?  No.  Update your Facebook status or send a tweet?  Nope.  Post to your blog?  Nah.  Conduct research?  Go shopping?  Read the news?  Manage a remote server?  Forget it.

4. “They cost too much.”  For the same money you can get a “real” laptop or netbook,  but name a $430 laptop that will boot in 8 seconds and has 8 hours of battery life.  You also have to consider your definition of “cost.”  Sure, you could buy a lovely Windows 7 netbook for about the same price as a Chromebook, but then you would be confronted with what I call the “money pit of maintenance.”  How much time and money will you spend keeping that machine secured and maintained?  For businesses, the cost of support far exceeds that of the machine itself.  Google uses the slogan “Nothing But The Web,” but they should have called the Chromebook “The Computer You Can’t Screw Up.”   I consider this to be the killer feature of Chromebooks.  There is almost nothing to manage.  Imagine what a business spends maintaining its fleet of PCs each with its own copies of programs and local storage.  With Chromebooks (as with any kind of “thin client” computing model) administration becomes centralized and vastly simplified.  Yes, you may be vulnerable to a possible single-point-of-failure scenario, but I think that many businesses would find this to be an acceptable trade-off.  Oh, and did I mention that a Chromebook is at least $100 less expensive than an iPad.

5. “The Cloud is insecure/unreliable.”  I guess you haven’t suffered a hard drive failure lately, or  had your laptop stolen.  I don’t trust the cloud, but I don’t trust hard disks either.  That’s why I keep backups.

The Philosophical Issue

RIchard Stallman, as you may know, has come out strongly against cloud computing, the model that the Chrome OS so vigorously promotes.  He calls it “stupid” and “careless.”  I think that if you are careless and stupid with anything, you will likely get what you deserve, but I don’t see the cloud as intrinsically evil the way Mr. Stallman does.  I would point out that most free and open source software is developed in the cloud.  Likewise, I don’t see Chrome OS as particularly evil, any more than I see the firmware built into a terminal as particularly restrictive to my freedom.

Where freedom is endangered is with the software that the cloud sometimes provides.  Just like many kinds of proprietary software, cloud-based services have the potential for abuse, particularly by locking your data into a particular vendor’s service.  Also, many of the services provided by cloud vendors are closed-source violating the fundamental tenet of software freedom.

However the concept of cloud computing creates an opportunity for free software and personal liberty.  While the Chromebook demonstrates a certain bias towards Google services, it is not bound to them  You are free to use any cloud service of you want, including your own.

Chromebooks Seem Fine To Me

I, for one, am enjoying my Chromebook.  It fills my need for rapid, lightweight web access without having to support another computer in my “fleet.”

Thursday, May 27, 2010

Will The iPad Kill The Netbook?


Ever since Apple announced the iPad, there have been countless stories in the press about the iPad's effect on the netbook market.  I'm a big fan of netbooks and I agree that the netbook market is in trouble but it's not because of the iPad.

It's because of Windows.

Now, I don't mean this as a piece of simple-minded anti-MS snark (though I am fully capable ;-).  I'm serious.  Windows is the problem with netbooks.  Installing Windows on a netbook changes the device from a small effective portable Internet interaction device into a tiny, underpowered, laptop computer.

In the beginning of the netbook revolution, hardware makers chose Linux.  The first generation of netbooks featured small screens (7-9 inch) and solid-state disks.  To make use of this platform, they pretty much had to use Linux because of its small footprint and easy customization allowing manufacturers the freedom to create user interfaces appropriate to the device.  The fact that the OS license was free didn't hurt either given the price points that netbooks originally held.

So what went wrong?

First, Microsoft was able to respond to the threat to its consumer OS monopoly by releasing a version of Windows XP with ultra-cheap licensing provided that the computer was suitably underpowered.  Asus, for example, sold both Linux and Windows versions of it's netbooks for a time.  Both models cost the same but the Linux model had a larger drive.  Why? Because the Windows license placed a cap on size of the drive that would qualify the computer for the low-cost license.

Second, the Linux distributions supplied by the netbook makers were not very good.  I can personally attest to that.  My editor's eeePC 901 (pictured above with my own HP Mini 1116NR) came with the Asus version of Xandros and frankly, it sucked.  After struggling with it for several months, I replaced the Xandros with Ubuntu 9.04 Netbook Remix and now the machine is a delight.

Finally, in response to the inappropriate user interface Windows provides for small screen devices, netbook makers made netbooks larger with 10-12 inch screens and they gave up on solid-state drives.  Almost all netbooks today come with slow 160 GB hard disks.  So now you have a slow 12 inch laptop that costs about the same as a "real" laptop and isn't really that portable anymore.  No wonder nearly one-third of netbook shoppers are buying IPads instead.

Interface, Interface, Interface.

But the iPad should not be directly competitive with netbooks at the conceptual level.  In many ways the iPad is a remarkable device for content consumption.  Unlike a Windows computer, it requires virtually no system administration.  This makes the device a perfect "television of the future" where one just uses it to passively consume content.  However, its lack of a real keyboard and limited connectivity options makes it a poor choice as a portable Internet interaction device; a role that the netbook hardware platform excels in.

Clearly, Apple devised a near perfect user interface for a tablet, something Microsoft was never able to do.  It is possible that the next generation of netbooks will do better.  There have been a number of announcements of upcoming models that will be based on ARM chips using operating systems, such as Android, better suited to mobile devices.  Even as much as I like Ubuntu's netbook remix, it's still a crude hack to shoehorn a desktop OS onto a small screen computer.

Thanks for listening!  See you again soon.

Friday, April 30, 2010

The Bugs In Ubuntu 10.04


Now that Ubuntu 10.04 ("Lucid Lynx") has been released, I can spend some time talking about my experience testing it.

I was really hoping that 10.04, being a LTS (Long Term Support) release, would have focused on supreme reliability and stability.  A sort of "9.10 without the bugs."  Unfortunately this was not the case.  10.04 introduces a host of new features and technologies, some of which are still rather "green."

In the comments to follow, I was to vent some of my frustrations over the quality of the 10.04 release.  I don't want to disparage the work of the people in the Ubuntu community nor the staff at Canonical.  I'm sure they worked very hard getting this version out.  Many of the problems are rooted in the upstream projects from which Ubuntu is derived.

A Pet Peeve

If you go to the bug tracking site for Ubuntu, the first thing you see is a long list of open "Critical" bugs.  Looking at the list you notice that some of these bugs are very old.  Discounting the symbolic bug number 1, the "We don't have as much market share as Microsoft" bug, you see that some of these open, critical bugs are years old.

Now, I used to administer a bug database (albeit a much smaller one than the one at Ubuntu), and to my eye this just looks terrible.  It leaves a bad impression.  If the bug is really "Critical," then it should get addressed either by marking it no longer relevant due to its age, or it should get fixed.

Overt Cosmetic Problems

While a lot of attention was given to the look of Ubuntu 10.04, serious cosmetic problems appear on many machines.  Neither of my test systems could take full advantage of the visual "improvements" during boot up.  There are a lot of distracting flashes and, on my laptop, it displays the image you see at the top of this post.

Not very impressive.

O.K. so maybe I have weird hardware of something, but how do you explain this:  click on the help icon on the top panel and wait for Ubuntu Help Center to come up.  Select "Advanced Topics" from the topics list then "Terminal Commands References [sic]" and look at the result:


Nice.

Connectivity Issues

I'm sure that the folks at Canonical are very interested in corporate adoption of their product.  This means, of course that it has got to play well with Windows file shares.  Unfortunately, here too, 10.04 falls down.  Throughout the beta test phase there were numerous problems with gvfs and gnome-keyring.  As it stands now, many of these of these problems have been worked out, but as of today, you still cannot mount a password protected Windows share if you store the password.  It seems to work at first, but if you reboot your machine and try it again you get something like this:


X Problems Galore

While I  encountered some important problems with my desktop test system, they were nothing compared to the problems I have with my laptop.

A few words about my laptop.  Yeah it's old.  It's an IBM ThinkPad T41 circa 2004.  I bought it from EmperorLinux pre-installed with Fedora Core 1.  Since then, I have run numerous Linux distributions on it without problems.  In fact, the T41 was a favorite of Linux users since it ran Linux so easily.  This is, until 10.04.

Various things will just crash the X server, such as using the NoScript Firefox extension, or the remote desktop viewer.  Suspend and resume don't work (the display never comes back).  You can work around these problems if you add the kernel parameter nomodeset to grub, but then all of your videos in totem look like this:


Not exactly what I had in mind.
 
A Release Too Far?

I am still looking forward to upgrading to 10.04.  I'm hopeful that, in time, the issues I have with 10.04 will be addressed.  But what about in the meantime, with thousands of possibly new users trying out the live CD only to find issues like the ones I found?  That's not good.

Admittedly, I got spoiled by 8.04.  It has served me very well for the last two years.  It got me through the production of my book without crashing once and frankly I'm willing to wait a few seconds more for my system to boot and willing to give up a lot of CPU-sucking, memory-hogging eye candy to have a system that stays up and can do the basic things right.

Further Reading
[UPDATE] I'm not the only one with concerns about 10.04:

Tuesday, April 27, 2010

The Financial Physics of Free Software

In the Internet age, does software have value?  Of course software is valuable in the sense that it provides service and is useful, but does software have monetary value?

If one looks at the law of supply and demand, the fact that software, like all other forms of digital content, can be endlessly reproduced and distributed at virtually no cost negates its value because software distributed this way lacks scarcity.  Digital content is simply not a scarce resource.  This hasn't stopped people from trying to impose artificial scarcity on digital data through the use of digital restrictions management (DRM) and draconian imaginary property laws but these approaches have had only limited success.  This is not surprising as attempting to create an artificial shortage goes against the physical nature of the Internet and of computers themselves.

The Proprietary Model

If you have ever checked out my resume, you know that I spent the greater portion of my career in the proprietary software world and was, at one time, a big supporter of proprietary software.  I was fortunate to have spent all of my years in the software industry working for small companies where one could wander the halls and learn every aspect of the business.  In addition to being a technical manager, I had number of marketing and sales assignments as well.

Software development in the proprietary world is speculative.  Typically, a product manager or marketing director is given the assignment of coming up with the "next big thing," a product that can sold to many customers at a profit.  The reason that it has to be big is because proprietary software development is fantastically expensive. The product manager will present ideas to management and get approval for some personnel and a budget based on the product manager's forecasts for delivery dates and sales targets.  After approval, the software development process begins,  In some companies this process is very formal including requirements specifications, design reviews, test plans, etc.  At the end of the process, the software product goes to market.  This involves a number significant expenses including marketing, advertising, trade shows, etc.

It is important to remember that proprietary software companies don't actually sell software.  They sell licenses.  It is through this mechanism that they attempt to create a scarcity that gives their product value.

Proprietary software only has value once it is written.  You will sometimes see product announcements appear for non-existent yet-to-be-developed products.  Such products are derisively known as "vaporware" in the industry because proprietary software does not have value until it is written and actually availabile in short supply.

The Free Software Model

To members of the proprietary software community, the notion of free software appears insane.  This is because they think that free software means that they have to go through all of the steps and expense of the process above and then not collect any revenue on the back-end.  There are a number of problems with this assumption.

The development process for free software is fundamentally different.  First off, it is not speculative.  Developers of free software typically have an interest in actually using the program they want to write.  It also means that free software developers are usually subject matter experts for their chosen program.

Free software is much less expensive to produce than proprietary software.  The development process is much less formal than closed proprietary processes owing to the fact that development is done in the open.  This allows a more natural and organic method of solving problems and fixing bugs and, unlike proprietary development, the development tools and shared software components are free.  Free software also does not incur the engineering overhead of implementing "copy protection," user registration systems, and tiered product versions that are used to establish upgrade paths for proprietary products.

Finally, free software products don't have the marketing and sales expenses of proprietary software.

Making Money

While the proprietary software appears to make a lot of money now, is it sustainable?  Will the Internet and its ability to perform infinite duplication and distribution drain the value from software?  Only time will tell, but I'm betting that the Internet will emerge victorious.  We can already see the signs of this victory with the rise of "cloud computing" which is eliminating the need for software all together.  But cloud computing raises a number of issues including privacy and security, as well as freedom.

There has been a lot of discussion of how to make money with free software.  Most of the ideas put forth involve charging for services.  After all, Red Hat, a very successful software company, makes its money that way, but I want to suggest another possibility.

As we saw, proprietary software only has value after it is written and is available for license sales.  The free software model assumes from the start that once a program is written it no longer has value because it is not scarce.  In contrast to proprietary software, free software only has value before it is written.  The absence of a desired software program is the ultimate scarcity.  There exists an opportunity to exploit this fact.  It's not really a new idea by any means.  This is how the custom software business works.  Clients want something and pay big money to get something written.  What I envision is a business that somehow aligns many clients with developers so that the cost of development can be spread out among many clients.

What will such a business look like?  That's an exercise I will leave to my more entrepreneurial readers.

Further Reading

Wednesday, April 21, 2010

Hitler, as Downfall producer, orders a DMCA takedown

As you may have heard, the producers of the movie "Downfall" recently staged a DMCA takedown of all of the bunker scene parodies on YouTube, including the one I posted on this blog.  Brad Templeton, well-known activist, has posted a response.  You can view it here.

Further Reading

Friday, February 20, 2009

The Unix (Linux) Frame Of Mind

If you are migrating from Windows to Linux, one of the barriers you will encounter (besides the myriad superficial differences in the user interface) is the whole "culture thing."

Using a Unix-like operating system involves more than learning where the buttons are located on the desktop. It requires a different way of thinking about your computer. On top of that, Linux requires that you learn about your relationship with the Free and open source software communities. That will be the subject, no doubt, of many future postings, but for now we'll talk about the Unix frame of mind.

To understand Unix, you have to understand its historical context. Unix certainly has its faults, but if you understand its history, you can see that many of its "features" are due to the state of computing during its formative years. But it's also important to realize that just because something is old does not mean that it is necessarily bad. Take for instance, the command line interface. If you listen to pundits and the PC magazine writers, you would think that the command line is the equivalent of waterboarding to the modern computer user. I liken use of a graphical user interface to watching television and the command line to reading a book. They are very different, but both are valid (and valuable) if used in the proper way.

So what is "the Unix frame of mind?" It is based on some the following principles:

The computer is multi-user. Unix was designed for "big" computers. Big, expensive computers that supported many users at the same time. This has a number of implications. For one, it meant a different security model. On a multi-user computer, it is essential that one user cannot trash another user, or the entire system. It also implies that communities can form among the computer's users. If you have Fedora or any of the other Red Hat family of Linux distributions, you may have noticed that it runs sendmail by default. This is part of the Unix tradition. Users on a system send email to each other. The first form of instant messaging was the write command which sent a text message to another user's terminal session.

Automate everything. Back in the 1960's IBM used a marketing slogan, "Machines should work. People should think." Yet today, we have millions of office workers sitting in front of PCs pumping their mice all day. Why? It's because the computer is not doing the work. The human is. The Unix way is to instruct the computer how to do the work and then forget about it. Back in the 1990s I marveled at the cron daemon. It could perform tasks on a scheduled basis. I remember leaving my PC on all night and letting it do the work I needed and having a summary of the results each morning. It did the work so I didn't have to.

Everyone programs. The computer is a tool, or rather, it is a huge collection of tools that can be arranged to perform work. To do this, you must program. You have to break your tasks into simple steps and arrange the tools to perform them. Unix actually makes this fairly simple. You can create pipelines of commands or write shell scripts. Have you noticed how, over the years, Windows has removed all the programming tools from its system? This keeps the users helpless. If they want a solution, they have to go out and buy it. By contrast, every major Linux distribution includes the shell, perl, python, text editors and thousands of tools for building solutions. If you need more, there is just about every programming tool under the sun available for immediate download.

A computer is not "easy to use." That is a marketing myth. A computer is no more easy to use than a violin, but with much study and practice, both can produce beautiful music.

It all depends on your frame of mind.

Every Linux user should learn something about the history of Unix. The Wikipedia is a good place to start:

http://en.wikipedia.org/wiki/Unix

Also check out Eric Raymond's The Art Of Unix Programming:

http://www.faqs.org/docs/artu/

Wednesday, February 18, 2009

A Brief History Of Printing

The following is an excerpt from my upcoming book, "The Linux Command Line" due out later this year.

To fully understand the printing features found in Unix-like operating systems, we first have to learn some history. Printing on Unix-like systems goes way back to the beginning of operating system itself. In those days, printers, and the way they were used was much different than today.

Printing In The Dim Times
Like the computers themselves, printers in the pre-PC era tended to be large, expensive and centralized. The typical computer user of 1980 worked at a terminal connected to a computer some distance away. The printer was located near the computer and was under the watchful eyes of the computer’s operators.

When printers were expensive and centralized, as they often were in the early days of Unix, it was common practice for many users to share a printer. To identify print jobs belonging to a particular user, a banner page was often printed at the beginning of each print job displaying the name of the user. The computer support staff would then load up a cart containing the day’s print jobs and deliver them to the individual users.

Character-based Printers
The printer technology of that period was very different in two respects. First, printers of that period were almost always impact printers. Impact printers use a mechanical mechanism to strike a ribbon against the paper to form character impressions on the page. Two of the popular technologies of that time were daisy wheel printing and dot-matrix printing.

The second, and more important characteristic of early printers was that printers used a fixed set of characters that were intrinsic to the device itself. For example, a daisy wheel printer could only print the characters actually molded into the petals of the daisy wheel. This made printers of the period much like high-speed typewriters. As with most typewriters, they printed using monospaced (fixed width) fonts. This means that each character has the same width. Printing was done at fixed positions on the page and the printable area of a page contained a fixed number of characters. Printers, depending on the model, most likely printed ten characters per inch (CPI) horizontally and six lines per inch (LPI) vertically. Using this scheme, a US letter sheet of paper is eighty-five characters wide and sixty-six lines high. Taking into account a small margin on each side, eighty characters was considered the maximum width of a print line. This explains why terminal displays (and our terminal emulators) are normally eighty characters wide. It’s to provide a WYSIWYG (What You See Is What You Get) view of printed output using a monospaced font.

Data is sent to a typewriter-like printer in a simple stream of bytes containing the characters to be printed. For example, to print an “a”, the ASCII character code 97 is sent. In addition, the low-numbered ASCII control codes provided a means of moving the printer’s carriage and paper using codes for carriage return, line feed, form feed and the like. Using the control codes, it’s possible to achieve some limited font effects such as bold face by having the printer print a character, backspace and print the character again to get a darker print impression on the page.

Graphical Printers
The development of GUIs lead to major changes in printer technology. As computers moved to more picture-based displays, so to did printing move from character-based to graphical techniques. This was facilitated by the advent of the low-cost laser printer which, instead of printing fixed characters, could print tiny dots anywhere in the printable area of the page. This made printing proportional fonts (like those used by typesetters) and even photographs and high quality diagrams possible.

However, moving from a character-based scheme to a graphical scheme presented a formidable technical challenge. Here’s why: the number of bytes needed to fill a page using a character-based printer can be calculated this way (assuming sixty lines per page each containing eighty characters):

60 X 80 = 4800 bytes

whereas, a three hundred dot per inch (DPI) laser printer (assuming a eight by ten inch print area per page) requires:

(8 X 300) X (10 X 300) / 8 = 900000 bytes

The need to send nearly one megabyte of data per page to fully utilize a laser printer was more than many of the slow PC networks could handle, so it was clear that a clever invention was needed.

That invention turned out to be the page description language (PDL). A page description language is a programming language that describes the contents of a page. Basically it says, “go to this position, draw the character ‘a’ in ten point Helvetica, go to this position...” until everything on the page is described. The first major PDL was PostScript from Adobe Systems which is still in wide use today. The PostScript language is a complete programming language tailored for typography and other kinds of graphics and imaging. It includes built-in support for thirty-five standard high quality fonts and the ability to accept additional font definitions at run time. At first, support for PostScript was built into printers themselves. This solved the data transmission problem. While the typical PostScript program was very verbose in comparison to the simple byte stream of character-based printers, it was much smaller than the number of bytes required to represent the entire printed page.

A PostScript printer accepted a PostScript program as input. The printer contained its own processor and memory (often times making the printer a more powerful computer than the computer it was attached to) and executed a special program called a PostScript interpreter which read the incoming PostScript program and rendered the results into the printer’s internal memory thus forming the pattern of bits (dots) that would be transferred to the paper. The generic name for this process of rendering something into a large bit pattern (called a bitmap) is raster image processor or RIP.

As the years went by, both computers and networks became much faster. This allowed the RIP to move from the printer to the host computer. This permitted high quality printers to be much less expensive.

Many printers today still accept character-based streams, but many low-cost printers do not. They rely on the host computer’s RIP to provide a stream of bits to print as dots. There are still some PostScript printers too.

Saturday, February 14, 2009

Peanuts And Software

I really enjoy factory tours. I've always had a fascination with how things work and how things are made. Over the years, I've been on some great tours, Syracuse China, Corning Glass, Ben & Jerry's Ice Cream, and best of all, the (now defunct) General Motors assembly plant in Baltimore.

In the past, it seemed like many companies offered tours of their factories to the public, and why not? The great companies were truly proud of what they were doing and were happy to show you. This even applied to products whose production processes are better left unseen.

In recent years, factory tours have gotten harder to find. I don't know the exact reason for this. Maybe it's the fear of litigation, or a desire to keep everything proprietary, I just don't know.

The alert among you may have noticed the story in yesterday's New York Times announcing that the Peanut Corporation of America has filed for bankruptcy and will be going out of business. As you may know, Peanut Corporation of America recently gained notoriety for knowingly shipping peanut butter to its customers contaminated with salmonella resulting in over 600 reported illnesses and 9 deaths. As the scandal unfolded, reports surfaced of unsanitary conditions in its plants including cockroaches, leaking roofs, and a report of a dead rat in one of its peanut roasters.

Somehow, I don't think they offered a factory tour.

What does this have to do with software? Plenty. When you make something in the full light of day, it's a lot less likely that something horrible is going on under cover of secrecy. Open source code is like a factory tour for software. You can wander around and feel the pride of those who created it.

Proprietary software is different. What are they hiding? Does their program have "rats in the roasters?"

You'll never know.

Monday, January 26, 2009

A "Command Line To The Rescue" Story

As you may recall from my earlier review of my new Dell desktop, I bought it to replace my previous Dell desktop, a Dimension 2400. Over the last couple of weeks I have installed a couple of distributions on my old system. First the Windows 7 Beta (the first installation of Windows in my house since 1996), a sad story that I hope to write about soon, and over the weekend I formatted over that horror and installed Fedora 10.

I've used a lot of Red Hat products over the years and I favor it for administration, however, I have a growing fondness for Ubuntu because it seems to deliver the best desktop user experience. When it comes to Red Hat stuff though, I'm pretty expert at installing it.

Now I have to digress a bit and talk about a phenomenon I have discovered about Linux. It is often useful to think about Linux as though it were a living thing. It's been said that Linux is based on evolution, not "intelligent design." This means that Linux evolves naturally in a series of fits and starts, rather than being the result of some grand plan. This is the opposite of proprietary software, which (if done properly) is the result of careful planning.

What this means is that sometimes a subsystem in Linux goes away and is replaced by another re-written replacement that addresses a need. And, of course, programmers prefer to re-write code rather than maintain old code. Anyway, this periodic "churn" of code is natural to the process.

The problem is that sometimes things that worked in previous versions stop working in the new versions. This is fairly common Linux, and it's perhaps its most off putting characteristic.

One case in point is the display driver for Intel integrated graphics chips. Admittedly, some of these chips really suck, especially the earlier ones. The new ones are better and also get official driver support from Intel. Over the last year or so, Linux distributions have been deploying the new "intel" driver replacing the previous "i810" driver. The new driver is in every way much better than the old driver, except it doesn't like the older chips very much.

This brings us back to my Dimension 2400, which, as you may have guessed by now, uses one of the old chips.

So I pop the Fedora 10 install DVD into the drive and reboot the machine. The installer starts and gets to the first graphical install screen and completely hangs. Dead, inert. It doesn't look like I'll be doing a graphical install this time.

I power-cycle the machine and just as the DVD starts to boot, i press the escape key and get:

boot:

Wonderful! A boot prompt. Now I know what to do. I enter:

boot: linux text

which instructs the boot loader to boot the kernel called "linux" and pass the argument "text" to the system. On a Red Hat style systems this will invoke the text mode installer. I answer all the prompts and the install gets underway. While I have some time to kill, I Google for a way to get the graphics working again. From my search, I determine that the problem isn't so much the new driver but rather that, by default, the new driver uses a new "acceleration method" called "EXA" rather than the previous method called "XAA". Making a one line change to the /etc/X11/xorg.conf file will cause X to revert to the old method and solve the problem.

After the installation is complete, I reboot the machine and it comes up in text mode. This is caused by a configuration file called /etc/inittab which contains a setting for the default run level, which is 3 for text mode and 5 for graphical mode on Red Hat style systems. In text mode you get a login screen:

Login:

I log in as root and create a personal account for myself:

useradd bshotts

passwd bshotts

After I create the account and set the password, I press Alt-F2 to get to the second virtual console. There I log in as bshotts and try to launch X. I do this by entering the command:

startx

The X server starts and almost gets to the desktop before it chokes again. Looks like it's time to fix that xorg.conf file. I restart the machine and and log in as root again. I go looking around in the /etc/X11 directory and notice that there is no xorg.conf file. This is because with modern X servers, the file is no longer required, as all the configuration is done dynamically at runtime which, in concept, is great when it works.

Bummer.

I think to myself, "there must be some kind of configuration program for X," so I start digging around in the man pages. I discover that the Xorg program has an option called -configure that will create an xorg.conf file based on the server's best guess of what the correct configuration should be. You must be root to use this option so I give it a try:

Xorg -configure

and it creates a file named xorg.conf.new in root's home directory. I copy this file to /etc/X11 which is where X expects to find it:

cp /root/xorg.conf.new /etc/X11/xorg.conf

Next, a little editing with vi and I add one line to the "Device" section of the file:

Option "AccelMethod" "XAA"

After saving the edited file, I login in as bshotts and try the startx command again and low and behold, I have a working desktop! I confirm that the graphics seem correct and log out of GNOME. This returns me to the text console. Since I want the system to work in graphical mode by default, I need to change the default run level. I do this by returning to my root console session and editing the /etc/inittab file. I change the last line to read:

id:5:initdefault:

changing the "3" to a "5" to set the run level to graphical. After saving the file I reboot the machine and everything works. New installation successful.

So what does all this teach us? It teaches us that sometimes there is no substitute for a good command line. A command line can work wonders. It teaches us that, with enough digging around, most problems are solvable. And most of all, it teaches us you should keep learning and never give up.

Hope you had a good weekend too!

Sunday, January 4, 2009

Why use Linux?

I recently received this thoughtful question from a concerned reader:


Hi,

My name is Allan. I´m from Costa Rica. First of all, let me congratulate you because it´s a little bit hard to find a good Linux site that explains everything about the shell (and how to start using commands) and how Linux works in a friendly clean way. I have always been interested in Linux (since I was 12 years old more or less, now I´m 25). But I´m still a rookie using it. Unfortunately most of us have been some kind of forced to depend (exclusively) on Windows because of all the software available, the GUI and the easiness of using it. We all complain about how bad Windows works, that´s why I´m trying to be more involved on Linux. Yesterday, I just installed Ubuntu 8.10 Intrepid. Great OS so far.

I do not want to bother you, you should be very busy, but I have one big question. How can I stop using Windows if I need it for work and personal use (software like CS3, Paint Shop Pro, Ulead Video Studio, among many others). Maybe any Linux tech would tell me to look for an alternative GPL software. For example for Office, the option would be Openoffice (very nice soft!) but its not perfect or good enough recognizing many characters or text formats. For CS3 or Paint Shop, the option would be Gimp (nice one too) but it lacks of better user friendly funcionality or editing options. Maybe you can do almost the same thing with it but it´s going to take you a lot of time work. I could give you many examples like those, but I think you already got the point good enough.

Please do not think that I´m saying that Linux sucks, that´s not it at all, what I´m trying to say is that I realize that you all are working to make it better and better each day, more user friendly, more attractive for other branded companies (like Nero, Skype, Kaspersky, etc) but what does it take to let Linux runs everything what Windows runs. I have heard about Wine, but I also heard that only works fine on some specific softwares.

I just wanted to share my point of view. Maybe you can share yours with me so that I can understand better Linux.


First off, thank you Allen for taking the time to write. You raise an interesting issue that I'm sure confronts many people looking to migrate from Windows to Linux.

Changing computer platforms is a challenaging problem for anyone, not just those seeking to move from Windows to Linux. It really boils down to a question of cost versus benefit.

So what are the costs of switching? Obviously they are having to learn new applications and perhaps worse, migrating your data to work with your new applications. We all experience this when switching an application even if no platform change is involved. Using an application involves a certain amount of investment on the part of the user. An investment in time needed learn the application and the time to reshape his or her "world" of data to fit the confines of the application's needs. If you have been using a particular platform and its applications for a long time, you probably have a lot of investment in it. So for many people the costs are high.

But what about the benefits? Those are a little harder to quantify. First, there is the economics which should be rather cut and dry, but, for many personal computer users (as opposed to business users), it is not. If you actually paid for Photoshop, Office, and the other software you mention, you're talking about a lot of money (potentially thousands of dollars) spent on your application set. However, many personal computer users, don't bother with the formality of license compliance and simply use unauthorized copies which can be had to no cost. Therefore, for many people, Linux offers no economic advantage.

The second benefit is this nebulous thing called "freedom." Some people express this in somewhat abstract terms, saying that it is a virtue in its own right. I tend to be a bit more pragmatic. I think that free software offers distinct practical advantages over proprietary software. I like the fact, for example, that I can install Linux distributions all day long and never worry about having to call a vendor and ask for permission to do so. I like that fact that since the source code is freely available, many people can offer technical support. I like the fact that I never encounter, timed demos, "crippleware", and "lite" versions of products. Any time I want to install something, I can just install the full version, no strings attached.

Then there are the technical benefits of using a Unix-like operating system. Things like virus and malware resistance, file systems that don't require periodic defragmentation, a powerful command line interface, and the potential for almost limitless customization.

While these benefits are clear, many people do not have a clear picture of what a migration means. For many people who want to move from Windows to another platform, what they really seem to want is a "Windows" that does not have the problems that they have been experiencing. So many times you hear, "I'd change to Linux but I tried it once and it was different from what I'm used to."

Yes, Linux is different. Linux is very different and to successfully move to it (or any other platform for that matter) you have to be willing to accept change. Some people really cannot do this. Their minds are not built that way. They learn just enough about "the computer" to do their jobs by rote. Platforms just don't matter to them.

Platforms matter to people who enjoy and care about computing. I use Linux as opposed to Windows because I really like computers. I enjoy using them and learning about them. I find that Linux helps me enjoy my computer much more than any version of Windows ever did.

As to your concerns about OpenOffice.org and GIMP versus Office and Photoshop, yes, they are different too. I'm currently writing a book with OpenOffice.org and I have found it very satisfactory. I used to write a lot with Word and it was fine too. I don't see a lot of practical differences in what each program does, but there certainly are surface differences which may be difficult for some people. I suppose that the same may be true with GIMP and Photoshop. I've never used Photoshop so I can't really comment, but from reading the comments of others, I sense that many people reject GIMP out-of-hand because it's not just like Photoshop. Both are very capable programs and the field of digital image processing is an extremely technical one which makes any truly capable application dauntingly complex. But with the exception of of deep color support, and some pre-press functions, GIMP is very comparable to Photoshop for many tasks. I use it routinely in my photographic work.

To sum up, change requires, well, change. Forward progress sometimes means giving up old ways of doing things and learning some new ones. For anyone attempting it, the question remains, "is it worth it?" and only you can know the answer to that.

Hope this helps.

Sunday, March 9, 2008

On The Significance Of The Asus Eee PC

For several months now I have been thinking about the new Eee PC from Asus. In case you haven't heard, the Eee PC is small Ultra-Mobile PC (UMPC) weighing about two pounds, and costing less than $400. So far, the product has been, according to many sources, a runaway success. For me, of course, the important fact about the Eee PC is that it ships with an easy-to-use Linux OS rather than that other operating system.

While one could certainly dismiss the device as an underpowered little toy running an unpopular OS - and there are those detractors - that would be missing the point.

For those of you who have read The Innovator's Dilemma, by Clayton Christensen, you will at once recognize the Eee PC as a "disruptive technology," for it defines an entirely new class of product that expands the laptop market into the new territory of the "portable Internet device." As Christensen observed regarding disruptive technological change,

"Generally disruptive innovations were technologically straightforward, consisting of off-the-shelf components put together in a product architecture that was often simpler than prior approaches. They offered less of what customers in established markets wanted and so could rarely be initially employed there. They offered a different package of attributes valued only in emerging markets remote from, and unimportant to, the mainstream."

Think about the laptop computer market. With all the laptops available today, what's the real difference between them? Aside from a few different screen sizes, nothing. In fact, the problem of product differentiation has gotten so dire that manufacturers are now promoting case colors and textures to make their products seem different from their competitors.

Why is that? Why are all laptop computers basically the same? It's because they are all designed to run only Windows.

While MS-DOS and its decedents, along with the PC BIOS vendors, are responsible for creating today's market of ultra low-cost commodity hardware, they have also created a trap for manufacturers. As a manufacturer, the last thing you want is to be in a commodity market. In a commodity market, the only thing you can compete on is price, which is brutal. What you want is to have a product that is different, a product that can command premium pricing. Apple understands this and that's why you can't buy OS X for commodity PC hardware.

As Asus has demonstrated, once you are not tied to Windows compatibility, you can create new, exciting, and innovative products. But why is Windows a trap? Because it lacks freedom. Freedom gives you control. Whereas a manufacturer using Linux can customize the OS to fit whatever hardware design fits their vision of the market, with Windows they are given a simple choice: "take it or leave it." Where is the freedom in that choice?

Asus is also teaching the industry a lesson that in order to be successful with Linux, you have to treat it seriously. Much of the Eee PC's success can be traced to the work Asus did developing a well thought out user interface for its product. Contrast this with the Everex Cloudbook and the various attempts Wal-Mart has made with desktop Linux machines. If you put a junk Linux installation on your low-cost hardware, you get a junk product. Even Dell, whose Ubuntu systems created such excitement in the Linux community, has failed to take advantage of the opportunity that Linux provides. Rather than create a new kind of computer (that isn't forced to meet the hardware requirements for Windows) and crafting a Linux distribution that fully exploits its unique attributes, Dell settled for installing an existing (albeit high-quality) Linux on an existing laptop. This guaranteed that it could be no better than an "almost as good as Windows" computer.

I hope that the industry reflects long and hard on the significance of the Asus Eee PC, as I long for the day when a steady stream of meaningful innovations makes the computer industry exciting again.

Saturday, February 9, 2008

Linux Is About Imagination

The following is from my upcoming book, "The Linux Command Line" due for release in 2009.

When I am asked to explain the difference between Windows and Linux, I often use a toy analogy.

Windows is like a Game Boy. You go to the store and buy one all shiny new in the box. You take it home, turn it on and play with it. Pretty graphics, cute sounds. After a while though, you get tired of the game that came with it so you go back to the store and buy another one. This cycle repeats over and over. Finally, you go back to the store and say to the person behind the counter, "I want a game that does this!" only to be told that no such a game exists because there is no "market demand" for it. Then you say, "But I only need to change this one thing!" The person behind the counter says you can't change it. The games are all sealed up in their cartridges. You discover that your toy is limited to the games that others have decided that you need and no more.

Linux, on the other hand, is like the world's largest Erector Set. You open it up and it's just a huge collection of parts. A lot of steel struts, screws, nuts, gears, pulleys, motors, and a few suggestions on what to build. So you start to play with it. You build one of the suggestions and then another. After a while you discover that you have your own ideas of what to make. You don't ever have to go back to the store, as you already have everything you need. The Erector Set takes on the shape of your imagination. It does what you want.

Your choice of toys is, of course, a personal thing, so which toy would you find more satisfying?

Saturday, July 22, 2006

Your First Linux Installation - The Right Way

Every so often I read a forum or blog posting that goes something like this:

"I tried to install Linux but it didn't work! Linux sucks!"

I find these remarks both annoying and puzzling. I've been installing Linux on machines since 1995 and I'm no rocket scientist. So what's the problem with these people?

In many ways, Linux is a kind of intelligence test and frankly some people are just not smart enough to install Linux. But beyond the problem of technical skill, there is an issue of philosophy as well. You see, Linux isn't just a piece of software, it's also an idea. It's the idea that the computer in front of you actually belongs to you.

If you are running the legacy operating system, don't start thinking that you own your computer. You don't. Sure, you paid money for the machine and the software but you don't own it. You don't have control. Why not? Because it's all secret. The software is a secret because you cannot get the source code and, as you will see, some of the hardware may be secret as well.

Besides the basic architectural difference between the legacy operating system and systems based on the POSIX standard (like Unix and Linux), there is a more important difference. There are no secrets in Linux. This is what gives you control and ultimately ownership of your computer. You must understand this to install Linux. Installing Linux is really the process of ridding your computer of secrets.

So let's install some Linux.

Step 1: Get a computer

I strongly suggest doing your first install on a desktop machine that can be dedicated to the task. Don't use laptops and don't attempt dual booting with the legacy operating system. I recommend a desktop machine that is two to five years old. It might be considered too old to run current (and certainly future) versions of the legacy operating system but it will be fine for Linux.

That being said, to fully enjoy Linux, the machine must be big enough! Don't try running modern Linux distributions with less than 256 megabytes of RAM and with hard drives smaller than six gigabytes. It will work in smaller machines but you won't like it. Trust me. My main test machine is a 600 MHz Celeron with 320 MB of RAM and a 20 GB hard drive. It's a happy Linux box.

Step 2: Remove all the secret hardware

This is the step that insures a successful installation. If you omit this step, you will have problems.

Linux supports a vast array of hardware devices. A modern Linux distribution will automatically detect and configure most hardware devices right out of the box. Notice that I said most, not all. There are two classes of devices that Linux does not support:

  1. Devices that are really new. It takes a certain amount of time for device support to be developed and brand new devices may not have drivers yet. Due to the market power of the legacy operating system, practically no hardware device ships without a secret driver for it. But we don't want secrets, remember?
  2. Devices that have secret programming interfaces. Sometimes a hardware vendor in a misguided attempt to protect their "intellectual property" will not publicly document how to interface software to their device. Again, this is a case of secrecy that you don't want in your computer. You bought that device, make sure you have the right to create software to control it! Otherwise, it's junk and throw it out. Among the most notorious offenders are recent graphics cards from Nvidia and ATI, "winmodems", and several families of wireless network chipsets. Despite the secrecy surrounding these devices, intrepid programmers from around the world have reverse engineered the programming interfaces of some of these and they can be used with varying degrees of success with Linux.

Step 3: Select a Linux distribution

This is actually the easiest step. Despite what a lot of Linux fanboys say, there are no bad Linux distributions. I like them all. While I am partial to the Red Hat family of distros including Fedora Core and CentOS, it's only because I use them the most and have the most experience with them. I also from time to time install SUSE, Debian, Ubuntu, Gentoo, Vector, and others. They are each different and have their particular strengths and weaknesses but they are all good. Try several. Part of the freedom and control of Linux is the freedom of choice. Unlike the legacy operating system where the choice basically boils down to "take it or leave it," Linux will afford you a sometimes dizzying array of choices.

Step 4: Read the installation guide!

Well-supported Linux distributions have good installation documentation. Read the installation guide. I'm not kidding. You might learn a thing or two.

Good luck and enjoy the adventure!

Friday, July 21, 2006

The Legacy Operating System

Over the last year or so, I have received several emails about my use of the term "legacy operating system" on LinuxCommand. Most of these emails express concern over the exact technical meaning of the term. Well, to me, a legacy operating system is any system you are migrating from regardless of its perceived modernity. I use the term to avoid mention of that well-known company in Redmond, Washington and its products. They do a fine job of that on their own and do not require my help.