Sat, 28 Feb 2004
Some Writings of Richard Gabriel Reviewed
Writer and programmer Richard Gabriel has written a number of essays on the process of software development and its relationship to other disciplines, such as architecture and other forms of engineering. What Gabriel does better than most is twofold. First, he takes the trouble to achieve a deeper understanding of the disciplines, warts and all. Second, his comparisons take into account the depth of the difference between software and buildings, rockets, etc.

carpet pattern Particularly in the book Patterns of Software, Gabriel's comparisons focus on the field of architecture as understood by the controversial Christopher Alexander. While Alexander's tome A Pattern Language is widely revered in the object-oriented software community, its acceptance in his field is less unanimous. Though I'm only familiar with it through Gabriel's discussion, it seems that there are a number of ideas that run counter to accepted architectural practice, such as the assertion that the practice of designing and building must be intimately connected. Already we have a point from the field of architecture that hasn't been widely carried over to the software world: you can't have architects simply handing off blueprints to relatively unskilled builders and expect a good building to result.

Gabriel's investigation of other forms of engineering reveal similar disconnects between reality and the notions that software methodologists typically hold. In his essay Mob Software: The Erotic Life of Code, Gabriel points to the series of failures that preceded NASA's eventual success sending humans into space, thus skewering the widely-held idea that the space program demonstrates that a disciplined team of engineers can produce reliable results quickly and cheaply.

There's lots of other interesting material here, particularly if you chart the evolution of Gabriel's thought from earlier to later essays. In Patterns of Software, Gabriel laments the fact that, due to the overwhelmingly proprietary nature of software (in the 80's and 90's), it was impossible for programmers to study the code of great programs in the way that architects can study great buildings. He also cites the poor quality of Free Software (in the forms of emacs and gcc) as one of the factors that helped drive his start-up out of business. In his 2000 essay Mob Software, Gabriel celebrates the emergence of Open Source as enabling the very study he earlier wished possible, and goes so far as to suggest that the revolution Open Source is part of may overturn the conditions of Worse is Better that Gabriel has famously described.

Like his muse Alexander, Gabriel puts forth some heretical ideas. The virtues of code reuse are questioned and the overuse of abstractions decried. It's all done in a very readable style, but the insights contained compare favorably with related texts such as ESR's Cathedral and the Bazaar and Highsmith's Agile Software Development Ecosystems. I'm not sure I'd agree with the jacket of Patterns of Software that this material is of equal interest to programmers and non-programmers alike, but I've found it invaluable as I reassess my understanding of software development and its place in the world.
[/book_review]
Wed, 25 Feb 2004
Free as in Software
Yet another debate over the best way to achieve freedom in software is in full effect. This time, the proximate cause is the Apache Software Foundation's adoption of a new license version, called the Apache License 2.0, which has been poorly recieved by members of the GPL and BSD camps. Someone at the FSF has declared that the Apache License 2.0 is incompatible with the GPL because it contains some restrictions about license-holders' actions with regards to patents. Perhaps more significant is the OpenBSD project's rejection of the license as excessively restrictive, which forces them to start maintaining their copy of apache as a fork under the code's previous license (ASL 1.1).

I've been using, advocating, and making minor contributions to various forms of free software for a number of years, but the One True Way has never been clear to me. Use of the GPL is demonstrably compatible with the development of lots of good software. The same can be said for the BSD license, the old ASL, the Artistic License (from perl), the Mozilla Public License, and probably some others that I can't think of. In the long term, this proliferation of workable licenses is probably a good thing, as it may allow the best ideas to prove themselves in the field. Right now, though, it sure is chaotic.
[/code]
Tue, 17 Feb 2004
The Ugly Face of Activistism
The article Action Will Be Taken at the Left Business Observer explores the emerging popularity among progressives of a disturbingly anti-intellectual worldview, which they dub activistism. Rather than go through the long and painful process of developing a better worldview than the Global Free Market Fundamentalism embraced by the elites, many have put their faith in action. But this leads to all sorts of problems, which are expounded upon in the article.

