Race in writing

Race is a hot topic in our generation. Racism, equality, diversity, affirmative action…you can’t get away from it. Even the very month we’re in has long been declared Black History Month. Scientifically, we are told that race doesn’t really matter. Socially, we’re told it shouldn’t matter. And yet human nature, our predisposition towards clannish, us-against-them xenophobia, keeps race constantly in the news. Whether it’s a white cop shooting a black teenager or the Academy Awards being called out as “too white”, racial tension is a fact of life as much in 2016 as in 1966.

But that’s the real world. In fiction, race has historically been somewhat neglected. In most cases, there’s a very good reason for that: it’s not important to the story. Many genres of fiction achieved the Holy Grail of colorblindness years ago, when such a thing was all but inconceivable to the rest of the world. Indeed, for a great many works, it doesn’t matter what color a character’s skin is. If you’re pointing it out, then, like Chekhov’s gun, it’s probably important. A story where racial tension plays a direct role in character development is going to be very dependent on character race. A lot of others simply won’t.

That’s not to say that it should be entirely ignored. After all, real-world humans have race, and they identify more with people of their own race. And, of course, a mass-media work needs to be very careful these days. One need only look at Exodus: Gods and Kings and the accusations of “whitewashing” it received. Also, when moving stories from the page to the screen, a lack of racial characterization in the book can lead to some…interesting choices by the studio. (I’ll gladly admit that I was surprised to see who was cast as Shadow in American Gods.)

Does it matter?

When you’re planning out a story—if you’re the type to plan that far ahead—you should probably already have an idea what role race will play in the grand scheme of things. Something set in the American South in the 60s (1960s or 1860s, either one works) will require more attention to detail. Feudal Japan, not so much.

Futuristic science fiction deserves special mention here. It’s common for this type of story, when it involves a team of characters, to have a certain ratio of men to women, of white to non-white, as if the author had a checklist of political correctness. But why? Surely, for an important mission like first contact or the first manned Mars mission, the job would go to the most qualified, whoever they were. That assumes rational decision-making, though, and that’s something in short supply today. There’s not much reason to assume that will get any better in the coming decades.

For other genres and settings, race should play second fiddle to story concerns. Yes, it can make for an interesting subplot if handled well, but it’s too easy to make a minor detail too important. Ask yourself, “If I changed this character’s race, what effect would that have on the rest of the story.” If you can’t think of anything, then it might not be quite as pertinent as you first thought.

When it does matter

Very often, though, the answer to that question will be a resounding “yes”. And that’s where you need to delve into the bottomless pit of psychology and sociology and the other social sciences. Lucky you.

If you’re fortunate enough to be working with a specific period and location in history, then most of the work is already done for you. Just look at what race relations were like in that time and place. You’ve always got a little bit of leeway, too. People are not all alike. You can be a pre-Civil War southerner against slavery, or a 1940s German sympathetic to the Jews.

Writing for the future is a lot tougher. A common assumption, especially for stories set more than a century or so ahead of our time, is the end of racism. In the future, they argue, nobody will care what color your skin is. The Expanse series works this in a great way, in my opinion. The whole solar system is full of a mishmash of Earth cultures, but nobody says a word about it. It’s not white against black, it’s Earth against Mars.

You can also go the other way and say that race will become more of a factor. The current political climate actually points this way on topics like immigration. But other factors can lead to a “re-segregation”. Nationalist tendencies, waves of refugees, backlashes against “cultural appropriation”, and simple close-mindedness could all do the trick. Even social media can play a role. While it’s true that there aren’t many paths back to the old days of separate water fountains, we’re not too far from strictly separated racial ghettoes already.

The worldbuilding process should be your guide here. What made the world—more specifically, the story’s setting—the way it is?

When it’s different

All that above, of course, presumes you’re dealing with human race. Alien races are completely different, and I hope to one day write a series on them. For now, just know that the differences between humans and aliens utterly dwarf any difference between human races. Aliens might not perceive a distinction between white and black; conversely, an alien appearance can hide a number of racial distinctions. For fantasy, substitute “elves” or whatever for “aliens”, because the principle is exactly the same.

In fact, this whole post I’ve been using “race” as a broad term that encompasses more than just traditional notions of skin pigmentation. In the context of this post, any social subgroup that is largely self-contained can be considered a race, as can a larger element that shows the behavior of a race. Jews and Muslims can be treated as races, as can fantasy-world dark elves. As long as the potential for discrimination based on a group’s appearance exists, then the race card is on the board.

As always, think about what you’re creating. Where does race fit into the story? Try to make it a natural fit, don’t shove it in there. And this is one of those cases where a lot of popular fiction can’t really help you. White authors tend to write white characters by default, because it’s easiest to write what you know. (A counterexample is Steven Erikson’s Malazan Book of the Fallen series, where half the main characters are black, and you’d never know it except from the occasional hint dropped in narration.)

It’s also all too easy to go to the other extreme, to fill a story with a racial rainbow and put that particular difference front and center when it doesn’t help the story. Honestly, that’s just as bad as saying, “Everybody’s white, deal with it.” If it doesn’t matter, don’t even bring it up. If it does matter, make it matter. Make me care about the struggle of the minority when I’m reading that kind of story, but don’t put it in my face when I’m trying to enjoy a sword-and-sorcery romp where everybody is against the Dark Lord.

In the end, the best advice I can give is twofold. First, learn about your setting. How does it affect racial relations? Second, think about your characters. Put yourself in their shoes. How do they see members of other races, or their own? How are they affected by the society they live in? It’s hard, but writing always is, and this is a case where the payoff is a lot harder to see. But keep at it, because it really is worth it.

Naming languages

A naming language is the second-simplest kind of constructed language. (The simplest conlang is what’s sometimes called a “relex”, basically a form of English with all the words changed, but with the same grammar.) If all you need is a way to productively create alien-sounding names for people and places in a setting, with little regard to grammatical, syntactic, or naturalistic concerns, then a naming language is a good compromise between throwing some sounds together and creating a whole conlang.

Elements of a naming language

First and foremost, a naming language isn’t a full language. You can get away with cutting so many corners that you’re left with a circle. Throw out stuff like subordinate clauses and subjunctive moods. You won’t need them. True, some cultures have names that are complete sentences, but those are rarely the kind of complex structures requiring a whole conlanging effort. No, for naming languages, we can strip things down to the bare necessities.

One thing we’ll need is a phonology, a sound inventory. This can be whatever you like, whatever you think sounds best. Since we won’t have a lot of the grammatical cues of a full conlang, the phonology is going to determine the basic feel of our naming language. If you’re working with aliens, try to think of the sounds they would make, and then think of how a human would interpret them. For human cultures, look for inspiration in the languages of those cultures you want to emulate.

