-->
Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Tuesday, October 08, 2013

Small vs. Fast


The smaller it gets, the faster it goes ... the faster it goes, the smaller it gets ...

I had a small epiphany recently while watching the apps on my phone download and update themselves. Of course it's not necessary to watch, but I have to. Long years of experience on PCs have accustomed me to the virtues of monitoring this activity for signs of trouble. Plus, there's something satisfying about watching the little progress bars turn blue from end to end while the status line indicates a download icon, then an "installing" message, then "installed", then a security scan, and finally "Application X is safe," indicating that all is well with the world.

Only once in a blue moon does anything go wrong. My wi-fi connection might flake out, interrupting the download, or something is amiss with the package on the server so that it won't install. But even then there is little downside. Simply trying again will insure success, if not today then tomorrow, and in the meantime the existing app will keep plugging merrily along.

Gone are the days of waiting hours for a huge file to trickle down through a dialup connection only to have it error out a few percent before completion, making it necessary to start over. Gone, too, are the frequent disasters that sometimes still plague complex software installations on PCs -- be they Windows, Mac, or (dare I say it?) even Linux. Let's face it, Android and IOS have taken the end user experience to new levels of ease and reliability. People who used to stare dumbfounded at a screen asking them to press CTRL-ALT-DEL can now do whatever they want with the swipe of a finger or even by uttering some verbal commands.

But my epiphany was not about ease of use. Instead I found myself marveling over how small and compact all my apps were, and therefore how efficiently coded they must be. Some were only a megabyte or two, while the largest were not much above 20 megs -- miniscule in comparison with 700 meg CDs or 8 gigabyte DVDs. Then it suddenly hit me. Back when we had to install everything from floppy disks, each disk held barely more than a single megabyte (about 1.4). So those 20 meg files I was downloading in a fraction of a minute represented a dozen or more floppy disks -- exactly the sort of packaging that used to be required by something like Windows 95, Adobe Photoshop, or MS Office. In other words, these baby apps are about the same size as major applications used to be, only speed has made them seem trivially small. And the smaller the hardware gets, the faster it goes.

The same thing happened to Unix. If the PCs of 1985 had been able to run it, there would have been no need for DOS, Netware, and Windows (or the Mac OS) to serve as poor substitutes. But back then you needed a huge mainframe to get the resources of memory and disk space that the full-blown, multiuser, multitasking, network-connected Unix had to offer. Ten years later a Finnish computer student was able to create a Unix-like kernel small enough to run on a 386 PC. With the GNU project added on top it became Linux, which now runs on everything from supercomputers down to TV set-top boxes, and yes, Android phones -- while incidentally powering most of the Internet. (A different Unix clone, FreeBSD, lies beneath the pretty skin of OSX.)

So the next time you're fidgeting with impatience at how slow your updates are happening, reflect on the alternative. You could wait for a package to come in the mail, then start feeding one disk after another into that voracious slot on the front of your PC, listening to the measured thunks as the head moved from one track to the next (80 tracks per diskette -- you could count them), while hoping and praying that there were no bad spots or copying errors that might crash the whole procedure.

Don't you feel better now? I know I do.

Monday, August 13, 2012

Life in Geek Heaven, Part I: Software

I don't usually get all geeked out here, but indulge me for once ...

In the Beginning

Way back around 1996 I first tried installing Red Hat Linux on my home computer. At that time Windows 95 had recently replaced Windows 3.1 and Windows for Workgroups 3.11 while Microsoft server functions, such as they were, were still being addressed by Windows NT 3.51. The ever more bewildering mishmash of versions yet to come (Windows NT 4.0, 98, 2000, Me, 2003, XP, Vista, and 7) were still pipe dreams in the head of Bill Gates and his numerically challenged marketing staff.

 After years of watching DOS boot on my screens and then various versions of the Windows GUI, it was unbelievably cool to see a totally alien set of status messages scrolling across my 12" CRT monitor and terminating in a cryptic command prompt. I felt as if in the middle of the Cold War I'd been given a computer from the Soviet Union, something with an entirely different heritage. From reading the documentation I knew enough to type "startx" to launch a graphical desktop. Unlike Windows, I learned that you had a choice of such environments in Linux. One of them, called FVWM, bore a resemblance to Windows 95 with its flat teal background and bottom task bar. It was a new project, a bit half baked, but seemed like a way for the programmers to say, "You want something that looks like this? We can do that."

In the years since then Linux has grown by leaps and bounds. FVWM never really went anywhere, but soon enough there were not one but two premier user environments to choose from -- KDE and Gnome -- with still more to try if you cared to. On the server side, Linux and the related open source software that ran on it, like the Apache web server and MySQL database, were largely responsible for the explosive growth of the Internet. Now, 15 years later, it powers the likes of Google, Amazon, Facebook, and Skype, not to mention everything from Android phones to wireless routers to more than 95% of the fastest supercomputers in the world -- even the Large Hadron Collider. Don't you want some of that?

Progress

In those early days it was often a struggle to get Linux running with your particular brand of hardware -- especially on laptops with their custom touchpads, graphics, and network interfaces. Linux user groups would hold "install fests" to help people over the technical hurdles, just for the fun of it. But once you were up and running, there wasn't a lot of software available for the desktop user. Unless of course you wanted to built a web or file or database server, in which case your tool set was second only to the big commercial versions of Unix. That too has changed. So much free software now comes along with most Linux distributions that someone has claimed, "If Microsoft put all this stuff on one disk the Department of Justice would be all over them for monopolistic practices."

Over the years I've installed various flavors of Linux on a succession of ever more powerful hardware. Starting with an old 486 processor with 16 megabytes of RAM and a 10 gig hard drive, and ending up with a dual core beast with 8 gigabytes of RAM and a full terabyte drive. This thing has enough horsepower to run one or more extra operating systems in their own virtual machine windows while hardly breaking a sweat. (Of course, dual core processors are now so last year. Any self respecting video gamer is running an i7 with 8 cores.)

The Challenge

Until recently, though, I have only tried installing Linux on one laptop. This was a reconditioned machine purchased by a friend that was delivered for cheap without an operating system. Rather than blowing over a hundred bucks to add Windows, it turned out to be a simple matter to get a free Linux installation working on it. There was only one challenge. The friend wanted to use a cellular data card to access the Internet, and the system refused to recognize it as a valid network connection. Finally I realized that it worked like a dialup modem -- it was basically making a cell phone call to get online, like in the old AOL days. Naturally, Linux has had dialup support for years, so all I had to do was configure PPPD (for Point to Point Protocol Daemon) to make the connection, then write a simple script to connect, and another to disconnect. Voila, le Google.

This was not a task that an average user could be expected to perform. But luckily things have progressed even further now, to the point where I can pretty much recommend that installing my favorite operating system on your laptop -- even the most basic netbook -- is a thing you should really try. I know because I just did it myself.

[Next time -- my own netbook experience.]