The article closes with a call to action:
We're not calling for leadership by intellectuals. On the contrary, we challenge left activist culture to live up to its anti-hierarchical claims: activists should themselves become intellectuals. Why reproduce the larger society's division between mental and physical labor? The rousing applause for Noam Chomsky at the World Social Forum in Porto Allegre was hardly undeserved, but ideas don't belong on pedestals. They belong in the street, at work, in the home, at the bar and on the barricades.
Couldn't agree more. Chomsky is a great example. On the one hand we have young turks claiming the only useful thing Chomsky could do at this point is set himself on fire (seen on nettime), on the other we have people at Chomsky's talks prefacing their questions with self-effacing statements like I know I'll never understand this as well as you, but... (heard at MIT). But why do people pin so much on one man? It's worth spending time with Chomsky's ideas, because he's sharp and has put a huge amount of his life into working towards democratic values. But he's only one person, and has his own foibles just like anyone else. I suspect that it's this very reluctance among many progressives to do the intellectual heavy lifting that leads to such fixations on prominent intellectual figures such as Chomsky. Screw that, DIY.
[/general]
Sun, 15 Feb 2004
Agile Software Development Ecosystems
I was pleasantly surprised by Jim Highsmith's Agile Software Development Ecosystems, which appears at first to be a rather dry list of software project management approaches, but is mostly very readable and a bit revolutionary. The strongest parts of the books are Highsmith's interviews with notable folks including Kent Beck, Martin Fowler, and Ward Cunningham, together with Highsmith's analyses of what's gone wrong with common approaches to software development.

If the 381 pages can be distilled to an idea, it would be something like this: any kind of halfway interesting software project is a learning process for both programmer and user, so you need to emphasize communication and openness to change in response to the things you learn as you proceed through the project. Although this sounds painfully obvious, Highsmith points out that the approaches that became popular in the 1990's (which he labels Rigorous, in opposition to Agile) make the opposite assumptions: that all of a project's functionality can be perfectly determined ahead of time, and that written specifications and documentation can be used by a non-coding "architect" to design a solution that is in turn handed to cube-dwelling automatons who laboriously crank out code, which is finally handed over to the client and called complete. No wonder so many projects end up tremendously over budget and under expectations.

Part of what makes this book great is its relaxed and confident approach to the subject matter. Highsmith doesn't set out to convince us that his way is the best way or the only way to run software projects. Instead, he spends lots of time talking about the situations where Agile methods are appropriate, and where they aren't. Though he doesn't dwell on the topic, these discussions are of particular interest to American programmers worried about outsourcing; the projects that benefit from an Agile approach are those that require constant interaction between programmers and customer, which is not so easy if the former is in India and the latter in Indiana.
[/book_review]
Wed, 11 Feb 2004
Rotary Fishtanks
Dave? Russ? I think you guys need to check this out. For the uninitiated, the rotary is an alternative evolutionary branch of the internal combustion engine family. With sufficient R&D it is possible that the rotary design would surpass the conventional reciprocating piston design in efficiency and reliability. Unfortunately, only Mazda has put any real work into the design, most of which has been in high-performance applications such as the classic rx7. Until now - Paul Cochrane in Australia has developed a fascinating new line of applications.
[/general]
Fri, 06 Feb 2004
Massachusetts Lawmakers: screw the economy, let's placate a conservative minority
Researchers have demonstrated a connection between having a welcoming environment for creative people and spurring economic growth. Massachusetts, of all places, should have this in the bag. Boston/Cambridge is one of the world capitals of higher education, and the area encompassed by Route 128 is one of the densest homes of high tech innovation this side of Silicon Valley. The Boston area has great public transit, rich cultural resources, and a diverse population. Obviously there are downsides, including the high cost of living, unmarked and potholed surface streets, and other typical urban issues, but the point remains that this is an area with a rich history, primed for further economic development.

