First Lines: The Master & Margarita

With Mikhail Bulgakov’s The Master & Margarita I waded my first, cautionary steps into the pool of Russian literature.

The novel is set in 1920’s Soviet Russia, where three story lines interweave: the one where Satan’s minions wreck havoc in Moscow, the one set in Jerusalem where Pontius Pilate condemns a tree-hugging hippie philosopher to death, and the one of the titular characters.

The first story left me slightly bewildered. There are a slew of characters, all with three names, of which either the first two or the last one are interchangeably used. A man loses his head after meeting the devil, his companion goes mad, a theater show ends in chaos and people disappear. Later, it interweaves with the third thread, and it becomes more surreal, with its flying on broomsticks, witches and Satan’s midnight ball.

The second story, an alternative interpretation of the crucifixion of Jesus, I found the most interesting one. Contrary to the Moscow scenes, nothing supernatural happens here. There’s just the human beings Pilate and Yeshua Ha-Notsri, and a web of deceit and intrigue.

Until about halfway through, I wasn’t sure what to make of this book. The first part, apart from the one chapter on Pilate — which didn’t yet make sense in the grand scheme of things — was a bit of drag. But then the titular master showed up. He wrote a novel about Pilate, that got rejected by The System, which caused him to turn away from society and his lover, Margarita. When she gets pulled into Satan’s machinations, the pace seemed to quicken, and things got weirder and quite enjoyable. Special mention should go to the scene where she destroys an innocent baby grand piano, which left her exhausted:

Quite Steinmanesque, if you ask me. The allegorical elements in the last few chapters suited me more than the supposed satire of the earlier chapters. And while a closer and more careful reading of the text might have revealed more layers and symbols and meaning, but as I’ve said before, that’s for other people. I enjoyed the story, and that’s good enough for me.

Now, having finished The Master & Margarita, the only books on my 40 Books Before 40-list left at my immediate disposal are in the “Oh my, these tomes are slightly daunting” category. The Count of Monte Christo clocks in at well over a thousand pages, Don Quixote is no slouch either, and neither The Odyssey nor Moby Dick are known for being light reading. But as I knew what I was getting into, I’ll just plunge into one of them after I’ve finished my current book.

Book read
Mikhail Bulgakov — The Master & Margarita (translated from the Russian by Michael Glenny)
First line
At the sunset hour of one warm spring day two men were to be seen at Patriach’s Ponds.

First Lines: Pickings from the Neil Gaiman Humble Bundle

Last year, a Humble Bundle of Neil Gaiman rarities was released. It included a pile of hard to find, out of print and obscure books and comics, with a 100% of the author’s earnings going to his charitable foundation, which in turn supports various Good Causes™.

So, I loaded the most e-reader friendly files onto my e-reader — I found out that pdfs and epubs containing jpegs of scanned text don’t really work ¹, so I’ll have to get round to those some other way — and got cracking.

Manuscript Found in a Milkbottle is story written and published once, in 1985, that is so bad I’ve never let it be reprinted. Not even to give young writers hope that if I was that awful once, there is hope for all of them. It is, indeed, quite ungood, and is basically a very long and very lame joke involving unwatched milk and faster than light travel.

Book read
Neil Gaiman — Manuscript Found in a Milk Bottle
First line
Milkmen have secrets

A Little Gold Book of Ghastly Stuff (table of contents) is one of several rarities and B-sides collections in the Bundle. It collects some stories — “Featherquest” is an early one, which like Ms. Found in a Milkbottle is not quite good yet and ends very unsatisfying:

Three stories (“Jerusalem, “Feminine Endings” and “Oranges”) can be found in Trigger Warning, and “Orphee” I knew from Chris Riddell’s illustrations (part 1 and 2 or alternate version). Then there are two poems, a few book reviews and some essays and posts lifted from his weblog. Some of which will no doubt reappear in the upcoming non-fiction collection The View from the Cheap Seats. That title comes from one of the entries included here, after all.

Book read
Neil Gaiman — A Little Gold Book of Ghastly Stuff
First line
Before you read this familiarise yourself
with the text. Note the position of the escape hatches,
the candles that will light in the event of a forced landing
to show you the way out. The author will make an
announcement. (from “Before You Read This”)

Ghastly Beyond Belief: The Science Fiction and Fantasy Book of Quotations (edited by Gaiman with Kim Newman) contains, as one would suspect, quotes from Science Fiction and Fantasy books and movies. At first it was fun, and then it went on and on and on and it got a bit long in the teeth and after it went on for a bit more, I was quite over it.

