Older blog entries for goingware (starting at number 100)

Turning Families On To Free Software

Well, I finally completed installing Debian Woody on my brother-in-law Bruce's computer. I left Bruce's Mozilla's home page set to the Linux Cookbook. I had planned to write up a more detailed web page of help to leave with him but won't get the time before I leave to return to Maine on Sunday.

However, it's OK because Bruce and Brenda and their daughters are driving down in a week to visit with us in Maine.

The main applications I installed were Nautilus, Mozilla, AbiWord, Grip, the GIMP, Emacs, Gnumeric and Evolution. I'd never seen Nautilus before and I must say in the short time I was able to play with it, it looked pretty nice. I also installed GDM as a session manager. Here's a tip - don't allow GDM or XDM to install before you've got X working, or you'll have a hard time getting control of your machine back! I had encountered that before, and downloaded just xserver-xfree86 and xterm (and their dependencies) before installing GDM.

I also downloaded a few Free as in Speech and Free as in Beer windows programs, installed them on Bruce's windows partition, and today installed them on my other brother-in-law Clyde's computer. AbiWord and Mozilla again, but also Speak Freely, a most excellent internet telephony program. The new release is GPL, previously it was public domain.

I got Speak Freely set up and tested on Clyde's computer (Clyde is my niece Denika's father - remember I recently taught Denika HTML) and rang up a helpful fellow named Johann in Germany to demonstrate to Clyde how he could talk long distance for free over the net. He was pretty impressed with this.

One version of Speak Freely runs as a native Win32 application, and the other runs on various *nix platforms, including Linux. Try it!

Finally, we brought up an old pentium-II system of mine for my mother-in-law to use. She's never used a computer before. Bonita got her intrigued by showing her how she could shop for clothes on Sears Canada's website. (The U.S. Sears website was a disaster last time I tried, but Sears Canada is a really good site). Then Bonita taught her to use email. Now she's corresponding regularly with two of her daughters, one of whom (Darlene) lives very far away, in Texas, and the other (Brenda) just in the next town over.

When Bonita wasn't looking, I installed Mozilla, AbiWord and Speak Freely on her mother's computer. I got caught next time Mom turned it on. I explained that I wanted her to have them to use when she got more comfortable with the computer (which runs Windows 98) but I wouldn't be here to install them for her.

She and my father in law are also coming down to Maine, so maybe I will get to show Mom how to use Speak Freely from there.

So I have installed GPL and Open Source software, including one full-featured debian installation, on computers belonging to three different families, and have gotten two of them actively interested in using it. I think when Mom is comfortable with Speak Freely (which is pretty scary for novices to use) she'll really enjoy calling up her two daughters (my wife being one of them) in the far away USA without having to pay long distance bills.

Wow, Thanks!

I just realized I'm certified as a Master now. I don't think that was the case just a few days ago. I'm not sure who put me over the top, but looking at my certifications, there are a significant number who call me a Master.

But just to be honest, I have written hardly any Free Software for quite some time. Most of my contributions to the community are in my writing - writing prose, not software. While I do contribute a little to ZooLib's sourcebase, I haven't even done that much of that. If you want to call me a Master for my writing (or my activism) well that's cool with me.

Turning a Family On to Free Software

Here's a seven-day plan to world domination - if every linux user took the trouble to install linux on a computer owned by someone who'd never used linux before, the number of linux users could double overnight. Of course it's important to teach them how to use it too.

I spent Canada Day preparing to install Debian Woody on my brother- and sister-in-law's PC. I say preparing and not actually installing because I wanted to leave their Win98 installation intact, but I was going to shrink the partition with GNU parted and I felt this was a dangerous thing to do. I also had never used parted before.

What I decided to do was backup their drive with Norton Ghost, a disk-imaging utility. While it's not in any way free, it's really a pretty good piece of software. You run a Windows utility that creates DOS boot disks that contain the drivers needed for accessing your archive device (a CD burner, or you can archive over a TCP/IP or USB connection), then boot off the floppy. Even though it's a DOS application, it has a pleasant GUI that you work with the mouse, and it understands FAT, NTFS, and ext2, and can make sector-by-sector archives of any partition.

Except I couldn't get it to work. I never had trouble with it before. But the CD's would burn for about a minute and then fail. So then I tried to make an image over ethernet with a crossover cable, but Ghost didn't come with a driver for my DEC Tulip ethernet, and I couldn't find one anywhere! For DOS I needed an NDIS2 driver for DEC 21143, and I couldn't find one. I even found a lot of old DEC drivers at HP's site (remember they bought compaq, who previously bought DEC) but there were no drivers for the Tulip. I spent an hour or two searching with Google, and couldn't find one.

