Novel month 2017: Prelude

November’s almost here again, and you know what that means. Yep, it’s time for another writing push. For me, though, this year is going to be a bit different. As you know, the goal is supposed to be a novel of 50,000 words or more in a month. Well, most of mine are a lot longer than that. (My shortest full novel, Before I Wake, was about 83,000 words long.) On the other hand, writing 50,000 words in November would make it my least productive month so far this year.

So here’s what I’m going to do. The 50,000 word mark is still on the table, but it’s definitely not the only objective. Rather, it’s the first order of business, and my goal with it is to reach it as quickly as possible, while still maintaining the level of quality I expect from myself.

The story I’m doing is called The Soulstone Sorcerer, and it’s my first attempt at more “traditional” sword-and-sorcery fiction. It’ll still have weirdness, humor, and a generally lighthearted feel to it, but it’s going to look a lot more…ordinary? I’m not sure of the best word to describe it. Maybe that can wait until I’ve actually written the thing.

Anyway, it’s looking in my head like it’ll be about 140-150K words, so at least as long as Nocturne. That’s not getting done in a month, even if I do nothing else with my life in that time. So completing the novel simply isn’t one of my goals. Instead, after I hit the 50K mark, the rest of the month will be the endurance round: max words written. Quality remains paramount, however. I’ll save the stream-of-consciousness verbiage for posts like these.

I will continue my tradition of daily (or close enough) posts. These won’t be too detailed, but more like status updates. As usual, those will replace the usual content for the month, and regular posts will resume on December 4, my next scheduled posting date.

This, I hope, will be my 6th consecutive “win”. Here’s the rest of the streak, for reference:

  • 2012: Heirs of Divinity
  • 2013: Out of the Past
  • 2014: Before I Wake
  • 2015: The City and the Hill
  • 2016: Nocturne

(Technically, Out of the Past wasn’t 50,000 words as a completed story, but I did consider it complete, thus fulfilling the second of the two criteria for the month. I’ll count it as a win for that reason.)

Wish me luck!

Otherworld talk 6

The latest part of Chronicles of the Otherworld came out the other day over at my Patreon. For those who are counting, that’s Episode 6, Situational Awareness, and it’s probably my overall favorite. For once, I felt like everything just…clicked. The two main plots meshed well, the characters all had a role to play, the overall story advanced, and I even had some good action scenes buried in there. I won’t say it’s perfect (nothing I write ever is), but I do believe this is the jewel of the series.

Relationships are a big part of Chronicles, and I’m not just talking about romantic and sexual relationships. No, the primary focus of the entire series is how the expedition members react with each other and the natives of the Otherworld. It may have started out as nothing more than a worldbuilding playground, but this story very quickly became a character drama. So let’s talk about that today.

Friends and enemies

Living among a people for two and a half months (it’s not quite that far yet, but it soon will be), it’s only natural that a group of intelligent, outgoing—except for Alex—and open young people are going to make friends. In the beginning, that was impossible, thanks to the language barrier, but now, later in the story, they have grown more comfortable in the Otherworld. Every one of the primary characters has at least one friend from the natives. Some, like Ashley and Ryan, have many more.

The indigenous people of the Otherworld are, well, people, so that’s why this is possible. It’s only natural. Indeed, I intended it that way from the start. Maybe not the exact faces that would fill the “friend” roles, but they were supposed to be making friends all along.

Their existing friendships also strengthen due to their shared experience. Ryan and Ramón, for instance, got to know each other in the original dig, and they only grow closer as the weeks progress. By the end of it, there is some strain starting to show, but they’re such good friends that at least one native sees them as like brothers. Amy and Sara are another example, as they were best friends before they left home; eighty days of living and working together, of relying almost wholly on one another, will leave them in much the same situation. (Although they do have one glaring difference, as you’ll come to learn.)

On the other side of the coin, not everybody is always friendly. Few are outright hostile from the start, a situation I feel is realistic. Yes, the Otherworld has its malcontents, and even racists, but the members of the expedition need time to earn even their ire. The Kaldea (Episode 5) have cultural reasons to be unfriendly; we’ll see more about that later on. This episode’s bandit leader Olof is a special case even for them, though.

Mostly, the reason there aren’t more enemies is simple expedience on my part. The main conflicts are environmental and personal in nature. There simply isn’t that much room for eleven (or more) enemies. Jenn has a nemesis now, and Lee is in the process of picking one up. Alex and Ayla hate each other…for the most part. And who knows what Damonte will get into in his solo adventure.

Natural urges

