UpFront

diff -u: What's New in Kernel Development

Zack Brown

Issue #200, December 2010

Filesystem hints are attributes that filesystems can pass down to storage devices. The devices then use the hints to make decisions about how to lay down their data most efficiently. Matthew Wilcox has expressed interest in implementing this. Specifically, he wanted to implement the NVMHCI working group's recommended set of filesystem hints. But, as James Bottomley pointed out, the filesystem and the hardware had no real basis for agreement on what any given hint actually meant. So the filesystem would make guesses about what kind of hints to give the device, and the device would make guesses about what those hints actually meant. As James said, one of the most interesting things is that systems using filesystem hints seem to do better than those that don't, in spite of the guesswork involved. But, folks like Alan Cox remain unconvinced, saying he'd bet a beer on the fact that filesystem hints would end up not being used, even if they were fully implemented in the kernel. He didn't see enough benefit.

Robert P. J. Day has started offering kernel programming classes. See www.crashcourse.ca/wiki/index.php/Online_beginner's_kernel_programming_course for details. Some of the lessons are available for free; others are available at what seems like a pretty low fee. I haven't taken the class myself, and I'm not getting a kickback for mentioning it, but it seems like an interesting way for folks to get started with kernel hacking.

Using kernel-level encryption can be slow, but several folks, including Miloslav Trmac, recently argued that it would protect user-space applications from certain kinds of malicious attacks. Miloslav submitted a patch implementing a user-space interface to the kernel's encryption routines. This inspired a number of complaints. Theodore Y. Ts'o felt the speed issues would be pretty significant, and he wanted to make sure that potential users were made well aware of the huge slowdown their code would experience if they used this API instead of a user-space implementation of the same basic feature. Arnd Bergmann also found Miloslav's code to be overly complex, but this was explained by the fact that so many user requests had come in for extensions to Miloslav's initial implementation. The complexity was necessary to accommodate those requests. In spite of the general complaints against this code, it does seem as though the security reasons do justify it, so none of the critics seem to be objecting too loudly. I'd expect a clean implementation to make it into the kernel.

There was a bit of a scare recently when Linus Torvalds received a set of patches that appeared not to have been compiled or tested at all, in spite of the long “Signed-Off-By” chain listed in the patch e-mail messages. One of the main values of the “lieutenant” system is that patches are vetted through a series of trusted people who understand what Linus wants and can give it to him. If that system ever broke down, Linus probably would have to fall back on the “maintainer” system, which would be less good, because maintainers often are selected based solely on their willingness to do that job, and not on their specific reliability as producers of Linus-worthy code. The lieutenant system, in part, helps communicate various requirements to the maintainers. In this particular case, Len Brown had done an incorrect merge between some ACPI branches and then fed the wrong branch of his tree into his test suite. It's a very unusual confluence of errors, but the result was that some patches made it to Linus without the proper testing—just one of those things that happens and gets fixed.

Networking on the Command Line

Joey Bernard

Issue #200, December 2010

Lots of GUI tools exist to help set up and maintain network connections. Two common ones are NetworkManager and wicd. But, because the focus here is doing things on the command line, how can you configure your network connections and be sure they are behaving correctly?

The first utility to cover is ifconfig, which lets you learn about and set all kinds of parameters for network interfaces. When you simply run it with no options, you get a list of all the network interfaces on your machine along with details for each. It looks a bit like this:

eth0   Link encap:Ethernet  HWaddr 00:1e:8c:71:d4:1f  
       UP BROADCAST MULTICAST  MTU:1500  Metric:1
       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:1
       collisions:0 txqueuelen:1000 
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
       Memory:fbfc0000-fc000000 

lo     Link encap:Local Loopback  
       inet addr:127.0.0.1  Mask:255.0.0.0
       inet6 addr: ::1/128 Scope:Host
       UP LOOPBACK RUNNING  MTU:16436  Metric:1
       RX packets:264 errors:0 dropped:0 overruns:0 frame:0
       TX packets:264 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:0 
       RX bytes:19232 (19.2 KB)  TX bytes:19232 (19.2 KB)

wlan0  Link encap:Ethernet  HWaddr 00:15:af:6b:59:ec  
       inet addr:192.168.2.101  Bcast:192.168.2.255  
       ↪Mask:255.255.255.0
       inet6 addr: fe80::215:afff:fe6b:59ec/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:3228 errors:0 dropped:0 overruns:0 frame:0
       TX packets:1639 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:1000 
       RX bytes:2994761 (2.9 MB)  TX bytes:205416 (205.4 KB)

You can set all kinds of options for your network interfaces with ifconfig. These are applied to the interface you use on the command line. In the examples below, I use eth1. You can set the usual things, like the netmask:

ifconfig eth1 netmask 255.255.255.0

Or, the MTU:

ifconfig mtu 1500

You can set a network device to promiscuous mode so that it receives all packets on the network, not just the ones addressed for your machine:

ifconfig promisc

Setting the address is as simple as:

ifconfig eth1 192.168.4.4

Several other more esoteric options are available, but they usually apply only to specific hardware. Check the man page for more details.

