A Little Life

| Tags: book, fiction

“A Little Life” by Hanya Yanagihara is an unusual book — at least for me. The books I usually read have some conflict that needs resolving or at least there is some kind of climax they strive to.

This book tells the story of four friends and their acquaintances. It starts when they all are in their early twenties and ends 40 years later. The book is narrated from changing perspectives. Most often one of the four friends is the narrator and sometimes others do it. Sometimes the time jumps forward a few years and sometimes only a few days.

That sounds totally confusing, but it is quite suspenseful. The characters have all diverse and interesting personalities. Although there is no big excitement there, it’s always interesting to read how the lives of those friends flows and changes.

One of the four friends had a difficult childhood that is gradually revealed and one could say that the final revelation of the last bit of it is the climax. But it doesn’t feel like it, because by then you already know that something has gone really bad here.

The book demonstrates in its own very specific way how childhood experiences may have lasting and insurmountable effects on the later life.

It’s a sad book about friendship and suffering. I recommend it as the most meaningful book I’ve read this year.

Salvation

| Tags: book, fiction, sci-fi

Peter F. Hamilton is a British science-fiction writer and he mainly writes space operas. There are always the same types of people in his books. It’s probably similar to when you read the 20th crime book by a crime book author. The people feel familiar, their interactions also, but there’s always something new and when you like the author’s style of writing and storytelling, it’s satisfying to come back and read something new by them.

After having been somewhat disappointed by the Chronicle of the Fallers more than three years ago, I returned and read “Salvation” which is the first book of a trilogy.

“Salvation” is definitively better than the Chronicles but not as good as the Void trilogy or my favorite Night’s Dawn.

It’s a bit of “Ender’s Game”. There are kids training in a zero G environment for a battle against alien enemies. Another part reminded me of classical crime stories the likes of Miss Marple. People sit together in a room, drink and eat and by and by each one tells a story from their earlier life while one of them tries to find out which one is the alien. This is a science fiction story where looking for an alien is more natural than looking for a murderer after all. And it’s all packed in a typical Hamiltonian space opera setting. There are the portals we already know from the Commonwealth saga, but while back then trains passed through them, here people just walk through them and it makes no difference if you want to go from London to New York or some city on another planet. It’s all just a step away.

“Salvation” is a fun and satisfying read for Hamilton fans. If you haven’t already read anything by him, his earlier works are a better and more exciting entry point.

Dark Mode

| Tags: dev, web

Most software developers seem to prefer dark themes. Their IDEs, text editors and terminals use dark background colors. My preferences are exactly the opposite. I use dark text on bright backgrounds. When dark mode was introduced in macOS and iOS and later got supported in web browsers I ignored it and kept on using the default modes which are dark text on bright backgrounds.

While redoing and modernizing the CSS on another web related project I also added dark mode support there and realized that it’s quite easy to do. Just add a media query and add style rules with adapted colors

@media (prefers-color-scheme: dark) {
  body {
    background-color: #2B2510;
    color: #D5D5D5;
  }
  ...
}

My website uses only a handful of colors and I got the idea that I really didn’t want to change the palette to something totally new. The light mode and dark mode palettes should be related. So I darkened the background color and brightened the foreground colors and got from

Light Mode

to

Dark Mode

I’m happy with how it turned out. Now dark mode users can visit my website and won’t be shocked by the sudden appearance of a bright web page.

In hindsight I could and should have added dark mode support much earlier, but better late than never as they say.

Epigraver

| Tags: dev, macOS, screensaver

I created a macOS screensaver that displays and animates the output from command line programs on the screen. You can find it on its GitHub project. The rest of this post provides some background infos about why and how I developed it.

Many years ago — then on a Windows desktop computer — I always used some kind of screensaver. With CRT monitors that didn’t have any kind of power save mode, using screensavers was more or less mandatory.

Then I started using laptops and notebooks and external LCDs. I either just closed the notebook or initiated a locked screen mode. In both cases the monitor switched off and then switched on again when I returned. Then someday I read somewhere that those monitors age every time they are switched off and on again. So, maybe switching them off every time I took a break from working wasn’t a good idea.

I browsed through the screensavers shipped with macOS and chose one that painted nice patterns on the screen. That looked nice but after some time I realised that the fans on my notebook where spinning more while running the screensaver than while I was actually doing work on it. That didn’t feel right. I changed to a screensaver that displays word definitions from the dictionary. That was informative and the fans stayed mostly silent.

After some time that started to become boring and I though “Wouldn’t it be fun to have a screensaver displaying quotes and other funny texts like the old fortune program?”. A search for such a screensaver didn’t result in anything useful. There are some mentions of some Linux screensavers that do this and maybe there is a port for macOS somewhere but I actually didn’t follow that path.