So that’s it for friends, but some characters have become somewhat more than friends. That was nowhere near part of the original plan, I’ll admit. At the start, I never intended the series to become so sexualized, but there it is. I justify this by saying that these are college students, young adults, and they’ve been placed in a stressful situation where they completely lack adult supervision. It’s only natural that some of them will give in to their baser instincts.

Ayla does it as stress relief; as we’ll see later on, she figures that, hey, nothing else works, so why not give it a shot? Lee was basically tricked into it, but it turns out that he doesn’t really mind. Jeff essentially thinks he’s won the lottery, and Amy—well, we’ll get to that soon enough.

In sharp contrast, Ryan turns down all such offers (mostly off-screen). Jenn, as you saw in this episode, is happy being friends with Bryn instead. Alex assumes his first time with Ayla is also his last (he’s wrong), and Ramón holds up his Catholic upbringing as a shield. It’s not that they aren’t tempted. They certainly are, as the culture they find themselves in simply doesn’t have the same sorts of taboos as ours. It’s a lot more open, a lot less restrained. But they refuse to indulge for their own reasons.

The natives pick up on all of this. After all, they’re not stupid. But they also see these newcomers (with a few exceptions) as the semi-mythical Altea. As Ashley explains in this past week’s episode: what poor, lonely woman wouldn’t want to improve her lot by getting together with what she sees as a demigod? It’s much different for the native men, a topic we’ll see picked up in Season 2, but many of the relationships that spring up stem from this.

And that was something I intended. Maybe I didn’t expect to take things this far, but…they did, and it works. Especially in this part. Next up is Episode 7, a case where I think much the opposite. I’ll see you then.

On rhythm and flow

What makes good prose? I wish I knew, because then I’d be rich. But I think it’s largely one of those subjective things, something different for different people. Still, I believe there are some constants. We can easily point to something and say, “That’s bad.” In most cases, what’s “bad” won’t even be up for debate. Defining “good”, on the other hand, is tricky, but let’s see what we can do.

Setup work

I don’t claim to be a great writer. I’m good at best, probably closer to mediocre. I do, however, think I write above-average prose. By that, I mean the actual words themselves, the sentence and paragraph structure. The skeletal structure of a book, if you will, where the story itself is the meat and flesh.

Good prose is in the eye of the beholder, so it may sound a bit biased for me to say that my prose is good. It’s a bit of the Dunning-Kruger effect: people tend to see themselves as better than they really are. But hear me out.

I recently read The Bands of Mourning by Brandon Sanderson. Now, Sanderson is one of my favorite authors, and he’s practically a legend when it comes to writing quantity, but this book really left something to be desired in the prose department. It’s a great story, although it comes off the rails a bit towards the end, and the worldbuilding is (as always for this author) top-notch.

Yet as I read it, I found myself wincing more than once at the prose. It’s clunky, jarring, and I can’t blame that all on necessity. See, I believe there is a time and place even for poor grammar. (Usually, that works best in dialogue, and I’m not afraid to write, for example, “me and him” when that’s what a character would likely say.) But this went beyond that. For a fairly long stretch in the prologue, it was like the author forgot how to use pronouns. Sentences were written in such a way as to be confusing, ambiguous. The whole thing read like something I would have written in school.

For the first time in the five years I’ve been serious about my writing, I couldn’t not compare a professional creation to my own, and I found the pro wanting. It was an odd feeling, though not one of pride. I’m most certainly not saying I’m a better writer than Brandon Sanderson. But I do find it strange how big this particular difference in quality was. Remember, I’m a self-published author. I can’t afford a dedicated editor. And yet I couldn’t help but think I was doing better.

Like a river

It took some time, but I finally figured out where this all came from. And that goes back to what I feel is one of the hallmarks of my writing style. I don’t go in for convoluted phrasing, a vast vocabulary, or anything like that. No, I place the greatest emphasis on flow.

Flow, as I define it (I’m not even sure it’s a real thing, much less something with an actual definition), is a kind of phrase-level rhythm. Writing flows if one phrase or sentence leads naturally and seamlessly into the next. For me, good flow realizes as an almost hypnotic quality. If I lose track of time while reading, then here’s a story with good flow. Story, characters, and worldbuilding all matter more, of course, but I find it easier to lose myself in a river of prose than jagged phrasal peaks.

Part of good flow is about making connections. That’s why I use a lot of compound and complex sentences for exposition, with dependent clauses and conjunctions everywhere. I also tend to digress, resulting in probably too many dashes, but even those fit in the flow, and I think a dashed-off (or parenthesized) phrase is better than an extra sentence that distracts from the main point I’m making.

