Monthly Archive for December, 2009

Aspirations

Having put the Aspire One D250-1727 through its initial paces, I have some findings.

First off, I am astounded by what this thing can accomplish on such limited hardware. The 1.6 GHz clock frequency of the Atom processor isn’t much, nor is its 1 GB of RAM terribly impressive, and a 160 GB HDD is rather small by today’s standards, but this thing hasn’t skipped a beat.

Of course, one must know what one is getting into with netbooks. They aren’t racehorses, they’re workhorses. They are intended to serve the needs of most people most of the time, not all people all of the time.

That said, it does everything I need. I suspect running Eclipse on it might be a bit much to ask, but we’ll find out. The screen is way too small to use a big IDE anyway, though. I normally use a GNOME Terminal and gVim to do all my development, so that’s not a problem for me. Remember: run light, and you’ll never run on empty.

Speaking of running on empty, there’s none of that here. I got a model with a 6-cell battery that advertises itself as working for “up to” 9 hours. I was not expecting 9 hours out of it. My last laptop (a beast of a Vaio) barely managed an hour out of a 3-cell, so I was hoping to get six. Looks like it gets more like seven and a half, which is just phenomenal by my standards. The biggest problem I had with that Vaio is, while it was powerful, it wasn’t terribly portable because of the weight and minuscule battery life.

The Aspire One fits easily on even the most cramped college desk (I’m looking at you, Moorpark forum!) and the battery can power me through the whole day without a recharge as opposed to the insanity of having to sit next to an outlet with that Vaio and take up the whole desk.

Oh, and did I mention it weighs less than three pounds? One of my biggest difficulties with the Vaio was constantly having to take it out of my bag so that I could actually lift the darn thing. At 2.8 lbs, I suspect I’ll be able to just leave it in there without destroying my shoulder.

Software wise, after exorcising XP Home, I first tried it with standard-issue Ubuntu (Desktop Edition) and found it to be satisfactory, but a bit cramped. I switched to Ubuntu Netbook Remix and it alleviates much of my concern with the downside that the default theme isn’t as polished. I guess there’ll be some tweaking to do there.

Oh, this is the second or third time that I have installed Ubuntu and had zero issues. I had to connect it via Ethernet at first so Ubuntu could find the Broadcom STA driver (automatically) before I had wifi, but that doesn’t even qualify. I read about some packages I would have to install to enable the webcam and fix the microphone, but I tested these and found them to already be working, so I’m guessing 9.10 fixed that from 9.04. Nice!

The keyboard is smaller than a normal laptop keyboard, of course – about 80% of a full-size keyboard – but it is not cramped at all. It’s quite comfortable to type on, whether blogging or hacking, and that makes me very happy. I was mildly concerned about that, but it turns out the smaller travel distance while typing actually makes it easier. It’s less of a strain on the fingers when they don’t have to stretch as far, I guess.

All in all, I’m loving this thing. Acer has definitely won me over. For about $320 I have a far more useful device than that $800 Vaio – which I decided to give to my dad – ever was. Not that it was a bad computer, mind you. It was just a terrible fit for what I actually needed.

I’ll post again after I’ve used it enough to be able to say more, but initial findings are very good!

Wire Code

I am working on a visual programming language that uses the metaphor of wires connecting blocks of functionality to produce functional/procedural programs. It is currently in a very early draft stage.

Note: Red lines and boxes are for execution flow while blue lines and circles are for data flow.

The above Hello World program is traced as follows:

  1. Execution begins at the START block (and flows along the red lines through the box connectors).
  2. Execution moves to the PRINT block, which accepts a data input (d-in) from a string literal “Hello World!”.
    1. The PRINT block reads “Hello World!” from the string literal.
    2. The text is printed to standard output.
  3. Control passes to the END block, which terminates the program.

New blocks can be created by connecting an entry-point FUNCTION block to an output RETURN block through some logic. By way of example, here’s an implementation of square(x) = x * x:

These can be defined in module files and then imported into other programs. Module imports are handled separately form the logic flow.

