1ove’s not Time’s n00b: leet mappings for JanusNode
Let me not to teh m4rri4ge of true minds
4dmit impediments. Love is not love
Which 4173rs wh3n i7 4173r47ion finds,
Or 83nds wi7h 73h r3mov3r 7o r3mov3:
O, no! it is /-\ n ever-fixt /\/\ /-\ rk,
T|-| at |_ () () k5 () n te/\/\ |* e5 t5 and i5 ne\/ e|2 5 |-| aken;
| t | 5 t[- h 5 tar t() [- v[- ry wa/\/ |) [- r| /\/ g bark,
\/\/ |-| () 5 [- \/\/ () |2 -|- |-| ’5 (_) /\/ |< /\/ () \/\/ /\/ , /-\ |_ -|- |-| () (_) (_+ |-| |-| | 5 |-| [- | (_+ |-| -|- |3 [- -|- /-\ |< [- /\/
1ove's not Time's n00b, t#oug# rosy 1ips 4nd (#eeks
Wit#in #is b3nding si(kl3's (ompass (om3;
L0ve 4lter5 n0t w!t# #!5 8r!ef #0ur5 4nd week5,
Bu7 be4rs !7 0u7 even 70 7e# edge 0f d00m.
!f 7#!5 83 3rr0r 4nd up0n m3 pr0v'd,
! n3v3r wr!7, n0r n0 m4n 3v3r 10v'd. (LOL)
Jan 3, 2011, Shakespearean Sonnet transformed by various types of leet mappings. Generator: JanusNode.
Yeah, I’ve been wanting to fool around with JanusNode’s mappings capabilities for a while. This is the functionality that lets you write simple substring replacements. So let’s say you had a poem and you wanted there to be a 20% chance that all instances of substring “criminal” would be changed to “crook”, you’d just write a file that contained:
and put it in the JanusNode mappings directory. Then next time you click “Text Mappings” you’ll see the file name there.
JanusNode provides a couple of example mappings, but I was a little disappointed by the default leet mapping file. After looking at the comments of the mapping file (and the snarky article it refers to) I can see why:
; Leetspeak is a silly hacker’s spelling.
; It is not absolutely fixed, but this gets the essence of it.
; For info: http://www.straightdope.com/columns/030110.html
Now I love Janus like he was my wise and crazy uncle, but his attitude towards leet is not the same as mine. Sure, leet is a little embarassing and usually used with irony or at least a little self-consciousness, but it’s also one of those youthful indiscretions that it is a pleasure to occasionally honor. Even for those of us kickin’ the wrong side of the mid-life crisis. And who among us, on Flash boards or internet games, does not occasionally stoop to abbreviations or grammatical infelicities? Yeah, that’s what I thought.
Anyways, looking through the wikipedia article on leet (the Jargon File talks about it in a chapter on “Crackers, Phreaks, and Lamers” because, you know, the Jargon File people are REAL hackers unlike the rest of us!) I saw a couple different approaches blended together, which I broke into a couple different JanusNode mapping files:
- “charfont” transforms each character into (mostly) 1 character in leet; for example, e to 3. The file has a transformation for every character, but some of them aren’t that good so I commented them out. “charfont-min” provides a 10% chance that each transformation will happen; “charfont-max” provides a 100% chance that each transformation will happen.
- “bigfont” transforms each character into multi-character leet characters; for example “m” to “/\/\”. “bigfont-min” provides a 10% chance that each transformation will happen, “bigfont-max” provides a 100% chance that each transformation will happen.
- “word replacement” alters entire words to leet. For example, “fool” to “n00b” above. It also does some simple suffix manipulations, such as “-xxor”.
- “n00b interjections” drops in some exclamations such as “FAIL!” and “W00T!”
So, ok, in the poem above I took a Shakespearean sonnet and ran it through these transformations.
- First I ran the word replacement, which changed things like “the” to “teh”.
- Then I ran the first verse through charfont-min.
- For the second verse, I ran the first line through bigfont-min once, the second line through bigfont-min twice (so there were two 10% chances that each transformation would occur, see?), the third line through bigfont-min three times, and the fourth line through bigfont-max.
- For the third verse, I ran the first line through charfont-min once, the second line through charfont-min twice, the third line through charfont-min three times, and the fourth line through charfont-max.
- The last couple I ran through charfont-max, then ran n00b-interjections once.
btw, incrementally performing transformations as in verses 2 and 3 is method 5465a1fd-fdd2-4c65-9e0b-0d9fa94bf932 (incremental transformations).
If I was really punk, I’d find a leet corpus and learn transformations from that.
There was this weird effect whenever I used Random(interjection) that it always added a close-paren even if none was specified; I got around this by adding an initial open-paren – not sure if this is a Windows-specific problem that will look weird on Macs, or a general bug in JanusNode.
Anyways, my JanusNode leet mapping files are in the usual place, in the for-Mappings directory, natch. later!