Tuesday, February 28, 2017

A Geographic Pun

Germany is full of Bad places.

State Capitals

The capitals of the states here in the United States of America are an odd lot, geographically speaking. That is, where in the state they are located follows no one particular pattern. Some are situated very near the geographic center of the state, such as Columbus, OH; Indianapolis, IN; Pierre, SD; and Bismarck, ND. Some are on a body of a water along the edge of a state, such as Boston, MA and Trenton, NJ. Carson City, NV; Cheyenne, WY; and St. Paul, MN are also situated only a few miles from their borders. Lansing, MI; Phoenix, AZ; Sacramento, CA; and Santa Fe, NM are not very close to the center of their respective states, but are generally towards the middle in at least one direction. On the other hand, Lincoln, NE is nowhere near the center geographically, but may be close to the population center of the state, given the distorting presence of Omaha, Nebraska's largest city, on its eastern border. A similar situation exists for Harrisburg, PA.

Why were there such great differences into where state capitals are placed within their states? It is largely a matter of history of the respective states.  State capitals were often at the center of an area of early settlement and development, or along a water route or railroad route. While placing the capital at the geographic center helps limit the maximum travel time from any point in the state, if the population distribution is heavily weighted due to history of settlement, transportation facilities, or topography, then another location may make more sense. And in other cases, the capital's location made a lot of sense in such cases when it was made the capital, but no longer does. Thankfully, in this era of airplanes and automobiles, it is much more convenient to reach any state capital from anywhere in a state, intervening mountains and lakes notwithstanding.

Monday, February 27, 2017

Can't Brain Anymore Tonight

My day involved too much bizarre troubleshooting and an evening software demonstration for somebody in Perth. I didn't get home until 9:30 PM. I have more meetings again at 8:30 AM. My sole entertainment for the day has consisted of dinner out, a short mall walk, and a very little time online. There will be no long post tonight. Instead, I'm going to surf the web for a few more minutes than crawl into bed. Sorry. Good night, all.

Sunday, February 26, 2017

The Great Airstream Floor Plan Mystery

When I purchased my fixer-upper Airstream trailer, the original floor plan was something of a mystery. From the serial number and online sources I was able to determine it was produced during calendar year 1949, but whether it was a model year 1948, 1949, or 1950 trailer was another matter. The bewildering array of model names, and changes to those names, for their 22 foot trailer (20 foot body) confused the matter, but Airstream online archive have a scans of a few ads and a brochure from the 1948-1949 time period that helped narrow things down a little.

Alas, not very far. All of the original wood closets, cabinets, chest of drawers, bed or dinette frames, etc. were long gone. The only portions of original interior remaining intact were the stove, the stainless steel and aluminum sink cabinet, and three overhead aluminum cabinets with wood doors. The stove and sink were in a common position in virtually all of those floor plans, and the position of the overhead cabinets were not indicated in the plans at all. Window positions might have offered some clue, but the actual window positions on the trailer don't exactly match any of the plans.

I could come up with my own floor plan if I wished, but I'm approaching this project looking to largely emulate the original design aesthetic. There are a few changes I plan to make. I plan on leaving the interior aluminum skins unpainted, because I like the look of shiny aluminum. And while I'm initially leaving out the propane appliances, I'm planning to be able to add them in the future if I so wish. Nonetheless, I want something pretty close to original.

Plan from 1948 Airstream ad
The plan from the 1948 ad I'm just going to rule right out - those large closets at rear could make the adjacent bed area feel quite closed in. I'm not claustrophobic but many are, so bad idea right there. Sadly, that eliminates the possibility of a real bathroom.  I've gone to a few RV dealerships and RV shows, and checked out some of the small wet baths used in some of the smaller trailers and class B motor homes. No way. Again, I'm not claustrophobic, but there's just no room to shower comfortably in one of those. So the 1948 plan is just out.

Plans from 1949 Airstream brouchure

The 1949 brochure shows three variations each for the front and rear portion of the plans, for a total of nine possible plan combinations. But all of those combinations result in a area at front that could sleep at most two, in a bed no more than 46" wide. Great for a single person or a couple, but most of my friends of either sex are single - not cool if I want to bring more than one along.

Plans from 1949 Airstream ad
That brings me to the plans from the 1949 ad, which is virtually identical at center to the 1949 brochure (save reversing sink cabinet and cook stove), with the rear transverse double bed arrangement the same as from the brochure. The differences are at the front. There are two additional front end variations shown here.  One is virtually the same as the 1948 ad, featuring two single beds that double as benches for the dinette. The other is essentially half of that arrangement, with one single bed forming part of the dinette arrangement. One of those variations is my most likely floor plan.

With the one single bed approach, I'm back to the problem mentioned earlier, of only having the one additional spot to sleep.  However, it can easily accommodate another on an air mattress at the foot, or two on two different sleeping pads. The two beds variation looks like it might be a bit cramped, though. I'm not sure.

Closet and chest of drawers.  From 1949 Airstream brochure.
Having decided as much as I have, that leaves me with a bit of carpentry to do after or in parallel to the general repair work on the trailer.  I'll need two construct two closets and two chests of drawers, and the frame for the rear bed, all of which have at least have simple drawings in the 1949 Airstream brochure, as well as horizontal dimensions for the closet and chests of drawers. The front end variations that interest me lack an drawings but I can probably put something together. The main challenge will be getting the curves right - note the curve at the rear of the closet, to fit the curved shape of the Airstream.

Rear double bed.  From 1949 Airstream brochure.