Comments can be placed anywhere. They are rendered somewhat like sticky notes. There is a special FOR loop that does foreach-style iteration, but other looping constructs are not provided since they cannot be implemented more trivially than by feeding the output execution line of an IF block back into itself:

Imagine how a “WHILE” block would work and you will realize that “WHILE” would just be an incorrectly named IF block (since there’s no way to require the developer to wire the logic chain back up to the input).

Compilation offers multiple options. For instance, by default all unbound outbound execution nodes implicitly end the program flow when control attempts to pass to them. This can be toggled to produce an error at compile time to require the developer to explicitly wire up outbound execution lines to an END block. It is also possible to generate errors (instead of warnings) for unreachable paths, type errors, etc.

Because the syntax tree is edited directly, there is no parsing step. This makes the compiler significantly simpler, although admittedly it makes the editor rather less so. The fact that this language cannot be edited in text format (simply, anyway. It is stored in YAML, but not terribly readable YAML) is a definite limitation, but it is not a very significant one given the domain of this language. It is intended to be used with a specific GUI environment, which I will describe in a future post.

The reason I have gone to the trouble of creating yet another visual programming language is twofold:

  1. The GUI environment I mentioned would work very well with such a system, since it would further increase accessibility for both tweaks and original development, and yet…
  2. No suitable VPL yet exists.

I purposefully stayed away from funky symbols and other pointless stuff. The thing about programming that produces a barrier to entry is the intimidation factor of staring at a wall of text and being buffeted by the syntax. This simple graphical language removes a lot of the syntax confusion while retaining alphabetic keywords as tokens to enable quick editing and provide familiar ground to veteran programmers.

In addition, this language is being designed from the get-go to support localization and internationalization, which makes life easier for people for whom English is not a native language. It does not seem terribly fair to require someone to learn English words like “for” and “while” just to use a programming language.

My hope is that a simple visual language like this, if it is able to grow with its users, will eventually revolutionize development, putting the power to develop rich applications in the hands of young people the world over.

If not, I guess it’ll just have to be a fun pet project.

The Old Paradigm

Bear with me a moment.

The professional programming world is full of people who learn and use languages based on how much they can get paid to work in them. This is what I am going to term the old paradigm, in which Jane Programmer goes to work at XYZ Corporation to write code in some specific language for a salary.

The old paradigm is a product of our past. Before the information “revolution” came to be, putting in eight hours at an industrial age workshop was standard practice. Jane Welder, as she might have been, if we forget for a moment about the sexual inequalities of the day, would put on her hard hat, dutifully ride the train to her place of work, and put her nose to the grindstone until the whistle blew.

It was the only way it could be done. ABC Manufacturing had all the big tools. It was not possible to do your work anywhere else, let alone cost-effective. And so it was, for years. Work was dependent both on time and space.

As the industrial age found gray in its hair, however, and tools got cheaper, Jane realized she could suddenly afford her very own set of manufacturing tools. Sure, she couldn’t have all the big fancy things they had at ABC Manufacturing, but riveting and welding were no longer the sole purview of massive companies that could afford expensive tools. She could open up her own shop, or work out of her garage. New business models started to develop.

But then, the paradigm shifted. Backwards. The information age was coming, and nobody could stop it. Computers, though, early on, exhibited many of the problems of those old machines. They were heavy, noisy, and, above all, tremendously expensive. Jane Programmer couldn’t have a computer at home. She had to once again transport herself to her place of work at such-and-such o’clock and push holes into program cards to tell the big slow noisy machine what to do. It was scarcely a profession at all.

But as things are wont to do, the more they changed, the more they stayed the same. Computers got smaller, quieter, and faster. Moreover, they got cheaper. Jane could have a computer at home, but the businesses continued their outdated model of putting human beings into industrial egg crates to work mindlessly at terminals. The work was different. The tools were different. The practices were the same. Dress codes. Time clocks. Methodologies.

