July 31, 2003

Like a Wiki Diamond

I want to make a tool for creating websites based on faceted classification. This is basically what I do for work, but I want to make a simple version that emphasizes ease of use over feature set. This would be targeted at self-publishing (ala Movable Type) and community-publishing (ala Wiki).

Faceted classification is a technique that lets you categorize "things" into multiple overlapping hierarchies. For example a Madonna CD might be categorized under "Artists / Madonna" as well as "Format / Compact Disc" and "Price / $10 - $15". The advantage of this is that it doesn't force a dominant decomposition upon the user (to borrow a phrase from Aspect Oriented Programming). For example, one user might restrict themselves to cheap CD's first, while another user might want everything Madonna, cost be damned.

I don't have time to work on this idea quite yet, but I've been thinking about it for a few weeks so I wanted to post my current conception of it. Here's a quick list of the requirements I'm envisioning:

  • Web-based administration and editing.
  • Multiple navigation paradigms:
    • linear -- previous and next links
    • hierarchical -- children and parent links
    • web -- links between nodes, possibly bi-directional
    • feed -- every combination of categories has its own RSS feed
    • search -- all text is keyword searchable
    • refinements -- automatically suggests sub-categories to narrow the search
  • Automatic tagging of author and date -- this would make weblog-style sites relatively easy to create.
  • Permissioning -- restrict which users can create new items, change categorizations, etc.
  • Comment facility -- this affects the permissioning system.
  • Publically-editable categorization -- this also affects the permissioning system.
  • Database backed -- this kind of site simply has too many pages to use static pages.
  • Easy to install -- perhaps CGI?

What kind of site would this system be useful for? Well I could use it for my history idea, for one. It would also be useful for catalog sites like freshmeat. And it might encourage a weblog-wiki hybrid that people might find useful.

The underlying assumption I'm making is that if you make software that structures information differently, then it will find its own unique uses. Think of the difference between web pages (one-way links, read-only), weblogs (single author, public comments, chronological), newsgroups (subject categories, threaded discussions), wiki (interlinked, publically editable), and instant messages (immediate, point-to-point).

Posted by kimbly at 10:36 PM | Comments (8) | TrackBack

July 30, 2003

Sexism Among Programmers II

Via chromatic's diary, I stumbled across this slashdot post, illustrating an even worse example of the kind of sexism I've talked about before.

Thanks chromatic, for not remaining silent.

Posted by kimbly at 10:41 AM | Comments (1) | TrackBack

July 29, 2003

False Advertising

Here's a very interesting post (with pictures!) by Brad DeLong on the real distribution of Democrat and Republican votes in the US.

Posted by kimbly at 11:03 AM | Comments (0)

July 28, 2003

Sacrificing Quality

There's a discussion on Robert Martin's blog about whether a programmer should insist on a certain level of quality in their work. Some of the responses claim that if the client wants quality to be sacrificed, then the programmer is being unprofessional by insisting on a higher (and more costly) level of quality.

I can see their point, but I'm shocked to see that some of these posters seem to think that quality is synonymous with robustness, and that "sacrificing quality" therefore means they can skip testing. And then they're surprised to find out that the client expects the program to be bug-free! After all, didn't the client say that they could skip testing?

I'll use an architectural metaphor to illustrate what I mean:

Suppose an architect is hired to build a home, and the client says to sacrifice quality in order to keep the cost down. This does not mean that the architect can skip all the calculations involved in making sure that the building will actually stand up. All it means is that they should use cheaper materials for the unimportant parts of the building -- the eye candy, if you will.

Perhaps the interior doors are hollow instead of solid wood -- that doesn't mean that the doors don't have to open. Perhaps there's only one electrical outlet per room instead of three -- that doesn't mean that the wiring to that one outlet can be faulty.

Low-quality does not mean broken or dangerous. However it may mean ugly or tedious. So go right ahead and require that the user edit XML by hand instead of having a configuration dialog box. Feel free to leave out the splash screen with the pretty picture. But don't think that the quality of the code itself can be sacrificed without creating an extremely unhappy client, and possibly (justifiably) a lawsuit.

Posted by kimbly at 05:57 PM | Comments (0)

July 25, 2003

From Dawn to Decadence

I'm reading a history book called From Dawn to Decadence: 1500 to the Present, 500 Years of Western Cultural Life. There's a passage in it that I think does a very good job of helping the reader sympathize with what it might have been like to live in sixteenth century Europe, where Christianity was all-pervasive:

Consider Predestination, which states that individual merit does not ensure salvation and that man has no free will. This has been the most widely held Protestant dogma. When an idea posesses so many minds and such good ones, it is foolish to write it off as fantasy; one must look for the experience on which it rests... I said earlier that predestination is still maintained by a good many non-believers; they might be surprised to hear it; they do not, indeed, believe that eternal damnation is decreed for the many, including unbaptized infants. But they do believe in scientific determinism -- the unbreakable sequence of cause and effect, and that is predestination. It is the assumption all laboratory workers make and it rules out free will. Any present state of fact, any action taken, is the inevitable outcome of a series of events going back to the Big Bang that produced the universe.