I found that although fortune isn’t shipped with macOS, it can easily be installed via HomeBrew.

In August 2018 I started developing a screensaver I just called “Fortune” as it was meant to call fortune and display its output. I haven’t developed any macOS applications before and screensavers are a speciality that is somewhat sparsely documented. And there are also some additional pitfalls when developing a screensaver in Swift. But looking at open source screensavers helped. And after some days I actually had a working screensaver with one animation.

As time went by I added more animations and more color sets.

I was happy with how it looked then, but I thought that other people might like it and maybe I should make it open source. This is when questions started to come up. What if someone has somehow changed their HomeBrew configuration and fortune wasn’t installed in the default location? The screensaver would need to allow the configuration of the location of that program. But when I add that, why not allow to configure any command line program or script that generates textual output? There is an offensive variant of fortune, but I probably don’t want that to run while I’m at the office. I need some location awareness here. Fortunately I can distinguish where I am just by looking at the name of the WiFi I’m currently on. At this point selection based on weekdays and on the current time was an obvious addition.

Now the name didn’t fit anymore. Although I still use it to run fortune, there is more to this screensaver than that. Naming has always been a challenge for me. Sometimes just taking a sentence that describes the function and then arranging parts of the words to a name worked quite well — as in the case of Osmorc —, but sometimes it didn’t. And it didn’t work here.

I came up with the name “Epigron”. It’s something with “epigraph” or “epigram” but changed to make it a unique name. It didn’t take me long to make fun of that name myself. Just pronounce it a bit differently and instead of “epi gron” you get “epic ron”. What epic Ron is that? Ron Weasley or what? After some more thinking I settled on “Epigraver”. There is still something from “epigraph” and there is “graver” and as a graver engraves some text on some surface, the screensaver puts text on the screen — though not as permanently as a graver. And the other way to read it — epic raver — is also nice. In some way the screensaver raves all those textual outputs.

Out of Body

| Tags: book, fiction, horror

“Out of Body” by Jeffrey Ford is a nice quick read.

A librarian goes about his life following some fixed patterns. One day a guy attempts a robbery in a shop while the librarian is buying his breakfast. The guy kills the cashier and and hits the librarian on the head. After regaining consciousness again, the librarian returns home. In the night, while his body is asleep, his ghost leaves the body. He meets another ghost who teaches him about the workings of the night world. As to be expected there are dangers the ghosts face and special capabilities they have.

This is all nice and conceptually interesting and it fills the first half of the book. But that alone wouldn’t make a worthwhile read.

After the librarian has learned all there is to learn about the night world, the vampire enters the stage. Now the pace speeds up. It gets dangerous, bloody and messy. And connections appear as far back as to the robbery at the beginning of the book.

While offering nothing really new, “Out of Body” is a nicely written novella with some suspense and some horror.

Lanny

| Tags: book, fiction

“Lanny” by Max Porter tells a story that isn’t innovative. It’s actually well trodden ground.

There’s a boy and he’s somehow special. He lives in a small village and one day he disappears. A grand search is started. The wrong people are accused of having abused and most likely murdered the boy. Everyone in the village has an opinion and outsiders come into the village.

What makes this book interesting is not the story itself — although Porter added some twists of his own — but how it is told.

The book is divided into three chapters that each describe one of the three stages of the story.

In the first chapter we get to know the boy — Lanny — as seen by three different people. We get snippets of inner monologue from those three people. By and by they tell the story before Lanny’s disappearance.

Chapter two deals with the phase after Lanny’s disappearance. It’s again snippets from inner monologues but also from interrogations and discussions. In many cases we haven’t seen the persons before and won’t meet them again. And the snippets are also often very short. That creates a sense of buzz. Everyone is searching and everyone has an opinion.

In the third chapter it all slows down very much and merges into the showdown. I won’t tell anything more about it here as it would spoil the suspense. Let me just say that it rounds up the story nicely.

Porter uses a direct and contemporary language that is a joy to read. “Lanny” is a small book very worth reading.

Summerland

| Tags: book, fiction, sci-fi

As to be expected from Hannu Rajaniemi, the author of the Jean Le Flambeur books, “Summerland”, his next book, is a bit crazy.

From the outside it’s a classic spy thriller. There’s a double agent and there is another diligent agent trying to uncover him against resistance from people on higher levels. And there’s politics and conspiracies.

It’s also a kind of alternative history novel. It takes place in 1938 and the main topics are the civil war in Spain and a conflict between the UK and Russia. What makes it alternative history is the crazy and science fictional aspect.

