diary at Telent Netowrks

I don't know whether linking to interseo.com#

Sun, 31 Oct 2004 12:54:37 +0000

I don't know whether linking to interseo.com and transwell.net with the link text "wiki spamming bastards" will tag them appropriately in the eyes of Google or whether they'll just be glad of the extra pagerank. So, I haven't. But nevertheless, they or someone attempting to promote their services are indeed wiki spamming bastards, and though I obviously don't condone vigilante violence in any circumstances, I should probably advise any prospective customers of interseo.com or transwell.net who may have arrived here for whatever reason that the said interseo.com and transwell.net are risky people to do business with as sooner or later some more precipitate net citizen is going to e.g. firebomb their offices. And then what will happen to your "top ten google hit, guaranteed"? My advice is that instead of using interseo.com or transwell.net you find some company that's not associated with such disreputable practices as wiki spam.

Oh, that goes for navisolutions.com as well.

P.S. If you've had problems with these names turning up in inappropriate places on a wiki you read too, feel free to link to this article. The permanent URL is https://ww.telent.net/diary/2004/10/#31.46477

A couple of references have been made to the problem with cliki's#

Tue, 02 Nov 2004 01:16:54 +0000

A couple of references have been made to the problem with cliki's free-software-only stance. Let me explain why, in the time-honoured term, I consider that this is "a feature, not a bug".

This diary entry was lifted wholesale from an email I sent earlier this evening; I apologise if you have to sit through it more often than you wanted to

Two words: "network effects".

It's like this: the constituency CLiki aims to serve is people using the software it lists, not (except incidentally) the authors of that software. Five years ago, a vast amount of the commonly used downloadable software in CL had homebrew licences. Have a look around the AI repository. ILISP had a clause to prohibit selling it for money. mk-defsystem required anyone modifying it to submit the changes back to the authors before the modified version could be distributed. Now, you might say "so what?" and indeed these are on the face of it both reasonable positions to take. But the cumulative (possibly even combinatorial) effect of all these homebrew licenses was that anyone wanting to write software that builds on them had to spend an inordinate amount of time reading licences.

These days? Practically everything is PD or BSD- or MIT-licensed. Some stuff is LGPLed. A small amount is GPLed. For anything using a familiar licence, it takes about two minutes to determine whether it's OK for for a given purpose, and as a result we can all spend more time programming and less time reading legalese. This morning I used cl-ppcre to hack together a kludgey regex-based "bad words" filter for cliki in about twenty minutes. If Edi had written his own licence of approximately the same length as the BSD one, it'd have taken me that long just to read it. If I'd needed a couple of hours of head-scratching to work out whether making cliki (which has in the past been used for sites which could be described "commercial use") depend on cl-ppcre was legal, that's two hours I'd have probably spent badly reimplementing the appropriate bits of cl-ppcre instead.

(So, thank you, Edi)

Things might be different if my focus was more on authors and helping them make a buck or two - but honestly, there's not much I can do there anyway. If you're atttempting to make money from programmers you're probably deluded anyway - we've always been a really tough crowd to please. And if you're not selling to programmers, what exactly do you expect from a listing in a Lisp directory? Better to spend the marketing effort getting listed in a directory appropriate to your business domain.

Now, we can argue about some other points: for example

but I don't want people to think that my only reason for stating DFSG on CLiki was some "religious" viewpoint. I think that the community software scene around CL is a lot healthier these days than it was back in 2000 when CLiki started, and although the people we primarily must thank for this are its authors, I'd like to hope that CLiki played its own educational and publicity role in encouraging people to make their software legally compatible with each other.

My opinion. Yours may vary.

Lisp/Scheme#

Fri, 05 Nov 2004 10:14:50 +0000

Lisp/Scheme

Contributions welcome. The rules: (1) the two things to suffer aggregation must have superficially similar syntax and be in other respects utterly different, (2) the proponents of either or both are likely to consider the comparison unfair, (3) the judge's decision is final and no correspondence will be entered into unless I feel like it.

Note for SLIME 1.0 users about indentation: you need cl-indent#

Sat, 06 Nov 2004 16:18:34 +0000

Note for SLIME 1.0 users about indentation: you need cl-indent.