Next, you can work out a way to turn those sounds into syllables, then into words. Once again, use appropriate human languages as a guide, but not a straitjacket. At this stage, you can go ahead and make some simple words that you think might come in handy. Names for people and places follow different rules, and I’ll do a post for each in the coming weeks, but think of common objects, terrain features, activities, and occupations. Those are a good start.

Third, naming languages do need a little bit of grammar. It’s nothing close to what a “real” language would have, though. Your primary concern is making names, so you really only need the grammar necessary to make them. Simple combinations of nouns and adjectives work just fine for many cases; all you have to decide is what order they go in. You can throw in verbs, too, but don’t worry too much about case or mood or things like that. Those are only distractions.

Lastly, remember that languages change. Names change, too, but under different conditions. Place names tend to follow the phonological changes of their “host” cultures more closely than personal names, but the latter certainly aren’t immune to evolution. And some names pick up (or lose) connotations as their languages and cultures change. This is especially common for personal names. Boys’ names become girls’ names, and vice versa. Names fall out of fashion (Puritan names like “Increase” don’t find much traction today) while new ones arise from cultural shifts (witness the current popularity of fantasy names like Daenerys).

Place names can change, too, but this usually requires a massive shift in the cultural or political situation. For real-world examples, look at Burma/Myanmar, or the mass renaming of cities in India, or the changing of American place names in the pursuit of political correctness.

To be continued

In the next two weeks, I’ll go into more detail about each of the two main types of names. Next week, we’ll look at place names, because I think they’re easier and more transparent. After that will be personal names, with some closing thoughts on making “alien” names.

Software internals: Arrays

I’m a programmer. I think that should be obvious. Even though most of my coding these days is done at a pretty high level, I still enjoy the intricacies of low-level programs. It’s great that we have ways to hide the complexities inherent in software, but sometimes it’s fun to peel back the layers and look at just how it works. That’s the idea behind this little series of posts. I want to go into that deeper level, closer to the metal. First up, we’ll take a peek at that simplest and dumbest of data structures: the array.

Array, array

At the basic level, an array is nothing more than a sequence of values. Different languages have different rules, especially regarding types, but the idea is always the same. The values in an array are its elements, and they can be identified by an index. In C, for example, a[0] has the index 0, and it refers to the first element of the array named a. (C-style languages start counting from 0. We’ll see why shortly.)

For the purposes of this post, we’ll start with the simplest kind of array, a one-dimensional array whose values are all of the same type—integers, specifically. Later, we can expand on this, but it’s best to start small. Namely, we’ll have an array a with four values: {1, 2, 3, 4}. Also, we’ll mainly be using lower-level languages like C and C++, since they give the best look at how the code really runs.

In memory

One of the main reasons to use something like C++ is because of memory concerns, so let’s look at how such an array is set up in memory. On my PC, using 64-bit Debian Linux and GCC 5.3, it’s about as simple as can be. The compiler knows all the values beforehand, so all it does is put them in a “read-only data” section of the final executable. (In the assembly output, this shows up as .long statements in the .rodata section.) The elements of the array are in contiguous locations; that’s not just required by the C standard, but by the very definition of an array. It also makes them fast, especially when cache comes into play.

In C++, 4 integers in an array take up the space of, well, 4 integers. On a 64-bit system, that’s 32 bytes, half that if you’re still on 32-bit. There’s no overhead, because an array at this level is literally nothing more than a sequence of memory locations.

That contiguous layout makes working with the array trivial. Given an array a or n-byte elements, the first element—index 0—is at the same address as the array itself (&(a[0]) == &a in C parlance). To find any other one, all you have to do is multiply the index by the size of each element: &(a[i]) == &a + i * sizeof(int). Addition is just about the fastest thing a processor does, and word sizes as powers of 2 mean that the multiplication is nothing more than a bit shift, so array indexing is hard to beat.

Copying these arrays is easy, too: copy each element, and you’re done. Want to compare them? Nothing more than going down the line, looking for differences. Sure, that takes linear—O(n)—time, but it’s a great start. Of course, there are downsides, too. Arrays like this are fixed in size, and they all have to be the same type.

Complicating matters

There’s not much more to be said for the humble array, so let’s add some kinks. To start, what do you do if you don’t know all the values to begin with? Then, you need an uninitialized array, or a buffer. Compilers typically use a trick called a BSS segment to make these, while higher-level languages tend to initialize everything to a null value. Either way, all you really get is a block of memory that you’re expected to fill in later.

Changing the other assumptions of the array (fixed size and type) means changing the whole structure. Dynamically-sized arrays, like C++’s vector, need a different way of doing things. Usually, this means something like having an internal array—with a bit of room to grow—and some bookkeeping data. That gets into dynamic memory allocation, another topic for later, but from the programmer’s point of view, they work the same way. In fact, vector is required to be a drop-in replacement for arrays. (If you want arrays where elements can be of different types, like in JavaScript, then you have to abandon the simple mathematical formula and its blazing speed. At that point, you’re better off ditching the “array” concept completely.)

Moving up to higher levels doesn’t really change how an array functions. At its core, it’s still a sequence of values. One of JavaScript’s newer features is the typed array, which is exactly that. It’s intended to be used where speed is of the essence, and it’s little more than a friendlier layer on top of C-style arrays.

Implementation details

Just about every usable language already has something like an array, so there’s almost never a need to make one yourself. Indeed, it’s nearly impossible to do so. But maybe you’re working in assembly language. There, you don’t have the luxury.

Fixed-size arrays are nothing more than blocks of memory. If your array has n elements, and each one is size s, then you need to reserve n * s bytes of memory. That’s it. There’s your array. If you need it initialized, then fill it in as necessary.

Element access uses the formula from above. You need to know the address a of the array, the element size s, and the index i. Then, accessing an element is nothing more than loading the value at a + i * s. Note, though, that this means elements are numbered starting at 0. (And it’s exactly why, for that matter.)

Since arrays are dumb, you can pass them around as blocks of memory, but you always need to know their size. If you’re not careful, you can easily get buffer overflows and other out-of-bounds conditions. That’s the reason why so many “safe” C functions like snprintf take an extra “maximum size” argument. The array-as-memory-block notion, incidentally, is why C lets you treat pointers and arrays as the same thing.

The end

The array, in whatever form, is the most basic of data structures, so it made for a good starting point. I hope it set the tone for this series. Later on, I’ll get into more complicated structures and algorithms, like linked lists, sorting, and so on. It’s all stuff that programmers in something like JavaScript never need to worry about, but it’s fun to peek under the hood, isn’t it?