Why did we give up our chance at a workplace revolution? Why is it that in an increasingly mobile world, work remains so stationary? Is work somehow an exception to mobilization? Is there a good reason for it? Am I just crazy?

The reason that software companies do what they do is not solely a problem of institutional inertia. Compounding this problem are the twin forces of sampling bias and lock-in.

Sampling bias is a statistics term which refers to a bias in the data of a sample which is nonrandom. To make obvious that means, consider the percentage of right-handed people who write with their right hand. Naturally, you would expect it to be very close to 100%. If one were to sample a group of right-handed people for right-handedness, they would come up with a misleading statistic, that 100% of people sampled were right-handed. If they had sampled truly randomly, they would have found that about 7% of people are left-handed (and perhaps that a very small percentage are ambidextrous).

How does sampling bias affect workplace dynamics? Many workplaces do what they do based on the theory that people work better when they are thus corralled. They believe it makes people work harder and that thus their end result will be better, be delivered sooner, and that the person who did the work will be around to help with it afterward.

There are two serious problems with this. The first is a result of sampling bias. When your data is based entirely on workplaces that operate in the manner that is being studied, it simply doesn’t work. There’s nothing to compare it against. No other model prominently exists, to them.

The other problem is that such a model does in fact exist and it does cery well, and that even these same companies employ it without knowing it. When XYZ Corporation standardizes on Windows and .NET and whatever other proprietary crap they might use, they are paying Microsoft to do work for them. In other words, they are contracting out some of their work (albeit indirectly).

It doesn’t make any difference that Microsoft probably developed the software using the same model internally. Software is software. To the company purchasing it, it is as though they are working with one person named Microsoft outside their company.

It further makes no difference that a company can accomplish a lot more than one person, because as micropayments have demonstrated, if it’s good for big things, it’s good for small things too. Companies routinely use software developed by a handful of people, often operating under small start-up umbrellas.

Clearly, these models can work better. I think a new golden age may be dawning, a return to small businesses working together instead of massive corporations doomed to collapse under their own weight. A time when people will once again go to college to study something because they are fascinated by it, not because they can earn a buck at it.

But that day is not here yet.

The most regrettable thing about all this is that even today, when the Internet is what the Internet is, we continue to waste tons of precious and poisonous fossil fuel moving people around like cattle to be milked for their ideas.

It seems inefficient and even sadistic to cram a person into a box and then pay them to think outside of it.

Happy HumanLight!

Today is the day! Happy HumanLight, everyone!

HumanLight is usually celebrated with a candle lighting ceremony, food, music, and, most importantly, friends and family.

The standard candle lighting ceremony is to light three candles representing hope, compassion, and reason, and talk a little about each one as you go, but this holiday encourages invention. Be creative! That’s what Humanism is all about!

There are some original HumanLight songs that can be sung. Die Gedanken sind frei is a classic. You can find a long list of songs for HumanLight celebrations here.

Whatever holiday you celebrate, may it be a happy one! HumanLight is mine, and it is happy indeed.

rawk

rawk (rawk awesome website kit) is something I started and never finished. In that regard, it is nothing special. My projects have a rate of abandonment matched only by temporary variables. rawk is interesting because I think it may be one of the few things I’ve ever abandoned which I genuinely believe to be worth finishing.

rawk started as a simple means to a simple end. I wanted to make a webcomic. I wanted to use Python to do that. I ended up writing a little library for the backend to handle authentication and presentation and actually I think I struck upon a really good idea. In essence, rawk is a stateful XML formatter that transforms disparate data sources into common output formats by way of an XSLT document.

What do I mean by that? Well, basically, the one and only rawk client I’ve written so far works like this:

  1. comic.cgi handles a request in the format http://example.com/comic.cgi?strip=N
  2. comic.cgi generates an intermediate representation in XML:
    <comic base_url="http://example.com/" strip="N">
      <image>comics/N.jpg</image>
      <next>comic.cgi?strip=N+1</next>
      <prev>comic.cgi?strip=N-1</prev>
    </comic>
  3. comic.cgi hands the request off to rawk as an HTTP POST request:
    POST http://example.com/rawk.cgi?do=format&
         in=comic.in.xsl&out=html.out.xsl HTTP/1.1
    Content-Type: application/xml
    
    <comic base_url="http://example.com/" strip="N">
      ...
    </comic>
  4. rawk responds with the HTML output, which comic.cgi forwards to the requester.

