Jolie Rouge

all ur parentheses Я belong to me

Common Lisp: The perfect language, implemented by Assholes.

Few words can describe the sheer frustration of coming to Common Lisp from not merely an imperative background, but a background of modern languages. Everything from the documentation to implementation details have the stench of old and crusty all over it. If you aren’t dealing with the well meant condescension of Lisp gurus who seem have never actually had to write an application for end-users (and why would they, no one writes end-user applications in Lisp) then you’re dealing with documentation that was pretty much a copy and paste from the implementer’s specification created by a bureaucratic standards organization.

How do you explain to someone that an ANSI Standard document is not documentation.

You can’t, because only an asshole would think that. And you can’t explain pragmatism to an asshole.

Your language is not a race, it’s a game

An issue with many languages, and especially Lispers, is that they treat programming in Lisp a bit like you would treat a sports competition, or a chess match. To them, if you “haven’t done the prep” you deserve to lose.

String Recipes


In Common Lisp this function is called subseq, in other languages it is usually called substr.

(subseq string start end)

Dr. Strangelisp, or How I learned to stop worrying and love the parentheses

The issue with Common Lisp for imperative language programmers is that Lisp has no structure around which to orient oneself. Here I mean structure in the sense of an imperative programming language. There are a lot of symbols in imperative languages that are used to orient you, like guide rails. To an imperative programmer, Lisp leaves them awash in a sea of parentheses, they don’t see the structure that is in fact there.

(defun hello-world () 
    (print "Hello World"))

Developers need to knock this the fuck off

Windows is not Linux. Do not ever, EVER, use Windows specific functions to detect safe places to put configuration files. There is NO DIRECT PATH to AppData. It’s never where you put a config file. It is a stupid location for cached data, or a database people aren’t supposed to touch. Even then, it’s useless.

If your application has an RC file that’s supposed to go to /home/user/.myapprc, don’t assume that you can stick that into any old directory in Windows, you fucking can’t. It causes so many headaches. Just chop off the fucking ‘.’ and stick it into the same fucking directory as the .exe of your app. Don’t get fancy. Don’t get cute.

Drives me up the wall.

DON’T PUT IT IN THE HOME DIRECTORY. Windows users don’t have homes. It’s a stupid name for a superfluous concept. They have Desktops, Documents, Pictures, and so on. There’s not even an obvious way to get to your home directory in windows! There’s no “Home” link. You have to click a special dropdown, and then find it in a context menu. FUCK.

Lua and “purely” functional object orientation

So here’s a fun little snippet of lua that is functional but also object oriented (the function maintains state).

function CreateInstance()
    local self = {}
    return function(msg)
        if msg == "setMessage" then