and has 0 comments

  The Dragon in the Sea could have been a story about real life submariners as, other than a few details really, the novel is barely science fantasy. The story is about a near future in which the West and the East are in an eternal Cold War where no one trusts anyone because of deeply embedded sleeper agents and where conflict is fought in the ocean between sophisticated nuclear submarines over underwater oil reserves. Places like the British Isles have been nuked into oblivion and the big prize is bringing home petrol syphoned from the other side.

  The entire action of the book happens in such a submarine, tasked to go through enemy lines and extract oil from a hidden reserve. There are no chapters, just one long and action filled story. Yet the focus is not so much on the world or the technology, although both are described pretty well, but on the characters, on why and how they function, on what such a prolonged and tense conflict can do to people's psyche. The main character is indeed a psychologist, while also an electronics specialist, in a crew of four - including the captain.

  The careful analysis of character motivation and inner thoughts is reminiscent of Dune, but also the idea of global conflict over a finite resource affecting the entire ecology and sociology of the planet and extreme peril changing people to their core. Ten years before Frank Herbert was publishing Dune, its seeds were clearly already planted.

  To me it was a fascinating read. It was one nonstop trip filled with danger, but the author was clearly interested in how the characters were functioning under extreme stress and how it translated at a very visceral and atavistic level. It was a combination of action and psychoanalysis, still a bit unpolished, but deep and insightful. I liked how Herbert hinted at what the world had come to by just placing a few crumbs of information in an otherwise uninterrupted sub adventure. Imagine Das Boot, but with a socioeconomic and psychological message in it. I liked it! 

and has 0 comments

  Unpublished Stories is a collection of 13 short stories written by Frank Herbert and never published during his lifetime, only two of them sci-fi, which was published in 2016.  One can see the focus of Herbert on the characters, on their motivations and their inner thoughts, the way their actions affect the whole.

  The collection consists of:

  • The Cage - a soldier is sent to a psych ward after a head injury where he is tortured by a sadistic caretaker under the threat of pinning some mental illness on him
  • The Illegitimate Stage - a couple of play stage professionals are hired to materialize a play written by a wealthy sponsor, then start to form a bond with the hapless woman
  • A Lesson in History - a husband experiences the tension of remembering his war days and his mistress then, while having to hide all signs from his wife
  • Wilfred - a story about the total psychopathic transformation of a man and the bafflement of society around him
  • The Iron Maiden - a young soldier begs for advice from his more experienced friend on how to woo the girl he is in love with
  • The Wrong Cat - a woman is terrorized by a murderous madman
  • The Yellow Coat - a cowardly man becomes stronger from pushing through danger and trauma, but no one believes it
  • The Heat's On - a fireman investigates a strange series of deaths by fire
  • The Little Window - an unexpected event shakes the owner of a shoe shop and his nephew from their complacency
  • The Waters of Kan-E -  a story of survival in the Polynesian ocean
  • Paul's Friend - another story about survival at sea
  • Public Hearing - a scientist explains to helpless politicians that their armed power has become obsolete when everyone can build a world destroying weapon
  • The Daddy Box - an alien device starts fixing humanity by starting small

 Even without any actual connection to Dune, there is evidence of the seeds of the novel in many of the stories within. For example in A Lesson in History, there is the idea that a woman can discern the thoughts of a man from tiny disparate actions and gestures. In The Yellow Coat a man's psyche is transformed by adversity. In Public Hearing the weapon described is very similar to a Dune lasgun, while The Daddy Box features a way to change a society by tackling the basics of the family unit.

  The stories are short and the collection is not a big book. If you are interested in how Frank Herbert's mind worked, this is something that is worth reading, without any of the stories inside being really that special. I enjoyed the book, but without my interest in the author I would not probably have recommended it to anyone.