I've cleared up some of the mystery in terms of possible floor plans, narrowed down my own choices of which to choose from, and figured out roughly what carpentry will be required for the interior. That probably enough on this topic for now.

State Parks

In the United States of America, the federal government's National Park Service operates a series of national parks, monuments, memorials, preserves, reserves, lakeshores, seashores, recreation areas, battlefields, and historic sites, around 400 hundred total, with various other federal agencies operating additional recreation and/or conservation lands. In addition to this vast system of federal lands, so extensive in acreage they could contain several entire European countries, most if not all of the individual states operate their own systems of state parks, and sometimes recreation areas, forests, historic sites, etc. as well.

Many state parks protect outstanding natural scenic features, like smaller versions of national parks. For example, Hocking Hills in Ohio protects the overhang caves, waterfalls, and other rock formations that have been carved into the sandstone by millennia of erosion, and makes them available to a multitude of sightseers and hikers.  Carter Caves in Kentucky protects sandstone arches and natural bridges, and a series of caves formed in the karst. Ricketts Glen in Pennsylvania preserves a stand of old growth forest and a gorge with a multitude of scenic waterfalls and rapids. Roxborough in Colorado protects impressive rock formations at the boundary between the plains and the Front Range of the Rocky Mountains. Custer in South Dakota features a scenic drive among impressive granite formations, a variety of habitats, and is home to an impressive array of wildlife, including a large herd of bison.

Others protect and interpret cultural resources. Homolovi in Arizona exists because of the ruins of ancient pueblos. Allaire and Barsto in New Jersey protects old iron furnace towns; Allaire also features a narrow-gauge demonstration railroad. Spring Mill in Indiana protects a rebuilt 1833 era village, including a mill powered by water from a flume fed by a spring, the rest of whose water plummets through a narrow gorge, a hike through which offers a cool respite on a hot summer day,  (Spring Mill also protects a stand of old growth forest, and acts as home to a museum and memorial dedicated to Gus Grissom, who grew up in nearby Mitchell.) Cass Scenic Railroad in West Virginia preserves a steam-powered logging railroad, including the depot area and a logging camp.

Most state parks are far humbler, however. They're usually smaller areas, and situated along or completely surrounding a reservoir or flood control lake. There's usually some combination of campground, cabins, and/or lodge, some hiking trails, and maybe some additional recreation facilities, such as tennis courts, a golf course, or swimming pool. There may be a riding stable, or bike rentals. A boat ramp is common. So is a swimming beach, even if the sand had to be brought in from far away. I haven't made any systematic survey, but it seems to me that such parks constitute the bulk of the state parks in America.

There is nothing wrong with such parks. They offer great recreational opportunities. They offer a chance for at least a little bit of a change of scenery from the city and the suburb. They can let you paddle and splash, to pedal or ride. They offer a semi-natural environment, a bit of the great outdoors, a chance to stretch the legs and senses, to get out and discovery.

If a state is luck enough to have some mountains, a sea coast, or a shore along one of the Great Lakes, those areas might make up a greater portion of a state's park system. West Virginia has a large number of parks, such as Pipestem, Bluestone, and Hawks Nest, built around its numerous scenic valleys. Colorado has a number of parks in the Rockies. However, even Indiana and Ohio, which front upon Lake Michigan and Lake Erie respectively, have far more of the artificial lake type park than any other. Despite being a coastal state, most of New Jersey's state parks are inland, though Island Beach State Park is an excellent example of a coastal state park (though it lacks a campground).

What the artificial lake parks by and large don't offer is amazement. They're great places for a quick change of pace, for the young, and for the traveler seeking a place for the night that isn't a chain hotel just off the highway or a commercial campground like a KOA. They're great for particular types of recreation. They just lack that something amazing and novel that defines the national parks and the truly great state parks. This doesn't mean they should be avoided. By all means check them out.Read up on the park in question. You can have a great time at a state park - just get the info so you can set your expectations properly.

Saturday, February 25, 2017

What a Difference a Day Makes

Yesterday at this time I was wearing shorts and a t-shirt, walking and working outside.  It was 77° F.  Now it is 32° F with a wind chill of 22° F, and there are flurries.

Rest for the Weary

I did a little work on the trailer then high-tailed it over to a friend's place. A bunch of us were meeting there and I made a vegan, gluten-free version of my antipasto and a pasta salad, also omitting the mushrooms, green bell peppers, and hot peperoncinis, in order to produce snacks everybody could eat.  It went fairly well. If I have time and energy I'll likely do something similar in the future, but also have a separate carnivores plate with meats and cheeses, and a shaker of parmesan for the pasta salad. We watches some anime, then Miss Peregrine's Home for Peculiar Children, then Zootopia, and finally a little more anime before finally calling it quits around midnight. Much fun was had by all. I'll toss in another photo from inside the trailer.

The dry fitting of floor and wheel well continues.
The floor must be in first before the sheets responsible for the hole at right can be rejoined.

Thursday, February 23, 2017

Canary Islands

At lunch today, I read that the Canary Islands were named not for canaries (those noisy, colorful birds), but instead for the large dogs (canines) found on the islands by Portuguese sailors during the fourteenth century.  Who knew?

Wednesday, February 22, 2017

Progress on the Trailer Front

Actually, I made progress toward the rear of the trailer, and around the middle. Working on a camping trailer like this, rather than frame off, is rather like working on a big 3D puzzle from the inside. It presents some interesting challenges and puzzles, some of them mental, and some physical.

