Place to hack

July 28, 2007

Not sure who started this either, but this is my place to hack. I must admit that Sebas’s place looks way cooler.

Place to hack

The picture was made using my shiny new phone (I have the dark grey version), which I got this wednesday. I already spotted some flaws in it (you can’t pause/resume music playback while in a dialog), but its hi-res display, big keyboard and more up-to-date software make it way more comfortable to work with than my old Nokia 3310. € 171,50 including shipment on Typhone.



February 6, 2007

Besides the more well-known Das Keyboard, there’s also the less well-known HHKB. It’s about the same price, but it’s way cooler, handier. I wonder why the ‘über-keyboard’ is so often the unprinted keyboard instead of the elegant one, maybe it’s just the website looks.
HHKB photograph

(I guess I’d better just be nice to read instead of waiting for some Paul Graham-like essay just to slip into my head. That apparently doesn’t work for me. Well, one has to try…)

Evening-filling humor

December 5, 2006


Click the picture for more. This guy’s good on average..

November 30, 2006

$ cat foo.qck
(print "Hello, world!")
M-x gen-foo
M-! parrot /tmp/quackfoo.pir
Hello, world!
$ cat /tmp/quackfoo.pir
# -*- mode: pir -*-
# auto-generated PIR from Quack Lisp code.
# For more info, see

include "quacklib.pir"

#.namespace ["quack"]

.sub main :main :lex
  $P1 = find_global "PRINT"
  $P2 = new "LispString"
  $P2 = "Hello, world!"
  $P3 = new FixedPMCArray
  # QAST tail call
  .return $P1($P2, $P3 :flat)

# Local Variables:
# compile-command: "parrot quackfoo.pir"
# End:


Runtime macroexpansion is evil, indeed

October 16, 2006

I’m trying to implement an Arc-like Lisp dialect, and my code currently runs in an interpreter run within an interpreter (only made to bootstrap the Parrot code). I just finished implementing cond (I’m not implementing if in terms of cond as PG may do, the other way around makes the code simpler), and all the code that used cond was getting rather slow. Not strange, really, as I had been expanding macros at runtime. (It’s the easiest way, they are first-class objects like in Arc.) So, I made some assumptions for the bootstrapping code to allow for a simple ‘compile-time’ (well, it’s between read-time and eval-time) macroexpander. Running it on a part of the macroexpander itself took some time and memory:

code screenshot with timing

Next thing to do: make the interpreters cons less.

Parrot gets cookie

September 17, 2006

Before I encountered Lisp, I had been using Perl for a while. Nowadays I’m mostly toying with an unfinished unofficial Arc implementation. Surprisingly the two got together: Parrot, the expected Perl 6 virtual machine, is made to support other languages as well. There are already projects for Parrot implementations of APL, Basic, Befunge, Brainfuck, CL and dotnet, to name a few. The list includes a mostly working Python implementation.

Another plus: it uses continuations everywhere (not what you’d expect be necessary with Perl), so it’s ideal for a Lisp dialect host. You can use CPAN, wxPerl, SDL,, interact with Perl and Python, and so on. There’s just one implementation, targeted at portability, so you don’t have to bother with your favorite CL implementation not supporting platforms.. Perfect. I love it.

Caught by a CrackerTracker

September 8, 2006

Our friends group has this forum. It’s really useful for chatting about topics that concern the whole group and multicasting (birthday) invitations. It is rented at some host that probably decided to get rid of all phpbb insecurities at once, and installed a filter. It now features a really impressive button showing a key and ‘ctracker’ on it. After that, there is (at story-time) ‘blocked 33 attacks’.

So I really wanted to know what counted as an attack. Apparently, POSTing a simple SQL injection query didn’t trigger it. Or anything I’d try to send it. So, I went to, who made the tool. According to the GPLv1’d source (well, it didn’t even mention a version number), it triggers when you put things like ‘UPDATE FROM’, ‘.htaccess’, ‘chr(‘, or ‘php_’ in the query string (the url part after a question mark). Which makes me think, is this real security, checking only the query string?

I mean, 80% of the places in phpbb where you can submit info to PHP use POST.. If I went for security, I’d seek for leaks there.. I’d bet adding this CrackerTracker added no security to the forum; it did make the host look stupid. I mean, just me posting a ‘don’t click here’ link to search.php?php_is_nice shocked users, who got accused of something completely innocent (besides spoiling logs).

They would get a simple page labelled ‘security alert’ in red, telling them that they tried to attack the forum, and that they had been logged. And, they increased the ‘hit counter’ on the way.. :-)

Unexpectedly, others (non-friends) also followed the link. En masse. In less than 2 days, the counter increased by over 1100. Sorry, host, didn’t mean to help you brag about your safety..


  • The link is not to our forum.
  • It may be that WordPress visited the link itself a couple of times, to check if it really existed. So, I already substracted 20 clicks from 1,1E2, resulting in 1,1E2. For the convenience of otherwise confused readers, I wrote down 1100, which is the same value but with a different uncertainty. (They still nail me at school if I write down 1080 in a test!)

Sunshine in Holland

September 6, 2006

After some period of rain and cold, the sun shines again in Holland. And quite well too, KNMI say today’s max is 27 °C. It used to be like 13 degrees, almost no sunshine, and plenty of water from the skies. For example, a few days ago I was soaking wet after cycling 200 meters homewards. Lucky there was a bus stop there.

I never expected it to get hot any more this year. We already had a heat wave this year, and temperatures quickly went down after that, just when my holiday was planned. Ah, well, at least we had a roof. And these days I’m in school or at home, so I keep dry either way.

First post

August 30, 2006

As you’d guess, this is the first post in my brand new, shiny, impressive-to-me ‘blog’. Actually, I was just in need of a place to share my ideas with the world. And because I’m kinda in-to Paul Graham and ‘his’ startups, I went to Infogami a long time ago, and I liked it. This was the ‘good world’: you could have your little site / wiki / blog, for free, easy, simple (it used Markdown in addition to raw HTML), powerful.

I started to create pages to tell the world something about myself. But as I created more, I felt the need for a blog-like structure, so readers would notice if I made a new page.

Unfortunately, Infogami isn’t very good for blogging. When you want to blog, you want people to be able to respond to your posts. That’s no problem at all in Infogami, just click the ‘comments’ button in the ‘everyone’ permissions row. But its simplicity paid off there: you then have comments enabled for all pages. And as it doesn’t feature comment moderation (noticed that spam in Infogami?) and I’m too lazy too check all pages for spam bots, it’s unsuitable for blogging. I’m not a fan of making people log in (and probably register first!), so that’s not an option either, although spam bots would probably just get a Hotmail account or so.

That’s why I went to find a good blog host. A visit to Wikipedia (yes, I’m one of those lame sheeps that only checks Wikipedia) redirected me to some comparison of blog software. It left me with two well-known blog ‘types’ to try: Blogger (owned by gigant Google), and WordPress. You know, WordPress, the software all those standard-but-nice-looking blogs have.

So I went to check it out, and it pleases me. It has features I couldn’t even imagine, and no ads at all! I mean, the latter suits me perfectly, I detest good-old Geocities banners too much to ever accept any on my site again. I would take any alternative, if there was one. (That’s a reason why I use Thunderbird instead of GMail.) For honesty, I also went to check out Blogger, but when it mentioned ads in the Quick Tour, I returned to my brand new WordPress blog.

And here I am, with my WordPress blog. Impressed by its features, I will now simply try to blog, and get productive with it.