Life below zero: building the Ice Age

As I write this post, parts of the US are digging themselves out of a massive snowstorm. (Locally, of course, the anti-snow bubble was in full effect, and the Tennessee Valley area got only a dusting.) Lots of snow, cold temperatures, and high winds create a blizzard, a major weather event that comes around once every few years.

But our world has gone through extended periods of much colder weather. In fact, we were basically born in one. I’m talking about ice ages. In particular, I’m referring to the Ice Age, the one that ended about 10,000 years ago, as it’s far better known and understood than any of the others throughout the history of the planet.

The very phrase “Ice Age” conjures up images of woolly mammoths lumbering across a frozen tundra, of small bands of humanity struggling to survive, of snow-covered evergreen forests and blue walls of ice. Really, if you think about it, it paints a picturesque landscape as fascinating as it seems inhospitable. In that, it’s no different from Antarctica or the Himalayas or Siberia today…or Mars tomorrow. The Earth of the Ice Age, as a place, is one that fuels the imagination simply because it is so different. But the question I’d like to ask is: is there a story in the Ice Age?

Lands of always winter

To answer that question, we first need to think about what the Ice Age is. A “glaciation event”, to use the technical term, is pretty self-explanatory. Colder global temperatures mean more of the planet’s surface is below freezing (0° Celsius, hence the name of this post), which means water turns to ice. The longer the subzero temps, the longer the ice can stick around. Although the seasons don’t actually change, the effect is a longer and longer winter, complete with all the wintry trappings: snow, frozen ponds and lakes, plant-killing frosts, and so on.

We don’t actually know what causes these glaciation events to start and stop. Some of them last for tens or even hundreds of thousands of years. The worst can cover the whole world in ice, creating a so-called “Snowball Earth” scenario. (While interesting in its own right, that particular outcome doesn’t concern us here. On a snowball world, there’s little potential for surface activity. Life can survive in the deep, unfrozen oceans, but that doesn’t sound too exciting, in my opinion.)

If that weren’t bad enough, an Ice Age can be partially self-sustaining. As the icecaps grow—not just the ones at the poles, but anywhere—the Earth can become more reflective. Higher surface reflectivity means that less heat is absorbed, dropping temperatures further. And that allows the ice to spread, in a feedback loop best served cold.

Living on the edge

But we know life survived the Ice Age. We’re here, after all. The planet-wide extinction event that ended the Pleistocene period came at the end of the glaciation event. So not only can life survive in the time of ice, it can thrive. How?

Well, that’s where the difference between “ice age” and “snowball” comes in. First off, the whole world wasn’t completely frozen over 20,000 years ago. Yes, there were glaciers, and they extended quite far from the poles. (Incidentally, the glaciers that covered the eastern half of America stopped not that far from where I live.) But plenty of ice-free land existed, especially in the tropics. Oh, and guess where humanity came from?

Even in the colder regions, life was possible. We see that today in Alaska, for instance. And the vagaries of climate mean that, strangely enough, that part of the world wasn’t much colder than it is today. So one lead on Ice Age life can be found by studying the polar regions of the present, from polar bears to penguins and Eskimos to explorers.

The changing face

But the world was a different place in the Ice Age, and that was entirely because of the ice. The climate played by different rules. Hundreds of feet of ice covering millions of square miles will do that.

The first thing to note is that the massive ice sheets that covered the higher latitudes function, climatically speaking, just like those at the poles. Cold air is denser than warm air, so it sinks. That creates a high-pressure area that doesn’t really move that much. In temperate regions, high pressure causes clockwise winds along their boundaries, but they tend to have stable interiors.

Anyone who lives in the South knows about the summer ridge that builds every year, sending temperatures soaring to 100°F and causing air-quality and fire danger warnings. For weeks, we suffer in miserable heat and suffocating humidity, with no rain in sight. It’s awful, and it’s the main reason I hate summer. But think of that same situation, changing the temperatures from the nineties Fahrenheit to the twenties. Colder air holds less moisture, so you have a place with dry, stale air and little prospect for relief. In other words, a cold desert.

That’s the case on the ice sheets, and some thinkers extend that to the area around them. Having so much of the Earth’s water locked into near-permanent glaciers means that there will be less precipitation overall, even in the warm tropics. That has knock-on effects in those climates. Rainforests will be smaller, for example, and much of the land will be more like savannas or steppes, like the African lands that gave birth to modern humans.

But there are still prospects for precipitation. The jet stream will move, stray winds will blow. And the borders of the ice sheets will be active. This is for two reasons. First, the glaciers aren’t stationary. They expand and contract with the subtle seasonal and long-term changes in temperature. Second, that’s where the strongest winds will likely be. Receding glaciers can form lakes, and winds can spread the moisture from those lakes. The result? Lake-effect precipitation, whether rain or snow. The lands of ice will be cold and dry, the subtropics warm (or just warmer) and dry, but the boundary between them has the potential to be vibrant, if cool.

Making it work

So we have two general areas of an Ice Age world that can support the wide variety of life necessary for civilization: the warmer, wetter tropics and the cool convergence zones around the bases of the glaciers. If you know history, then you know that those are the places where the first major progress occurred in our early history: the savannas of Africa, the shores of the Mediterranean, the outskirts of Siberia and Beringia.

For people living in the Ice Age, life is tough. Growing seasons are shorter, more because of temperature than sunlight; the first crops weren’t domesticated until after the ice was mostly gone, when more of the world could support agriculture. Staying warm is a priority, and making fire a core part of survival. Clothing reflects the cold: furs, wool, insulation. Housing is a must, if only to have a safe place for a fire and a bed. Society, too, will be shaped by these needs.

But the Ice Age is dynamic. Fixed houses are susceptible to moving or melting glaciers. A small shift in temperature (in either direction) changes the whole landscape. Nomadic bands might be better suited to the periphery of the ice sheets, with the cities at a safe distance.

The long summer

And then the Ice Age comes to an end. Again, there’s no real consensus on why, but it has to happen. We’re proof of that. And when it does happen…

Rising temperatures at the end of a glaciation event are almost literally earth-shattering. The glaciers recede and melt (not completely; we’ve still got a few left over from our last Ice Age, and not just at the poles), leaving destruction in their wake. Sea levels rise, as you’d expect, but they could also sink, as the continents rebound when the weight of the ice is lifted.

The tundra shrinks, squeezing out those plants and animals adapted to it. Conversely, those used to warmer climes now have a vast expanse of fresh, new land. Precipitation begins to increase as ice turns to water and then evaporates. The world just after the Ice Age is probably going to be a swampy one. Eventually, though, things balance out. The world’s climate reaches an island of stability. Except when it doesn’t.