Tonight, I dry fit the next-to-rearmost sections of floor as well as one of the replacement wheel wells I'd fabricated. New Airstreams have an anti-wicking agent "painted" on the first few inches along the outside edges of the floor.  I couldn't find any details on that product, however, so the new floor has had several coats of polyurethane applied to it plus black oil-based paint along the outside edges.

New wheel well being dry fit
And below is why I'm dryfitting major components right now.  While three of the four sides of the wheel well rest exactly where they should, I discovered that it extending too far down on the outboard side.  I have to get it situated more precisely, clamp it down, and trace the shape that is going to need to be cut out. I'll also need a new flange/angle piece to replace the one that is inches too far down.

Wheel well extends several inches below the wall.  Oops.
Only once the wheel well is definitively situated can the section of floor shown in the first photo be finally installed, and the insulation needs to go in beneath it first. Which will then allow the section of floor that should go beside it to be installed.  That, in turn, is a prerequisite for dealing with the situation below.

That's just a bit of a mess

Those aluminum sheets are supposed to join up.  The one on the bottom, from the "belly" skin, is supposed to get riveted to the nearly-vertical sheet that is like a "wall."  However, those rivets are also supposed to pass through to a aluminum channel running along the outer edge of the floor.  That would be on the section of floor that I can't install before the other section, which can't be installed until the wheel well is in place.  Oh, and the "wall" skin is supposed to be riveted to the piece to the left, but I have work to do before that can happen.

This is definitely keeping me busy.  And puzzled, at times. The dependencies and connectedness of the structure can turn otherwise simple bits of repair or replacement into complicated challenges, particularly with respect to the sequence some activities must occur in. But I shall trudge on through, and hopefully have it campable this year. There's a lot of amazing things to see here in America, and this is how I want to visit many of them.

Typing with the Brain

A journal article on a new Brain-Computer Interface describes a system allowing paralyzed people to type.  That is darn cool.  It would be even better if researchers knew how to restore brain function, but even this is amazingly helpful. Eight words per minute may not sound like an impressive rate, because it isn't for somebody whose hands work, but for somebody who is paralyzed it could make all the difference in the world.  Kudos to the researchers who accomplished this, and to those who were willing to try it out.

Seven Earth-sized Exoplanets!

Scientists have found seven Earth-sized planets in the TRAPPIST-1 star system, forty light years away. There's a lot of coverage on it, from CNN, Fox News,  ABC News, and every other news outlet under the sun (this sun, not TRAPPIST-1).  They're orbiting a dwarf star but close enough there may be liquid water.  Very, very cool stuff.

Tuesday, February 21, 2017

Glyptodon: Giant Relatives of the Armadillo

I was browsing the news before signing off for the evening when I followed a link to slideshow-esque article about an Argentinian farmer finding a Glyptodon fossil buried in his field. I won't link to the article in question, because I despise articles formatted that way, and only shear fascination got me through that click-fest to learn of the Glyptodon. As soon as I had the name of the creature I closed that window and searched for more, better-formatted, information about it. I'd never heard of the creature before, but it was a genus of large, armored mammals that are like giant armadillos. Unsurprising, they are relatives of the armadillo, and they went extinct thousands of years ago, but likely coexisted with humans for some times. Unsurprisingly, their fate is debated, as with other megafaunal extinction: was it hunting, climate change, or both? Some have speculated on humans of yore using the shells of dead ones as shelters.

By Heinrich Harder (1858-1935) - The Wonderful Paleo Art of Heinrich Harder, Public Domain, https://commons.wikimedia.org/w/index.php?curid=1143767

Apigalypse Now

I'm to tired from day job and working on the trailer to write something intelligent or pithy, so I will simply mention that reports of a Great Texas Pig Apocalypse.  Don't worry, Texas has a plan. Surprisingly, it doesn't involving shooting the feral pigs.  Apparently, that approach can't kill enough of them, quick enough.

Monday, February 20, 2017

Brain Dead

I feel like I'm brain dead at the moment. Too much time staring at the computer screen at work, followed by a couple of mildly-strenuous hours of work on the trailer, and my evening walk, and doing the dishes, have left me in a sorry state tonight.  So I'll just provide this handy link to a pair of cute cat pictures.

Sunday, February 19, 2017

Keys - Don't Leave Home Without Them

Keys - don't leave home without them. Seriously. Once you've locked and closed that door behind you, you're not getting back in without them. Maybe you've got a way around that problem. Maybe you stuck an extra in your wallet, which you also left back in the house. Maybe you gave a copy to a friend, but they're inconveniently unavailable. Or maybe you were smart and hid a key someplace - and can even remember where that someplace is. If none of the options pan out, there's always a locksmith - assuming you have a phone available to call them with. Of course, the simplest solution is just don't walk out the door without them.

The locksmith did eventually arrive. The normal tricks failed, leaving him to drill out the lock. If I'd known he was just going to drill out the lock, I'd have grabbed the cordless power drill that was still available in the backyard and saved myself a lot of time - though a trip to the hardware store and a new knob installation would have still taken time and expense. Two hundred fifty dollars later, I have a new door knob. Sigh. It is nice and shiny. That's an improvement, actually - the finish had begun wearing off the old one, and it would sometimes, rarely, act up.

At least I made some more progress on the trailer today. Even there, the ninety minute delay imposed by the lock incident seriously cut into my working time, as by the time that was dealt with daylight had faded and the temperature was soon to dip below the dew point, making any sanding or painting of old steel a problematic proposition. Tomorrow promises to be nice again, so maybe I can get a bit done after work.

