Velvet Slug

September 3rd, 2007



The specimen of Angustipes ameghini above is from somewhere in our backyard. Allie spotted it from a considerable distance using her odd powers of creature clairvoyance. I think she named it, probably something like “Clarence” or “Rainbow”, but I don’t recall exactly. I was out trying to get a good picture of a spiderweb, without much success.

The “velvet slug” is an introduced species, originally noted in Paraguay. They’re supposedly a pretty bad pest, but one at least has a friend now. Adult slugs can live for a few years apparently.

Squirrels Indicate Problems

September 2nd, 2007

After much confusion, the “family outing” yesterday ended up being a trip to the opulent Whole Foods World Headquarters store by me, Allie, and Pat. Christopher had backed out to stay home and “keep Mom company”, a decision which understandably delighted Elaine, who had worn herself out during two outings of her own.

After the traditional pizza on the traditional roof with the traditional organic soda, and the traditional hurling of empty (or not empty) beverage containers into the recycling bins with as much force as could be mustered, we shopped for needed and unneeded items and sampled the free samples for a while before the final money extraction and departure. In the garage right across from the van I spied the convertible of a friend, top down, and I told Allie and Pat, suggesting that they produce a “stick figure fest” calling card.

The van, ordinarily filled with a stock of almost everything, seemed to be out of paper, but I found a mostly-blank laser-printed email message in a plastic tub of miscellany. While tearing out the unprinted portion, I noticed a really odd stench, which in the context of that van’s interior is a pretty strong statement. I asked the kids whether any weird wet stuff might have been left in the vehicle, and Pat said something about having collected an enormous ball of pond scum during some recent outing. That more-or-less explained it, for the moment, and I was satisfied as I walked the completed artwork over to the target Miata.

The weird smell got weirder on the drive home, but I assumed it was because the biota in the pond scum ball were awoken by the sun once we left the Whole Foods parking cavern. Later in the afternoon I remembered to ask Elaine about the odor, and she said the van always smelled like something due to the perpetual miasma filling the garage itself.

By four or five o’clock, however, the state of the garage had deteriorated markedly, and it became clear that the smell was in fact the putrid emanations from the corpse of some unfortunate rodent trapped in one or another pile of debris. Challenged, Elaine started cleaning stuff and packing up garbage and Goodwill bags in a quest to locate the body. (It says something that she explicitly chose that task over preparing dinner for the kids.) After some time, a portion of the garage had become tidier than it’d been in some years, bringing it up to the level of a typical 9th Ward flood ruin, but nothing gruesome was found. With a couple of fans running the air had cleared up a lot.

While carrying sacks of junk around out of the garage to the side trash storage area (hidden behind a fence due to neighborhood association mandate), Elaine started to notice that she was still detecting the smell, but now it was concentrated outside the garage. Finally she started noticing the flies, and that which was interesting them: the hood of the van itself. Lifting that, she discovered that something furry had managed to wedge itself behind some object in that very crowded engine compartment before expiring some days previous. Impressively, Elaine actually tried extricating the corpse (gloved, of course), but was unsuccessful.

So we did what anybody would do in such a predicament: we called zoologist Rio Tenango at Amazon Rodent & Wildlife Control. From a man with a name like that we felt we could expect success if we were calling to arrange the removal of a lion pride from our living room, so we were pretty confident. Elaine did ask, however, if there would be a charge should the task prove impossible. “If I have to cut the thing to pieces, I’ll get it out of there,” the fearless Mr. Tenango responded.

We had thought it was a raccoon, because all we could see was the tail and it seemed like something a raccoon would do. (Raccoons had taken up residence in the roof of a previous home, after creating an entranceway in the chimney race large enough to pilot a kayak through.) In fact, when Rio arrived and immediately declared the remains to be that of a squirrel, Elaine asked “isn’t that pretty weird?”

“It’s not normal,” came the zoologist’s laconic reply.

The squirrel is gone now, as is Mr. Tenango and a sum of money that I can’t deny is well within the range of what I’ll surrender in order to avoid wrestling with dead mammals.