Our last Ice Age ended in fits and starts. Centuries of relative warmth could be wiped out in a geological instant. The last gasp was the Younger Dryas, a cold snap that started around 13,000 years ago and lasted around a tenth of that time. To put that into perspective, if it were ending right now (2016), it would have started around the time of the Merovingians and the Muslim conquest of Spain. But we don’t even know if the Younger Dryas was part of the Ice Age, or if it had another cause. (One hypothesis even claims it was caused by a meteor striking the earth!) Whether it was or wasn’t the dying ember of the Ice Age doesn’t matter much, though; it was close enough that we can treat it as if it were.

In the intervening millennia, our climate has changed demonstrably. This has nothing to do with global warming, whatever you think on that topic. No, I’m talking about the natural changes of a planet leaving a glacial period. We can see the evidence of ancient sea levels and rainfall patterns. The whole Bering Strait was once a land bridge, the Sahara a land of green. And Canada was a frozen wasteland. Okay, some things never change.

All this is to say that the Ice Age doesn’t have to mean mammoths and tundra and hunter-gatherers desperate for survival. It can be a time of creation and advancement, too.

Let’s make a language – Part 12b: Questions (Conlangs)

How do we form questions in Isian and Ardari? The answer, you will see, is quite simple.

Isian

Isian, fittingly, doesn’t have a lot of question “morphology”. Yes-no questions are made in the simplest possible manner, by nothing more than rising intonation. This means, however, that the meaning of, say, so il til can be one of two things. With falling or level pitch, it’s a statement “you are there”. Go up in pitch as you near the end, and it becomes so il til?, the interrogative “are you there?”

The answer to such questions will usually be a simple sha “yes” or num “no”. If you need more, Isian allows you to add it by repeating the verb: sha, en “yes, I am”. (Note that I’m using English punctuation as a convenience, but also because there would be a slight pause between answer word and verb.)

If you prefer the vernacular, you’ve got shasha, which is more like “yeah”; noy is the negative counterpart, and its best translation might be “nope”. A wishy-washy reply would be momay “maybe”, while genuine ignorance can also be expressed by ekh “I don’t know”.

Negation in Isian is accomplished with the adverb an, as you’ll recall, and this extends neatly into the realm of the question. We can just as easily ask so an il til? “aren’t you there?” We don’t have to worry about double negatives, though; proper responses would be sha, en or num, an en.

Isian even gives you a couple of tags. These are highly discouraged in formal speech or writing, but common among friends and family. The one that concerns us most is ey, which works like English “isn’t it” and friends: so il til, ey? thus means something more like “you’re there, aren’t you?”

For the more general wh-questions, we have a family of fronted interrogatives:

  • con “who” (only used for people)
  • cal “what” (never used for people)
  • cazal “where”
  • carec “when”
  • canyo “why”
  • cadro “how”

These go at the front of a sentence, which is otherwise unchanged, except for a bit of rising intonation at the end. An example of each might be:

  • con so il? “who are you?”
  • cal to e? “what was that?”
  • cazal so wasal? “where are you going?”
  • carec is cosa? “when did they come?”
  • canyo so kil to “why do you say that?”
  • cadro so il “how are you?”

The more formal a situation, the more answer is required. Common speech can get away with single-word answers, but writing might need whole sentences. The rules are broadly similar to those in English, but Isian is overall more relaxed.

Ardari

Ardari’s interrogatives are built around the particle , which begins all questions. For yes-no questions, it’s all you need, other than the requisite intonation: qö sy pren èllè? “are you there?”

Valid responses will start with è “yes” or kyu “no”, usually repeating the verb in more formal speech and writing. Thus, there is a distinction between è “yes” and è èllo “yes, I am” in Ardari.

The same particles, when placed at the end of a sentence, can also function as tags expressing an expected reply. In these cases, the question particle isn’t needed, only the intonation: sy pren èllè, kyu? “you’re there, aren’t you?”

For wh-questions, the basic premise remains the same. The particle goes at the beginning of the sentence, but the question word stays where it is. As for the question words themselves, Ardari has eight of them, shown here with examples:

  • qom “what”: qö qom pralman èlla? “what was that?”
  • qomban “who”: qö sy qombane èllè? “who are you?” (lit. “you are whom?”)
  • qomren “where”: qö sy qomren chinès? “where are you going?”
  • qomlajch “when”: qö ajo qomlajch toned? “when did they come?”
  • qoman “which”: qö sy qomane lyebè? “which do you like?”
  • qabre “how”: qö ysar zalman qabre troded? “how did they know that?”
  • qömjas “how many”: qö a qömjasòn byzrell perada? “how many books does he have?”
  • quld “why”: qö ti quld ajnadyt? “why was she crying?”

Of these eight, qom, qomban, and qomren inflect like neuter nouns, while qoman and qönjas act like neuter adjectives. The rest function as adverbs. In all cases, if they would be the first word in a sentence, Ardari allows you to omit the initial , as it’s subsumed into the question word itself. (They’re all derived from it, in case you hadn’t noticed.)

Answering these questions requires only the bare minimum. Ardari is very lenient on how you reply, and even in formal situations you can get away with a response of only a word or two. For instance, qö sy qomren chinès? above can be answered with just mynin tyèk “my house”. Even inflections can be largely ignored in this form, though you’ll need them for an extended answer: my mynin tyèke lim chinos.

One added wrinkle involves single-word answers of pronouns. In this case, Ardari uses the vocative, which otherwise doesn’t appear often. Thus, qö sy qombane èllè? can be answered with myne “Me!” Simple my, on the other hand, would be ungrammatical.

Next up

I know the question you might be asking right now. “What’s in the next part?” The truth is, I don’t know yet. I’m thinking about taking a bit of a diversion into more general conlanging issues. We’ll get back to the step-by-step guide to making languages a little bit down the road. Whatever I decide, I’ll see you next week.

Thoughts on types

Last week, I talked about an up-and-coming HTML5 game engine. One of the defining features of that engine was that it uses TypeScript, not regular JavaScript, for its coding. TypeScript has its problems (it’s made by Microsoft, for one), but it cuts to the heart of an argument that has raged for decades in programming circles: strong versus weak typing.

First off, here’s a quick refresher. In most programming languages, values have types. These can be simple (an integer, a string of text) or complex (a class with a deep inheritance hierarchy and 50 or so methods), but they’re part of the value’s identity. Variables can have type, too, but different languages handle that in different terms. Some require you to set a variable’s type when it is first defined, and they strictly enforce that type. Others are more lenient: if x holds the value 123, it’s an integer; if you set it to "foo", then it becomes a string. And some languages allow you to mix types in an expression, while others will throw errors the minute you even dare add a string to a number.

