Season of the Witch

Season of the Witch… How on earth do I review this…

Let me try to put it in perspective, but that requires a little bit of setup.

I make no secret that I play pen and paper RPG’s from time to time. Explanation for non-geeks from US: I’m talking about D&D type stuff. It’s just that D&D is merely one of many games that exist out there – and just happens to be the only one that had any kind of consistent exposure in American mainstream media, and also the one that I have never actually played. Most of these things work the same though – you get together with friends, sit around the table, roll dice and “role play”. If you have never head of this, go look it up – it’s fun.

Why do I bring this up? Because this movie reminds me of a straight up Role Playing campaign. In fact, while watching it I had a strong sense of déjà vu. I’m quite sure I have actually played something remarkably similar at least once… Or twice.

Season of the Witch

The plot is pretty much a standard medieval RP fare: an evil witch has cursed the land with a plague. The local authority have captured a young, raven haired maiden whom they suspect of being responsible for said malaise. To reverse the curse however the witch has to be taken to a remote mountaintop monastery where the monks posses the last copy of a sacred book of rituals that can help to render her powerless, and nullify all the evil she has done.

Naturally the trip to the monastery is an arduous six day journey. Our heroes however decided to cut it in half, by cutting through the Redwood Forest. Cue everyone in the room gasping in horror.

“Gasp! Wormwood Forest? But sire, one does not just “cut through” the Wormwood Forest. It is a place of great evil!”

The player characters just smirk, knowing that a forest of pure evil means only one thing: XP and loot. Ok, two things: XP, loot and maybe side quests. Three things. Whatever.

Normally, the job of escorting witches to remote monasteries is the job of local city guards, or hired soldiers from the retinue of some prominent nobleman that would like to make a nice gesture and get in good graces with the church. But, the city is ravaged by a plague and there is apparently no people to spare. So instead the task is given to a rag-tag group of misfits:

  1. Two former crusading knights who deserted their posts, and were passing through the city only to be conveniently arrested just in time for this mission.
  2. A squire hoping that this mission will gain him enough experience points to level up and take up the Knight prestige class reputation to become a full fledged knight
  3. A shifty cleric priest who knows medicine, and incantations against evil
  4. A crossbow wielding rogue who will act as a guide
  5. An NPC nobleman who gets killed in the first random encounter to establish that the mission is Serious Business

Now, a good GM would make the witch a bit ambiguous character – make her act normally, and pretend to be falsely accused, scared girl and try to convince the PC’s that they should disobey the corrupted church officials and free her. But that does not happen. When the heroes go to fetch her from the dungeon, she immediately manifests her magical powers by single handedly knocking out several guards. She only stops struggling when the NPC nobleman very loudly exclaims:

“Guise, we need to take her to the Wwhatsitsname Monastery!”

Everyone sort of looks at him and goes:

“Yeah, we know – we’ve been discussing it for the past 15 minutes. Why would you say that now?”

The witch stops struggling and asks “Wait, did you guys say Whatsitsname Monastery?”, and upon confirming that she decides to be docile. Ron Perlman’s character mumbles something about hating forced plot twists and socks her upon the head to make sure she does not make any trouble. Then they are off on their journey.

Then they have a few random encounters. First night the witch uses a charm spell to get out of her cage, and leads them to some nearby cave. There party stupidly splits up chasing shadows, and inadvertently they cut down their nobleman NPC.

Next, they find a classic RPG adventure location: an old, decrepit, hanging bridge over a chasm. They have to carefully traverse it on foot, one by one, and then devise a pulley system to get their cage cart to the other side. Naturally the bridge collapses as soon as they are on the other side, so they can’t back out. This is how the GM railroads them into traversing the dreaded Wormwood Forest.

What’s so scary about that place? Apparently it has a metric ton of wolves per square inch. Tho make things worse the witch has some sort of “Wolf Call” spell she keeps casting. The party hacks trough wave after wave of these animals until they are all low on hit points, and realize the GM will just keep piling on more wolves until they move. So they make a mad dash through the forest.

At some point one of the PC’s have an argument about killing the girl. The crusader played by Nicholas Cage is really tempted, but then he remembers he rolled a Lawful Good character, and this would totally violate his alignment. Stephen Gragam’s rogue points out that his character is Chaotic Neutral so he can totally do it without repercussions. Ron Perlman looks up the rules, and realizes that as Lawful Good knight he would be forced to stop him so they shelve the idea.

Eventually they get to the monastery, only to find out a pile of dead monks who succumbed to the plague. The girl just smiles and goes:

