Tuesday, August 30, 2011

Ediware moving to github

I have been more or less the primary maintainer for the Hunchentoot web server written in Common Lisp for several years now. Its primary Author, Edi Weitz, has been doing Lispworks related work and release engineering, but he now intends to step down from that role, too.

In order to open up development and encourage hacking and extending Hunchentoot, we have decided to move the development from the aging BKNR Subversion repository to github. That will make it easier to fork new versions, integrate patches, discuss code changes and track issues.

Together with Hunchentoot, a bunch of other libraries written by Edi Weitz have been moved to the edicl organization on github. The list is not complete and currently consists of libraries that I have used or hacked in the past. Feel free to let us know if you'd like some other of Edi's libraries to be relocated.

Happy hacking!

Thursday, May 12, 2011

Orphaned (?) projects on common-lisp.net

common-lisp.net has moved to a new (virtual) box and in the process, we are cleaning up a little. One particular thing came to my attention: The maintainers of a number of projects can no longer be reached under the email address that they have registered with, so moderation requests bounce (to me). Either these projects have gone stale (even the maintainer lost interest), it is an oversight, or it is just an error that should be fixed. So, please check the list below and let me (hans.huebner@gmail.com) know if you know how to reach the maintainer(s). Projects that we don't get any replies for will eventually have their mailing lists be closed. Thank you for your help!

List of projects:

  • cffi
  • cl-magick
  • cl-match
  • cl-mpd
  • cl-soap
  • cl-stm
  • ecl
  • elephant
  • gecol
  • morphologie

Tuesday, October 19, 2010

Raumpflege

Sollte jemand sich in Berlin mit dem Gedanken tragen, das Unternehmen "Bärliner Putzteufel" beauftragen zu wollen, so seid gewarnt: Die Leistungsbereitschaft der Mitarbeiter ist gering, aber im Stellen hoher Rechnungen ist der Inhaber Volker Brunemann sehr beflissen. Von Freundlichkeit und Entgegenkommen bei Kundenunzufriedenheit kann man nur träumen. Ich kann zwar kein anderes Reinigungsunternehmen empfehlen, aber die "Bärliner Putzteufel" sind es sicher nicht. Ja, klar. Schon der Name hätte mich skeptisch machen sollen.

Monday, October 11, 2010

Postbank saugt

Ich bin Business-Kunde bei der Postbank, und auf meiner letzten Monatsabrechnung fand ich einen Posten "Zinsen und Gebühren" in Höhe von 66 Euro. Ich dachte mir: "Das ist ja viel", und schrieb eine (autorisierte und so weiter) Email an die Postbank mit der Bitte, mir diesen Posten doch mal aufzuschlüsseln. Als ich nach 10 Tagen noch keine Antwort hatte, habe ich mal nachgefragt. Einen Tag später erhielt ich die Antwort, daß meine Frage nicht so ohne weiteres beantwortet werden könne, und sie daher an die "Fachabteilung" zur Bearbeitung weiter geleitet wurde. Ich glaube, ich brauche ganz schnell eine andere Bank.

Thursday, September 2, 2010

Quicklisp - The upcoming solution to Common Lisp's "library problem"

We're all tired of hearing that Common Lisp is all nice, but it has a library problem. True, many of the open source libraries written in Common Lisp are half-baked, incomplete, unmaintained and tasteless. But this is true with libraries in all languages, so that can't be the real problem. The real problem, as I see it, is that until now, there was no universally good way of installing a library and all of its dependencies.

The existing, widely deployed solutions (asdf-install and clbuild) require external tools to work, depend on the availability of diverse servers in the internet, and do not have something like a central maintainer who ensures that things are always in basically working order. Also, these solutions are rather unportable, as they depend on external tools and a Unixish environment which is not available everywhere.

My personal solution to this problem, until now, was to have a Subversion repository that contains all the libraries that any of my projects need. Some of these came from release tarballs, some from other revision control repositories, and maintenance was manual. Whenever I started a new project, I brought some of those libraries up to date, coped with any (new) dependencies, lost backwards compatibility with my older projects etc. This kind of sucked, but it had the beauty that both development and deployment ended up being relatively easy. All that was required was a svn checkout from my repository, and I was all set on a new machine.

