Out of the dark: building the Dark Ages

We have an awful lot of fiction out there set in something not entirely unlike our Middle Ages. Almost every cookie-cutter fantasy world is faux-medieval, and that’s only the ones that aren’t trying to be. The Renaissance and early Industrial Era also get plenty of love, and Roman antiquity even comes up from time to time. But there’s one time period in our history that seems a bit…left out. I’m talking about those centuries after Rome fell to the barbarian hordes, but before William crossed the Channel to give England the same fate. I’m talking about the Dark Ages.

A brighter shade of dark

Now, as we know today, what previous generations called the Dark Ages weren’t really all that dark. Sure, there were Vikings and Vandals, barbarians and Britons, Goths and Gauls, but it wasn’t a complete disaster. The reason we speak of the “Dark Ages”, though, is contrast. Rome was a magnificent empire by any account, and the first to coin the “Dark Age” moniker on its fallen children were living in the equally “shining” Enlightenment. By comparison, the time between wasn’t exactly grand.

Even in our modern knowledge, the notion of a Dark Age is still useful, even if it doesn’t quite mean what we think it means. In general, we can use it to refer to any period of technological, social, and political stagnation and regression. That’s not to say there wasn’t progress in the Dark Ages. One great book about the period is titled Cathedral, Forge, and Waterwheel, and that’s a pretty good indication of some of the advancement that did happen.

Compared to what came before—the Roman empire, with its Colosseum and aqueducts and roads—there’s a huge difference, especially at the start of the Dark Ages. In some parts of Europe, particularly those farthest from the imperial center, general conditions fell to their lowest levels in hundreds of years. While the Empire itself actually did survive in the east in the form of the Byzantines (who were even considered the “true” emperors by the first generations of barbarian kings), the west was shattered, and it showed. But they dug themselves out of that hole, as we know.

Dying light

So, even granting our more limited definition of “Dark Ages”, what caused them? Well, there are a lot of theories. Rome was sacked in 476, of course, and that’s usually considered a primary cause. A serious cold snap starting around 536 couldn’t have helped matters. Plagues around the same time combined with the war and famine to cause even greater death, completing the quartet of the Horsemen.

But all that together shouldn’t have been enough to devastate the society of western Europe, should it? If it happened today, it wouldn’t, because our world is so connected, so small, relative to Roman times. If the whole host of apocalyptic horror visited the EU today, hundreds of millions of people would die, but we wouldn’t have a new Dark Age. The reason can be summed up in one word: continuity.

Yes, half of the Roman Empire survived. In a way, it was the stronger half, but it was also the more distant half. When Rome fell, when all the other catastrophes visited its remnants, the effect was to cause a cultural break. Many parts of the empire were already more or less autonomous, growing ever more apart, and the loss of the “center of gravity” that was Rome merely hastened the process.

A look at Britain illustrates this. After Rome all but gave up on its island colony, England all but gave up on it. Outside of the monasteries, Rome was practically forgotten within a few generations, once the Saxons and their other Germanic friends rolled in. The Danes that started vacationing there in the ninth century cared even less for news from four hundred years ago. By the time William came conquering, Anglo-Saxon England was a far cry from Roman Britannia. This is an extreme example, though, because there was almost no continuity in Britain to start with, so there wasn’t much to lose. However, similar stories appear throughout Europe.

Recurring nightmare

Although Europe’s Dark Ages are a thousand years past, they aren’t the only example of the kind of discontinuity of a Dark Age. Something of the same sort happened in Greece two thousand years before that. The native peoples of America can be considered to have a Dark Age that started circa 1500, as the mighty empires of Mexico and Peru fell to Spanish invaders.