I don't see this anywhere obvious in the manual, but the much-vaunted (does that mean what I think it means?) autosensing macro indentation works in conjunction with cl-indent instead of replacing it. In particular it doesn't know how to indent anything in the COMMON-LISP package. For a long time I hadn't noticed this because I have piles of miscellaneous rubbish in my .emacs that go back years (maybe even decades) and cl-indent happened to be in there. When I set up my amd64 box I decided to decruftify a little and that was one of the casualties.

To fix: put this in your .emacs or wherever

;; (load "cl-indent") ; contrary to my earlier instruction, 
                      ; require doesn't work, and
                      ; load isn't needed
(setq lisp-indent-function 'common-lisp-indent-function)

Update: I'm not sure when or whether Planet Lisp reloads old diary#

Sat, 06 Nov 2004 20:13:41 +0000

Update: I'm not sure when or whether Planet Lisp reloads old diary entries, so if the previous entry still says to use require, don't. (a) it's unnecessary; (b) it doesn't work

Juho Snellman is clearly a better hacker than I am#

Mon, 08 Nov 2004 18:15:38 +0000

Juho Snellman is clearly a better hacker than I am. Of course, that's not an especially small group to be a member of, but his progress on SBCL AMD64 is nevertheless impressive.

Lately I have been struggling to remember anything I knew about matrices ten years ago - though perhaps I'd be better off learning the stuff I should have learnt about matrices ten years ago. Anyway, one likely effect is that I hope to be beefing up the cliki search engine a bit soon.

Why asdf has no support for building in a separate directory#

Mon, 08 Nov 2004 23:03:08 +0000

Why asdf has no support for building in a separate directory.

It's a fairly common question. People - quite legitimately - want to leave their source directories uncluttered and put the fasls somewhere else. Perhaps that somewhere is different per-implementation, too, so that they can test the same source tree with different lisps.

So the answer is: because I'm lazy - so lazy that I not only haven't implemented the feature myself, but have failed even to merge patches when people send them to me. No, but wait, there's a little more to it than that.

There are two points: one's important and the other isn't, really. Let's get the less interesting one out of the way first.

it goes like this: asdf is supposedly a general system that can describe arbitrary operations, so why is compile-op such a special case that it gets its own special option to say where its output files go? Perhaps we should add similar options for make-manual-op as well, to say where the dvi and postscript files go. (Please note: I just made up the name of that operation: if you believe it exists anywhere in general usage, that just goes to show that it's plausible).

This is not such a convincing argument, because even if asdf were as much as 419% more general than it already is, most of what people would actually use it for would still be compiling Lisp systems, so there's a pretty good argument we should cater to the usual case.

Our backup argument is stronger, and it's this: most of the asdf systems you're using are for other people's software. (This is already true for me; if isn't yet for you, our efforts to take over the world with free common lisp just haven't impacted on you yet. Please take a ticket and await the revolution). Once you start editing files that are part of other people's software, you will run into conflicts: you'll have to eyeball changes to merge them when the author introduces new files or otherwise changes his copy of the file.

So, for each possible customization we could add, the question is this: who needs to make this decision? If it's something the system author should expect to change (e.g. the files that comprise the system, or the dependencies between them) then let's add a defsystem option. If it's something that the user or the local site admin (or even the distro maintainer) wants to do, then it needs to be achievable without editing the asd file.

Winding up, then: it is my contention that separate-directories-for-fasls are a per-user thing, not a per-system thing. If you want your foobar system to use separate directories for CLISP and ACL, you will probbaly want the split-sequence, cl-ppcre, mel-base, memoize, diff and s-xml systems it depends on to do likewise. And you want them to do so without having to edit all of their system files by hand.

It sounds plausible, anyway. But you can continue to claim it's laziness if that makes you feel better.

What a fun day I've had#

Tue, 16 Nov 2004 19:13:32 +0000

What a fun day I've had.

  1. Perl's global destructors coexist really badly with fork(), because they run when the child exits as well as when the parent exits. This is a problem when you have e.g. DBI database handles open in the parent and fork off a process to do something transient: when it's done, it closes them for you. Even if your child does abolutely nothing involving databases in any way (let's say, for example, it's part of an unrelated library), the approved workaround is apparently for it to set $dbh->{InactiveClose}=1 for every database handle in the app. How it gets to know what all those handles are, I don't know.

    What depresses me is that this problem comes up repeatedly on the DBI mailing lists and I can't see why it should not that hard to fix. (1) Decree that a child may not use database handles which were opened by the parent (it's already dodgy behaviour as it doesn't work in e.g. DBD::Oracle) (2) enforce this by storing the pid of the process that called connect() in the database handle, and checking it on subsequent accesses, (3) in the DESTROY method, skip the destruction if we didn't do the creation.

  2. SOAP and SOAP::Lite entirely reinforce my belief that any variation on "Simple" or "Lightweight" in the name of a protocol, library or other software product is to be be treated with the same suspicion as "People's" or "Democratic" in the name of a country. What addlewitted crackpate came up with WSDL?

I was going to write a whole lot more in this vein, but you'd find it as boring to read as I found it infuriating to, er, find.

In other news, though, (SBCL|telent|portable) CLX 0.6 released.

texinfo.lisp, albeit not in any particularly useful form yet#

Thu, 18 Nov 2004 01:41:48 +0000

  1. <END-OF-FILE {9D1AE91}> CL-USER> (describe (gethash "Error handling" all-nodes))
  2. <INFO-NODE {9CDD449}> is an instance of class #<STANDARD-CLASS INFO-NODE>. The following slots have :INSTANCE allocation: BODY ((("?" "chapter")) "Error handling " (("?" "findex")) "SYSTEM-DEFINITION-ERROR " (("?" "findex")) "OPERATION-ERROR

It is an error to define a system incorrectly: an implementation may detect this and signal a generalised instance of " ((:CODE "SYSTEM-DEFINITION-ERROR")) ".

Operations may go wrong (for example when source files contain errors). These are signalled using generalised instances of " ((:CODE "OPERATION-ERROR")) ".

") MENU "unbound" UP "Top" PREV "The object model of asdf" NEXT "Compilation error and warning handling" NAME "Error handling" ; No value

Still have to do conditionals, macro definition and alias stuff, plus there's a ton of work left adding definitions for uninteresting commands, then I need to think of some way to get the data out into one or more useful formats. Said formats will almost certainly include HTML (yes, I know about texi2html; no, it does not produce the kind of HTML that I want), and I may even do a CLIM backend too.

Pet peeve (skating-related): use of the phrase#

Mon, 22 Nov 2004 23:58:15 +0000

Pet peeve (skating-related): use of the phrase "concrete jungle". It's not a jungle and shares very few characteristics with same, and it's mostly not even concrete. It's lazy writing. Stop it.

(If you thought I was going to talk about the rash of legal threats that seem to be buzzing around the London skating scene lately, well, you're wrong. Apart from anything else I am still not fully unhalt, and that makes me cranky, easily irritated, and prone to spend time picking fights in online forums, none of which contributes to sensible and dispassionate discussion. So, I'll carry on annoying people on #lisp instead)

I've added a couple of detachtty patches as bugs in the Debian BTS#

Tue, 23 Nov 2004 15:25:19 +0000

I've added a couple of detachtty patches as bugs in the Debian BTS. Both are proposed to solve similar problems, which a third person has now also asked about, so as detachtty is a debian native package (even though I'm not an official debian developer) it seems easiest to put them up there until I look at them. Then at least anyone else who wants this functionality doesn't have to go ahead and develop it independently in a vacuum while I sit around being lazy.

"I'm an Emperor, get me out of here"#

Thu, 25 Nov 2004 16:35:12 +0000

"I'm an Emperor, get me out of here".

More work on-and-off on this texinfo stuff, mostly in#

Thu, 25 Nov 2004 21:44:32 +0000

More work on-and-off on this texinfo stuff, mostly in laptop-battery-sized chunks in Borders. I was doing quite well, too, until I found an open (by design) wireless AP accessible from the Borders cafe on Oxford St, but now I find I'm still within reach of the net I think I'm going to go and read a book instead.

What did you want to know? It kinda sorta works for producing grotty HTML from the texinfo I happen to have lying around, but there are big chunks still to do before it's going to be any use to anyone, and it's entirely non-obvious to me how it's going to be usefully customised. There's a TRANSLATE-ELEMENT gf specialised on a OUTPUT-TRANSLATOR, so you can always subclass my HTML-TRANSLATOR with your SPIFFY-HTML-TRANSLATOR, but it remains to be seen whether that's going to be any actual use. This is very definitely written with that particular variety of iterative design known as "no design", which is fun but whether it turns out to be any use I can't say yet.

I guess I should at least add support for @menu and for the up/down/next/prev links.