Literary devices like alliteration and parallelism, both of which I use heavily, fit into the flow almost without even trying. Alliteration and assonance, for example, are like a pounding beat. Done properly, they don’t interrupt the flow, but enhance it. Similarly, parallelism has its own repetition, which I find to work a bit like a feedback loop: the flow only grows stronger until it’s finally released.

Changing the beat

Once I’ve set the flow for a story, changing up the rhythm has an immediate effect. The desired effect, at that. Short, clipped sentences indicate action, tension. Long, meandering thoughts are for introspection and reflection. And so on from there. That’s more of a general thing, but it’s a more noticeable shift when I’ve spent so long working on a flowing narrative.

But I still keep the elements of the flow, even when the beat changes. A key to good writing, I think, is nailing down when to change your narrator’s “voice”. It’s like when I write child characters, or the native characters in my Otherworld setting. There, although the flow itself remains, its nature changes. That provides a dramatic shift purely out of contrast, so you know that this character has a different way of thinking, of looking at the world. Maybe a child won’t go in for long stretches of pure thought—they’d get distracted halfway through—but they’ll have other ways of keeping this virtual beat.

By doing things this way, I’ve even made some parts of the editing process easier. I know when to rewrite a phrase, sentence, paragraph, or utterance if it stands out by virtue of its lack of flow. Like a wrong note or botched line, poor prose becomes obvious by its poor fit. Smoothing out those rough edges leaves me with something coherent, connected. Maybe not good, but I didn’t claim I was that.

Opinions

All this is my own opinion. It’s not even an educated opinion, either, as I’ve never taken a formal writing class. Instead, I come by my opinions through thought, reasoning, and study. I can point to a work I’ve read and tell you how I feel about its prose, even if I may not use proper terminology to do so.

Of course, my opinion may not be the right one. It probably isn’t the right one for you. Still, I encourage you to consider what I’m saying. Think about how your own writing flows. Good prose, I have found, feels like floating down a river, or drifting at sea, or even just falling asleep. On the other hand, poor prose constantly jerks me awake, out of the moment and into reality. Maybe your feelings are different, but you won’t know until you find them.

Release: Situational Awareness (Chronicles of the Otherworld 6)

Six down, two to go. With the release of Episode 6, Situational Awareness, the long-running saga is nearing its inevitable conclusion.

In another world, the strangest thing to discover might be oneself.

Whether caught in the standoff, fleeing the scene, or hiding away in a distant village, the members of the expedition are forced into an uncomfortable situation. The outlaws are not going away. No, they are seeking something, someone, and they have the force necessary to take what they want.

Miles away, down the river, new discoveries are being made. Archaeology it is not, but the research is no less difficult, no less vital to their ultimate goal of returning to their home planet. Yet the ancient writings are not the only object of interest. As ever, the most impact is made by the people of this land.

Not a lot to say that hasn’t been said already, so head on over to my Patreon for more information. A small donation of $3 gets you this episode and the previous five; keep it for the rest of the year, and you’ll have the remaining two parts to go with them.

Episode 7, A Peace Shattered, will come out November 21, so make plans to ignore your turkey and your shopping while you immerse yourself in the Otherworld.

Future past: steam

Let’s talk about steam. I don’t mean the malware installed on most gamers’ computers, but the real thing: hot, evaporated water. You may see it as just something given off by boiling stew or dying cars, but it’s so much more than that. For steam was the fluid that carried us into the Industrial Revolution.

And whenever we talk of the Industrial Revolution, it’s only natural to think about its timing. Did steam power really have to wait until the 18th century? Is there a way to push back its development by a hundred, or even a thousand, years? We can’t know for sure, but maybe we can make an educated guess or two.

Intro

Obviously, knowledge of steam itself dates back to the first time anybody ever cooked a pot of stew or boiled their day’s catch. Probably earlier than that, if you consider natural hot springs. However you take it, they didn’t have to wait around for a Renaissance and an Enlightenment. Steam itself is embarrassingly easy to make.

Steam is a gas; it’s the gaseous form of water, in the same way that ice is its solid form. Now, ice forms naturally if the temperature gets below 0°C (32°F), so quite a lot of places on Earth can find some way of getting to it. Steam, on the other hand requires us to take water to its boiling point of 100°C (212°F) at sea level, slightly lower at altitude. Even the hottest parts of the world never get temperatures that high, so steam is, with a few exceptions like that hot spring I mentioned, purely artificial.

