Sunday, February 11, 2007

A Hail of Cedar Waxwings

I was awakened today by the sound of rain falling on the tin roof, and of someone sporadically throwing lumps of something at the back windows. The former wasn't so strange, but the latter got my attention. I climbed out of bed to stare out of the back windows, only to find that it wasn't raining at all, and nobody was throwing anything. Instead, the air around my bird feeder was filled with streams of small birds going back and forth between perches in the overhanging trees, and the large water dish I provide in lieu of a bird bath. They were all cedar waxwings, Bombycilla cedrorum, and there were several hundred of them. The sound of rain on the tin roof was actually the sound of their berry-blue droppings continuously striking the roof. The thuds on the windows were from the occasional bird that took off from the water dish and collided with a window. They were moving too slowly to be hurt by their impacts, and none so much as lost altitude, though many left mouthfuls of water running down the windows.

I watched this spectacle for at least fifteen minutes, observing the steadily declining water level in the dish. Filled the night before, the water dish was nearly empty by the time the flock's thirst had finally been quenched. I snuck out slowly and opened the spigot that refils the dish to see if they'd repeat the performance, but no joy. They'd done all of the ingesting and excreting they'd come to do, and were not to be tempted to linger any longer. Soon, they streamed away, probably in search of the next berry bearing tree. Come this spring, I will probably find a number of those trees sprouting around the bird feeder, fulfilling the plan first laid by their ancestors at the dawn of the Cretaceous.

When the sound of actual rain was heard on the tin roof later in the day, the water ran from the downspouts in berry blue.

Qwicap 1.4 Goes Beta with Version 1.4b0

Qwicap 1.4b0 corrects a bug that may have interfered with Tomcat shutdown, and a bug that caused newline characters within HTML "textarea" tags to be encoded. In addition, it simplifies web application setup by eliminating the requirement to include the "qwicap.css" style sheet in web applications, and, for convenience, it provides access to Qwicap's internal pseudo-random number generator.