“Ha! I have fooled you. I’m not a witch. I’m actually a demon and I wanted to be taken to this monastery so I could destroy that sacred book that has the incantation which can banish me.”

Before she can even finish the sentence, and before everyone else can roll their eyes and mouth “no shit, we knew this since the dungeon fight” the priest yells out:

“I read the book out loud. How many XP we get for banishing a daemon?”

The GM surprised by such quick reaction makes the daemon raise all the dead monks as zombies in an effort to stop the incantation. So there is lots of fighting. It’s a near TPK, but in the end the daemon is banished and everything ends well.

Does Season of the Witch work as a RPG scenario? Yup. Definitely. For one, the extended intro does a really good job of bringing the rag-tag group together. Most character start with clear motives and reasons to undertake the quest: the deserters want to be redeemed in the eyes of the church, the squire wants to prove himself, the priest wants to make sure the plague is ended while the rogue wants his freedom. It is much better than the usual “y’all meet in a tavern, and some guy hires you” routine. The actual scenario mixes up random encounters – some are environmental (bridge), some are pure combat (wolves, zombie monks) and some are tricks and illusions (the cave). Plus the entire idea of escorting, and protecting the final boss to the place where you are going to fight him, is a fun spin on an old and tired adventure formula. Not a new one, mind you, but a rather under-used one.

Does Season of the Witch work as a movie? No, not really. Its simplistic, un-imaginative and sort of dull. You know that you are in trouble as a writer, if your script can be adopted as a medieval RPG adventure with almost no changes. I’ll be frank – if I didn’t know better, I would be convinced that this film was a direct-to-dvd adaptation of a popular a video game. That’s about the quality you get when you watch it.

None of the characters are particularly likeable. Nicholas Cage is once again out of his element. I honestly have no clue why people keep casting him in these classic action hero roles which are obviously not his strong suite. Ron Perlman has surprisingly few lines, and mostly plays the role of the stoic, silent sidekick. Claire Foy hasn’t got a lick of subtlety playing the possessed girl telegraphing creepy, shifty smiles at every occasion – though I probably ought to blame the director for this.

The final twist is not even a twist. Not in a movie at least. In an RPG, logistics of fighting a daemon are different than those of fighting a witch, and so are the rewards. So the players may be pleasantly surprised by the turn of events, suddenly making their adventure more epic. But in a movie this just does not work. The girl was evil to begin with. She manifested magical powers before. To find out she is possessed by an evil thing is just not a big reveal – at least not such a shattering realization as they set it up to be.

I really wish I could re-cut this movie, adding another layer to it: modern day geeks playing an RPG at a table. Every once in a while we would cut away from the action, and show the players discussing strategies, bickering about the rules and quoting Monty Python. Now that would be an interesting film – because as far as I can tell, a straight-up portrayal of an RPG session (not a pastiche or parody) was never actually done by Hollywood. Actually, this would even work as an independent project – with regular people playing the real-world counterparts of Nicholas Cage, Ron Perlman and etc.. After all, when you play, your character never really looks like you. He looks like that picture of a knight/wizard you downloaded from the internet, and pasted onto your character sheet.

Sadly, we would have to wait about a 100 years or more to be able to do such a thing. US copyright law ensures that anything that is published during your lifetime does not slip into public domain until many decades after your death.

Posted in movies | Tagged | 2 Comments

Building your first Jekyll site in 5 minutes

Back in December, I wrote a short post about building websites without server side includes. I used AJAX and magical hasbang url’s to get around the fact that the hosting space I was given on the university servers did not support any kind of scripting. I basically outsourced my scripting to the client side – it happens dynamically in the browser. Unfortunately, my solution lacks in accessibility. It’s still possible to navigate my site without JavaScript but the experience is diminished.

There is alternate way to do this. A proper way if you will – one that still allows you to keep your design templates separate from your data, but one which will produce great looking static html sites with no scripting required. One that moves the heavy lifting (includes, imports, processing, etc..) from run time, to compile time.

Let’s think about this for a second – the main reason we use server side (or client side like in my example) scripting for web design is so that we don’t have to copy and paste the same headers, footers, and css references into every single html file. We design a great looking template, with blank holes. Then at run time, we use some magic to import content into these holes to generate “nice” HTML files that are then served to the user. There is technically no reason why we couldn’t do all that importing and generating at the design stage though. We could easily pre-process our page just before deployment, and then upload only the resulting static HTML to the server. Granted, this is not going to work for pages that accept and process user input. But it is fine for a simple home page, or a blog. All you need is a good pre-processing tool.