Aha! I though, I have a CardBus ethernet card, a 3Com 575. I had the installation CD, which even had an NDIS2 driver - but it still wouldn't work, I think because I didn't have software to run CardBus on my DOS disks. Can anyone tell me how to make CardBus work under DOS?

I don't think I really need the DOS that Ghost installs, I could use DR-DOS, and I tried the dos that Win98 installs with "sys a:".

What the Heck, Let's Just Do It

So finally I suggested to Bruce that I resize his partition without backing up first. And he said "that's up to you". I was surprised, but it didn't seem to bother him. So I plunged ahead and resized with parted, and it worked fine, took just a couple minutes. A few more minutes and I had all my Linux partitions created, and I quit for the night.

Last night I went back and installed with an unofficial woody netinstall CD and had very little trouble. The most time was taking up with a bad block scan, which the installer recommends you skip, but I always run anyway. I had previously downloaded basedebs.tar and left it on the FAT partition which I mounted after I loaded the vfat filesystem module (so I could get the long windows filenames).

This all went very straightforward, but I got hungup on an all-too-familiar problem - Bruce's WinModem. I had given him a U.S. Robotics external modem a few years ago, but he had been using it on a 486, that had a 25-pin serial connector. When he got his new machine, I think it's a Pentium III or Celeron or something, it came with a WinModem and the newer style 9-pin serial cable. His old cable didn't fit, so he just used the WinModem. I didn't realize this or I would have brought a cable from home, where I have many cables.

No problem, I pop over to Radio Shack - it's right next door to Bruce's house in Grand Bank. They had a fair amount of computer stuff, but no serial cables! None at all! They had VGA, ethernet, USB and parallel cables, but no serial. How could this be, you ask? Because everyone around here uses windows, and they all use winmodems. Bruce is likely the first person in Grand Bank to get Linux, maybe the first person on the Burin Peninsula.

There's a couple computer stores a 40-minute drive away in Marystown, and when my wife gets up this morning we're going to go look for a cable. Bruce also has a couple of computer enthusiast friends who might have one. But I might have to order one to get express-shipped here. It's hard to buy uncommon things in rural Newfoundland. I once bought a $5 Mac serial cable for use here in Fortune, but couldn't find one for sale anywhere in Canada, so I paid $30 to have it FedExed from the United States.

Once I got the base install done, I sat down with Bruce to show him what you could do with the base system. There's actually a fair amount of software there - no GUI yet, and no emacs, but there is vi, and I could show him how dselect, man and info worked.

Everyone else in the family had been thinking me and Bruce were off onto some nerdy tangent until I gave them all accounts and asked them all to pick out passwords. Then I had them all practice logging in and out. They all seem pretty skeptical about using Linux, but it piqued their interest when I said they could get thousands and thousands of programs for it, all free.

Once I get it installed, I'm going to set up everyone's X startup script so it launches Mozilla when they log in, and I'll give them all a homepage that links to helpful resources both on the local hard drive and on the net. Among these will be Linux: Rute User's Tutorial and Exhibition and The Linux Cookbook, which is available as a Debian package in both HTML and info formats.

Finally, I'm going to buy Bruce a copy of Running Linux. All these books were recommended on the debian-user list for beginners. I tried to buy Running Linux when I was in St. John's, but it wasn't available anywhere. Bruce and Brenda and their two daughters are coming down to Maine to visit us soon, and I'll get Bruce a copy down there.

Teaching HTML

Night before last I taught my teenage niece Denika how to write HTML. Go check out her new home page.

I'm afraid I may have tried to teach her too much in one sitting, so there was too much for her to absorb, but unfortunately I am leaving Newfoundland soon to return to my home in Maine. I wanted to give her a good start.

I didn't think she would pick everything up on her first lesson, so I wrote up a page with lots of helpful links on learning HTML. (The original, which I left on her hard drive, also had links to the management pages for Denika's free hosting service). I think that once she follows some of the links on that page it will all become much clearer to her.

ZooLib

I have updated the Advogato project page for ZooLib to say what progress has been made, and to urge people to try out the CVS version.