Cooking is the main way we come into contact with steam, now and in ages past. Modern times have added others, like radiators, but the general principle holds: steam is what we get when we boil water. Liquid turns to gas, and that’s where the fun begins.

Theory

The ideal gas law tells us how an ideal gas behaves. Now, that’s not entirely appropriate for gases in the real world, but it’s a good enough approximation most of the time. In algebraic form, it’s PV = nRT, and it’s the key to seeing why steam is so useful, so world-changing. Ignore R, because it’s a constant that doesn’t concern us here; the other four variables are where we get our interesting effects. In order: P is the pressure of a gas, V is its volume, n is how much of it there is (in moles), and T is its temperature.

You don’t need to know how to measure moles to see what happens. When we turn water into steam, we do so by raising its temperature. By the ideal gas law, increasing T must be balanced out by a proportional increase on the other side of the equation. We’ve got two choices there, and you’ve no doubt seen them both in action.

First, gases have a natural tendency to expand to fill their containers. That’s why smoke dissipates outdoors, and it’s why that steam rising from the pot gets everywhere. Thus, increasing V is the first choice in reaction to higher temperatures. But what if that’s not possible? What if the gas is trapped inside a solid vessel, one that won’t let it expand? Then it’s the backup option: pressure.

A trapped gas that is heated increases in pressure, and that is the power of steam. Think of a pressure cooker or a kettle, either of them placed on a hot stove. With nowhere to go, the steam builds and builds, until it finds relief one way or another. (With some gases, this can come in the more dramatic form of a rupture, but household appliances rarely get that far.)

As pressure is force per unit of area, and there’s not a lot of area in the spout of a teapot, the rising temperatures can cause a lot of force. Enough to scald, enough to push. Enough to…move?

Practice

That is the basis for steam power and, by extension, many of the methods of power generation we still use today. A lot of steam funneled through a small area produces a great amount of force. That force is then able to run a pump, a turbine, or whatever is needed, from boats to trains. (And even cars: some of the first automobiles were steam-powered.)

Steam made the Industrial Revolution possible. It made most of what came after possible, as well. And it gave birth to the retro fad of steampunk, because many people find the elaborate contraptions needed to haul superheated water vapor around to be aesthetically pleasing. Yet there is a problem. We’ve found steam-powered automata (e.g., toys, “magic” temple doors) from the Roman era, so what happened? Why did we need over 1,500 years to get from bot to Watt?

Unlike electricity, where there’s no obvious technological roadblock standing between Antiquity and advancement, steam power might legitimately be beyond classical civilizations. Generation of steam is easy—as I’ve said, that was done with the first cooking pot at the latest. And you don’t need an ideal gas law to observe the steam in your teapot shooting a cork out of the spout. From there, it’s not too far a leap to see how else that rather violent power can be utilized.

No, generating small amounts of steam is easy, and it’s clear that the Romans (and probably the Greeks, Chinese, and others) could do it. They could even use it, as the toys and temples show. So why didn’t they take that next giant leap?

The answer here may be a combination of factors. First is fuel. Large steam installations require metaphorical and literal tons of fuel. The Victorian era thrived on coal, as we know, but coal is a comparatively recent discovery. The Romans didn’t have it available. They could get by with charcoal, but you need a lot of that, and they had much better uses for it. It wouldn’t do to cut down a few acres of forest just to run a chariot down to Ravenna, even for an emperor. Nowadays, we can make steam by many different methods, including renewable variations like solar boilers, but that wasn’t an option back then. Without a massive fuel source, steam—pardon the pun—couldn’t get off the ground.

Second, and equally important, is the quality of the materials that were available. A boiler, in addition to eating fuel at a frantic pace, also has some pretty exacting specifications. It has to be built strong enough to withstand the intense pressures that steam can create (remember our ideal gas law); ruptures were a deadly fixture of the 19th century, and that was with steel. Imagine trying to do it all with brass, bronze, and iron! On top of that, all your valves, tubes, and other machinery must be built to the same high standard. It’s not just a gas leaking out, but efficiency.

The ancients couldn’t pull that off. Not from lacking of trying, mind you, but they weren’t really equipped for the rigors of steam power. Steel was unknown, except in a few special cases. Rubber was an ocean away, on a continent they didn’t know existed. Welding (a requirement for sealing two metal pipes together so air can’t escape) probably wasn’t happening.

Thus, steam power may be too far into the future to plausibly fit into a distant “retro-tech” setting. It really needs improvements in a lot of different areas. That’s not to say that steam itself can’t fit—we know it can—but you’re not getting Roman railroads. On a small scale, using steam is entirely possible, but you can’t build a classical civilization around it. Probably not even a medieval one, at that.

