Eric S. Raymond's Blog, page 42

May 31, 2014

Post requesting introductory-SF suggestions got deleted

My post requesting introductory-SF suggestions got accidentally deleted due to a WordPress interface feature I didn’t quite understand and momentary inattention.


Never fear, I had already digested most of the suggestions and am working on the result.

 •  0 comments  •  flag
Share on Twitter
Published on May 31, 2014 12:22

May 29, 2014

New cat soon to arrive here

Cathy and I signed papers to adopt a cat from a rescue network last night. It would be here already, but it’s being treated for a mild ear infection picked up at the pet store.


“It” is actually a he, a golden-eyed ginger-and-cream Maine Coon about two years old. The name is “Gorgonzola”, which we’ll probably shorten to “Zola”.


Why this cat? Because we’re of the school of thought that believes you should let a cat choose you rather than trying to choose a cat. Of all the ones we met, it seemed to take to Cathy the most strongly, and we viewed this as the more important compatibility check because we both know I have stronger cat-fu than she does. If a cat doesn’t take an active dislike to me (which is so unusual I can’t remember when it last happened) I will charm it eventually; this one likes me well enough to begin with that I’m sure we’ll do just fine.


It’s hard to avoid making comparisons with Sugar. First impression is that Zola is almost as human-friendly as Sugar was (which sounds like faint praise but is really like saying “almost as deep as the Pacific Ocean”) with a more placid, less active temperament. I’m not expecting him to be quite as outgoing with our houseguests, but I don’t think he’ll hide behind the furniture either. Likely he’ll just hang out nearby being mellow and making nice at anyone who approaches him. That’s typical behavior for Coon toms and he seems quite typical that way. He seems to be very gentle and un-clawful even by Coon standards, which is going some. I’d bet he’s great with small children.


We’re a little nervous, for all the obvious reasons. What if Zola has un-obvious behavior problems? Ill health? But it’s time. Our home feels a bit empty without a cat in it. Not for much longer!

 •  0 comments  •  flag
Share on Twitter
Published on May 29, 2014 18:52

May 27, 2014

Crowdsourcing request – SF books for newbies

I’ve had a request recently that I put together a list of good books to get people started towards becoming knowledgeable readers of SF.


I know the inner logic, conventions, and history of SF extremely well – I trust that this is manifest in the reviews I write. I believe I’m excellently qualified to curate such a list and explain why each entry belongs in it.


What I am not sure of is that, through over-familiarity with the field, I won’t miss obvious candidates. So I’m going to crowdsource the nominations. Please leave title/author info in a comment; optionally, add a sentence or two about why you think it belongs. More than one suggestion per comment is OK.


Here are some guidelines:


* Do not propose books simply because you think they are matchless classics: many matchless classics are advanced material not suitable for newbies. (This might be another list)


* Do not propose books simply because they are historically important; much historically important SF is a harder-than-necessary slog for the new reader. (This too might be another list.)


* Not interested in fantasy unless it’s the sort of hard fantasy that appeals to SF fans. If you don’t understand this category, don’t try recommending fantasy at all.


* Do not propose anti-SF – that is, books marketed as SF that are deliberately hostile to the genre’s traditions. (This lets out almost all “New Wave” and its present-day descendants.)


* Must be in print. Best if it’s available as a low-cost e-book, to reduce barriers to entry.


* Juvenile and YA fiction is not excluded but examples worthy of this list should be rewarding for adults as well.


Let the mayhem begin.

 •  0 comments  •  flag
Share on Twitter
Published on May 27, 2014 14:31

Review: Elements of Mind

I’ve been friendly with Walter Hunt for some years, so when he told me that his new novel Elements of Mind (Spence City) involved Victorian mesmerists, I knew to expect an atmospheric and meticulously researched fantasy full of period language and detail, probably one dovetailing with real history as seamlessly as anything by Tim Powers.


That is indeed what we get. In Victorian England, a society of mesmerists – in effect, sorcerers who can use gestures and the power of animal magnetism to compel humans and others – is aware of various categories of dangerous spirits. There are elementals of earth, air, fire and water; greater entities of a kind a Victorian Christian could only categorize as demons or perhaps djinn; and still greater, half-awake entities who might be old gods.



