contrapunctus, by Christopher League
 

Follow me

Moving train beside covered bridge

I recently caught the micro-blogging bug. Strange to do it now, with Twitter suspending its IM interface, and the routine appearance of its unlikely hero, the fail whale. I guess it started with Facebook updates, and then I heard about the Laconica distributed open µblog system via FLOSS Weekly. It’s free software, anyone can run a messaging server, and different servers can interact.

The two biggest servers in North America seem to be identi.ca and the TWiT Army. The paramilitary theme of the latter is cute in its way, but I decided it wasn’t for me. So I defected to the north and became identi.ca/chrisleague. For now, this is synced to Facebook and twitter.com/chrisleague.

And if you’ve got no other choice
You know you can follow my voice
Through the dark turns and noise
Of this wicked little town.
— Hedwig

Another Microsoft rant

One would think that keyboard entry is a pretty basic feature of a spreadsheet program. Maybe I’m a newb — I just started using spreadsheets in, let’s see… 1984… with Lotus 1-2-3. Here is Excel 2004 for Mac, completely unusable for data entry. (One minute Flash movie, may not appear in feed.)

And people pay money for this? Denigrate free/open-source software all you wish, but I never had a problem just entering data with Gnumeric or OpenOffice.

Someone appears to have found a workaround, posted just a few days ago. Note that a workaround is not a fix. Normally, “edit directly in cell” is something you might want to do.

Microsoft

Many students are mystified, at first, by my ignorance of and apathy toward the Microsoft environment. To many of them, Microsoft is the computer. They’re younger than the IBM PC architecture itself, and didn’t experience the great diversity of home computers (Commodore, TI, Atari, Tandy, pre-Macintosh Apple) that my friends and I had in the early-mid ’80s. Nor did they witness the following decade of dueling proprietary Unix workstation vendors (DEC, Sun, SGI, HP).

The simple story is that I started using these Unix workstations in college in 1991, and never even bothered to install the clunky contemporary Windows 3.0 on my own PC. By late 1992, I was installing early distributions of Linux. I stayed in that academic Unix-using bubble until 2002. Sure, I had seen Windows 95 briefly at a summer job. But it wasn’t anything to take seriously. I’m a bit younger than that condescending bearded hacker in the Dilbert strip, but I’m clearly his heir.

I bring up this story because I read a number of interesting comments on Slashdot about resistance to Vista, and the extended end-of-support deadlines for XP. I’ll just pull out some examples here, first about programming languages:

As for J#, C#, VB and WebDev, we’re back to the same “How do I keep giving Microsoft money” question again. Those are not standards. They’re proprietary solutions and stuff you build on them will obsolete every time Microsoft decides it needs more of your money. It’s a trap. Don’t fall into it. If you must program in those soon-to-be dead languages then you’ve created your own predicament and nobody can help you. —symbolset

I guess that articulates why I resist VB and C# in our program, even though there is clearly demand for them in industry, and thus students want to learn. Incidentally, another prof (who is not an anti-MS bigot) teaches those languages on occasion.

Here’s a provocative call for Microsoft to save themselves by turning Linux into Windows version 7:

This is going to sound crazy, but bear me out. So here’s what Microsoft does. They take the [Linux] OS and develop a Windows GUI for it. They pour a billion dollars or so into WINE development and research (while providing WINE’s coders with full access to existing Windows APIs) and they bring WINE’s performance and compatibility to dizzying heights. And then they sell it. Call it Windows, sell it as Windows and do what Apple’s done with Darwin. Keep the proprietary stuff proprietary and the OSS stuff OSS. You’d wind up with a rock-solid OS, and your users could run their old software until their apps received an update to the new system. Eventually WINE would no longer be needed.

This all sounds a lot like Apple, MacOS X and Classic, doesn’t it?

Anyway, there we go. I’m sure there are a thousand valid reasons why this couldn’t/wouldn’t work and naturally it will never happen. I understand that. I can dream though, can’t I? —penginkun