and has 0 comments

  Oh, the disappointment! Considering I loved the Frank Herbert's Dune books and I've read them repeatedly, I was expecting to at least like something from his son's books set in the same universe. I mean, how bad could it be? He even wrote it in collaboration with a seasoned writer. Well, bad! I hated everything: the writing, the world which is completely different from Frank's, but mostly that Brian Herbert seems to have missed the point of Dune completely!

  Gone are the superhuman abilities of people that had ten millennia to evolve, after escaping A.I. annihilation and brutally training themselves  on hostile planets to become the best version of a human being. Gone are the thoughtful insights into people, the careful dialogues, the grand visions. What we get instead is formulaic trope after formulaic trope, the standard writing style taught by hacks in most "writing classes" in the U.S., dull characters, boring writing, dumb people, unneeded attention to technology and little to worldbuilding or character development, cramming all storylines and possible characters and references to the original books together. And then the way things people have not learned about the Dune universe until the sixth book, just casually blurted in a prequel book, just because Brian wanted to check all the boxes.

  I mean, there were moments when something was happening, like a full Reverend Mother assessing the situation in a dangerous context. And I was thinking "It's on now! She will come with brilliant insights, impossible strategies, use her..." and Brian started to describe the lighting in the room! Consider that this book has a lot going for it in terms of source material. I love the original Dune books so each reference, each character, each world, each culture that existed in those books should have anchored me to this one. But even so I couldn't damn finish it. After three weeks of forcing myself to read it I have barely reach half. No more!

  I am not unreasonable. I know that probably Brian Herbert was pushed to be a writer, even if he didn't have the skills or maybe even the drive. I know that people are not instantly good at what they are doing and that after a shitty book they have the opportunity to grow when writing the next ones. There are 25 books and comics in the Dune universe now! When the hell did he write all of those? Surely at least some of them would be good. But this first one is so bad, so incredibly bland, that I have no desire to read anything written by Brian Herbert ever again, except perhaps the biography of his father. I mean, at least he will have been invested in that one, right? He can't murder his dad's story like he did his legacy!

  I would rather (and I actually plan to) reread everything Frank Herbert ever wrote than try another butchery of Dune by Brian Herbert.

and has 0 comments

Ancient Enemy is one of those card games that abstract a journey of discovery and battle. You charge your magic by playing Solitaire "combos", then fire at the enemy. The choices you make on your journey don't matter at all, they are just levels to pass through that barely differ from each other. That's the entire game!

So why did I play it? Well, because the sound and the texts that my character was "saying" were intriguing. Ironically enough, the game had a "Skip story" button, when in fact that was the only thing that interested me - I wanted a "Skip game" button. Alas, the end of the journey was a complete let down, with a generic enemy that presented no challenge and a blunt and uninspired story ending.

Honestly, when I was playing it I thought: anybody can make games and sell them if this is a Steam game that people pay money for. Just look at the official site of this 2018 game: it looks like it was made in 2000.

Bottom line: fascinating how soundscape can make even the most boring games hold one's interest. Here is a gameplay video:


and has 0 comments

Update: apparently, the site is back on!

Now for the previous content:

  With sadness I found out that Z-Library, a web site filled with (pirated) free books and science papers has been shut down by FBI, in collaboration with Argentina, Amazon and Google. Strange how much effort can be done to close down sites with actual information on them.

  Not unexpected, the site operators were Russian, Anton Napolsky and Valeriia Ermakova, and were apprehended in Argentina by local forces, although it's not clear if they will be extradited to the U.S. or not. We know from numerous examples that the American government is terrified of technical people with access to information and the ability to disseminate it and banks on making examples of them as much as possible, so while I am rooting for them, I doubt the two will ever be truly free every again.

  The investigation was of course helped by Google and Amazon, but it's pretty clear that the duo did not use any smart way of protecting their identity. Apparently, they just got too annoying and were crushed as soon as the will to stop them materialized.

  It is not clear exactly if all of the Z-Library team have been identified and stopped. Perhaps the web site will surface once again. For certain, some alternative will pop up sooner or later as books are small and easy to share.

  Z-Library has started as a clone of Library Genesis, another similar site, but it had gotten clearly bigger and better. Too big for its own good. 