Now that you can get your network interfaces configured on the command line, you probably want to be able to have this configuration applied on each reboot. This is where the file /etc/network/interfaces comes in. You define each interface and whether each interface should be brought up at boot time. The most basic entry would be for a wired network interface that is using DHCP. In that case, it would look like this:

iface eth1 inet dhcp

Be sure to replace eth1 with the label for the specific interface you want to configure. If your interface is static, you can set the address, network, netmask and broadcast values. If you want this interface to come up automatically at boot time, simply add auto eth1 to the interfaces file. A full example looks like this:

auto eth1
iface eth1 inet static
    address 192.168.2.34
    network 192.168.2.0
    netmask 255.255.255.0
    broadcast 192.168.2.255

More options are involved when you want to configure a wireless network interface. These extra options begin with wireless-. In these cases, you probably want to set the SSID of the wireless network to which you actually want to connect. Also, if you need any security settings to make your connection, you also can add them here by using the option wireless-key xxxxxxxxx. Here's a basic example, consisting of an unsecured Wi-Fi connection using DHCP:

iface wlan0 inet dhcp
    wireless-essid "mynetwork"

If you are a bit more safety-conscious and have chosen to use WPA, you can enter your credentials with wpa- options. This tells the network subsystem to start up wpa_supplicant in the background to handle these parts. A simple example looks like this:

iface wlan1 inet dhcp
    wpa-ssid mynetwork
    wpa-psk mysecretpassphrase

More complex examples, like those using EAP-TLS, can use an external configuration file to handle authentication, for example:

auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa-supplicant/wpa-supplicant.conf

In the above example, all the extra parameters needed to connect are located in the named file. For more details on what you can put in this file, see the man page for wpa_supplicant.conf.

Once you have all this configured, how can you activate and deactivate the various network interfaces? Use the utilities ifup and ifdown. These use the network interfaces you defined in the file /etc/network/interfaces. When you want to bring up a particular interface, it's as simple as ifup eth1. To bring down an interface, do ifdown wlan0. If you aren't sure whether a particular interface is up, use ifstatus eth0 to check the status of the network interface eth0. If you get your IP address through DHCP, you may need to renew your lease, which you can do with ifrenew eth1. This accomplishes the DHCP renewal without actually cycling your network interface. Now you should be able to get your network up and running without having to resort to a GUI at all.

Non-Linux FOSS

Mitch Frazier

Issue #200, December 2010

Microsoft may be public enemy number one to many in the Open Source world, but Apple is certainly number two with a bullet. Of course, that doesn't stop open source from existing in the Mac world. One such open-source program is Cyberduck, an FTP client for Mac OS X.

Cyberduck supports an alphabet soup of file transfer protocols: FTP, FTP/TLS, SFTP, WebDAV, Amazon S3, Amazon CloudFront, Google Docs and Rackspace Cloud Files. It integrates with external editors, file viewers, Web browsers, the system Keychain, Spotlight, Bonjour and Growl. It supports synchronizing local and remote directories with a preview of the affected files. Cyberduck can resume interrupted downloads and uploads.

Cyberduck is written mostly in Java. The latest version of Cyberduck is 3.5.1, and it requires Mac OS X 10.5 or later. For the non-Macified out there, the Cyberduck Trac roadmap refers to a port to Windows, and the repository looks like progress is being made toward that end. And, don't worry, Cyberduck can quack in your language, with more than 30 supported translations.

Cyberduck QuickLook Preview (from cyberduck.ch)

LJ Index, December 2010

1. Number of public DNS A-records for the private IP address 192.168.0.200: 63

2. Number of public DNS A-records for the private IP address 192.168.1.200: 140

3. Number of public DNS A-records for the private IP address 192.168.254.200: 4

4. Number of public DNS A-records for the private IP address 192.168.255.200: 0

5. Number of domains with names matching [a–z]200.com with valid DNS A-records: 23

6. Number of domains with names matching [a–z]200.net with valid DNS A-records: 20

7. Number of domains with names matching [a–z]200.org with valid DNS A-records: 13

8. Number of domains with names matching 200.* with valid DNS A-records out of 20 possible generic TLDs (Top Level Domains): 6

9. Number of domains with names matching 200.co.* with valid DNS A-records out of 248 possible country code TLDs: 30

10. Number of domains with names matching [a–z]200.com that lead to “real” Web pages: 4

11. Number of domains with names matching [a–z]200.com that lead to “real” Web pages: 6

12. Number of domains with names matching [a–z]200.org that lead to “real” Web pages: 8

13. Number of domains with names matching 200.* that lead to “real” Web pages: 3

14. Number of domains with names matching 200.co.* that lead to “real” Web pages: 5

15. Approximate number of times a byte with the value 200 occurs in the file /dev/mem: 1,900

16. Approximate number of times a byte with the value 200 appears after reading 1 million bytes from the file /dev/urandom: 3,890

17. Approximate number of times a byte with the value 200 appears after reading 1 billion bytes from the file /dev/urandom: 38,900

18. Thousands of Google results for the search for “200th Issue”: 381

19. Thousands of Google results for the search for “200th Anniversary”: 590

20. Number of times the LJ staff has enjoyed creating an issue of Linux Journal: 200