How delusional am I, that this sounds like a perfectly reasonable strategy? Problem is that Microsoft is completely allergic to it.

What Apple has done fantastically well with the OS X transition is to maintain basic compatibility between the GUI frameworks and the underlying command-line tools and system calls. Apple adopts cups as their print server, adds some new GUIs and such, but continues to maintain ‘lpr’ and ‘cupsd.conf’. When some new technology like Spotlight is added, it comes with command-line and file-system support. Meanwhile, on Microsoft, you create a symbolic link on the Desktop, and you can’t use it from the command-line or Perl scripts or normal C code. It’s not part of the file system; it’s just a façade that the (bloated) API provides.

I think this is why Apple has achieved significant market share among CS types and other scientists. I’m not even certain it was an explicit design goal for OS X, but now that we’re a market segment, let’s hope they keep it up. One thing that Linux distributions are doing better is package management. APT is great. You can run APT on Mac of course (and even on the iPhone), but if Apple blessed it and you started seeing most applications and demos installed that way, it would be an improvement.

Anyway, I’m not sure I’d go as far as to say that Vista represents the complete downfall of Microsoft, but the mind-share monopoly is certainly fading.

Wikivenom

I was at a seminar the other day with some librarians, on the resources that are available from the library, and how we can encourage our students to make better use of them. It’s easy to forget that not everyone has developed skill for evaluating the quality and reliability of sources.

There seems to be some disagreement among librarians about the value and role of general search engines like Google (especially compared to subscription-based databases). Whereas among computer scientists below a certain age (in which, on most days, I’d include myself), you’re more likely to find the sentiment that “If it’s not in Google, it’s not worth knowing.”

Anyway, at some point Wikipedia was inserted into the conversation. Again, librarians seemed to disagree on its value and role, but this time the emotion level really rose. One participant in particular took virulent offense that it was even mentioned. “People write any kind of shit on Wikipedia; that’s just the wild west.” He insulted the no-lifes that contribute to Wikipedia, and basically said that the world would be a better place if it didn’t exist at all.

It’s rare to hear that kind of venom among peers in my field. I naturally made the mental connection to free software. It seems literally impossible for some people to believe that a loose-knit network of volunteers can, in their spare time, create operating systems, web servers, email clients, and the like. And to suggest that their efforts routinely surpass those of ‘professionals’ at corporations is offensive and un-American.

Many people strongly believe that nothing of value can arise from chaos, from anarchy. There is, I’m sure, some analogy here to evolution, too. The free software model is not precisely the same as Wikipedia, of course. Most projects would be insane to have their code repository writeable by just anyone. Among my peers, criticism of Wikipedia targets these more narrow, procedural decisions, because we know that, on the whole, the free software model works.

One librarian was more level-headed; she demonstrates to students what Wikipedia is all about by editing it in front of them: “Elvis Presley is alive and well, and living in Peoria.” She doesn’t go as far as submitting the untruths and thus vandalizing the page, but it does emphasize — effectively, I think — that we need to treat everything written there with skepticism and check the sources.

Dependence on proprietary software

Something has become a bit worrisome in my computing life. Since I got my Powerbook last Fall, I’ve allowed myself to become increasingly dependent on closed software applications.

One of the things I treasure about open standards and simple file formats is that I can still easily read and edit my emails and documents going back to September 1991, to the day I typed my first command at a Unix prompt. That’s nearly 15 years ago!

Many people fret about bit rot: put your newborn’s pictures in some seemingly ‘archival’ format like JPEGs on CD-ROMs, and your ability to revisit them when your kid turns 21 is very much not assured. There are two issues here: the physical media, and the file formats. In the net-centric, GNUish world I first entered as an undergrad, neither issue seems to be much of a problem.