Social scientists and common folk who babble about genes or the Unconscious or "man a chemical machine" similarly account for others' actions and their own as did Luther and Calvin. The road taken was set from all eternity, with no choice at any moment: will is an illusion. The sense of being driven by a power not ourselves is not uncommon... Modern criminology is rooted in this conviction and public opinion in the main agrees: the criminal is not responsible for his acts; he is "conditioned." Grace (the right heredity or environment) has been denied him.

Other root beliefs of the 16th century also have their present counterparts. Luther's agonizing about sin is matched by the Existentialist preoccupation with Angst, or despair at "the human condition." Unaccountable "guilt" may be said to be popular today, notably among the many sufferers of depression. It is sometimes cured, as Luther's was, by introspection, on the analyst's couch and by acceptance of what is thus revealed. Catholic confession was a summary form of therapy.

Nor has the word sin disappeared from the vocabulary of the enlightened. More than one modern novelist, poet, or social theorist has attributed the horrors of our time to original sin, although its definition is left vague. It presupposes that human nature is fatally flawed. This is a more ruthless belief than the theologian's, since it does not include a Redeemer from sin or the efficacy of baptism. In the 16th century both together lifted that terrible burden. For some in our day what redeems "scientifically" is political revolution, after which history will stop and society will know happiness without laws -- in other words, the Kingdom of the Saints fought for by the Anabaptists and others for 100 years.

I especially liked the idea that Grace (as in "there but for the Grace of God go I") can be likened to having the right genes or upbringing, and the comparison of political revolution with the coming of the Kingdom of the Saints. Comparisons like this make religious ideas seem much more reasonable to an athiest like me.

Posted by kimbly at 11:24 PM | Comments (1)

July 24, 2003

Andrew Birkett

If you like reading this blog (especially the programming language bits) then you'll probably like Andrew Birkett's blog as well. I also find it amusing that our last names are so similar (Birkett versus Burchett).

Posted by kimbly at 06:38 PM | Comments (0)

July 23, 2003

Simplifying debugging

One thing that makes debugging really difficult in imperative languages like C++, Java, C#, etc, is the use of state. If I'm in the debugger and I notice that a variable has the wrong value, it can sometimes be very difficult to figure out where that value came from. For local variables, this isn't usually much of a problem -- I can just page up and see where the variable got assigned. But for global variables, or even for class member variables, it can be a real pain.

It occurs to me that it would be useful if my debugger could let me time-warp back to the place and time where any given variable was assigned. To do this, it would have to store a stack trace with each and every non-local variable. For languages that already store activation records on the heap (e.g. to support closures and continuations), this should be almost trivial. It would increase memory usage quite a bit, but when I'm debugging the cost would be well worth it.

It would be an interesting project to try to hack something like this into Python or Ruby (I hear Perl internals are a mess, so I wouldn't even consider trying it with Perl).

Posted by kimbly at 02:19 PM | Comments (8) | TrackBack

Japanese doesn't need Icons

I never thought about this before, but apparently Japanese software doesn't need icons. They have enough one-character words that they're unnecessary. Seems obvious in retrospect. I wonder what they think of software designed by English speakers, like Microsoft Word with all its icons for open-file, save-file, print, etc. Does the Japanese version of Word use ideographs instead?

Posted by kimbly at 09:25 AM | Comments (0)

July 21, 2003

The Developer and the Sophist

Here's an amusing koan (by Frank Atanassow) that I would like to share with you:

The sophist says, `Users demand correct software.'

The developer rightly replies, `Correctness is an illusion. The program exists or it does not exist; it behaves as it behaves. Motibo ergo sum.'

The sophist counters, `What users want is an illusion?'

`No. We exist only to serve. Such is our purpose. But our masters are fickle,' says the developer. `They do not know their minds, which are clouded by their own desires.'

`How can you serve your master when you do not acknowledge his desires?'

`We are clever and nimble. Though a chasm lies between us, our master may say, ``Come hither,'' and we run elsewhere very quickly, knowing his true mind.'

`Why do you not build a bridge?'

`We have no such art; do you think us engineers?'

`Then why do you not tell him you cannot please him?'

`Simpleton! Who bites the hand that feeds? He is anywise oft amused by our agile antics. We do not go where he asks, but where we go, we go quickly.'

Here endeth the lesson.

The original discussion was about whether or not Microsoft could ever be expected to solve all buffer-overflow security bugs.

Posted by kimbly at 03:18 PM | Comments (0)

July 17, 2003

Boycott Metallica

Metallica is suing Canadian band "Unfaith" for using the chord sequence E F.

"We're not saying we own those two chords, individually - that would be ridiculous. We're just saying that in that specific order, people have grown to associate E, F with our music," blathers Lars Ulrich. "It's nothing personal against them, we intend to enforce our rights with any band intending to use Metallica-branded chords in the future."

Yes, this is true, I checked it on Google News. Time to burn any Metallica albums you have. May I recommend Apocalyptica as an excellent substitute? They play Metallica (as well as Pantera, Helmet, Prong, etc) songs on cellos.

Posted by kimbly at 06:45 PM | Comments (3)

Toolsmith Crow

Here's a movie of a crow creating and using a tool. In this case it's a piece of wire which the crow bends into a hook so that it can get at some food. The movie is interesting primarily because so many people are surprised that a crow could do such a thing -- they assume that animals are not only incapable of using (much less creating) tools, but that they are also incapable of problem-solving in general.

I find it interesting when people allow their cultural assumptions to leak into the scientific realm like this. It's frequently very difficult to tease apart what you're assuming from what you're actually seeing.

Posted by kimbly at 11:57 AM | Comments (0)

July 16, 2003

Guest Blogging

Howard Dean is "guest blogging" over on Lawrence Lessig's blog. I haven't seen anything like that before. It's a very interesting idea. Why didn't I have a guest blogger while I was on vacation? ;)