and has 0 comments

  Recently I've been to Madeira, a Portuguese island colony with a powerful blend of nature, culture, feudal interests and overall corruption. The game Alba: A Wildlife Adventure made me feel like I was back!

  First of all, this is a game that was clearly done with a lot of heart. Every aspect of the gameplay is fun, positive and well crafted in all the things that matter. After playing the game, not only was I happier and more content, but I felt refreshed by imagining the pride the creators must have felt designing and finishing development. There is NO sense whatsoever of cutting corners, trying to money grab or following any political agenda (other than wildlife conservation, if you count that one). In spirit, it reminded me of the Sierra Entertainment Games.

  The plot is also very refreshing: you are playing a little girl who has grandparents interested in nature and which inspired her to care about life as well. Returning to a fictional Spanish island of her early childhood, Alba will clean up the island, photograph all kinds of animals, help them survive and thrive and fight commercial interests that threaten the island's wildlife. It is a casual gameplay - to the point that whenever you don't find something you are looking for, it means you just have to end the day and it will magically appear in the future for you - in which you explore a lovely island filled with birds, beautiful flora and tropical climate.

  What amazed me most was that there are 51 species of animals portrayed in the game and every one of them is behaving like the actual live species. The walk, the flight patterns, the speed, the sounds, they are all very precise (in the confines of a pretty simplistic graphical interface). Then there are the little things like when you have to make a yes/no decision you use the mouse to bob the head vertically or horizontally. There are no places where your 3D character gets hung up in some wall or caught between obstacles or  seeing/passing through objects. Even the interaction with objects take into account where the player is looking, it's not just a lazy area effect where you can just move around and press the action button aimlessly.

  Another nice thing is that I can imagine small children playing this game and feeling inspired and empowered, while at the same time adults understand the ironic undertones of some of the scenes. Stuff like the little girl gathering garbage from the ground and putting it in the bin, then talking to a native of the island sitting on a bench nearby and complaining about random stuff. Or everybody condescendingly commending the girl for her efforts, but mostly doing nothing to help. Or even phrases like "oh, yeah, it was a great idea to fix the stairs. Why didn't I do it before? Oh, well, it's good you did it".

  The only possible complain I might have is that the game is pretty linear and the replay value is small to nonexistent. But for the few hours that it takes to finish (which was good for me since I am... married  ), it was refreshing and calming.

  I admit, I am not a gamer. This might be just one of a large category of similar games for all I know, but I doubt it. I worked in the video game industry and I am willing to bet this game is as special as I feel it is. I warmly recommend it.

  Here is the gameplay trailer for the game:


  There is a common task in Excel that seems should have a very simple solution. Alas, when googling for it you get all these inexplainable crappy "tutorial" sites that either show you something completely different or something that you cannot actually do because you don't have the latest version of Office. Well, enough of this!

  The task I am talking about is just selecting a range of values and concatenating them using a specified separator, what in a programming language like C# is string.Join or in JavaScript you get the array join function. I find it very useful when, for example, I copy a result from SQL and I want to generate an INSERT or UPDATE query. And the only out of the box solution is available for Office 365 alone: TEXTJOIN.

  You use it like =TEXTJOIN(", ", FALSE, A2:A8) or =TEXTJOIN(", ", FALSE, "The", "Lazy", "Fox"), where the parameters are:

  • a delimiter
  • a boolean to determine if empty cells are ignored
  • a series or text values or a range of cells

  But, you can have this working in whatever version of Excel you want by just using a User Defined Function (UDF), one specified in this lovely and totally underrated Stack Overflow answer: MS Excel - Concat with a delimiter.

  Long story short:

  • open the Excel sheet that you want to work on 
  • press Alt-F11 which will open the VBA interface
  • insert a new module
  • paste the code from the SO answer (also copy pasted here, for good measure)
  • press Alt-Q to leave
  • if you want to save the Excel with the function in it, you need to save it as a format that supports macros, like .xlsm