So it seems a bit odd that Massachusetts politicians would try to create a climate in the state that is inhospitable to the well-educated, open-minded people that are needed to keep the state's economy going. While the various for and against organizations are generating lots of calls to politicians, polls indicate that there's no consensus either way on the issue. So why are people like Finneran putting so much energy into the issue? Perhaps because it's easier to try and drum up votes from diehard partisans than it is to bridge differences and solve the problems that affect all of us. I'm reminded of the way that Louise Day Hicks took a de facto pro-segregation position throughout her career, not because she was racist, but because it guaranteed her a solid base of political support.
[/rant]
Wed, 04 Feb 2004
Why is this still hard?
A group called the Organizer's Collaborative has a Visual Basic desktop application used by nontechnical folks. It works nicely enough now, and has a volunteer programmer who continues to fix bugs and add features, but the VB platform prevents taking advantage of the following opportunities:
  1. Mac users would like to use the app but VB only runs on windows
  2. People in other countries like Japan would like to be able to use the program but upgrading to a unicode-happy version of VB would introduce further restrictions (that I don't get since I don't follow VB)
  3. Free Software advocates would like to help with the project but don't want to work on a program locked into the Microsoft environment
Thus a change in development environments appears timely, although the usual constraints are in place (little money or access to programmer time, rich and expanding set of features) and such a move couldn't be a step backwards for users on Windows, so the application needs to continue to be responsive and a small download that's easy to install.

In the year 2004 of our common era, it should be a snap to find a rapid application development environment that runs on Mac, Windows, and Linux, has good unicode support, and is Free Software, right? Maybe, maybe not.

There is always that first and most infamous "write once, run anywhere" product: java. The requirement that the user might have to download a JRE seems like enough to rule it out. I still haven't seen an acceptably lean, snappy, and non-ugly java GUI either, though I will admin that the last one I saw in 2003 was enough to put me off them for another year or two, much as in 2002, 2001, etc. The Freedom question is tough, too - all the tools for developer and user are at least free of cost and available on some Free platforms, but I believe Sun still plays their ownership card tightly.

How about using Python? It's a popular language with a few GUI bindings, in fact it comes with one called Tkinter. Unfortunately, reports on Usenet indicate that its OSX version doesn't work well. Another python GUI is wxPython, the solution settled on by the smart folks building Chandler. It targets all three platforms and fulfills the other requirements as well. OSX support is rumored to be OK now and steadily improving. One potential problem with using python: Windows installation is covered with py2exe, and linux might be addressed by .rpms and .debs, but users on Macs are presumably going to have to install the pieces by hand, which is not going to work for the average nontechnical type. Not being a Mac person I might be missing something, but I don't see anything on the web to suggest that there's an acceptable answer right now. So wxPython seems like a 'maybe', with some downsides.

All these niggling details of the GUI tools remind me why I like web development - it's a relatively easy way to build cross-platform applications. The tradeoff, obviously, is that the GUIs one can efficiently create through HTML are either painfully limited, or they work only in one point version of one browser on one platform. Traditionally. But now there is the "Mozilla platform", which among other things makes it possible to harness the toolkit that powers the desktop applications Mozilla, Firebird, and Thunderbird. To be precise, stuff designed with the Mozilla toolkit now uses a combination they call XUL, rather than the original Mozilla browser/email/etc suite's XPFE. From what I can tell, in XUL, the user interface is defined in XML & CSS, and application logic ties in with some brew of XML and javascript, and possibly C / C++ / ?. After chasing around the web for a few hours, it's also clear that XUL is a moving target right now, and the assumption seems to be that most apps are going to be client / server rather than desktop only. I'm guessing that one can build standalone apps that keep track of their own data, but it's going to take a bit more reading.
[/code]
Mon, 02 Feb 2004
Whither the o-log?
Had a great chat today about the potential uses and abuses of weblogs for small nonprofits and grassroots organizers. A couple key points:

Most people have no idea what a 'weblog' (or worse, 'blog') is. This is not news. What I hadn't fully grasped is that, for those few members of society who have an idea what such a thing might be, ideas of 'what-I-ate-for-breakfast' and 'picture-of-my-cat' predominate. Naturally, people with such an understanding think you're crazy if you suggest that weblog technology could be helpful with their serious work. Maybe another moniker along the lines of k-log is in order? Either way, this is an issue to keep in mind when spreading the gospel.

Second point: weblog-type functionality serves a crucial role in helping uninformed visitors assess the vitality of a website, and by extension the project represented by the site. A great static site might have been built 4 years ago and left to languish, but a simply designed site that features regular updates on the activities of the project proves that the lights are on and somebody's home. Given that there are way more projects happening than I can ever be aware of, much less participate in, I am much more likely to look closer if I can be confident that there's something going on worth my while. Before weblog tools started to take over the web, these functions were often served by publicly accessible archives of an email list, but putting regular updates directly on the website reduces the effort required of the visitor and gives a project a better opportunity to craft the messages.
[/media/weblogs]
Sun, 01 Feb 2004
The Revolution will not be Televised
Over New Year's weekend I was in San Francisco and saw that The Revolution will not be Televised was screening. It didn't fit into our schedule and I was bummed to miss it, but things turned out for the best and I got to see both the film and a lively debate last night in Cambridge.

The film shows a Chavez who is a dedicated servant of his country's lower class, who enjoys loyal support from his officials and the poorer people. We see thousands of notes written to Chavez, asking his help with personal and community problems. It is also striking how seriously the poor have embraced the new constitution; everyone seems to have a copy and know it by heart. In contrast, the elites and the media they control (including all television channels other than the one owned by the state) are shown to be almost rabid in their contempt for Chavez, his policies, and his supporters. We see a neighborhood meeting of the wealthy, who are instructed to keep an eye on their servants as they may be sympathetic to Chavez, and are encouraged to learn how to use handguns and to expect that their use will soon be necessary. The elite-led opposition looks even worse when it stages its military coup, in which Chavez is made to surrender from his palace to prevent it from being bombed by the military. The newly-installed elites - primarily older white men, in contrast to the diversity of Chavez' officials - are shown celebrating as they officially dissolve the national assembly, supreme court, and other democratic institutions.

As is indicated by the title, one theme of the film is the commercial media's complicity in the coup. After Chavez supporters have marched through the streets and inspired the palace guard to take the coup leaders into custody, we see Chavez' officials, inside the retaken palace, watching a commercial channel interview one of the escaped coup leaders, who insists that everything is under control and that the palace is still controlled by the new government. The US government is shown to be on the side of the coup as well - we see a clip of Colin Powell praising it as a victory for democracy.

After the film was over, a lively discussion ensued. The first to speak was a woman who identified herself as a middle-class member of the opposition. She argued that many in the opposition are sympathetic to Chavez' goals of building a fairer and more democratic society, but don't believe that Chavez is capable of achieving those goals. Others pointed out that it was very strange that someone interested in fairness and democracy would side with the wealthy elites who had engineered a military coup against a democratically elected leader.

A number of claims were made by opposition members about inaccuracies in the film, but even if all these claims were true, the basic conclusions of the film remain. Certainly the situation in Venezuela is far more complicated than is depicted in the film (no surprise there!), but I certainly did not hear anything to make me think that there was any moral justification for the coup, or that the elites who lead the anti-Chavez opposition have anything in mind but a return to the corrupt looting of the country that their predecessors have engaged in.

Some resources for further reading: the Chavez-critical Caracas Chronicles (see at least the hilarious autobiography of the writer) and the Chavez-supporting Venezuela Analysis. As one of the top five oil producers in the world, access to Venezuelan resources is high on the US list of priorities; at the same time, Venezuela has the potential to be one of the biggest victories for grassroots democracy anywhere in the world. For these reasons it seems rather important to keep our eyes on what happens there, and what the US government does or does not do to shape the situation.

Update: some reasons to suspect CIA involvement in the coup, along with more background.
[/media]