I have gotten several emails in the last few weeks from people who thought that ZooLib had become inactive, because there is not a lot of traffic on the zoolib-dev mailing list, and it's been a long time since the last release. ZooLib is anything but inactive though, a tremendous amount of good work has been done and I have got a good start on a tutorial.

Mentoring

I'm downloading a few pieces of software before I take them over to my niece's house, where I am going to teach her HTML. She has had her own computer just a few months and has expressed a lot of curiousity and enthusiasm for using it.

I thought it would benefit her to get Speak Freely, a GPL'ed internet telephony program. I'm going to give her my IP telephony headset and buy a new pair when I get home. I'm also going to download AbiWord and Mozilla.

Also, from the very start, I'm going to teach her to use the W3C HTML Validation Service - something everyone would do well to use.

Installing Debian

bytesplit, for installation help (and general help once you've got it installed) subscribe to the debian-user mailing list. It's really quite good. Of course it is helpful to search for your problem in the archives before posting a question - also see Eric Raymond's article on How to Ask Questions the Smart Way.

For your specific problem with the NIC, at some point the Debian installer will give you the opportunity to select modules to be loaded into the kernel. Modules are loadable device drivers, essentially dynamically-linked libraries that are installed into the kernel after it has booted.

Almost certainly the installer kernel doesn't have the driver for your NIC built-in, you will need to select the module that supports it. It is possible that you have some whacky NIC for which no linux driver exists, but most likely there is one. However, you may not recognize the name of your NIC from the selection that is presented. Most likely they are listed by the chipset used rather than the brand name of the card. To find out, try searching for the brand name in the debian archives, the linux-kernel mailing list archives, and at The Linux Documentation Project - maybe you'll find it mentioned in a HOWTO.

Alternatively, you could select the modules for all of the NICs presented. It is possible this could cause trouble, but not likely, as the wrong ones won't detect their hardware and then won't complete loading. After you get the system installed, you'll want to read up on module configuration and then change your config so the wrong NIC modules aren't loaded.

Free Software in Developing Countries

pusakat, just before I got online just now I spent several hours writing my teenage niece a long letter in which I told her what Free Software was. She got her first computer just a few months ago, and has been eager to get lots of software for it, with the result that she's installed such Spyware as Bonzi Buddy.

In my email I started out by telling her how to get Free windows software, suggesting she start with AbiWord, and also telling her how to find all the Windows and OS Independent software on Freshmeat and SourceForge. (Freshmeat lists over 500 Windows 98 projects).

However, I discussed in some detail about the history of the Free Software Foundation, Richard Stallman's days at the MIT artificial intelligence lab, the development of GNU, Linus writing the Linux kernel (and what a kernel was!), and how she could run lot more free software if she let me install Linux and teach her how to use it.

I told her that I had written so much detail to help her understand that Free Software meant a lot more than not having to pay for programs, but that by using it and telling others about it she could contribute to widespread and positive social change.

I went on to discuss how Microsoft has pressured the U.S. government to threaten developing countries with trade sanctions if they don't crack down on piracy - I know this has had an effect on several countries, that have enacted antipiracy laws and even started enforcing them as a result. I also discussed the Business Software Alliance's software audits and lawsuits, and their tactics of intimidation, and using the proceeds of their audits and lawsuits to finance further intimidation.

I discussed how Free Software gave both developing countries and business in any country a legitimate way out.

I'd like to post the letter verbatim on the web, and likely I will, but as it was a personal letter to my niece and likely to come as something of a surprise to her, I think I should ask for her permission first.

I know that Linux is being adopted at a rapid rate in the Ukraine, Taiwan and Russia specifically because of the threat of trade sanctions that were instigated by Microsoft.

Go look around Kuro5hin - there have been some articles about this - here is MS anti-piracy push leads to Linux adoption in Taiwan. There have also been some articles about the adoption of Linux in India at Slashdot

this search at slashdot will find you some articles about Linux in India.

At Newsforge, there is Pre-installing Linux in Russia is a growing business model. They quote Russian computer manufacturers as saying the move toward Linux was specifically because of Microsoft's efforts and a new anti-piracy law.

In general it is helpful to search for news articles by going to some of the news sites and using their own search facilities. In some cases, they don't show up in Google searches because they use a robots.txt file to block spiders. In other cases, you don't find the interesting articles in Google's results because so many useless pages precede it in the listing. In other cases, search engines try to tell whether a page is dynamically generated based on characters like "&" or "?" or the filename extension in the URL and then choose not to index it.

Documentation: Free and Good

roshan, people are still writing Free books. I'm writing The ZooLib Cookbook (although rather slowly).

You can also find a catalog of free books (as well as reviews which are themselves free) at The Assayer.

If you have written a free book, check if it's there and submit it if not. If you've read one, consider submitting a review. If you're writing a Free book that's not yet finished, but you provide a draft available online, submit it to The Assayer's works in progress page. You'll find the articles section of my own LinuxQuality listed there.

Ilan, I agree with you that there is a lot of documentation which is not helpful, but may I make the friendly suggestion that your approach may not be the best one to take in fixing it?

I have my own personal peeves with the quality of much of the Free Software that I use; and even though there is much high-quality software, the integration of it on a typical Linux distribution is so poorly patched together that the overall experience I have of using it is often really unpleasant.

However, I don't feel that flaming Free Software in public over quality problems is likely to be constructive. I feel it is much better to point out problems in a general and diplomatic way, and to make constructive suggestions. That's why I started The Linux Quality Database. Go read the homepage there for an example of what I feel may be a better way to win converts.

Also, while properly chosen and tastefully designed graphics can improve the usefullness of documentation and the user's pleasure in reading it, all too often graphics and fancy page layout are used as a cheap trick to make up for poor writing and a lack of much meaningful content.

A case in point is the large number of technical books marketed to programmers that are 1000-page tomes consisting primarily of large screenshots and colored sidebars. These seem to be very common in the Windows and Java markets, and I find them not only annoying, but virtually useless.

Contrasting to this are some of the technical books in my own library which I prize the highest, and are not only small books, but have very few illustrations: Scott Meyers' Effective C++, More Effective C++ and Effective STL, Herb Sutters' Exceptional C++, Andrei Alexandrescu's Modern C++ Design and Jon Lakos' Large Scale C++ Software Design.

I personally have written a bunch of articles on various programming technical and business topics that have been very well received - I get lots of fan mail and a pretty large amount of website traffic from them - you can find them here, here and here. There are almost no illustrations in them and only the most basic HTML design.

The key is for documentation authors to learn to write well. Unfortunately, a lot of documentation is written by programmers, and a lot of programmers just really don't know how to write. This isn't restricted to programmers - when my father was working as an electrical engineer for a U.S. Naval shipyard, the Navy sent him to a class on how to write! The man has a Master's degree in E.E.!

The way I learned to write was that I had some very good classes in composition and literature in high school and college, and later on I spent a lot of time writing in a journal, posting to the Usenet, and writing documentation and test plans for some of the companies I worked for.

Most importantly, I have written a lot, and I've learned to critique my own work, and I've learned to show my work to others for their criticism and revise it based on the comments I get.

A really good way to get quick (and rather brutally honest) editorial feedback is to write an article for Kuro5hin. Articles are moderated by the users, who vote for or against publication, and one may choose to have a feedback period that allows revisions before voting begins. The K5 moderators seem to care much more about the quality of the writing than any particular content or subject.

My first attempt to publish there drew quite heated (but helpful) commentary and very ambivalent voting, so I withdrew it so I could rewrite it. The second draft of Musings on Good C++ Style was dramatically better and enthusiastically received - but I had to work very hard to rewrite it.

One can learn to write better documentation if one spends some time working at technical support for ordinary users. I used to work at a small company that couldn't afford much of a support staff so I worked the phones right in the middle of developing products. One gets a pretty sound understanding of the needs of the users for clearly written doc and comprehensible user interfaces by doing this.

For open source products, I would suggest that someone planning to write a manual spend some time teaching the program to a non-expert user first. You could teach friends or family members, or volunteer to install the software at a school or non-profit organization and then teach them all to use it. Then write the manual keeping your experiences in mind.

I think it would be helpful for someone to write some HOWTOs on what one can do to learn to write well. The fact is there is a plethora of freely or inexpensively available advice for writers, but it's not really in the field of view of most programmers. Many of us know people who either write for a living or as a hobby - go ask them to recommend books and websites that teach how to write well.

Many communities offer inexpensive classes in writing, and one can often enroll in a community college and take an introductory composition class - the one single class that made the most difference to my writing skill was English 1A at a community college one summer when I was still in high school. It didn't cost much to enroll in the class, I enjoyed the experience, and I got college credit for it.

Finally, an important consideration is the availability and usability of open source authoring tools that meet the needs of the users of open source documentation. I think the majority of commercial software product documentation is written in Microsoft Word, PageMaker or Quark Express with the illustrations done in Photoshop, Corel Draw or Illustrator. One can get some nice results from these, but besides being expensive, closed-source and unable to run on Linux, they produce files that are not really accessible to the tools used to read documentation on Linux.

Although we have AbiWord and the GIMP, a problem is that people need to be able to access information online in a lot of different formats - reading it in plain-text form from a console without running X, reading HTML in a console browser like Lynx, reading HTML off the web or from the disk in Mozilla, and also reading the Gnome Help browser, as well as printing the same documentation on nicely formatted hardcopy and publishing all the same stuff in a tastefully designed animal book from O'Reilly.

This presents a couple problems. First, because of the need for people to access doc from text-only consoles, we really do need a lot of documentation that does not depend in any critical way on illustrations and fancy layout. And secondly, because of the need to store and retrieve the doc in a lot of different formats, we need the ability to write the documentation just once and transform it automatically into different presentation formats.

The only way to do that that has been developed so far is to write the original documentation in SGML. IBM and other large organizations realized this problem decades ago and developed SGML specifically for the purpose of automated documentation retreival and transformation long before the web and HTML were ever dreamed of. And the SGML tool that has come down to us through the years is DocBook. And that's why the Linux Documentation Project writes all their doc in DocBook.

There is a problem though - the open source tools for working with DocBook are difficult to learn how to use, and the experience of working with them is not all that conducive to creative expression and design. There are some propriety tools that one can do wonderful DocBook work in, but they are very expensive. For example, there is FrameMaker+SGML, but it costs a fortune, and while a Linux version was developed, the publisher (Adobe?) withdrew it before it shipped.

AbiWord can be used to some extent to author DocBook documents. However, its DocBook importer and exporter are not very featureful or robust yet, so really it would be best for writing the first draft of something and then completing the work by manually marking up AbiWord's output and hacking on a DSSSL or XSLT stylesheet customization to render the presentation document.

I personally use Emacs and psgml, jade, and the DSSSL stylesheets, and honestly it took me a couple of years of trying before I was able to reliably produce documentation using DocBook.

So, if you want better documentation for Free Software, what I would suggest you work towards are:

  • helping documentation authors learn to write better prose
  • improving the DocBook support in AbiWord
  • writing better HOWTOs on how to get started authoring DocBook documents using the available open source tools
  • writing better open source tools for authoring DocBook documents

A significant event in the last few years was the creation of the XML version of DocBook. Parsers that can operate on full-featured SGML documents are enormous and very difficult to write, with the result that there are very few open source SGML parsers around (with many of them operating on only limited subsets of SGML). But XML was designed as a subset of SGML that was easy to parse, and the result of that is that there are quite a few open source parsers, most of them full-featured, with a choice of API's (DOM, SAX and others) and now there are even a number of fully validating parsers. Basing DocBook tools on the available XML parsers is I think a very promising way to proceed.

Something that will help free documentation authors in a huge way once it is in production is the LDP's Lampadas Project, which seems like a pretty serious way of completely removing the pain of dealing with manual DocBook markup as well as having to install, configure and operate the tools for working with DocBook documents. It's a ways off I think that it looks like the Holy Grail of documentation tools. I would suggest that any developer wanting to improve documentation would do very well to contribute to Lampadas.

19 Jun 2002 (updated 19 Jun 2002 at 22:43 UTC) »
LinuxQuality

I got translated!

The Open Source Development Lab was previously kind enough to republish two of my kernel testing articles on the OSDL website.

(Note that sunsite.dk is down right at the moment. Hope they come back soon.)

Just recently I got word from OSDL's Bryce Harrington that they have been translated into Japanese, and posted on the website of OSDL's Japanese Lab. So here they are:

The LinuxQuality articles section also includes an article on testing web applications with validators and load generators.

All of my articles there are under the GNU Free Documentation License. If someone wants to reproduce them elsewhere or translate them (or include them in a distro!), they are welcome to. Of course if you translate them I'd like to know so I can link to them or post the translations directly on LinuxQuality website.

I'm contemplating translating the original HTML into DocBook XML. Likely any new articles will be written in DocBook.

Inflation

Well, after the posts about "Helper" status I finally had to cop to the fact that I have not yet done anything of substance to help project ReactOS, despite my best intentions. So I removed my "Helper" relationship.

Also while I'm currently a journeyor, a number of people have certified me as a Master. I like to thing that my technical skill is masterful, and I have worked hard to make it so, but the fact is that I have in reality devoted only a very small portion of my time to Free Software, so I don't think the Master status is deserved (I'll let you know when I get more time to contribute).

I do write a lot of useful stuff that I publish openly on the web, like the articles above, and some of it I place under the GNU Free Documentation License. Links to more articles can now be found on my advogato member page. Even though I write a lot of stuff I hope to be useful, even the amount of time I spend writing is only a few days a month, and nowhere near enough to deserve Master from writing documentation.

Don't Call Me Sir

I took a surfing class the first term after I transferred to UC Santa Cruz. We took a van out to this popular surfing spot called Pleasure Point and paddled our boards around and try to catch rides on the waves.

Naturally I would end up paddling over to where the best waves were but I wasn't very good at it and the better surfers would end up dodging around me when they caught rides. At some point a boy of about twelve years of age paddled up to me and said: "Please Sir, for your safety and ours, could you go surf over there", pointing off to the distance where I'd be away from the pros.

I bristled at this. My reaction was not so much embarrassment at being scolded by a kid, but irritation at being called "Sir" when I was just 21 years old.

I feel like an old man today. It's really got me down. I'm thirty-eight, and it usually doesn't bother me, but today it does.

I've had paid employment as a programmer for fifteen years now, all except a few weeks off and on. I programmed for several years before that, in school.

I first learned to program in FORTRAN in 1976 when I was twelve, although I didn't really get very far into it until I took some community college classes when I was 16 - but we programmed on punch cards on a DECSystem 10. We were taught business application programming - an introduction in DEC BASIC, then a class each in FORTRAN and COBOL. I still have my decks.

Part of what's getting me down is something that I really should feel proud of (and usually do). I've learned a lot of important things to know about programming the hard way and I've written some web pages in an attempt to pass on this knowledge.

It turns out many of these web pages are very popular and I get a lot of visits to my sites because of them. And I also get a lot of email from young programmers wanting my advice on how to advance themselves, and even from experienced programmers wanting to go into consulting.

I'm glad these people look up to me and sometimes I even feel honored, and sometimes I think I'm able to do some good. But sometimes, like now, it makes me feel old. I still haven't fully accepted the fact that I'm not a teenager any more, but every now and then realization of this pushes through the cracks, and then I have a day like today.

My wife noticed me being very quiet at supper and asked me afterwards why I was so sad. I didn't really know why but she managed to worm it out of me. Then my ever loving and supportive wife said "I'm not buying it". She suggested that I was "wallowing in self-pity". She inquired whether a red convertible and a trophy wife were on the horizon. She forgot to ask about a toupee.

One of the things that gets me down is that I know a lot of people think I'm a good programmer, but really I feel like a fake. I know I've put a lot of work into improving my art and I've written a lot of code, but honestly I don't think I've got much to show for it. The fact is that I don't feel I have much to show for all my work, and I'm not particularly well off. I'm struggling just to get by, and I've been struggling for a long time.

Sometimes when people ask me how they can be better programmers, I want to tell them that programming is best avoided, maybe they should choose some other career entirely.

Often I wonder if I have misplaced priorities. I know times have been tough for everyone since Tulipomania came to an abrupt halt, but even at the height of the dot-com frenzy my first priority in my work was basically to ensure that I worked out of my own home, never went into someone else's office, and got to spend a lot of time hanging out in coffeehouses in Santa Cruz. The woman who was to become my wife came to live with me then, and instead of me slaving away for stock options in some Silicon Valley cubicle, we spent a lot of time watching her dog play on the beach.

I even left California in April 2000 and moved to St. John's, Newfoundland to get married. Even when we moved back to the U.S., it was to a rural town in Maine - far from any high-tech centers, but we got a large house on nearly two acres of wooded land with a big garage and everything. Throughout my career I've been a real butthead about choosing quality of life over employment prospects; early on I'd quit jobs because I didn't want to commute anymore and later on I'd quit because they didn't want to let me work at home.

I've had a lot of wonderful experiences that most others can only dream of, but what I don't have is any money in the bank or any real achievements to feel proud of. I have written some really cool code, but an awful lot of it has fallen into a black hole when the companies either went out of business or discontinued the products - one reason I want to do Free Software is so that my work will have a life beyond the company I write the code for.

Which brings me to the whole reason I'm still a programmer.

I wasn't too happy at UCSC, but managed to B.S. my way into a programming job. At first it was part time, but then they offerred me a full-time position, and I dropped out of school. For quite a long time, I hated programming and honestly I was really bad at it. I couldn't even type and I would labor for weeks to write a 300 line command-line program.

But then a visiting consultant installed GNU Emacs on our Suns (16 Mhz 68020 systems with 4 MB of RAM apiece!) and explained to me about Richard Stallman and the Free Software Foundation. I read the GNU Manifesto. I did the little C-h t tutorial in Emacs.

I wanted to write my own extensions to the editor, but it was poorly documented at the time, so to figure it out I started reading the Emacs source code. I ended up basically dropping out of productive work for over two weeks, maybe a month. One morning I noticed that I was feeling sleepy at my terminal (9600 baud!) and realized I'd been sitting at it for 24 hours straight without even taking a break to eat.

And then I had this realization. People could do things with software that were really worth a damn. I had always considered software a handy tool for engineering and science and even business, but not as an end in itself. I didn't think that any serious intellectual would waste his time programming. At CalTech we called the Computer Science majors "prostitutes" because many of them intended to sell the products of their minds for money rather than the advancement of pure knowledge.

But here was a glowing example of software that was a reward in itself. And I had all the source code on my workstation.

I wanted to write something like that someday.

But first I had to get a clue about how to write code. My education was in Physics, not Computer Science.. I started by learning to type. My boss gave me this little DOS ASCII-graphic video game he wrote where letters would drop from the top of the screen and you'd shoot them down by typing them.

Then I started to study. I would read Knuth's Art of Computer Programming on the bus on the way to work. My roommate and I had bought a Mac 512k a while back and I got the ThinkC compiler and started learning GUI programming. I started investing in good technical books, something I soon realized was an immensely valuable thing to do, and something I continue to this day - I've got a huge technical library in my house now.

One I lamented to a friend that I had a really hard time figuring out how to program. He replied "What are you worried about? In ten years you're going to be murderous". That was fourteen years ago.

Nearly every time I looked for a new job, I based my decision mostly on how much opportunity I'd have to learn on the job (except for when I'd get sick of the commute and quit, and refuse to work outside of Santa Cruz).

Back in those days, computers has really severe limitations. When I finally could afford to upgrade my Mac, I got first one megabyte, then a second, of RAM. It was a pretty big deal when I bought a 135 MB 5 1/4 inch full-height hard drive - for $700, used! There are a lot of things that people do now that you couldn't then, but people wanted to anyway. So what people did was write tight code. That's how I learned my chops - my first shipping retail software product sold for $29 or so and occupied eight kilobytes of RAM!

My first job for a software company, writing code outside of school, was for a company that developed a fully-implemented Common Lisp environment that would run on 640 KB IBM XT's running DOS - with room for the user's applications. For some reason Artificial Intelligence was all the rage in the computer biz at the time but all most people had was 16 bit machines.

The way we did this was to use a manually operated virtual memory system implemented in software, where we would explicitly get and put eight-byte conses from and to a VM manager with an eight megabyte backing store file. It was a fiendishly complex program, and we were plagued with bugs during development, but the product eventually shipped and is now available as a freeware download. It even has a MicroEmacs editor.

But now, on the day I feel so old, I also feel so irrelevant. These skills aren't appreciated anymore. I still pride myself on writing efficient, well designed and reliable code, but what many clients want is code that may be buggy, bloated, slow and hard to maintain - but they want it yesterday. And I'm afraid I just can't work that way. It not even that I won't - I don't know how to.

For a long time now I have felt that there is no future in the kind of consulting I do, and I'm not sure where to turn. I know it's important to keep studying to keep on top of trends in the industry. I've spent years advancing my knowledge of C++, but today I suggested to my wife is that what I've really been doing is learning how to fashion particularly elegant buggy whips.

And I still haven't written my great program. I've been too busy just trying to survive. Maybe if I hadn't been so obstinate about living in Santa Cruz for fifteen years, or maybe if I'd got some hot stock-options during the dot-com craze, I could be set now and be able to take time out from my day job to write some really good Free Software.

It is only recently that I feel my skill has advanced to the point that I am capable of writing the kind of program I'd like to write. But I know many, many Free Software programmers don't apprentice for fifteen years before they set out to write something for the community - they have an itch, scratch it as best they can, and post the URL at Freshmeat.net. Often their code's not so good, but often it's useful anyway, and once the source code is out there anyone can improve it. Maybe that's what I should have done years ago.

But still - I'm sitting in Fortune, Newfoundland, visiting my inlaws for over a month, with two laptops (a windows/linux compaq, and an OS X iBook), and I've been working out of my home for over four years. I'm married to a wonderful woman, and we own a house in the Maine woods. I've put a total of five weeks of onsite work at clients' offices in this whole time, and I've only worked one contract through one of those accursed agencies.

Life is still a struggle, but I manage my money much better than I used to when things seemed easy (and I got myself into this mess). It's going to be a while until I pay off the money I owe, but at least I can make the payments each month. The winter and spring of 2001 were pretty rough on me and Bonita, but at least we got through it, and I've been steadily employed for a year, and I just started work for a second client who bought me this wonderful iBook.

That's a lot better than many people can say, and I'm grateful for what I have.

I guess it's good to be an old guy. I feel bad for the kids who are just starting out these days.

New Family

When I got married I of course acquired a bunch of new relatives all of a sudden. I have four nieces, daugthers of my wife's brother and one of her sisters. My youngest neice, Lindsay, came to visit today, told me that I was her favorite uncle, and gave me a story that she had written for me. It was printed by I guess an inkjet printer on some fancy paper decorated with butterflies.

I felt all warm and fuzzy inside.

My wife thinks I work too much. She tells me that when I'm lying on my deathbed, I'm not going to be wishing I had spent more time working. It's things like quality time spent with family we will all be wishing for. I think she's right.

On a previous visit Lindsay was visiting with her father and I sat down with her while everyone else was in another room and had a long conversation with her. I don't think she was used to having an adult pay much positive attention to her, or to having one really listen to what she said.

But I remember something I decided for myself when I was four years old - that when I grew up I would really listen to what kids had to say. I was frustrated that adults never seemed to take kids really seriously.

For a long time Lindsay was a pretty unhappy little girl. But now she seems much happier, more outgoing, and much more talkative than she used to be.

Before we left Maine, my wife bought a computer game for her. I also brought along my copy of (of all things) Cosmopolitan Virtual Makeover. I bought it because I was working on a competing program for a client, Instant Makeover, and wanted to have it to compare. I don't need it anymore and remembered that Lindsay's older sister had enjoyed it when she tried it out on my Compaq. I gave the CD to Lindsay and asked her to have her sister install it on their PC.

Their father got them a PC a few months ago, and the older sister, Denika, has been corresponding with me and my wife for a while. She recently asked me to teach her HTML, but I never got it together to do that via email. So I'm going to teach her in person soon.

Mysteries of the Ages

Problem Number One: Given the familiar nursery rhyme:

Humpty Dumpty sat on a wall
Humpty Dumpty had a great fall
All the King's horses
And All the King's men
Couldn't put Humpty Dumpty together again.

How do we know Humpty Dumpty was an egg?

Evangelism

I may have the opportunity to turn a brand-new person onto Free Software - possibly a whole family.

My brother-in-law Bruce has a Win98 box, and he seems to like tinkering around with it. But Windows doesn't present much opportunity for the uninitiated public to really get to understand the system.

I showed him Slackware on my laptop and he seemed to think it was pretty cool.

I suggested we could install Linux on his PC. I thought at first we'd have to get a second hard drive, but he's only using 1.7 GB of an 18 GB disk. There's plenty of space that I can install Linux and still leave lots of room for Windows.

The main complication is that I don't want to erase his disk, I'm going to have to shrink his existing partition and add some new ones. I actually own Partition Magic and have used it to install Linux before, but I didn't bring it with me. There are some Free Software tools to do this though, so I'll investigate them. My iBook has a CD burner so I can back up his disk to my iBook and burn him some CDROMs before I monkey with anything.

I have a Slackware 8 CD with me, but I think it would be better to give him Debian. Debian is harder to install than Slackware, but once its installed I think it is easier to keep it maintained properly. There also seems to be a more active and supportive online community for Debian.

So I just downloaded and burned an unoffical woody net install CD image (unofficial because woody's not released yet, but it's close enough for almost anyone to use) and as I type this I'm downloading the basedebs.tar file. After I repartition his disk I'll put the basedebs.tar file on his drive and boot off the netinstall CD. So I should be able to do a base install fairly quickly.

We only have dialup service here (in rural Newfoundland) so it's going to take an overnight download to get the basic software installed.

At least he's got a real modem - I had a spare serial modem that I gave him on one of my first visits here. No worries about winmodems.

91 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!