In this post I will discuss the following:
First, let's discuss the project that I was working on which led to this work. I wanted to do a program that manages the devices on my network. There is a router and several Wi-fi extenders, all of them with an HTTP interface. I wanted to know when they are reachable through the network, connect to the HTTP interface and gather data or perform actions like resetting the device and so on. In order to see if they were reachable, I was pinging them every second, so I thought I would like to see the evolution of the ping roundtrip time in a visual way, therefore the chart.

All of the values that I was displaying and all the commands that were available on the interface were using MVVM, the pattern developed by Microsoft for a better separation of presentation and data model. MVVM presents some difficulties, though, since most of the time directly getting the data and displaying it is more efficient and easier to do. It does allow for fantastic flexibility and good maintenance of the project. So, since I am a fan, I wanted to draw this chart via MVVM as well.

The MVVM chart


In order to do that I needed a viewmodel that abstracted the chart. Since I had several devices, each of them with a collection of pings containing the time of the ping and a nullable rountrip value, it would have been way too annoying to try to chart the values directly, so on the main viewmodel I created a specific chart model. This model contained a BindingList of items of various custom types: GraphLines, GraphStarts and GraphEnds. When the ping failed I added an "end" to the model. When the ping succeeded after a fail, I would add a "start". And when the ping was continuously successful, I would add a "line" connecting the previous ping to the current one.

So, in order to draw anything, I used a Canvas. The Canvas is a very simple container that can position stuff at absolute values. The first thing you need to realize is that it is not a vectorial type of container, so when you draw something on a small canvas and you resize the window, everything remains at the same position and size. The other thing that quickly becomes apparent is that there are various ways of positioning objects on the Canvas. The attached properties Canvas.Top, Canvas.Left, Canvas.Bottom and Canvas.Right can define the position of TextBlocks or other elements, including Rectangles and Ellipses. Lines, on the other hand, whether simple Line objects or something more complex, like Paths, are positioned using Points and X,Y coordinates. This would come to bite me on the ass later on.

WPF is very flexible. In order to add things to a Canvas, all one needs to do is to declare an ItemsControl and then redefine the ItemsPanel property to be a Canvas. The way objects are represented on the Canvas can be defined via DataTemplates, in my case one for each type of item. So I created a template that contains a Line for the GraphLine type, another for GraphStart, containing a Rectangle, and one for GraphEnd, containing an Ellipse. Forget the syntax right now, first I had to solve the problem of the different ways to position something on a Canvas and the ItemsControl. You see, in order to position a Line, all you have to do is set the X1,Y1,X2,Y2 properties, but for Ellipses and Rectangles you need to set Canvas.Left and Canvas.Top. The problem with the ItemsControl is that for each of these not primitive objects it creates a ContentPresenter to encapsulate them, therefore setting Canvas properties to the inner shape did nothing. The solution is to set a style for the ContentPresenter and set the Canvas properties on it. Surprise! Then the Lines stop working! The solution was to add several Canvases, one for the lines and one for the rectangles and ellipses, as ItemsControls, and one for static text and stuff like that, all in the same Container so that they overlap. But it worked. Then I started the program and watched the chart being displayed.

<ItemsControl ItemsSource="{Binding GraphItems}" Name="GraphLines">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type local:GraphLine}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type local:GraphSpline}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type local:GraphStart}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type local:GraphEnd}">
...
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>

But how did I calculate the coordinates of all of these items? As I said, the Canvas is a pretty static thing. If I resized the window, the items would remain in the same position and with the same size. Also, the viewmodel didn't have (and shouldn't have had) an idea of the actual size of the drawing Canvas. My solution was to use a MultiBinding with a custom converter. It would get two values, one would be a computed double value, from 0 to 1, that represented either vertical or horizontal position, the second would be the value of the dimension, the height or the width. The result would be, of course, the product of the two values. Luckily WPF has a very flexible Binding syntax, so it was no problem two define a value from the viewmodel and a value of the ActualWidth or ActualHeight properties of the Canvas object. This resulted in a very nice graph that adapted to my resizing of the window in real time without me having to do anything.

<Line Stroke="{Binding Ip, Converter={StaticResource TextToBrushConverter}}" StrokeThickness="2" >
<Line.X1>
<MultiBinding Converter="{StaticResource ResizeConverter}">
<Binding Path="X"/>
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type Canvas}}"/>
</MultiBinding>
</Line.X1>
<Line.Y1>
<MultiBinding Converter="{StaticResource ResizeConverter}">
<Binding Path="Y"/>
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type Canvas}}"/>
</MultiBinding>
</Line.Y1>
<Line.X2>
<MultiBinding Converter="{StaticResource ResizeConverter}">
<Binding Path="X2"/>
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type Canvas}}"/>
</MultiBinding>
</Line.X2>
<Line.Y2>
<MultiBinding Converter="{StaticResource ResizeConverter}">
<Binding Path="Y2"/>
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type Canvas}}"/>
</MultiBinding>
</Line.Y2>
</Line>