No, it seems that steam as a major power source must wait until the rest of technology catches up. You need a fuel source, whether coal or something else. You absolutely must have ways of creating airtight seals. And you’ll need a way to create strong pressure vessels, which implies some more advanced metallurgy. On the other hand, the science isn’t entirely necessary; if your people don’t know the ideal gas law yet, they’ll probably figure it out pretty soon after the first steam engine starts up. And as for finding uses, well, they’d get to that part without much help, because that’s just what we do.

Release: The Shape of Things

Thanks to my aunt (who gave me the idea for this one), I’ve got a new novel to get you in the Halloween spirit. It’s called The Shape of Things, and it’s a paranormal mystery with urban fantasy elements. But don’t think it’s something way “out there”. You know I don’t write that. Anyway, here’s the blurb for it:

The world is stranger than you know.

Cameron Weir hunts the paranormal. It’s a hobby, a second job, a nice diversion from the rigors of life. Whether it’s ghosts or monsters or aliens, he’ll be there to find the answer. And that answer is never any of those things, because he well knows that monsters don’t exist.

But something is out there. Something lurks in the night. What started as a simple call with a mundane explanation turns out to lead to a much deeper mystery. Glowing eyes in the dark. Strange, animal-like sounds echoing through the night. And then the most monstrous of all: a dead body. In the midst of such weirdness, Cameron questions his own rationality, and that leads him on a trail that will take him to the most fabled monster of all: Bigfoot.

For now, it’s only on my Patreon. Later on, I’ll look into putting it on the Kindle store or elsewhere. If I do, I’ll write up a longer post describing it. Until then, the description above and the post over on Patreon should suffice.

Borrowing from natural languages

One of the hardest parts about creating a language has to be the vocabulary. At least, that’s always the hardest for me. Maybe you’re different, but I doubt it’s easy for anybody, unless you’re doing one of those “engineered” languages where an algorithm does all the work for you.

Anyway, since creating words is so difficult, and since we do have to have them to, well, make a language, it’s only natural that we look for shortcuts. One of those is the random word generator, as you know, and I’ve spoken on that subject before. Today, however, we’ll look at a different method: borrowing. Specifically, I’m talking about borrowing from an existing language, a real language.

Can it work?

Borrowing from natural languages is fairly straightforward, but it’s easy to go wrong. Obviously, if you just take a bunch of English words wholesale, then you’re not making a separate language. You’ll end up with something closer to a pidgin instead: English words stuffed into foreign grammar. And that’s probably not what you want.

So we need a better strategy, but which one you want to use depends on your goal. Which words you want to borrow will go a long way towards defining the “feel” of your conlang. If you’re taking a bunch of old Anglo-Saxon roots, that’s going to create something that looks much different from a language that only borrows modern technical terms like “internet” or “photovoltaic”.

Also, remember that languages don’t always borrow a whole linguistic paradigm. They’ll tend to take only a root (which might not be the actual root) and derive native terms from there. So even if you borrow “computer”, that’s no guarantee that you’ll be borrowing “computers”, “computing”, and “computation”, too. If you do, it’ll look less natural, because that doesn’t often happen in the real world. And you do want this to look realistic, don’t you?

Details

Clearly, the absolute best way of borrowing from natural languages would be to let your conlang stay in contact with the “source” language (e.g., English) for generations, allowing the loans to build up organically. But we don’t have that kind of time. How can we simulate that evolutionary process in a hurry?

Well, there are a lot of ways. For the modest goal of creating a natural-looking conlang backed by a plausible culture, following the guidelines I’ve mentioned in my “Let’s Make a Language” series will help. Rather than send you to read all of those, though, I’ll boil them down to their essence right here.

First, think about how existing languages borrow words. It’s not at random. It’s usually to fill a need, such as an imported food or a new invention. It could be political or religious in nature, as well, as the large number of Latin and Greek borrowings related to Christianity will attest. But it’s not often for things we already have words for. You don’t see common, basic vocabulary items like “sea” or “dog” being borrowed, because there was never any need. Yes, some specific subsets might come from loans (e.g., “maritime”, “canine”), but these are the exception, not the rule.

Second, languages are only going to borrow from those they have contact with. English today is everywhere, but that wasn’t always so. Japanese got most of its loans from Chinese to start, while Quechua (in South America) took mostly from Spanish. Borrowings, especially in pre-modern times, are going to come first from neighbors, second from conquering or conquered peoples, and last from a “lingua franca”. That does require you to locate your conlang in the real world, but it allows for greater verisimilitude, which is why you’re reading this post in the first place.