Another lesson today reinforced: refit work is far more time consuming than new build. If I wasn't having to work around pieces already in place, or a previous owner's attempts at repairs, this would be a much easier proposition. Or if I'd gone ahead and drilled out hundreds of rivets and done a frame-off restoration - though without a garage trying to protect the floor of a 20 foot long trailer floor while replacing it might have been a messy prospect. Oh, well.  We live, we learn. Each day brings me closer to completion, even if they fall short of the progress I'd really like to be making.  I shouldn't complain much - the weather has been awesome for February.

Okay, enough rambling for now. I'm going to get cleaned up and go to bed. More writing and programming will come again someday when the weather takes a turn for the worse, I need a break, or I get the trailer floor replaced and the overall thing sealed up a bit more.  Have a nice night, everybody.

Saturday, February 18, 2017

All the Live Long Day

I've been working on the trailer,
All the live long day.

Actually, it just seems that way.  I did spend quite a bit of time today and yesterday working on my ancient but decrepit Airstream camper trailer, making it slightly less decrepit. I did other things, as well.  I made trips to the orange big box store, to replace both the drill bit that broke and the second drill bit of the same size that broke 90 seconds later, and to pick up a few other items.

And I celebrated some friends' birthdays with them. I made a little more progress on reading The Sea & Civilization, and have at least reached medieval times, slightly more than halfway through the book. Venice is a new and growing power. As I'm only reading this book when I grab food out, progress has been understandably slow. It is actually quite an interesting book, covering seafaring across the entire throughout the broad span of human history. I'll write a review when I eventually finish it.

I just finished reading Amanda Green's Nocturnal Lives "boxed" set on my tablet.  The set consists of the novels Nocturnal Origins, Nocturnal Serenade, and Nocturnal Interlude. They're urban fantasy detective novels, a change from my normal reading, but a lot of fun. I would definitely recommend them if you like mysteries and urban fantasy. If you're only a fan of one or the other genre, I'd still suggest giving them a look - you might find you like them.

One of the things I picked up today was battery-powered inflater that uses the same battery packs as my battery-powered power tools.  It worked like a charm, showing the pressure. I had a 12 volt inflater that works OK, but I either need to have it plugged into my car's cigarette lighter/power port, or else run an extension cord and converter, and doesn't have a built-in pressure gauge.  What I bought today does have a built-in pressure gauge, and doesn't need any darn cords.  I love that.

And with that, I shall wish you all a good night.

Book Review: The Undercover Captain

Earlier this week, I purchased and read The Undercover Captain, by Henry Vogel.  It is the second book in his series focusing on the adventures of Captain Nancy Martin, late of the Federation Navy. I'd previously read the first book, The Counterfeit Captain, and enjoyed it, so I was glad but not surprised to find I enjoyed this second book, as well.

The story takes place after the main events of the first book, but before its concluding chapter.  You have no need to have read that first book to enjoy this one, though it is worth a read in its own right.  This book opens to a more Captain Martin drinking herself into a stupor as the dramatization of events play upon the screen in a bar.  The few bits of backstory you need are picked up rapidly enough.

Soon, Nancy Martin is dragged into a more sober pursuit: finding and rescuing an entire class of missing school children, who authorities believe to have been taken by a slave ring.  She goes undercover with a government agent in hopes of rescuing the children and breaking the ring - playing up her storied past when it is most advantageous.

It is filled with tension as the key questions hang over the entire operation.  Will they save the children? Will they stop future kidnappings? Will they bring the criminals to justice? Read it to find out the answers.

The book was free of distracting typographic or formatting issues.  The language is comfortably simple without being childish, so it reads quite easily and quickly.  The fast-paced plot also helps it move.  I read it in one two hour sitting, and enjoyed it quite a bit.  I recommend this novel to anybody interested in mysteries, science fiction, or space operas.

Thursday, February 16, 2017

Movie Review: The Lego Batman Movie

Last Friday I went to watch The Lego Batman Movie. As a fan of Batman, Legos, and the original Lego movie, I thoroughly enjoyed the movie.

As with a number of previous Batman stories, one of the themes of The Lego Batman Movie is Bruce Wayne's struggle to cope with the long-ago loss of his parents. In this particular movie, he's even more out-of-touch with his emotions than in most, to the point of denying any exist. Overcoming this is a central element of the overall story.

Batman's nemesis in the film is the Joker, supported by every Batman villain I can ever recall and more besides, from the 1960's television series through the movies of more recent years. Riddler, Catwoman, the Penguin, Poison Ivy, Harley Quinn, Mister Freeze, and King Tut were among those I recognized. I'm not even sure all of those who appeared were actually in previous Batman works, or if some were added just to be even more over the top. Later in the film, even more villains make their appearance, from beyond the world of DC Comics. I will not offer details to avoid spoilers, but will mention that fans of science fiction and horror should recognize most of them, and they're a scary lot.

I saw the film in traditional format, not in 3D.  I thought it worked quite well in that format. Lego-ized versions of scenes from earlier Batman movies, and an actual clip from the Batman TV series, are part of the movie, and various bits of music and costumes from decades of Batman works make their appearance.  It lacks the infectious "Everything is Awesome" song of the original Lego movie, but is a fun-filled romp nonetheless.

If you like Batman or enjoyed the original Lego movie, you will probably enjoy this movie.  If you like Batman and enjoy the original Lego movie, you should definitely check it out.  I enjoyed the heck out of it. It was a decent way to spend 1:45 minutes on a cold winter day.