Performance


The next issue in the pipeline was performance. Clearing the GraphItems collection and adding new items to it was very slow and presented some ugly visual artifacts. For this I used the inner mechanisms of the BindingList object. First I set the RaiseListChangedEvents property to false, so that the list would not fire any events to the WPF mechanism. Then I cleared the list,added every newly calculated GraphItem to the list, set RaiseListChangedEvents back to true and fired a ListChanged event forcefully using the (badly named) ResetBindings method.

GraphItems.RaiseListChangedEvents = false;
GraphItems.Clear();
foreach (var item in items)
{
GraphItems.Add(item);
}
GraphItems.RaiseListChangedEvents = true;
this.Dispatcher.Invoke(GraphItems.ResetBindings, DispatcherPriority.Normal);

All good, but then the overall performance of the application was abysmal. I would move to another program, then switch back to it and it wouldn't show up, or I would press a button and it wouldn't show up pressed, or the values of the data from the devices were not displayed sometimes. It wasn't that it used too much CPU or memory or anything like that, it was just a very sluggish user experience.

First idea was that the binding to the parent Canvas object to get the ActualWidth and the ActualHeight values was slow. I was right. In order to test this I removed any bindings to the Canvas and instead set the values directly to the converter, via the SizeChanged event of the Canvas object. This made things slightly faster, but also made them look weird, since I would resize the window and only see a difference after SizeChanged fired. The performance gain was significant, but not that large. The UI was still sluggish.

void Canvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
var resizeConverter = (ResizeConverter)this.Resources["ResizeConverter"];
resizeConverter.Size = e.NewSize;
}

Now, you would ask yourself, what is the purpose of my using this ItemsControl and Canvas combination? It is in order to use the MVVM pattern. Just drawing directly on the Canvas would violate that, wouldn't it? Or would it? In this case the binding of the values in the viewmodel to the chart is one way. I only need to display stuff and nothing that happens on the chart UI changes the viewmodel. Also, since I chose to recreate all the chart items at every turn, it just means I am delegating clearing the Canvas and drawing everything to the WPF mechanism, nothing more. In fact, if I would just subscribe to the GraphItems ListChanged event I would be able to draw everything and not really have any strong link between data model and presentation. So I did that. The side effect of this was that I didn't need two ItemsControl/Canvas instances. I only needed one Canvas and I would add items to it as I saw fit.

Of course, the smart reader that you are, you realized that I need to know the type of the viewmodel in order to subscribe to the items list. The very correct way to do it would have been to encapsulate the Canvas into a control that would have received a list of items as a model and it would have handled all the drawing itself. It makes sense: you don't want a Canvas, what you really want is a Chart component that handles everything for you. I leave that to the enterprising reader, since it is outside the scope of this post.

Another thing that I did not do and it probably made sense in terms of performance, was to add items to the chart, somehow translate the position of the chart and remove the items that were outside the visible portion of the chart. That sounds like a good feature of the Chart control :) Again, I leave it to the reader to try to do something like that.

Bezier curves instead of lines


The last thing that I want to cover is making the chart less jagged. The roundtrip ping values were all over the place resulting in a jagged line kind of chart. I wanted something smoother, like a continuous curvy line. So I decided to replace the Line representation with a Bezier curve one. I am not a graphical person, neither a math geek. I had no idea what a Bezier curve is, only that it helps in creating these nice looking curves that blend into each other. Each Bezier curve is defined by four points so, in my ignorance, I thought that I just have to pass four points from the list instead of the two required to form a Line. The result was hilarious, but not what I wanted.

Reading the theory we learn that... what the hell is that on Wikipedia? How can anyone understand that?!... Ugh!

So let's start with some experiments. Let's use the wonderful XamlPadX application to see some examples of that using WPF. First, let's draw a jagged three line graphic and try to use the four points to define a Bezier curve and see what happens.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Canvas>
<Line X1="100" Y1="100" X2="200" Y2="300" Stroke="Gray" StrokeThickness="2"/>
<Line X1="200" Y1="300" X2="300" Y2="150" Stroke="Gray" StrokeThickness="2"/>
<Line X1="300" Y1="150" X2="400" Y2="200" Stroke="Gray" StrokeThickness="2"/>
<Path Stroke="Red" StrokeThickness="2">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigureCollection>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<PathSegmentCollection>
<BezierSegment Point1="200,300" Point2="300,150" Point3="400,200" />
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
</PathFigureCollection>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
</Page>