The mesmerists – and various unlikely allies – strive to keep these entities beyond the Glass Door, out of the human world. They cannot pass the Glass Door of themselves, but they can be summoned. And for the summoning there is always a price – which the evil or simply desperate may be all too willing to pay with their souls.


The head of the Committee of Mesmerists, William Davy, knows that some of these entities intend to shatter the Glass Door so that the spirits can erupt uncontrollably into the human world. To prevent this, he seeks a statuette older than history that enhances mesmeric powers. During the novel he travels all over Great Britain and eventually to India in search of it.


The only serious flaw in this book is that’s about all that happens. Walter is so fond of his scene-painting and historical lore (Charles Dickens and Thomas Carlyle are both significant characters) that he sometimes seems reluctant to let his plot develop or resolve. If I didn’t know from him that there is to be a sequel (something not hinted at in the packaging of the ARC he gave me) I might wonder what the actual point of the exercise was.


As it is, Walter is working on a narrative arc that cannot be encompassed in a single book. I have fair confidence that he’ll get somewhere interesting with it; this is, after all, the same man who wrote the action-filled but philosophically challenging Dark Wing space operas. In the meantime, this sepia-toned puzzlebox of a novel offers some quiet, sophisticated pleasures for the historically-literate reader and connoisseur of Victoriana. I mentioned Tim Powers earlier; though not as pyrotechnic as either, this work otherwise bears comparison with The Anubis Gates or The Stress of Her Regard pretty well.


Elements of Mind is perhaps best read with a search engine handy so you can look up character names and items of terminology, and appreciate the clever use Walter has made of his sources. If that prospect fails to appeal to you, you are probably not Walter’s target reader. But if it does, you’ll appreciate reading something more intelligent than the reams of formula fantasy out there, and this is it.

 •  0 comments  •  flag
Share on Twitter
Published on May 27, 2014 07:57

May 22, 2014

Review: The Devil’s Concubine

I requested an advance look at The Devil’s Concubine (Jill Braden; Wayzgoose Press) because the blurb hinted at an unusual and atmospheric fantasy. It is that; alas, in some other unfortunate respects it is all too predictable.



The island of Ponong is a sort of other-earthly Java or Bali, tropically gorgeous and dangerous and inhabited by people who have at some time in the past apparently hybridized with snakes; they get nictiating membranes and venomous fangs as factory equipment. QuiTai is a Ponong native with a history as an actress in foreign parts. Returned to her homeland, she has become the the concubine of the Devil, the reclusive werewolf crimelord who runs the island’s underworld, and is attempting to protect her people against the colonizing Thampurians.


Your generic fantasy world this is not. Even on primitive Ponong they have not only steam engines but rudimentary electronics that have taken a somewhat different direction from our history, and the island’s main export is biological glowlights. The indigenous culture is very much south-east Asian; it’s nice to see someone seriously trying on a fantasy setting that isn’t either European medieval mystery-meat or any of the other well-worn ruts. And the prose isn’t bad; the author’s scene-painting, especially, works well.


Alas, the book has strong elements of housewife porn. There’s the requisite evil-but-sexy male QuiTai must struggle to escape, and the requisite looks-like-a-bad-boy-but-isn’t for her to run to. The battling courtship proceeds along entirely predictable lines, not really saved from being boring by the moderately snappy dialogue. As is usual in such productions, QuiTai is convincingly shown to be quite bright in her intrigues, but also in retrospect to have been inexplicably stupid when her glands were involved. Few of the plot reveals are really surprising, and you can see the biggest one coming a mile off.


Thus, unless formula romance is enough to satisfy you, this book fails to deliver on the imaginative promise of its setting. Which is a shame; if it had been less about QuiTai’s sex life and more about (say) her covert struggle against the Thampurians, it would have been a lot more fun. It’s supposed to be first in a series; it would be nice to think that the sequels will be about something other than her approach-avoidance dance with the guy, but experience has taught me to be pessimistic in such matters.

 •  0 comments  •  flag
Share on Twitter
Published on May 22, 2014 21:33

Review: Template

