Category Archives: Software

It’s time to vent a grievance. Hopefully, my gripe is just an artifact of sampling bias: the people who know the truth aren’t saying anything, and the people who are uninformed keep speaking up, leaving me with the impression that nobody knows what’s going on.

Consequently, as a public service, I’m going to demonstrate the permanent link feature of the MediaWiki software, the platform which underlies Wikipedia. Pop open a Wikipedia article, say James Burke (science historian). Unless you’ve modified your skin CSS, you’ll see a sidebar on the left edge, headed by some “navigation” links (“Main page,” “Contents” and so forth). Down below the search box, in the “toolbox” section, is an item labeled “Permanent link.” This is a hyperlink to the current version of the article you are at the moment reading. The URL for this hyperlink gives both the article title and the revision ID, thus:

http://en.wikipedia.org/w/index.php?title=James_Burke_ %28science_historian%29&oldid=171016319

Upon clicking the link, you’ll be directed to that specific version of the article. Furthermore, this link will remain valid, unless extreme measures are taken, until Wikipedia itself goes foom.

MediaWiki Has Issues

Okay, I’m uploading files to a MediaWiki 1.10 installation. If I try to upload a JPEG image with the execute permission not set (i.e., its entry in ls -l begins with -rw-------) then I get an error message:

Error creating thumbnail: sh: line 1: /usr/local/bin/convert: No such file or directory

Uploading another copy of the file with different permissions doesn’t fix the problem.

Sigh. Some days I just hate computers.

ICCS: Emergence in Particle Systems 1

I typed the following notes during Hiroki Sayama‘s presentation on “Phase separation and dynamic pattern formation in heterogeneous self-propelled particle systems.” Unfortunately, I couldn’t get a WiFi signal in the room where Sayama gave his talk, so I’m falling short of the gonzo science ideal, posting about the talk after it was given instead of as it occurs.

Sayama is speaking about particle swarm systems, and the phase-separation and dynamic pattern formation behaviors they exhibit. He adds the novel feature of heterogeneity to the particle system. Research on self-propelled particles goes back to Reynolds (1987), Vicsek et al. (1995), Aldana et al. (2003), Chuang et al. (2006), etc. Reynolds was a computer scientist who created a method for simulating bird flocking, which developed into the simulation which created the bats in the otherwise unremarkable Batman Begins. Vicsek and Aldana were physicists.

These systems show collective behaviors such as random clustering, coherent motions and milling. The same system can exhibit all of these behaviors, depending upon the input parameters. Cranking up the noise can induce phase transitions. Almost all of this work focused on homogeneous particle systems, in which all particles share the same kinetic particles. What, then, would happen if two or more types of self-propelled particles were mixed together?

Sayama works in a framework he calls Swarm Chemistry, which is implemented as a Java applet that can be run online.
Continue reading ICCS: Emergence in Particle Systems 1

Where I Am and Will Be

First, a query. Since last night, a whole heap of spam has been getting through Akismet. Those spam comments with many links have been caught in the WordPress moderation queue, but comments without URLs aren’t getting caught. Is anybody else having this problem?

I’m also struggling with a really slow network connection at the office today. This comes at a bad time, too, because my top two priorities are plowing through the immune-system literature and editing the conference book for ICCS 2007. Downloading journal-article PDFs at 1.1 Kbps is not fun.

And speaking of ICCS 2007 — that’s the seventh annual International Conference on Complex Systems — I’m going to be running around the Quincy Marriott next week, taking pictures and videotaping talks and generally doing conference stuff. I’ve generally kept my blog-writing separate from my work at NECSI (since nobody pays me to explain random spatial networks or protein structures, just to generate inscrutable graphs and equations about them) but I thought it might be interesting to try liveblogging the conference. Assuming I don’t have too many actual responsibilities, I’ll try to get synopses up here about the plenary speeches and the more interesting “breakout” talks.

This is probably a good time to state a disclaimer I will repeat later: anything I say here, whether in an ICCS liveblogging post or any other, is my own opinion and not that of my colleagues or employer.

Carnival of Mathematics