That tool is Jekyll.

What the hell is Jekyll, you ask?

Jekyll is a nifty little Ruby gem, that will take your template pages, your content data and transform them into a set of static HTML files that can be deployed anywhere. In other words, it is a “website compiler”.

How does it work, you ask?

Do you really want to know the details? Do you care? Here is the source code. Go enlighten yourself. Everyone else, here is the functional explanation:

  1. You make a folder
  2. In that folder you put some files
  3. You run Jekyll
  4. A static HTML website pops out in _site directory

That’s about as complicated it gets. The main problem with Jekyll is step #2. Understanding what files to put and where, requires you to essentially RTFM and actually understand how the damn thing works. Who the hell one wants to do that, though? Similarly, most online tutorials I have seen dive in too deep, and try to show you how to create a functional site right away and it quickly becomes overwhelming. I’m not going to do that. I will show you how to create a very shitty, basic website in five minutes. A “Hello World” of Jekyll if you will.

First let’s grab Jekyll and prerequisites. Some of these are native extensions that have to be actually compiled on your system. This will be done automatically by the installer, but not all systems have the required compilers and header files. So first thing you want to do is to install the Ruby Dev Kit. If you are on Debian/Ubunty system you can just do:

sudo apt-get install ruby1.8-dev

If you are on Windows, grab the DevKit 7z file from the Ruby Installer website and then unzip it somewhere easy to find (eg. C:\RubyDevKit). Once you do that, here is how you install it:

cd \RubyDevKit
ruby dk.rb init
ruby dk.rb install

What does this do? It patches your Ruby installation, but honestly – we don’t care. It makes installation of Jekyll work. If you are inquisitive, you can read about the installation process here. Once you satisfied your curiosity, run the following command:

gem install jekyll

It will download and install Jekyll and all the prerequisites. Just so that we are clear, we are not counting the installation time into the 5 minutes time limit. If you want to time yourself, start your stopwatch now.

Let’s create a new directory for our website and call it mypage. Inside of that directory we create bunch of sub-directories like this:

mkdir mypage
cd mypage
touch _config.yml
mkdir _layouts
mkdir _posts
mkdir _site

Jekyll actually expects this folder structure to be present when you run it. The _layouts is where we are gonna put our template files – you know, HTML with holes in it. _posts is where we dump our content files – for example individual blog posts. _site is where Jekyll will dump out our “compiled” site. Easy enough so far, right?

Let’s make templates:

cd _layouts/
vim default.html

This file is going to be our main template with nice headers, footers, navigation sidebar and etc. Or rather would be, but we only have 5 minutes so instead I will make it this:

    <html>
    <head>
	    <title>My Jekyll Test</title>
    </head>
    <body>
	    {{ content }}
    </body>
    </html>

The {{ content }} tag is what tells Jekyll to create a hole in the layout that will be later populated by some content. Namely, by the stuff from your _posts directory. When you pull that data in, you sometimes will want to style it to your liking. Put it in a div, give it a nice heading, perhaps stick a creation date somewhere, etc. So let’s create another template for individual posts:

vim post.html

The contents are as follows:

    ---
    layout: default
    ---
 
    <h2>{{ page.title }}</h2>
 
	    {{ content }}

The bizarre thing up top is so called YAML Front Matter. Jekyll will rip it off, and use it to figure out what to do with this file. Here we are basically saying “use the default template”. When you compile, Jekyll will take this and stick it into the “content hole” on the default template. Note that the post template has two “holes” of it’s own that will be populated by an actual content page which we are going to create next:

cd ..
cd _posts/
vim 2012-01-18-hello.markdown

There are two points of interests here:

  1. The file name must start with a date in a YYYY-MM-DD format followed by a title. This is how you tell Jekyll when this post was published. It’s like that by design, to make processing fast and simple. Don’t question it. Just do it.
  2. Yes, this is a markdown file. You can also use Textile, or plain HTML. It’s up to you. Jekyll is fine with either one of these. Using a non HTML markup language makes content creation slightly more streamlined as it really helps to separate content from presentation.

Here are the contents of my file:

    ---
    layout: post
    title: Hello
    ---
 
    Hello World!

Once again, we have some Front Matter up top. It tells Jekyll that what follows is to be wrapped up into the post template (which will then be wrapped up in default template) and allows you to specify an optional title attribute. If you scroll up to our post.html snippet, you will see this attribute accessed via {{ post.title }}. Neat, eh?

We are almost done. The last thing we need is a landing page:

