Sunday, September 17, 2017

Lilith's Brood (Xenogenesis), by Octavia E. Butler

book cover This book is NOT about vampires. For a long time I avoided reading it because the title so suggested some steamy vampire young adult crap. But no! The book is a hard sci-fi book about the end of humanity, written in a style that I can hardly imagine any man would be able to adopt. And that's a good thing.

Lilith's Brood is in fact a collection of three works (Dawn, Adulthood Rites, and Imago) by late writer Octavia E. Butler. That is why it is so damn long. Since she died, there won't be any more books in the series, so the "Xenogenesis #1-3" label is a bit misleading, just the name of an out of print collection that gathered the three stories together.

The story is about a species of aliens who decide to save the human race after a global war that had doomed it to extinction. The aliens are very interesting, but even more interesting is how the author surfs the edge of defining them as good or evil. Some of the things they do are benevolent and generous, others are, by human standards, insidious and evil. Imagine a benevolent Zerg species coming to Earth. Or a biological Borg with good intentions. Or an intelligent virus that rationalizes its actions as for the better good. It is difficult to keep reading as it pretty much describes the salvation of the human race as a centuries long rape and corruption process by a species that is much more advanced than us, but in very important ways, more animal than humans are. And we are almost helpless. Imagine you are a pet of omnipotent new-age vegans. It's something like that.

I was saying that only a woman could have written about it in this way because the focus is on survival and procreation, on protecting and avoiding death, on how the body feels rather than the mind. I do think that males were presented as either violent mindless rapey idiots or sensitive pacifist weak side characters. The arrogance of the aliens also has a strong vibe of "mama knows best", which explains why males were reduced to enraged murderous states. I mean, that's always the result of that "educational method". But the book is good enough to make you ignore that.

The bottom line is that this is a great book, one that is incredibly detailed and focused on characters, rather than technology or some story arch that has to end at some defined point. It made me think of so many things. I've once had this fantasy of writing a book about people being treated as pets. This is as close as I've read so far. Lilith's Brood made me reconsider the way I raise my dog! It also made me think of the nature of individuality, its benefits and perils, or the definition of humanity. Can you still be human when stripped of all dignity? As I said, while very very good, it is not easy to read. I was sometimes putting the book down and fantasizing on things I would have done if I were some character in the book.

Worth a read, that's for sure.

Saturday, September 16, 2017

100% CPU usage when using The Pirate Bay site

You may have noticed that when using the Pirate Bay site, your CPU usage goes up all to the top. That is because the web site is silently using CoinHive, a distributed cryptographic currency miner that uses the processing power of web users. The easiest solution for me was to go to %windir%/System32/drivers/etc/hosts and add the line
This tells your computer that the coin-hive server is in an unreachable place. You could add URLs with coin-hive in your URL filter or ad blocker software instead.

Now, CoinHive is not a bad thing. (Using it silently is. I wonder if they do this for mobiles as well, destroying their battery life.) In fact, the idea is pretty interesting and I've considered it before in a different context. I may still use it. You are browsing a web site and there are no ads on it or you have a mighty good ad blocker. How is that site to sustain itself? It does so by using some of your processing power. Before the advent of cryptocurrency, there was not way of efficiently monetize CPU power. People have tried, with projects like SETI@Home, but it was always a not very granular process. It only worked for processes that could be split into tiny pieces that were still relevant.

So there you have it, an interesting idea, used in a nefarious way :) Or, if you want to support the site, leave it on. You will make them money.

Question for programmers [Regular Expressions 2]

As with all the programmer questions, I will update the post with the answer after people comment on this. Today's question is:

Friday, September 15, 2017

Question for programmers [Regular Expressions]

Here is a question for programmers. I will wait for your comments before answering.

Tuesday, September 05, 2017