With ‘offline’ physical media — cartridges, cards, disks, etc. — you must be extremely vigilant to copy all your stuff from one dominant form to the next during the narrow window in time when both are available. Copy your stack of 5¼″ floppy disks onto 3½″ disks. Copy those onto Zip disks. Copy those onto CD-RWs. Copy those onto DVD-Rs. Copy those onto external USB-2 hard disks. Copy those onto whatever the hell is next. Who has the patience for all that? But if you get lax and skip a step, you end up with valuable stuff on a 5¼″ floppy but a computer that only supports 3½″ and CD. Now what do you do? (Substitute the latest technologies as needed.)

This is one reason why I never recommend any kind of offline storage medium, including today’s popular USB sticks. Many folks in personal computing thought it was a major coup when Apple released the first home computer with no floppy drive — the iMac in 1998 — but the DECstation 3100s we used at Hopkins had no external storage facility at all, and they were produced in 1989. They had internal hard disks and ethernet, and that’s it. It’s still basically all I need; some of my machines can write CDs or DVDs, but I really hardly ever use that functionality.

So, my strategy for keeping data alive through the years is just to copy it over the network from one Unix machine to the next, whenever I change institutions and workstations. Nowadays, I always keep multiple copies alive (home, work, laptop) as a backup strategy as well. This has the added advantage that whenever you buy a new machine or disk, it generally has 10 times or more the capacity of the previous one. So bringing along all the old stuff every time costs very little space.

Now, as for the file formats themselves, this has until now been very easy as well. On Unix-y systems, the plain text file is still king, and the few binary formats tend to be open, stable, and supported by multiple applications (think JPEG, PS, PDF). There have always been exceptions: xfig is one that I used way back. And with the more desktop-oriented applications of Gnome, KDE, and Mac OS, there are even more exceptions: I currently rely on gnumeric and gnucash. But as long as the apps are portable, open-source, and provide a variety of export formats, I’m not too worried.

Incidentally, XML-based formats are often touted as a solution here, but they only get you so far. Sure, a text-based format is going to be easier to decode than an opaque, arbitrary, binary format. But open up the .apxl (XML) file used by Apple Keynote in your text editor and tell me with a straight face that it would help you reconstruct your presentation if you no longer had access to Keynote.

I started out writing this with the intent to think ‘out loud’ about what Mac applications I’ve come to depend on, and how I might reduce that dependence and transition back to mostly open source stuff. (Then I can make use of my GNU/Linux desktops at home and work again, instead of carrying the Mac laptop back and forth always.) But this post has become long already, and I’m ready to head home and seek out dinner, so maybe it’s best just to publish this and restart that brainstorm another day.

Licentious mess

I’m working on a rather sophisticated program in Java, where I ended up building on lots of libraries and other programs. Java is never my first language choice, but with the new features in 5.0 (or 1.5 or Java 2 or whatever the hell they’re calling it)—generics, for-each loop, auto-boxing, enums, assertions, variadic methods—I find it almost usable. And it is fairly easy to bring in external libraries: download the jar file, set your class path, browse the javadoc site, and you’re on your way.

The system is not ready for release yet, but I did start contemplating the licensing terms today. Because of all the libraries I’m depending on, it’s kind of complicated. I’m a big advocate of free software. For end users, the license doesn’t matter very much; any of the ‘open source’ ones will do. For lone developers, you just choose one that matches your goals. For me, that’s GNU GPL or LGPL, depending on the situation.

Unfortunately, if you’re building a system that incorporates the work of many other people, it gets complicated. Here are the libraries and programs I’m embedding… so far:

  • org.kohsuke.bali — BSD-new
  • com.colloquial.arithcode — BSD-new
  • org.apache.tools.bzip2 — Apache 1.1
  • xerces — Apache 1.1
  • junit — Common Public License 1.0
  • gnu.bytecode — GPL 2
  • gnu.getopt — LGPL 2

So, under what license can I distribute my own code, which is combined with all of these systems? The main complication seems to be that the Apache and Common licenses are not strictly compatible with the GPL, even though they are meant to be, “in spirit.”