Finally, the culture of the conlang itself will determine what it borrows. Initially, it will move to fill gaps in its lexicon, and what those gaps are can create a different feel for the language. To create one contrived example, imagine a small culture undergoing a push for equal rights for women. It’s been mostly male-dominated up to now, and the vocabulary reflects that. But it has contact with French, which has gendered occupational titles. So it might borrow a few feminine forms here and there, or maybe even the -eur/-euse distinction as a whole. If the movement goes far enough, the existing (native) masculine words may be reinterpreted as gender-neutral forms, giving rise to a new dichotomy. Then, as more modern occupations become available (to men and women alike), the language would borrow terms for them, then modifying them to fit the new standard.

The same principle works pretty much everywhere. A perceived need is filled by taking from a nearby or well-known language that has already filled them. It works in all fields, under any circumstances. You can even see it at work today, among smaller natural languages. Look around, and you’ll see how many have borrowed, in some form, “telephone”, “television”, “automobile”, and a whole host of others. Of course, they wouldn’t need those words if they didn’t have those concepts, but that’s neither here nor there.

In other wor(l)ds

The same principle works in non-modern settings. You’d have to do a lot more work to come up with plausible borrowings from, say, Sumerian or Etruscan, but we know they provided loanwords to their neighbors. Remember, though, that older times imply less connectivity, less globalism. (Not always, as the Roman Empire proves, but it’s a good rule of thumb.) That also means more dialects, which can provide a bit more variety in your loans.

You can even generalize this to other worlds, though this one’s a lot more difficult. At some point, you’re making a whole “conworld”, rather than just a conlang, and that’s a different article for a different time. Still, the basic principle of “borrowing to fill in the gaps” works anywhere.

For a conlang intended to be spoken by a hypothesized real-world people, take from those languages that are supposed to be their neighbors. A culture hidden in an inaccessible corner of the Amazon isn’t going to start getting European loans until 1492, at the earliest. More likely, it’ll take some time for influence to diffuse that far, possibly even centuries. Likewise, central Africa isn’t going to get much Chinese influence until almost right now.

In a way, this whole process is reminiscent of the creation of an auxiliary language. But it still retains the artistic style, the creative flair of an a priori conlang. It’s almost like an intermediate form, you might say. A happy medium.

Modern C++ for systems, part 1

In today’s world, there are two main types of programming languages. Well, there are a lot of main types, depending on how you want to look at it, but you can definitely see a distinction between those languages intended for, say, web applications and operating systems. It’s that distinction that I want to look at here.

For web apps (and most desktop ones), we have plenty of options. JavaScript is becoming more and more common on the desktop, and it’s really the only choice for the web. Then we’ve got the “transpilers” bolted on top of JS, like TypeScript, but those are basically the same thing. And we can also write our user applications in Python, C#, or just about anything else.

On the other side—and this is where it gets interesting, in my opinion—the “systems” side of the equation doesn’t look so rosy. C remains the king, and it’s a king being assaulted from all sides. We constantly see articles and blog posts denigrating the old standby, and wouldn’t you know it? Here’s a new, hip language that can fix all those nasty buffer overflows and input-sanitization problems C has. A while back, it was Go. Now, it’s Rust. Tomorrow, it might be something entirely different, because that’s how fads work. Here today, gone tomorrow, as they say.

A new (or old) challenger

C has its problems, to be sure. Its standard library is lacking, the type system is pretty much a joke, and the whole language requires a discipline in coding that really doesn’t mesh with the fast and loose attitudes of today’s coders. It’s also mature, which hipsters like to translate as “obsolete”, but here that age does come with a cost. Because C has been around so long, because it’s used in so many places, backwards compatibility is a must. And that limits what can be done to improve the language. Variable-length arrays, for instance, are 18 years old at this point, and they still aren’t that widely used.

On the other hand, “user-level” languages such as Python or Ruby tend to be slow. Too slow for the inner workings of a computer, such as on the OS level or in embedded hardware. Even mobile apps might need more power. And while the higher-level languages are more expressive and generally easier to work with, they often lack necessary support for lower-level operations.

Go and Rust are attempts at bridging this gap. By making languages that allow the wide range of operations needed at the lowest levels of a system, while preventing the kinds of simple programming errors a C compiler wouldn’t even notice, they’re supposed to be the new wave in system-level code. But Go doesn’t have four decades of evolution behind it. Rust can’t compile a binary for an 8-bit AVR microcontroller. And neither has the staying power of the venerable C. As soon as something else comes along, Rust coders will chase that next fad. It happened with Ruby, so there’s no reason it can’t happen again.