And look at the code. I mean, it's ugly, but it's easy to understand. What other things could you implement that would just simplify your work and allow Excel files to be smarter, without having to code an entire Excel add-in? I mean, I could just create my own GenerateSqlInsert function that would handle column names, NULL values, etc. 

Here is the TEXTJOIN mimicking UDF to insert in a module:

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
    Dim d As Long
    Dim c As Long
    Dim arr2()
    Dim t As Long, y As Long
    t = -1
    y = -1
    If TypeName(arr) = "Range" Then
        arr2 = arr.Value
        arr2 = arr
    End If
    On Error Resume Next
    t = UBound(arr2, 2)
    y = UBound(arr2, 1)
    On Error GoTo 0

    If t >= 0 And y >= 0 Then
        For c = LBound(arr2, 1) To UBound(arr2, 1)
            For d = LBound(arr2, 1) To UBound(arr2, 2)
                If arr2(c, d) <> "" Or Not skipblank Then
                    TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
                End If
            Next d
        Next c
        For c = LBound(arr2) To UBound(arr2)
            If arr2(c) <> "" Or Not skipblank Then
                TEXTJOIN = TEXTJOIN & arr2(c) & delim
            End If
        Next c
    End If
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function

Hope it helps!

  I got lazy about the blog and it shows. I rarely write about anything technical and the state of the existing posts is pretty poor. I want to improve this, but I don't have a lot of time, I would certainly appreciate feedback on what you find fixable (in general or for particular posts) or new features that you might like.

  I've updated the file structure of the blog, working mostly on fixing the comments. It should now be easier to structured text in a comment, like HTML, code, links, etc. Also tried to fix the old comments (there were three different sources of comments until now, with some duplicated)

  Please let me know if you see issues with adding comments or reading existing comments. Or perhaps missing comments.

  I've added the link to a post you can comment in for general issues (see the top right section of the blog, the last icon is for comments )