As we can see, the curve does touch the first and the fourth points and sort of approximates the line, but not very clearly. The problem becomes even more obvious when we add another point and we create two Bezier curves, from the first and last four points. The two curves intersect, they are not continuous. Even if you take points four by four, the resulting curves, even if they continue each other, they do it with straight corners, the opposite of what I wanted.




Let's try the opposite, let's draw one Bezier curve and then lines that connect the first and second and then the third and fourth points. We see that the lines define tangents to the two arcs comprising the Bezier curve. That intuitively tells us something: if two Bezier curves would to seamlessly blend into each other, then the straight lines that define them would also have to be continuous. We try that in XamlPadX and yes! It works.




So, from this we learn something. First of all, the first and last points of the Bezier have to be the points used in a normal Line. Then the last two points need to be part of the same line for the first two points of the next curve. So what about the second and third points? How do I choose those? Can I choose any lines to define my curves? Thinking of the chart that I am looking for, I just want that the jagged edges turn into nice little curves. I also don't want to think of other points than the points that would normally define a single line, that means I shouldn't use future data in defining the middle points of the curve that defines current data. So I just made the decision to use only horizontal lines to define curves. That means for any pair of coordinates X1,Y1, X2,Y2 I would create four pairs like this: X1,Y1 X1+something,Y1 X2-something,Y2 X2,Y2. That value could be anything, but I've decided it would be a percentage of the horizontal distance between two points.

Final result: using a percentage, let's say 20%, I would turn the pair of coordinates into X1,Y1 X1+(X2-X1)*0.2 X1+(X2-X1)*(1-0.2) X2,Y2. Let's see how that looks on the original jagged line. Let's use 50% instead. And for some fun, let's put it to 80%, 100% and even 200%.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Canvas>
<Line X1="100" Y1="100" X2="200" Y2="300" Stroke="Gray" StrokeThickness="2"/>
<Line X1="200" Y1="300" X2="300" Y2="150" Stroke="Gray" StrokeThickness="2"/>
<Line X1="300" Y1="150" X2="400" Y2="200" Stroke="Gray" StrokeThickness="2"/>
<Path Stroke="Red" StrokeThickness="2">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigureCollection>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<PathSegmentCollection>
<BezierSegment Point1="150,100" Point2="150,300" Point3="200,300" />
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
<PathFigure StartPoint="200,300">
<PathFigure.Segments>
<PathSegmentCollection>
<BezierSegment Point1="250,300" Point2="250,150" Point3="300,150" />
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
<PathFigure StartPoint="300,150">
<PathFigure.Segments>
<PathSegmentCollection>
<BezierSegment Point1="350,150" Point2="350,200" Point3="400,200" />
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
</PathFigureCollection>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
</Page>







That's it, folks. I hope you enjoyed this as much as I did and it helps you in future projects.

and has 0 comments
The Prince of Nothing trilogy was a total masterpiece, full of harrowing experiences of flawed men and women and characters so deep and original that they defied belief. You get the godlike Kellhus, not only freezingly rational and intelligent, but also mastering the Gnosis, the art of magic, while being a textbook example of a charismatic psychopath. You get Akkamian, a worldly sorcerer and spy, a teacher and a hopeless romantic. You get Cnaiür, a monstrous barbarian driven by revenge, but trapped by love. Esmenet, the whore empress mother, being heartbreakingly and treacherously a woman. And all these complex characters get to live in an epic world of different cultures, with politics, and military campaigns and evil creatures serving the No-god, shape shifting assassins and magic schools. In fact, it was so great that I found myself feeling dread of reading more, so terrifying the deep and personal pain of the characters that it was becoming mine.

Now I have finished The Judging Eye, the first book of the Aspect-Emperor trilogy, itself no more than a direct continuation of Prince of Nothing. R. Scott Bakker kind of cheats by using the same basic scaffolding for this story: a military campaign where an innocent and sympathetic character is being eroded by Kellhus' influence, a dark character driven by revenge on a lonely and dangerous quest, against himself slowly warming himself to the presence of a woman, court machinations driven by self serving creatures and the general backdrop of a clash between religions. He does it masterfully, though, switching the characters around and adding new ones to fill the roles left empty. In The Judging Eye one gets something as similar to The Darkness That Comes Before as needed to please the crowds that enjoyed Prince of Nothing, but as different to make it a completely different story. You get more of the same, so to speak, with an emphasis on 'more'. But also a little bit less.