cd ..
vim index.html

This is essentially going to be the “hello, welcome to my page” type thing. It’s up to you what you put here, but for the sake of simplicity I decided to make my front page to be an itemized list of all the published posts:

    ---
    layout: default
    title: Home
    ---
 
    <ul>
	    {% for post in site.posts %}
		<li><a href="{{ post.url }}">{{ post.title }}</a> 
		({{ post.date | date_to_string}})</li>
	    {% endfor %}
    </ul>

This ought to be more or less self explanatory. If you can’t read a generic for loop notation then I really can’t help you here. The last thing you want to do is to compile:

jekyll

Yep, that’s all you need to do. Actually, I recommend running this instead:

jekyll --server

It will create a mini-server on your machine, that you can access by going to http://localhost:4000 and inspect your creation.

That’s it. That’s all there is to it. You now have a fully functional Jekyll site. Mess around with it. Add another file in the _posts directory and see how it is linked on the front page. Better yet, grab a free CSS template and use it as your default.html (after adding the {{content}} tag inside) for an instant, gorgeous looking web page.

If you want something that look at least semi-presentable out of the box, you can check out my Simple Jekyll Site layout on Github. It is a very, very basic two column layout with minimalistic design that lends itself to easy extension. It is already formatted as a Jekyll site so all you need to do is to tweak a few of the links and deploy.

Seasoned Jekyll users, have you any advice for those just starting with it? Any gotchas to look out for, or life saving tips? Let us know in the comments.

Posted in programming | Tagged | 4 Comments

SOPA: Post Mortem

I haven’t been talking all that much about SOPA on this blog because my world was a bit over saturated with it. More or less every news site and blog I frequent was freaking out about it (and for a good reason). The geek community was on top of it, and so were my readers. So I opted to take the “business as usual” approach and deliver you my usual fare of entertainment, instead of beating the same dead horse as everyone else.

This is also why Terminally Incoherent did not go black on Jan 18. It’s not that I wasn’t supporting the cause. If you follow me on Twitter you know I have been very vocal about my hate for SOPA and PIPA bills. In fact, I did have an anti SOPA overlay script up on the page for one day sometime in December and I don’t think anyone noticed, because no one has ever mentioned it. My audience is just too smart – between the RSS feed readers and add blockers it’s a wonder my AdSense account is getting any money at all.

I thought about participating in the blackout long and hard and decided there was just no point to do it. The entire purpose of the Jan 18 blackout was to spread awareness. Before, the anti-SOPA rhetoric was mostly contained withing tech-savvy communities. Places like Reddit or Hacker News were the vocal hot spots, boiling with seething rage, but mainstream news outlets mostly ignored SOPA leaving the mainstream clueless and ignorant. Blacking out popular websites not only delivered the message straight to the previously oblivious end users, but also forced mass media to finally start covering the controversial bills (often in disingenuous damage control mode). And as such it was an overwhelming success.

We have won. We geeks have put our foot down and turned the tide. We have reached out to the general public, shook them out of their usual lethargic ambivalence and made them think. We managed to scare the living shit out of the bunch of greedy politico’s who have previously been motivated only by cold hard cash:

SOPA support before and after the blackout

SOPA support before and after the blackout

Never before have I seen such a display of solidarity out on the World Wild Web and it made me proud to be a Netizen and an Internaut. I almost felt guilty not blacking out my site. But then again, whom would it convince? Was there anyone I have not reached with my Twitter ramblings and my other SOPA post? Were there any Terminalists out there that really needed to be made aware of the problem? I don’t think so. So while blacking out Terminally Incoherent would have been a nice gesture, it would also have been a completely empty one. Now, if I was running any kind of mainstream popular site I would have shut it down.

The point is that we have won. SOPA and PIPA got shelved, and the politicians were taught a lesson that the the internet has simply too much of an impact on all facets of modern life – from online commerce, to freedom of expression – to be “patched” with some rushed legislation written by their paymasters from the entertainment industry. Whether or not they will remember this lesson when they are up for another round of campaign funding remains to be seen. But we have won an important battle last week, and that is something to be celebrated.

While we were still drunk with our victory, the feds exacted a terrible revenge and took down Megaupload – the biggest “cyber locker” on the internet, and the prime target of SOPA and PIPA. They just took it the fuck down. It did not matter that it was a foreign rogue site that was previously untouchable. It did not matter that the servers and the employees of the company were scattered throughout New Zealand, Europe and Asia. The long arm of US law reach over, across the international borders, over the oceans and brought down the ban-hammer upon it.