The way rawk works behind the scenes is to use two XSLT documents defined by the in and out query string parameters. In this example, rawk first translates the input into riff (rawk intermediate file format) using comic.in.xsl and then into html using html.out.xsl. This indirection process enables any output and input formats to work together, rather than requiring every module to implement every output format separately in order to support them.

The output format could just as easily be rss, atom, json, plain, or any other output formatter some developer might decide to extend rawk with.

In addition to abstracting presentation, rawk also abstracts authentication services. At the moment, only a simple challenge/response authentication scheme is supported, but because rawk implements this using another modular framework, it too is extensible. The authentication scheme is pretty simple:

  1. The client application requests authentication using a specified scheme and related information:
    POST http://www.example.com/rawk.cgi?do=auth&provider=basic.cgi
    Content-Type: application/xml
    
    <auth>
      <id>example_id</id>
      <pass>example_password</pass>
    </auth>
  2. rawk hands the authentication request off to basic.cgi, which is expected to be the URL of a web service accepting rawk authentication formats. It is expected to return:
    <auth valid="true" [until="{time}"] />
    

    or

    <auth valid="false">
      <reason>{message explaining why the
              authentication was denied}</reason>
    </auth>
  3. rawk forwards this result to the requester, adding a <session> field if the authentication succeeded, which provides a token that rawk keeps track of.

I’m not sure how much point there is to talking about something I never finished. I think I’d like to revisit it. This disconnected internal web services model really enables some neat decoupling that makes something like rawk so potentially powerful. Imagine if your blog, your wiki, your forum software, etc. were all able to work together to share authentication and allow you to traverse them seamlessly. This modular approach would really clean up the mess of having to either pick a platform and live with its deficiencies or force users to have separate credentials for each component of a site, or else have to roll the integration yourself.

There is a very significant line between modular (loosely coupled) and isolated (totally decoupled). The web has long used the latter pattern, when I think the former would really serve it much better.

Google Chart API

As it turns out, the Google Chart API is pretty sweet. You can create just about any chart you might want by passing the parameters in a query string to http://chart.apis.google.com/chart. Demonstration-wise, consider the following Venn diagram of English letters. The overlapping area indicates Y. Spiffy, no?

letter chart

So to use this you just make an <img> tag and set the src attribute to the Chart API URL. In this case, that’d be:

<img src="http://chart.apis.google.com/chart?cht=v&
          chd=t:21,6,0,1,0,0,0&chs=200x200&
          chdl=consonants|vowels&chdlp=b">

I stumbled into this while looking at WordPress plugins. Don’t you love happy accidents?

Commentary

I just realized that commenting has been broken on this blog for quite a while. Whoops! I guess I now have no idea how many people have tried to comment.

What happened was the WP-reCAPTCHA plugin, which I installed to put the brakes on the huge volume of spam I was receiving, became unconfigured somehow and so it stopped working, although it still showed up as though it were working just fine.

This has been fixed!

HumanLight 2009

HumanLight is coming! The 23rd of December is HumanLight, a secular Humanist winter holiday celebrating a hope for a brighter future. There are no real hard-and-fast traditions to HumanLight. It is a kind of generalization of the various festival of lights celebrations that occur at that time of year, like Hanukkah and Kwanzaa. Unlike most winter holidays, though, HumanLight has no religious underpinnings – it is a purely secular celebration of the hopes and dreams of us as human beings.

It’s a beautiful sentiment, but people like totems. Winter holidays tend to focus around totems of some kind, such as the Christmas tree or the menorah of Hanukkah. To that end, I’d like to suggest a totem of sorts for HumanLight:

people_candle