Not everything is perfect. I feel that the inner dialogues of the characters have become more opaque, more strained. The metaphors flow just as in the previous books, but they communicate less, one makes more of an effort to get them and feel what the author meant, giving it a slight air of pompousness. I mean even a little kid philosophizes more than all the adults I know. The book has slightly more action scenes than I remember in Prince of Nothing, but they also feel more confusing. For all of Bakker's talent, I think he doesn't really understand combat and physical violence. He more than compensates with emotional and visceral violence, I agree, but I can't stop myself thinking of all the tactical applications that were never explored in battles purportedly fought by hardened veteran mercenaries.

His biggest sin, I believe, is that he doesn't follow through with the revelations that he awards the reader. I remember he was doing something similar in Prince of Nothing as well. He takes one through the labyrinthine mental processes of a character that marches uneventfully, but he fails to explain what exactly is happening - or at least what the characters are thinking - when something extraordinary happens. For example, in one scene, they discover a crazed individual with an eye on his heart, driven mad by the darkness that his heart is plunged into. A very powerful image. Yet Bakker doesn't explain anything. How was that possible? How did Akka know to look at his heart? What the hell were hordes of Sranc doing in a sterile dead mountain tunnel? No, instead we get to read about every single internal thought that the characters have about themselves and their lives. To quote from the book: "the work of a race that has gone insane for staring inward".

Bottom line: there is so much introspection in this book that barely anything happens. Falling into his own trap, Bakker gets seduced by his characters to the point of ignoring the universe in which they live. The book remains incredibly good and so I will venture to read the next one in the series. I already lament the fact that the third book of the Aspect-Emperor is not yet published and dread the moment when I will finish the second.

and has 0 comments
Another really nice book I am glad I readlistened to. In 2001 Neil Gaiman published this book, American Gods, and then,ten years later, a special tenth anniversary edition, with the "author's preferred text" and including an additional 12,000 words, was published by William Morrow in June 2011. Both versions of the book were adapted to audiobooks, the first just narrated, the second with a full (and talented) cast. This second version I listened to, on YouTube no less. Long story short, I liked the book a lot, even if it was a bit too long winding.

The story is not only interesting in concept - gods being created and fed by people's beliefs, then being forgotten and dying as belief wanes, but also in its many details borrowed from the world's superstitions and religions. We start with a man in prison, a calm, cerebral man, but also big and muscular. He is about to be freed from prison and return to his wife and his best friend to start his life anew. From then he is just thrown into this crazy world of supernatural beings, but not like all these lazy TV shows where there are vampires and werewolves at war, but slowly and subtly. Gods are at the same time what we remember them to be: big spiders, thunderbirds, gods of war, but also men and women that can be killed. They can be pitiful beings, old creatures that resent the newness of the world and of its people. I also liked that there was not a lot of the major religions, just a few hints at the end. No Christian or Muslim stuff, I mean. At the end of the audio book there is an appendix, Shadow meeting Jesus, that the author wrote but decided to keep out of the book because it didn't feel like it was part of it. I agree with him.

There is also a kind of Lord of the Rings ending to the book. Even if the main story arches ended, there are still several chapters after that. I could have lived without them, I guess. This verbosity is also the problem with the book. Laden with details and side stories and keeping the pace slow can be slightly boring. I never read the version published in 2001, but it was shorter, which was probably for the better. I liked that Gaiman left a lot of hints in his writing and even I was able to see through them. That was maybe another reason why the pace felt too slow, since I've glimpsed a little of the whole story and then just waited for it to reach that point. However, that is the exact reaction of the protagonist, when he figures stuff out. He feels like he already knew, but refused to actually bring it into consciousness.

The adaptation of the book was top notch, the protagonist, but more than this the man called Wednesday, were interpreted by talented actors and I found myself drawn into the story like a man slowly being pulled down in quicksand. Give it a try.