Book read
Ghastly Beyond Belief: The Science Fiction and Fantasy Book of Quotations (edited by Gaiman with Kim Newman)
First line
A blurb is a brief description of the contents of a book, designed to tease or entice a casual browser into buying it.

It will come as no surprise that Day of the Dead (An Annotated Babylon 5 Script) contains the (annotated) script of the Babylon 5 episode “Day of the Dead”. Even without any knowledge of Babylon 5, I could make sense of it, and it was quite enjoyable.

Book read
Neil Gaiman — Day of the Dead (An Annotated Babylon 5 Script)
First line
INT. MESS HALL

Lochley in the mess, eating and reading at the same time.

Angels and Visitations: A Miscellany (ToC) is the most proper short story collection of the Bundle. It is a small press book, published to mark Gaiman’s 10th anniversary as a professional writer, and long out of print. Nine of its twenty-two pieces were later republished in Smoke & Mirrors, and “Troll-Bridge”, “Chivalry” and “Murder Mysteries” stood out as being particularly enjoyable upon revisiting them. The, well, experimental “Being an Experiment Upon Strictly Scientific Lines” got some fighting words, though:

Book read
Neil Gaiman — Angels and Visitations: A Miscellany
First line
Let us call now for the makers of strong images (from “The Song of the Audience”)

Adventures in the Dream Trade (ToC) contains more b-sides and rarities. Mostly introductions, a few song lyrics, some short stories, but mostly, Gaiman’s 2001 American Gods web log. The blog documents the work that goes into turning a manuscript into a book, and Gaiman’s signing tour through the US, UK and Canada. It’s endearingly clumsy, with all its I wrote this interesting bit, clicked publish, and — whoops, Blogger went and ate it. Again. and its We’ll have the FAQ thing up and running in a jiffy. Although I am not convinced Mister Gaiman would use the word ‘jiffy’. It’s also quite interesting to see how well it holds up, fifteen years later, mostly out of context, and with most of the included links dead as a very dead thing. It convinced me of two things: 1) Gaiman can even tell mundane daily going-ons in a captivating way, and 2) I really need to re-read American Gods sooner rather than later.

Book read
Neil Gaiman — Adventures in the Dream Trade
First line
At the Request of Norton I, Emperor of the United States, the Imperial Historical Pantaloon and Jester-Without-Portfolio Enters the Following: (from “The Introduction” by John M. Ford)

Finally, I read A Fall of Stardust (ToC), which started life as an art portfolio (more on that) accompanied by two chapbooks. One contained the story “The Duke of Wellington Misplaces His Horse” by Susanna Clarke and is omitted here on account of not being written by Neil Gaiman. The other one — as one might guess — contains four short pieces by Gaiman: a prologue to Stardust called Wall: A Prologue, followed by more poetry in the form of a triolet, a song and a pantoum.

Book read
Neil Gaiman — A Fall of Stardust
First line
It wasn’t black and white, not when you saw it up close. (from “Wall: A Prologue”)

Footnote 1: That said, some brute-force jiggering was required: my e-reader insisted that Adventures in the Dream Trade was corrupted with Adobe DRM, which it most certainly wasn’t. Running it through Calibre solved that. A Fall of Stardust was of the it’s-all-jpgs variety, which I turned into a properly edited epub myself. Geeking out FTW.

Pragmatically Splitting ASP.NET StyleBundles for IE

Lets start with a disclaimer: I am a front-end guy. I *heart-emoji* HTML and CSS. I know my way around javascript. But I am not a programmer. My knowledge of ASP.NET/C# is minimal. So the following will probably be bloody obvious for people who are C#-gurus, but here we go anyway.

Another disclaimer: this is gonna be about technical webstuffs. Feel free to ignore the rest if that is not your cup of tea.

This week at work, I ran across a classic: Internet Explorer 9’s 4095-selector issue. If a stylesheet has more than 4095 selectors, it will ignore the rest. With all of Bootstrap and a bunch of stuff that still needs to be weeded out, we went a bit over that, and, hey presto, IE9 was børked.

(Over the past 12 months, IE9 and earlier still accounted for roughly 3.5% or 750k visitors. The last few months there’s a sharp decline, but there is still enough of a business case for a webshop to support at least IE9. Besides, a website should work in every browser. That does not mean that it should look exactly the same in every browser or even that it should have exactly the same bells and whistles — that’s where madness lies — but within reason, it should just work.)

