Monday, 26 February 2018

The hidden cost of civilization

Occasionally I ask myself if I really am an "ist". You know: misogynist, racist, classist, sexist, bigot, and so on. Or maybe I am "one of the good guys", a progressive feminist antiracist. And the answer is yes. I am both.

I've just read a really long feminist article that - besides naming white bigoted men "the enemy" and showing them the smallest bit of empathy just because "if you mess with them, they mess with us women when they get home" - had the author wonder how come so many of the people who got outed by the latest wave of misconduct allegations were people who declared themselves progressive and even wrote or shared content towards that. And the answer is really simple and really uncomfortable for all purists out there: we are all a bit bigoted. More than that, sometimes were are really leaning towards a side and then we change back, like reeds in the wind. I think that's OK. That's how people are and have been since forever. The answer is not to pretend we are different, but to accept we have that side and to listen to it and converse with it in order to reach some sort of consensus.

The animal brain has one job and one alone. It has to heavily filter all the inputs from the real world and then create a manageable model of it in order to predict what's going to happen next. Shortcuts and pure yes and no answers are heaven to it. If you can look at one person and immediately infer things that will help you predict their behavior from simple things like sex or color of skin or the way they dress, the brain is ecstatic. Try telling it that no, that's not good, and instead of the limited statistical experience model that it uses it should instead rely on the morally curated amalgamation of acceptable experience of other people frustrates it. It's not a human thing, it's not a mammal thing; if you could express this idea to an ant, it would get angry with you. The brain wants - if not even needs - to be racist, sexist and other isms like that. What it wants is to take everything and put as much of it in small boxes so that it can use the limited capacity it has to navigate the things that are not labeled in one way or another.

So yes, physiologically we are too stupid to not be bigots. All bigots are stupid. We are all bigots. In order to not be, or at least not behave like one, you have to be motivated. Messing one's entire life in a matter of days with an onslaught of sympathetic and coordinated allegations would do that quite well. That doesn't mean it's the right thing to do, any more than it would be to "kill off" people who disagree with you. Therefore in matters such as these I cannot help feeling sympathetic towards people who are quite literally dicks. It doesn't mean I agree with what they did, it means I don't agree with what anybody did. And in such moments of sympathy I hear the parts of me that current society wants erased shouting for attention: "See, we were right! We are dicks, but these moralists are überdicks!" I listen to bits of me that want everything wrong with the world to be the fault of poor people, women, people from other nationalities, races or religions, certain jobs or certain types, having certain cars or behaving or dressing in a certain way. It would be so easy to navigate a world like that: just kill off the Jews and black people, put women in their place, write code only in C#, rename the island of Java to DotNet, be happy!

Yet it is obvious it doesn't work that way. Not even white males wouldn't want this to happen, most of them. How do I make the voices shut up? Clearly witch hunting offenders until their lives are more upended than if they stole or ran someone over with their car does not work. And the answer, from my own limited experience, seems to be contact. Whenever I am inclined to say all Chinese or Indians are stupid (which is numerically much worse than being antisemitic and so many people from my background are guilty of it) and I meet a brilliant Asian programmer or entrepreneur or simply an articulated and intelligent human being I am forced to revisit my assertion. Whenever I think women can't code and I meet young girls smarter and more energetic than I am I have to drop that, too. Whenever I want to believe black people smell or are violent or are genetically faulty and I see some Nubian Adonis talking high philosophy way over my head, I just have to stop. If these people would all go hypersensitive, get offended by everything I say or do and gang up on me for being limited in my view, I clearly won't be motivated or even have the opportunity to grow out of it. Of course gay people and Jews are responsible for all evils on Earth if they are the ones making my life hell. And it is also easy to remain bigoted if I surround myself with people just like me. I've read somewhere a statistic that showed racists usually live in areas where they lack contact with people of color.

Basically, what I want to say is that I see no reason why someone would want to be paranoid. Either there is something wrong with them or people are really out to get them. And it is so easy to label someone "the enemy" and just pound on them, so easy to blame anyone else for your troubles, so easy to enter the flight or fight mode that is encoded in our very beings. I see this with my dog: he avoids big dogs since a big dog attacked him. If he continues this trend, he will certainly avoid getting attacked again by a big dog, while trying to get acquainted with them might result in injury or even death. It's so easy to decide to avoid them, however nice they smell and how nice they play. For him it is a very limiting, but rational choice.

