Tuesday 29 August 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.

Sunday 27 August 2017

Infomocracy (Centenal Cycle #1), by Malka Ann Older

book cover Malka Older is a writer, humanitarian worker, and PhD candidate at the Centre de Sociologie des Organisations (Sciences Po) studying governance and disasters. Named Senior Fellow for Technology and Risk at the Carnegie Council for Ethics in International Affairs for 2015, she has more than eight years of experience in humanitarian aid and development, and has responded to complex emergencies and natural disasters in Sri Lanka, Uganda, Darfur, Indonesia, Japan, and Mali. (quoted from the About the Author section) And if your interests are not exactly aligned with the author's, you will probably not like this book.

Infomocracy describes a near future in which countries have dissolved their borders and instead opted for a system of centenals, groups of 100000 people who vote for the system they want instead of having it shoved down their throats based on where they were born. A decent idea that deserves some thought. However, the entire story, action and drama of the book is about the voting process. It's like a cyberpunk novel written by a voting system enthusiast with an obsessive disorder, thus feeling both boring and out of touch. It was literally hard work finishing the story, trying to understand why I should care about the stuff happening there or about any of the characters.

Even taking into consideration that it is the first book Older wrote and that it is supposed to start a cycle (damn it, people, write something for its own sake, not for endless series and trilogies and sagas!), the book is still a failure, because it doesn't really explore the way microdemocracy works, instead focusing on a bunch of electoral agents and some of the underhanded methods to sabotage the system. The players are not clearly defined, the characters are shallow and so it is almost impossible to care about any part of the book. You want a good sci-fi book about microdemocracy, try Daemon, by Daniel Suarez.

Saturday 19 August 2017

Throne of the Crescent Moon (The Crescent Moon Kingdoms #1), by Saladin Ahmed

book cover Throne of the Crescent Moon is basically a young adult novel, even if the main character is a fat old "ghul hunter" rather than his young apprentice. Its freshness comes from the elements of Arabic folklore used as the basis of the fantastic elements. For me reading the book was an interesting experience, as in my head the plot was blending with the stories of One Thousand and One Nights and the animation of Disney's Aladdin. I felt that Saladin Ahmed wrote some delicious characters, even if a bit shallow, and that the story didn't lose points because of its simplicity, rather the opposite. The result is an easy to finish book with Middle Eastern mythology themes in a classic good versus evil story.

The book this reminded me most of was The Spook's Apprentice, but with a different mythology and a different character focus. Just like that series, this can be considered a book for children, but having elements that are appealing to adults as well. To me the most pleasing aspect was the different culture presented, although it wasn't something very new to me. I was raised on stories of spoiled khalifs and evil viziers, young and noble rogues and beautiful girls and mysterious magics, after all. And probably a large element of why I enjoyed the story was this connection to my childhood.

While I can't say it was some sort of masterpiece, this was an entertaining book for me. If you are looking for a relaxing read, try this one.

Wednesday 16 August 2017

The Vagrant (The Vagrant #1), by Peter Newman

book cover I read the book before I knew it was part of a trilogy, but of course it is. I would have personally preferred to have the first book as standalone, particularly since it had an almost open ending. It would have made it clear that the story isn't that important as the character. But hell, there is no mystery anymore, even in fantasy.

The Vagrant feels like a mix between Shogun Assassin and Samurai Jack, as it features a sword bearing silent type - well, he's a mute - walking with a baby through a desolate, part feudal part futuristic landscape, while demon essence is threatening to corrupt the world.

Peter Newman even uses a style of writing that often discards definite articles. A sword slashes, a man falls, a demon howls, stuff that happens, inevitably, randomly, viciously. I liked that the main character strives to survive, but he is not indomitable. He gets doublecrossed, wounded, almost killed. He doesn't win every battle and when he does, it is difficult every time. Luck saves him several times and some people he wants to save cannot be saved. Towards the end this tendency falters and he becomes a little bit too knighty for my taste. Abstract and stubborn principles start to rule him, he starts fights that he need not fight, jeopardizing his mission. However, that ends up playing a big part in the last part of the story, setting up the next books, I guess.

The demons are interesting, too. Creatures of corrupted flesh and demonic essence, they are just trying to survive in a world alien to them, while ruled by instincts alien to us. I liked that they were not boring empty clichés of evil and were almost sympathetic. I've long dreamt of a story that tells the story from a demon's perspective, hunted by religious jerks who want to destroy it and the dark magicians that conjured it who want to control it. I mean, wouldn't you be pissed off? This book is very close to that perspective.

Funny enough, I thought the scenes with the baby and the goat were really well done, as the author describes their internal mental processes with gusto and humor, without them being pointless comic relief scenes. Newman seemed to understand how children and animals navigate the world.

In conclusion, I liked the book. I would probably continue to read the series if not for having other books that I want to sample. It is stylistically interesting and the characters are well constructed, while leaving the main story a bit in the background. I liked that. At least at this time I enjoy reading character centric books more than the ones that focus on plot and ignore the people involved in it.

Tuesday 15 August 2017

KB4019099 or KB4032542 Error 0x80070643 with SQL Server 2014

TLDR version:

0x80070643 is probably thrown when you don't have the right software version, in other words, the update is not for you. Sometimes you need to upgrade your software in order for it to apply. To fix the problem with SQL Server, try installing the SQL Server 2014 Service Pack 2 if you are still at SP1.

Now for the full version:

I thought the way Windows updates is a good thing. It keeps the computer up to date, regardless of how annoying it is to stop your work in order to perform updates. The problem, though, appears when having to perform an update that fails. Windows Update will nag at you again and again and again that you have updates. You don't have the option to ignore an update (unless you download a specific tool) so you are forced to solve any problem with the update. This is still a good thing, even if annoying. And if regular people that don't know how to solve issues like that are angered enough, it will also motivate Microsoft to test their updates better. Win, win. Unless it happens to you!

Anyway, this blog post is about KB4019099 or KB4032542 - Cumulative Update 13 for SQL Server 2014 SP1 which failed with a vague error code Error 0x80070643, which is met in several situations when trying to install stuff. In order to get to the bottom of the problem, I manually downloaded the installer for the update and tried again.

This time the error was clearer: TITLE: SQL Server Setup failure.
------------------------------

SQL Server Setup has encountered the following error:

The cached MSI file 'C:\WINDOWS\Installer\1bfcbd.msi' is missing.
Its original file is 'sql_engine_core_inst.msi' and it was installed for product 'SQL Server 2014 Database Engine Services' from 'F:\x64\setup\sql_engine_core_inst_msi\', version '12.1.4100.1', language 'ENU'.
To resolve this problem, recover the missing file from the installation media and start setup again.
For more information about how to resolve this problem, see 'Steps to restore the missing Windows Installer cache files' (http://go.microsoft.com/fwlink/?LinkId=144387) in the Microsoft Knowledge Base.

Error code 0x84B20002.

For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&EvtType=0xD66F84B3%25400xF762992B%25401202%25402


Amazingly enough, the link that is supposed to solve the problem actually solves the problem. First of all the go.microsoft.com link causes too many redirects for Chrome, so you have to open it in some other browser. Once you do that, you reach this link: How to restore the missing Windows Installer cache files and resolve problems that occur during a SQL Server update and at the end you get a VBS script that seems to repair missing C:\Windows\Installer files from the original installation source.

The first thing the page says is to try setup.exe /ACTION=REPAIR /INDICATEPROGRESS=TRUE from the original installation source for SQL Server 2014, which of course you don't have anymore. But even if you do have it and you run the command, it fails near the end with a funny error: "C:\WINDOWS\Installer\1bfa87.msi" So the only possible solution is to run the VBS script. After that, the update install actually started.

... and failed with another error: The upgrade cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade.
Error code: 1642
. Why are you asking me to upgrade something if I don't even have the version you need?! I've tried the setup repair option, just to see if anything else changed since running FindSQLInstalls.vbs, but I got the same error.

Under the assumption that the "original installation source" is actually not enough - since there was a Service Pack 2 released since I've installed SQL Server from a kit, I've downloaded the SP2 file. Maybe it has a repair option. Ran it, and it ran successfully. Could it be that I never upgraded my SQL Server instance? Yes. Then all those "different version" messages actually make some sense.

Once I did that, Windows Update presented me with different updates altogether! Note that the original update said "SQL Server 2014 SP1" when executed.

Some of the updates installed OK, some failed, mainly Security Update for Microsoft Visual Studio 2010 Service Pack 1 (KB2645410) and Update for Microsoft Visual Studio 2010 Service Pack 1 (KB2635973). These are updates from 2012 and are related to the standalone VS version used by SQL Server Management Studio. I tried a restart, the updates remained there to annoy me. They both failed with error code 0x80070643 and when tried to install them manually they both reported the wrong software version.

Perhaps it is from all the meddling. Installing SP2 would have probably solved all the problems.

I hope it takes you less time to figure this out, once you've read this article.

Update: How to solve the issue of obsolete Visual Studio 2010 updates:

I've downloaded the Microsoft Fixit tool for forceful uninstall of software, even if the installer is not cached in C:\Windows\Installer. Then I uninstalled "Microsoft Visual Studio 2010 ENU". At this moment SQL Server 2014 Management Studio would not work anymore due to a missing component. Then I reinstalled Microsoft Visual Studio 2010 Shell (Isolated) Redistributable Package. At this moment SQL Server 2014 worked again. Then I ran Windows Update, which found several updates to download, including a Service Pack 1 and several others. Their installation went with only a hitch, a random 0x80246007 (BITS service) error that went away when I retried the update. I started Microsoft SQL Server 2014 Management Studio, just to be sure it worked, and it did. Finally.

Thus endeth the saga of the reluctant Windows Updates.

Wednesday 9 August 2017

The Fireman, by Joe Hill

book cover The Fireman has a lot going for it: world ending global pandemic, superpowers, people finding strategies in order to survive, communities giving into the mob mentality, heroes fighting evil, etc. Joe Hill writes well and the story captivated me from start to end.

That being said, there are some issues with the book. The story is about a global infection with a fungus that makes people burst into flames, but narrowly focuses on a few characters in a small American town. Yet the story abounds in details for every scene: what everybody does, what they think, how the scene changes. Also, while there are some explanations of why things happen the way they do, close scrutiny destroys any logical explanation, so less material would have helped suspension of disbelief. I feel like a little editing that would have removed 10-20% of the book would have benefited it greatly, fixing some issues with pacing. There were times when I just had to skip paragraphs, as in moments of tension the author insisted of describing all kinds of inconsequential things.

Also, at the end of some chapters, there were little phrases where the character would disclose the outcome of the next chapter. I did not appreciate that. Imagine a scene where a character is hopeful and, instead of hoping with them and then being devastated by the story, you just go through the scene knowing how it is going to end. Don't do that, Joe!

It was interesting that the main protagonist (who is not a fireman, BTW, that was a silly title) is a woman. Her character, abused, manipulated and lied to by people in authority in her life, is almost feminist in nature. Other secondary characters are also female or children, with the writing focusing on human relationships. If I didn't know better, I would have said the book was written by a woman. I can only commend Joe Hill for being so good at describing the world and the people from the eyes of this character.

Other than that, the story was really fresh. I don't want to spoil anything here, enough to say that it made my emotions alternate wildly between excitement, fear, disgust and frustration. While optimistic in nature, The Fireman describes so many ways in which people just give in to their inner selfishness and evil. The themes touched by the story vary, but gravitate around one central idea of human relationships: a couples, as communities and what happens when these seemingly good things are contaminated with fear. These are themes one is used to find in Stephen King books and, surprise!, Joe Hill is actually King's son. He is trying his best not to advertise this, though, and I think he is a good writer on his own.

The characters are very human, well created, frustrating in their mistakes, just like normal people are. The author made the lead characters a bit too clean, always taking the high road, always being spared of the tough soul scarring choices by their environment or the people around them. I thought that was a weak point in the book. Without being forced to make hard choices, characters have no reasons to evolve.

Anyway, my recommendation is to read this book. It is scifi and fantasy and clinical dissection of humanity. It is well written, even if a little too long for its story.

Almost two years ago, Variety was reporting that the book was being developed by Fox into a movie, yet there is no other information more recent about this.

Diversity, not divergent (yes, the Google thing)

I wasn't going to discuss this, but I am being assaulted from all sides by people who have on opinion or another on the Google "Anti diversity manifesto", how the media likes to call it, spread at Google by an employee and his subsequent firing right afterwards. So I will say a few words, but not about the content of the document, only on the reaction to it.

Let's be honest here, what happened was that someone criticized the way things are at Google and then he got fired. He did it in a whitepaper-like document in which he exposed his opinions on what he perceived as problems and possible solutions. I believe his biggest mistake was not substantiate his opinions with previous research, thus dispelling some of his beliefs and strengthening others as fact, but that's beside the point. You can read the document, as well as the response from the Google's new Vice President of Diversity, Integrity & Governance, whatever that means.

James Damore, the employee who wrote the memo, was fired for violating the company's code of conduct by "perpetuating harmful gender stereotypes". What I want to focus on is that the response of Google was based on the fact that they couldn't possibly assign people to work with this guy, once he said something that was controversial, potentially offensive. By logical extension, no one can express something controversial in the company. Would you like to work there? They see it as something positive. The legalese for that is Part of building an open, inclusive environment means fostering a culture in which those with alternative views, including different political views, feel safe sharing their opinions. But that discourse needs to work alongside the principles of equal employment found in our Code of Conduct, policies, and anti-discrimination laws. What started as an open discussion, ended abruptly by termination, the employment equivalent of a death sentence for dissension. A personal equivalent would be "if you think like that, then we can't be friends anymore".

While the decision makes sense in the short run, in the long run it only hurts Google, both on a mediatic level and a financial one. However right or wrong, the author of the paper wanted to solve something he saw as problems in the company. I would want that type of person to be part of my company. And if the problems he sees are artificial, I would like to think I would try to convince him of that before firing him. Of course, Google doesn't have to do anything, because what they did is legal, but I am not talking about anything legal here. I am talking about companies having to take care about all their employees, not only the ones they like.

Personally, I wouldn't like to work in a place where I would need to guard my every word, hide my opinions and my thoughts, for fear of crossing some general line or code of conduct. I wouldn't like to work in a place that couldn't care less about me as a person. And if I were to work in such a place (ahem!) then I would create a narrative that would protect my fragile psyche, something like "they would never do that!". Well, Google did it! In a very public and bland and careless way. This will only give strength to the other narrative, the one of the former employees, released from their very strict NDAs, who complain about the same things Damore was fired for trying to solve in the first place.

Now, don't you miss the times when Microsoft was the bad guy?

Sunday 6 August 2017

Tuesday 1 August 2017

The Regional Office Is Under Attack!, by Manuel Gonzales

Book cover There is a rule in writing, that if you are trying to tell the story from the viewpoint of another character than the main one, for example the villain, and it is boring, then your story is not good enough. It seems to me that this was the cardinal rule that Manuel Gonzales used to write The Regional Office Is Under Attack!. He wrote tiny interlaced chapters that alternately were describing the action, then the motivations and personalities of the characters through flashbacks. At first it felt fresh, then it just got annoying. There is only so much you want to hear internal monologues.

It would have been great if the story would have been better, or if the characters would have really been fleshed out. However, this book feels more like an exercise in writing, a funky experiment, than a real story. There are very intimate details about how people thought and why they did some things, but they also are empty, doll like characters. And that is too bad, because Gonzales is clearly a talented writer and the plot made me want to read on and find out what will happen to all the characters, only to be left high and dry at the end of the book, which stopped abruptly and spitefully. It was like "Hey, you wanted something else than to experience my new idea? Fuck you! You get nothing."

In the end, it was something that felt like a fairy tale, reinvented for art's sake and modernized just because it's fashionable. It's not even a first part of a series or something. It's a standalone book that showcases the author's idea of presenting many viewpoints on some incidents that have only marginal connection to science and fiction. It could have just as well been a soap opera about highschoolers and be just the same book. It wasn't bad, but I can't quite recommend it either.