The Last Wish (Saga o Wiedźminie #1), by Andrzej Sapkowski

The Last Wish is not what I expected. I liked the Witcher games reasonably well, but I liked the character in the stories of the games more than the one in this book. Andrzej Sapkowski creates this character who is trained by pain, knowledge, poison and discipline to become the ultimate monster killer. However, the result is a very ordinary person, one who is better at fighting and resisting various magic or chemical attacks, but still a regular dude. He has friends, he falls in love and has moral qualms, he gets defeated and knocked out.

The book is actually a collection of short stories with Geralt the witcher as the main character. Some are reimaginings of classical folk tales, but all of them are about real versus perceived monsters. Is something huge with dagger like teeth a monster to be killed or is there a cursed person inside. Is a normal human less monstrous just because he looks normal, or is he a cruel and vicious villain? In all stories there is a lot of dialog, with characters that are not clearly developed talking a lot about what is going on. I didn't like that. It felt like reading plays.

But even so, I would have said that the book is OK. Like someone trying to write a fairy tale of their own. Why not? But there was this expectation from the games that the witcher was a womanizer that decides who lives and who dies based on his own strange code and lives on the edge by the strength of his skill. In fact, in the books he is the most decent hero I've read about in a while. He is one of the last of a dying breed, like samurai or American native warriors, not because of the monsters that kill them off, but because of humans spreading everywhere and expecting everyone to live by their code of conduct. If he would kill all the monsters in the world, he would be the very next to be destroyed by the people who no longer need him and have always hated him. Let me tell you that it is hard to reconcile my expectations with the book character.

Bottom line: an OK book. Certainly not great in any respect. I recommend you read it before researching the character or playing the games. I think that the book makes the games more interesting, by adding a backdrop story, but the games make the story hard to enjoy... because they are simply better.

Saturday, September 02, 2017

We Eat Our Own, by Kea Wilson

book cover We Eat Our Own is a reimagining of the making of an infamous movie called Cannibal Holocaust. It was an exploitation movie, featuring all kind of violence, from rape to murder and cannibalism, but also one that strives for maximum realism. In her book, Kea Wilson is portraying a world of emotional dog-eat-dog, with the movie and even the reality around the film set becoming part of a cannibal act where people use and consume and corrupt others.

I can't say I enjoyed the book too much. It is very well written and it makes the reader get visceral feelings about the people and the events inside, however I couldn't make myself care about any of it. In striving for realism herself, Wilson managed to make all her characters human, flawed, real, and almost impossible to empathize with. You understand some of them, you even see yourself think or act the same, but none of it is something you would want to see yourself do. Also, while a lot of the people in the book are caught in an abuse cycle, none of them is actually stuck there. They can leave at any time. Perhaps this is the most intriguing and interesting point of the story: even the most horrible things that we do to each other require some form of consent from the victims, some form of submission, without which the abuse would never happen or at least, not last too long.

In conclusion, I am sure there are a lot of people that will enjoy the hell out of this book. People oriented, feeling focused people, perhaps. I had difficulty making myself finish it, even fully conscious that the writing was very good. But this is my review, so I will not grade this above average. Probably it is a good idea to watch Cannibal Holocaust first, even if the movie is only an inspiration for the book.

Tuesday, August 29, 2017

Careful with case sensitivity in html files. (especially in Firefox extensions)

After my disappointment with the Firefox for Android lack of proper bookmarks API implementation, I was at least happy that my Bookmark Explorer extension works well with Firefox for desktop. That quickly turned cold when I got a one star review because the extension did not work. And the user was right, it didn't! One of the variables declared in one of the Javascript files was not found. But that only happened in the published version, not the unpacked one on my computer.

Basically the scenario was this:
  1. Load unpacked (from my computer) extension
  2. Test it
  3. Works great
  4. Make it a Zip file and publish it
  5. Shame! Shame! Shame!

Long story short, I was loading the Javascript file like this: <script src="ApiWrapper.js"></script> when the name of the file was apiWrapper.js (note the lowercase A). My computer file system is Windows, couldn't care less about filename casing, while the virtual Zip filesystem probably isn't like that, at least in Firefox's implementation. Note that this error only affected Firefox and not Chrome or (as far as I know - because it has been 2 months since I've submitted the extension and I got no reply other than "awaiting moderation") Opera.