A position of strength

I’m of two minds on types. On the one hand, I do think that a “strong” type system, where everything knows what it is and conversions must be explicit, is good for the specific kind of programming where data corruption is an unforgivable sin. The Ada language, one of the most notorious for strict typing, was made that way for a reason: it was intended for use in situations where errors are literally life-threatening.

I also like the idea of a strongly-typed language because it can “write itself” in a sense. That’s one of the things Haskell supporters are always saying, and it’s very reminiscent of the way I solved a lot of test questions in physics class. For example, if you know your answer needs to be a force in newtons (kg m/s²), and you’re given a mass (kg), a velocity (m/s), and a time (s), then it’s pretty obvious what you need to do. The same principle can apply when you’ve got code that returns a type constructed from a number of seemingly unrelated ones: figure out the chain that takes you from A to B. You can’t really do that in, say, JavaScript, because everything can return anything.

And strong types are an extra form of documentation, something sorely lacking in just about every bit of code out there. The types give you an idea of what you’re dealing with. If they’re used right, they can even guide you into using an API properly. Of course, that puts more work on the library developer, which means it’s less likely to actually get done, but it’s a nice thought.

The weak shall inherit

In a “weak” type system, objects can still have types, but variables don’t. That’s the case in JavaScript, where var x (or let x, if you’re lucky enough to get to use ES6) is all you have to go on. Is it a number? A string? A function? The answer: none of the above. It’s a variable. Isn’t that enough?

I can certainly see where it would be. For pure, unadulterated hacking, give me weak typing. Coding goes so much faster when you don’t have to constantly ask yourself what something should be. Scripting languages tend to be weakly-typed, and that’s probably why. When you know what you’re working with, and you don’t have to worry as much about error recovery, maintenance, or things like that, types only get in the way.

Of course, once I do need to think about changing things, a weakly-typed language starts to become more of a hindrance. Look at any large project in JavaScript or Ruby. They’re all a tangled mess of code held together by layers of validation and test suites sometimes bigger than the project itself. It’s…ugly. Worse, it creates a kind of Stockholm Syndrome where the people developing that mess think it’s just fine.

I’m not saying that testing (or even TDD) is a bad thing, mind you. It’s not. But so much of that testing is unnecessary. Guys, we’ve got a tool that can automate a lot of those tests for you. It’s called a compiler.

So, yeah, I like the idea of TypeScript…in theory. As programmers look to use JavaScript in “bigger” settings, they can’t miss the fact that it’s woefully inadequate for them. It was never meant to be anything more than a simple scripting language, and it shows. Modernizing efforts like ES5 and ES6 help, but they don’t—can’t—get rid of JavaScript’s nature as a weakly-typed free-for-all. (How bad is it? Implicit conversions have become accepted idioms. Want to turn n into a number? The “right” way is +n! Making a string is as easy as n+"", and booleans are just !!n.)

That’s not to say strong typing is the way to go, either. Take that too far, and you risk the opposite problem: losing yourself in conversions. A good language, in my opinion, needs a way to enforce types, but it also needs a way to not enforce them. Sometimes, you really do want an “anything”. Java’s Object doesn’t quite work for that, nor does the C answer of void *. C++ is getting any soon, or so they say; that’ll be a step up. (Note: auto in C++ is type inference. That’s a different question, but I personally think it’s an absolute must for a strongly-typed language.) But those should be used only when there’s no other option.

There’s no right answer. This is one of those debates that will last forever, and all I can do is throw in my two cents. But I like to think I have an informed opinion, and that was it. When I’m hacking up something for myself, something that probably won’t be used again once I’m done, I don’t want to be bothered with types; they take too much time. Once I start coding “for real”, I need to start thinking about how that code is going to be used. Then, strong typing saves time, because it means the compiler takes care of what would otherwise be a mound of boilerplate test cases, leaving me more time to work on the core problem.

Maybe it doesn’t work for you, but I hope I’ve at least given you a reason to think about it.

On writing and dialects

I’ve been seriously attempting to write fiction for over five years now, and I’m still learning new things about the craft all the time. One of those things concerns my own style of writing, and it’s the main reason I object to one of the fundamental maxims of creative writing.

Writing itself isn’t the hard part,” the saying goes. To some extent, that’s true. Coming up with a believable, interesting, story with believable, interesting characters is hard. Planning, plotting, characterizing, worldbuilding, all of that is supremely difficult, to the point where the mechanics of writing get lost in the noise. Especially nowadays, when everything is done on a computer, and most “writing” is actually typing on a keyboard, the physical act of writing is a small fraction of the effort that goes into creating a story.

Move one level up, to the words you’re putting on-screen, and things don’t really change all that much. You’re still in the rote mechanics of writing, but now at the level of grammar and syntax. As long as you can touch-type (and you’ll eventually learn how, if you keep at it long enough), writing—typing, if you prefer—the words is almost reflexive. As long as you speak English, putting the right words together comes naturally. Except that it doesn’t, and therein lies my problem.

Southern Man

The reason is simple: when I write a story in “standard” English (for me, that would be General American), I’m not speaking my native language. I’m American, and I’m effectively monolingual, despite a couple of years of Spanish classes in high school and fifteen more of amateur linguistic study. It’s not that I can’t speak or write English, it’s that I’m not used to speaking the standard.

As we say around here, I’m Southern-born and Southern-bred. I’m a child of the South. That’s where I was born, it’s where I live, and it’s probably where I’ll die. And even if you don’t know the first thing about American regional politics, you likely know about the Southern dialect.

It’s not different enough from the rest of the country to really be considered its own language. I can still understand just about any other American speaker, as well as most other English dialects (although those from northern England and parts of Australia sometimes baffle me), and they can likewise understand the vast majority of what I’m saying. But it is different, and it can be startling if you don’t know what to expect. Just like I sometimes struggle to figure out some of the words Jeremy Clarkson is saying, I know that plenty of people would need subtitles for Hatfields & McCoys. (Technically, that’s Appalachian, not Southern, but I’ll get to that in a minute.)

In writing, it doesn’t seem quite so bad, since the pronunciation differences, like the characteristic Southern drawl, don’t show up. But phonology isn’t the only part of a dialect. Words matter, despite what the writing self-help guys say. Y’all, for example, is the quintessential Southern word, yet I don’t think I’ve used it once in any of the stories I’ve written since the start of the decade. Why? Because that would immediately mark the whole work as “dialectal” or, worse, “substandard”. And I don’t think I want that.