But what if I told you there’s a language out there that has most of C’s maturity, more modern features, better platform support1, and the expressive power of a high-level language? Well, if you didn’t read the title of this post, you might be surprised. Honestly, even if you did, you might still be surprised, because who seriously uses C++ nowadays?

Modern world

C++ is about as old as I am. (I’m 33 for the next week or so, and the original Cfront compiler was released in 1985, so not too much difference.) That’s not quite C levels of endurance, but it’s pretty close, and the 32-bit clocks will overflow before most of today’s crop of lower-level languages reach that mark. But that doesn’t mean everything about C++ is three decades out of date.

No, C++ has evolved, and never so much as in 2011. With the release of that version of the standard, so much changed that experienced programmers consider “Modern” C++ to be a whole new language. And I have to agree with them on that. Compared to what we have now, pre-2011 C++ looks and feels ancient, clunky, baroque. Whatever adjectives your favorite hater used in 2003, they were probably accurate. But no more. Today, the language is modern, it’s fresh, and it is much improved. So much improved, in my opinion, that it should be your first choice when you need a programming language that is fast, safe, and expressive. Nowhere else can you get all three.

Why not Java/C#?

C++ often gets compared to Java and C#, especially when talk turns to desktop applications. But on the lower levels, there’s no contest. For one, both Java and C# require a lot of infrastructure. They’re…not exactly lightweight. Look at Android development if you don’t believe me on the Java side. C# is a little bit better, but still nowhere near as efficient in terms of space.

Second, you’re limited in platform support. You can’t very well run Java apps on an iPhone, for instance, and while Microsoft has opened up on .NET in the past few years, it’s still very much a Windows-first ecosystem. And good luck getting either of them on an embedded architecture. (Or an archaic one.)

That’s not to say these aren’t good languages. They have their uses, and each has its own niche. Neither fits well for our purposes, though.

Why not Go/Rust?

Go, Rust, and whatever other hot new ideas are kicking around out there don’t suffer from the problem of being unfit for low levels. After all, they’re made for that purpose, and it’d be silly to make a programming language that didn’t fill its intended role.

However, these lack the maturity of C++, or even Java or C#. They don’t have the massive weight of history, the enormous library of documentation and third-party code and support. Worse, they aren’t really standardized, so you’re basically at the mercy of their developers. Tech companies have a reputation for short attention spans, which means you can’t be sure they won’t stop development tomorrow because they think they’ve come up with something even better. (Ask me about Angular.)

Why C++?

Even if you think some other language works better for your system, I’d still argue that you should give Modern C++ a shot. It can do essentially everything the others can, and that’s not just an argument about what’s Turing-complete. With the additions of C++11, 14, and 17, we’re not talking about the “old” style anymore. You won’t be seeing screen-long type declarations and dizzying levels of bracket nesting. Things are different now, and C++ even has a few features lacking from other popular languages. So give it a shot.

I know I will. Later on, I hope to show you how C++ can replace both the old, dangerous C and the new, limiting languages like Rust. Stay tuned for that.


  1. Strictly speaking, Microsoft doesn’t have a C compiler, only a C++ one. MSVC basically doesn’t track new versions of the C standard unless they come for free with C++ support. 

Otherworld talk 5

The second half of Chronicles of the Otherworld has begun. You might say it’s all downhill from here, except…well, it’s really not. We haven’t hit the highest notes of this song quite yet. But we have seen a new episode released (The Bonds Between Us), so that’s a good excuse for a new chat about this setting from the man who created it. This time around, I want to take a deeper look at the “local” culture of the Otherworld, the Virissea. Personally, I feel they’re one of my greatest creations. To think, they started off as nothing more than a background element for their language.

The language

That one’s not even an exaggeration. As I’ve said numerous times, the initial seed for the Otherworld series came when Stargate Universe was canceled. Nobody was doing good “exploration” sci-fi anymore, or even exploration fantasy. (Monarchies of God is a great series in that vein, by the way.) Now, that’s not to say I thought I could do better, but I knew I could do better than nothing. Since nothing was what I had, how could I lose?

More importantly, though, the Otherworld setting started out as a kind of language playground. The details of the native tongue (as well as quite a few others in the setting) predate most other notes by months. And the one I called “Virisai” was first on the list.

