Tuesday, January 31, 2017

Book Review: Scout's Law

I recently purchased and read Scout's Law, the fourth and latest installment in Henry Vogel's series that starts with Scout's Honor.  Like the other volumes in this series, it is a gripping tale story in the tradition of classic planetary romances, like Edgar Rice Burroughs or Leigh Brackett.  It is told in the first person, and the main viewpoint character is our returning hero from the previous volumes, David Rice, along with his talented, brave, and beautiful wife, Princess Callan of Morden. Some other favorite characters are also seen once more.

In this novel we return to Aashla, the once-lost colony world that only a decade ago made contact with the Terran Federation, as told the events in the previous novels.  Modern galactic technology from the Federation isn't supposed to be distributed on the world - and its sudden appearance presents a pretty pickle for our pretty princess and her beau.

Prose isn't fancy, but it doesn't need to be.  The story and plot kept me quite enthralled without any tricks of prose.  In fact, not to be critical of the late Burroughs, the modern prose employed by Vogel makes it an easier read.  For me, it was also a swift read, given the prose and the relatively-short length. I read it in one sitting, and enjoyed every minute of it.  

I can't recommend this book enough. I don't think reading the previous novels is strictly necessary to enjoy this one, though there are a few spoilers for previous ones. The price for Kindle editions of the whole series is quite reasonable, though, so if you do want to read the others as well, it won't set you back much - about $12 for the whole set. 


Monday, January 30, 2017

A single-rail tramway

Yesterday I posted a copy of a Street Railway Review article from 1897 on a French single-rail railway system.  In discussion over at Baen's Bar, I also brought up another system used in India and Burma, which looked far less useful.

Street Railway Review Volume X Number 1, page 53

Reading, Writing, and Plate Tectonics

I made more progress yesterday with the Plate Tectonics simulator, almost finishing it.  I tweaked the variables and all worked well at a 256x256, 512x256 and 512x512 resolution.  Alas, I discovered that when the resolution is increased to 1024x512, certain parameters that are currently constants need to be changed, otherwise the results look clunky.  So I need to go back and turn six constants into variables, expose them, and update the UI so they can be altered by the user.  Probably another few days for release, because I'll want to run a lot of simulation cycles to be able to set decent defaults and provide recommendations for different setting levels.

My writing of The Forbidden Valley bogged down temporarily, but as I sit drinking hot cocoa, I think I know how to resolve the problem in the scene I'm working on.  I'd written ahead of that point, but hadn't been able to resolve the problem in that scene.  I think I have now, though, so snippets may be forthcoming again soon.

I read three novels yesterday: Loose Ends by John van Stry, and Scout's Law and The Fugitive Heir by Henry Vogel.  All three were a lot of fun and I intend to write reviews when I have a chance - including brief ones on Amazon.  I am also continuing with reading Lincoln Paine's The Sea & Civilization, a non-fiction maritime history, and have made it to just short of the one-third mark.  This is a long but engrossing work, but is definitely a slower read than the romps provided by the novels I mentioned at the start of the this paragraph.


Sunday, January 29, 2017

Horse-drawn ground-level monorail

While I was doing some reading of old railroad journals for other purposes, I ran across this interesting monorail and horse approach.
Street Railway Review, vol 7, page 169 (1897)

That's no Death Star, that's a moon!

The recent image of Tethys from NASA's Cassini mission reminds some of the Death Star, or an eye ball.  I think its just plain cool.

NASA/JPL-Caltech/Space Science Institute  - image PIA20518





Plate Tectonics - 7

Rectangular maps!  At last, I have them.  Alas, I must also do a lot of parameter tweaking.  One of the peculiarities I'm running into is large numbers of enclosed basins.  Initial land masses are formed using fractional Brownian motion (fBm) algorithm that uses OpenSimplex noise as its basis function.  Aside from resulting in some enclosed basins (low points) in the land masses to start with, it also results in a number of islands and peninsulas that can result in basins when portions of land masses collide and there isn't enough subduction for the basin to be closed.

This is not totally unrealistic.  There are a number of inland seas and massive lakes on Earth.  The Caspian and Aral Seas are good examples of the former, and the Great Lakes of the latter.  However, they do seem more prevalent in these maps.  Perhaps reducing the number of "octaves" for the fBm will reduce that.  I'm not sure yet.  It will require some experimentation.

So, to summarize, more progress, but not quite done.




Saturday, January 28, 2017

Plate Tectonics - 6

The replacement of the square-diamond algorithm for initial land mass generation has been completed.  The OpenSimplex algorithm is now in use instead.  It may need some parameter tweaking to achieve quite the right effect, but is providing mostly-satisfactory effects already. Two examples are shown below.  So what's left before release?  Code-wise, the last alteration is supporting arbitrary map dimensions.  The current code base assumes a square map, and there are well over a hundred references to variable map_side.  I'm going to have to go through all of them and figure out if each reference needs to be replaced by map_width or map_height.  Joy.  Hopefully that will be the last of the changes, and then I can look at putting this up on GitHub and figuring out how to distribute the executable.

Example output from Plate Tectonics simulation
Another example output from Plate Tectonics simulation

Buckeye Brothers

While I was driving today, for some reason my mind wandered to history and biography here in the Buckeye State, Ohio.  Ohio has produced many famous men (and a few famous women), ranging from soldiers and statesmen to inventors and explorers.  In several cases, the famous men have come in sets of at least two.  Here are the examples that came to mind just while I was driving.

William Tecumseh Sherman was an officer in the United States Army famous for his service as a general during the Civil War, and for command of the Army during portions of the Indian Wars.  He is well known for his "March to the Sea" and for his statement that "War is Hell." His brother John was a statesman and politician who served in Congress and at various times as Secretary of the Treasury and Secretary of State.  He is perhaps best known for the Sherman Anti-Trust Act, and early piece of anti-monopoly legislation.  The Sherman tank was named for William.

Aviation pioneers Orville and Wilbur hailed from Dayton, Ohio, and did much of their experimental work there.  Alas, they took their first powered flight in North Carolina.  I think they are famous enough that I shall not describe them further.

Powel Crosley, Junior and his brother Lewis were inventors and businessmen involved with automobiles, radios, radio broadcasting, and baseball.  They hailed from College Hill, originally an independent suburb northwest of Cincinnati, but since incorporated into the City of Cincinnati.  For years, the Cincinnati Reds played baseball at Crosley Field.  Lewis served as an engineer officer in the Army during WWI.  The Crosley's produced the VT (variable time) fuses for anti-aircraft use in Cincinnati at the same plant that had produced consumer radios before the war.

Oris and Mantis van Swearingen were business men from the Cleveland area.  They were heavily involved real estate and electric traction (trolley lines and rapid transit) in Cleveland, and later with railroads generally.  The Terminal Tower on the Cleveland Public Square, the city of Shaker Heights, and the rapid transit line that connects them are some of their signature accomplishments that can still be seen today.

Nature or nurture, or both?  Who knows?  I just thought it somewhat interesting.

Leaders and Nicknames

Up through the eighteenth century, many leaders became known by additional names.  For example, in the seventeenth and eighteenth centuries you find Peter the Great, Catherine the Great, and Frederick the Great.  Farther back you have Frederick the Wise, Ivan the Terrible, Wenceslaus the Good, Boleslaw the Brave, Demetrius the Besieger, Alexander the Great, etc.  Nobody seems to get cool nicknames like that added to them anymore, in life or after death.  Are our modern historians just too staid and boring?  Too afraid to make value judgements?  Or simply lacking the nationalist or pecuniary motivations toward hagiography that once existed?

