May 30, 2007

Who is Maciej?

kumkapi fish market
Via britta.

Maciej is looking for a job (or just some office space).

Posted by jjwiseman at 09:37 AM | Comments (0) | TrackBack

May 28, 2007

DIY Drones

B-25 model in a wind tunnel
October 1942. Experimental staff at the North American Aviation plant in Ingle- wood, Calif., observing wind tunnel tests on a model of the B-25 ("Billy Mitchell") bomber. Via shorpy.

I believe Chris Anderson's new DIY Drones is the first site whose entire focus is amateur UAVs.

There are several RC plane and helicopter sites with UAV discussion areas, but they tend to be low-traffic and low-tech. They sometimes have interesting, worthwhile posts, but those old-style web-based RSS-less discussion boards are not charming and are basically unusable as far as I'm concerned. 1996 called—it wants its attention model back (I'm looking directly into your eyes, DARPA).

Posted by jjwiseman at 03:25 PM | Comments (0) | TrackBack


try nodebox

Austin King is looking for good lisp tools for drawing and generating art.

Posted by jjwiseman at 03:01 PM | Comments (0) | TrackBack

May 26, 2007

Two New Favorite Words

animal skeleton in post-fire griffith park
From colin.brown's After the Griffith Park Fire photo set. Also.

Isolex, a line connecting points of same vocabulary usage.

Phonotactics, a branch of phonology that deals with restrictions in a language on the permissible combinations of phonemes. Phonotactics defines permissible syllable structure, consonant clusters, and vowel sequences by means of phonotactical constraints.

Posted by jjwiseman at 03:31 PM | Comments (0) | TrackBack

May 24, 2007


RID report screenshot

I fancied up the RID code a little to generate HTML and to list the words in each category, improve tokenization, and make it easy to use different dictionaries or add exclusion lists from the command line: The new

Then I analyzed 100 days worth of logs from #lisp and #ruby-lang:

16:~/src/RID wiseman$ ./ lisp 100 | \
> ./ -h -t "RID Analysis of 100 Days of #lisp" > lisp-rid.html
17:~/src/RID wiseman$ ./ ruby-lang 100 | \
> ./ -h -t "RID Analysis of 100 Days of #ruby-lang" > ruby-lang-rid.html