Pears

August 23rd, 2007

There’s a pear tree in our neighbor’s yard, right up against our fence. The thing bears a lot of fruit (specifically, it bears pears). Formerly – that is, prior to this year – we had generally considered the tree to be pretty useless in the fruit department because the pears generally tasted like nothing – just crunchy water.

My brother-in-law told us that if you store pears that taste like nothing in the refrigerator for a while, they get better. We tried that with a few of the 500 pears hanging over our fence, and it turns out that he was right. They’re much better after the refrigeration; in fact they’re very sweet.

I’m a little concerned that consuming the pears – these particular pears – may put me or my household under a curse, as the tree was planted by the former resident of that house, a man who met with a sudden self-inflicted end. Perhaps, however, the tree doesn’t care.

I’ve been told I’ve been lax in updating this all-important blog, a charge I can hardly deny. The note above is seriously the most interesting thing I’ve thought of lately. However I’ve just remembered that I have a jar of “Bruiseised Chili Garlic Sauce”, or something like that, and I should review it.

Floodgates

June 28th, 2007




Four floodgates open at Mansfield dam outside of Austin. I don’t know that I’ve ever seen four open at once. There’s been a lot of rain up in the Hill Country, and since the area for hundreds of square miles is limestone or granite covered by 3 inches of dirt, the rain flows into the river basin pretty quickly. The reservoir behind this dam is up by over 40 feet since the beginning of the year.

Spider

June 21st, 2007


A spider on a mint flower spray

I don’t have any idea what kind of spider this is. Strangely, I could find no good spider identification site on the net. There are a couple, but they’re not easy to use, and in any case I couldn’t find anything close to this one.

Taken with my E-500, 50mm lens, and a cheap-o off-camera Quantaray flash with a Photoflex umbrella diffuser. It started to rain while I was taking the picture, so the umbrella was handy. The background is dark because it’s relatively distant dirt unilluminated by the flash.

I want to see if I can find a good simple optical slave hot-shoe trigger, so that I can use my old OM series flash instead of the wimpy Quantaray. That’d let me crank down the aperture a couple of stops (I think) and give me a little more depth-of-field.

Belated Update




The spider, apparently named “Samson”, with some sort of flying ant creature.

Papilio polyxenes

June 2nd, 2007

We planted dill and fennel in our butterfly garden, and almost immediately the plants were targeted by the local Black Swallowtail population.



The butterflies like dill, fennel, parsley, wild carrot, and lots of other stuff apparently. The caterpillars hatch as very tiny things, and then they eat like pigs for a while. Local hornets seem to like the caterpillars a lot.

The butterfly pictured here hatched out inside our house. He had been brought inside while a caterpillar to protect him from aforementioned wasps.



There are actually two caterpillars in the photo. One is pretty small, and the other is about half as big as they get before they form a chrysalis.

Wet Bean Curd

May 27th, 2007

This is the first in what may be a series of between 1 and dozens of articles about strange (to me) packaged foods. A lot of the items will come from the fabulous MT Supermarket in Austin.


My son Christopher, who often accompanies me to MT in order to nurture his addiction to mung bean cakes, saw this jar of “Wet Bean Curd” and insisted that I add it to our shopping cart. (Generally at MT I buy one or more packages of excellent shiitake mushrooms, Thai basil, possibly shallots when they have good ones, and random other supplies. Plus, bean cakes.) I don’t know what motivated him, but I said “Ok” because I had half an idea to do what I’m doing right now, and that seemed like as good a start as any.

Wet Bean Curd seems like an honest name for the product; compare it to American product names like Ho Ho’s or Ketchup even, a non-English word whose actual meaning nobody really knows or cares about. However, I feel that Wet Bean Curd should actually be called Salt With Spicy Wet Bean Curd in order to most accurately describe the contents of the jar. Yes, it’s wet – the bean curd and pepper shreds float seductively in a mucilaginous slurry. Yes, it’s bean curd, at least judging by texture. Bean curd itself of course tastes like almost nothing, instead appearing in foods to make sauces and seasonings edible as solid meat-like chunks. In this case, the bean curd has faithfully absorbed the taste and mysterious stickiness of a tank of particularly benighted bilge water. This is one of those foodstuffs whose production really confuses me. How can a whole factory full of people not realize how hideous this stuff is?