Links to all of the documentation, source, etc. can be found on the Qwicap main page. I have also, at long last, placed the source code into a Subversion repository on SourceForge. I have doubts about whether I've structured the repository in a way that I'll be satisfied with in the long run, but there it is. (Even in the short run, I didn't intend to include the compiled classes in the repository, but there they are, despite my best efforts to delete them.)

Not documented anywhere (except here, obviously) is the fact that version 1.4b0 contains the germ of a new feature that adds the first elements of AJAX technology to Qwicap. (In the interest of reliability, I have no intention of ever making Qwicap depend on AJAX, or scripting in general, but I am open to using those technologies to provide non-critical, optional enhancements.) The immediate goal of this work is a feature that will cause pages in client-side caches to visually reflect their changing status as valid, or invalid, targets for user interaction when the user goes back to them. It is implemented using Javascripts that are automatically embedded in each web page. At present, those scripts are fully functional only in Firefox version 2. My best efforts to make them work in Safari 2.0.4 have failed utterly, and I currently hold no hope of being able to improve on that. However, they come close to working in the current WebKit builds; the remaining problem seems to be that the changes my scripts make to a document's DOM are not rendered. Plainly, that's not good enough for a "real" feature, so it is disabled by default. However, the brave may enable it using the Qwicap.setScriptsEnabled method. You'll want to enable it before your application sends its first web page to the client in order to get consistent behavior for all pages.

By the way, those wishing to add their own application-specific AJAX functionality into their Qwicap applications can do so by creating a FormDataSetFilter to intercept and reply to the asynchronous inputs from their scripts. Just remember to commit your response by closing the output stream before returning from the filter. Such filters are executed within the full context of your Qwicap application, so they have access to all of your accumulated state (with the obvious exception of the local variables in your blocked methods, which can't be in your filter's scope). May you have better luck with your scripts than I've had with mine thus far.

Change Log for Version 1.4b0

  • Corrected the handling of newline ('\n') characters within the content of HTML "textarea" tags. Previous versions of 1.4 had replaced those newlines with "br" tags, which was incorrect. Newlines in "textarea" tags are now left as they are; they are not encoded. In this respect, "pre" and "textarea" tags are now handled identically.
  • Added a few more JUnit tests, and improved a few others.
  • Added the Qwicap.getRandom method to make available to client applications Qwicap's internal pseduo-random number generator instance.
  • Updated the "guess" and "wumpus" example applications to use the Qwicap.getRandom method. Also, removed the "wumpus" application's dependence on the "servlet.jar" library file, and duly removed that file from the distribution.
  • Corrected a bug that may have caused Qwicap to interfere with normal Tomcat shutdown.
  • It is no longer necessary to include the "qwicap.css" style sheet in Qwicap applications. Qwicap will now supply that document automatically. However, it remains necessary for an application's style sheet(s) to import the "qwicap.css" style sheet, unless it overrides all of Qwicap's styles. Applications may still override the default Qwicap styles in their own style sheets, of course, and may outright replace the default "qwicap.css" style sheet, if they prefer, by providing a document of the same name in the application's top-level directory.
  • Various Javadoc improvements, chiefly in classes that are not part of Qwicap's public API.
  • Corrected an error in a Javadoc block and in a separate comment in the QwicapServlet class. The word "send" in both cases had been transformed into "sendFile" due to some overzealous refactoring in the distant past. These corrections have no functional significance, but do make a little bit of the documentation more comprehensible.

Saturday, February 10, 2007

Screech Owl Cam' Status

On Thursday, one of the pair of the squirrels that I evicted last week returned to the screech owl nest box. Both rodents wanted to return, but the sharing arrangement was vigorously disputed and only the victor actually took possession. The return of at least one squirrel was to be expected. In my experience, an evicted fox squirrel's doubts about the safety of the nest box will last a bit less than a week. Only after they've been evicted for three consecutive weeks do they entirely give-up on the nest box.

So, to advance further toward the final eviction of the squirrels, I performed eviction number two late this afternoon. I was going to bring the box down for additional maintenance in any case, so I managed to kill two of the proverbial birds with one stone. It was a good thing I had the opportunity to perform this second bit of maintenance work, because a careful examination of the side camera compartment's infrared illuminators revealed that one had stopped working. I suspected that there would be a problem with those illuminators, because I observed random changes in illumination in the box during the previous nesting season. I assumed it was a loose connection, but one of the LEDs seems to have actually died. The replacement was straightforward, and all illuminators appear to be working at full strength again.

While I had that compartment open, I also took the opportunity to remove an accumulation of dust (from the pine shavings in the nest compartment), to clean the camera lens and the inside surface of the window through which it looks, and to cover the window in the floor of the camera compartment with aluminum foil to prevent light from entering there. That window was included so that I could look up from the ground into the compartment to see the status LED on the audio/video transceiver. Unfortunately, even though it is in complete shadow at all times, at some times of day it let enough ambient light into the camera compartment to create a reflection in the camera window, which was visible on-camera. It took me a heck of a long time to figure-out where that light spot in the images was coming from.

So, the box is more ready than ever for the owls, and, with my television tuned to the "owl channel", as I call it, I sit here this evening awaiting a visit from my big-eyed friends. Here's hoping that the reappearance of the squirrels late this week hasn't put them off.

Late Update

The male screech owl visited the box beginning at 1:13 AM on Sunday. He called for his mate with great vigor both while sitting in the entryway, and while standing on the floor of the box. I could hear some of her answers, and it sounds as though she landed at the entry hole a few times, but she didn't so much as stick her head inside for a look. After all of his singing, the male may have been disappointed by her reluctance, but there's no doubt that he has a mate, and considers the box his choice for a nest site, so I think it'll all work out in the end.

Saturday, February 3, 2007

Screech Owl Cam' Status

My local eastern screech owls, Megascops asio, usually begin nesting sometime in March (the average starting date over the last four years has been March 10th), so I'm rapidly running out of time to complete my long-postponed nest box maintenance work. With that in mind, I brought the box down today, removed the owlet rail, evicted a rather nice pair of fox squirrels (I hate doing that to them), cleaned the interior, put in new bedding material, washed the camera compartment windows, and re-rigged the mounting bracket and box with new pulleys. One of the old pulleys had rusted itself solid during last year's nesting season, which made it very difficult to get the box back onto the mounting bracket. Having replaced the lousy hardware store pulleys with good ones from a boating supply store, the block and tackle has never worked better, and it should be free of rude surprises for many years. There's other work I want to do before nesting begins, but if the owls were to move in tonight, the current setup is good enough.

Will the owls nest in the box this year? As always, that's up to them, but at 10:30 PM this evening, the male owl perched near the nest box and repeatedly called to his mate, which is an excellent sign. If they do nest in the box, the screech owl cam' will return, for its eighth consecutive year.

Monday, January 29, 2007

Anything for a weird life...

Searching a large, dark, cluttered closet for a screech owl, while a Mississippi kite perches overhead, watching, and calling-out impatiently for someone to bring it its mouse dinner.


"Do you know anyone who can get me some moles?"

"Nope. Want a shrew? I also have a beaver."


Balancing thirty-plus feet in the air on a ten-foot ladder standing in the upraised bucket-loader of a tractor, trying to insert an enraged barn owl into a nest box.

"We mounted that one a little high. Careful, now."


Just a few of the situations that confront people who have wildlife rehabilitators for friends.

Of course, those're nothing compared to the stories the rehabbers, themselves, could tell you.

Wednesday, January 17, 2007

Geminids and Mysteries Revisited

When you have an old house with a mail slot, rather than a mailbox, you don't have to pay any attention to your mail until the drifts begin to block access to the front door, or until someone shuts off your utilities. Hoping to head-off the latter, this evening I began one of my occasional excavations. Deposited here and there in the accumulated strata of junk mail were the dreaded bills, but also a few unexpected gems in the form of holiday cards, obsolete now, some would say, but I prefer to think of them as aged to perfection.

Significantly, one was from Margaret & David Bamberger. In it, Margaret said she'd read my blog post "Geminids and Mysteries" and "[...] when I read about your mystery critter I had to laugh because when we were camping one time a similar thing happened. After being awake for a while wondering if I should hide in the truck because I couldn't imagine what was out there, I finally figured out that a bunch of feral pigs were hanging out doing god knows what."

That's the best identification of my mystery critters suggested so far, and I'm inclined to accept it. So, now I know. Probably.

Monday, January 15, 2007

Martin Luther King, Jr. Day

Martin Luther King, Jr. statue on The University of Texas at Austin campus. ©2007 Chris W. Johnson.

"[I]n any movement or struggle there come times when you need some individual or some group of individuals to step forward and become the symbol of the struggle, the personification of its essence, the face, if you will, of what you are fighting for. Call it a leader, but it's not a leader in the sense of any kind of control. It's a leader in terms of inspiration and vision. It's a man or woman who doesn't see him- or herself as any larger than the movement itself.

"Martyrs, champions, men and women of all kinds throughout time have stepped forward as this kind of figure, from Jesus to Joan of Arc. Gandhi played this role in the struggle for liberation in India. John F. Kennedy became it for many Americans at the turn of the 1960s. Martin Luther King played it for a large section of the civil rights movement."

John Lewis with Michael D'Orso, Walking with the Wind: A Memoir of a Movement, pg. 302.

Martin Luther King, Jr. Day honors more than Dr. King, it honors all of the people of America's civil rights movement. Their struggles, sacrifices, and even deaths, did more to advance the never ending cause of cleansing and perfecting the soul of our nation than any other effort in my lifetime. To my mind, that makes this a national day of honor and remembrance of the first order; more resonant than Independence Day, more significant than the birthday of any of our presidents, or of Dr. King, himself. "Thank you all" isn't adequate, but it ought to be said, and that's a big part of what Martin Luther King, Jr. Day is about.