Talking the talk

But sticking to the standard—whatever that is for English—means that I have to write at a level I’m not exactly comfortable with. It gets even worse because “Southern” refers to not one single dialect, but a group of them. Where I grew up, which isn’t all that far from where I’m living now, the local speech is closer to Appalachian, the talk of hillbillies living in the mountains, than the “General Southern” of the Deep South area that stretches from Charleston to Jackson. Appalachian has its own speech patterns, its own curious vocabulary, and a few peculiar grammatical constructions that make it a dialect of its own. (And that has slight regional differences, but those need not concern us here.)

So I’m not “going up a level” when I’m writing in standard American English. I’m going up two. I have to raise my standards just to get to what is widely considered the least standard of all the American dialects. Then I need to go from there up to the true literary language. It’s a kind of diglossia, if you think about it. I speak the homespun mix of Southern and Appalachian at home, among friends and family; its how I was raised to talk. For talking to others in the region, I use a more generic Southern, dropping the Appalachianisms while keeping the drawl and the y’all. Again, I learned that by osmosis: listening to people, watching the local news, etc.

Neither my home “idiolect” nor the Southern dialect are written, except in the written emulation of speech. They don’t need to be. That’s not what they’re for. But standard English is different. I don’t hear it spoken around me casually, only formally or in the media. I learned it in school, and I had to learn how it differs from the English I’m used to.

The crux of the problem, then, is this: where is the line between dialect and language? I’ve found that, when you’re writing, it’s a lot closer than you might think. I’m constantly slowed by the internal translation from Southern to General American, and it is not a perfect match. It’s the little things that trip me up, like the past perfect (in my spoken dialect, had went is an acceptable substitution for had gone), -ward versus -wards (Southerners that I’ve heard prefer towards, but most Americans use toward), and serial verbs in the future tense (try to or try and? go get or go and get?). At times, it really is like I’m writing in a different language.

(That’s not even including the Americanisms I find illogical. Like British writers, I consistently keep punctuation out of quotation marks, unless it’s part of the quote. I’m told that this is actually common practice among programmers. That makes sense, because programming languages won’t let you do it the “wrong” way. HTML, unfortunately, explicitly supports “Americanized” closing tags.)

Plain speech

Of course, the creative part of creative writing is always going to be the most important. There’s no denying that. I tend to write in a seat-of-the-pants style, where I don’t plan much in advance, instead letting things happen naturally. (I’ll talk about that in a future post.) But that very style means that I’m often stuck, as I have to stop typing to think of a name or a part of a character’s back-story. The dialectal difference is just one more thing to worry about.

If I were a better writer, I might be able to turn this liability into an advantage. Maybe there’s a market out there for books written in a Southern style, full of colloquialisms and colorful figures of speech. I don’t know, but I doubt I could be the one to pull it off. For now, I’ll stick with the standard, as hard as it is. It’s not art if you don’t suffer, right?

Let’s make a language – Part 12a: Questions (Intro)

How are you? What’s up? What am I talking about?

Up to this point, our look at language has focused primarily on the declarative, statements and utterances of fact or conjecture. That’s great, because those make up the largest part of a language, but now it’s time to move on. Why? Because we need to ask questions.

Asking the question

How do we ask a question? In English, you already know the answer, and it’s pretty complicated. Worse, it’s complicated in different ways depending on what kind of question you’re asking. So let’s take a step back.

Questions (interrogatives, if you prefer the more technical term) are, at their core, requests for information. We don’t know, so we have to ask. We’ve already met a couple of cases where we didn’t know something, like the subjunctive mood, and “interrogative” can indeed count as its own mood. But questions are a little different, because they are directed at the listener with the intention of receiving an answer.

If you think about it, you’ll find that questions fall into a few different categories. One is the yes-no or polar question; as its name suggests, this kind expects one of two answers: an affirmative (“yes”) or a negative (“no”). Examples of polar questions in English might be “Are you going with us?” or “Did you see that?” For English, yes-no questions are marked by “inversion”, where the verb (or an appropriate auxiliary, like do) is moved to the front of the sentence, and that’s fairly common in its relatives and neighbors, such as German and French. It was even more common in the past, as anyone reading Shakespeare or the King James Version of the Bible would know.

Another kind of question is usually known as the wh-question, after its most distinctive feature in English. These are the ones that request a specific bit of information like identity, location, or reason, asking things like “Who are you?” or “Where are we going?” In our language, they employ one of a handful of question words (“who”, “what”, “where”, “when”, “why”, and “how”), that most often appear the beginning of a sentence. This type of question also has inversion, but only after the question word has moved into place.

Alternative or choice questions make up a third type. “Do you want grape or orange?” is an example showing how this one works. Options are presented, with the expectation that the answer will be among them. This one allows, even begs for, an answer in the form of a simple stating of the preferred choice. This sort of elliptical response (a sentence consisting solely of “Grape,” for example) is very common, especially in speech, no matter what the formal grammar of a language might say.

Tag and negative questions, the last two of the major types, are similar to each other in that they both presuppose an answer, but they go about it in different ways. Negative questions use a negated form of a verb, as in “Aren’t you coming?” Tag questions, on the other hand, are formed as indicative statements “tagged” by an additional interrogative bit at the end: “You’re coming, aren’t you?” Strictly speaking, these are both polar questions, in that they invite a yes/no response, but the prototypical yes-no question (“Are you coming?” in this example) has a more neutral tone. Negatives are asked from a position of expecting a negative reply, while tag questions work more for confirmation or even confrontation.

Keep asking

English, again, is pretty complicated when it comes to questions. Polar and wh-questions use inversion, while wh-questions add an interrogative word into the mix. Tag questions basically have their own set of interrogative words (“you know”, “isn’t it”, and so on) that go at the end of a sentence, turning a statement into a question. All in all, there’s a lot to worry about, and other languages have their own systems.

There is one universal, however, and that is intonation. Nearly all known human languages, mo matter how they form polar questions, have a specific way of marking them. The intonation, or pitch level, of yes-no question sentences always rises from beginning to end. In English, it’s even possible to have this as the sole indication of a spoken interrogative, as in the statement “you’re coming” versus the question “you’re coming?” Some other languages, such as Spanish, only allow this method, as opposed to the inversion usual in English. (Question marks serve essentially the same purpose in these cases, but for the written form of the language.)