In every case, though, it’s more than just the fall of a civilization. A Dark Age needs a prolonged period of destruction, probably at least two generations long. To make an age go Dark requires severe population loss, a total breakdown of government, and the forcing of a kind of “siege mentality” on a society. Climatic shifts are just a bonus. In all, a Dark Age results from a perfect storm of causes, all of which combine to break the people. Eventually, due to the death, destruction, and constant need to be on guard, everything else falls by the wayside. There simply aren’t enough people to keep things going. Once those that are left start dying off, the noose closes. The circle is broken, and darkness settles in.

That naturally leads to another question: could we have a new Dark Age? It’s hard to imagine, in our present time of progress, something ever causing it to stop, but that doesn’t make it impossible. Indeed, almost the entire sub-genre of post-apocalyptic fiction hinges on this very event. It can happen, but—thankfully—it won’t be easy.

What would it take, then? Well, like the Dark Ages that have come before, it would be a combination of factors. Something causing death on a massive, unprecedented scale. Something to put humanity on the back foot, to disrupt the flow of society so completely that it would take more than a lifetime to recover. In that case, it would never recover, because there would be no one left who remembered the “old days”. There would be no more continuity.

I can think of a few ways that could work. The ever-popular asteroid or comet impact is an easy one, and it even has the knock-on effect of a severe climate shock. Nuclear war never really seemed likely in my lifetime, but I was born in 1983, so I missed the darker days of the Cold War. I did watch WarGames, though, and I remember seeing those world maps lighting up at the end. Two hundred years after that, and I don’t think we’re looking at a Fallout game.

Other options all have their problems. An incredibly virulent outbreak (Plague, Inc. or your favorite zombie movie) might work, but it would have to be so bad that it makes the 1918 flu look like the common cold. Zika is in the news right now, but it simply won’t cut it, nor would Ebola. You need something highly infectious, but with a long incubation period and a massive mortality rate. It’s hard to find a virus that fits all three of those, for evolutionary reasons. The other forms of infectious agents—bacteria, fungi, prions—all have their own disadvantages.

Climate change is the watchword of the day, but it won’t cause a Dark Age by itself. It’s too slow, and even the most alarming predictions don’t take us to temperatures much higher than a few thousand years ago, and that’s assuming that nobody ever does anything about it. No matter what you believe about global warming, you can’t make it enough to break us without some help.

Terminator-style AI is another possibility, one looking increasingly likely these days. It has some potential for catastrophe, but I’m not sure about using it as the continuity-breaker. The same goes for nanotech bots and the like. Maybe they’ll enslave us, but they won’t beat us down so badly that we lose everything.

And then there’s aliens. (Insert History Channel guy here.) An alien-imposed destruction of civilization would be the logical extension of the Roman hordes into the global future. Their attacks would likely be massive enough to influence the planet’s climate. They would cause us to huddle together for mutual defense, assuming they left any of us alive and alone. Yeah, that could work. It needs a lot of ifs, but it’s plausible enough to make for a good story.

The light returns

The Dark Age has to come to an end. It can’t last forever. But there’s no easy signal that it’s over. Instead, it’s a gradual thing. The key point here, though, is that what comes out of the Dark Age won’t be the same as what went in. Look again at Europe. After Rome fell, some of its advances—concrete is a good example—were lost to its descendants for a thousand years. Yet the continent did finally surpass the empire.

Over time, the natural course of progress will lift the Dark Age area to a level that is near enough where it left off, and things can proceed from there. It will be a different place, and that’s because of the discontinuity that caused the darkness in the first place. The old ways become lost, yes, but once we discover the new ways, they’ll be even better.

We stand on the shoulders of giants, as Newton said. Those giants are our ancestors, whether physically or culturally. Sometimes they fall, and sometimes the fall is bad enough that it breaks them. Then we must stand on our own and become our own giants. The Dark Age is that time when we’re standing alone.

Naming languages: personal names

Everyone has a name. Most people have more than one. Every year, thousands of expecting mothers buy books listing baby names, their meanings, and their origins. Entire websites (my favorite is Behind the Name) are dedicated to the same thing. Unlike place names, people’s names truly are personal.