Slothful Friday

What a weird day.  I had a normal day at work, but the rest of the day seemed to disappear.  After work I ported OpenSimplex 3D noise from Java to C++ and met a friend for dinner and a walk at the mall, as falling snow, cool winds, and fading light made prospects of a real walk distinctly unpleasant.  When I got home I snuggled up under the covers with The Sea and Civilization and the next thing I knew it was nearly midnight.  No, I hadn't made gotten engrossed in the book - it was good and I read about twenty pages - but I fell asleep for over three hours.  Oops.  Not the most exciting Friday night on record.  I hope to have something more interesting tomorrow - hopefully either demonstrable (with screenshots!) progress on Plate Tectonics or another snippet of The Forbidden Valley.

Friday, January 27, 2017

Plate Tectonics - 5

I spent far too long this evening looking for noise on the web.  I know, the signal-to-noise ratio of the web is often much higher on the noise than signal side of things, so it seems like looking at noise would be easy.  But that's not what I mean.  I'm talking about a noise algorithm, such as the Perlin noise algorithm invented by Ken Perlin, its successor simplex noise, or other viable noise functions that can serve as the basis function for fractals.

Why?  Because I'm looking to replace the existing square-diamond fractal algorithm used by the Plate Tectonics simulator, in order to allow more flexibility in map dimensions.  Alas, this turned out to be a bit more complicated than expected.  The simulator's written in C++, so C++ or C code would be ideal.  I already have such functionality in C#, but I'd have to port that to C++.

I could incorporate the Perlin noise reference implementation that's written in C (for which Professor Perlin received an Academy Award), but it is written in very old school C and could use some work to adapt to a more modern paradigm.  LibNoise offers a nice implementation, but that's more dependencies than I'd like to add, and I think it might not be license-compatible.  (I went back and checked.  It is licensed under LGPL, so license is not a problem; still a bit leery of the dependency or adding so much additional code.)

Then there's simplex noise, also invented by Ken Perlin, but there's a patent on the using his particular flavor of the algorithm for generating a texture, which I'd worry applies to terrain as well, which is often treated as a texture.  There's a great implementation C++ in battlestar-tux but it is GPL licensed and likely covered by that patent.  There's a nice MIT-licensed implementation in C++ that but may be covered by the patent.  There's the OpenSimplex approach, which deliberately implements simplex noise somewhat differently to avoid the patent issue, but I've only seen Java implementations, so porting would be required.

In short, everything has its pros and cons, and I need to sleep on it, make a call, put in the work, and get Plate Tectonics finished up and make it available online.  My inclination at this time is to either take the partial OpenSimplex implementation and port it from Java to C++ or else update a copy of the reference implementation.

Thursday, January 26, 2017

Study finds New Jersey curses a lot. No shit!

Though I've lived in Ohio for as long or longer than I did in New Jersey, I grew up in New Jersey. So a news story about a study by researchers in the Netherlands found that New Jersey was second only to Delaware in cursing.  It also found that states whose residents swear the most were also those with the highest integrity.  Who fucking knew?  ðŸ˜œ

I hadn't noticed an appreciable difference in honesty and integrity between New Jerseyans and the denizens of Ohio, Kentucky, and Indiana that I routinely deal with today, but then I also don't know where those states stand in the swearing study.  Or maybe those who lack integrity just do a decent job of covering it up.  Who the hell knows?  ðŸ˜‰

Wednesday, January 25, 2017

Nothing to say today

I have nothing to blog about on this fine January day. I got out and walked a bit, since it was quite mild, and had pizza for dinner.  (Brooklyn Pizza and Pasta in Montgomery has some of the finest pizza in Ohio, in my honest opinion.)  I traced most of the route of the long-gone Fort Smith & Western Railroad in Google Earth. And now I'm going to go take a nice warm shower, then take Lincoln Paine's The Sea & Civilization to bed with me and read until I turn out the light and go to sleep.

Sarah Hoyt has a fun post on "real" animal names over on her blog.  It amused me and several of my co-workers.  Alma Boykin has cat photos on her blog today.  That's all much more interesting than I can manage right this moment.  I should have something more exciting tomorrow.

Tuesday, January 24, 2017

C++ integration with .NET Framework

I was making a bit more progress on the Plate Tectonics simulator when a thought occurred to me. The simulator is written in C++ and I'm compiling it as an executable with a relatively-recent edition of Microsoft Visual Studio.  The simulator, and some of the other libraries it relies upon, are LGPL licensed.  I can wrap the C++ code for compatibility with the .NET Framework, and produce a DLL, licensed under LGPL. Then I can use it from other software with more or less restrictive licenses (MIT, BSD, or something proprietary) without problems, because it is a library.

It seems like it should be fairly simple, technically speaking, but I've never done it before. I found a nice tutorial. The only sticking point is I haven't figured out how structs can be translated/marshaled between managed and unmanaged (native C++) code. For passing the ever-growing list of parameters for the simulation, I'll have to either do so or else make them available as properties of the main simulation class (not my preferred approach). I'll worry about it once I've got the Plate Tectonics simulator otherwise finished.

You may wonder why I'd want to do this.  The main reason is because while the simulator is a good starting point for planet generation, it is a poor stopping point.  Additional terrain generation, or even just pretty maps, should follow from it.  This is one approach to that goal.

Fantasy word generator and generated novels

In yesterday's post, I mentioned stumbling across a small fantasy map generator.  There's also a word generator associated with it, used to create place names.  The approach in that word generator is based upon patterns (e.g. CVC for consonant-vowel-consonant) and partially-overlapping sets of letter/sound types (consonants, vowels, sibilants, ending).  This is a different approach than taken in the word generator I mentioned in a couple of posts last fall - that used statistical patterns derived from a corpus of words used as input.

Apparently, both the fantasy map and word generators are ports from Python to JavaScript of code used in NaNoGenMo 2015, the National Novel Generation Month.  That particular effort was known as The Deserts of the West and produced not so much a novel as an atlas and travel guide, along the lines of a gazetteer.  The concept of NaNoGenMo appears to be analogous to NaNoWriMo, the National Novel Writing Month.  NaNoWriMo promotes writing a novel in a month; NaNoGenMo promotes writing code within a month that can generate a novel.

When I discovered NaNoGenMo yesterday evening, I investigated a little, and the novels produced by NaNoGenMo aren't particularly interesting to me in a literary sense.  (A few were better than some of what I was subjected to in college English classes, though.)  I do not think actual authors have anything to fear from the output of these programs.  However, they were of some technical interest.  They did produce proper paragraphs and sentences.  Many of them were even fairly coherent.  I just didn't find any particularly interesting as reading material.

On the other hand, I find the gazetteer approach of The Deserts of the West fascinating. That is, both the concept and the output intrigue me.  I may investigate them more thoroughly at some point.  In a way, they seem to be nothing more than an expansion on some of the tools and tables used in role-playing games, be they pen and paper or computer.

OK, that's it for my lunchtime post.  Time to finish eating and get back to work.

The Forbidden Valley - 10

Snippet 10, in which the bandits are fought:

Marley fired his last rounds at them.  This time he was effective.  Both men went down, and stayed down, and then he fumbled to reload the pistol.  Another bandit came at him while he was reloading, but one of the caravanners, a young man, intercepted the bandit.  Alas, the caravanner was no match for the bandit, but he bought the time needed for Marley to finish reloading, and another couple shots ended their little part of the battle.

In fact, it seemed that it ended the battle overall.  As that became clear, Marley reloaded the pistol more calmly than he had before, and holstered it.

Marley's Hindi was poor, but adequate for what was needed right that moment.  "Thank you," he told the young man who'd likely just saved his life.

"Thank you," the young man returned in Hindi.

As Marley watched, he cleaned his sword on the dead bandit's blood-soaked garments and sheathed it, then proceeded to rifle through the bandit's possessions.  It didn't take long, but he came away the richer for it, with a small pouch of coin, an empty sheath, and a jewel-crusted dagger.  Marley guessed it had to have been loot off some rich traveler past, for it was far too rich a weapon for any brigand he'd ever heard of.

After he'd finished, the young man picked up the bandit's fallen sword and sheathed it, then offered it to Marley. Marley accepted it ruefully and gratefully.  "Thank you."

Standing there desperately struggling to reload his pistol, he'd been quite vulnerable.  He knew that if the young man hadn't slowed the bandit, his corpse could very well be lying on the ground like the bandits.

He shuddered.  He'd brought the pistol along on the trip to India mostly as a precaution.  He'd never really expected to need it.  He certainly hadn't expected to need a sword.  In fact, he only vaguely know how to use one, courtesy of fencing at school.  He gave a mental shrug and tied the sheath to his belt.  This was not at all how he'd thought his day was going to go.  And he'd missed most of his shots, whether from lack of practice, nervousness, or his eyesight.  "I definitely need to get eyeglasses when I get home."  The fleeting thought was erased by the sounds of the wounded.

Not the bandits - all of them had been properly dealt with.  Rather, there were two injured caravanners and a wounded bullock.  There was also a dead bullock, its corpse blocking the narrow trail.  Marley helped redistribute the beast's load to the other bullocks, and then they pushed the corpse downhill and out of the way. They were in no condition to bury the beast, nor the bandits.  Once the wounded had been seen to, they pushed onwards.  As best he understood, they were still hours away from stopping for the day.

They certain couldn't stay here.  The shrubby slope the bandits had struck from offered a poor camp, and downslope was even worse.  They were blocking the trail, which was too narrow to offer a good campsite.  Once the wounded had been tended, the load redistributed, and the bandits stripped, they continued on, slowly but surely.

copyright (c) The Other Sean

Monday, January 23, 2017

Small fantasy map generator

I ran across an interesting web page on fantasy map generation.  It's actually pretty neat, is open source, and can generate small map on the web page itself.  If you're looking for a Tolkien-esque map of a small portion of randomly-generated world, this could be useful.

Example of a map generated on the linked web page

Note that it only creates a coastline, rivers, city locations, borders, and crude hills/mountains.  There are no forests, swamps, etc.  Maps are limited to the small square image shown above.  But it could still be useful - and for programmers, the techniques could be useful in other contexts beyond the simple web page they're shown on.



Sunday, January 22, 2017

Neat railroad model

Over at the Interurban Railways blog there's a cool post with photographs of models of interurban electric railroad cars (i.e. intercity trolleys or trams) in the Indianapolis Traction Terminal.  The models were created through 3D CAD work and 3D printing.  The portion of the terminal that was modeled was created, IIRC, through a combination of CAD work and both 3D printing and laser cutter work.  All of that was followed by with some hand work assembling and painting.  Then an awesome set of photos were set up and taken.  I think they totally capture that golden light that comes late in the day, before twilight.  Amazing work, beautiful pictures, and quite innovative.


Saturday, January 21, 2017

One Fine January Day

It's been a beautiful day here in southwest Ohio.  I think it made it into the 60's today, and it was at worst mostly cloudy.  Some blue sky and sunshine could be glimpsed at times, there was little rain, and the sunset was gorgeous.  I spent a good two-three hours outside over the course of this glorious day.  For a day in December January in Ohio, I could ask for little better.

Alas, I don't have more of The Forbidden Valley just yet, though I do have better feel for its probable eventual length, which I expect to be in the novella range, somewhere in vicinity of 20,000 words.  I currently have about 6100 words written and it has about a third of the plot covered so far.  I also realized I made some geographical mistakes due to viewing a map rotated in Google Earth.  There's other stuff I'm definitely going to have to go back and fix.  There's not a snippet today because while I've written a bit farther than I've posted, the rest of the current scene is still unwritten.  It'll probably be Monday.

I've been doing more development at work this week so haven't been in the mood to work as much on the Plate Tectonics simulation.  I will finish that up in the near future, even if I have to force myself to.


Friday, January 20, 2017

The Forbidden Valley - 9

Snippet 9, in which the Marley continues into the mountains with caravan:

There were quite a lot of foothills between the plains and the real mountains of the Pir Panjal range.  For the first couple of days, they'd stayed mainly in the valleys between the hills, driving over roads that led up the valleys.  They'd loosely paralleling the rivers coursing down from the mountains, still raging as the carried the snowmelt downstream.  Luckily, none of the bridges had been out.  There had been some worry at one, where the water was almost up to the bottom of the bridge, but the whole caravan had made it across.

The valleys and lower slopes had been more populous than Marley would have guessed before, with farmsteads and tiny hamlets anywhere the slope was not severe.  The populace was dressed colorfully, and the land felt nothing like home.  But the weather was merciful to them, save for the heat and the blinding, burning sun.

Even as the valley had begun to narrow, one would be hard pressed to avoid sight of a farmstead, a tiny hamlet, a shepherd's shack on a hill around the next corner.  Now, though, the road had narrowed to a trail, and settlements were few and far between.  The caravan had left civilization behind.  Or maybe it was its own little bubble of civilization, moving through the near wilderness.

From what he'd gathered at breakfast, this day's travel would see them to a camping spot just a couple of hours short of the ascent up to the pass.  That couldn't come soon enough.  In the past few days, he'd really started to feel much better than he had in ages, fully recovered from his ordeal in Umballa, and from the hurried trip to Jammu, which he'd undertaken perhaps a bit too soon.  But they'd been on road for many hours in the hot sun, and a nice meal was starting to sound mighty inviting.  Starting up the steeper portion of the trail, up to the pass, was something he'd just as seen wait until the next day to face.

Marley stifled a yawn, and squinted a bit against the glare.  At least we're headed north, with sun at our backs, not in our eyes.  Still, this glare is--

It was the suddenness of the attack that caused him to freeze.  One minute he was traveling in contemplative peace with the caravan, and the next the land was roiling with bandits.  For a moment, he completely failed to process the situation, and then a shriek of surprise and shout of pain shook him from his stunned state.  He pulled his pistol from its holster and took aim at one of the bandits.

He missed.  The bandit was wielding a viscous-looking sword and made to strike at one of the caravanners as he rushed down, but the caravanner was faster, and using his walking stick as a staff put paid to the attempt.  In a panic, Marley looked around, trying to comprehend the situation better.  Another pair of bandits were racing downhill, waving their own swords.  They were still far enough from the caravan that Marley risked a few shots in their direction.