The solution was easy: split the file in two.

This is how our StyleBundle was constructed:

bundles.Add(new StyleBundle("~/bundles/css")
    .Include("~/assets/vendor/bootstrap/css/bootstrap.css")
    .Include("~/assets/vendor/foo/bar.css")
    .Include("~/assets/css/fonts.css")
    .Include("~/assets/css/base.css")
    .Include("~/assets/css/grid.css")
    .Include("~/assets/css/header.css")
    .Include("~/assets/css/footer.css")
);

There are more files, but you get the idea. The logical split was to separate the vendor-styles from our own. So initially, I made two bundles:

bundles.Add(new StyleBundle("~/bundles/css-vendor")
    .Include("~/assets/vendor/bootstrap/css/bootstrap.css")
    .Include("~/assets/vendor/foo/bar.css")
);
bundles.Add(new StyleBundle("~/bundles/css-own")
    .Include("~/assets/css/fonts.css")
    .Include("~/assets/css/base.css")
    .Include("~/assets/css/grid.css")
    .Include("~/assets/css/header.css")
    .Include("~/assets/css/footer.css")
);

This, of course, works, but isn’t ideal. People who use an up-to-date browser will now have to download two files instead of one. Then I figured that there should be a way to combine those two bundles without having duplicate GLOFs. There is: StyleBundle’s Include-method apparently takes an Array as argument. So, after a bit of rejigging:

string[] vendorStyles = new string[] {
    "~/assets/vendor/bootstrap/css/bootstrap.css",
    "~/assets/vendor/foo/bar.css",
};

string[] ourOwnFancyStyleFiles = new string[] {
    "~/assets/css/fonts.css",
    "~/assets/css/base.css",
    "~/assets/css/grid.css",
    "~/assets/css/header.css",
    "~/assets/css/footer.css",
};

bundles.Add(new StyleBundle("~/bundles/css-vendor")
    .Include(vendorStyles)
);

bundles.Add(new StyleBundle("~/bundles/css-own")
    .Include(ourOwnFancyStyleFiles)
);

bundles.Add(new StyleBundle("~/bundles/css")
    .Include(vendorStyles)
    .Include(ourOwnFancyStyleFiles)    
);

Now, I had three bundles to the page: two for IE9, the combined one for the rest. Adding them to the page was only a matter of rigging up some Conditional Comments.

<!--[if lte IE 9]>
    @Styles.Render("~/bundles/css-vendor")
    @Styles.Render("~/bundles/css-own")   
<![endif]-->
<!--[if gte IE 10]>-->
    @Styles.Render("~/bundles/css")
<!--<![endif]-->

So. There it is: a two stylesheets for IE9 and below, a single one for everybody else, with no duplicate GLOFs. And the realisation that I don’t have any syntax highlighting set up here.

I know there are a lot of legitimate questions about this approach — “Why don’t you use Grunt/Gulp/build tooling?”, “Do you really need that much CSS?”, “Why Bootstrap?”, “But HTTP/2 changes everything!” — and believe me, I know. I know. We’re getting there. I started here less than six months ago, and we’re making progress. But Stallman reigns supreme when you do web development in the world of eCommerce: the site has to keep working, and the time or resources to completely overhaul everything usually aren’t there. So you do what you can, while you can. Baby steps will get you there too, eventually.

Referendum

De stemgerechtigde,

gehoord de beraadslaging,

overwegende, dat Oekraïne kan ons natuurlijk niets schelen roepende organisatoren, onrendabele roze rechts-populistische-onderbuikreutelaars, en slecht ingelezen roze matrozenpetjes er voor gezorgd hebben dat we vandaag mogen stemmen in een 40 miljoen Euro kostend rancunefeestje over de rug van 45 miljoen mensen;

overwegende, dat het referendum enkel gaat over de wet ter goedkeuring van het associatieverdrag tussen de EU en Oekraïne, en dus expliciet niet over het associatieverdrag zelf, toetreding van Oekraïne tot de EU en whatever else het OMG-WTF-NEE-kamp er aan de haren bijsleept;

overwegende, dat ‘samen’ in zijn optiek altijd beter is dan LALALALALA-vingers-in-de-oren-kop-in-het-zand-NEE-NEE-THOTHVERDOMME-NEE-GA-WEG roepen, óók als degene waar je samen mee wil niet perfect is;

adviseert zichzelf gewoon lekker voor te gaan stemmen,

en gaat over tot de orde van de dag.