Maciej is looking for a job (or just some office space).
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).
Austin King is looking for good lisp tools for drawing and generating art.
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.
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 rid.py.
Then I analyzed 100 days worth of logs from #lisp and #ruby-lang:
16:~/src/RID wiseman$ ./get_irc.py lisp 100 | \ > ./rid.py -h -t "RID Analysis of 100 Days of #lisp" > lisp-rid.html
17:~/src/RID wiseman$ ./get_irc.py ruby-lang 100 | \ > ./rid.py -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.”).
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.
rid.py 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$ ./rid.py < gore.txt SECONDARY:ABSTRACTION 264 SECONDARY:TEMPORAL REFERENCES 154 SECONDARY:SOCIAL BEHAVIOR 125 PRIMARY:REGRESSIVE COGNITION:CONCRETENESS 120 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:DEFENSIVE SYMBOLIZATION:PASSIVITY 18 PRIMARY:ICARIAN IMAGERY:ASCENT 12 PRIMARY:SENSATION:SOUND 12 PRIMARY:REGRESSIVE COGNITION:NARCISSISM 11 PRIMARY:ICARIAN IMAGERY:HEIGHT 10 PRIMARY:REGRESSIVE COGNITION:BRINK-PASSAGE 8 PRIMARY:NEED:ANALITY 7 EMOTIONS:POSITIVE AFFECT 6 PRIMARY:ICARIAN IMAGERY:WATER 6 EMOTIONS:EXPRESSIVE BEHAVIOR 5 PRIMARY:SENSATION:HARD 5 PRIMARY:REGRESSIVE COGNITION:TIMELESSNESS 5 PRIMARY:DEFENSIVE SYMBOLIZATION:CHAOS 4 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:DEFENSIVE SYMBOLIZATION:RANDOM MOVEMENT 3 PRIMARY:DEFENSIVE SYMBOLIZATION:DIFFUSION 2 PRIMARY:DEFENSIVE SYMBOLIZATION:VOYAGE 1 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$ ./rid.py < bush.txt SECONDARY:ABSTRACTION 319 SECONDARY:INSTRUMENTAL BEHAVIOR 197 SECONDARY:SOCIAL BEHAVIOR 183 PRIMARY:REGRESSIVE COGNITION:CONCRETENESS 170 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:DEFENSIVE SYMBOLIZATION:PASSIVITY 23 PRIMARY:SENSATION:COLD 20 PRIMARY:ICARIAN IMAGERY:WATER 13 EMOTIONS:POSITIVE AFFECT 11 PRIMARY:REGRESSIVE COGNITION:NARCISSISM 10 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:REGRESSIVE COGNITION:BRINK-PASSAGE 4 PRIMARY:SENSATION:SOUND 4 PRIMARY:ICARIAN IMAGERY:DEPTH 3 PRIMARY:SENSATION:GENERAL-SENSATION 3 PRIMARY:DEFENSIVE SYMBOLIZATION:VOYAGE 3 PRIMARY:ICARIAN IMAGERY:ASCENT 3 PRIMARY:DEFENSIVE SYMBOLIZATION:DIFFUSION 2 EMOTIONS:SADNESS 2 PRIMARY:NEED:ORALITY 2 PRIMARY:DEFENSIVE SYMBOLIZATION:RANDOM MOVEMENT 2 PRIMARY:DEFENSIVE SYMBOLIZATION:CHAOS 1 EMOTIONS:EXPRESSIVE BEHAVIOR 1 PRIMARY:REGRESSIVE COGNITION:CONSCIOUSNESS ALTERATION 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$ ./get_posts.py comp.lang.lisp 1000 | ./rid.py SECONDARY:ABSTRACTION 8078 SECONDARY:INSTRUMENTAL BEHAVIOR 5493 PRIMARY:REGRESSIVE COGNITION:CONCRETENESS 3941 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:REGRESSIVE COGNITION:BRINK-PASSAGE 594 PRIMARY:REGRESSIVE COGNITION:NARCISSISM 559 PRIMARY:DEFENSIVE SYMBOLIZATION:PASSIVITY 415 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:DEFENSIVE SYMBOLIZATION:CHAOS 193 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:DEFENSIVE SYMBOLIZATION:DIFFUSION 126 PRIMARY:REGRESSIVE COGNITION:UNKNOWN 119 EMOTIONS:SADNESS 117 PRIMARY:DEFENSIVE SYMBOLIZATION:RANDOM MOVEMENT 111 PRIMARY:DEFENSIVE SYMBOLIZATION:VOYAGE 101 PRIMARY:ICARIAN IMAGERY:DESCENT 81 PRIMARY:SENSATION:SOFT 73 PRIMARY:SENSATION:COLD 71 PRIMARY:NEED:ANALITY 55 PRIMARY:SENSATION:TOUCH 54 PRIMARY:REGRESSIVE COGNITION:TIMELESSNESS 50 PRIMARY:REGRESSIVE COGNITION:CONSCIOUSNESS ALTERATION 36 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$ ./get_posts.py comp.lang.ruby 1000 | ./rid.py SECONDARY:ABSTRACTION 5112 SECONDARY:INSTRUMENTAL BEHAVIOR 4072 PRIMARY:SENSATION:VISION 3667 SECONDARY:SOCIAL BEHAVIOR 3272 PRIMARY:REGRESSIVE COGNITION:CONCRETENESS 3166 SECONDARY:TEMPORAL REFERENCES 2613 SECONDARY:ORDER 2021 SECONDARY:RESTRAINT 1136 PRIMARY:REGRESSIVE COGNITION:BRINK-PASSAGE 834 EMOTIONS:AFFECTION 767 SECONDARY:MORAL IMPERATIVE 668 PRIMARY:ICARIAN IMAGERY:HEIGHT 443 EMOTIONS:AGGRESSION 415 PRIMARY:DEFENSIVE SYMBOLIZATION:PASSIVITY 304 PRIMARY:REGRESSIVE COGNITION:NARCISSISM 266 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 PRIMARY:DEFENSIVE SYMBOLIZATION:CHAOS 117 PRIMARY:REGRESSIVE COGNITION:CONSCIOUSNESS ALTERATION 97 EMOTIONS:ANXIETY 90 EMOTIONS:SADNESS 87 PRIMARY:SENSATION:HARD 81 PRIMARY:NEED:ANALITY 76 PRIMARY:REGRESSIVE COGNITION:TIMELESSNESS 70 PRIMARY:ICARIAN IMAGERY:ASCENT 69 PRIMARY:DEFENSIVE SYMBOLIZATION:RANDOM MOVEMENT 68 PRIMARY:ICARIAN IMAGERY:WATER 64 PRIMARY:SENSATION:SOFT 63 EMOTIONS:EXPRESSIVE BEHAVIOR 59 PRIMARY:DEFENSIVE SYMBOLIZATION:VOYAGE 56 PRIMARY:SENSATION:TOUCH 49 PRIMARY:DEFENSIVE SYMBOLIZATION:DIFFUSION 23 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.
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.
Examples:(dom document "getElementById" "input") document.getElementById("input"); (dom input "innerHTML") input.innerHTML
Well, I'm sure it's a valuable learning experience, at least.
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.
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.”
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.
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.
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.
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 (sndfile.open infile) (def extrema (sndfile.extrema infile)) (def maxabs (max (abs (min extrema extrema)) (abs (max extrema extrema)))) (write (format "%r max dB = %r" infile (sound.val->db maxabs))) (def gain (/ 1.0 maxabs)) (with-open out-sf (sndfile.open 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)))))
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."
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.
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.