The shots again missed, but they did give the two bandits brief pause.  And that was enough for more of the caravanners to respond and bring their own swords into play.  Unfortunately, the shots had also drawn the attention of one of the bandits, and Marley suddenly found a pair of sword-wielding bandits rushing toward him.

copyright (c) The Other Sean

Thursday, January 19, 2017

The Forbidden Valley - 8

Thanks to his newfound friends at the pub, Marley is headed up into them thar hills:

Four days later James Marley was staring at the south end of northbound bullocks, as those bullocks made their way up the trail and up into the mountains. Johnny had a friend who knew a local who knew a merchant who was running a bullock caravan up to Srinagar, in the valley of Kashmir. The Pir Panjal range, a sort of branch of the Himalayas, stood between Jammu and the valley. One brief look at his map had told Marley that while it wasn't far away as the crow flies, any journey by foot or hoof would likely prove quite lengthy indeed.

He'd not been proven wrong.  The trails up into the mountains and through the pass wouldn't admit carts, so caravan was of pack bullocks.  After three long days along the trail the view of the buttocks of bullocks had become far to commonplace.  Reaching the mountains had been a welcome relief, not just for the change of scenery, but for the slightly cooler temperatures.  He'd been in India for less than six weeks, but in that time it had gone from comfortably warm to uncomfortably hot.  It didn't help that the sun shone done relentlessly upon them as they made their way north.

And if he'd grown bored with the site of bullocks and their bundles, at least the rest of the scenery was far more interesting.  Human scenery included.  Not that he could do more than stare at most of his companions, watching them go about their business and speak amongst themselves.  Only a few knew much English, and his few dozen words of Hindi were barely adequate to cover the fundamentals.

Still, despite the lack of much meaningful conversation, Marley traveling along with the caravan something of a boon.  He wasn't likely to become lost.  Thanks to some rudimentary bargaining, he'd managed to make a deal for food, so he wasn't left to his own devices on that account.  And the large size of the group would hopefully deter predators.  Including those of the two legged variety.

Marley had heard the professor speak of the Thuggee, the feared cult of brigands who'd once terrorized travelers by the thousands.  They'd been more or less extinguished over a decade ago, but they weren't the only highwaymen known to India.  And hills seemed to breed for brigands, the world over, whether it be highlands of Scotland, the mountains of the Balkans, or here in India.

Still, he wasn't too worried, and he felt the comforting presence of his revolver in its holster.  He hoped he wouldn't need it, not for reasons of mere morals or squeamishness, but because loathe though he was to admit it even privately, he was actually a poor shot.  In part it was his eyesight.  He really should consider eye glasses, he knew, but he feared it would render him too bookish looking.  On the other hand, he was already engaged to to Alice. . .  "Maybe I'll look into glasses when I'm back in England, after the wedding," he said to himself, gazing off at the mountains.

It was clear day, but even if his eyesight had been good, he'd not have been able to make out much detail of the peaks ahead.  For one, the distance was just too far.  For another, the glare from the sun was almost blinding.  Even as summer began to take hold, snow and ice held sway atop the mountains, reflecting the brilliant sun.

copyright (c) The Other Sean

Oh, deer!

I fell asleep early last night, and awoke around 4 AM.  I woke up to find that it was cool but dry outside, and went to take a walk in my poorly-lit neighborhood.  I froze and searched about when a rustling sound, distinct but not super close, broke into my awareness.  I saw nothing, and resuemd walking.  And then I saw, more from the motion than having a clear view of it.  With the motion, I was able to focus on the dimly-lit figure that had appeared before me.  It was a deer!  I guess he'd been enjoying munching in a neighbor's garden, and my nocturnal wandering had disturbed him.

In revenge, three of his kin delayed my drive into work this morning as they made their own slow, sauntering crossing of my route.  Oh, deer!

Wednesday, January 18, 2017

Orographic effects

Over at Cat Rotator's Quaterly, Alma T.C. Boykin has a post that mentions fog resulting from orographic lifting.  This got me thinking.  (Dangerous, I know.)  Orographic effects abound.  Ground fog in the Texas Panhandle is the least of it.  Orographic clouds form when moisture in the air rises and cools.  This is why clouds are so often observed near the peaks of island mountains in warm waters; the air is most from the surrounding waters, and as that air is pushed up and over the mountains, the clouds form.

When rain then falls from orographic clouds it is known as orographic rainfall.  Such rainfall can cause more than just a spot of bad weather, but can impact climate and topography as well. The rain shadow effect of tall mountains, and the often lush environment on the opposite side of the mountain, are a prime example.  More rainfall will also typically cause more erosion, which is reflected in more erosional land forms (gullies, ravines, streambeds, etc.) on the wet side than the dry side of the mountains.

Just something to keep in mind when designing a world, be it for a game or a story.  And something to account for when writing programs to create worlds, too.


Tuesday, January 17, 2017

The Forbidden Valley - 7

Thus continues our story:

"And just what's the problem, then?"

Marley looked around as he chewed the mouthful of sandwich.  Apparently the day's custom was limited enough he had the barkeep's attention all to himself.  He swallowed.  "I'm trying to find a needle in a haystack."

The barkeep's eyes gleamed.  "Oh, aye, I've tried that once or twice myself.  What needle are you looking for in which haystack?"  He sounded amused.

"I wish I knew which bloody haystack to look for Professor Clark in," Marley said.

"Clark, you say?"  The barkeep looked thoughtful, then glanced about and his gaze settled upon one of the few others in the pub.  "Hey, Johnny, wasn't there a Professor Clark in that story that Survey chappie, Rendell, was telling the other night?"

Marley coughed a bit, then forced the bite of sandwich down.

"It was, it truly was.  If its Professor Clark you're looking for, Rendell'd be the man to ask.  I think he has an office in the bank building up the street."

Marley took a gulp from his beer.  "Mister Rendell was murdered yesterday in his office."

"Blimey!"

Both Johnny and the barkeep were surprised, he could tell for sure.  And Marley was no closer to finding the right haystack than he was before.  Or was he?  A thought occurred to him.  "Do you have any idea at all where Rendell was talking about in his story?  If I don't find him Alice is going to kill me."

"The missus?" the barkeep ventured.

"My fiance," he corrected.  "Professor Clark's her father.  Please, if there's anything you can tell me?"

The barkeep and Johnny shared a look.  Then the barkeep nodded.  "I don't rightly recall all the details, lad, but Rendell mentioned your professor as having investigated some ruined temple in Anantnag then rushed north to some valley."

Marley wanted to shout.  Instead he took a sip from his beer.  A valley up north.  Wonderful.  The same set of haystacks as before really.  He was about to force a polite thanks when the other customer, Johnny, chimed in.

"I reckon it couldn't have been too far from Anantnag, because the wild stories Rendell was hearing talk of started not long after."  Johnny made a decisive nod.  "If you went up to Anantnag maybe you could learn more.
There were supposed to be a bunch of other professor types there at the temple.  Besides, from what Rendell was saying the stories were spreading like wildfire up there."

Yes!  At least now I know where to start looking for the haystack.  "Thank you, thank you both, very much."  He took the last bite of sandwich and washed it down with satisfaction with the last of the beer.  And then the next practical aspect of his ever-elongating journey snapped into clear focus. "Uh, do you have any idea how I'd get there?"

copyright (c) The Other Sean

A simple digital globe - 4