Sarah Hoyt has an interesting post on money up at her blog, entitled Let's Talk About Money.  It's nothing groundbreaking but it is a good reminder about the function of money.  It may be a social construct, as the person she was discussing the matter with asserted, but it serves a practical purpose that no manner of arguing about or twisting of definitions gets around.

A Long Sleep

I felt a bit sick on Tuesday, and missed several hours of work Wednesday morning.  When I got home, I ate leftovers for dinner while watching TV, spent a few minutes on the phone and checking blogs I'm a fan of, and went to bed.  I slept for thirteen hours, less a few minutes around 4 AM.  I can't recall the last time I slept so long.  Alas, this has meant no real posts from me here. Hopefully, I'll have a bit more energy this evening and get some another review or two written up.  I'm reading faster than I can reasonably review at this point.

Tuesday, February 14, 2017

So Sore

I mentioned Sunday that I'd fabricated a replacement piece as part of my Airstream repair and restoration, and prepared to install it.  Yesterday evening I installed it. Alas, because of where it is situated, all of the work had to be done in a crouch, while kneeling, or from a prone position. I awoke this morning with sore arms, shoulders, pectorals, and knees.  Nothing serious, certainly nothing life threatening, but I had pains in places I'd forgotten there were muscles - until they were aching this morning. Now to go take some more aspirin.

I hope to write up another review this evening, or perhaps post another snippet. Plate Tectonics is not forgotten, but while the weather is mild walking, yardwork, and the trailer are taking priority. We're having unseasonably mild weather here in southwest Ohio - blame it on global warming, weather patterns, chance, or God, as you wish - but I for one have no complaint to make on the subject.

Monday, February 13, 2017

Book Review: Scaling the Rim

Yesterday I purchased and read Scaling the Rim, a novella by Dorothy Grant. Scaling the Rim is the first published book by Dorothy Grant.  It is a gripping tale of political intrigue and a struggle against the elements by a small group of academics, technicians, and soldiers. Set on a partially-terraformed colony world, the characters must face lethally frigid temperatures as they travel to the top of a crater rim to install a weather station that could help save lives.

The main characters are Annika, a technician from the Federation, and Restin, a captain in the military of the Rus. The tensions between Federation and Rus, the perfidy of the Federation, and its totalitarian methods, are ongoing elements within the story.  Despite that tension, Annika and Restin work together as best they in an attempt to triumph over adversity. Both characters are almost instantly understandable and easy to relate to.  Within a few pages I couldn't help but wish them well. For other characters, well wishes were understandably hard to summon - I believe this was as the author intended.

One thing I wish the story had was just a little bit more on the backstory of the world, particularly the origins of the Rus.  It is mentioned in very broad strokes in pieces through the story.  I found the setting fascinating, but the details are little more than brief references and hints here and there. On the other hand, the lack of such details do little to deter understanding of the story - and the lack of too much exposition on the subject does keep the story flowing very well.

The book was great fun and quick read. I literally read it one sitting with no breaks of any sort. In my opinion, it was neither too short nor too long - for the story being told, it was just right.  Their were no formatting and scant typographical errors to be noted.  The cover is pretty and memorable.  I heartily recommend this book to any who enjoy science fiction, adventure tales, or thrillers - it has elements of all of them in it.

Sunday, February 12, 2017


Today was a wonderful Sunday, and in the later part of the afternoon it was sunny and lukewarm.  I could walk outside with a T-shirt and a light jacket and walk without feeling the slightest discomfort. For Ohio in the middle of February, that's about as good as it gets.  This meant that I spent no time writing fiction or code, but instead enjoyed life.

I walked, did a little bit of yard work, planned out how to do some exterior work on the house, and worked on my vintage (but much work required) Airstream travel trailer. I probably spent two-thirds of daylight hours outside or out-and-about on errands.  Again, for February, it was glorious.

The exterior work is to keep bats out of my belfry, er, attic.  They's getting in via a gap behind/beneath a trim piece on the gable end of the house, hanging out up there, and sending "presents" down a pipe chase to the basement. Yuck. That gets handled as soon as I have another day of decent weather and a chance to borrow or rent a ladder of sufficient length. Darn bats.

Darn those pesky bats!

The work on the trailer wasn't very impressive, either.  A bit of crumpled aluminum near one of the wheel wells was too crumpled to properly reconstruct and reuse.  So I've fabricated a replacement piece of sorts, and drilled the holes for the stainless steel machine screws that will connect the aluminum to the regular steel - that's the least-worst fastener I can find for used when joining steel and aluminum, one of the bothersome aspects of dealing with "ancient" Airstream frames. Without this piece, the frame, the belly skin, and the wheel well have no good connection, so this is rather important.

The gaping hole that is being repaired, and the crumpled, corroded wheel well

Replacement pieces on the dining room table, for better lighting
And as the day start to fade to dusk, I stopped for the evening and carried the power tools back inside. Then I set off for another walk. As the sun began to fall in the sky, so did the temperatures, and the wind began to pick up. As I slipped back into the house, the weather had completed its shift from a premature spring to a late autumn.

Nothing to say for Saturday

It was a nice day.  I spent a good part of it outside.  I've got nothing more to say this Saturday.  I shall now go away.

Friday, February 10, 2017

Miscellaneous thoughts

In addition to working, walking, and eating, today I watched The Lego Batman Movie, an amusing new animated feature. It was a lot of fun and will likely produce a review in the next couple days. I'm continuing the cleanup of the Plate Tectonics code, and have finished updating the parameters export to cover all the new parameters.  A few fresh example worlds are shown below.  In a way, I've gotten sick of hearing about politics, but like a car wreck I find it hard to look away. I'm putting the Colonize program I described yesterday onto the back burner, but when I return to it I shall ponder renaming the method for natural population growth from the present four letter word to simply Procreate. 😉