1: www.robtex.com/ip/192.168.0.200.html

2: www.robtex.com/ip/192.168.1.200.html

3: www.robtex.com/ip/192.168.254.200.html

4: www.robtex.com/ip/192.168.255.200.html

5–9: dig/grep

10–14: Firefox

15–17: getchar

18, 19: Google

20: 2010 Confidential LJ Staff Psychological Evaluation Report

Power Supplies

Shawn Powers

Issue #200, December 2010

One hundred forty-seven dollars and thirty-nine cents—that is the cost for replacing a power supply for an old MiniITX computer system I found in my office. Mind you, the entire unit cost about $199, and that was five years ago, but still, the cost for a replacement power supply is absurd.

Thankfully, a quick search on the Internet found a universal power adapter that fit my requirements for about $18. How can you find inexpensive replacements for your missing power supplies, without frying your vintage arcade cabinet computer? There are a few important things to watch for:

  1. Voltage: most universal power adapters have several voltage selectors; make sure that they match your needs. (For example, laptop power supplies generally require more voltage and, unfortunately, are more expensive.) The device should say near the power adapter how much voltage it requires. The network switch in Figure 1 shows a need for 7.5V of DC current. Some devices require AC voltage as opposed to DC, so be sure to look for “DC” on the device.

  2. Amperage: your device generally will say near its power port the amperage it requires along with the voltage. Amperage is a little different from voltage, and you want to make sure your power supply supplies at least as much amperage (usually measured in milliamps) as your device requires. The device will draw as much amperage as it requires, but there's no concern if the power supply gives more than it requires. The network switch in Figure 1 shows a 1 amp minimum requirement.

  3. Polarity: your device most likely will have a drawing that shows whether the tip of the plug is positive and the jacket negative, or vice versa. Most universal power supplies will have a selector that looks similar. Make sure polarity is lined up! It's just like putting batteries in backward if you flip the polarity.

  4. Plug: I wish there were a standard for the various types of plugs you might face, but sadly, there's not. Most universal adapters come with a selection of plugs that will fit most devices, but unfortunately, not all. It is possible, if you feel a bit adventurous, to cut the end off your old power adapter (assuming you have it) and solder or tape the correct plug on the wire of the universal adapter. Be warned, however, that it's easy to mess up polarity when you do that.

There are some other factors to weigh in as well. Some cheap universal power supplies are not regulated, which means they can vary in voltage depending on the load they're put under. If your device is particularly sensitive, you may want to watch for that. In the end, if you're worried you might mess up and ruin your prized powerless device, you always can shell out the $147.39 and get a new one. For me though, $18 was more in my budget.

Figure 1. This network switch shows a need for 7.5V of DC current.

Figure 2. Associate Editor Shawn Powers wrangles with his power supplies.

Just Keep Rolling

Shawn Powers

Issue #200, December 2010

Linux Mint recently came out with a version of its operating system based on Debian rather than Ubuntu. For the life of me, I couldn't see the advantage over the Ubuntu-based version. Then, in an IM chat with Linux Journal reader “Topher”, I finally understood. Rolling releases.

That may not sound significant, but if you are (or ever have been) a Debian user, it's possible you use the “testing” release of the distribution. It's been so many years since I've been a Debian user, I forgot about the beauty of the concept. See, when the Debian folks decide to make a “release” of their distribution, they'll take a snapshot of the “testing” branch and stabilize it from there. The testing branch continues to roll along, never getting finished, and yet never getting long in the tooth.

So although the idea of a rolling distribution isn't new by any means, if you've been lulled into the Ubuntu release schedule but hate upgrading every six months, perhaps a flavor of Linux that is always up to date will appeal to you. If you don't like it, you always can update to something else!

Thanks LJ Subscribers!

We asked LJ subscribers to write in and tell us a bit about themselves, so we could print a special thanks to them in our 200th issue. So many people responded, and we wish we could include them all. We edited down the responses and chose a few to print here, and we hope you enjoy this brief glimpse at some of the folks who've helped keep us going all these years.

I think LJ captured the real Linux spirit—a bit of “entrepreneur”, a bit of “amateurism”, a lot of joy for innovation, challenge, freedom and companionship. That's the only reason to continue reading the magazine. I am a scientist working on Solar Physics, teaching at undergraduate and graduate levels, and now that Moore's Law has a shallow slope, I'm developing parallel systems to take advantage of multicore technologies.

Guillermo Giménez de Castro

Reading LJ is like listening to a group of people discussing a subject that they really love. I do not feel like I am getting a bunch of information shoved at me like a sales pitch. It's more like casual conversation and I am just being a good listener.

I am an EE by degree but have been writing software for 20+ years using FORTRAN, Ada, C, C++, ASP, PHP, MySql, etc. I started at a large company then went into the startup/consulting world for about seven years and am back at a larger organization. I have been using Linux since 1995. Here is the story of my entry into “the penguin zone”: I left a big company to work at a startup and moved from using SGI Irix to Sun systems. I was still using Win98 at home but wanted to learn more about *nix internals, admin, etc. A co-worker said “get a stack of diskettes and come with me.” 30+ floppies later, I had Slackware and X ready to load on my system at home.