I learned from his previous novels Fools Errant and Fool Me Twice that Matthew Hughes seems to have chosen crafting really high-quality tributes to Jack Vance as his artistic mission (at least when writing SF). As a long-time Vance fan myself I consider this a worthy goal, and in Template (self-published) he does not disappoint.



Conn Labro, an orphan, has lived his entire life as a contract player in one of the great gaming houses of the planet Thrais. His particular expertises center on strategy simulations and personal combat, at both of which he excels. But his life is overturned in a day when the house is destroyed and his only friend – an elderly man named Hallis Tharp with whom he has played games as long as he can remember – is murdered, followed by an attempt on Labro’s own life.


The old man, as it turns out, has left Labro an inheritance – enough money to buy out his indenture from the heirs of Horder’s Unparalleled Gaming Emporium, and an encrypted bearer deed to…something. Now Labro, never given to introspection or even much curiosity, is surrounded by questions. If Tharp wanted him free, why did he not buy Labro’s indenture before he died? What is the bearer deed a key to, and why are people trying to kill him for it? Jenore Morden, the woman from Old Earth who befriended Tharp when he lived in inexplicable poverty, urges him to track down Tharp’s murderers, and despite the rather cold-blooded customs of Thrais Conn feels moved to comply.


Conn has much to learn about himself and his origins. A journey to Old Earth, confrontations with villainy, and a lot of gorgeous Vancian scenery and satisfying hugger-mugger ensue. Hughes really is quite good at this; the effect is much like reading a fifth sixth Demon Princes novel that the master himself never happened to write. And intentionally so, I’m sure. Out of the small category of Vance pastiches (Hayford Pierce’s The Thirteenth Majestral and certain portions of M.A. Foster’s ler trilogy being the first to come to mind) Hughes’s are unequivocally the best I’ve encountered.


If I were the sort of precious snot who writes most lit-fic reviews, it would now be required that I either sniff at the inferiority of imitation and exhort you to go read some real Jack Vance, or adopt some strange contrarian position about Hughes’s writing demonstrating Vance’s inadequacy by improving on it. Because I’m not, I will both recommend Vance and thank Hughes for doing a really creditable job of adopting his style and techniques. Vance was unique and colorful and it is a good thing for SF that color has not been lost to us. I hope we’ll get to enjoy Matthew Hughes’s entertainments for many years to come.

 •  0 comments  •  flag
Share on Twitter
Published on May 22, 2014 08:01

May 20, 2014

Review: Reach for Infinity

Reach for Infinity (Jonathan Strahan, ed., Rebellion Publishing) is an anthology of new hard SF. The authors and the editor are stretching themselves, taking chances; some of these stories are failures. In general, however, even the failures are interesting efforts that will push you to think about their premises and consider the ways in which SF is constantly claiming new imaginative territory.



Any time you begin an anthology like this with a story by Greg Egan, you are launching well. Break My Fall, a tale of disaster and ingenuity as emigrants to Mars are menaced by a coronal mass ejection, does not disappoint.


Aliette de Bodard’s The Dust Queen, a speculation on memory surgery, is atmospheric and well written but less satisfying. While everything else about the story worked, she failed to sell me the central premise.


Ian McDonald’s The Fifth Dragon is a dense, intricate story of lunar colonization that throws off telling details like sparks. This is how it ought to be done.


Karl Schroeder is an interesting writer whose reach sometimes exceeds his grasp. In Kheldys he gives an attempt at world-wrecking villainy that fails to quite convince – I found myself wondering, if this disaster is possibly why has it not already happened naturally?


Pat Cadigan’s Report on the Presence of Seahorses on Mars is another colonization story, trying for the kind of richness McDonald’s has but not quite achieving it. Still, the premise of colonization as reality TV funded by its ratings on Earth is interesting.


Karen Lord’s Hiraeth: A Tragedy in Four Acts examines the notion that off-Earth environments reliably drive humans insane and examines how a culture spread across the solar system – and beyond – might attempt to cope.


Ellen Klage’s Amicae Aeternum is a story about friendship and the sacrifices interstellar colonization will almost certainly involve. Intellectually slight compared to most of this collection, but sweet – I’m pleased it wasn’t played as a tragedy.