and has 0 comments

  Whenever I want to share the analysis of a particular opening I have difficulties. First of all, I am not that good at chess, so I have to depend on databases and computer engines. People from databases either play randomly or don't play the things that I would like to see played - because they are... uncommon. Computer engines, on the other hand, show the less risky path to everything, which is as boring as accountants deciding how a movie should get made.

  My system so far has been to follow the main lines from databases, analyze what the computer says, show some lines that I liked and, in the end, get a big mess of possible lines, which is not particularly easy to follow. Not to mention that most computer lines, while beautiful in an abstract kind of way, would never be played by human beings. Therefore, I want to try something else for this one. I will present the main lines, I will present how I recommend you play against what people have played, but then I will try to condense the various lines into some basic concepts that can be applied at specific times. Stuff like thematic moves and general plans. It's not easy and I may not be able to pull it off, but be gentle with me.

  Today's analysis is about a line coming from the Cunningham Defense played against the King's Gambit, but it's not the main line. It's not better, but not really worse either. I think it will be surprising to opponents.

  We start with King's Gambit accepted: e4 e5 f4 exf4 Nf3, which is the best way to play against the gambit, according to machines and most professional players. Now, Black plays Be7 - the Cunningham defense, with the sneaky plan of Bh4+, Nxf4, Qh4+, forcing the king to move or try to futilely block with g3 and lose badly (or enter the crazy Bertin Gambit, which is very cool, too). Amazingly, there is little White can do to prevent this plan! White entered the King's Gambit with the idea to get rid of the pawn on e5 and play d4, controlling the center. The main line says that, after Be7 by Black, White's light square bishop has to move, Bc4 for example, making way for the king to move to f1.

  What I want to do, though, is not to move the bishop, but instead continue with the d4 plan. I am going to show you that moving the king is not that bad and that, succeeding in their plan, Black may overextend and make mistakes. There are some traps, as well. The play, though, has to be precise.

  And I dare you to find anybody talking about this particular variation! They all assume Bc4, h4, Nc3 or Be2 are the only options.

  Let's start with the main lines, in other words, what people play on LiChess from that position:

  As you can see, most played moves are bad, starting with the very first one: Ke2. Instead, what I propose is Kd2, with the idea c3, followed by Kc2. The king is relatively safe and there are some naturally looking moves that Black can end up regretting. Next stop, playing correct moves vs the most commonly played moves on LiChess:

  While it doesn't give an obvious advantage - what I propose is not a gambit, just a rare sideline with equal chances, it gives Black plenty of opportunity to make a mistake. Let's see where Black's play on LiChess agrees with Stockfish strategy and note that Black never gets a significant advantage, at the human level closest to perfect play:

  Finally, before getting to the condensed part, let's see how Black can mess things up:

  Note that there are not a lot of games in this variation, so the ideas you have seen above go just as far as anyone has played in that direction. Computer moves are wildly different from what most people play, that is why machines can be good to determine the best move, but they can hardly predict what humans would do.

  In conclusion, without blundering, Black keeps an extra pawn but less than 1 pawn evaluation advantage, meaning White always keeps the initiative, despite having the king in the open.

  White's plan is to keep control of the center with e4, d4, followed by c3 and Kc2, Bd3 or Bb5+, Bxf4, Nd2, etc. White's greatest problem are the rooks which need a lot of time to develop. The attack can proceed on the queen's side with Qb5 or on the king's side with pushing the pawns, opening a file for the rook on h1. It's common to keep the dark square bishop under tension on h4, blocking Black's development, but then take it and attack on the weakened dark squares or on the queen's side, once Black's queen in on the other side of the board.

  I would expect players that are confident in their endgames to do well playing this system, as most pieces are getting exchanged and opponents would not expect any of these moves.

  Here are some of the thematic principles of this way of playing:

  • After the initial Bh4+, move the king to d2, not e2, preparing c3 and Kc2
    • while blocking the dark squares bishop, it uses the overextended Black dark square bishop and the pawn on f4 as a shield for the king
  • if d5, take with exd5 and do not push e6
    • opens the e-file for the queen, forcing either a queen exchange or a piece blocking the protection of the h4 bishop from the queen 
    • a sneaky intermediate Qa4+ move can break the pin on the queen and win the bishop on h4
  • if d6, move the light square bishop
    • Bd3 if the knight on b8 has not moved
      • allows the rook to come into the game and protects e4 from a knight attack (note that Nf6 breaks the queen defense of h4, but Nxe4 comes with check, regaining the piece and winning a pawn)
    • Bb5+ if the knight has moved
      • forces the Black king to move. If Bd7, then Bxd7 Kxd7 (the queen is pinned to the bishop on h4)
    • note that if Nc6 now, d5 is not a good move, as it permits Ne4 from Black
    • Qb5+ can win unprotected pieces on g5 or h5
  • once both Black bishops are active on the king's side, c3, preparing Kc2 and opening the dark square bishop to take the pawn on f4
    • play c3 on d6 followed by Nc6 as well
  • Nc6 is a mistake if there is no pawn at d6. Harass the knight immediately with d5:
    • Na5 is a blunder, b5 traps the knight
    • Nb5 gives White c3 with a tempo, preparing Kc2
    • Nb1 is actually best, but it gives White precious tempi (to play c3)
  • White's c4 instead of c3 is an option, to use only after Bg5, preparing Nc3
    • c4 might seem more aggressive, but it blocks the diagonal for the light square bishop
    • c4 may be used to protect d5 after a previous exd5
    • c4 may be used after a bishop retreat Be7 followed by Nf6 to prevent d5
  • White's Kc2 prepares Bxf4, which equalizes in most cases by regaining the gambit pawn
  • Black's Nf6 blocks the queen from defending the bishop on h4, but only temporarily. Careful with what the knight can do with a discovered attack if the bishop is taken.
    • usually a move like Bd3 protects e4. After Nxh4 Nxe4 Bxe4 Qxh4 material is equal, but Black has only the queen developed and White can take advantage of the open e-file
    • Kc2 also moves the king from d2, where the knight might check it
  • Keeping the king in the center is not problematic after a queen exchange, so welcome one
    • Qe1 (with or without check) after Nxh4, Qxh4 is a thematic move for achieving this
  • One of Black's best options is moving the bishop back Be7, followed by Nf6. However, regrouping is psychologically difficult
    • in this situation c4 is often better than c3
  • After Bg4, Qb5+ (or Qa4+ followed by Qb5) unpins the queen with tempo, also attacking b7 and g5/h5

  I hope this will come in handy, as a dubious theoretical line :) Let me know if you tried it.


  After analyzing with a bunch of engines, I got some extra ideas.

  For the d5 line, pay some attention to the idea of taking the bishop with the knight before taking on d4. So Kd2 d5 Nxh4 Qxh4 exd5. I am sure engines find an edge doing it like that, but I feel that at the level of my play and that of people reading this blog (no offence! :) ) it's better to keep the tension and leave opportunities for Black to mess up.

  Another interesting idea, coming from the above one, is that the Black queen needn't take the knight! Taking the pawn (dxe4) and developing the knight (Nf6) are evaluated almost the same as Qxh4! This is an idea for Black, I won't explore it, but damn, it seems like no one loves that horsey on h4!

  Then there are the ways to protect the doubled pawn on d5, either with c4 or Nc3. Nc3 is not blocking the light square bishop and allows for some possible traps with Bb5+, yet it blocks the c-pawn, disallowing Kc2. c4 feels aggressive, it allows both a later Nc3 and Kc2, but leaves d4 weak. Deeper analysis suggests c4 is superior, but probably only in the d5 lines.

  When Black's queen is on h4, White needs to get rid of it. Since the king has moved, an exchange is favorable, but it also removes the defender of the pawn on f4.

  Some rare lines, Black plays Nh5 to protect f4. The strange, but perfectly valid reply, is to move the knight back, allowing the queen to see the Black knight: Ne1 or even Ng1.

  In positions where the king has reached c2 and there is a Black knight on c6, prevent Nb4 with an early a3.

  In the d6 line, Black has the option to play c5, attacking the pawn on d4. Analysis shows that dxc5 is preferred, even when the semifile towards lined up king and queen opens and the pawn takes towards the edge. Honestly, it's hard to explain. Is the c-pawn so essential?

  If you've read so far, I think that the best way for Black to play this, the refutation of this system so to speak, is bishop back Bg7 followed by Nf6. And the interesting thing is that the reply I recommended, c4 preventing d5, may not be superior to Nb3 followed by exd5.