Jonathan Coker

Although I had already been using Linux for a while before LJ started, I didn't hear about the new magazine until the first issue was sold out. My first “proper” issue was #2, but the LJ staff was kind enough to photocopy issue #1 for me so I would not miss any issues.

I started playing with Linux using a set of Yggdrasil disks with a 0.99 kernel in 1993. By the way, I just looked at my #1 issue and was amused to see articles on the kernel 1.0 code freeze (written by Linus) and on Linux vs. Windows NT and OS/2 on the front page.

Over the years (16+), Linux Journal has helped me stay abreast of developments in the Linux community, and at times has helped to keep up my enthusiasm for the platform when work or school pressures forced my attention in other directions.

I have been programming computers for 40 years (just about every kind imaginable). I have a PhD in Computer Engineering from UC Santa Cruz, where I am currently an Adjunct Professor in the CE department, and I am a researcher and manager at IBM's Almaden Research Center in San Jose, California. I am also pleased to say that I started the first Linux-based research project at IBM in 1996, several years before IBM officially embraced the Linux platform. Some years ago, I converted all of my systems (work and home, servers and laptops) to Linux (and am Microsoft-free!).

David Pease

I've been a subscriber since issue #1 and the Phil Hughes days. I missed a few issues during a transition in 2001 or so, but I still have copies of almost every issue of LJ ever published!

I was an early leader in the adoption and implementation of Linux and free and open-source software in Philadelphia. Through my leadership position in the Philadelphia Area Computer Society (PACS), I began introducing Linux to organizations in the Greater Philadelphia region. At PACS, I organized monthly presentations on Linux and FOSS and wrote 29 columns in the organization's print periodical, The Databus. I then founded and helped build Philadelphia's premiere Linux user group, the Philadelphia-area Linux User Group (PLUG), where I continue to facilitate its first Wednesday meetings. After helping establish a community and culture for Linux and FOSS in Philadelphia, I started building my first company, LinuxForce (www.LinuxForce.net), to be the “go-to” firm for organizations wanting to realize the promise and power of Linux. I contribute to a blog on managing FOSS for business results (blog.RemoteResponder.net).

CJ Fearnely

When I first subscribed to LJ, it was because I was a new Linux user and needed help. LJ still helps. It gives me ideas of things I could/can use Linux for, shows me how to build or add on to my original Linux, and it also shows how to use new programs that come out for Linux distros.

I've been in the fix-and-repair computer business for about 20 years. I started out with Microsoft/DOS. I was a business guru, and then went for my certifications and began building computers for a company that made special-order hardware and software. Then, I moved into freelancing with the fix-and-repair part. After that, I moved into a large school district where I took care of the networking, computer repair and software replacement at one of their high schools. These days, I'm retired, but I still do some work for friends and family.

Marianne Popp

The things I like best about LJ are kernel korner (now diff -u), hardware hacks/projects and Web technology. I think a “how to contribute to Linux/FLOSS” and a “LUG/Community corner” are missing.

I live in Trento (Italy) and co-founded the local LUG in May 1998. I am active as a FLOSS promoter, and I contribute in the form of translations from English to Italian. I'm actually the main Italian GIMP translator (program and user manual).

Marco Ciampa

The breadth of content helps LJ appeal to everyone from myself and my fellow systems administrators to typical home users, and others in between. In my experience, it has the most balanced content of the Linux magazines.

As of last month, I am a Jr Systems Administrator in the Bay Area (recently moved from Baton Rouge, Louisiana), and enjoy various projects, from mild programming/“hacking”, to hardware modifications. In my spare time, I enjoy reading, canoeing and camping.

Tray Torrence

I have been an LJ subscriber on and off since the early 1990s, depending on my work and leisure interests at the time. LJ is the only Linux mag that seems to address anyone other than a complete newbie. I especially like the hardware Linux articles that come out every so often.

I am a hard-core DIY'er, mechanical engineer with a slant toward software/automation. A recent accomplishment is converting an RX7 to an all-electric vehicle (www.mysmartev.com)—no Linux in there yet, but there will be if I get around to making my carputer.

Nathan Stowe

LJ's interesting, fun and treats me with respect, as in: I'm part of it, not just a consumer. I'm smart, but there's a ton I don't know. I had a part-time job writing educational physics software in high school (1970s) on an Apple ][. I joined the Air Force, where I became a system programmer on Sperry Univac systems; the military wasn't afraid to give amazing responsibilities to young punks. I went full-time Linux at home in 1994 with Yggdrasil, started subscribing with issue #3 and got the back issues for 1 and 2. Became a full-time Unix/Linux admin in the mid-1990s.

I love airplanes, aviation and airplane people. I'm a full-time volunteer on AirVenture Oshkosh flightline. I own and fly an award-winning restored 1946 Luscombe Silvaire. There's no technology in the cockpit whatsoever—it's got one more instrument than the minimum required by law, and I've never used that one.

Garrett Nievin

I subscribed because I needed to read something about GNU/Linux. There were no magazines in Italy at the time, so I decided to subscribe to yours. I used it to learn some English too. I must confess that I don't read every issue from cover to cover but most of them. What I find most interesting are your articles about security and programming.