Some people would blame this on the GPL. It does seem to be the odd man out; if gnu.bytecode were released under Apache/BSD or even LGPL, then I could distribute the whole thing under Apache/BSD and be done with it. But I’m a big supporter of the GPL, and I can’t blame Per Bothner for selecting it for the bytecode library (part of Kawa, a Scheme-to-Java system, by the way).

I see a few options here:

1. Remove dependencies on the Apache/Common components, making them optional at build time, then release under GPL. End users can still grab and link those libraries, but I don’t have to redistribute them for a basic configuration.

2. Remove dependence on gnu.bytecode, perhaps using Byte-Code Engineering Library instead (it has an Apache license). Then release everything under Apache or BSD. Regardless of the relative merits of the two libraries, I’d hate to reject one just because it’s GPL.

3. Perhaps it’s possible to redistribute Apache/BSD-licensed software under the GPL, even though I’m not the copyright holder? That seems to be the opinion of Roy T. Fielding, of the Apache Software Foundation:

Whether or not [Apache and GPL] are considered compatible by the FSF is an opinion only they can make, but given that a derivative work consisting of both Apache Licensed code and GPL code can be distributed under the GPL (according to our opinion), there really isn’t anything to be discussed.  — 24 Jan 2004

Option 3 would be ideal, if it turns out to be legal. I usually assume that I’m bound to redistribute under the same license the author used, but really it’s just the GPL requires that… ?

For love or money

Last week, when I posted to disparage Microsoft PowerPoint, I used the word ‘amateur’, as in “PowerPoint makes you look like a total amateur.” I already regret that word choice; I did not mean to denigrate amateurs!

The word, of course, comes from the Latin amator (lover), so originally it meant someone who pursues something for the love of it, rather than for monetary compensation. My dictionary (New Oxford American, 2e) lists two definitions:

  1. a person who engages in a pursuit on an unpaid basis
  2. a person considered contemptibly inept at a particular activity

These meanings are at odds with one another, and I hate that. I have to imagine that the second meaning was promoted by professionals trying to discredit the work of those that were not members of the trade guild.

Today, in many fields, one can find extremely talented amateurs and grossly incompetent professionals. Indeed, I am an amateur photographer and pianist, so I have an interest in protecting the positive definition of the word. People do seek to publish my photographs: just yesterday an English professor from Utah asked to use one of my (fairly abstract) photos for the cover of a book he is editing. (I’ll post something about it in the future.) I usually agree to these things, with little or no pay, because I just don’t take pictures for money. I’m more interested in improving my skills and having my work appreciated and used.

Amateurs and professionals sometimes take on different roles. I’d never agree to be the sole photographer at someone’s wedding. That’s too much pressure; leave that stuff to a professional!

Something similar happens in software development; amateurs (in the first sense) are the basis of the free software movement and the hacker culture. In this case, I’d personally be more likely to hire someone who programs on her own time just because she loves it, rather than someone who pursued a pile of certifications and acronyms (CCNA, MCSE, etc.) Like the trade guilds, certification programs (particularly expensive ones) aim to delegitimize amateurs.

Some of my thinking on this topic is probably thanks to Paul Graham. In his essay What Business Can Learn from Open Source, he writes:

There’s a name for people who work for the love of it: amateurs. The word now has such bad connotations that we forget its etymology, though it’s staring us in the face. “Amateur” was originally rather a complimentary word. But the thing to be in the twentieth century was professional, which amateurs, by definition, are not.

That’s why the business world was so surprised by one lesson from open source: that people working for love often surpass those working for money.

Anyway, I’m not going to edit the PowerPoint post to redact the word ‘amateur’. Sometimes I think we have to accept the fact that words have different, even conflicting, meanings. I feel this way when hackers (enthusiastic and skillful computer programmers or users) fume about mentions of hackers (people who use computers to gain unauthorized access to data) in the media. [Definitions from New Oxford American 2e, again.]

Get over it, it means both things now. Rely on the context. (Although I guess I do get upset when people don’t know there is a ‘good’ definition…)