All we could do was watch, slack jawed and bewildered. The entertainment industry and their hand-puppet senators claimed that SOPA and PIPA were necessary because of sites like Megaupload. They needed these laws passed to effectively deal with such threats to their intellectual property. And then, just as we repelled their legislation on the grounds of allowing for overbearing censorship, the government turned around and winked one of entertainment industry’s to-ten enemies out of existence. And it did it without any draconian laws, proving that we have been correct fighting against it. It invalidated one of the key arguments for SOPA.

But they did it at the cost of shutting down a pretty cool website. Now, I can’t really say I have used Megaupload much, or for legit purposes, but I think the nuclear strike against them was a bit much. Especially since the company was taking steps to clean up it’s image, and limit the rampant piracy using automated take down tools.

Ars Technica published pretty good overview of the charges levied against the company, and some of them are legitimate. It seems that the founders were a little bit too cocky, and a little bit too forward in their internal communications giving the feds ample proof that they purposefully dragged their feet on copyright issues, and bragged about profits made on pirated content. They purposefully configured their system in such a way that would make complete removal of an offending file difficult, and re-upping it easy. So while Megaupload was guilty of profiting from piracy, the take down sets up a nasty precedence.

It clearly shows that there is no such thing as safe harbors and that even foreign sites can be taken down if the user-submitted content you host is found infringing on US copyright and the entertainment industry is not happy with your take-down performance. This does not bode well for social media and information exchange hubs that allow user submitted content. Most user driven sites have to deal with a fair share of infringement perpetuated by their users, and now having lost their precious censorship bills the MPAA and RIAA will be bearing down on the fed to “pull off megaupload” on all kinds of other services.

What is going to be the next target? Rapidshare maybe? Or perhaps Youtube. After all, Youtube is full of potential IP infractions. Other than spoiled and corrupt management, what makes Youtube different from Megapload? Mostly their compliance to the unreasonable demands of the entertainment industry. Google, often to the chagrin of it’s users, promptly removes all videos that are reported to be infringing, without checking whether the report is legit or not. They also use automated filters to match and detect copyrighted material. They have spent quite a bit of money and resources to build these reporting and filtering systems, and yet the copyright holders still whine and cry that it’s not enough. Google has deep pockets, but constantly diverting resources to keep entertainment industry lawyers at bay must be a financial drain even on them. Imagine how taxing this must be on new social startups.

In the post megaupload world, all smaller user-submitted media sites can be vulnerable to legal actions against them if they do not not perform to the entertainment industry’s expectations. The brutal take down of the world’s largest cyber locker proves that show of good will, and having anti-piracy systems in place is not enough. These systems must also be efficient, otherwise you may be accused of conspiracy to profit on infringement.

The problem with that is that no one has ever created such a system that works. Google, with all it’s resources and brain power is only able to filter a small fraction of infringing files, and it can only take down videos as fast as the copyright holders can report them. Blocking all infringing content is just something that we do not know how to do – at least not with our current technology. But now, your performance at attempting to do the impossible may be what determines whether or not your site is found to be engaging in criminal activity. And this is disconcerting.

So while we won on SOPA, there might still be hard times ahead. Especially since the entertainment industry is not going to give up that easily. The politicians might have been reminded who they really work for on the 18′th but I doubt they will be able to resist campaign contributions next time they are up for re-election. We know it, and the copyright moguls know it. In fact, the MPAA director was so bold, as to issue a public statement threatening to withdraw financial support from the politicians who don’t do as they are told.

It’s like they are not even playing coy anymore. MPAA is boldly asserting their ownership of US government, PR be damned. The sudden reversal of SOPA support in congress has really pissed them off and they are itching for round two. And I guess you can’t blame them – the whole SOPA fiasco have probably just cost them few million dollars in bribes political campaign contributions and now they have nothing to show for that money. I’m not sure what their next move is going to be, but it may involve the rather obscure bill named H.R.1981 or “Protecting Children From Internet Pornographers Act of 2011″. They will push hard to tuck most, if not all SOPA and PIPA provisions into that bill, knowing full well no one in their right mind will want to vote against it. Publicly opposing such legislation is virtually a political suicide, and if MPAA manages to get their censorship language added into it, we will have a very, very hard battle ahead of us.

If PCIP becomes the new SOPA, a blackout may not be enough. So we must remain vigilant, and keep tabs on our congress critters like we never have before. The war is far from over, and despite our recent triumph the cards may be stacked against us.

Posted in news & current events | 13 Comments