and has 0 comments

  I am not really a King's gambit man, but a friend of mine loves to play it so I've started looking into it and stumbled upon this very interesting variation which I found very instructive. Basically White is gambitting not only a pawn, but also a piece, all for development and immediate attacking chances. Now, if you thought King's gambit is a romantic era chess opening that has been refuted (no, it has not been, but that's all what people remember from the title of an article written by Robert Fischer 50 years ago) then you will probably will think this continuation is lunacy.

  Luckily, LiChess makes chess study so simple that even I may sound smart talking about it, so here it is. The position begins from King's gambit accepted - which is the best line for Black according to computer engines, continues with the Rosentreter gambit - allowing Black to chase the important f3 knight away, then White completely abandons the important knight - the so called Testa variation! And then White sacrifices another piece! It's so much fun.

1. e4 e5 2. f4 exf4 3. Nf3 g5 4. d4 { Rosentreter gambit } 4... g4 5. Bxf4 { Testa variation } 5... gxf3 6. Qxf3 { At this point, evaluation is just -1.2, even after sacrificing a piece for a pawn! } 6... Nc6 7. Bc4 Nxd4?? { Black has fallen into the trap. Note that other than the beginning gambit moves and this blunder, all Black moves are Stockfish best moves. } 8. Bxf7+ { Boom! Stockfish evaluation jumps to +5, but getting there takes some time. } 8... Kxf7 9. Qh5+ { No greedy discovered check here as the Queen is under attack. }

  Note that there is another similar opening as the gambit I am discussing, also arising from the Rosentreter variation of the King's gambit, where instead of coming up with Bc4, White plays Nc3 - the so called Sørensen Gambit. Similar or same positions may be reached from From's gambit, Vienna gambit, Steinitz gambit, Polerio gambit or Pierce gambit.

  Lieutenant Colonel Adolf Rosentreter was a German chess played who lived between 1844 and 1920. He seems to have been a gambit loving chess player, as there are at least two gambits named after him, the most famous being the Giuoco Piano one, which he used to completely destroy a Heinrich Hoefer in 1899, in just 13 moves. Funny enough, in the LiChess player database there are 10 games that end in an identical fashion. I don't know who Testa was, who is possibly the one who should be lauded for this version of the opening.

  Anyway, the post is about the gambit in the King's gambit. From my analysis, White can have a lot of fun with this opening. Also, none of the main lines (played the most in LiChess for various ratings) are actually any good, in the sense that the few people who employ the gambit don't know how to implement it best and their opponents usually blunder almost immediately. "Masters" don't use it or at least don't fall into the trap, so keep in mind this is something to use in your own games. So Magnus, don't read this then play it in the world championship or something!

  Also, even in the case of Black not falling into the trap, the opening still leaves White fully developed and Black with the burden of demonstrating an advantage. As you can see from the image, the only White piece undeveloped is a knight. Once that happens and the king castles, all pieces are out. Meanwhile, Black has moved only a knight, one that - spoilers alert - will be lost anyway.

  Note that I've used Stockfish to play the best moves (other than entering the gambit and accepting the poisoned pawn). For the main lines chapter I've went through the games in the LiChess database. Agreed, there are only a few hundred in total, but that proves how much of a weapon this can become. Hope you enjoy it and as always, I welcome comments.

  Without further ado, here is my study for the Rosentreter gambit Testa variation in the King's gambit accepted:


and has 0 comments

  Monstress is a feudal fantasy manga set in a world of ancients, old gods, humans and half humans. After a period of peaceful coexistence, the humans and the half humans separated in two different countries, which now head towards war. The main character is a girl with mysterious powers, powerful but angry, who is the center of a storm that will either save or destroy the world.

  The color drawing is very beautiful, as are all the gods and creatures, very detailed and purposeful. Faces and bodies are expressive. I like the story a lot, clearly thought and love has been poured into it by both writer Marjorie Liu and illustrator Sana Takeda. It reminds me of Berserk, back when it was still good - the first 26 chapters, both the drawing style, with detailed filigree indicating godly power, and the story, which is at time cruel and unforgiving, meant to forge the hero into something spectacular.

  At this moment the manga is still going strong, with 41 chapters published. You can read it online here. I highly recommend it. It has earned many awards, including five Eisner Awards, four Hugo Awards, and the Harvey Awards Book of the Year in 2018.

and has 0 comments

  Don't want to be mean, especially since I've only read 42 chapters on the 1000+ that make up One Piece, but I found it boring. I did read Inuyasha, Naruto, One Punch Man and even Bleach religiously, but I was younger and had a lot of time on my hands. This one is just another "young male teen with no actual connections meeting friends and enemies and leveling up" story. And it's also very childish.

  I enjoy shōnen manga, but this is just too ridiculous for me. I understand it gets better later on, but I've skipped somewhere in the middle and it didn't seem to. Anyway, I guess I can category this as DNF and move on with my life.

  If you like it, you can read it free online here: One Piece

  I had this situation where I was trying to optimize a query. And after some investigation I've stumbled upon something strange: querying on the primary key was generating a lot of reads. I was joining my table with a temporary table of 10 ids and there were 630 reads! How come?

  At first I thought it was because the way indexes work. The primary key was comprised of RowId and RowDate and, even if I knew theoretically searching by RowId should use the primary key, the evidence was against me: when querying by RowId and RowDate I would get the expected 10 reads.

  I created two queries, one with and one without RowDate. I then compared their execution plans. They were identical! Only one took a lot longer, specifically in the Index Seek (which used correctly the primary key). When I looked at the properties for that plan element, I saw something strange:

Actual Partitions Accessed 1..63!

I then realized that the table was partitioned on the RowDate column. In this case, RowDate takes precedence to any indexed column! You might think of partitioning a table like forcefully adding the partition columns to every index in the table, including the primary key. In fact, a partitioned table acts like a number of separate tables with the same definition (columns, indexes, etc.), just different data. The indexes work on each separate partition. When you partition a table, you also partition its indexes.

In truth, I would have expected the query execution plan to show the partition split as a separate step. I understand it's hard to conceptualize it without creating as many execution paths as there are partitions, but still, there should be an indication in the shape of the plan that makes it clear you are querying on multiple partitions.

Once RowDate was used, the SQL engine would choose the one partition of my row, then use the primary key index to seek it. Instead of 63*10 reads, just 10 reads, the number of the rows in the id table.

So be careful when you use table partitioning to ALWAYS use the partition columns in the queries for the table, else you will get as many parallel searches as there are partitions, regardless of the indexes you created, as they are also partitioned.

Hope that helps!

and has 0 comments

  Junji Ito is a manga artist that creates horror, usually focused on personal obsession, body horror and disgust. He is like the Japanese Serge Brussolo, in a way. Uzumaki (translated as Spiral) is a 20 chapter story about a small town infested by spirals, which have more and more horrifying effects as the story unfolds (heh!). Yet perhaps the most horrible thing that transpires from the manga is the typical Japanese social and cultural pressure that keeps people in their place, in their role, denying that anything could be wrong.

  I mean, in the beginning, people were leaving the town and coming back, noticing as they did how strange it was compared with the place they were coming from. Later on, the main characters see horrible things happening and still won't leave, while anyone who heard them explain what had happened - even if obvious to anyone looking - refused to accept that it was anything but rampant imagination. And, of course, they stop telling people things, because of the ultimate horror: being stigmatized in their society. That is true horror to me, that people would choose to live their lives like that. The way the town folk end up at the end seems to me like a metaphorical criticism of Japanese culture, but I may be wrong. 

  Anyway, the drawings are good, imaginative, and the manga succeeds in instilling that pervasive feeling of dread. The story gradually getting weirder and weirder, but in small increments, also manages to hold the reader on the edge of disbelief. Short, too, so no need to invest a lifetime in reading it.

  If you want to read it, Uzumaki is freely available online, on the Junji Ito site, but also on a dedicated site that looks very similar, only with an extra bonus chapter, so I would go there. If you are a fan of horror, maybe Brussolo, maybe Lovecraft or even John Saul, I think you will enjoy this a lot.

and has 0 comments

  Fungi is a short story collection, fantasy and sci-fi, mostly hinging towards horror, edited by Orrin Grey and Silvia Moreno-Garcia. I am fascinated by fungi and also a horror fan, so I expected to love the book. Well... it was OK. I enjoyed most of the stories, but to be fair, the fungal influence on most plots was either marginal, like some evil affliction evidenced by mycelium growth, or too obvious, like the pulsating life eating and/or controlling mushroom mass.

  It is possible that I bore a grudge from the very moment I started reading the book and expected it to be a novel, only to discover tales too short to get anywhere. It was great to listen to a short while walking the dog and not having to get invested too much, but other than that I was not that captivated. Stories were decent, most of them, but perhaps I was not really in the mood for a collection.

  So, bottom line is that I had expectations set way too high and thus was inevitably disappointed. Didn't learn anything more about fungi, because most of the plots were about infestations that required no understanding of the processes involved.