As languages go, it’s nothing remarkable, and I intended that from the very start. This isn’t an alien language, because these aren’t aliens. That goes hand-in-hand with the “alternate timeline” setup. And yet I didn’t really want a typical Amerind language, because a lot of those are horrendously complex. There’s no way a bunch of college students could become anywhere near fluent in one of those in less than three months. But, I figured, since I had so much “alternative” time to work with, I could plausibly say that this is a whole new language family, as well, one that didn’t follow its brethren in development. In other words, it branched off too early to pick up some of the more convoluted aspects of American indigenous languages.

Beyond that, the language is fairly straightforward. It has a few hangups, a few unexpected complexities, and I’ve found ways to work some of those into the narrative. (Mostly, this comes in Jeff’s chapters, as he’s the linguist, though Amy occasionally notes one.) But I do intend it to be a “natural” constructed language. It’s meant to be spoken, written, read. In fact, I do have a translated Babel Text lying around somewhere, and I’ve considered doing other works when I have the free time.

The culture

The culture of the Virissea, like their language, shares that “same but different” quality. These people may look like your typical Native American, but they are certainly not American. They don’t fit the realities or the stereotypes. They’re there own thing, and most of the culture shock is about dealing with that other thing.

For those in the midst of the story, I’ve intentionally designed the culture to be not outrageously dissimilar from anything on Earth. The local Virissea are monotheistic, for instance, though there’s a strong hint of ancestor worship in there, too, and a fairly complex mythology regarding the otherworldly Altea, who supposedly helped to create the world after their own was destroyed in some previous cataclysm. As they looked different from the Virissea, those members of the expedition who look the most outlandish are seen instead as these mythical people: Jeff, Jenn, Ayla, Sara. Lee and Ramón, by contrast, get treated as some kind of prodigal sons, while Damonte is something else entirely.

Other parts of the culture likewise follow this trend. These people don’t have human sacrifices, but they do have some strange taboos and rituals. They may not play the Mayan ball game, but they’ve got one of their own. Their science isn’t nearly as advanced as ours, so advanced technology is seen as magic instead (following Clarke’s Third Law), but that’s okay, because they already have a mythos full of magic. They just fit computers and solar panels into that, and go on about their day.

That, I think, is my primary goal with this culture. Too often, we assume that modern Americans meeting a more “primitive” people will be treated as either gods or devils because of our technology, attire, beliefs, and general otherness. And to be fair, some members of the expedition get the godly treatment, but they don’t intentionally play to it—with one notable exception.

But there can be a third road, where we’re neither demonized nor canonized. Think about it. If you’ve never seen a tablet computer before, but you get told stories every week of a legendary hero who carried around a magic spellbook, it’s not that great a leap to equate the two. Either one is so far beyond you that it’s almost required by Occam’s Razor. But that doesn’t mean the guy carrying that tablet is a god, not when you’re also taught that there’s only one of those.

In other words, no matter how different the Virissea are, they’re still people. Humans. They have a civilization, a culture, and they’re desperately trying to fit these newcomers into their world without breaking too much. In other words, exactly what I would want to do if presented with a representative of an advanced alien race.

The others

And that makes a good segue into matters of race. For the Otherworld, the subject is a bit tricky. Everyone in it (except for our intrepid heroes) descends from the original inhabitants of the Americas. Yet some of them are…different. I’ll leave the whys for later, because I think the simple idea is enough to get started.

I did intend on having multiple human subspecies in the Otherworld from the start. (That is totally not me ripping off The Dagger and the Coin, except when it is.) And I even made them fit the classic fantasy stereotypes. The Lyssea, who show up again in this episode, are a reinterpretation of elves. The Kaldea beating down Ayla’s door fill the “dwarf” role. Even last episode’s Arassea work, as they started off in my head as vaguely orc-like. That’s not to say these races are their fantasy inspirations. Oh, no. But it’s a perfect excuse for some people—particularly a certain character very drawn to fantasy literature—to see them as such.

All told, there are ten total races in the Otherworld, if you count the Altea. (And if you don’t count the modern Earthlings of the expedition.) Some of them can interbreed; some of them would rather not. Each has its own culture, language, and outlook, and I use that to set up quite a few interesting plotlines. The Arassea slavery angle, for one, or the Kaldea and their cabal-like protection of their technology. On top of that, there are racial tensions, and even some outright racism. Why? Because the Otherworld is not a utopia. It’s imperfect, just like ours, and part of the story’s development is peeling back those layers to find the imperfections.

The upcoming

That’s all for this installment, but the chronicles will keep coming. Next up is Situational Awareness, which is my favorite episode of the first season. I loved writing it, I love reading it, and I hope you’ll enjoy it as much as I do. Until then, have fun in either world, and be sure to look at my other stories.