Mark Chu-Carroll hosts the latest Carnival of Mathematics with a theme dear to my heart, the way cholesterol is: spam!

Among the notable posts are My Tiny Kingdom’s report on helping with long-division homework. This reminds me: can any of the other science-types out there who do math for a living tell me when was the last time you used the grade-school division symbol, or obelus, $\div$? Like writing in cursive, it seems to be a part of my symbolic heritage which adult life has discarded.

Also, Maths for Mortals has a challenge:

“Computers Internet Blog”

And while I’m talking about the weird things which happen behind the blogging scenes, I should make a note about a search query which apparently keeps sending hits my way. Since May, I’ve gotten 335 hits for the Google query {computers internet blog}. Note that these go to pages which don’t use any of those three words (e.g., here).

My best guess — an inference also drawn by others — is that this is a signature of spammers looking for places to deposit their trash. They attempt to mask themselves by mucking with their referral strings; unfortunately, I can’t figure out how to reprogram WordPress to send debilitating mind-viruses back through the Network to the spammers responsible, so I have to rely upon Akismet to keep them out.

(There’s gotta be a plugin for sending mind-viruses! But I’ve looked under T for Transmetropolitan and G for ghost-hacking, and I’m coming up blank.)

Of course, now that I’ve written this, somebody might come here legitimately by following the same query. You don’t need quantum effects to change the outcome by observing it!

UPDATE (22 October): Hmm. Now I’m the first hit!

UPDATE (24 October): Hmm again. Is {mythomania} being used in the same way?

Spam Humor

A couple times a day, I go through the Akismet spam bucket and see if any messages should be recovered. Sometimes, a legitimate commenter will use too many links (hey, citing your sources is good juju!) and Akismet will drop their message into the spam can. I haven’t yet figured out why some comments go into WordPress‘s moderation queue and others into Spam Cocytus, and I don’t like worthwhile comments languishing for very long.

Sometimes, ye olde spamme folio delivers up an amusing tidbit. For example, there’s this bloke named Daniel who keeps saying, “I could not understand all of this [name of post], but I guess I’ll have to check more sources about this, because it seems interesting.” This is particularly good when the post in question is about quantum mechanics. Also, Daniel will say, “I can’t agree with you 100% about [name of post], but that’s just my opinion, which could be wrong.” I confess that when this appears on a post about “framing science,” it’s hard to tell this content-free blather from a legitimate comment.

And then there’s the astrology spam. . . .

Just now I noticed a spam comment from a site advertising — I kid you not — “Christian Symbols and Christian Resources.” Their statement?

Sorry, it just sounds like a crazy idea for me :)

You and me both, brother.

Document Typesetting Fantasy

“This is TeXnical support. How may I be of assistance?”

“Yes, I’m trying to typeset the conference book for an upcoming conference — you know, the thing we give everybody which has the abstracts of all the presentations, and so forth — and LaTeX isn’t working.”

“What seems to be the problem, sir?”

“Well, the alphabetical list of speakers, the index at the very end, isn’t displaying.”

“It doesn’t appear in the DVI output?”

“That’s right.”

“This is an alphabetical list of speakers which tells where in the conference book their abstracts will be found?”

“Yes, each abstract is given a number with the \label command, and the list refers to them with the \pageref command. The LaTeX source is actually the output of a Perl script which reads the conference data from a MySQL database, so all of this is automatically generated.”

Downright Freaky!

What did I ever do to deserve being in the first page of Google hits for the phrase, “In Soviet Russia“?

OK, I might as well tell my favorite “Russian reversal” joke, one which is deliciously anachronistic.

America, what a country! Everywhere I go, I see Firefox web browser. In your country, you keep open tabs in browser. In my country, web browsers keep tabs on you!

Thank you, thank you, I’ll be here all week.

In the brief interlude between my morning of debugging PHP code — Semantic MediaWiki isn’t compatible with Cite.php, the bastards! — and my afternoon of category theory, I’d like to call attention to a few items.