Posted by kimbly at 10:29 PM | Comments (0)

Europe Vacation Pictures

Pictures from my vacation. London, Barcelona, France (Villefranche, Canne), Italy (Florence, Rome, Naples), Greece (Mykonos, Santorini, Athens), Malta, and Vienna.

Posted by kimbly at 01:56 PM | Comments (0)

July 14, 2003

Sexism Among Programmers

There are several reasons why the software engineering profession is dominated by men. In my opinion, the main reason is because people expect it to be that way, and so they act in ways that reinforce it. On sites like Slashdot and Kuro5hin, it is common for people to make stupid jokes like this one, about how there are no women in the programming community. Eventually, the sheer volume of such jokes piles up, and women start to feel unwelcome.

These jokes are almost always just bad taste, and are not intended to make anyone feel unwelcome. However at some point, someone has to point out that enough is enough. Unfortunately, by pointing this out, you open yourself to attack. Quite commonly, people will rightly point out that your comment is off-topic (but where else are you supposed to mention it?). You sometimes will be called a troll, even though all you are doing is reminding people that you belong to the same community. And occasionally, you will be viciously insulted.

I usually don't mind the initial jokes, even though most people seem to think that because I bothered to mention it, I'm being "thin-skinned". However, the defensiveness that my comments stir up makes me think two things: this problem is much more ingrained than most programmers are willing to accept, and hardly anybody cares enough to try to change it.

Posted by kimbly at 04:07 PM | Comments (6)

July 10, 2003

History

While I was on vacation, I learned a lot about the various places I went to. I also started reading A History of the Arab Peoples. Until now I had always thought of history as being extremely boring, but somehow all that changed in only three weeks, and I suddenly realized that the inter-relationships and complexity of history can be fascinating.

Being a programmer, and having a very poor memory for names, I naturally started wondering how I could create a database out of all this, to help me organize and remember everything I've been learning. I'm thinking of something like Mathworld, but for history. It would store a lot of snippets, annotated with metadata that can be used for organization and searching. For example, one snippet might take place in Barcelona (place), in 1583 (date), involving both politics and Christianity (themes), and be worth mentioning when considering anything within 10 years and 100 miles (relevance). And of course the information would have been gleaned from somewhere (source).

The resulting website would be very different from most history books. Instead of being a linear narrative, or even a hyperlinked set of pages, it'll just be a collection of little snippets, like the panels next to exhibits at museums. Making the result actually be interesting to browse will probably be the most difficult part -- most people find history boring enough already that if you take away the narrative, their eyes will glaze over before the page even finishes loading. But I'll work on that problem once I actually have some content.

Obviously this is a mammoth task, and I don't feel like restricting its scope in order to make the task more managable, so it would have to be possible for other people to contribute to the database. Which means that the markup will have to be relatively simple, along the lines of Wiki.

I'm currently trying to keep this idea really quick and dirty, so that I'll have a hope of actually implementing something before I lose interest. Of course the first question is what language to use to implement it... ;)

Posted by kimbly at 05:35 PM | Comments (1)

Blacks More Likely to be Shot than Whites

From ScienceBlog:

Given only a fraction of a second to respond to images of men popping out from behind a garbage dumpster, people were more likely to shoot blacks than whites, even when the men were holding a harmless object such as a flashlight rather than a gun. The research used a virtual reality simulation and was prompted by a number of mistaken shootings of unarmed blacks by police officers in recent years.
Posted by kimbly at 08:31 AM | Comments (0)