The above is a picture I found online of a human-themed candle holder. It seems to suggest people gathered around a fire for warmth, as people do today, as people have always done, as must our common ancestors have done for the first time, hundreds of thousands of years ago on the African savanna. I can practically hear them exchanging stories by the flickering light, exalting in the smells of cooking and the sounds of laughter, sharing food, company, memories, and dreams.

I think nothing would suit HumanLight better than human-themed candle holders, whether it’s a circle of friends gathered around a single candle or one person hoisting a candle high above their head, or something else. Humanity is proud, hopeful, strong, wise… A candle holder that captures these motifs is a splendid thing to display alight on HumanLight day.

If you like this idea, I encourage you to adopt it as your own tradition! And if someone asks you what it is, you can say, “It’s a HumanLight candle.” Those two little words… What’s that? That is the essence of humanity. Curiosity, above all else, is what makes us what – who – we are. If you can share that with just one person this year, it will have been a good year indeed.

Happy HumanLight, everyone!

Ascension and Narthrallian Politics

Edit: Managed a typo in the title. d’oh! It’s now correct.

The Ascension is the rite by which promising draphen shadecasters are tested by ingesting a poisonous tea brewed from the salivary glands of an uocari. The rite is used to select Narthrall’s leader. the Ascended. Normally, leadership passes by heredity, as the current Ascended is given the right to choose who is to be tested. Most Ascended bear many children in order to assure that at least one of them will be able to survive the test and ascend to leadership.

The Ascended rules until death, or until they voluntarily cede leadership, at which point the Ascendant becomes the Ascended. The Ascendant is the current Ascended-in-waiting. By law, there must always be an Ascendant to prevent the Ascended from dying without having a successor in place. If this does happen, anyone can opt to take the test, and the first survivor is ascended directly.

The Ascension rite came about in order to fight the threat of the Voidborn, creatures that lurk in the shadows and exist in the grim periphery between life and death. They haunt every corner of Narthrall, threatening the draphen constantly. In AY 206, their emperor and all three of his heirs were killed by a Voidborn wraith while hunting.  The people of Narthrall were left without leadership, and created the system of ascension in order to ensure that their leaders would be strong against the Voidborn. Narthrall went without real leadership for two years, during which time the Black Temple ruled. They worked out the details of the Ascension while they awaited a challenger. Many accused the Temple of trying to gain permanent control by making the Ascension impossible to survive.

In AY 208, Demiar Ebonblade became the first to survive the Ascension rite. His twin sister Demira became Ascendant, and ruled for twenty years after his death in AY 349. In AY 360, she relinquished her rule to Ascendant Uona, who ruled until her death in AY 480. As you may note, draphen have long lifespans. They routinely live two or three hundred years when not killed by one of the many hazards of their homeland.

An Ascended or an Ascendant is properly referred to with the title used as a prefix to their family name, e.g. “Ascended Ebonblade,” or simply the title itself. The proper way to refer to a former Ascended who no longer rules is with an ordinal suffix followed by the title, e.g. “Demiar Ebonblade, First Ascended” or “Culari Uona, Third Ascended.”

The Ascended has authoritative command over much of Narthrall, but social and economic issues are handled by delegates whom the Ascendant, not the Ascended, appoints. Powers are divided to a degree, but generally the government is kept small and simple as Narthrall is a small city-state and large governmental structures would not be of much use. Instead, Narthrallians prefer a small, agile government that moves well with the people’s needs, and they are not hesitant to dethrone a tyrant at swordpoint.

The Ascension rite itself is fairly simple. The Ascended and Ascendant-hopeful gather at the Black Temple, where the tea is brewed by the high priest. The tea is made by drying the salivary glands (where the Void Aether poison is produced) of one uocari and steeping them in a special obsidian bowl used only for that purpose. After a certain amount of time, the glands are removed and the entire bowl must be drunk to ascend. Most turn back at the last moment. Many others die instantly. Others suffer for hours before death comes. The few that survive skirt the boundaries of death for weeks. They are free to seek medical aid, as it is well-known that there is nothing that can reverse the effects of the Void toxin, but they all suffer.