Hide your inner bigot, cage him in the darkest depths of your soul, and it will grow stronger, malignant, uncontrolled. This is what civilization, especially the forced kind, does to people. It makes them think they are something else, while inside they are cancerous and vile, just waiting to explode in the worst way. Instead, I propose something else: take your bigot for a walk, talk to it, introduce it to people. Maybe people will start avoiding you like the plague, but that's their own bigotry at work. And soon, you will probably be the progressive one. It's hard to be a racist if you have a black friend and difficult to be a misogynist when you meet wonderful humans that happen to be female. You will make the bad joke, you will expose your limits and the world around you will challenge you on them. But in the end, your limits will expand, people who matter will understand and appreciate your growth, and frigid feminazi Jew lesbos can go to hell.

You know that joke, about the guy who wants to become progressive, so he is searching for a gay friend? Why not try it the other way around? Find a bigot near you and make friends.

Friday, 23 February 2018

Mate in two, easy right?

In both these positions, White to move and mate in two moves. Can you spot them?

[SetUp "1"]
[FEN "2B5/K7/6p1/3QpNbb/4Pkp1/3P4/3PqP2/5RN1 w - - 0 1"]
1. Nd4 Qxf2 (1. .. Qf3 2. Ne6#) (1. .. Qe1 2. Ne6#) (1. .. Qe3 2. dxe3#)
(1. .. Bh6 2. Ne6#) (1. .. Qxe4 2. Qxe4#) (1. .. g3 2. Nh3#) 2. Ne2# *

[SetUp "1"]
[FEN "7b/3PKn2/1R2N1P1/1pr1k3/1N3p1Q/1pP1r2n/4pR2/BB6 w - - 0 1"]
1. Nd4 Nxf2 (1. .. Rcxc3 2. Ndc6#) (1. .. Rc8 2. Re6#) (1. .. f3 2. Re6#)
(1. .. Bf6+ 2. Qxf6#) (1. .. Nd8 2. Qxh8#) (1. .. Nfg5 2. Qxh8#) (1. ..
e1=Q 2. Re6#) (1. .. Rc6 2. Ndxc6#) 2. Re6# *


Here it is in video format:

Wednesday, 21 February 2018

Martin Eden, by Jack London

book cover Until recently, all I knew of Jack London is that he wrote White Fang, which I read when I was a child and to my shame sometimes mix up with Romain Gary's White Dog, and To Build a Fire, which is a short story I really liked, but which I mostly use as an example of how cold some places on Earth are. At a friend's recommendation I started reading Martin Eden and I really loved it.

Slowly building the characters and with careful attention to details of action and thought and feeling, London is both heavily autobiographical and feverishly critical of society as a whole. An extreme version of his own history, Martin Eden's character is a street ruffian who had to fend for himself since he was eleven years old. A chance meeting with a beautiful young girl from high society makes him want to be more so he dedicates his life to reading, learning and becoming more like the ideal he believes people in high society embody. Handsome, strong, very smart and blessed with good health and powerful will, he does just that, in short time managing to cross the cultural gap and then continuing to grow and learn until he even becomes a critic of the people he saw as gods just a few years ago.

There is so much more to the book, though. The transformation carries the reader through every strata of society, dissecting behavior, culture and belief, making bold philosophical claims while making one feel and understand from the point of view of this amazing character and others. At the time of the writing, the book was not well received, mostly because of the ending, which I won't spoil here, but how premonitory it was to describe similar events to the actual fate of the book itself! Now it is considered one of the best Jack London books and the one he is more known for.

I've read the Andrew Sinclair introduction after I've finished the book, which is what I really recommend to everyone, since it spoils the entire story. From the intro we learn that the book is heavily based on the author's own life and also of the differences between Eden and London's stories. Sinclair also criticizes some parts of the book, where the writing was not as good or was discordant with the rest of the work, but I personally liked every bit of it. Used to a classical story structure, I always expected some things to happen which did not or happened differently, an early sign that so much of this is based on real life. But also, I feel that having Martin Eden be endowed with so many positive attributes made the book a bit less accessible that it should have been, for the character is a beast of will and life force, of health and capacity of work. London was not as fortunate himself and many a reader will probably feel as I did, that the book hints that only an extraordinary person can break away from their position in life and maybe it isn't worth it anyway. Intended as a critique of individualism and personal ambition, it falls a little flat when we encounter the person London probably dreamed to be.

Bottom line: a powerful book on the nature of life values, as they are taught, believed, chosen and created, about how illusion can spur one to magnificent deeds and hard achievement sour the taste of life itself. It talks of the inner and outer drives of people, making them both majestic and ridiculous. It felt realistic and somehow uplifting and terribly depressing at the same time. I highly recommend it.

How to use a Javascript script in Typescript (Angular 5 CLI)

I am in the process of converting an old web site to Angular 5 CLI. Little technical value other than I need to understand the underlying concepts, but I needed to take some Javascript code and execute it in Typescript, the de facto language for Angular. And you hear that Typescript is a super set of ECMAScript, but it's not as easy to integrate existing code.

So, first of all, we are talking pure Javascript code, not set up as a module or anything more advanced. Let's say something like function say(message) { return 'I say '+message.content+' ('+messsage.author+')'; }. It's a simple function declaration receiving a message object with the fields content and author and returns a string. How to use it in Typescript, which is a strong typed language?

First of all, you need to load the script itself. The file can be added to angular.cli.json, in the scripts section, like this:
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"assets/js/someJqueryThing.js",...

Next, in the Typescript file you want to execute the code, import the script:
import('someJqueryThing')
(note that it is not some import something from something else syntax, just the name of the script, so that it is bundled in for that page. But at this moment Typescript tells you there is no say method, and that's because you have not declared it for Typescript.

There are two options. One is to add a file called someJqueryThing.d.ts in the same folder with the .js in which you declare the signature of the say function, the other is to declare it in the .ts file you are running the Javascript from. The syntax, for this case, is
declare function say(obj:any):string;
You could declare an interface and specify what kind of object say receives
interface Message {
content:string,
author:string
}
declare function say(message:Message):string;
, or you can even declare var say:any;

Tuesday, 20 February 2018

ASP.Net Core gotcha: Hosting my site in IIS Express, not Kestrel

I did something and suddenly my API was not run in IIS Express anymore, but in Kestrel. I reviewed code changes, configuration changes, all to now avail. I don't want Kestrel, I want IIS Express!!! Why did Visual Studio suddenly decided to switch the development server?

Solution: it is your Visual Studio. The button you use to start debugging has a little dropdown that allows you to choose which server to use. I had probably pressed the wrong one at some point.

Sunday, 18 February 2018

My totally unbiased experience with bitter apricot kernels

You will quickly understand why I felt the need to say I was unbiased, but let me first demonstrate how much unbiased I was: I went into this raw fruits store, with an errand from the wife, and wanted to get something from me. Usually I like the caju and macadamia nuts, but I didn't want to have the conversation about why did I spent so much on something I eat out of boredom, so I looked around to get something else. And here they were, packaged and sold just like any other dried fruits or nuts: bitter apricot kernels. So I bought a 200 g bag.

Back in the office, I opened the bag up and I started eating. They were bitter as hell, but I didn't mind it much. I was eating some of them, then switching to candied ginger (which I'd absolutely love if it weren't so sweet), then back again. After a while, though, I'd had enough. About half of the bag in, I couldn't really find a reason to keep eating them. My colleagues had all refused to eat (and spit) more than half of one. But I was curious what they were actually for. People who love bitter tastes, maybe?

So went on the Internet and KABOOOM! mind blown. Just for scale, try to look for yourself at the dimensions of the can of worms I'd just opened: apricot kernels.

Turns out that the "active ingredient" in the apricot kernels is amygdalin, a substance that turns to cyanide in the gut. Yes, you've heard that right: I had just bitten the tooth, dying for the motherland before I could spill the beans. Google had already failed miserably, by serving first a page that explained how Big Pharma and governments conspired to keep this wonder drug from the public. The second page was Wikipedia, then every single conspiracy nut site, sprinkled with the occasional very dry scientific study that bottom lined at "we don't really know".

But I am getting ahead of myself. At this point I was already severely biased and I first need to describe my earnest experience to you. Short story: accelerated heartbeat, fever, terrible headache and nausea that lasted for half a day. Also, didn't die, which was good.

Back to my rant. So, some guy looked at the chemical structure of amygdalin and thought it looked like a B complex vitamin, so he named it vitamin B17. It was quickly marketed as a cure for cancer, despite numerous trials to show that it wasn't. And no, it's not a vitamin for humans either. It is not made in the human body, but it's not needed, either. The bag was not labeled anything dangerous, because it came from the outside of the European Union, which has a law regarding this. Here is some advice for both the EU and the US. Turkey was OK, though, so it only said "great for cancer, eat 5 to 8 seeds daily, not all at once".

So how fucked was I after eating about one hundred of them? A European Food Safety Authority article said that eating three kernels exceeds the safe level for adults. A toddler could do that from just eating one. An article from Cancer Council Australia detailed the child fatalities due to ingesting apricot seeds. Another article was telling me of an adult who got poisoning, but he was both stupid and extreme (he was taking a concentrated extract) and didn't die anyway. A thousand other sites were telling me how amazing my health will be after I had just eaten ten times the daily dosage they suggested.

Drowned in the sea of controversy regarding apricot kernels I've decided to look for the chemical and medicinal treatment for cyanide poisoning. Step 1: decontamination. It was kind of too late to go to the toilet and do the anorexia thing. Step 2: take some amyl nitrite (and then some intravenous things). Wait, that's a party drug. I could maybe get one in a sex shop. There was no home remedy and most of all, even if the amyl nitrite seems to work, no one seems to know exactly why other than the vasodilating effect it obviously has. Another possible antidote is (ironically) hydroxocobalamin, also called vitamin B12a. In the end some vitamin C and a headache pill did wonders, just in case you eat a bunch of apricot kernels and feel awful. Obviously, if it were a serious condition I would have died at the keyboard, trying to wade through the marketing posts and the uselessly dry official reports. Also, not enough easily available party drugs, I dare say.

So, days later the bout of shaky hands, fever and the horrible headache that only blood oxygen deprivation can bring, I decided to write this post. I doubt people will find it with Google, but maybe just my immediate friends will know not to eat this crap.

Saturday, 17 February 2018

Stargate Origins - a horrible beginning

The main characters and the worst actors A pilot for the much awaited Stargate Origins series was released. My prognosis: it will be a disgusting flop, yet remember that Stargate SG-1 was kind of terrible in the beginning and it went very far in the end. Since SG-1 and Atlantis went really over the top, the only solution was a prequel, but considering the Stargate universe, I bet it will be very difficult to reconcile any prequel with the events in the existing series.

First of all, there is the distribution format: it's a web series. Instead of a pilot episode lasting 45 to 60 minutes, they released three episodes, 10 minutes each. The "webisode" format doesn't give me a lot of hope. However, this might be a marketing ploy, to check how many people are actually still interested in the franchise. If they see they have a big fan base, they can always improve the show or start a serious one.

But now comes the real bummer: the quality of the show, from the productions values to script and acting, is abysmal.

They went with the gender swap crap: female protagonist, female director, etc. Yet instead of a character we can sympathize with or want to be her, we get an abusive, annoying and very stupid person who, if they were male, would have been pathetic and offensive. As female, it grates the nerves. See the scene where, tied up, surrounded by Nazis with guns who have her father hostage, she spits, bites and says "you're a dead man" and "next time I'll really make you bleed" to a Nazi officer. It does feel like the role was written for an adolescent, maybe prepubescent boy, then it was changed just a little for a 19 year old woman.

Which brings me to the next point: the Nazis. The Nazis again, portrayed as they always are: ugly, mean, pompous, fanatical, always mentioning their Führer, stupid, narrow minded, etc. How can you do any good writing with cardboard characters? The answer: you can't. Start a show like this and you miss out the opportunity to see the Americans, British and Nazi Germans cooperate against the teachings of their respective cultures in order to defeat the Goa'uld threat. I have high hopes for the camerawoman, who in all this disaster seems to have escaped with good characterization and a decent actress.

Last, but not least, the production values would have been bad in a student project. Almost no post processing, the special effects are horrid, the soundtrack is slapstick from other series and there are some moments (an alien landscape seen through a window which is an obvious pastel drawing, for example) that make you wonder which 10 year old genius made that for a school project.

So you have a cheap production that a few fans in a basement would have done better, marred by bad setup, unusable characters and stupid writing. All of these can change: money can be spent, writers and directors changed or motivated, step taken to improve something that fans have been waiting for for a long time. However, what cannot be changed are the actors. The lead actress is bad, as are the two "young good guys". There is no getting around that. The others are not much better. Even Connor Trinneer, who you might remember as Trip, the engineer in the Star Trek: Enterprise series (and was also in a few episodes of SG Atlantis) and in this plays "the father", acted dazed and confused, as if asking "how did I get here? what am I doing?" in every scene. He was probably regretting taking the role. And he is 48 years old, he could have played the dad without the cheap white hair and mustache.

Bottom line: Trying to YoungIndianaJonesize Stargate was always a tough sell. Doing it with such lack of respect for the franchise and to the cinematic art is mind boggling. Didn't they want to succeed with this? I am baffled. Here is the trailer.