At the time the action in the book takes place, the realm of the dead was already discovered some years ago and the living communicate with the dead via devices called ectophones. The dead can also borrow the bodies of living mediums. They then take control of that body and can move around in the world of the living. The dead still have to work in their realm because they need something called vim (Is this an indication that Rajaniemi prefers Vim as his text editor or only a coincidence?) to keep on existing. If they don’t get that they fade and vanish. There are dead people still running their businesses in the world of the living. And there are also agents in the world of the dead.

As mentioned it’s also a classic western world against Russia situation. The western world has Summerland in the realm of the dead where all the dead westerners keep on being individuals. The Russians have the Presence which is kind of like a singularity. It started with Lenin, but worthy dead Russians are steadily added to it.

It’s really weird and fascinating. As with his earlier books Rajaniemi amazes with his inventiveness.

Zombie Projects

| Tags: dev, intellij-idea

13 years ago I developed two plugins for IntelliJ IDEAFileBrowser and NaviActionPad. It was cool. The plugins did things IDEA couldn’t back then. And it was fun finding out how the plugin API worked. Then JetBrains added features in IDEA that made the plugins obsolete. And then the plugin API changed and the plugins didn’t work anymore.

I moved on to other projects and more or less forgot about those plugins.

Some days – or maybe it’s already weeks – ago, JetBrains added automatic periodic compatibility checking for their plugin marketplace and I started to receive e-mails telling me that my plugins had issues. I ignored those e-mails for a while, because they didn’t tell me anything new and I actually didn’t care.

Today I thought that I might want to get rid of those e-mails and so I logged in into the plugin marketplace website. It’s been a long time since I last did and now there are download statistics. Those tell me that the plugins are still downloaded more or less 20 times a month.

Why would anyone want to download those plugins? They are obsolete and pretty useless. Then I realized that a user browsing through the plugins and searching for interesting ones doesn’t know that they don’t work anymore. It’s probably a pretty frustrating experience to download one of those plugins, try to understand how they are meant to be used and then to find out that they really don’t work anymore and that there is nothing you can do to make them work.

I decided to kill those zombies for good now and requested a removal from plugin marketplace.

This reminds me that abandoned projects should be clearly visibly marked as abandoned or deleted. Don’t let your zombies haunt other people.

The Wise Man's Fear

| Tags: book, fiction, fantasy

“The Wise Man’s Fear” is the second book in Patrick Rothfuss’ Kingkiller trilogy and continues the story that begun in The Name of the Wind.

The second book has the same great writing we got accustomed to with the first book. There are new great stories there. Kvothe leaves the university for some time and lives through adventures in other places.

There’s a part in that book that I found disappointing. I tend to get bored when an author tries to convey that their protagonists need to wait some long time before anything of significance happens. There’s one such long stretch in this book. The author tries to make it interesting with some smaller stories a group of people tell each other at the evening campfire. And the stories are indeed interesting, but the main story line slows down very much then.

The second book is much longer than the first, though. So there’s plenty of great storytelling in there to make up for that. I especially liked the part where the Adem culture is described. It’s clearly visible that parts of that culture are derived from Buddhism and eastern martial arts, but Adem culture has its own interesting peculiarities.

As with the first book, I also recommend this one and can’t wait to read the third book, but will actually have to wait four months before I have any chance to get it.

The Name of the Wind

| Tags: book, fiction, fantasy

“The Name of the Wind” is a fantasy novel by Patrick Rothfuss. I don’t remember where, but some time ago I read a recommendation for it and added it to my private wishlist on Amazon which always contains more than 200 books that I might want to read some day. Then I spotted it in one of those regular ebook sales and bought it for 1€ a half year ago. After reading The Road I just felt like reading a fantasy book. I paged through the list of books on my kindle, opened “The Name of the Wind” and started reading.

I probably wouldn’t have stopped reading until I’d finished it if I weren’t the slow reader I am and if I didn’t need to sleep, eat, work and do whatever other things one needs to do besides reading.

The story is pure delight to read. The characters are interesting and the adventures they live through thrilling. There’s magic, conflicts, romance and mystery and all sorts of things that make a good story. Should I tell you that the protagonist is a talented boy who learns all manner of things — including different kinds of magic — pretty fast but gets in trouble quite often because of his wisecracking tendencies? That suggests some fun and there is plenty fun in that book. But that won’t tell you that it’s an outstanding book and that’s also the case. You’ll have to see for yourselves. Anyone even remotely interested in fantasy books should read this one.

But be warned. Half way through I realized that it is the first part of a trilogy. It was first published in 2007. The second part — “The Wise Man’s Fear” —, which I’m currently reading, was released in 2011. And the third — “The Doors of Stone” — is announced for late August this year. I’m happy to have started reading it this year, because waiting 9 years for the conclusion would most likely have been maddening.