Jolie Rouge

all ur parentheses Я belong to me

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

Implementing cons, car, and cdr in Lua.

Lua is by far the best scripting language I’ve ever had the pleasure of using. It’s joy to embed, it’s fun to use, and here’s the kicker: It’s more like Lisp/Scheme than you think. I recently saw an absolutely crazy implementation of linked lists, far crazier than the standard Lua implementation. Basically, implementing cons, car, and cdr gets us the linked list for free. The table based implementation may be faster. Note that this idea comes right out of the MIT Scheme lectures, and I believe it’s also in SICP.

function cons(a,b)
    return function (p)
        if p == 1 then
            return a

UPS Shipping XML API is shit

Well, I really thought I had seen the worst SOAP API with eBay Trading, but that API is like heaven compared to the terse, complicated, and pointlessly documented UPS API. The Developer Docs look like the person was getting paid by the word, if you take my meaning. That is, they’re verbose, but useless. Everything is broken down into small parts, with copious PDFs and Introductions.

Then you’ll get this, alot: Error Code: 1002 – The XML Document is well formed, but this document is invalid.

Oh really? How? Where’s the mistake? I haven’t found it yet and I’ve gone line by line to compare the differences between a successful call and a failed call.

I’ll update this post if I ever figure it out…

Hitman 2016 – Colorado – Shittiest Episode Ever

I simply hated this one. The dreary level design was complemented by excessive numbers of guards that were no fun to subdue. I played it once and have never been back. I won’t even do the bookkeeper, because he’s there. The thing I didn’t like was the big reveal at the end of Colorado. Surprise: It’s his clone/brother/best friend trope who somehow magically took a different path and is all knowing, all seeing, and able to orchestrate the whole shebang. If it doesn’t turn out that there’s someone behind him I’ll be greatly disappointed. To be fair, this level of writing (B Movie Quality) is Oscar worthy in a game.

The dialogue and plot, for a game, is absolutely off the charts. Nevertheless, it would have been nice for them not to go “World Conspiracy”, it’s hard to find anywhere to go after that, except space aliens. Come to think of it, Agent 47, cryogenically frozen for hundreds of years, only to wake up in a highly technical future with space aliens? Fuck – I should write this down.

Hitman 2016 – Sapienza


At first I didn’t like Sapienza as a level, it seemed on one hand too easy to kill and on the other too difficult to find anything. As long as you followed the simple assisted assassination plan everything went smoothly, but any deviation left you unsure how to proceed. The main issue I have is the dongle. It takes ages to get it, and destroying the virus any other way is difficult, or at least I’ve never managed it. The trick with Sapienza: You have to put in the time learning the level. Only when you have complete mastery of the town, mansion, and underground facility will unique opportunities show up. There are many ways to kill your targets. One obvious way is to give De Santis the DNA sample and then run up to the attic and drop a propane tank down the floo, but a less obvious one is to carry the propane tank down to her office and shoot it while she’s at her desk.

What I particularly loved about Sapienza were the opportunities of Silent Assassin. There are tons of non-standard ways to kill your targets, silently. Getting them alone is easy. Silvio with the tape, and De Santis with the golf pro.

The universal down side of Hitman 2016 is the time it takes. Get ready to spend hours playing this game. It really becomes addictive. Once you’re done with targets, you can move on to Escalations, or just plain Contracts. Sapienza has one of the most difficult to engineer escalations, the Lyndon Gyration, but once you grok the trick (involving a wrench and oil leaks), it becomes a walk in the park, but one that takes ages on account of extremely long NPC loops.