The simple digital globe from my September posts has had a small update to correct a texture (UV) mapping problem at the north pole.  This problem was actually longstanding, but when I was viewing the output from the Plate Tectonics simulator yesterday using it I finally decided to spend the time tracking the problem down and fixing it.

Globe program displaying output from Plate Tectonics simulator

It turns out the distortion results from the vertex sharing required for auto-generating normals that make the polyhedron look like a globe.  The fix turned out to be to deliberately introduce minute differences into the y coordinate of the vertex at the north pole, so each triangle at the top had a minutely different vertex position at the top but with much different texture coordinates.  The details can be seen in comments in the source code.

The source code is available under MIT license at https://github.com/AnAvidDeveloper/Globe.  I will look into making a binary available in the future.

Globe program displaying output from Plate Tectonics simulator, looking at the North Pole.
Note the minor distortion at the center (pole), expected of a flat map wrapped around a sphere.
That pinching is much improved over the strange swirl that was there before.
If there are ice caps, nobody will even notice.

Primary sources aren't always right

For background in a fiction story I was thinking about, I was reading some primary source material. In particular, I was reading scans of century old issues of Street Railway Journal, Street Railway Review, and their successors.  (Thank you, Google, for funding the scanning effort for many and making them available.  And to Internet Archive for the rest of them.  Now if only online copies of Transit Journal News was also to be found so easily.)  Anyhow, back to the point at hand.  The material is sometimes just plain wrong.  It may be a primary source, but it isn't always correct.

From Street Railway Journal Volume XXVIII, Number 26, page 1199:
INDIANAPOLIS, IND.—An Eastern syndicate has had representatives
in this city during the past week examining the Indianapolis, New Castle & Toledo Company's line, now building, and the Indianapolis, Crawfordsville & Western Company's line, almost completed, with the view of purchasing the said roads. These lines radiate from Indianapolis--one to the east, the other to the west—and stretch across the entire State, making convenient connection with Ohio and Illinois traction lines.
The western line mentioned, Indianapolis, Crawfordsville & Western, never did actually complete its line to Illinois. It wasn't even being actively constructed as far as I can tell.  There was no connection to the Illinois traction lines there.  Any modern reader with a little knowledge of the history of the electric interurban railways (the so-called "traction lines") knows that there was a gap there.  Prior and subsequent issues of Street Railway Journal itself mention various proposals and stalled plans for such a connection.

So, remember, just because it is primary source, doesn't mean it is correct.  Even with the best of intentions, mistakes happen.  Sometimes the facts as conveyed to the writer are wrong, or are misunderstood.  Sometimes those writing have an ulterior motive, or those supplying them with information do.  The old Russian proverb quoted so often by the late President Ronald Reagan, "trust, but verify," should be remembered.

Monday, January 16, 2017

Other things

I don't just work on my computer, I do things in the real world too, though they may be less interesting to those reading this blog.  We'll see.  Lately, I've been working on wrapping up a few projects in the basement and generally cleaning and organizing the mess/chaos/disaster zone that presently exists down there.  I now have enough room around the exercise bike that I don't feel claustrophobic when I sit down on it.  Yay!

One of the projects I wrapped up is fabricating replacement wheel tubs for my decrepit but vintage Airstream trailer.  To give a sense of perspective, it predates the start of the Eisenhower administration by years.  When I got it, I knew it was fixer upper, but I didn't quite realize how much so until I began working on it.  One of the first things I discovered is that the curbside (i.e. right) wheel tub was missing, with a few wooden boards crudely assembled as a substitute.  Then I discovered the other one was bent and corroded in places.  So I needed replacements.  There were also some aluminum floor joists that were mangled at some point prior to my acquiring it.  Those needed fixing/replacing as well.

Now, I have no real training in, and little practical experience with, metal working.  Still, I managed to cobbled together a homemade metal bending brake from plans I found on the internet.  (Go internet!)  Alas, I would have had to special order the steel angle the plans called for, so I made do.

Homemade metal bending brake

It worked, but alas there was good reason for using slightly larger angle iron than I did.  And because the hings and handles attached in the same area, there wasn't really room for two bolts to connect the handle with the working mechanism.

It is not supposed to be bent quite like that.
It did work well enough for me to fabricate the pieces I needed, though, which should get installed into the trailer once the whether is better.  The work isn't as polished as I'd like (though being aluminum, it is quite shiny), but it should be functional enough.

Wheel tub for a vintage Airstream trailer



Tip of an aluminum floor joist for a vintage Airstream trailer


And now that I've fabricated this stuff, I can put the bending brake off to the side, put the completed pieces off to the side, put away the folding table and the boards on sawhorses that had been taking up so much space.  Next up in the basement will be stowing the remainder of the tools, and leftover aluminum . . . someplace.  This will also free up room to store a few other items that are currently in need of homes, so I can put yet more things back in the places they belong.

I did write a tiny bit more of The Forbidden Valley today, but it may be a few more days before there's another snippet.  I also tried to use one of the plate tectonics maps that was output in conjunction with the digital globe I created back in September.  Alas, the map looks too stretched horizontally when mapped onto a globe.  I'm going to need to go back and enhance the plate tectonics simulator to support rectangular maps in the near term, after all.  Darn.  I was hoping to have that completely finished in the next couple days.  Oh, well.



Sunday, January 15, 2017

Plate Tectonics - 4

I didn't accomplish as much as I'd hoped today, courtesy of Real Life.  In any case, I made a bit more progress on the Plate Tectonics simulator.  Alas, I also decided to finish up a few things I'd originally though to leave for the future, so I'm not sure I'm actually any closer to completion.  [sigh]

In a post yesterday, I mentioned I'd found code for a more recent version of the PlaTec simulator.  I've incorporated most of that updated code and done some minor refactoring to better modularize the program.  Previously, the simulation and the UI had been a bit too intertwined, legacy of my not having done anything much in C++ for ages, and only second time using the GUI framework in question (FLKT).

Updated parameters dialog box


So what did that get me?  The updated PlaTec code brought better erosion algorithm, fewer visual anomalies, and slightly slower simulation.  The refactoring will eventually allow console-based execution as well as the current interactive GUI mode.  And I've made a few more parameters accessible via the GUI.  However, two parameters that are the GUI no longer accomplish anything.  I have to modify the updated PlaTec code to permit the parameters in question to be supplied via code, rather than treating them as hard-coded constants.  One of the other features I'd originally considered for a future enhancement, a parameters file, I have decided to at least completed the code for writing to file.  Reading in is likely still a future enhancement, but I'd like to know what parameters I used to create any given map.

Map generated using updated (2015) PlaTec code.
Note the greater variation in elevation, as depicted by color variation, as compared to earlier examples.
Note also that there are fewer high plateaus.  
The number of strange islands is also reduced, replaced by more coherent islands.


Map created with earlier PlaTec code.  Note lesser variation in elevation/color, and greater number of high plateaus.

Saturday, January 14, 2017

Plate Tectonics - 3

In preparation for releasing the plate tectonics simulator, I went to the site hosting the repository for the original PlaTec simulator, in order to confirm the license was LGPL as I'd thought.  I was correct, it was under the GNU Library General Public License.  However, I also discovered there was an update to the code two years ago, including some sort of Java-based GUI, and a C API to the code.  I'm going to look at incorporating the updated simulation code into my release.