It was announced by Starz in July 2014 that they are preparing an adaptation of the book into a TV series. Also, while there are other Gaiman books and stories in the same universe (like Anansi Boys, from 2005, which some call American Gods #2), the author announced he is working on a direct sequel of the book only in 2011.

Shinsekai Yori, translated as From the New World in English, is the anime adaptation of the homonymous book from 2008, written by Yusuke Kishi. It shows, too, as the subjects touched are deep, the characters are complex and the story is wonderful. It is a true sci-fi, not only set into the far future, but also using serious concepts such as what it means to be human, what is the price of peace and questioning if we can ever change as a species and as a culture.

It is a complete plot told in 25 episodes, well animated, but I wouldn't call the animation special, yet the story is certainly worth it. If you want to compare it with something, try a combination between The Village and some fantasy kid school movie. While it begins like a post apocalyptic version of Harry Potter, it quickly turns into a discussion about the sacrifices required to preserve peace. It doesn't just stop at the young adult audience, but continues with new and new twists until it feels like you have a collection of stories that just happen to follow one another, yet they are very connected. The film is filled with Japanese ways of seeing the world, from the absolute obedience towards authority to the horror they instinctively feel when talking about mass destruction, but also random cruelty based on a class system, or that sense of duty that permeates everything everybody does, or girls always stumbling or being interrupted by men when they talk and told what to do. However, it doesn't stop there and it explains, in a way, why things are like that and what are their consequences.

In the end, you feel like humanity has been deconstructed and its ways of functioning laid bare and put to trial. I liked the characters and the emotional rollercoaster the anime has put me through. Really nice, Hollywood should take heed on how to do a good story and put it into motion. I highly recommend it.

and has 0 comments
Just a quick reminder that there are a lot of Star Trek productions out there, some really terrible, some really good. I am going to talk about three(ish) of them today.


First one is Star Trek: Federation One. It is with a lot of actors you have seen in other Hidden Frontier and Studio Areakt productions and focuses on the chief security of the presidential office of the Federation. While the plot is kind of a mess, the acting was decent and I was actually very sad to see that after the first "season" of two episodes they continued the story in an audio format. Even if the main character looked like he was on speed all the time, I had fun with it.


Another one is Star Trek: The Infinite Chain. Even if it is split into "episodes" it is actually a feature film. The acting is a bit amateurish, but decent. No obese teens in this one. It uses the now tired plot of a Federation starship thrown into unknown space by "an anomaly". The worst part of it was the "doctor" that was assigned to the mission. His character was believable: the guy in charge of the project creating the sensors used to study the anomaly, but in truth not a good manager or having any merit in the team. He just explodes randomly in childish emotional outbursts, threatening everybody with his artificial authority, and everybody hates him. I totally know people like that. However the actor was just goddamn awful and his script lines ridiculous! The makeup was ingenious, but really cheesy.


The last, but certainly not least, is something made by the Hidden Frontier team, but not set in the Star Trek universe. I am talking about Frontier Guard. The casting is made with the better actors of previous productions and, while the universe seems very similar to the Star Trek one, it is actually a different thing altogether. They use another type of space propulsion, it involves a FederationFrontier Guard academy and it concerns The Arc, a huge alien artifact that may have seeded the galaxy with intelligent life. Unfortunately, after some great episodes, they completely lost it. They began (some) episodes with "My name is..." evoking feelings of remembrance towards all the bad DC superhero series and movies, they started pointless subplots like the gay relationship thing - which always pisses me off, not because of the gayness, but because of the relationship that doesn't further the plot in any meaningful way - and threw in the towel after the 12th episode (which was an elevator show, basically).

From these three Frontier Guard was the best. My guess is that they wanted to do a Star Trek Academy series - which makes total sense and it should be the direction of the next Star Trek series - but they didn't get the approval. Since this sounds like a really good idea and one that might attract a lot of fans, I believe studios are keeping the story in reserve. However, not being Star Trek allowed them to evolve both stories and characters and I was really excited to see this done. In a world where everybody is remaking remakes, we need and deserve original content. Just look at David Feintuch's Seafort Saga series of books. That would make a fantastic TV series and has enough material to allow for several companion feature films.

For people just considering starting to watch these, do not expect Star Trek Next Generation. The actors are amateurs, I mean real amateurs not professionals who just started acting, most of them are American Trekkies and - even if I don't want to insult - some of them are just humongous pieces of fat with big glasses, which kind of explains the whole geek high school thing that is kind of difficult to understand in Europe. The stories, the lines, the makeup, the uniforms, the special effects, they are all done by enthusiasts. Sometimes they feel cheesy, sometimes they look completely and horribly fake. But once you realize that they are people like you, enjoying the wonderful universe of Star Trek, you can begin enjoying these productions.

I've watched other things as well, including Machinima style animations like Borg War - which I wouldn't recommend, but wasn't bad, and I will continue to look for these things. Just by looking at people like Hidden Frontier, who start doing something for the fun of it and end up doing original stuff with veteran amateur actors, I get filled with hope for the whole fan made universe, not just the Star Trek one. Keep up the good work guys (and if you can't do it good, keep working and it will get there eventually :) )

The best thing about it is that most of these series are online, on YouTube, free to watch. Here are some links to the shows above and others:
Star Trek Federation One - 1.01 Unity
Star Trek Federation One - 1.02 Institutions

Star Trek: The Infinite Chain

Frontier Guard

Star Trek: Digital Ghost

Special mention: Star Trip - a humorous parody of Star Trek.

Just wanted to post these really funny Star Trek fan made animations.

South Trek - a South Park animated Star Trek:


Star Trekkin' song:


Stone Park - a Flinstones animated Star Trek:



Some other funny stuff:






and has 0 comments
Another fantasy audio book, The Black Company is the first of ten of the ongoing series with the same name. Glen Cook probably thought about it for a while before writing it, because you can see that the first three books in the saga were published mere months apart (*cough*R.R.Martin*cough*). I was attracted by the story, because it seemed similar to my favorite Malazan Book of the Fallen series: a mercenary company fighting under the flag of powerful god-like magical beings that want to conquer the world. And in part the plot and characters were satisfactory. Alas, the many details and focus on small things like what games they played to pass time or what each character was like or maybe the narration style... I don't know; it all made it hard to focus on the story. I felt like the book could (and should) have been half in size, and better for it.

The main character is the doctor and analyst of the company, Croaker. Before your filthy mind thinks of other things, analyst in this context means he is a keeper of records, a chronicler of the company's history and, occasionally, the person who draws parallels between past experiences and current events. Croaker is an inquisitive person, often risking his personal safety to unlock a riddle or reveal a secret. Unlike Malazan, he is the lead character, through and through, and the company itself with its many soldiers and camaraderie just the backdrop.

Plot follows the Black Company in employment of The Lady, a powerful magician who wants to conquer the world, fighting the Rebel, a group of lesser magicians who have gathered the people of the land in response. Croaker has romantic fantasies about her, but throughout the book he discovers that his affections are misdirected, even if a strange relationship develops between them. Most of the story is about various battles, painstakingly (and painfully) described, only to be followed by the occasional interesting bit of character and plot development. In fact, I was kind of annoyed when I read the book summary on Wikipedia and I couldn't think of much that was left out. I mean, it's a big book.

The bottom line is that I am unsure if I want to listen to the rest of the series. While I can't say it was a bad book, or that is had weak plot or characters, I am reluctant to go through all that again for nine times. Basically I feel that the characters were never made empathetic enough, at least for me, and in the end all I cared about was what was going to happen next and how it would all end. In that case I would be better off reading synopses rather than listening to the entire thing. The overall structure of the story, though, has a lot of potential and I don't know if the series would not become really cool afterwards. To make the final parallel with Malazan, the first book in that series was not really making people eager to read the next, but it turned out to be great overall. I guess time will tell.

and has 0 comments
The Gift of Fear has popped up repeatedly in my field of view, recommended by multiple sources. I started reading it and at the beginning I thought it had a nice concept: the systematic study of violence perpetrated by people, written for reasons of protecting ourselves. However, Gavin de Becker has a writing style that got to me really fast. He sounds like he is the lecturer in a police conference, and half of everything he says is just marketing for the bits that are going to come next. You know the type: "I will reveal to you the secrets of the universe, but before I do that in one of the next chapters, let me tell you a little story". I mean, what he is saying makes sense, but he oversells it so brutally that I could not continue reading past the half of the book. You know, he sounds a lot like Walter O'Brien, the guy who's life is supposedly the basis of the TV show Scorpion. He doesn't sound like the O'Brien on TV, but like the actual guy, always overselling and overstating everything he allegedly did. Also the little anecdotes are useful in the book, but his explanations are so over the top. Man!

Anyway, the things that I chose to take from the book is the JACA system for assessing threats and the fact that when your intuition is telling you something, it either means it has access to some data that you are not conscious of or that it malfunctions and in either case you need to pay attention. The JACA system is about someone being more of a credible threat if they pass four tests. J: they feel Justified to harm you. A: they feel that they have no Alternative to violence. C: they believe the Consequences of violent action will be manageable. A: they believe they are Able to do you harm. Of course, that immediately makes someone believe that the first step of counteracting such a person is to convince them they are not justified, which fails on so many levels, especially with an antagonist.