Adam Roberts’s Trademark Bugs: A Legal History is, on the other hand, just preposterous – a satire on the absurdities of IP law that is far too heavyhanded for its own good. It’s not the only failure in this collection, but it’s the only uninteresting failure.


Linda Nagata’s Attitude comes at the idea of space colonization being fundded by its entertainment value from a different angle, constructing a story that at first looks like it will be about space sports but turns into a whodunnit. Very deftly handled.


Hannu Rajaniemi’s Invisible Planets is a wild imagistic ride reminiscent of Stanislaw Lem, but genuinely SFnal this time with a logical coherence Lem never had. The framing story is basically an excuse for the author’s imagination to run gorgeously amok, and a pretty good one.


In Kathleen Ann Goonan’s Wilder Still, the Stars, artificial human created with cruel limitations become able to transcend their programming through the patient work of a human who loves them. Though well imagined and executed, I would have appreciated a resolution less easy to predict


Ken McLeod’s “‘The Entire Immense Superstructure’: An installation” was more of a disappointment, because McLeod never made me believe the central premise of the WikiThing. Atoms are heavy and, that matters! The surrounding plot is slight.


Alastair Reynolds’s In Babelsberg is a chilling little tale of obsessive AI gone wrong and unable to understand its own error.


Peter Watts’s Hotshot finishes large with a meditation on on destiny and free will that does not bear easy summary. Watts is, as usual for him, both disturbing and thought-provoking in the best tradition of SF.


Overall this collection speaks well for editor Jonathan Strahan’s “Infinity” series of anthologies and is good enough reason for me to look up the previous ones.


 •  0 comments  •  flag
Share on Twitter
Published on May 20, 2014 07:30

May 18, 2014

Review: Anthem’s Fall

S.L. Dunn’s Anthem’s Fall (Prospect Hill Press) wants to be a high-concept SF novel. What it actually achieves is more like a bad comic book. Without the pictures.


In New York City, scientist Kristen Jordan (brilliant and beautiful, and very young, of course) is growing increasingly worried about an übertechnology she helped create, as the secretive leader of her research team seems to be developing ever more grandiose objectives. In the parallel world of Anthem, warfare and political collapse are destabilizing an empire. The teaser copy promises us that contending super-entities from Anthem will erupt into our world, requiring Kristen to unleash a technology against them that may be more dangerous than the invaders. DUM DUM DUM! And dumb, dumb, dumb.


But I never got that far. By fifty pages in it was clear that this is one of those books that, as Dorothy Parker put it, should not be lightly tossed aside; rather, it should be hurled with great force. I made myself soldier on a bit after that to give the Anthem-centered part of the narrative a fair shake, but it was no improvement on the parts set in New York City – if anything the smell of bad comic-book got stronger.



About the only good thing that can be said of this book is that the author and/or editors could consistently construct grammatically correct sentences. It’s all downhill from there.


The prose is grindingly leaden and pretentious. The characters, as far as I read, are a Mary Sue and her hunky love interest surrounded by cardboard cutouts. I’ve seen more plausible “science” in a Fantastic Four episode. There are thinly-disguised lectures peddling politics with a heavyhandedness that goes well beyond any plot- or character-development function they might turn out to have later (er, so, do I even need to add that it’s dimwitted politics?) Shopworn tropes lurk on every page. The author managed to tick just about every item on how to do SF wrong I can imagine putting on a checklist, and this is before I got through 15% of the book.


Spare yourself the pain unless you are looking for a horrible example of what not to do in your novel – and if you are, for Goddess’s sake pirate this thing rather than giving the author or publisher one red cent (this is not a recommendation I have ever made before). The last thing the world needs is incentives for more crap like this to get published.

 •  0 comments  •  flag
Share on Twitter
Published on May 18, 2014 23:33

May 17, 2014

Managing compatibility issues in ubiquitous code

There’s a recent bug filed against giflib titled giflib has too many unnecessary API changes. For a service library as widely deployed as it is (basically, on everything with a screen and network access – computers, smartphones, game consoles, ATMs) this is a serious complaint. Even minor breaks in API compatibility imply a whole lot of code rebuilds. These are not just expensive (requiring programmer attention) they are places for bugs to creep in.