I overslept, then spent a bit of time today helping a friend.  As a result, not much progress was made on this project today.  However, here's another pair of planets generated with slightly different parameters than yesterday.  Increasing the "restart speed limit" parameter from the default 5.2 value generally allows less time for the simulation to run per cycle.  Both were generated with nearly identical parameters to each other, but notice the difference one cycle vs. two cycles makes.  There are more mountains, and more larger mountains, with two cycles.

Result from seed 53, 1 cycle, 15 plates, sea level 0.75, restart speed 9
Result from seed 53, 2 cycles, 15 plates, sea level 0.75, restart speed 9





Random Observations

The missing book is always in the last place I look.

Winter weather is a chore.

It is easier for me to program in C# than C++, if only because I don't have to change mental models so much.

If you're working with sheets of aluminum (drilling, cutting, etc.), the shavings and shards seem to get everywhere.

Sawdust gets everywhere.  

Pillbugs caught by spiders leave stains.

Even food has history.  Every dish was invented sometimes, often fairly recently.

A picture sometimes really is worth a thousand words.  Or at least a graphical diagram seems to explain things better than a list of steps, at least for some.


The Forbidden Valley - 6

Snippet 6, in which Marley goes to the pub:

Marley had noticed a pub on the next block.  Eager for a break from the stifling atmosphere of the hotel, he decided to walk there for lunch.  The streets outside were teeming as he made his way down the street to the pub.

A man dressed in robes, with a monkey on his shoulder, walked past. A trio of colorfully-attired women passed in the other direction with pots balanced atop their heads.  The smells were strange, and strong. Two men in turbans crossed his path.  A cow made mooing sounds in the street.

Suddenly, Marley felt very lost. Despite being so far from home, and left to his own devices for weeks, he hadn't felt lost until now. He stared about him, the sights, sounds, and smells familar from weeks in India, yet so different from home. "What am I doing here?"  He just stood there, motionless, staring without seeing, the pub forgotten.

And then the bells rang as a nearby clock struck noon, breaking the spell, and Marley pulled himself together, and resumed his interrupted trek. "What I wouldn't give to be back in England, out with Alice or enjoying an evening of cards at the club," he muttered as he reached the pub at last.

When he stepped inside, it was like a refreshing bit of home... aside from the heat.  It wasn't even the type of establishment he often frequented in England, but right that moment it was comforting.

"Ah, lad, welcome," the barkeep said as Marley sat down at the bar.  "What'll it be?"

Marley took a glance at the menu board and ordered a pint and a sandwich.  He glanced around the pub as he waited.  It was the same  mix of brick, dark wood, and brass that he'd have seen back home.  He took a deep breath, closed his eyes for a moment and tried to imagine being back in England.

When he opened his eyese again a few seconds later, the sights through the window of the pub quickly disabused him of that notion. He took a sip from the pint the barkeep had put before him.

"You look troubled," the barkeep said.

"You might say that," Marley agreed.

copyright (c) The Other Sean

Friday, January 13, 2017

Plate Tectonics - 2

In yesterday's post, I mentioned my efforts to convert Lauri Viitanen's 2012 thesis project, an open-sourced plate tectonics simulator, into something with a GUI that would run on a Windows platform.  One of the items I thought still was required was a "centering" feature, to minimize the amount of land wrapping at the edges of the map.  I managed to do so tonight, though I will need to make some changes to integrate it better.  Still, you can see the results in the examples below. In my (not so) humble opinion, the centered maps on right look far better than the ones on the left, but the only difference is positioning.  

Anyhow, aside from integrating the centering code, I would also like to complete the JPEG export. And then I think I shall call this project complete and put it up on GitHub.  There's a lot more that could be done with this.  In terms of features, it could use some better erosion algorithms. As it stands now, "erosion" is simply a smoothing algorithm applied every so many iterations, and at the end of each cycle.  An erosion algorithm that operated on the islands and seacoasts periodically would help reduce some of the odd island growth that is sometimes seen.  Additional output formats (image and elevation) might be nice, but probably aren't essential.  A header file to accompany the current elevation export would be nice, specifying at minimum the map dimensions and sea level, but possibly the full set of parameters used to generate the map.  Really nice would be a different initial landmass generation algorithm, so as to allow non-square, non-power-of-two map sizes.    

In terms of the code itself, it could also use some work.  When I originally worked on port this program three years ago, it was only the second time I'd used FLTK, and the first time I'd used C++ in years.  I'd organize the code a bit differently, especially in terms of classes and how I integrated the output from FLTK's GUI designer, FLUID.  Maybe add support for running from command line, too.  It wouldn't hurt if I were to write some documentation for this, at least a readme file.  That's all for the future, if ever.

And as I wrote that previous sentence, another idea popped into my head.  These algorithms take a long time to run the simulation.  Perhaps if a large number of maps were generated, the resulting islands and continents (land masses) could be extracted and stored.  Then when a new map is required, it could be assembled by random placement of several random selections from the stored land masses.  Just thinking aloud here.





Plate Tectonics

I've mentioned before PlaTec, a simple plate tectonics simulation program.  This evening a spent a little bit of time working on my old port of it to a Windows environment with an FLTK GUI.  I've fixed a few problems, and have added some basic export capabilities.  It's pretty basic, really.

First you enter some parameters.  Because the initial landmass is generated using the diamond square algorithm, the map must be square, and the dimensions must be powers of two.  The cycles indicates the number of cycles - splitting of the world into plates and moving them - that should be performed. The plates indicates the number of plates.  Sea level is a number between 0 and 1 approximating how much of the world should be sea.  The random seed determines the initial landmass shape as well as coordinates for the plate origins.  Restart energy ratio and restart speed limit determine how slow plate movement gets before a cycle ends; IIRC lower numbers tend to let the simulation drag on for longer.

Parameters for plate tectonics simulation
Once the OK button is clicked in the parameters window, the simulation begins.  The initial land mass is created, the world is split into plates, and movement begins.


Simulation GUI

Below are some examples of output.  Because the simulation works on a 2D basis and wraps vertically and horizontally, I think a centering feature to be applied upon completion would be useful. As you can see in the examples, the land masses in the end result are often wrapping across the edges; centering would make for more attractive maps.  They'd also be more realistic if the north polar region and south polar region didn't wrap.  :)  Centering accomplishes that in many cases.

I'm going to put in a bit more work to finish up the export - write now it does PNG and RAW images, and a raw elevation dump in floating point - but I also want JPEG support.  Also, I think the program needs a centering feature.  At that point I'll probably put it up on GitHub.  The original version of this simulation was originally a computer science student's thesis project back in 2012, and there's a paper on it. He released the code under an LGPL license and placed the source code on Source Forge.  All I've done really is provide a GUI that will work with Windows.

This simulation can produce some nice crude planet maps, but it is slow.  Tens of minutes may go by for completion using the 512x512 and only a single cycle.

Seed 44 with 1 cycle
Seed 44 with 2 cycles


Seed 45 with 1 cycle


Thursday, January 12, 2017

The Forbidden Valley - 5

This is snippet 5 of my in-progress fiction, The Forbidden Valley.  Snippet 1 may be found here.

The police finally released him and the Indian lad just before sunset.  The questioning had gone on for hours, but he'd had so few answers.  Thankfully they eventually came to believe he was uninvolved in the murder.  However relieved he felt at having been released, though, he was now at loose ends about how to proceed.  And his letter from Creighton had somehow disappeared in the pandemonium and the ordeal.  He decided to sleep on it overnight.