Looking around the world, you’ve got a few other options, though. You can add an interrogative mood marker to the verb, as in Turkish and others; this is probably going to be more common in languages where verbs already have a lot of marking. Another option is an interrogative particle, which can go just about anywhere. Polish has czy at the beginning of a question, which Esperanto lifted directly as ĉu. Japanese has the sentence-ending ka (phrases ending in “…desu ka?” are known to every lover of anime), fitting its hardcore head-finality. Latin puts in a kind of “second” position, after the questioned part; it also has the similar num for negative questions and nonne for positives.

Chinese, among others, takes a different approach, sometimes referred to as A-not-A. Here, the polarity is redefined in the form of an alternative question: a rough translation might go something like, “Is he there or not?” (“He is/is not there?” comes closer to the original, at the expense of being horrible clunky.) Another option, more likely to be found in colloquial speech rather than formal grammar, is through liberal use of tag questions or something like them.

Tag questions themselves are likely to be marked only by the tag and its intonation, as above. Wh-questions, on the other hand, have potential for more variation in their formation. Many languages use question words like those in English, and they are commonly moved to the front of a sentence, functioning as their own question particles. That’s not the case everywhere, however; although it has a specific connotation in English, we can still ask, “You want what?” (Unlike polar questions, intonation isn’t a guide here. English continues to use rising pitch for wh-questions, but Russian, for instance, doesn’t.)

The answer

Asking a question is one thing. Answering it is quite another. And answers to questions have their own grammar and syntax beyond what a normal statement would require.

Very many languages, maybe even all of them, allow a speaker to omit quite a bit when responding to a question. “Yes” and “no” can be sentences all by themselves in English, as can “si” in Spanish or “non” in French. Not every language, though, has equivalents; some instead repeat part of the question in a positive or negative form. Still others have two versions of “yes” and “no”, with one pair used for answering positive sentences, the other for negatives. (Even those that don’t can vary in the meaning of “no” when it answers a negative question. Does that create a double negative? It does in Japanese, but not English.)

Beyond polar questions, how much of a reply you need often depends on what you’re being asked. In general, a lot of languages allow you to express only the most specific part of a phrase under question: “Where are you going?” can be answered by “Home.” A fuller answer would be “I’m going home,” but the short form is perfectly acceptable in speech, and not only in English.

Further questions

So that’s it for questions in general. Next, we’ll look at the very specific question of, er, questions in our conlangs.

First glance: Superpowers

It seems like each new day brings us a new tool for game development, whether it’s an engine, a framework, a library, or any of a number of other things. Best of all, many of these up-and-coming dev tools are open source and free, so even the poorest game makers (like me!) can use them. And the quality is only going up, too. No longer must indies be content with alpha-level, code-only engines, uncompiled libraries, and NES-era assets. No, even the zero-cost level of game development is becoming packed with tools that even professionals of a few years ago wished they could have had.

The one I’m looking at today is called Superpowers, by Sparklin Labs. It’s yet another HTML5 game maker that has recently been released as open source software, under the ISC license. (ISC is functionally equivalent to MIT or “new” BSD; basically, it’s not much more than “do what you want, but give us credit”.) It’s not entirely a volunteer effort, and there are a couple of options for supporting it. Their download host, indie game publisher itch.io, gives you a donation option, but the primary way to send money is through Patreon. (There’s a link on the Superpowers main page.)

Let’s take a look

What does Superpowers bring to the table? Well, first of all, it’s an HTML5 engine. The maker itself runs as a nativized web app, and games can be compiled into standalone apps or exported in a browser-friendly format. There’s also a mobile option using the Intel XDK, but I haven’t really looked into that.

Second, and even more important, is the fact that this engine comes with a visual editor. That’s something sorely lacking in the free HTML5 arena. Granted, it’s not exactly up to the level of the editors for Unity or Unreal, but it’s much better than what we had, i.e., not much. It’s got all the usual bells and whistles: tree-based scene management, component editors (these seem a little buggy on my machine, but that’s probably just a local thing), drag-and-drop actors, and so on. For what’s technically still a beta, it’s pretty nice.

Coding works about the same way. You can attach scripts to the various parts of a scene, and they’ll know what to do. The whole thing is mostly behavior-driven, following the component style that is so popular these days. The scripts themselves are written in TypeScript, and I’m a little ambivalent about that. On the one hand, it’s an easier way of writing JavaScript (Superpowers is HTML5-based, so it’s going to end up as JavaScript eventually). On the other, TypeScript is a Microsoft project, so you never know what might happen.

One of the big features that looks interesting is the collaboration support. The Superpowers “app” has a client-server architecture, and it takes advantage of it. When you start it, it creates a server. Now, that’s pretty common in Node applications, but Superpowers actually uses it. After a little initial setup, you can have other people connect to your editor instance and work with you in real-time. I can’t tell you how well that works, since I’m just a lonely guy, but if it comes anywhere close to what’s advertised, then…wow.

There’s a lot more than this, and what I’m seeing looks very good. There’s support for prefabs (like those in Unity) in the editor, for instance, and the engine has all the usual suspects: 2D physics, multiple cameras, etc. Debugging works like in Chrome, since the whole thing runs on NW.js. (IMO, Chrome is a horrible browser, but an okay wrapper for web apps. The developer tools aren’t half bad, though.)

That’s not to say the Superpowers is perfect. Far from it. It’s early in development, and there’s bound to be a few unsquashed bugs here and there. There’s also the TypeScript dependency I mentioned above, but they’re working on that; the developers have an alpha (I think) version of the editor using Lua and the LÖVE engine. And, being on GitHub, I noticed a “Code of Conduct” file, which could be worrisome to free-speech advocates like myself. Also, there’s no online API documentation. You’re supposed to use the editor’s built-in docs. The developers’ reasoning (it boils down to “But there might be plugins!”) sounds weak to my ears. Every other HTML5 engine can do it, so why not this one?

In the end, I think the good outweighs the bad. Give it some time, and Superpowers might become one of the go-to tools for making indie games. Or it could bomb, and we’ll never hear from it again. I doubt that, though. Give me some proper online API docs, support for multiple languages (including pure JavaScript, preferably of the ES6 variety), and quite a bit more polish, and I’ll gladly put it up there with Phaser at the top of the list. For now, I’ll definitely be keeping an eye on this one.

Magic and tech: travel

Let’s start our look into the intersection of magic and technology by focusing on travel. It’s an important part of life, communication, government, and far more; indeed, it encompasses much of what makes a civilization possible. So how would it change in the presence of magic?

Movement

In our mundane world, in the timeframe we’re discussing, you had a few possible modes of travel. Foot travel (walking or running) is, of course, the oldest and most reliable. It’s also one of the slowest. On foot, you’re lucky to cover a few miles an hour (2-3 is common for walking; running can get as high as 15 or more, but only for relatively short distances), which translates to a rough maximum of 15-20 miles per day. And your feet are going to be awfully sore.