Recently, Zach Beane was fed up enough to do something about this: He created Quicklisp, a self-contained, centrally managed, cloud hosted Lisp library system which aims to run everywhere and provide users with a one-stop solution for the "library problem". Quicklisp is in an early alpha stage, but having tried it, I must say that I am pleased and impressed. Finally, Common Lisp can also become a glue language like Python and Perl.

I tried Quicklisp today because Twitter has notified me that basic http authentication for applications will no longer be supported. Instead, one is now supposed to use OAuth to authenticate requests sent to Twitter. This required my reaction.

About two years ago, I have written a small gateway program that forwards new postings to Planet Lisp to Twitter. At the time, I was rather frustrated with Common Lisp and thus took the gateway as an opportunity to try Clojure. Today, I looked at the source of the gateway again to find out what it would take to make it use OAuth instead of basic http authentication. As the gateway was the only program I have written in Clojure so far, and I was not really that eager to extend it to OAuth. I tried for a few minutes, but found that my old program did not run with the current Clojure version right away, so I would have to basically start setting up a Clojure development environment from scratch in order to be able to use an existing, open source OAuth library.

Instead, I thought I'd give Quicklisp a spin. After all, parsing some XML and sending HTTP requests are no big deal in Common Lisp either, and an OAuth library is available, too. With Quicklisp, all it should take was write some glue code to connect DRAKMA, CXML, cl-ppcre and cl-oauth. Installing the bunch should be a matter of loading quicklisp.lisp, then typing (ql:quickload `("drakma" "cxml" "cl-ppcre" "cl-oauth")) and watching the show scroll by.

And hey, it worked right away. I even embedded a web server in the gateway application so that it can be monitored by the system status monitors provided by my hosting provider. All in all, rewriting the thing in Common Lisp and deploying it took no longer than two hours, and the source is not significantly longer than the Clojure version either. Furthermore, the new gateway properly deals with non-ASCII characters. Embarrassingly, the Clojure gateway was buggy in that respect and never properly twittered the titles of my own blog posts. Thanks, Zach!

Monday, June 28, 2010

By all means, choose a distinct name for your program

"I love screen". "screen?", you ask, "do you love your screen or screen in general, like in sun screen?". And right you are, screen is not a name, it is not even a very distinctive noun as it is so ambiguous. So, when I say "I love screen", I'm talking about the program that Oliver Laumann wrote like 23 years ago and that is probably the open source program that I have used for the longest time (basically, since it was first released).

Now, as much as I love screen, I hate its name. I guess that Oliver and his room mate pondered how to name the program for a while, maybe even for a new hours or days, and then went "Damn fuck it, we're just unimaginative hacker dudes, round corners are not yet invented, creative design folks avoid us like the plague (and we like it that way), let's call the darn thing screen and go on hacking."

DON'T DO THAT, SERIOUSLY

Whatever name you choose for your program, make sure that it is not a word. If you absolutely want to use real words, choose at least two of them that never occur together anywhere else. Better yet, invent a word. Use Google to validate your name. Use something stupid. Get on with it.

I'm writing this because the poor choice of naming for screen bites me every day. screen has a serious bug. Sometimes, one of the screens (sic!) hangs. It then never recovers, and once one of the screens (yaaah!) hangs, it does not take long until the whole session ceases to work. In the end, even trying to reattach the session hangs. I think I do have basic Google skills, but so far I have failed to find anyone having the same problem. I can't imagine that I would be the only person to have this problem, but the name of the program makes it impossible to find that person.

You are making the life of your users much much easier if you give your programs names that are distinctive and unique. Yes, Ryan Gahl and Aycan Gulez, I'm looking at you today while I write this. :)

Thursday, June 17, 2010

How to convert your old-style Symbolics keyboard to USB

Peter got in touch with me because he tried to follow my instructions how to convert a Symbolics keyboard to USB with his old-style keyboard and he failed. He assumed, and that was what I would have assumed, that the color coding of the internal cabling of the old and new keyboards would match, but they don't. Here is a table that shows the pinout for both keyboard types:

New Style Old Style Function Teensy
Pin
Pin# Color Pin# Color
1 blue 8 white GND GND
2 yellow black not connected
3 green 2 red 5V 5V
4 red 3 green DIN D4
5 black 1 yellow CLK D5
6 white 5 blue CLR D6