The next morning, he sent a telegram to Creighton first thing, then retired back to his hotel to await word.  It wasn't long in coming.  It also wasn't very helpful.  It informed him that Creighton was out of the office and might be gone for some time.  Marley stared at the telegram numbly for a moment.  What now?

If he had any clue where Professor Clark had gone, beyond following a river north into the Himalaya, he'd have an idea.  But the Himlayas were an enormous place, stretching as they did along sixteen hundred miles, and over two hundred miles thick in places.  Its tallest peak reached up well over five miles.  They were a massive haystack in which he was seeking a needle.

The only real hint he had as to where Clark was came from the fact that the rumors he'd followed were heard in Lahore and Jammu, on the west end, and that Clark had gone north from Jammu.  The fact that he was to be following a river really offered no great help, for the mountains where the origin of many a river, great and small, and Clark had not told Marley the name of the river in question.  Marley stared in frustration at the maps he'd obtained.

North from Jammu lay the Pir Panjal Range, a portion of the Himlayas that separated Jammu from the Kashmir Valley, beyond which lay the main body of the Himlayas.  Even if the hint provided by where Clark heard his rumors was accurate, that left both sides of the Pir Panjal plus the rest of the western Himalayas to search.

He sat back from the map, considering the situation, and another thought nagged at him.  His letters to Alice had mentioned his illness and the professor going on ahead, but he'd not mentioned to her that the professor had more or less disappeared.  But he had.  How do you tell your fiance you misplaced her father?  The question continued to nag at him as he decided to seek lunch.


copyright (c) The Other Sean

Wednesday, January 11, 2017

Ideas for Distributing and Generating Terrain Features

In a post a few weeks back, I mentioned a potential strategy for procedurally generating global terrain.  Yesterday, I mentioned a few software packages that can be used for generating maps and terrain, but that aren't comprehensive.  That was an outgrowth of a discussion over at the Mad Genius Club blog, where I had a few more thoughts in the comments section.

After that discussion, I had a few thoughts on aspects of terrain generation that aren't covered by the software packages mentioned, nor are they handled by the approach I mentioned for global terrain. There are landscape features that just seem to be missing from current approaches, with respect to automatic placement and/or generating the actual terrain (i.e. creating mesh or altering the elevation grid) for the feature.  I have a few ideas on both placement and generation, which I've summarized below.  The ideas below aren't comprehensive - they cover neither every terrain feature nor every idea I have on the subject - but they're kind of a starting point.

Polar Terrain

At least on Earth, the polar regions are strongly shaped by glacial ice and its erosive effects, as well as wave action along the coasts.  In coastal regions, fjords and inlets abound.  The coastline is very jagged.  There are many small islands. Lakes abound, both in coastal regions and inland.  The lakes may or may not be connected to river networks.  I observe that not all portions of coastline in the polar regions are rugged.

This could be implemented using the fractal subtraction from the base land form.  A scale factor could be applied to the fractal value, to determine how much subtraction occurs.  At latitudes close to the equator, the factor should be zero.  At some latitude, it should start at zero and increase towards the poles.  My general observation is that this latitude is somewhere in the 41-46 degree range.  This is just an idea, and I've not yet attempted an implementation as of yet.

Coral Reefs

Where water is warm enough, coral can grow.  As volcanic islands subside, if the rate of coral growth equals or exceeds the rate of subsidence, the result may be a coral atoll.  This would be a ring-like island that may or may not completely enclose a lagoon.

A potential implementation might start with a polygon defining the outline of the island.  If working with a map defined by polygonal cells, this could simply be the cell itself.  A polygon would have to be generated if a raster elevation map was the basis.  In either case, once the base polygon is obtained, a subdivision process could subdivide the edges, perhaps perturbing them a little.  Then sequences of edges could be stochastically selected to serve as the centerline of an island.  In this matter, a series of islands would envelop a central lagoon, with inlets.  This should only be applied in an appropriate latitude band.  Alien worlds may or may not have a coral island equivalent.

Barrier Islands

Barrier islands are common feature along coastlines.  There are at least three common theories on their formation, none of which are sufficient to cover the origin of all the barrier islands.  For example, two different portions of the Frisian Islands have two different proposed origins.

Perhaps a low-frequency fractal could determine where such islands are placed.  I observed that they're generally fairly straight or smoothly curved.  Sections of coastline whose value from the fractal data fell within a threshold value would be the basis for a polyline.  This polyline would be simplified, then displaced toward the water, where it would serve as the centerline for an island, similar to the coral reef approach above.

Sand Dunes

Sand dunes exist in a multitude of environments.  They appear along sea coasts and lake shores, in deserts, and in the mountains.  There are several known approaches for generating sand dunes, so placement is more the issue here.

This isn't geologically accurate, but a "sand zone" can be defined in a latitude range centered on the equator.  Within that range, sand may be available.  A low-frequency fractal function can be used for points within that range.  Along the sea coasts and lake shore, if the fractal value is within the "dune range" then sand dunes will form.  A size scaling factor could also be based upon the value within the "dune range."  Inland, only in arid regions should dunes be generated, but not everywhere in a the arid region should typically have sand dunes.  Again, the "dune range" concept can be used, but the range might be different.  Its certainly not a full solution.  For example, there's a reason that the Great Sand Dunes are immediately west of the Sangre de Cristo change.




Tuesday, January 10, 2017

Map-making Software for Fictional Worlds

Over at the Mad Genius Club blog, there was a brief tangent in the comments section regarding software for making maps.  These software are aimed at gamers and authors.  The software mentioned were Fractal Terrains 3, Campaign Cartographer, and Fractal Mapper.  All have their pros and cons, but seem a decent fit for their intended audience.  The main downsides for the fractal products are that global maps clearly look fractal.  The other downside seems to be a need for substantial manual effort to create the full maps.  Still, they offer a lot of useful functionality without the sometimes-steep learning curve of getting up to speed with a tool like Photoshop, Illustrator, or a full-blown GIS package.

Monday, January 9, 2017

Uncertainty

I'm a bit uncertain about where the story I'm writing is going.  Not the endgame, the finale, the climax, the conclusion.  No, that I have a firm idea of.  The Forbidden Valley is only a few thousands words long right now, but already a dead body has shown up that wasn't in there when I envisioned the story.  Dead bodies showing up is usually a bad sign, right?  Anyhow, the sudden and unexpected murder of the main character's contact in Jammu took me by surprise, and I'm the one writing the story.  How bizarre.  It has left me with a vague sense of uncertainty.  I will push through this confusion and find out who and why the man was murdered.

But now I'm not entirely sure if this is going to be a short story, a novella, or a novel.  My original intention was that this would be a novel, but I'm glossing over details like this was a short story.  Maybe I should go back and expand upon them?  I don't know.  The again there wasn't a murder in my original plan.  I'll figure it out once more of the story has been transferred from brain to computer.

There will likely be another post later, either another snipped of The Forbidden Valley or else something else entirely.

Sunday, January 8, 2017

The Forbidden Valley - 4

Snippet 4 of The Forbidden Valley is regrettably short as I've been busy working on things around the house, including some cleaning of the basement and wrapping up some projects down there that are in the way.  More will come.  But for now, there is only:

As Creighton had instructed, Marley found the office of George Rendell in the building across the street from the hotel.  Alas, he found no indication of Rendell's presence.  He thought he'd heard sounds from the office when he'd first arrived, but a knock on his door went unanswered, nor was there any response to his spoken words.  He knocked one more time.  "Mister Rendell, are you in there, sir?"

"Is Rendell-sahib not inside?"

Marley turned to face the young Indian man who'd approached while he'd been so preoccupied.

"I've knocked by there's no answer."

"I will let you inside, sahib, and you can wait for his return."  The young man produced a key and unlocked the door.  When he opened the door and they walked inside, any thought of waiting  for Rendell's return promptly disappeared.

Rendell was dead!  His body lay on the floor, behind his desk.  The knife embedded in his chest, and the blood stains around him, told them he'd been murdered.  Marley wanted to shout, to panic, to flee.  He wasn't used to finding dead bodies.  He certainly wasn't used to finding murdered bodies.  He especially wasn't used to finding murdered bodies of men he was supposed to meet in order to learn where his crazy future father-in-law had wandered off to.  He staggered for a moment, unsteady on his feet, unsure what do, then forced himself to calm down and straighten up.

He looked around the office, briefly, but there was little to see.  Bookcases and filing cabinets predominated, but there were a few desks and chairs.  It was a fairly normal looking office, really - or had been.  Rendell's desk was a complete shambles, as well, papers strewn all about, some on the floor - some even now soaked in blood, from where they'd fallen in the blood.

Behind them, from in the hall, a man screamed.  This started the pandemonium that engulfed much of the rest of his day.

copyright (c) The Other Sean

Saturday, January 7, 2017

Book Review: 1636: Mission to the Mughals

The snippets of my ongoing effort at a story, The Forbidden Valley, will continue in the near future. Today I am reviewing the new eARC of the 163x (Ring of Fire) novel by Eric Flint and Griffin Barber, 1636: Mission to the Mughals.  As many may already be aware, the series relates the tales arising from the displacement of Grantville, a small town in 2000 West Virginia, to the southern Germany in 1631.  The cultural, political, scientific, and technical changes arising from the entrance of this small town and its people and knowledge into the middle of The Thirty Years War have proven fertile ground for dozens of novels and anthologies, and an ongoing electronic magazine.  I previously reviewed two other novels in this series, 1635: The Wars for the Rhine and 1636: The Ottoman Onslaught.

This novel is a departure from many others in this series in that it takes place far from Europe, and featuring none of the previously-established major characters in any significant way.  While some major characters such as Mike Stearns and Francisco Nasi appear in the early chapters, and Mike and Rebecca Stearns appear in the epilogue, the rest of the main cast are minor or new characters, a diplomatic mission from the new United States of Europe (e.g. basically a unified Germany) to the Mughal Empire, which controlled much of what is now India and Pakistan.  The main purpose of the mission is to obtain trading rights so as to obtain opium for painkillers and saltpeter for gunpowder production.  The story focuses as much, or more, upon the members of the Mughal dynasty as it does upon the diplomatic mission.

Technology from the future plays the smallest part in this story, though knowledge from the future is a major driver for all factions.  Unlike 1635: The Wars for the Rhine, even radio is absent from this tale.  Without spoiling things much, on the science and technology side it is only really knowledge of medical practices and the presence of a few modern firearms that influence the plot, and only in a few key points.

Rather, the knowledge of future British domination of India, of future Mughal dynastic politics are what drives the behavior of the Mughal characters, in combination with their own personal and political ambitions.  The characters are largely interesting and believable.  I found their motivations understandable, even if the religious fanaticism of certain characters may be alien to my own mindset.  The story does a good job ending certain plot threads, and reaching a nice stopping point for others, while leaving clear openings for a continuation and resolution of the issues left outstanding - I'll leave it at that to avoid spoiling the plot.

The plot moves along with admirable speed, but without feeling rushed.  Despite this being an eARC, typographical errors were thankfully few.  For a new author (Griffin Barber), even teamed up with an experienced professional author like Eric Flint, it was excellent quality.  Overall, I enjoyed the novel. I would recommend it to any fan of general altered history, and perhaps even to fans of historical fiction.  If you're strictly looking for a technology-driven story, though, this isn't it - modern technology and medical knowledge do play key roles in the story, but it isn't really a major theme or topic permeating the novel.  To any fan of fiction, I urge you to give it a try - the free sample chapters should let you know if you'll like it.  So, in summary, a fun read, and I'd recommend it.




Friday, January 6, 2017

The Forbidden Valley - 3

Snippet 3 of The Forbidden Valley, in which Marley and Creighton converse:

"Yes, indeed."  They shook hands.  "Sit down, please."  Creighton gestured to a chair, then sat back behind his desk.  "Thank you for coming over here.  I'm afraid we have a problem."

No announcement that Clark was dead, at least.  Maybe he'd be able to face  "Yes?"

"Professor Clark discussed his plans with me here in Umballa, before he left.  Once he'd spoken with the curator at the museum in Lahore, though, he seems to have changed plans.  He was seen in Jammu, briefly, but after that there are no reliable reports.  He seems to have vanished.  I was hoping you might know a bit more about the professor's intentions."

Creighton's words took the form of a statement, but they were nevertheless a question, and Marley took them as such, and gave the man a slight nod.  "A little.  The professor's  original plan was to travel and gather folklore.  That was still the plan, but from his telegram it seems he'd heard a tale in Lahore of a so-called 'Forbidden Valley' in the Himalayas.  He went to Jammu to learn more, and I guess he found it, because he said he'd follow the river north into the Himalayas."

"What river?" Creighton asked.

Marley shook his head.  "He never said, and I haven't received another telegram in nearly two weeks, now."  He suppressed a weary sigh.  "How am I going to catch up with him when I don't even know where he's gone?  How am I going to explain to Alice if something happens to him?"

"Alice?"

"The professor's daughter Alice is my fiance.  She asked me to keep him out of trouble."  Marley took a deep breath.  "What am I going to do if something's happened to him?"

"I see."  Creighton paused a moment, thinking.  "If you wish to find him, perhaps I can be of some assistance."

Marley perked up.  "That's swell!  Thank you.  Any help at all would be appreciated."

"I'll ask one of my associates to make some inquiries."  Creighton jotted a quick note on a piece of paper, then folded it and handed it to Marley.  "Go to Jammu and check into the Hotel Jammu.  One of my associates, Mister Rendell, has an office in the bank across the street.  Hand him this note.  He should be able to help you from there."

"Thank you, Colonel."

"No, thank you, Mister Marley.  We all want to see Professor Clark safe and sound once more.  He's made many  contributions to the study of the peoples of India, and we'd like to see that continue."

It was only as he was packing his things at the hotel that Marley stopped to wonder why Creighton was so interested in the matter at all, and how he'd heard the rumors about Professor Clark.  But the thought quickly dissipated, leaving his still-cloudy mind as the bustle of preparing to depart pushed it away.

The journey to Jammu went easily enough for Marley, though it took several days.  The railroad only took him part of the way.  A horse got him the rest of the way.  After weeks of necessary idleness, the ride on the horse left him very tired by the time he reached Jammu.  It was with great satisfaction that he reached the hotel Creighton had recommended and retired for the evening.  Four weeks had passed since he'd been left in Umballa.  Marley wondered where Professor Clark had gotten to.  And on that thought, he lapsed into a long, restful sleep.


copyright (c) The Other Sean