But “Never change an API” isn’t a good answer either. In this case, the small break that apparently triggered this report was motivated by a problem with writing wrappers for giflib in C# and other languages with automatic memory management. The last round of major changes before this was required to handle GIF animation blocks correctly and make the library thread-safe. Time marches on; service libraries have to change, and APIs with them, even when change is expensive.


How does one properly reconcile these pressures? I use a small set of practice rules I think are simple and effective, and which I think are well illustrated by the way I apply them to giflib. I’m writing about them in public because I think they generalize.



First rule: if backward-compatibility is a must, fork your library into API-stable versus unstable/evolving versions. This is why I ship both a 4.2.x giflib and a 5.x.x giflib. The 4.2.x version is backward-compatible to the year zero; because of this, users get a choice and the effective cost of API breakage in the 5.x.x series decreases a great deal.


There are costs to this maneuver. The main cost to you, the developer, is that you will need to cross-port fixes from one line of development to the other. This is acceptable for giflib, which is pretty small; it gets more difficult for larger, more complex libraries.


The cost to the users is more serious. The stable version plain won’t get some fixes from the unstable version, exactly the ones that would require API changes. 4.2.x is never going to be thread-safe, and its extension-block handling is a bit flaky in edge cases. Also, it’s easy to drop a stitch and fail to cross-port fixes that could and should be applied.


In the case of giflib, these are not major problems. The 4.2.x code is very old, very stable, and has passed the test of time and wide deployment. Apparently there was never a lot of need for thread-safety in the past, and the the extension-block handling was good enough; we know these things because the rate of reported defects over the life of the project has been ridiculously low – averaging, in fact, fewer than four per year over a quarter century.


Other libraries may incur different (higher) implied costs under this strategy. If your service code is necessarily evolving really fast, forking a stable version may not be practical because the cost of back-porting fixes is insupportable. Engineering is tradeoffs; the point of this essay is more to raise awareness of the tradeoffs than to argue that any one rule of practice is always right. Be aware of why you’re doing what you’re doing, and document it.


Second rule: Provide #defines bearing each level of the release number in your library header so that people can use compile-time conditionals in the C preprocessor to write code paths that will compile and just work with any version of the library. (There are equivalent tactics in other languages.)


There’s no downside to this. If you do it properly, your users can choose to never lose back-compatibility with older versions of your library. Just as importantly, they can know they’ll never lose it. This is a confidence-builder.


Third rule: document, document, document. Every API change requires an explanation. Especially, do not ever leave your client-application developers in doubt about when an API or behavior change took place. They need to be able to conditionalize their code properly to track your changes (see the second rule), and they can only do that if they know exactly when in your release timeline each change occurred. This, too, is a confidence builder.


Fourth rule: Prefer noisy breakage to quiet breakage. The worst kind of API change is the kind that introduces an incompatible behavior change without advertising the fact. That way lies bugs, madness, and other developers rightly cursing your name.


Even so, this happens a lot because library maintainers mis-estimate tradeoffs. There’s a tendency to think that requiring users to recompile their applications (or re-link to a new major version of a shared library) is so irritating that it’s better to preserve the API by slipstreaming in changes in run-time behavior that you tell yourself will only be problematic or incompatible in rare edge cases. This belief is almost always wrong!


The bug report that motivated this apologia came in because the person who filed it thinks I shouldn’t have altered the argument profile of DGifClose() and EGifClose(). What he fails to understand is that I chose this path over some trickier alternatives because I wanted the API breakage to be noisy and obvious at compile time. This way, the client-application builds will break once, the fix will be easy, and the result will be right.


To apply rule four in this way, it helps to have been careful about rules one through three, in order to lower the cost of the disruption. Thus, my users have 4.2.x to fall back on if they really can’t live with my break-it-noisily practice.


You also want to put in effort to make sure the fix really is easy. Not just to save other developers work, though they’ll thank you for that; the real reason is that tricky fixes get misapplied and spawn bugs.


The bug reporter wants to know why I didn’t leave DGifClose() and EGifClose() as they were and introduce new entry points with the different profile. This is a fair question, and representative of a common argument for adding complexity to library APIs rather than breaking backward compatibility. It deserves an answer.