I'm a software developer currently working on multiplatform projects on GNU/Linux. I'm struggling to find enough time to contribute to Debian and to some other free software. I'm a member of a local association that aims to spread knowledge about free software, free data formats and digital rights. With my association, I'm involved in a project to spread the use of GNU/Linux at primary schools. Early in the morning, I like to run just to relax my mind and keep well-trained, as the Latins said: Mens sana in corpore sano.

Stefano Canepa

I like a monthly magazine, because despite reading a lot on the Internet, LJ always surprises me with things I have missed. It's great to read away from the keyboard and think about which things to try before you're too close to the keyboard and jump on it. I've been a subscriber since the stapled issue #1 and still have them all, and it's great fun to flip back some pages from time to time.

I do research and programming in astronomy, and we have pretty much 100% migrated to Linux during the past 10 years. I've built a number of boxes and RAID arrays, even tinkered with real-time Linux for an instrument, but for programming work, I have been a laptop user for the longest time.

Peter Teuben

I don't really know how long I've been a subscriber, but it'll take more than your disastrous format change a couple of years ago to get me to unsubscribe. Timely, relevant, interesting, challenging, cutting-edge, it's helped me sell GNU/Linux (I wish you'd use that term, honoring the other, equally important piece of the OS) to my boss and slash our licensing costs.

I've been a programmer since 1984, network administrator and junior college instructor (I wrote the original GNU/Linux curriculum years ago). I started with the MCC distro WWWAAAAAYYYY back when.

Sean Kirkpatrick

I am a longtime Linux supporter. I don't always have time to hack around with Linux, as I am a Windows application developer at my job. So LJ helps me stay in touch with the the Linux/Open Source movement when I get too involved with the Windows world of thinking.

I have been using Linux/open-source software since 1997. It was first introduced to me in college, and I was hooked instantly and still use it today. I am an applications developer in Visual Studios in ASP.NET and C#. I like to hack in my spare time in Python and PHP. I do Web site designs focusing on usability and experience. When I am not in front of a monitor, I am a volunteer firefighter. I love this as much as I do my Linux.

Ryan Chiles

I get good introductions to various topics from LJ that I may not know much about and sometimes pick up useful techniques. I tend to focus a lot on the kernel and drivers, and it is good for me to be aware of more applications and their uses.

I have been programming since 1970. My first paid programming job was in the summer of 1971 at the University of Illinois on the PLATO Project when I was in high school. I have pretty much been programming ever since. I still remember reading Linus' e-mail about Linux in the Minix newsgroup while I was working for Apple and thinking, “Those guys are going to have a lot of fun. I wish I had time to help.” Between work and family, I really didn't have free time to get involved. I also thought that Linux would never really be important. Boy was I wrong about that! My first exposure to Linux came in 1996 when I worked for an employer that used Linux to host the company's main server that also served as the company's main Internet connection. Initially, it was only dial-up access, but by 1997, it was upgraded to ISDN. I don't remember the kernel version it was running, but that server seemed more stable than the ISP it was connecting to. Still programming after all these years, and mainly using Linux and Mac OS X.

Mark Rustad

I have been involved with Linux since November 1991. The idea of a magazine dedicated to it was, at the time, incredible. It was as exciting as when the first edition of Running Linux was published.

I was born in Germany to American parents and grew up living between the US and Europe. I worked 28 years in the IS/IT field. I'm divorced and have one son. I love programming and am fair to ok at it. Physically disabled since '93, and going to university on-line to get a BS degree in programming.

Joe Klemmer

I subscribe because I believe in the ability of open source and free software to transform the computing world. And, thanks to publications like Linux Journal, it is and will continue to do so.

I started using UNIX with Ultrix back in 1983. My first software contributions were made to assembler language programs written for CP/M and were published on RBBS (a popular bulletin-board system). I programmed in everything from Turbo Pascal, to C, LISP and even Cobol. I have many years of experience as a software release manager. I have been an adjunct professor teaching UNIX using Linux for both continuing education and credit side colleges. I currently serve as a Sr UNIX sysadmin specializing in Linux and Windows integration. I'm also President of the North Texas Linux Users Group. Putting Linux distributions to use in real-world situations is one of my passions.

Chris Cox

LJ is simply the first and best Linux magazine available! Every issue still has at least one interesting feature article that includes things I don't know about Linux—and that is despite having worked professionally with Linux for 12 years and provided Linux/FOSS solutions in a very wide range of areas.

I'm 40-something years old and a dedicated father of three as well as a former track and field athlete who grew up as an international student in Vienna, Austria, and I'm now living in Sweden. I've been a Linux/UNIX system administrator (since 1996) in the Telecommunications Industry who felt extremely satisfied (and justified) when the company I work for finally made the shift to a Linux-based OS in the mobile phones it produces. My colleagues and I had been discussing this for years and seeing it finally happen was vindication at an unprecedented level! Now, of course, I have my work cut out for me since there is a huge demand for everything Linux within the company.

Johannes Ramm-Ericson

My favourite aspect of LJ is the “Things that make you go hmmmm”. Sure, the tech articles are very useful, as are the product tests and comparisons. But it's highlighting all those quirky/odd/crazy/utterly bizarre things that people are out there doing, that Linux is a part of, that makes me look forward to the magazine dropping into my mailbox every month. The latest issue always has pride of place in my bathroom, so I can peruse it at leisure.

I guess I'm a life-long techie, having started out by learning BASIC on a Sinclair ZX80 in 1980 at the age of 8. I've essentially grown up with the personal computer industry, and have worked with so many different technologies over the years, I can't even remember them all now. It appears that my brain is prematurely full. I started with Linux in 1993 as a way of keeping up the UNIX knowledge and skills I had acquired while working in Germany. My first distro was Yggdrasil Linux, and I bought myself a video card off their compatibility list and a 2.2X CD-ROM drive so I wouldn't have to load up an insane amount of floppies. I got it all working, but it didn't really do a lot. But it was a start, and it did keep me interested, and while I was never able to make Linuxing a major part of my career, it has certainly been very useful from time to time in a minor capacity.

Stuart Powell

I like the variety of articles and the letters that the readers send in with their tips, etc. This is the only magazine that I read cover to cover every month.

I am a software developer that has been using Linux since 1995. I am primarily a Perl developer now, but cut my teeth on C. I have written a screensaver module for XLockMore and XScreensaver and have several projects in the works, all of which are open source.

Desmond Daignault

I have been a subscriber since the very beginning in March 1994. I have all the issues saved, and I sometimes bring issue #1 of LJ to class when I hold Linux courses. People are always surprised to find an advertisement from a Swedish company in it, and even more surprised to discover that part of the text in this ad is in Swedish (!). My field is System Design and Software Architecture of mobile devices, and I have a long-term engagement with ST-Ericsson. I help asserting that the ST-Ericsson dual-core ARM-based mobile platforms become attractive for use with open-source environments such as MeeGo. I have been a Linux Evangelist just about forever, and my first distro was Trans-Ameritech 4 from 1994. The best Sunday afternoons for me are the ones when I have a fresh LJ to read. Other Linux magazines can be interesting too, but none feel as genuine as LJ.

Tony Mansson

They Said It

Any program is only as good as it is useful.

—Linus Torvalds

I like to think that I've been a good manager. That fact has been very instrumental in making Linux a successful product.

—Linus Torvalds

Making Linux GPL'd was definitely the best thing I ever did.

—Linus Torvalds

Before the commercial ventures, Linux tended to be rather hard to set up, because most of the developers were motivated mainly by their own interests.

—Linus Torvalds

Microsoft isn't evil, they just make really crappy operating systems.

—Linus Torvalds

When you say “I wrote a program that crashed Windows”, people just stare at you blankly and say “Hey, I got those with the system, for free.”

—Linus Torvalds

The cyberspace earnings I get from Linux come in the format of having a Network of people that know me and trust me, and that I can depend on in return.

—Linus Torvalds

People enjoy the interaction on the Internet, and the feeling of belonging to a group that does something interesting: that's how some software projects are born.

—Linus Torvalds

Non-technical questions sometimes don't have an answer at all.

—Linus Torvalds

Software is like sex: it's better when it's free.

—Linus Torvalds

The memory management on the PowerPC can be used to frighten small children.

—Linus Torvalds

200 Things to Do with Linux

For our 200th issue of Linux Journal, we did a virtual “man on the street” interview with our Web site readers, asking what things they do with Linux. Many of the responses were rather lengthy, but we've trimmed them down and added some of our own.

  1. Actually work instead of waiting for reboots.—Tim Chase

  2. Add extra monitors.—LJ Staff

  3. Analyse water level and precipitation data.—Keith Nunn

  4. Analysis of remote sensing imagery.—Micha Silver

  5. Antagonize Windows users.—John Abbott

  6. Anything I need, since 1994.—Manuel Trujillo

  7. As the basis for FOSS conferences.—moose

  8. Audio chat.—LJ Staff

  9. Automate tasks with bash.—Dusty Roberson

  10. Avoid using Microsoft Windows!—Simon Quantrill, Chris Szilagyi

  11. Be a freelance writer.—Carl Fink

  12. Be part of a revolution.—max

  13. Be part of the Linux community.—Clifford Garwood II, Rodney Shinkfield

  14. Be productive.—Petros Koutoupis

  15. Block Web sites.—LJ Staff

  16. Blog.—LJ Staff

  17. Blow people's minds.—djystn brimr

  18. Bond Ethernet channels.—LJ Staff

  19. Boot a live CD.—Tim Kissane

  20. Browse the Internet virus-free.—ali

  21. Bubble sort.—LJ Staff

  22. Build an arcade center.—Kris Occhipinti

  23. Build a robot.—LJ Staff

  24. Build Asterisk telephone switches.—Mike Synnott

  25. Build self-assembling/healing wireless mesh networks.—Ivan Ivanov

  26. Build smart appliances.—Tom Gilley

  27. Build solutions.—Wilhem Gonzalez

  28. Burn CDs and DVDs.—LJ Staff

  29. Carry it in my pocket.—Sean Pratz

  30. cat stuff to /dev/audio.—Michael Hadam

  31. Check e-mail from the command line.—LJ Staff

  32. Code, code and code.—Jeff Boschee

  33. Combine the power of xargs and MPlayer.—Javier Rojas Balderrama

  34. Communicate with other consciences.—Angela Kahealani

  35. Compile a kernel.—LJ Staff

  36. Compile Windows programs.—LJ Staff

  37. Compose music.—LJ Staff

  38. Compress data.—LJ Staff

  39. Conduct penetration testing.—Anthony Moore

  40. Control embedded systems.—Mike Lerley

  41. Control my data.—Dieter Plaetinck

  42. Control servers from my N900.—Gunder johansen

  43. Control space ground network for satellite communications.—Vidar Tyldum

  44. Control XBMC from another room and freak out your kids by changing the video that's playing.—LJ Staff

  45. Convert units of measure.—LJ Staff

  46. Convert video.—LJ Staff

  47. Create and edit videos.—Elmer Perry

  48. Create your own PBX.—LJ Staff

  49. Customize with compiz.—okiwan

  50. Debug ncurses code.—Alexander Cox

  51. Delete all the GPS location data from images.—Stuart

  52. Dent.—LJ Staff

  53. Develop Arduino gadgets.—Eric Schug

  54. Do development work for the pike language.—Lance Dillon

  55. Do multilingual work.—Jonathan Abolins

  56. Download back episodes.—john bosco

  57. Dual-boot.—LJ Staff

  58. Edit photographs.—Tarek Ahmed, Jim Peterson, DANiel Asselin

  59. Edit the programing environment.—bhanupriya jena

  60. Enjoy 1,000 days of uptime!—Ted Behling

  61. Everyday tasks.—Patrick Dunn

  62. Everything.—Philippe Godin, Lucas Westermann

  63. Explore all the open-source apps.—Magesh

  64. Explore source code.—Yash Datta

  65. Explore various tools.—Bhupesh Chawda

  66. Explore what Linux is made of.—Sriharsha

  67. Feel the freedom.—hasintha, Risman

  68. Filter spam.—LJ Staf

  69. Fix Windows machines.—Scott Boucher, Detron Phillips, Stan Hearn

  70. Geocache.—Buster Stone

  71. Gloat when colleagues reboot Windows.—Kanwar Plaha

  72. Grep the heck out of everything!—mixtape

  73. Hack a Gibson.—LJ Staff

  74. Hack an e-book reader.—LJ Staff

  75. Hack everything.—Bart Friederichs

  76. Hack your phone.—LJ Staff

  77. Hang around various IRC networks.—dewey

  78. Hijack Facebook on my wife.—Jon Elofson

  79. Home music studio.—David Trombly

  80. Home server.—Eric Gamache

  81. Host your own blog.—BaloneyGeek

  82. Impress girls with the command line.—Tim Kissane

  83. Install apps from terminal.—M. Taylor

  84. Install a RADIUS server.—LJ Staff

  85. Install Boxee.—LJ Staff

  86. Install on exotic hardware.—Jed Dale

  87. Instant message/chat.—Josh

  88. Launch a (USB) missle.—LJ Staff

  89. Learn.—Andrew Frame

  90. Learn C, C++, PHP, Python, Tcl/Tk, etc.—LJ Staff

  91. Learn new technologies.—cga

  92. Learn operating systems.—Alex Link

  93. Link VHF radios using Internet.—Gustavo Conrad

  94. Listen to music.—LJ Staff

  95. Listen to podcasts.—LJ Staff

  96. Load balance with round-robin DNS.—LJ Staff

  97. Log on to Windows and remove IE.—Kartik Mistry

  98. Make affordable technology solutions.—nettie feldman

  99. Make a living.—Doug Roberts, cbleslie, Woody

  100. Make free phone calls.—LJ Staff

  101. Make my terminal window transparent.—Josiah Ritchie

  102. Make non-Linux users jealous.—T.J. Domingue

  103. Make videos of my desktop.—Praveen Kumar Singh

  104. Make your computer look like Windows or OS X.—LJ Staff

  105. Manipulate data with Python and shell.—Darrell Collins

  106. Multitask.—Samuel Huang

  107. Not waste my time rebuilding systems.—Jim Wallace

  108. Parse weather data.—Xiao Haozi

  109. Partition and format my hard drive.—Samsuddin Wira

  110. Pay my bills securely on-line.—J. E. Aneiros

  111. Photo management system with digiKam.—Fri13

  112. Play a game.—LJ Staff

  113. Play Commander Keen.—Terry Letsche

  114. Play console emulators.—LJ Staff

  115. Play SCummVM games.—LJ Staff

  116. Play with Compiz Fusion.—Oleg Shmelyov

  117. Play with OSes in VirtualBox.—Kousik Maiti

  118. Pretend to be a Windows server.—LJ Staff

  119. Provide services for Windows.—Gene Liverman

  120. Proxy through SSH tunnel.—Scott Schafer

  121. PXE boot GeeXboX.—Jeremy Kepler

  122. Read a book.—LJ Staff

  123. Read comics.—Neal Murphy

  124. Read the boot sequence.—José Filipe

  125. Read the digital edition of Linux Journal.—John Abbott

  126. Record and watch TV.—Cory Lievers

  127. Record, edit and publish a podcast about Linux.—Larry Bushey

  128. Record HDTV with MythTV.—David Miller

  129. Recover my girlfriend's data.—Arun SAG

  130. Rejuvenate a sluggish computer.—Andrea Zygmunt

  131. Render fractals.—LJ Staff

  132. Render video content.—Erin Bournival

  133. Research and analyze baseball.—Sid Finch

  134. Revolutionize healthcare.—Fred Trotter

  135. Rip audio from streaming radio.—Galen Gish

  136. Rip YouTube videos.—LJ Staff

  137. Root around a Windows computer.—Ben Pratt

  138. Run a beer fermentation cooler.—LJ Staff

  139. Run a feature-rich Web site with Drupal.—Jim Caruso

  140. Run an embedded server (where Windows failed).—Ryan Kirkpatrick

  141. Run a proxy for my friend in China.—DavidWC

  142. Run Lotus Notes version 8.—David Vasta

  143. Run mutt and irssi in a screen session.—Matthew Cengia

  144. Run my home family network.—Zak_Neutron

  145. Run my whole house.—Robert White

  146. Run Radiance daylight simulations in Amazon's EC.—Severn Clay-Youman

  147. Run the sound system at the chapel I attend.—Irving Risch

  148. Run Windows in VirtualBox.—Happy Hacker

  149. Run XBMC on your TV.—LJ Staff

  150. Run Xen hypervisor.—Joe Cortes

  151. Save infected Windows machines.—Paul Bucalo

  152. Save people's info with Linux.—Lee Schmid

  153. Search for aliens.—LJ Staff

  154. Search for Mersenne Primes.—Ted Behling

  155. Serve a Web page.—LJ Staff

  156. Set up a distro mirror.—LJ Staff

  157. Set up a VPN.—LJ Staff

  158. Set up my system for perfect productivity.—Justin Christian

  159. Set up MythTV.—Patrick Bulteel

  160. Share Linux with other people.—Rob Haag

  161. Shell scripts.—Hieu, Nghiem Ba

  162. Show it to my friends.—Dale Rooney

  163. Show off my desktop.—Sum Yung Gai

  164. Show people cool software.—Rob Hooft

  165. Sniff packets.—LJ Staff

  166. Solve for Pi (okay, probably not).—LJ Staff

  167. Sort your DVD library.—LJ Staff

  168. ssh to remote systems.—Bharathi Subramanian

  169. Stream Netflix.—LJ Staff

  170. Surf the Web, text, play silly games on my Motorola Droid!—Todd Blake

  171. Talk to Amateur radio operators.—Jeff Hanscom

  172. Teach Linux.—shrinivasan

  173. Teach operating system concepts.—satyaakam goswami, Esteban Arias

  174. Time your tea steeping.—LJ Staff

  175. tracepath/traceroute.—Gjorgji Taskovski

  176. Transmit audio casts.—carlos gomes

  177. Try as many different distros as possible.—Carlo van Rijswijk

  178. Try interesting apps.—Abhishek Tiwary

  179. Tweet.—LJ Staff

  180. Type top and press Enter.—Roshan Baladhanvi

  181. Use a 9+ year-old computer.—Gumnos

  182. Use GnuCash.—Peter Anderton

  183. Use Linux as a thin-client server.—Tim Strickland

  184. Use Linux to fix computers.—Bob Ivie

  185. Use multiple virtual desktops.—LJ Staff

  186. Video chat.—LJ Staff

  187. Watch HD movies.—Vangelis Nonas

  188. Watch Linux Journal videos!—LJ Staff

  189. Watch TV with MythBuntu.—Todd Fowler

  190. Watch video RSS with Miro.—David Crews

  191. Web hosting.—Jared Moore

  192. We like to have it with some funk!—Hedda, Anna and Maxim

  193. Wiggle windows with Compiz.—LJ Staff

  194. Work mobile or static.—Divakar Ramachandran

  195. Work on my Web site.—charles snider

  196. Write poetry in shell scripts.—Hani Saigh

  197. Write programs.—ttylinux

  198. Write Python code.—svaksha

  199. Write Web pages that Internet Explorer can't display.—LJ Staff

  200. Write with OpenOffice.org.—Jeremy LaCroix

LinuxJournal.com

Katherine Druckman

Issue #200, December 2010

Because everything is more awesome on-line, you'll find even more great information about our 2010 Readers' Choice Awards at www.linuxjournal.com/rc10. There you'll see the runners-up and get a more in-depth look at the survey results. Save yourself some typing too, as we'll have links to all the winners and runners-up. It was a tough race, and there were some great projects and products represented, so check out all the top vote-getters at LinuxJournal.com.

You'll also notice that this issue is our 200th! That's a lot of Linux over the years, and I encourage you to get nostalgic and check out some goodies from our archives. Our May 1995 “World Wide Web” focused issue is a favorite of mine (www.linuxjournal.com/issue/13), as is a recent Linux troubleshooting series by Kyle Rankin (www.linuxjournal.com/article/10688). With so much information compiled in our 200 issues, you'll see where we've been, where we are, and where we're going in the Open Source community. Here's to issue 300!