Tonight was a big improvement over last night, and was quite neat with the moon.  Tomorrow is looking to be quite lovely weather-wise. Hopefully, I shall spend a chunk of the day outside enjoying it.

World created using seed 14 and one tectonic cycle.

World created using seed 14 and two tectonic cycles. Parameters otherwise were the same as above.
Note the rugged coasts and high mountains, typical of multiple tectonic cycles.
World created using seed 7 and one tectonic cycle.
Note only a few high mountains, and smoother coasts, typical of one cycle only.


One last example before I go to bed.  I didn't realize how late it had gotten until just now.  The Colonize program is designed as a crude and by-no-means science-based model for seaborne colonization from... elsewhere.  It's had all of four hours work.  It is very much a work in progress, though it'll probably go on the back burner for a while.  I want to get back to writing The Forbidden Valley, and there's still the last cleanup activities for Plate Tectonics simulation.  But it sure is colorful, and shows some potential, so I thought I'd share the image.

Colonization in progress of a world generated by Plate Tectonics.
Colors represent owning country, and white represents uncolonized lands.

World generated by Plate Tectonics simulation

Thursday, February 9, 2017

Plate Tectonics - 13

I decided to take a brief break from wrapping up the Plat Tectonics simulator work to actually play with it and see about using the generated elevation data in other programs.

Graphical output from Plate Tectonics simulator.
Single-precision floating-point data is actually used for interchange.

First off, I modified my C# port of Amit Patel's polygon map generator to support imported elevation data. There's still some incomplete features in this program, especially with my "Tolkien-esque" rendering mode. When using imported elevation data, sometimes the river networks have anomalies, caused by low spots - "dips" or "holes" - within continental interiors.  This could be addressed either within the Plate Tectonics simulator or within the map program.

Elevation data from Plate Tectonics simulator was the data source for
this image in a polygonal map generator.
Close-up of the northwestern continent, in Biome view.

Close-up of part of the map, in "Tolkien" view
I've also implemented an import mode for the planet generator I've mentioned in posts past. For terrestrial planets, it usually uses 3D Perlin noise to create the elevation map of the world.  With the import, it uses the imported elevation data instead of the noise.

Map created from importing the elevation data into Planets program

The map wrapped around a globe, with some fractal clouds partially shrouding the planet.

Wednesday, February 8, 2017

Plate Tectonics - 12

It is all over but the cleanup.  The algorithms are all working about as I'd like.  I understand the erosion algorithms a lot more now.  The original version of PlaTec from several years ago used a modified image smoothing algorithm for erosion.  The 2015 version incorporated, in sequence, a hydraulic erosion model (rain drop method), the adding of some random noise to the elevation, and then a super-simplified but effective approximation of thermal erosion.  Run it too frequently, and the continent would erode away to sea level, but often in the interior before along the coasts.

Example 1

Because of some of the abnormalities (the "caterpillars" and eroded mountains) and that tendency, I added a coastal erosion process that lessens the elevation of cells adjacent to water, and run the main erosion algorithm less frequently.  I also increased the threshold for the main erosion algorithm, reducing over-erosion of the continental land masses.

Example 2

About my only complaint is the high degree of variability in the "quality" of the results for a given set of parameters (other than the random number generator seed).  The majority of results are acceptable, but some oddities can show up, and you never know if you'll get them or not.  So this isn't greatly amenable to fully automated operation; a person should definitely review results for suitability.

Example 3

So what's left before release? Just the cleanup. I have a variety of debug outputs that need to removed. There are a handful of functions that should ideally be made members of classes if possible - in one case, I'm not sure its possible due to how FLTK callbacks work. I guess I'll find out. I drastically increased the number of simulation parameters that were exposed. However, the export code only currently writes out the few parameters that were originally exposed. So that will need to be updated. I suppose it could also use a quick document describing the simulation parameters and how to accomplish different basic goals with them can be accomplished. Then to GitHub with the lot of it.

Parameters - these should all be written to file when exporting image or elevation data

Tuesday, February 7, 2017


I'd like to be posting on the Plate Tectonics simulator right now, but I couldn't wrap things up on that tonight.  Instead. I had to act like an adult.  Some problems popped up at work, one largely of my own making, others not, and I've been spending the evening fixing them.  That's kind of what one does when one has responsibilities.  It is the adult thing to do.

Adulting is term new to me, but the concept itself isn't.  When one makes commitments, and has responsibilities, the adult thing to do is to meet them head on.  It isn't always easy, and may not always be possible, but it is the ideal, and one I strive to live by.  So.... back to testing to see if this patch works so I can get have a colleague run a formal test in the morning, to be followed by a few emails that need responses, and sleep so I can make it to a morning meeting promptly.  I leave you with this picture of why the erosion algorithm needs to be revisited once more.

Too much erosion is not a good thing!


Weather.  It comes in many forms.  Like thunderstorms just before you go to write your evening post.  Hence there was no post last night, which was going to be about Plate Tectonics.  I can't even post a good screenshot now - the incomplete simulation run was terminated when I had to shut down the computer.  And now I must run to work.  So expect to see something this evening - weather permitting.

Monday, February 6, 2017


I don't watch much television these days. However, I'd spent too much time in front of a computer, felt temporarily "read out", and had a home-cooked meal to eat, so I actually did watch some television earlier this week.