All but one, anyway.

In AY 1270, the current Ascendant, Uodar Hecal, drank the brew as though it were ordinary water, and walked unaided to the Palace to the astonishment of all except Ascended Mela Nightshade, who knew Uodar had lived in the deep caves where the uocari breed all his life, and had already developed the tolerance the tea provides.

Today, Ascended Nightshade and Ascendant Hecal hold fast the traditions of Narthrall set down by the Ebonblade twins over a millennium ago, and Narthrall is well-equipped to continue its constant fight against the Voidborn.

Fun facts:

Draphen surnames are sometimes rendered as English words when they are modern Narthrallian, e.g. “Ebonblade”rather than Old Draphic constructions like “Demiar”.

This is deliberately done to parallel Western names, e.g. “Jane Smith” in which “Jane” is not an English word but “Smith” is. For the curious, Demiar and Demira’s surname in Narthrallian is Utenancuor, which more literally translates to “slient black sword”. “Ebonblade” is rendered artistically ’cause, hey, it sounds cool.

In fact, “Narthrall” is itself a combination of these two kinds of names; “thrall” is the English word referring to slavery and “Nar” is an old Draphic prefix for an empire. The Narthrallians (a word which also incorporates English suffixes) took that name because they felt enslaved by the threats of the world around them. Hence, “slave-kingdom.”

So no whining about naming inconsistencies, you hear?

Demystifying Magic

This post will begin the task of explaining how magic works in Delgar. This is not a discussion of game mechanics or rules, but one of concepts and story.

Magic is most often thought of in a cause-and-effect manner. Magic is thought of as a characterization of instances wherein spells of its nature provoke changes in the natural state. This is exceedingly myopic. To say that the average person in Delgar is ignorant of the way magic works is, to be sure, a grave understatement in the least. Even those who practice it rarely truly understand it.

But let’s not trouble ourselves with what magic is not when we are endeavoring to ascertain what it is.

The first step in understanding the magic of Delgar is to understand that it is not, strictly speaking, a force. It is a living, palpable thing that can be somewhere or not. The magic of Delgar is native to Delgar, and it does not extend far beyond the world itself. Just as water flows to fill its basin, so does magic flow over the land, growing weak at times and strong at others.

This flowing magical energy is called Aether. It is the living, breathing incarnation of chaos, foaming on the banks of the material world, rushing around some places and pooling in others, a wind of energy drawn to places where its influence is most appreciated, and circumnavigating those places where it is rarely drawn. The flows of Aether form a network of magical energy buzzing along invisible currents, carrying the wills of magi in its wake.

Where these flows join, the greatest magi are born. One such place is an otherwise desolate crag on the north coast of Narthrall where the Obsidian Tower claws at the harsh, dark sky. Here, the Void stream joins the Trans-Garadic Shade flow, creating one of the most dangerous persistent Aether storms in the world. It was in this place that Demiar Ebonblade was born, raised, and taught the depths of the dark magics the draphen covet.

Araxian magic theory represents the most complete understanding of the workings of this mysterious energy. It works by building up from simple atomic concepts rather than the traditional approach of dividing spells into schools. In this, it hits much nearer the mark of understanding just what is going on when a magus bends the Aether flows to her whim.

The theory consists of the so-called Aspects, Axioms, and Axes. (The fact that these three words all begin with “A” is incidental – bear in mind that these are the English words for them, and no one on Delgar speaks English.) An Aspect is a form which a spell takes. For instance, the Guardian’s Aspect is defensive, while the Archer’s Aspect is offensive. The two Axioms are Order and Chaos. The Axes are Energy, Luminescence, and Substance. The combination of an Axiom and an Axis produces a foundational element – Earth, Air, Fire, Ice, Light, or Shadow.

