Ball Lightning Solved? Frankenstein was Right?

From National Geographic News, January 22, 2007:

Physicist Antonio Pavão and doctoral student Gerson Paiva of the Federal University of Pernambuco have created orbs of electricity about the size of golf balls that mimic natural ball lightning ... Most of the artificial orbs lasted two to five seconds, but at least one has survived as long as eight seconds - approximating natural ball lightning and far exceeding previous efforts to create the phenomenon in the lab.

More about ball lightning, and similar occurrences, at Sean B. Palmer's

The Informnauka Agency also released a press release in early February which, translated into English from its native Russian, was entitled "Could lightning give rise to life?":

Specialists of the Institute of Geology of Komi Research Center of Ural Branch and the Institute of Natural Resources, Ecology and Cryology, Siberian Branch have for the first time described the formation that results from a stroke of lightning into a plant - phytofulgurite ... When the owner raked away the ashes [caused by a lightning strike], he noticed a small flat, blue-black, fibrous, glassy piece of unknown substance ... The main elements making part of [the substance] are carbon, hydrogen, nitrogen and sulfur, the rest - approximately a third - being oxygen and trace elements ... At that, 95 percent of [the substance's] amino acids belonged to left isomers, as it occurs in living organisms. Nevertheless, these amino acids could not be remains of grass – at such temperature all organic matter burns down completely.


Apache Logging via ServerAlias

My last problem with Plesk was a side-effect of working around its thirty domain limit using Apache's ServerAlias and Drupal's multisite configuration. By doing so, all log data was being sent to a single file which made it impossible for me to tease out individual domain stats. The standard solution - using an Apache LogFormat with %v preprocessed via split-logfile - didn't work because %v only covered ServerName, not ServerAlias.

I had initial success swapping out %v for %{Host}i, but another problem arose: %{Host}i happily reports subdomains, which split-logfile then cheerful sends to independent logfiles. That may work for some folks, but the www/no-www problem still rears its ugly head. I eventually settled on using SetEnvIf along with CustomLog:

SetEnvIf HOST "^(.*\.)?(disobey|ghostsites)\.com" log_disobey
SetEnvIf HOST "^(.*\.)?(secretsite)\.com" log_secretsite
CustomLog /statistics/logs/ combined env=log_disobey
CustomLog /statistics/logs/ combined env=log_secretsite

Plesk will include extra directives like the above if you stick them in /var/www/vhosts/ and restart Apache. The above approach gives me lots of leeway - here I'm sending all subdomains (or lack thereof) to the same files, and also combining multiple domains into one as needed.

Now it's just a simple matter of adding a new /etc/logrotate.d/ config for these new logs and pointing a log analyzer at 'em (I like Analog because you can shut off all the gay-ass pie charts). Another nice side-effect of the above is we're not touching Plesk's default vhost logs or Webalizer: I'll still be able to see a collected view of all my server names and aliases as before.

Flexinode to CCK using Drupal 5.x

As I promised weeks ago, here's how I converted my Flexinode node types to CCK. For my needs, I used a local development box that started out as Drupal 4.7 and was upgraded normally to Drupal 5.x. I did not have Flexinode installed for 5.x - I knew I was migrating so I didn't bother downloading it. I wrote and tested my converter on the dev box, then did the same upgrade steps on the production server, running my converter last. The script assumes knowledge of how Flexinode and CCK database tables were designed, and keeping the URLs exactly the same from node type to node type. I've done similar processes on two sites so far, and am planning a third. This is not an example of the standard "Drupal upgrade process" and it certainly isn't end-user friendly - this will never be any sort of official process, nor would I want it to.

There are a few things you need to know first:

  • Do you plan to use the body field of a node? This is a good time to redesign your data if necessary - CCK node types allow you to define (or not) whether a node's body field is used. This becomes particularly nice if you want to CCK a blogapi-enabled node type. If body is not used, we'll be deleting it and teaser during the conversion (Flexinode would pre-create the teaser and body fields on node_save() which is not necessary for CCK).
  • Do you have any odd field types that don't correlate to CCK? You'll need to do some grunt work to see if complicated Flexinode field types are available in CCK. For one of my sites, I used Flexinode's to create a 2x3 table that users would enter up to three URLs in along with their titles. This maps nicely to CCK's link.module, though these types of things require special attention in the conversion process. If all you've got are boring textfields and textareas, you're golden.
  • You'll need to precreate your CCK node type. My conversion process only works on data, NOT the data structure and design. Make your CCK node type, perfect it, test out that it works, then examine the created database tables and rows. Look at the column names, how things correlate to the node_revisions table (if at all), and pay close attention to whether a CCK field allows a specific input format. If it's plain text, we won't have to convert that data from Flexinode. If an input format is allowed, we'll have to.
  • You'll need to know the field IDs of your Flexinode field types. Easiest way to find these out is to head to the Flexinode content type screen, mouse over each of the fields you've added, and jot down the IDs. You can, of course, find these out via the database if you've already upgraded to 5.x and don't have Flexinode installed anymore. I'll leave that up to you.

This example code was created in a custom module for one of my conversions; I'm not showing the entire module framework because I assume you know what you're doing. You can also stick this stuff in a convert.php with index.php-like bootstraps. Whatever works. The code contains the rest of the documentation.


Tulsa's time capsule car gets unearthed June 15th, 2007

From, January 25th, 2007:

The car, which was buried in brand-new condition under the lawn of the Tulsa County Courthouse in 1957, is scheduled to be unearthed June 15 as part of the Oklahoma Centennial ... When the car was buried, a contest was announced to award the car and a $100 savings account to the person who came closest to guessing Tulsa's population in 2007.

More from the official website:

The car was seen as a method of acquainting twenty-first century citizens with a suitable representation of 1957 civilization. According to event chairman Lewis Roberts Jr., the Plymouth was chosen because it was "an advanced product of American industrial ingenuity with the kind of lasting appeal that will still be in style 50 years from now."


Panache and Peril with Plesk

With this new dedicated server, I chose Plesk as a control panel solely because I hated it less than Ensim or cPanel. Normally I'd do all the installation, configuration, and tweaking of a server myself, but I just don't have time for that anymore. The biggest problem I have with control panels is that they make it very hard to do manual configs the normal Linux way: changes either get overwritten or ignored. Plesk is a little easier to live with in this regard; what follows are my last mile tweaks.

While Plesk allows you to create a chrooted FTP user for a domain, it doesn't have a front end for adding another, much less one constrained a particular subdirectory of that domain. Plesk's configuration of ProFTPD chroots any user with a group of psacln. Via the shell, just useradd a new user with the desired home directory, use /bin/false for the shell so they can't SSH in, and add them to group psacln. You'll also need to make sure that the httpdocs directory is 751, not the default 750.

Plesk charges $49.00 to provide a GUI for SpamAssassin configuration. While I didn't save any money doing this myself, maybe you will: here's how to get SpamAssassin going with Plesk's qmail implementation. If you have the Plesk SpamAssassin RPM installed (usually available in /root/swsoft), it provides a spammng command line utility for tweaking the SpamAssassin configuration. This utility appears to work without checking your license information: you can run /etc/init.d/spamassassin stop than spammng -c -C start. This restarts the spamd daemon with the proper command line flags for Plesk's qmail install.

Going a bit further, try spammng -c -C -e --mailname "" start: this will enable SpamAssassin for the specified mailbox by editing the .qmail file in the relevant directory. For my install, this was /var/qmail/mailnames/ With these two bits of information, we can combine Plesk's qmail with the default SpamAssassin installation without spending any cash. I have not yet figured out how to do this server wide (every incoming piece of mail is processed) or domain wide (every mail for a specific domain is processed). You?

In the .qmail file, Plesk writes the following:

| /usr/local/psa/bin/psa-spamc accept
| true

psa-spamc is a shell wrapper around the SpamAssassin spamc utility and allows one argument: whether to "accept"/deliver mail that is flagged as spam based on the /etc/mail/spamassassin/ configuration, or whether to "reject" it. It'd be nice to have some granularity to say "reject everything over score 10", but eh, not a biggie.

The last thing is to reteach the /etc/init.d/spamassassin startup script. Since we haven't paid Plesk to fiddle with SpamAssassin, we have to teach our default install how to interact with Plesk's qmail without their help. If you've started the spamd daemon from Plesk's spammng, run the following to capture the startup configuration: ps auwx | grep spamd. You'll get something along the lines of:

/usr/bin/spamd --username=popuser --daemonize --nouser-config --helper-home-dir=/var/qmail --max-children 5 --create-prefs --virtual-config-dir=/var/qmail/mailnames/%d/%l/.spamassassin --pidfile=/var/run/spamd/ --socketpath=/tmp/spamd_full.sock

Open up /etc/sysconfig/spamassassin and make it look like:

SPAMDOPTIONS="-d -c -m5 -H /var/qmail --username=popuser --nouser-config
--virtual-config-dir=/var/qmail/mailnames/%d/%l/.spamassassin --socketpath=/tmp/spamd_full.sock"

SPAMDOPTIONS is one line. Restart spamd with /etc/init.d/spamassassin restart and check Plesk's qmail log at /usr/local/psa/var/log/maillog. If everything goes right, you should be able to send yourself a piece of mail and notice two things: spamd will process each incoming message and report the results and a .spamassassin directory will show up in the right domain and user directory under /var/qmail/mailnames/. Done.

Plesk's licensing is annoying in other ways: I can only use 30 domains within my current install. Thankfully, domain aliases don't count against this limitation and, with Drupal's multisite capabilities, I can run any amount of domains on one code base with multiple databases. Unfortunately, this is a problem when it comes to logfiles and analysis: I'm not entirely sure if Apache's ServerAlias is considered %v for split-logfile. Needs more testing before I can fully implement domain aliases.


Moved to a New Server

I've just moved to a new dedicated server. If you notice anything awry, lemme know, eh?

World of Warcraft Quest Tracker Updated to 1.2

I've released a new version of my World of Warcraft Quest Tracker today, bringing it to version 1.2:

  • removed "Unknown" categories/zones.
  • checks reported quest IDs vs. active quest IDs.
  • 30 second wait, then re-request, if zone URL returns no data.
  • removed "Updated" images that showed up next to quest titles.

You can see the latest output for my level 60 Troll Shaman, Morbulin, here. One of the new features, "check reported quest IDs vs. active quest IDs", will probably fail more often than not: for my Horde character, there were a number of quests that are flagged as only Alliance, so I got about a dozen bogus reports there. Otherwise, a very basic incremental release - I was surprised to see it still worked since the last release a year ago.

Yes, I bought the Burning Crusade. No, I've not played it for more than a few hours. Sigh.

The Making of a Signature Motto

Those who have ever read my emails may know, love, or harbor resentment to, my random signatures. Now 81 entries long, I'm always on the lookout for phrases or words that titillate me in as few words as possible: 58 characters is the largest signature length I've saved. Shrinking an idea or emotion down to that many characters or less is a bit like Perl Golf, another game I enjoy.

<dopry> hey Morbus, how's it going... rough evening/morning?
<Morbus> nah, not at all.
<dopry> Ok.. You just seemed to have a chip on the old shoulder...
<Morbus> dopry: nah. not at all.
<Morbus> well, it's quite possible i've had a chip on my shoulder for so long that it's part of the shoulder now.
<eaton> that's an excellent motto.
<Morbus> "my chip has been there so long, it's part of my shoulder now"
<Morbus> no wait.
<Morbus> that's not poetic enough'
<Morbus> my chip has been there so long, it's no longer on, but is.
<Morbus> hrm. needs the word shoulder to associate though.
<eaton> "It's quite possible I've had a chip on my shoulder so long that it's part of the shoulder."
<Morbus> mottos are short and lyrical.
<Morbus> my chip's been there so long, it's no longer on, but is, my shoulder.
<Morbus> hrm.
<Morbus> no, that's not good either.
<Morbus> ooh! i goti t!
<Morbus> "i've no more shoulders, only chips"
<Morbus> now *that's* a good one.

82! 82 signatures! Ah ah ah!


4 Winged Birds and a European Stegosaurus

Dinosaur news!

The Times Online reports on January 23rd, 2007:

Scientists reconstructing the fossilised remains of a Microraptor gui have concluded that its legs were aerodynamically feathered and acted as a second set of wings to help it to glide between trees. ... [Researchers] said: "Aircraft designers have mimicked many of nature's flight inventions, usually inadvertently. Now it seems likely that Microraptor invented the biplane 125 million years before the Wright 1903 Flyer." ... Analysis of the fossil indicated that the bird was incapable of launching itself from the ground into flight or getting into the air from a running start. Instead, it would have launched itself from trees.

And LiveScience reports on the first appearance of a stegosaurus outside North America:

The scientists unearthed the new Stegosaurus fossils--which included a tooth and parts of the animal's spinal column and leg bones--near the city of Batalha, in central Portugal. Preliminary analyses show the fossils to be indistinguishable from a species previously found only in North America, called Stegosaurus ungulatus. ... The only other dinosaur for which bones have been found in both North America and Europe is a species of Allosaurus, a large meat-eating dinosaur similar to Tyrannosaurus rex, but without the latter's stubby meat-fork arms.

Loren Coleman's excellent Cryptomundo reports on it too, as well as its potential Pangaea confirmation, whilst throwing in the Cambodian stego carving that was recently uenearthed:

Perhaps it is nothing more than a rhinoceros? There is speculation that at one time or another Cambodia had Indian, Javan, and Sumatran rhinos living in the country. Or have Stegosaurs roamed Cambodia, less than 1000 years ago and Angkor's master artists created a representation of one, on a temple?


Mind Games: 200 Years of Mind Control

From Sharon Weinberger's Washington Post article, January 14th, 2007:

The callers frequently refer to themselves as TIs, which is short for Targeted Individuals, and talk about V2K -- the official military abbreviation stands for "voice to skull" and denotes weapons that beam voices or sounds into the head. In their esoteric lexicon, "gang stalking" refers to the belief that they are being followed and harassed: by neighbors, strangers or colleagues who are agents for the government.


In 2002, the Air Force Research Laboratory patented precisely such a technology: using microwaves to send words into someone's head. That work is frequently cited on mind-control Web sites. Rich Garcia, a spokesman for the research laboratory's directed energy directorate, declined to discuss that patent or current or related research in the field, citing the lab's policy not to comment on its microwave work.

David Hambling responds on Defense Tech with a claim from 1810, "as described ... by John Haslam, the apothecary at the notorious 'Bedlam' ... the original lunatic asylum":

One case from London was James Matthews, who said he was being influenced by an implant in his head by a gang using a weird electromagnetic device. This group, one of many, he called the Air Loom Gang, and among the tortures they inflicted on him were implanting thoughts ('kiteing'), stopping him from speaking ('fluid locking'), cutting his circulation ('sudden death squeezing') and 'brain lengthening' which would 'cause good sense to appear as insanity, and convert truth to libel'.

Wikipedia includes an illustration and the following gem in its entry on James Tilly Matthews:

In 1810 John Haslam, the apothecary at Bedlam, decided to publish a book entitled Illustrations of Madness: Exhibiting a Singular Case of Insanity, And a No Less Remarkable Difference in Medical Opinions: Developing the Nature of An Assailment, And the Manner of Working Events; with a Description of Tortures Experienced by Bomb-Bursting, Lobster-Cracking and Lengthening the Brain. Embellished with a Curious Plate.

I miss book titles like that, I do.

The Air Loom was recently recreated "by artist Rod Dickinson in collaboration with Tyne and Wear Museum and technical team and Headway community theatre group. The Air Loom is installed at the Laing Art Gallery in Newcastle until January 5th 2003."



Subscribe to RSS