Here it is: code and API complexity are costs, too. They’re a kind of technical debt that creeps up on you, gradually. Each such kluge looks justified when you do it, until you turn around and discover you have an over-complex, unmaintainable, buggy mess on your hands. I take the long view, and prefer not to let this degeneration even get started in my code! This choice may transiently annoy people, but it’s going to lower their exposure to defects over the whole lifetime of the software.


Being able to take this pro-cleanliness position is an un-obvious but important benefit of open source. The people in my distribution chain and userbase may gripe about having to do rebuilds from source, but they can do it. When you’re gluing together opaque binary blobs, the cost of API breakage is severe and you get forced into tolerating practices that will escalate code bloat and long-term defect rates.

 •  0 comments  •  flag
Share on Twitter
Published on May 17, 2014 04:02

May 16, 2014

Review: A Darkling Sea

While most life on Earth is powered by chemical energy captured from solar radiation, deep in our seas there are entire ecologies powered by volcanism – specifically the hot water issuing from hydrothermal vents. Hot mineral-rich water supports a food chain based on chemosynthetic bacteria and archaea; it extends upwards in complexity through giant tube worms, clams, limpets and shrimp. These animals live miles further down than sunlight ever reaches, in an extreme of pressure and frigid temperatures that would kill any surface life in short order.


In recent years planetary astronomers have come to believe that beneath the icy surfaces of some of our gas-giant moons there are dark oceans of liquid water. Tidal forces acting on the moons power volcanism; Europa, in particular (the smallest of the four “Galilean” moons of Jupiter) is suspected of having its own hydrothermal vents. Exobiologists think it is relatively likely that life has evolved around them.


James Cambias’s A Darkling Sea (Tor) transplants the Europa scenario to Iluvatar, a moon in a solar system roughly half way between future Earth and the homeworld of aliens called the Sholen who are attempting to limit human interstellar expansion. A peace treaty with the Sholen constrains human scientists living in a seafloor habitat beneath the ice. They chafe to make contact with the intelligent arthropods at the top of Iluvatar’s foor chain, but are forbidden from contaminating their culture.


After a human scientist attempting to spy on the Ilmatar is captured and dissected by Iluvatarans who do not realize he is a sophont like themselves, a Sholen mission shuts down the base and orders the humans to evacuate. Some humans, refusing, flee into the lightless ocean and must make allies of the Iluvatarans to survive. When the Sholen’s clumsy attempts at forcing the issue kill some of the mission crew, the survivors vow to strike back.


Cambias imagines a detailed and convincing ecology for Iluvatar. The natives have plausible psychologies given their evolutionary history (the way Cambias develops the operation and limits of the sonar that is the only distant sense of these eyeless beings is impressive). The gritty details of life in a cramped, smelly human dive habitat are also well handled. Even the villains of the piece are not mere cardboard; the Sholen have their own internal factional problems, and become dangerous not because the are strong but because they are divided, afraid, and dwindling.


Overall, this is a tense, well-constructed SF novel of first contact, done in the classic Campbellian style and lit up with the sense of discovery that such works ought to have. It could have been written by Hal Clement or Arthur C. Clarke if either were still alive. It works excellently on that level, even if you don’t notice that the author has embedded in it a sly parable.


I won’t spoil the fun by laying it all out for you. But the viewpoint character’s last name is “Freeman”, and the repressive eco-pietism of the Sholen echoes the attitudes of some humans in our present day. The second half of the book, without ever tub-thumping about it, delivers a satire of various human political delusions. Even the Sholen social pattern of achieving consensus by bonobo-like sexual bonding carries mordantly funny symbolic freight once you realize what it’s a comment on.


All in all, highly recommended. This is much the best first SF novel I’ve read in the last few years, and leads me to expect good craftsmanship from Cambias in the future.

 •  0 comments  •  flag
Share on Twitter
Published on May 16, 2014 03:09

Eric S. Raymond's Blog

Eric S. Raymond
Eric S. Raymond isn't a Goodreads Author (yet), but they do have a blog, so here are some recent posts imported from their feed.
Follow Eric S. Raymond's blog with rss.