The type of spellcaster a person is is related to what components they invoke in spell creation. A person who binds all three – an Aspect, and Axiom, and an Axis – together to form a specific spell is galled a magus, plural magi, or similarly mage, magicker, etc. A caster who manipulates elements directly, whose spells have no Aspect, is called an elementalist, a shaman, or a feral. Ferals are widely feared, because their magic is thought to be uncontrolled and changes shape fluidly during channeling. Specialists are casters whose magics lack an Axiom, being bound to Balance, between the two extremes of Order and Chaos. Healers, druids, and enchanters are all specialists. Many more exist.

The last, and most extraordinary caster type is the almost-mythical savant. A savant, also called a conduit or a channeler, is exceedingly dangerous, as typically they are utterly overwhelmed by their powers and have incredible capacity for destruction. Savants channel an Axiom directly, having neither Aspect nor Axis to their invocations. A channeler is said to be as likely to turn a drought into a flood as they are to turn a village into a crater. Most savants unintentionally self-immolate at some point, typically the instant the floodgates of their power are opened. The last savant in memory who was able to control her powers was known simply as The Nameless Girl. She was responsible for returning Chaos magic to Delgar after the Great Imbalance caused by the Rule of Order, enforced by Eversummer Tower for centuries. She single-handedly leveled the Tower and its armies and exposed the dangers of imbalance caused by the Rule.

Balance is a central concept to Delgar magic. All invocations must ultimately be balanced, and when significant imbalances arise, savants are born. A magus must balance his or her own spells, as their lack of axiomatic and axial affinity means that they will suffer ill opposite effects otherwise. For instance, a magus who casts an unbalanced fireball might suffer hypothermia or frostbite. They trade an increased risk of personal harm and a decreased overall ability to invoke magic for increased flexibility. An elementalist does not balance his or her own magic – instead, an elementalist’s magic is balanced by other elementalists of opposing affinity.

When the overall balance of magic gets pushed too far in one direction or the other, it creates great potential energy in the opposite direction and decreases the potential in its own. When Chaos mages were hunted to extinction in AY 700-1200, the powers of Order magic, as they were used without balance, waned to the point that the powers of magi from centuries prior began to pass into the realm of mythology. New students at the Eversummer Tower could scarcely conjure a light to read by. Dependence on ancient magical artifacts became widespread. Just as a bowstring becomes harder and harder to stretch as it is stretched to its limit, so does magic of one axiom wane as it strays from balance.

As the overall power of one axiom wanes, the other builds proportionally. Those who feared Chaos magic so were, in effect, directly empowering it. Their actions, superficially in opposition to Chaos magic, were fueling the fire that would eventually consume them. When the Nameless Girl managed to survive to rein her powers, she inherited half a millennium of stored Chaos energies. Stopping her was a task all the world was not capable of. She did more than destroy Eversummer Tower, though. She created Towers all over the world to train local casters in the arcane arts. Today, the world of Delgar is again in a state of relative balance, and few savants are born.

In most of the world, Shadow magic is not known. Narthrall is one of few places where Shadow magic is practiced openly, and the draphen are often seen as evil as a result. The draphen rely on Shadow magic to defend themselves against the monsters that inhabit Narthrall. Because its opposite, Light, is practiced freely in most of the world, the draphen gain a considerable advantage in power due to the imbalance. In addition, Narthrall is bathed in the Trans-Garadic Shade flow, which is the strongest Shadow-aligned Aether stream in the world. In the rest of the world, so-called shadecasters are the closest thing to a savant most people will ever meet. Most are thieves or assassins, operating on a bare understanding of the craft due to its obscurity and prohibition.

In Ao Gin, the desert city where the luminants practice their art and light-weaving is as common as basket-weaving, the Ao Delta spreads over the parched landscape. These streams of Light Aether empower Ao Gin’s world-renown healers to perform their amazing feats of restoration. The light and fire shows put on at night by the luminants of the Incandescent Tower draw travelers from all over Garad and beyond.

This post is still pretty raw, but I’ve been cooking it so long that I figure I should get it out there anyway. I’ll leave it where it is now and work on expanding these ideas in subsequent posts.