I spent about four hours watching SyFy Channel.  They were running Captain America: The First Avenger, which I'd not seen since I caught it in the theaters.  It was still enjoyable.  I also caught a couple episodes of The Expanse, which appears to be based upon a series of novels I may track down at some point.  I'm not sure quite what to think about it, but it was nice to see an actual space series.

Then I watched Superbowl LI last night.  It was an exciting game at times, and some of the commercials were OK.  Also, I had another home-cooked meal to go with it.  This time it was German: beef rouladen, spaetzle, and red cabbage.  Not a bad accompaniment to a football game.

Both nights, I saw commercials for upcoming television series or episodes.  I don't think I shall make it a habit to watch too much television.  There just isn't that much of interest.  But I did get reminded that there are a small number of shows on that I like, that I'd forgotten about. And it felt good to veg out for a little bit.

So don't expect this blog to disappear because I spend all my time in front of the television.  Do expect a few more posts in coming days as I wrap up the Plate Tectonics simulator.  Do expect another snippet of The Forbidden Valley once I've fixed a few things.  And have a great day!

Sunday, February 5, 2017

Plate Tectonics - 11

Well, never mind then.  I understand where the problems I'm running into with non-power-of-two dimensions comes from.  It comes from the multitude of bit-wise operations that depend upon the width or height of the map being a power of two.  One less than a power of two results in a "mask" with all the bits below the bit for that power being set to one.  That is, if the value is 8, the binary is 1000, but if the value is 7, the binary is 0111.  So a bit-wise AND operation of a coordinate and the length of a side of the map would result in a value that was always within the range of the map side's length - but only if the side (width or height) is a power of two.  If the dimension was seven, the binary would be 0111, but  binary for one less would be 0110.  That screws things up.

The code is riddled with statements like

if (area[i].lft == ((lft + 1) & (map_width-1)))


size_t k = (y & (map_height - 1)) * map_width + (x & (map_width - 1));

They are short, terse, and computationally inexpensive, but they fail to work properly when the map_width and map_height values are not powers-of-two.  I started to rewrite code to address it, and was making a little progress. Unfortunately the end product is several extra lines of code for each such instance, and involves more computationally expensive (costly) operations than a simple bit-wise AND and a subtraction operation. After 90 minutes of work, it was almost right in one function, as shown below.

512x384 map of the plates.  Almost right, but still seeing red, which indicates plate is missing.
768x384 and 768x768 show similar problems.  512x256, 512x512, 512x1024, and 1024x256 maps do NOT.  

But not quite right.  And that was in only one function among several, and many of those functions made far heavier use of those AND operations.  So I made up my mind.  Rather then go through the many hundreds of lines of code that use such statements, and rewrite them into more computationally expensive (costly) operations and adding many news lines of and taking perhaps another dozen hours, I shall give up on non-power-of-two dimensions for this release.  Maybe someday in the future.  So no 1024x768 or 640x480 or 512x384 output for now, but 1024x1024, 1024x512, etc. should work just fine.  I'll make some comments in the code, remove the non-power-of-two dimensions from the GUI, and move on.

Integration of parameters from the GUI into the simulation will likely be my last thing to accomplish before I release this, unless I uncover additional problems.

Plate Tectonics - 10

It is well after midnight.  My first approach at getting the erosion situation ("caterpillars" vs. worn-down mountains) resolved did not work nearly so well as I had hoped.  Careful tuning was not enough.  Either it was ineffective or it eroded land down to shoals.

Not cutting it

So I decided upon a new approach. The erosion algorithm has been split into two.  One is the "wave erosion" for coastal and island erosion. That's my very crude but rather effective method. The other part is the rain drop algorithm implemented by the original PlaTec developer, Lauri Viitanen.  Wave erosion runs more frequently than the regular erosion.  This is a fairly effective approach, although different parameters can yield different results.

Decent mountains, island chains, few "caterpillars"

I'm still not quite happy with this outcome. Some of the simulation parameters are still hard-coded constants.  I have another few hours to go integrating all the parameters shown in the GUI as true parameters that can be passed into the main simulation class.  The restart and aggregation overlap settings can really improve the compactness of the continental masses that form.  Likewise, having the fractal parameters driven from the UI (or later, a settings file) will be quite nice - as it is, I currently have to make changes to hard coded constants.  Ugh.
Parameters organized

I was testing non-power-of-two dimensions for the map and discovered a problems.  I can use whatever aspect ratio I want, but if any dimension is not an exact power of two (two raised to an integral positive power), problems ensue.  I am currently debugging this, which yielded the colorful image below.  Each of the grayscale rectangles represents the bounding box of a plate, while the red represents areas that plates have moved away from.  Those lines?  They represent an indicator that I have problems. So, either a bit more work, or forget about non-power-of-two dimensions for now.

Seeing red

Friday, February 3, 2017

Plate Tectonics - 9

As I mentioned in my last post on this topic, I believe the erosion algorithm for the Plate Tectonics simulator needs to be tweaked.  I've been analyzing the current erosion code and discovered that unlike the original version of PlaTec I worked with that basically used a smoothing algorithm, the version I'm working with now looks to be using the water drop erosion algorithm, akin to what is described as hydraulic erosion in Musgrave's work. In addition to the erosion proper, the function that implements the erosion also introduces some random noise (variations in elevation) every time the erosion function is called. The difference is "splotchy" without random variation vs. "grainy" with random variation, as seen in the image below.  Have I discovered the need for yet another parameter?

The current set of parameters is already pretty large. I'm still working all of these parameters into the code base. A lot of them are currently constants. Now they need to go into/come out of the parameters window and get passed to the simulation code.