Also, Matt Hower has a Ruby version of RID (“A strange man had approached and said, ‘I'm not Slavic.’ Many paranoids begin a conversation with such assertions, vitally important to them, but sounding a bit strange to the rest of us.”).

Posted by jjwiseman at 01:20 PM | Comments (0) | TrackBack

May 21, 2007

The Regressive Imagery Dictionary


The Regressive Imagery Dictionary (RID) is a coding scheme for text analysis that is designed to measure “primordial” and conceptual content. Primordial thought is the kind of free-form, associative thinking involved in fantasy and dreams. Like Freud's id, I guess. Conceptual (or secondary) thought is logical, reality-based and focused on problem solving.

RID contains about 3,000 words grouped into categories that are themselves classified as primary, secondary, and emotional. A piece of text is classified by what percentage of its words fall into each category.

I'm skeptical, but it seemed like it might be fun. And some people do think it's accurate and useful:

Detailed evidence concerning the reliability and validity of the Regressive Imagery Dictionary is reported elsewhere (Martindale, 1975, 1990). Evidence for the construct validity of primordial vs. conceptual content comes from studies where the measure has behaved as theoretically predicted: Significantly more primordial content has been found in the poetry of poets who exhibit signs of psychopathology than in that of poets who exhibit no such signs (Martindale, 1975). There is also more primordial content in the fantasy stories of creative as opposed to uncreative subjects (Martindale & Dailey, 1996), in psychoanalytic sessions marked by therapeutic "work" as opposed to those marked by resistance and defensiveness (Reynes, Martindale & Dahl, 1984), and in sentences containing verbal tics as opposed to asymptomatic sentences (Martindale, 1977). A cross-cultural study of folktales from forty-five preliterate societies revealed, as predicted from the "primitive mentality" hypothesis of Lévy-Bruhl (1910) and Werner (1948), that amount of primary process content in folktales is negatively related to the degree of sociocultural complexity of the societies that produced them (Martindale, 1976). Martindale and Fischer (1977) found that psilocybin (a drug that has about the same effect as LSD) increases the amount of primordial content in written stories. Marijuana has a similar effect (West et al., 1983). Research has also revealed more primordial content in verbal productions of younger children as compared with older children (West, Martindale, & Sutton-Smith, 1985) and of schizophrenic subjects as compared with control subjects (West & Martindale, 1988). It shows the pattern expected for historical trends in primordial content in Martindale's (1990) theory of literarary evolution. Thus, the Regressive Imagery Dictionary does seem to yield a valid index of primordial or dedifferentiated thought in a variety of contexts in which the measure varies as is theoretically expected.

Erik Frey has code for analyzing LiveJournal posts with RID. It even compares your scores to the averages of everyone who uses his code. But it wasn't in a form that was easy for me to apply to arbitrary text, so I wrote my own RID code. is my Python implementation. It reads text from stdin and prints its analysis to stdout. It uses the English dictionary from Kovach Computing Services. If you want to download or create a dictionary for other languages, it's pretty easy to modify the code to use any dictionary you choose (that's in the proper format).

About the only interesting thing in the code is that it uses a discrimination tree to look up word categories. This was 100x faster than doing linear search with regular expressions.

And now for some armchair psychoanalysis. First up, the second debate between George Bush and Al Gore in 2000. Here's a peek into Al Gore's mind:

dhcp103:~/src/RID wiseman$ ./ < gore.txt 
SECONDARY:ABSTRACTION                                          264
SECONDARY:TEMPORAL REFERENCES                                  154
SECONDARY:SOCIAL BEHAVIOR                                      125
SECONDARY:INSTRUMENTAL BEHAVIOR                                107
EMOTIONS:AGGRESSION                                             89
SECONDARY:MORAL IMPERATIVE                                      81
EMOTIONS:AFFECTION                                              46
SECONDARY:RESTRAINT                                             39
SECONDARY:ORDER                                                 26
PRIMARY:SENSATION:VISION                                        26
EMOTIONS:GLORY                                                  22
PRIMARY:SENSATION:COLD                                          20
PRIMARY:ICARIAN IMAGERY:ASCENT                                  12
PRIMARY:SENSATION:SOUND                                         12
PRIMARY:ICARIAN IMAGERY:HEIGHT                                  10
PRIMARY:NEED:ANALITY                                             7
EMOTIONS:POSITIVE AFFECT                                         6
PRIMARY:ICARIAN IMAGERY:WATER                                    6
EMOTIONS:EXPRESSIVE BEHAVIOR                                     5
PRIMARY:SENSATION:HARD                                           5
EMOTIONS:ANXIETY                                                 4
PRIMARY:SENSATION:GENERAL-SENSATION                              4
PRIMARY:ICARIAN IMAGERY:FIRE                                     4
EMOTIONS:SADNESS                                                 3
PRIMARY:ICARIAN IMAGERY:DEPTH                                    3
PRIMARY:NEED:ORALITY                                             3
PRIMARY:SENSATION:ODOR                                           1
PRIMARY:SENSATION:TOUCH                                          1
PRIMARY:REGRESSIVE COGNITION:UNKNOWN                             1

PRIMARY             : 22.813990 %
EMOTIONS            : 13.910970 %
SECONDARY           : 63.275040 %

6560 words total

And a window into our current president's brain:

dhcp103:~/src/RID wiseman$ ./ < bush.txt 
SECONDARY:ABSTRACTION                                          319
SECONDARY:INSTRUMENTAL BEHAVIOR                                197
SECONDARY:SOCIAL BEHAVIOR                                      183
SECONDARY:MORAL IMPERATIVE                                     107
SECONDARY:TEMPORAL REFERENCES                                   93
SECONDARY:RESTRAINT                                             61
EMOTIONS:AFFECTION                                              57
EMOTIONS:AGGRESSION                                             51
SECONDARY:ORDER                                                 29
PRIMARY:SENSATION:VISION                                        24
PRIMARY:SENSATION:COLD                                          20
PRIMARY:ICARIAN IMAGERY:WATER                                   13
EMOTIONS:POSITIVE AFFECT                                        11
PRIMARY:SENSATION:HARD                                          10
EMOTIONS:GLORY                                                  10
PRIMARY:ICARIAN IMAGERY:HEIGHT                                   8
EMOTIONS:ANXIETY                                                 7
PRIMARY:ICARIAN IMAGERY:FIRE                                     6
PRIMARY:ICARIAN IMAGERY:DESCENT                                  5
PRIMARY:NEED:SEX                                                 4
PRIMARY:SENSATION:SOUND                                          4
PRIMARY:ICARIAN IMAGERY:DEPTH                                    3
PRIMARY:SENSATION:GENERAL-SENSATION                              3
PRIMARY:ICARIAN IMAGERY:ASCENT                                   3
EMOTIONS:SADNESS                                                 2
PRIMARY:NEED:ORALITY                                             2
EMOTIONS:EXPRESSIVE BEHAVIOR                                     1
PRIMARY:REGRESSIVE COGNITION:UNKNOWN                             1

PRIMARY             : 22.206897 %
EMOTIONS            : 9.586207 %
SECONDARY           : 68.206897 %

7996 words total

Look at that--Bush was 5 percentage points more reality-based than Gore. And he was 50% more emotional. And feels a 33.3% greater need for sex.

Now let's compare newsgroups. First we'll analyze the last 1000 posts from comp.lang.lisp:

dhcp103:~/src/RID wiseman$ ./ comp.lang.lisp 1000 | ./
SECONDARY:ABSTRACTION                                         8078
SECONDARY:INSTRUMENTAL BEHAVIOR                               5493
SECONDARY:SOCIAL BEHAVIOR                                     3680
SECONDARY:TEMPORAL REFERENCES                                 2812
SECONDARY:ORDER                                               2402
PRIMARY:SENSATION:VISION                                      1231
SECONDARY:RESTRAINT                                           1134
EMOTIONS:AFFECTION                                             925
EMOTIONS:AGGRESSION                                            911
SECONDARY:MORAL IMPERATIVE                                     630
PRIMARY:ICARIAN IMAGERY:HEIGHT                                 363
PRIMARY:ICARIAN IMAGERY:ASCENT                                 342
EMOTIONS:GLORY                                                 260
PRIMARY:NEED:ORALITY                                           240
PRIMARY:ICARIAN IMAGERY:DEPTH                                  224
EMOTIONS:EXPRESSIVE BEHAVIOR                                   208
PRIMARY:ICARIAN IMAGERY:FIRE                                   195
PRIMARY:SENSATION:SOUND                                        186
PRIMARY:SENSATION:GENERAL-SENSATION                            186
PRIMARY:ICARIAN IMAGERY:WATER                                  175
EMOTIONS:POSITIVE AFFECT                                       173
EMOTIONS:ANXIETY                                               170
PRIMARY:SENSATION:TASTE                                        165
PRIMARY:SENSATION:HARD                                         162
PRIMARY:REGRESSIVE COGNITION:UNKNOWN                           119
EMOTIONS:SADNESS                                               117
PRIMARY:ICARIAN IMAGERY:DESCENT                                 81
PRIMARY:SENSATION:SOFT                                          73
PRIMARY:SENSATION:COLD                                          71
PRIMARY:NEED:ANALITY                                            55
PRIMARY:SENSATION:TOUCH                                         54
PRIMARY:NEED:SEX                                                21
PRIMARY:SENSATION:ODOR                                          15

PRIMARY             : 27.197454 %
EMOTIONS            : 7.454756 %
SECONDARY           : 65.347790 %

221521 words total

And then the last 1000 posts in comp.lang.ruby:

dhcp103:~/src/RID wiseman$ ./ comp.lang.ruby 1000 | ./
SECONDARY:ABSTRACTION                                         5112
SECONDARY:INSTRUMENTAL BEHAVIOR                               4072
PRIMARY:SENSATION:VISION                                      3667
SECONDARY:SOCIAL BEHAVIOR                                     3272
SECONDARY:TEMPORAL REFERENCES                                 2613
SECONDARY:ORDER                                               2021
SECONDARY:RESTRAINT                                           1136
EMOTIONS:AFFECTION                                             767
SECONDARY:MORAL IMPERATIVE                                     668
PRIMARY:ICARIAN IMAGERY:HEIGHT                                 443
EMOTIONS:AGGRESSION                                            415
PRIMARY:REGRESSIVE COGNITION:UNKNOWN                           264
PRIMARY:ICARIAN IMAGERY:DEPTH                                  257
PRIMARY:SENSATION:COLD                                         210
PRIMARY:ICARIAN IMAGERY:FIRE                                   195
PRIMARY:NEED:ORALITY                                           192
PRIMARY:SENSATION:GENERAL-SENSATION                            158
EMOTIONS:POSITIVE AFFECT                                       153
EMOTIONS:GLORY                                                 149
PRIMARY:SENSATION:SOUND                                        146
PRIMARY:ICARIAN IMAGERY:DESCENT                                135
PRIMARY:SENSATION:TASTE                                        131
EMOTIONS:ANXIETY                                                90
EMOTIONS:SADNESS                                                87
PRIMARY:SENSATION:HARD                                          81
PRIMARY:NEED:ANALITY                                            76
PRIMARY:ICARIAN IMAGERY:ASCENT                                  69
PRIMARY:ICARIAN IMAGERY:WATER                                   64
PRIMARY:SENSATION:SOFT                                          63
EMOTIONS:EXPRESSIVE BEHAVIOR                                    59
PRIMARY:SENSATION:TOUCH                                         49
PRIMARY:NEED:SEX                                                 4
PRIMARY:SENSATION:ODOR                                           1

PRIMARY             : 35.216845 %
EMOTIONS            : 5.405405 %
SECONDARY           : 59.377750 %

185304 words total

Conclusion: Ruby usenetters are operating on a significantly more primordial level than the Lispers, giving less attention to problem solving! And damn, the Lispers need sex badly—more than 4x as much as Ruby fans!

The possibilities for RID are endless. In-line twitter filters. A Yahoo Pipes module. Tiny little 3-category pie charts on every email. An emacs package that disables source code commits when too much Icarian fire imagery is detected. Go nuts, people.

Update: Added a license (MIT) to the code. Fixed another misspelling in the dictionary itself.

Update: Neil Kandalgaonkar has a visualization tool based on RID.

Posted by jjwiseman at 12:03 AM | Comments (7) | TrackBack

May 10, 2007

Kamen Lisp

maciej on the machine project gallery
Maciej is a dorkbot posterboy.

Kamen Lisp is intended to let you use (a real Common) Lisp instead of Javascript by embedding ECL in Firefox.

All script tags that have the attribute language="text/common-lisp" are executed as normal: top-level code is run after the page loads, and functions defined (with defun) are callable later.

Performing dom manipulation is done by calling the special form (dom object action &rest args). This mechanism is still weak at the moment: when no args are provided action is assumed to be a property name, which is a setf-able place. If args are provided then action is assumed to be a function name, though only functions of one argument are currently supported. It is recommended that strings are used for function and property names, since symbols are automatically capitalized.


(dom document "getElementById" "input")

(dom input "innerHTML")

Well, I'm sure it's a valuable learning experience, at least.

Posted by jjwiseman at 10:23 PM | Comments (0) | TrackBack


i can has legzburger

Zach Beane's roflbot is a Lisp-powered way of lowering the bar for the already populist pastime of lolzing.

P.S. Seems like the fires only caused minor damage; I can see vast expanses of ash covered hills (over 800 acres burned) but the observatory and the zoo are fine. Richard and Kim are promoting a low-tech wildfire mitigation technique.

Posted by jjwiseman at 01:59 PM | Comments (7) | TrackBack

May 08, 2007

Shit Just Got Real

griffith park is burning
The view from my street

Mandatory evacuations, deer and coyotes fleeing into the streets of Los Feliz and Silver Lake, a couple thousand homes without power, swarms of helicopters sucking water from the Silver Lake reservoir. A couple hours ago the big smoker “exploded” and fire officials said “they could no longer tell how much of the fire was contained, backing down from earlier, more upbeat assessments.”

griffith park fire gawkers
Gawkers on a pedestrian bridge, photo by Atwater Village Newbie

The fire is about 2.5-3 miles from here, and it looks like Hell. Lots of my neighbors are outside watching. It'd be sad if the observatory burns down now, having been open only for a few months after a five year renovation.

LA Times photo of the griffith park observatory with fire behind it
Griffith Park Observatory in jeopardy, photo by the LA Times

Supposedly this is the biggest fire in Griffith Park since the 60s, and there are rumors that some of the homes that were evacuated have already been looted. What a spectacle.

Boing Boing is all over it.

Posted by jjwiseman at 11:19 PM | Comments (4) | TrackBack

SB-COVER: Code Coverage Contrib Module for SBCL

coverage summary for Montezuma unit tests

I love SBCL's new code coverage facility, SB-COVER.

My unit tests cover about 78% of the expressions and 70% of the conditional branches in Montezuma, which is more than I'd expected.

coverage detail for Montezuma unit tests

Posted by jjwiseman at 02:03 PM | Comments (0) | TrackBack

e7 Release

joanne and i at the houdini house in laurel canyon
JoAnne and I at the Houdini House

A public release of Eric Tiedemann's e7 Lisp dialect is now available. A concise description of e7 for Common Lispers can be found in the e7 Progress Report.

e7 looks a little like a mixture of Python and Lisp. Some interesting features include real-time garbage collection, extended syntax (postfix attribute access, square bracket-style indexing and slicing, triple-quoted strings), a Python bridge, and a focus on ease of extension with C++.

Here's an e7 script to normalize a stereo sound file:

#!/usr/bin/env e7

sndfile-normalize <infile> <outfile>

Normalize (scale so the maximum absolute value is 1.0) a stereo sound file.

(import sndfile sound)

(defopt bufsiz (* 64 1024))

(def (main infile outfile)
  (with-open in-sf ( infile)

    (def extrema (sndfile.extrema infile))
    (def maxabs (max (abs (min extrema[0][0] extrema[1][0]))
             (abs (max extrema[0][1] extrema[1][1]))))

    (write (format "%r max dB = %r" infile (sound.val->db maxabs)))

    (def gain (/ 1.0 maxabs))

    (with-open out-sf ( outfile 'write
               in-sf.format in-sf.sample-rate in-sf.channels)
      (def buf0 (fvector sys.opts.bufsiz))
      (def buf1 (fvector sys.opts.bufsiz))
      (def buf0a (fvector sys.opts.bufsiz))
      (def buf1a (fvector sys.opts.bufsiz))

      (def frame 0)

      (while (< frame in-sf.frames)
        (def n (min (- in-sf.frames frame) sys.opts.bufsiz))
        (sndfile.read2 in-sf buf0 buf1 n frame)
        (sndfile.write2 out-sf (* gain buf0a) (* gain buf1a) n)
        (incf frame n)))))
Posted by jjwiseman at 01:47 PM | Comments (1) | TrackBack

May 04, 2007

John Porcellino Interviewed by the A.V. Club

It really is night--15 sec. exposure with a full moon
LA at night (really!), by Atwater Village Newbie

The Onion's A.V. Club interviews John Porcellino about his “crudely surreal” and “profoundly sweet” comics (previously on lemonodor):

AVC: When you started doing King-Cat, did you have any sense that it was something worth saving? Did you consider that it would eventually take up so much of your life?

JP: I'm not saying that I ever thought, "These are the greatest comics in the world," but I always liked them. [Laughs.] Plus, I love history. Even back then, I knew that this was going to be the way that I documented my life.

AVC: Did you ever reach a point where you started to become conscious of the way your readers perceived you?

JP: Yeah, totally. I can tell you exactly when it was: King Cat 44. In '94, me and Zak [Sally] and Mr. Mike [Haeg] went on a road trip up the West Coast, and we went to Seattle. Seattle at the time was where all the cartoonists were. We met all these guys and hung out and talked comics, and it was like, "Wow, these people kind of take this thing seriously."


The way I grew up, I had a lot of personal issues with art. It's an individual thing, but I also think it's kind of Midwestern: You do your thing, but you don't talk about it. You make sure it's not such a big deal, and keep it very low-key. Not that the people in Seattle were jumping up and down, but they got together every week to draw and critique each other's work. Outside of art school, I never did that. There was a community there. When I came back from that trip and sat down to do King-Cat 44—it was probably the "Chicken Lady" or the "Shovel Lady" story—I had a physical, palpable sense of being self-conscious. It was the first time out of all these pages of comics I'd drawn where I was like, "Holy cow, people are going to read this. They're going to like it, or they might not like it. Maybe I really should make my drawings a little more solid, or really think about what I'm doing. Maybe this shouldn't be so sloppy."

Posted by jjwiseman at 01:10 PM | Comments (0) | TrackBack

NATO: RC Toys are a Threat

karaoke is not a crime

Radio Controlled Toys Serious Threat To Security Says NATO Official” [via Geekdad]:

NATO is concerned by the easy access to drone technology in the world, which is in particular used in radio controlled toys, a NATO deputy assistant secretary general said Thursday.

Guy Roberts told a Moscow nonproliferation conference that 18 months ago, a father and son built a small unmanned airplane in Vermont, U.S., which flew nonstop from New Hampshire to the U.K. with a five-kg load, eventually landing 10 meters from the target place.

Roberts said the flight was possible with the help of open commercial technology which is potentially very dangerous.

Roberts, who oversees issues of weapons of mass destruction policy at NATO, tried to imagine what could happen if thousands of such drones, even with an ordinary and not WMD charge, were dispatched to a target.

He also said NATO conducted an experiment several years ago, which showed that it was possible to buy a set for a biological laboratory through the Internet for about $300,000, which was quite capable of producing WMDs. The deputy assistant secretary general said this area is totally uncontrolled.

Posted by jjwiseman at 12:15 PM | Comments (0) | TrackBack

May 01, 2007

Microsoft's New Dynamic Language Runtime

gregory crewdson

Microsoft is working on making their Common Language Runtime friendlier to dynamic languages [via Aaron].

The new Dynamic Language Runtime (DLR) adds a small set of key features to the CLR to make it dramatically better. It adds to the platform a set of services designed explicitly for the needs of dynamic languages. These include a shared dynamic type system, standard hosting model and support to make it easy to generate fast dynamic code. With these additional features it becomes dramatically easier to build high-quality dynamic language implementations on .NET.

They're starting with DLR versions of Python, Javascript, Visual Basic and Ruby.

Posted by jjwiseman at 05:37 PM | Comments (0) | TrackBack


The death of my old Power Mac 7300, my main Lisp machine from 1997 to 2000 or so, was caught on film (and then used to market rock and roll):

Posted by jjwiseman at 11:29 AM | Comments (0) | TrackBack