The book covers all kind of violence: rape, murder, stalking, assassination, road rage, office vengeance, domestic violence, even violent children (I haven't gotten to that part). I can imagine how this book would be very useful to young people, scared women, maybe even children, but with the language being so pretentious and the guy making it all sound like a marketing pitch, I doubt it would be accessible to any of them. Let me reiterate: I believe the subject of the book is a good one and it should be addressed. I also don't criticize the conclusions that Becker reaches or doubt his professional experience. What I am saying is that the way the book is written stylistically made it unreadable for me. So instead of reading a few pages every week, I've decided to stop reading it. Sorry, Gavin! I only wish someone would make a short summary of it, since a lot of the stuff there is at least interesting, if not downright useful.

and has 0 comments
The same people that did Star Trek: Hidden Frontier created the three season Star Trek: Odyssey. The first season was pretty good, beginning a story that was a combination of Voyager, Deep Space Nine and even Enterprise, the second season had fewer resources and the third season was decent, but the story was a complete mess that was very hard to grasp. Luckily enough, the superfluous homosexual stories in Hidden Frontier were almost not existent in Odyssey. Instead we were treated to intergalactic invasions, religious empires, slipstream drives, artificial wormholes, omega particles, anti-omega particles, Romulan first officer played by lovely Michelle Laurent and some decent (not good) screenplay. The technical effects, acting and directing varied from OK to really bad. They clearly learned a lot from Hidden Frontier, but the green screen continues to be their greatest enemy.

Even better, it is a crowdfunded show and you can watch it all online, for free, on YouTube. Here are the links for all three seasons:

Season 1
Season 2
Season 3

Enjoy!

I took the name of the anime from a YouTube video, recommending it as one with a great twist in it. I watched for two episodes as the main protagonist, an ordinary guy in a Japanese highschool, starts talking to a strange girl (Haruhi Suzumiya) in his class, gets coopted in a mad scheme to create a club that investigates mysteries - specifically aliens, time travelers or espers, then adding the three other members of the club. I thought it was going to be about this club actually investigating something. But no, in the third episode we realize that the three other members are an alien, a time traveler and an esper. Soon after we find out that they know about each other and that each of them and, indeed, their entire race/organization were figments of Haruhi's imagination made reality. Haruhi apparently has the ability to create entire universes, essentially making her a goddess, albeit unknowingly.

So far so good, but then for 28 episodes I waited for anything interesting to happen. Where was that amazing twist? Apparently, the twist was that she was some supernatural phenomenon and that's it. The rest is just a typical cliched Japanese high-school story, the one where the lead character is a male boy surrounded by beautiful girls that have an almost undisclosed interest in him and that do crazy stuff together. When the last episode wasn't even closing the series, I got really mad. It was a complete waste of my time. Ugh!

and has 0 comments
A World Out of Time is a book out of time as well. Larry Niven wrote the book in 1976 and it describes events that happen over a span of three million years, but it feels like The Time Machine. The hero is a guy from the 70s who's memory gets uploaded in the body of a convict hundreds years later, sent on a mission that was supposed to last tens of thousand of years (Earth time), but ending up in a joyride around the galaxy that brings him back on Earth millions of years later. The strange world of immortal creatures living like feudal savages in a world filled with broken and discarded technological wonder, but somehow still looking human, is difficult to take in. The cowboyish behaviour of the lead character and his inconsistent switch between genius and ineptitude don't help either.

It doesn't mean the book is not entertaining. I had fun with it. However it feels really long and old and I don't intend to read the other two Niven books in the same batch: The Integral Trees and The Smoke Ring, even if they sound slightly more interesting.

and has 0 comments
The second book of The Reckoners series revolves around Firefight, a character from Steelheart, the first book, that I cannot explain without spoiling it. Brandon Sanderson outdid himself, managing to describe a dark world of bright colors, a desperate and dramatic situation in which hope shines through, an impossible romance inside a war story and a totally positive view on fear. Contrasts everywhere, like a bad metaphor that discovers it is a simile before a book ends. Well, if you read Firefight you will get the reference.

The action and plot of the book are much more detailed and a level above what happened in Steelheart. The villain is more interesting, the interactions between the members of the team are more complex, with various shades of conflict, plus an interesting new location in a sunken city filled with glowing plants that feed the people and provide light at the same time. I can't wait for Calamity, the third book in the series, to appear in 2016.

and has 0 comments
I am starting to like Brandon Sanderson. Only at the end of Steelheart did I realize that he kind of used the same plot device that he used for Elantris: the ten-years-ago one. Ten years before the action of the book, Calamity struck: a red star-like light in the sky that gave random people immense powers. The governments of the world tried to fight back, but all of them ended up capitulating, declaring "epics" as impossible to control as natural disasters. Enter David (the name probably not chosen at random) an eight year old child who witnesses the death of his father at the hands of an epic that then proceeds on taking over Chicago as his personal fiefdom. Now, at 18, David meets with The Reckoners - a group dedicated to fight back - in order to avenge his father.

First book in The Reckoners series, which is a planned trilogy, Steelheart is a very refreshing take on the superhero genre, original in the sense that it takes its name after the main villain and follows a young boy who advances in life using his cunning, knowledge and personal effort, not some random superpower. The characters are easy to sympathize with and the story is very nice. Not everything is perfect, as the story contains many political, economic and even technical plotholes. However, the writing is very well done, easily making the reader forget and forgive any inconsistencies between reality and the storyline.

As with Elantris, I listened to the audio version of the book. Classical narration, but was very nice. The book is a sort of young adult thing, but I enjoyed it very much nonetheless. I can't wait for the second book in the series: Firefight. I may have to first read Mitosis, a short story placed in the same universe.

and has 0 comments
In a world dominated by trilogies and quadrilogies and sagas, it is refreshing to see that some people are writing stand-alone fantasy books. I've first heard of Brandon Sanderson when he ended up writing the last books in the Wheel of Time series, after its initial author died; those books were the best in the series, even if he had to work with Jordan's notes. Recently, I've stumbled upon this audio adaptation of Sanderson's book Elantris, produced by Graphic Audio, a company that doesn't just created narrations of books, but full audio plays - while changing nothing of the initial text.

Despite some parts being a bit too optimistic, some too slow and some really obvious - waiting for a character to catch up with you is not fun - the book was really entertaining and original. It also was Sanderson's first widely released book, so I can forgive his lack of perfection :). I really liked the story and the characters in the book. In truth, the book's message is one of hope, one of encouragement toward the human spirit becoming the best it can be. I couldn't help thinking that Sanderson probably portrayed himself in Raoden, and that guy is great.

Anyway, the plot revolves around the magical city of Elantris, populated by God like creatures that shine with the light of magic and are almost omnipotent. However, the story starts ten years after a horrible collapse of said city, which transformed every Elantrian into an immortal husk, heart not beating, hair falling, skin blotched by dark spots, incapable of healing the smallest cut or bruise, but fully capable of pain, unneeding of food, but fully able to feel ravenous hunger at all times. The process, called Shaod, has not ended, it still occasionally picks people at random and turns them into these creatures of eternal pain. The human inhabitants of nearby towns have quarantined Elantris and anyone affected by the Shaod is thrown inside the rotting city.

There are two main characters: prince Raoden and his bride to be, princess of a nearby kingdom, called Sarene. Not only them, but almost every actor is full of spirit (pun intended) and really likable, even the antagonists can be understood and sympathized with. The story is full of events that lead to character development, politics, smart plotting, drama and comedy.

Well, in the end, with all my talk of stand alone books, I was a bit sad to see the story end. I wanted more, and that's a good sign, right? Sanderson is supposedly considering writing a sequel, but it's not something that will happen soon and it will involve different characters. I liked Elantris and I recommend it to all fantasy fans.

and has 0 comments
And thus ends the fifth book in the Chronicles of Amber, and the last in the Corwin cycle. Written between 1970 and 1978 by Roger Zelazny, it was one of the most lazy fantasy series I've read so far. The Courts of Chaos is once again a book that has no connection with its title. Nothing really happens in the courts of chaos except at the very end. All previous developments in the story are discarded completely and it feels like the author slept through writing the book. It was one of the most WTF books in the series so far, as well. At every section there was at least one scene where I felt like those people watching football games and shouting at their TV about what the player should have done.

Let me give you some examples. The book itself starts with a circular time paradox, where we get to see Corwin cut off Benedict's artificial arm. This had already happened in the previous book, but from the other perspective. Thus the metallic arm was only there to be severed because it has been severed in the past, its origins non existent. Then each of the children are given orders by their father. Why would they listen to them is beyond me, as was his entire reason for leaving, reappearing, etc. Anyway, he sends Corwin on a quest to carry the Jewel of Judgement (nobody did any judgement with that stone!!) to the courts of chaos, where Benedict already went using a trump card. Of course, why call Corwin's grandfather to make another card so that he can get there instantaneously? Why indeed. So we are exposed to this totally boring expedition where people fight like children with swords and crossbows and throwing rocks at each other. No guns, of course, that would be cheating. When Corwin uses a stone to make his enemy drop his crossbow, he ignores the crossbow and almost dies in the process. When he gets to the crossbow again, he smashes it! Why use a ranged weapon at all? Oberon made a blood raven out of a bit of Corwin's blood, to accompany and protect him in shadow. Why not make a bloody (pun intended) army of ravens? Wouldn't that have been better? And it just goes on and on. They never use the cards in this book, for example, after it was already obvious they can be used as communication devices as well as offensive weapons.

Nothing really made sense, in a nutshell. I am pretty convinced Zelazny was stoned out of his mind when he wrote this, but with some bad shit, since it never seems to increase his creativity. The ending was like a slap in the face, as after their victory, using armies of pedestrians and cavalry, a funeral procession for Oberon appears out of nowhere, with a lot of people and dragons. I kid you not, they had dragons, but their only use was decorative, like some sort of Chinatown celebration paper-mache things. And they got there not by treading the land like idiot Corwin, they actually came directly there. Oh, and since Corwin didn't feel like being king, they crowned another brother. Who, you might ask? Is it the brilliant strategist Benedict? Is it the loyal and strong Gerard? Is it the devious and aloof Julian? No, it's totally Random (another pun, couldn't help myself).

The next book in the series is the first in the Merlin cycle and the first book was written in 1986. It gives me hope that in 10 years Zelazny learned to fucking write!