Authors of fantasy and fiction have a few options in their quest for distinctive names. A lot of them take the easy route of using real-world names, and that’s fine. Equally valid is the Tolkien method of constructing an elaborate cultural and linguistic framework, and making names out of that. But we can also take a middle approach with a naming language.

Making a name for yourself

Given names (“first” names, for Westerners) are the oldest. For a long time, most people were known only by their given names. Surnames (“last” names) probably originated as a way to distinguish between people with the same given name.

How parents name their children depends very much on their culture and their language. Surnames can be passed down from father—or mother, in a matriarchal society—to child, or they can be derived from a parent’s name, as in Iceland. Given names can come from just about anywhere, and many of their origins are lost to time. But plenty of them are traceable, as the baby-book authors well know.

The last shall be first

Let’s start with surnames, for the same reason I focused on English place names last week: they’re easier to analyze. Quite a few surnames, in fact, are place names. On my mother’s side are the Hatfields—yes, them—whose ancestors, at some point in history, lived in a place called Hatfield. In general, that’s going to be the case with “toponymic” surnames. Somebody took (or was given) the name of his home town/village/kingdom as his own.

Occupations are another common way of getting a surname. My last name, Potter, surely means that someone in my family tree made pottery for a living. He then passed the name, but not the occupation, to his son, and thus a family name was born. The same is true for a hundred other common surnames, from Smith (any kind will do) to Cooper (a barrel maker) to Fuller (a wool worker) to Shoemaker (that one’s easy). A great many of these come from fields long obsolete, which gives you an idea of how old they are.

Some cultures create a surname from a parent’s given name. That’s closer to the norm in Iceland, but it occurs in other places, too. Even in English, we have names like Johnson, Danielson, and so on.

Other possibilities include simply using first names as last names, reusing historical or religious names (St. John), taking names of associated animals or plants, and almost anything else you can think of.

What’s your name?

For given names, occupations and places don’t crop up nearly as much. Instead, these names were originally intended to reflect things like qualities and deeds. When given to a child, they were a kind of hopeful association. You don’t name a boy “high lord” because he is one, but because you want him to be one.

Again, cultural factors play a huge role. Many English names come from old Anglo-Saxon ones, but just as many derive from the Bible, the most important book in England for about a millennium. Biblical influences changed the name game all over Europe, in fact. (Christianity didn’t wipe out the old names, though. Variants of Thor are still popular.)

Other parts of the world have their own naming conventions. In Japan, for instance, Ichiro is a name given to firstborn sons, and that’s essentially its meaning: “first”. And many of those Bible names, from Michael (mine!) and Mary to Hezekiah and Ezekiel, they all have connotations that don’t nicely translate into our terms. Some of them, thanks to Semitic morphology, encompass what would be whole sentences in English.

Foreign names are often imported, usually as people move around. In modern times, with the greater mobility of the average person, names are leaving their native regions and spreading everywhere. They move as their host cultures do; colonization brought European names to indigenous people—when it didn’t wipe those people out.

All for you

The culture is going to play a big role in what names you make. How do your people think? What is important to them? A very pious people will have a lot more names containing religious elements (e.g., Godwin, Christopher). A subjugated culture will import names from its oppressors, whether on its own or by decree.

Language plays a factor, as well. Look at the difference between Chinese names (Guan, Lu, Chiang) and Japanese (Fujiwara, Shinzo, Nagano). There’s a lot of culture overlap due to history, but the names are completely different.

Also, the phonology and syllable structure of a language will affect the names it creates. With a restricted set of potential syllables, it’s more natural to make names longer, so they’ll be more distinct. (Chinese, obviously, is an exception, but polysyllabic Chinese names are a lot more common in modern times.) Names can be short or long in any language, however. That part’s up to you.

As with place names, you’ll want a good stock of “building blocks”. These will include more adjectives than the place-name set, especially positive traits (“strong”, “high”, “beautiful”). The noun set will also represent those same qualities, especially the selection of animals: “wolf” and “bear” are common in Anglo-Saxon names, for example. Occupational terms (agent nouns) will come in handy for surnames, as will your collection of place names.