I’m jumping the gun a bit. We got the bottle home, and I was of course excited upon noticing that the Chan Moon Kee food packing house is ISO 9001 certified. After stowing all the other purchases, I opened the wet bean curd and snagged a chunk with a fork. The first impression was that it was really salty. The bean curd was slightly toothsome and not mushy; I suppose you could spread it on something if you wanted to, but I doubt that’s what the stuff is intended for. (I have no idea what it is intended for, and I had none even before tasting it.) Though it looked like there were a lot of pepper pieces in the mix, it wasn’t particularly spicy. In fact, the second through fifty-third impressions as I chewed on that chunk of bean curd were predominantly identical to the first: really salty. Oddly, salt is listed as the third ingredient, just ahead of wine (and I really don’t want to find out that there’s gooey wine to be had in Hong Kong).

I tried a second piece of wet bean curd. This time I tried to concentrate on other flavors. There was the spiciness, of a pretty tame sort without much pepper flavor. There was also a strange, slightly acrid tang to it, not pleasant in the least. Overall, therefore, I declare wet bean curd to be a bad-tasting mildly spicy substance that’s overpoweringly salty. Even if you like acrid weird-tasting spicy marinated bean curd, I can’t imagine that you’d like it dosed with ten times as much salt as anything like that should need.

I won’t be buying more of this stuff, but it’ll stand as a cautionary example here at the beginning of this series. It’s not safe to assume that just because something is in a jar, attractively labeled with an image of a wading bird, and placed for sale on a grocery store shelf that it’s worth eating. I accept that somebody might like wet bean curd, just as I accept that somebody out there must be drinking all the Tequiza being produced. I just don’t understand it.

ID3v1 tags via Erlang

May 27th, 2007

I’ve been taking considerable doses of disorienting but only marginally effective phenylephrine-based cold medicine. This has made it hard to think about anything, yet I did manage to type in an Erlang program to find ID3v1 tags in MP3 files. This program represents about 0.5% of the work necessary to complete my vague goal of implementing a music server in Erlang, which is a pointless effort in any sense other than Erlang practice.

Here’s the routine that pulls a tag from a file:

load_id3v1(FileName) ->
  case file:open(FileName, [read, binary]) of
    {ok, Handle} ->
      Rv = case file:pread(Handle, {eof, -128}, 128) of
        eof -> missing;
        {ok, <<$T, $A, $G, ID3v1/binary>>} -> ID3v1;
        X -> {garbled, X}
      end,
      file:close(Handle),
      Rv;
    Whatever -> Whatever
  end.

All that does is read the last 128 bytes of the file and look for the ID3 “TAG” marker in the first three bytes. If it finds that, then it returns (as a binary) the remainder. The ability to work with what amounts to blocks of raw memory in an idiomatic fashion is one of the most practical aspects of Erlang. The syntax is a little painful.

The main matching expression in the function does its work with a single match to a binary pattern. The pattern lists out the three characters of the tag – in Erlang, the notation “$c” means the character code for character ‘c’. (Erlang seems a little quaint with respect to character encodings.) The default semantics of an integer value in a binary pattern like that is that they signify values to match in single bytes. (I could have written that “TAG” instead of $T, $A, $G, by the way.)

The tag contents are matched as whatever is sitting there in the 128-byte block after the tag. The unbound variable name “ID3v1” will be bound to that 125-byte region of memory, and its type will be binary. Of course, that match will only work when the last 128 bytes of a file actually does begin with “TAG”. If not, that matching expression would fail, and the “case” expression would fall through to the “X” pattern, which returns a lame error indicator.