Riding, usually on horseback, is another possibility. (It wasn’t an option in the New World, but we’re making a decidedly Eurocentric culture here, so that’s okay.) This is a bit faster, with less physical exertion on the part of the traveler, but it comes at a cost: animals are expensive, they need their own care, and there are places they can’t go. None of these problems is solved by the other forms of animal-powered travel, ranging from carts to sleds. All in all, animals might get you double the travel, maybe averaging 30-40 miles per day.

Boats are another good option, if the terrain allows them. You need rivers, and they need to be able to support craft. That means no rapids or waterfalls, no dams, no seasonal drying, and so forth. But where it works, it’s worth it. Going downriver is easy, and you can cover vast distances quickly. Sixty miles in a day? Not that hard, especially since the current will keep you moving while you take a break from the oars. The downside, though, is obvious: you can only go where the rivers go.

All this is a far cry from what we’re used to today. In modern times, it’s easier to measure distance covered per hour, not per day. We have cars (about 30-60 mph, depending on speed limits), bicycles (anywhere from 10 mph up), and airplanes (200 mph is on the low end). All of these contribute to a cultural cohesion that didn’t—couldn’t—exist 600 years ago. People tended to stay close to home back then, and one of the reasons was because it was just so hard to go anywhere else. We think nothing of a fifteen-hour flight to another continent or three days of driving on a road trip, but earlier societies were much more limited in their mobility. The next town over might be a couple hours’ ride; going from your farmstead to the big city might be a weekend’s journey. And you’d only go far if it was worth it.

Just add magic

In our magical society, however, things are much more familiar, because magic helps alleviate some of the worst restrictions. Our wizards don’t have haste spells—not for lack of trying—but they have plenty of ways of increasing physical stamina, removing exhaustion, and healing general aches and pains. All of these can be used by foot and animal traffic, and they have a huge effect. Sure, you still need to eat, and so do the horses, but you don’t have to stop to do it. That already adds maybe 50% or more to your total coverage for a day, taking that 15 miles of walking and turning it to as much as 25.

But we (rather, our wizards) can do better. A recent invention in our fantasy kingdom involves something like the magical equivalent of a perpetual motion machine: a stored “pool” of magical energy is slowly released to turn a wheel or gear at a relatively constant speed, much like a flywheel. Once started, inertia keeps the wheel spinning, with small losses for friction countered by the stored magical power. (Flywheels, in principle, may date back almost a thousand years, so it’s reasonable to suggest that our magical culture might be playing with them in its later Middle Ages.)

Where this gets interesting is when one industrious mage connected this fairly well-known device to a cart by a system of gears, shafts, and the like. The resulting contraption moved forward, accelerating to a walking pace. After a decade or so of refinement, thanks to generous grants from interested nobility, the wizards of our budding nation have a self-propelled vehicle that can run for about 24 hours, with a top speed of 10 mph on flat, level ground. Rougher terrain drops this by up to half, and “refueling” the storage pool is expensive (it’s easiest to retain the services of a mage to ride with you), but the upsides are obvious.

Put simply, it’s a car. It doesn’t have much range, its speed isn’t great, it’s exorbitantly priced, but it compares well with some of the earliest attempts at automobiles. Going up against traditional modes of transit, it’s a no-brainer. Even with only the nobility being able to use them, these magic-mobiles radically alter the nature of society. The king’s decrees, courts, justice, benevolence, all of it can be delivered much faster than any other way. Soldiers can’t be transported, and only small amounts of goods can, but information transport is much more efficient in our magical world.

Such vehicles would also create the need for infrastructure to accommodate them. High-quality roads are a priority, to maximize the magic-mobiles’ power output; the ultimate goal is to connect every city with them. This causes a demand for great amounts of low-skilled laborers, with the knock-on effect of low unemployment in the traditionally slow summer and winter seasons. Rest stops have begun to spring up on the roads, mostly in the form of inns and taverns founded by enterprising merchants. And novice mages have both an extra income source and a way to practice one of the more complex spells: the storing of magical energy in an artificial vessel.

In addition to our magical cars, the wizards have a few other tricks up their sleeves. Human flight, they have found, is essentially impossible even for the greatest mages. But something like it can be approximated. A simple jumping spell can be augmented by more experienced magic users so that it flings them up to 500 feet into the air. An equally easy slow-fall spell keeps the mage from descending too fast (and getting hurt). Given a running start, each bound can cover about the same distance horizontally as vertically, and the whole process from one jump to the next takes about a minute. It’s not much faster than walking (6 mph, give or take), but it also brings the advantage of aerial scouting. Problem is, it’s individual; only a mage can work the spells, and he can only cast them on himself and maybe a person he’s carrying.

Movement in the water benefits from the magical motor above, and in exactly the same way, but some parts of the kingdom have another option. Weather control is beyond the best archmage, but most adepts can summon a concentrated jet of air or water. The former makes sails usable even in the calmest conditions, and at smaller sizes than otherwise needed. Water jets, on the other hand, help all watercraft, from the smallest raft to the biggest galleon. By Newton’s Third Law—the wizards don’t know it as such, but they’ve figured out the important part—the vessel is moved as a reaction to the propulsive force of the jet. It’s not that much of a force, but it adds up over time, which makes it worth it for longer journeys. (The same reasoning applies to the ion engines of modern spacecraft.)

Where do you want to go?

With their magical cars, Superman-like leaping wizards, and jet-powered boats, the high people of our kingdom have easy ways to move around. Even the poorer folk can benefit from the endurance spells. Together, the magical additions at the ends of the class spectrum combine to create a more cohesive society than any in Europe’s 14th century. Knowledge of current events diffuses throughout the realm at a much faster pace. Authority is much closer to hand.

Cargo transport, unfortunately, doesn’t yet have a magical panacea. River travel is still the best option, at least where it is an option. The increased speeds, however, mean that fresh foods are more commonly found in cities, among other luxuries. (On a more martial note, naval warfare is completely different, though we’ll look at that later on.) Travel upriver is far easier, too, if you have a mage on your craft.

Our magical kingdom won’t be completely modern, but it will have reached a kind of transitional stage of travel. It’s reminiscent, in a way, of the early railroad days, when people were first exposed to the idea of higher-speed transit. Indeed, given time, something like a railroad may develop. All it would take is more incremental progress in the magic motor, allowing it to provide more force. That would enable higher speeds, larger carrying capacities, or both. Once it gets to the point where even poorer peasants can afford a ride to the next town, they’ll soon stop being peasants at all. But that’s a tale for a different day.