Parameter chaos.  Perhaps grouping them into labelled groups and changing some into sliders will improve things?
In many case, many times just leaving the values as-is works great.  But not always.  It depends on your goal.
And I still need to back and fix the problem that I posted about previously, the "caterpillars" and over-eroded mountains.  That's why I started looking at the erosion code in the first place.  I basically want the land bordering on ocean to erode faster than the mountains.  The "caterpillar" islands form from too little erosion of islands in the oceans formed by plate movement.  Attempting to prevent the "caterpillars" by increasing the frequency with which erosion is applied causes the mountains to erode too quickly instead.

Conceptually, I think it is as simple as a scalar factor for the amount of material to move when the erosion algorithm moves material from a "high" cell to neighboring "low" cell(s).  My first approach would be that the scalar could equal the sum the number of neighbor cells that are below sea level, divide by four (von Neumann neighborhoold, not Moore), plus 0.5.  Hence a "high" cell that was inland would erode at half the nominal rate, a single-cell island would erode at 1.5 times the nominal rate, and cells belonging to larger islands or on the coast would erode at an intermediate rate. This actually makes some sense within the context of the simulation, as well, as wave action and rainfall would result in more erosion than rainfall alone. We'll see what it takes to implement that once I fully understand the existing implementation of the erosion algorithm, then how well it works in practice.

An Interesting Character: Lew Wallace

Lew Wallace was an interesting character.  He was an author, soldier, lawyer, diplomat, politician, investigator, and inventor. He wrote the best-selling American novel of the 19th century, Ben-Hur, beating out Harriet Beecher Stowe's Uncle Tom's Cabin, and has remained in print ever since.

He served in the Mexican-American War and the Civil War.  Commanding the vastly outnumbered Union forces at the Battle of Monocacy, he was defeated on the battlefield, but delayed the Confederates by a day, allowing Union reinforcements to arrive at Washington, D.C. before the Confederates.  At 71 years of age, he attempted to enlist for the Spanish-American War.

At different times in his life he was a Whig, a Free Soil man, a Democrat, and a Republican.  He was involved in a Free Soil newspaper for a time.  He was the appointed governor of the New Mexico Territory, in which position he had dealings with a notorious criminal known as Billy the Kid.  He then served as minister (ambassador) to the Ottoman Empire (i.e. Turkey) for several years.

Frankly, Lew Wallace had a long and varied career.  When the country was at war, he served it in a military capacity.  When it was at peace, a variety of private pursuits and public service occupied him for almost eighty years.  He was an outstanding American with an interesting life that seems vaguely improbable - until one considers even larger-than-life figures such as Theodore Roosevelt and Winston Churchill.  In comparison, Lew Wallace almost seems prosaic - but only almost.

Thursday, February 2, 2017


I am bored.  Why am I bored?  Because I'm performing final integration testing on some rather boring but important code, prior to releasing it for UAT (User Acceptance Testing).  I am on my nth iteration of testing the code, various minor problems having cropped up that weren't apparent during development and unit testing.  This is why integration test, afterall.

Alas, since the code being tested is for certain timeout functionality, I have to allow for at least a little bit of time to allow the multitude of components involved to start up and start working before the timeout is applied.  This gives me a very few minutes of dead time during each test cycle.  It is not enough time to do anything particularly useful, however.  Hence this blog post.  I caught up on work emails on the first couple cycles, checked the tech news after, and then caught up on the blogs that aren't NSFW.  So now... this blog post.

Wednesday, February 1, 2017

Plate Tectonics - 8

So close, yet so far.  That's the best description of the current state of the Plate Tectonics code.  I've got a decent feel for the parameters now, and will be exposing them through the UI so different effects can be achieved.  However, there's two different artifacts caused by the erosion period parameter.  Run erosion too frequently, and the mountains erode down from something like the Rockies, Alps, and Himalayas, to something more like the lesser portions of the Appalachians or Catskills.  Run it too infrequently, and you get long "fuzzy" islands or island chains that remind me of caterpillars. Hours of running simulations show it is almost impossible to find a "happy medium" by simply adjusting the erosion period. I think the erosion algorithm needs to be tweaked to increase the level of erosion for sea-exposed cells and/or decrease it for land-bound cells.  Perhaps a scaling factor calculated from the percentage of neighbor cells that are below sea level?

An example terrain mapped onto a globe

Examples of "caterpillar" islands arising from too little erosion

Examples of heavily eroded mountains, from too much erosion

Book Review: Loose Ends

Loose Ends is the third and latest volume in John Van Stry's Hammer Commission series.  Earlier this week I read it in one long sitting. Loose Ends continues the tale of Mark Levin, Army veteran, werecougar, and agent for the Vatican's Hammer Commission. The agents of the Hammer Commission handle demons, devils, and other dark forces in the world.  This volume finds him still on loan to FBI, and dealing with some loose ends from a previous mission.

The book was a great read. It wasn't a particularly light story, given the dark elements involved, but neither does it wallow in the dark. As dark as humanity can be at times, nothing in the novel implies it is universal or inevitable.

You don't need to have read the previous two volumes to understand what's going on, though a few points here and there will definitely reward those who've read the earlier novels. Typographical errors were wonderfully rare.  The language was not oversimplified but was not overly complex, either, making it a moderately easy read.

I would definitely recommend this book and the others in the series.  It was quite engrossing - I read it in essentially one sitting, stopping only to use the restroom a couple times.  I hope anybody who chooses to follow this recommendation and check out this novel will be as entertained as I was.