First, an observation: for some reason I can’t quite fathom, I was able to adapt myself to using HTML entities for punctuation marks, writing &mdash; for — and the like, but my brain didn’t process the fact that HTML entities also exist for accented letters. Instead of typing, say, &agrave; to get à, I would hit Ctrl+T to open a new Firefox tab, hit the Tab key to move to the Search bar, type a French phrase which I knew had the accented characters in question, copy the characters I needed from the search-result summaries, and paste them where I needed them.

Searching was easier than typing. Now, that’s either a sign of advanced Internet-induced brain rot, or an indication that our interconnected world has definitively left TwenCen far behind.

OK, it could be both.

Next, interesting items recently spotted on the Weboblagospherenet:

Change My Name to Springer

Dear academic publishing industry: play nice, and we won’t crush you under our advancing wall of ice.

Google Scholar’s publisher policies insist that people searching journal articles through Google “must be offered at least a complete abstract.” Content which is restricted to subscribers can only be included “as long as you can show a complete abstract (or more) to all users who arrive from Google and Google Scholar.”

So why do all my Google Scholar searches retrieve SpringerLink and IngentaConnect pages which purport to be PDF files — even including text from the paper body in the Google summary — but upon clicking the link turn out to be generic portal pages asking for money? Whether I even get the paper’s abstract or not depends upon the IP address from which I surf.

Look, I don’t expect to get online content for free. (I certainly deserve it, but that’s a different story.) Nevertheless, a little bit of forthright behavior and a willingness to play by the rules already written down would make everybody who uses the Web for academic purposes a whole lot happier.

Preferential Attachment in Python

A few posts ago, I mentioned the model of network growth by preferential attachment. This is a big enough topic in network theory that it’s worth poking in detail. I discussed some of the subject’s history in this paper (1.2 Mb PDF, plus presentation), which they tell me passed some stage of review and will appear in the print volume of the conference proceedings, i.e., an overpriced Springer book nobody will actually buy. But in addition to learning the names and dates involved in the story, we would like to play around with the ideas ourselves.

The other day, I realized how easy this would be, and now that I’ve actually presented this to a classroom full of people, I’d like to write about it. Today, I’ll present a Python program for growing a network by the “rich get richer” effect known as preferential attachment.
Continue reading Preferential Attachment in Python

Power-law Distributions in Empirical Data

Throughout many fields of science, one finds quantities which behave (or are claimed to behave) according to a power-law distribution. That is, one quantity of interest, y, scales as another number x raised to some exponent:

$y \propto x^{-\alpha}.$

Power-law distributions made it big in complex systems when it was discovered (or rather re-discovered) that a simple procedure for growing a network, called “preferential attachment,” yields networks in which the probability of finding a node with exactly k other nodes connected to it falls off as k to some exponent:

$p(k) \propto k^{-\gamma}.$

The constant γ is typically found to be between 2 and 3. Now, from my parenthetical remarks, the Gentle Reader may have gathered that the story is not quite a simple one. There are, indeed, many complications and subtleties, one of which is an issue which might sound straightforward: how do we know a power-law distribution when we see one? Can we just plot our data on a log-log graph and see if it falls on a straight line? Well, as Eric and I are fond of saying, “You can hide a multitude of sins on a log-log graph.”

Via Dave Bacon comes word of a review article on this very subject. Clauset, Shalizi and Newman offer us “Power-law distributions in empirical data” (7 June 2007), whose abstract reads as follows:
Continue reading Power-law Distributions in Empirical Data

Software Agonies: SciPy

In connection with some super-top-secret project — as in, it’s so classified I could figure out what I’m doing, but then I’d have to kill myself — I’ve been coding some programs with SciPy, a bundle of open-source science, math and engineering tools for Python. The thing I need the most is a platform-independent way to plot graphs, and for the most part, SciPy has worked pretty well. I’ve only had one truly infuriating problem so far. That problem, to which I devoted more of my life than I’d like to think about right now, stemmed from the following bug.

SciPy uses Matplotlib to make its visual output, and as the name suggests, Matplotlib was designed with MATLAB syntax in mind. Those of you who have done subplots in MATLAB — multiple graphs tiled onto the same figure — may recall that the subplot command has two valid syntax forms: subplot(211) and subplot(2,1,1), the first being the older form. According to the Matplotlib documentation, both forms work.