Finally, personal names will change over time. They’ll evolve with their languages. And they’ll adapt when they’re borrowed. That’s how we go from old Greek Petros to English Peter, French Pierre, Spanish Pedro, and Russian Pyotr.

To finish this post off, here are some Isian names. First, the surnames:

  • Modafo “of the hill” (modas “hill” + fo “from”)
  • Ostanas “hunter” (ostani “to hunt” + -nas)
  • Samajo “man of the west” (sam “man” + jo “west”)
  • Raysencat “red stone” (ray “red” + sencat “stone”)

Now, some given names:

  • Lukadomo “bright lord” (luka “bright” + domo “lord”)
  • Iche “beautiful girl” (reduced ichi “beautiful” + eshe “girl”)
  • Tonseca “sword arm” (ton “arm” + seca “sword”)
  • Otasida “bearer of the sun” (otasi “to hold” + sida “sun”)

In Isian, names follow the Western ordering, so one can imagine speakers named Tonseca Samajo or Iche Modafo. What names will you make?

Thoughts on Haxe

Haxe is one of those languages that I’ve followed for a long time. Not only that, but it’s the rare programming language that I actually like. There aren’t too many on that list: C++, Scala, Haxe, Python 2 (but not 3!), and…that’s just about it.

(As much as I write about JavaScript, I only tolerate it because of its popularity and general usefulness. I don’t like Java for a number of reasons—I’ll do a “languages I hate” post one of these days—but it’s the only language I’ve written professionally. I like the idea of C# and TypeScript, but they both have the problem of being Microsoft-controlled. And so on.)

About the language

Anyway, back to Haxe, because I genuinely feel that it’s a good programming language. First of all, it’s strongly-typed, and you know my opinion on that. But it’s also not so strict with typing that you can’t get things done. Haxe also has type inference, and that really, really helps you work with a strongly-typed language. Save time while keeping type safety? Why not?

In essence, the Haxe language itself looks like a very fancy JavaScript. It’s got all the bells and whistles you expect from a modern language: classes, generics, object literals, array comprehensions, iterators, and so on. You know, the usual. Just like everybody else.

But there’s also a few interesting features that aren’t quite as common. Pattern matching, for instance, which is one of my favorite things from “functional” languages. Haxe also has the idea of “static extensions”, something like C#’s extension methods, which allow you to add extra functionality to classes. Really, most of the bullet points on the Haxe manual’s “Language Features” section are pretty nifty, and most of them are in some way connected to the type system. Of any language I’ve ever used, only Scala comes close to helping me understand the power and necessity of types as much as Haxe.

The platform

But wait, there’s more. Haxe is cross-platform, in its own special way. Strictly speaking, there’s no native output. Instead, you have a choice of compilation targets, and some of these can then be turned into native binaries. Most of these let you “transpile” Haxe code to another language: JavaScript, PHP, C++, C#, Java, and Python. There’s also the Neko VM, made by Haxe’s creator but not really used much, and you can even have the Haxe compiler spit out ActionScript code or a Flash SWF. (Why you would want to is a question I can’t answer.)

The standard library provides most of what you need for app development, and haxelib is the Haxe-specific answer to NPM, CPAN, et al. A few of the available libraries are very good, like OpenFL (basically a reimplementation of the Flash API). Of course, depending on your target platform, you might also be able to use libraries from NPM, the JVM, or .NET directly. It’s not as easy as it could be—you need an extern interface class, a bit like TypeScript—but it’s there, and plenty of major libraries are already fixed for you.

The verdict

Honestly, I do like Haxe. It has its warts, but it’s a solid language that takes an idea (types as the central focus) and runs with it. And it draws in features from languages like ML and Haskell that are inscrutable to us mere mortals, allowing people some of the power of those languages without the pain that comes in trying to write something usable in a functional style. Even if you only use it as a “better” JavaScript, though, it’s worth a look, especially if you’re a game developer. The Haxe world is chock full of code-based 2D game engines and libraries: HaxePunk, HaxeFlixel, and Kha are just a few.

I won’t say that Haxe is the language to use. There’s no such thing. But it’s far better than a lot of the alternatives for cross-platform development. I like it, and that’s saying a lot.

Magic and tech: information technology

In our modern era, we are well and truly blessed when it comes to information. We have the Internet, of course, with its wealth of knowledge. In only a few seconds, any of us can call up even the most obscure facts. Sure, it’s far from perfect, but it’s more than people from just a hundred years ago could dream of. To someone from the Renaissance or earlier, it really would be magic.

Information

Since the written record is often all we have of older cultures, it’s fairly easy to trace the development of information technology. The Internet is only a few decades old, as we know. Telephones, television, and telegraphs (notice a theme there?) preceded that. Radio transmission goes back only a hundred years or so; before its invention, your choices for communication were mostly limited to the written word.

Writing dates back millennia. It’s the oldest and most stable method of storing information that we have. From clay tablets and inscriptions, we can follow its trail through the ages. Papyrus and parchment have been replaced by paper, which is now giving way to LEDs and flash memory, but the idea remains the same. Although the form modern writing takes would astound anyone from earlier times, its function would be familiar in an instant.

In those older days, what options do you have for information and communication? If you’re literate—not everyone was—you can write, obviously, but there’s only so much that gets you. The Chinese invented a printing press about a thousand years ago, but they didn’t really find it useful; if you look at the Chinese script, you’ll probably see why. The Western, alphabetic, world loved it when they got it four centuries later. Copying by hand was your only option for most things before that. (Seals and stamps had limited use, and block printing didn’t show up in Europe until a couple of generations before Gutenberg.)

The form of a written text also changed through history. That’s mostly because of the conditions. Scrolls work better for some materials, but the codex (books like ours) is more compact, and it’s a more natural fit for paper. And letters can be written on anything handy, even bits of other works!

Add the magic

So, in the era we’re covering, the printing press hasn’t been invented. Woodblocks are a new innovation just now trickling in. Most work is done on parchment, some on paper, and it’s done almost exclusively by hand. Scribing and copying are important professions, and their services are always in high demand. And, thanks to the relative lack of supply, the written word is expensive. Can our magical society improve on this state of affairs? If so, how?

A general copying spell (like D&D’s Amanuensis) is too much to ask for, but that hasn’t stopped some mages from trying. But our magic kingdom does have a few information innovations that have become commonplace. One isn’t connected to writing at all, but to speaking: a spell that increases the volume and clarity of a speaker’s voice. In other words, it’s a PA system. In real life, before the invention of electrical amplification, you had to use natural means, mostly in the form of architecture; amphitheaters aren’t built that way just for looks. In this magical land, though, a good acoustic setting is no longer so vital. Anyone can make his voice heard, anywhere, no matter how large the crowd.

Long-distance communication also isn’t as big a problem. Historically, conversing with someone in another city was hard, involving a back-and-forth series of letters. With the upgraded travel abilities of this society, mail delivery gets a boost, too, but that’s not the only option. Through use of a hand-sized glass ball (essentially the same as a crystal ball or Tolkien’s palantír), direct communication can be achieved. It’s highly limited, however. For one, there’s the expense of creating and imbuing the spheres. Then, it’s only a one-to-one system, as speech is transmitted in something like telepathy. No conference calls or broadcasts, unfortunately.

But even this is a huge step up from couriers. Every town of more than a few hundred people has at least one dedicated connection, usually staffed by junior or washed-up mages. For a small fee, short messages can be sent over the spheres to loved ones, acquaintances, or tradesmen in nearby cities. Longer distances can be covered by a relay system, and the biggest cities are set up as centralized “hubs”, with dozens of connections to their neighbors and the most important places.

The overall effect is a society where people are more likely to be aware of what’s outside their locale. Like the telegraph systems of the 1800s (which directly influenced this idea), communication in this world has become more “real-time”. Unlike telegraphs, the magic spheres are wireless, so they can also be taken aboard ships and to foreign lands. No more waiting two years to hear from sailors at sea, not when they can give you daily updates. True, they may only be a few words in length, but Twitter only gives you 140 characters, and people love it.

More magic

So that’s communication improved by magic. What about the storage of information? We can’t do too much better than printed books without some serious technological improvement, and I’ve already said that these guys don’t even have printing. Can we do better than hand-copied manuscripts?

By using the same endurance spells as before, scribes can work longer and faster, increasing their output. Memory-aiding spells, which have near-infinite uses, can give a true photographic memory that would mean fewer books are necessary; high wizards are their own libraries. (That also cuts down on spell thievery and protects the secrets of the arcane from outsiders.)

A path recently explored involves an enchanted plate of glass. That’s already a hard sell, due to the higher cost of plate glass—magic helps this somewhat, as we’ll see later on—and the further expense of the enchantment. But this particular spell “freezes” an image in the glass for a time. The mage holds the pane between himself and the scene he wishes to capture, and he invokes the spell. Almost instantly, the image is frozen. It’s not permanent (it lasts a few years at most) but it does record in clear color. The downside is that one piece of this glass can only “hold” a single picture. The first use of this particular advance in magic has been in art, strangely enough, capturing images that painters can then use as models.

The wizards do have a few other minor aids to information technology. Invisible ink is known in our world, but they have a variant that really is invisible to anyone other than another mage. Short-distance voice transmission spells are easy enough that they’re mostly used by young adepts for pranks. Writing materials are not limited to parchment and paper; “burning” pens allow one to write on wood, metal, or just about anything else. But the more traditional materials are also easier to make, thanks to spells that speed the fabrication processes. And when printing does come, magical propulsion will quickly make it as fast as Industrial-era presses.

What do you know?

In the end, the magical society doesn’t have much that can top handwriting…yet. That doesn’t mean they’re stuck with medieval-era information tech, though. The magic-based telegraph and photograph are some 500 years ahead of their natural counterparts, and they both help to create a populace more aware of its surroundings, of its setting. On top of that, scribes can work harder and faster (and with better eyesight!) than their Earthly kin, meaning that they make more books. More books means more opportunity to read, which encourages a higher literacy rate. The final result: a well-read, well-informed people.

It’s far from modern, granted. It’s not even that close to Victorian, except for our magical answer to the telegraph. But the larger amount of information available is going to have a ripple effect, as we’ll see in coming posts. Everything from espionage to economics changes when people know what’s going on.

Naming languages: place names

Once you have the bare skeleton of a conlang necessary for making names, you’ll probably want to start making them. In my view, most names can be divided into two broad categories: place names and personal names. Sure, these aren’t the only ones out there, but they’re the two most important kinds. Historically, however, they follow different rules, so we’ll treat them separately. Place names are, in my opinion, easier to study, so they’ll come first.

Building blocks

The absolute best part of the world for the study of place names has to be England. Most conlangers speak English, most conlanging materials are in English, and most places in England are named in English. Even better, many English places have names that are wonderfully transparent in their formation, and that gives us a leg up on our own efforts. Thus, I’ll be using examples from England in this post. (A lot of American names tend to copy English ones in style and form, but there are also plenty that come from other languages, and not all of them Indo-European. That makes things much harder, so we’ll stick to English simplicity.)

The first thing to realize when looking at place names, or toponyms, is that they reflect a place’s history. As I’m writing this, I have Google Maps opened up to show southern England, and I can already find a few easy examples: Oxford, Newport, Ashford, Cambridge, and Bournemouth. For most of these, it should be obvious how they got their names (“ford of the oxen”, “the new port”, “ford near ash trees”), while others need a little bit of puzzling out (“bridge at the Cam river” and “mouth of the bourne”—a bourne was a small stream or brook).

These few examples show the basic method of making place names. First, you need a number of words in a few classes. Geographical features (“river”, “sea”, “forest”, etc.) are one of the main ones. Another covers human constructs (“town”, “hamlet”, “village”, “fort”, “mill”, “bridge”, and a thousand others). Animal names can come into play, too, as in “Oxford”. Also, a few descriptive adjectives, such as color terms, are immensely helpful, and you can even throw in some prepositions, too.

Just putting these together in the English style—but using the words and rules of your naming language—nets you a large number of place names. For example, here are some place names in Isian, an ongoing conlang of my Let’s make a language series:

  • Raymodas, “red hill” (ray “red” + modas “hill”)
  • Ekheblon, “new city” (ekho “new” + eblon “city”)
  • Jadalod, “on the sea” (jadal “sea” + od “on”)
  • Lishos, “sweet water” (lishe “sweet” + shos “water”)
  • Omislakho “king’s island” (omis “island” + lakh “king” + o “of”)

Notice that a few of these have had their constituent parts modified slightly. This can be for reasons of euphony (e.g., vowels merging) or evolution. Also, places with names meaning the exact same thing can be found in the real world. The historical city of Carthage derives its name from the Phoenician for “new city”, and there’s a Sweetwater not too far from where I live.

Changing the names

While most place names are derived in the above fashion, some of them don’t seem to be. But if you look closer, you can find their roots. Those roots often paint a picture of the life of a place, and they can even be a tool in the archaeologist’s toolbox. The way some English place names changed, for instance, illustrates the pattern of invasions across that country. Viking invasions gave York its name, as they did with a number of towns ending in -by. Celtic influences can be found if you look hard enough; “Thames” most likely comes from that family. And don’t forget the Romans.

Of course, names are words or combinations of words, and they are just as susceptible to linguistic evolution. That’s how we get to Lyon from Lugdunum and Marseilles from Massalia, but it works on smaller scales, too. One of the most common changes that affects names is a reduction in unstressed syllables, as in the popular element -ton, derived from town. (The English, admittedly, take this a little too far. If you didn’t know how Worcester and Leicester were pronounced, could you ever guess?)

Names can also be borrowed from languages, just like any other word. This happened extensively in North America, where native names were picked up (and mangled) by European settlers. This is especially noticeable to me, given where I live. Sale Creek, my current home, is purely English and obvious. But I moved here from nearby Soddy, and no one can seem to agree on an etymology for that name. The nearest “big city” of Chattanooga derives from the Muskogean language, while the state’s name, Tennessee, comes from a Cherokee name that they borrowed from earlier inhabitants.

What this means is that some of your names don’t have to be analyzable. If you find a sequence of sounds you like, but you can’t find a way to fit it into your naming language, no problem. Say it’s a foreign or ancient name, and nobody will complain. That’s basically how our world works: some names can be broken down, others are black boxes. This can even give you a bit of a hook for worldbuilding. Why is there an oddball name there? Is it a regional thing, maybe from some barbarian invasion a thousand years ago? Or was it named after a forgotten emperor?

Onward

Next week, we’ll close out this miniseries of posts by looking at the names of people. These are intimately related to the names of places, but they deserve their own time in the spotlight. Until then, draw a map and put some names on it!

Cooldowns

A lot of games these days have embraced a real-time style of fighting involving powers or other special abilities that, once activated, can’t be used again for a specific amount of time. They have to “cool down”, so to speak, leading the waiting period to be called a cooldown. FPS, RTS, MOBA…this particular style of play transcends genres. It’s not only for battles, either. Some mobile games have taken it to the extreme, putting even basic gameplay on a cooldown timer. Of course, if you don’t mind dropping a little cash, they’ll gladly let you cut out the waiting.

A bit of history

The whole idea of cooldowns in gaming probably goes back to role-playing games. In RPGs, combat typically works by rounds. Newer editions of D&D, for example, use rounds of 6 seconds. A few longer actions can be done, resulting in your “turn” being skipped in the following round, but the general ratio is one action to one round. This creates a turn-based style of play that usually isn’t time-sensitive. (It can be, though. Games such as Baldur’s Gate turn this system into one supporting real-time action.)

A more fast-paced, interactive style comes from the “Active Time” battles in some of the Final Fantasy games. This might be considered the beginning of cooldowns, at least in popular gaming. Here, a character’s turn comes around after a set period of time, which can change based on items, spells, or a speed stat. Slower characters take longer to fill up their “charge time”, and Haste spells make it fill faster.

Over the past couple of decades, developers have refined and evolved this system into the one we have today. Along the way, some of them have largely discarded the suspension of disbelief and story reasoning for cooldowns. Especially in competitive gaming, they’re nothing more than another mechanic like DPS or area of effect. But they are pretty much everywhere these days, in whatever guise, because they serve a useful purpose: forcing resource management based on time.

Using cooldowns

At the most basic level, that’s what cooldowns are all about. They’re there for game balance. Requiring you to wait between uses of your “ultimate” ability means you have to learn to use the smaller ones. Limiting healing powers to one use every X seconds gives players a reason to back off from a bigger foe; it also frees you from the need to place (and plan for) disposable items like potions. Conversely, if you use cooldowns extensively in your game, you have to make sure that the scenarios where they come into play are written for them.

On the programming side, cooldown timers are fairly easy to implement. Most game engines have some sort of timer functionality, and that’s a good base to build from. When an ability is used, set the timer to the cooldown period and start it. When it signals that it’s finished, that means that the ability is ready to go again.

But to better illustrate how they work—and because not every game engine likes having dozens or hundreds of timers running at once—here’s a different approach. We’ll start with a kind of “cooldown object”:

class CooldownAbility {
    // ...

    void activateAbility();

    void updateTimer(int timeDelta);

    int defaultCooldown;
    int cooldown;
    int coolingTime;
    bool isCoolingDown;
};

(This is C++-like pseudocode made to illustrate the point. I wouldn’t write a real game like this.)

activateAbility should be self-explanatory. It would probably have a structure like this:

void activateAbility() {
    // do flashy stuff
    // ...

    // start the cooldown period
    coolingTime = 0;
    isCoolingDown = true;
}

The updateTimer method here does just that. Each time it’s called, it adds the timeDelta value (this should be the time since the last update) to the coolingTime, and checks to see if it reached the cooldown limit:

void updateTimer(int timeDelta) {
    coolingTime += timeDelta;

    isCoolingDown = (coolingTime < coolDown);
}

Most games have a nice timer built right in: the game loop. And there’s likely already code in there for keeping track of the time since the last run of the loop. It’s simple enough to hook that in to a kind of “cooldown manager”, which runs through all of the “unusable” abilities and updates the time since last use. That might look something like this:

for (auto&& cd : allCooldowns) {
    cd.updateTimer(timeThisFrame);

    if (!cd.isCoolingDown) {
        // tell the game that the ability is ready
    }
}

(Also, the reason I gave this object both a cooldown and a defaultCooldown is so that, if we wanted, we could implement power-ups that reduce cooldown or penalties that increase it.)

Implementing this same thing in an entity-component engine can work almost the same way. Abilities could be entities with cooldown components, and you could add in a system that does the updating, cooldown reduction/increase, etc.

For a certain style of game, timed resource use makes sense. It makes gameplay better. It opens up new tactics, new strategies, especially in multiplayer gaming. And while it takes a lot of design effort to keep a cooldown-based game balanced and fun, the code isn’t that hard at all. That’s especially good news for indie devs, because they get more time to spend on the balancing part.

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.

css.php