That’s all pretty elementary stuff, but I notice that the binary data type doesn’t show up too often in Erlang blog posts I see.

To use that function for real, what I’d do in my fantasy Erlang server is build a couple of tables. One table would contain the actual filename, plus the tag attributes, plus probably a numeric key to make it easier to communicate the file identity back and forth to web clients. In a current Java implementation, I’ve found that the issue of maintaining the integrity of interesting file names – think Sigur Rós tracks – as they go from the file system, into Java (Unicode), out to the browser, and back, to be a real headache, even requiring explicitly adding ISO-8259-1 character encoding to my Ubuntu installation. The Java file handling libraries, in particular the code to return the contents of a directory, work in the C domain, so they can’t handle simply-encoded filenames without the platform being made to understand. Or something like that. The point is that nice identifiers would be easier to handle as the medium of exchange in a web app.

The second table would capture hierarchical grouping relationships, but I haven’t thought that through much.

To continue looking at interesting things one can do with binary stuff in Erlang, consider what would have to be done to use some of the ID3 attributes. The tag contents are broken up into 30-byte regions for artist name, album, track, and a comment. (Discussion of how pathetically lame the tag architecture is are irrelevant here.) Those are padded with null bytes, normally. Well if we want to turn those into Erlang strings, we need to avoid the nulls – just calling “binary_to_list” on one of those 30-byte blocks would give us a “string” with a bunch of nulls at the end.

We therefore need a “de_null” routine to get rid of those zero bytes:

de_null(B) -> de_null(B, []).
de_null(<<>>, RS) -> lists:reverse(RS);
de_null(<<0, _/binary>>, RS) -> lists:reverse(RS);
de_null(<<C:8/integer, Rest/binary>>, RS) -> de_null(Rest, [C | RS]).

That’s written in a pretty conventional Erlang tail-recursive loop. The routine checks the first byte of its binary argument, and when it’s a zero it returns the reverse of the list it’s accumulated (backwards) from all the previous bytes. This isn’t bad, as those bindings to successive values for that “Rest” variable don’t involve copying anything – it’s just moving the pointer through the binary. However, we could do this another way:

de_null(B) -> de_null(B, 0).
de_null(Binary, Offset) ->
  case Binary of
    <<Stuff:Offset/binary, 0, _/binary>> -> binary_to_list(Stuff);
    <<Stuff:Offset/binary, _:0/binary>> -> binary_to_list(Stuff);
    _ -> de_null(Binary, Offset + 1)
  end.


In this version, instead of accumulating a list, we’ll just keep a byte counter through the iterations. Each iteration checks to see whether one of two things is true: that there’s a zero byte at the given offset, or that we’ve run out of binary. It does this by using the counter as the size of the “head” of the binary block, with the notation “Stuff:Offset/binary”. That says that the variable “Stuff” should be bound to the binary subset of the block starting at the beginning and proceeding for “Offset” bytes.

In this case there’s no practical difference. Sometimes, however, the indexing approach can be a much more efficient alternative to using lists. Appending to the end of a list is expensive, while scooting an index forward by a byte is essentially free.

Tegetthoff Assignment

May 25th, 2007

Before going to bed last night, Christopher declared that in the morning we would search the internet for information on the Austro-Hungarian Tegetthoff class dreadnoughts. I acquiesced, because that seemed interesting; of course I had never even heard of the Austro-Hungarian Tegetthoff class dreadnoughts.

This morning I was reminded of the task. As it happens, the Tegetthoff class dreadnoughts are well-represented on the internet at the Austro-Hungarian Tegetthoff Class Dreadnoughts Ultimate Site, which seems fitting. If you’ve got a few minutes, I advocate reading the story of how the Viribus Unitis was sunk: it’s one of those stories that would sound too fake if it were fiction.

Hello I am a blogger

May 24th, 2007

The sentence, “I am a blogger,” is to some extent in my head still equivalent to the sentence, “I am pretentious and stupid.” I will try to get over that.

I also want to update the stupid stock image up at the top with one of my own pointless images, but I don’t know how.