Making up a tabletop RPG

One day I wanted to keep the kids (6 and 8) busy, I suggested we play a game, I made up the rules and we used playing cards as the source of randomness. Thus was born PlayingCards-RPG.

Growing up in a town in Italy in the ’80s, I never got the chance to play tabletop RPGs. There might have been people who played them, but I was an introverted kid, a nerd without a like-minded community, so I never got the chance.

This means I don’t actually know how tabletop RPGs work. I have skimmed a couple rulebooks, and D&D’s rulebook clarified that roleplaying is about storytelling and make-believe.

Those, I know.

Character building

Kids are naturally apt at making up characters (more than their parents), so they can easily invent a character. But they are also bad at having them balanced.

Some popular RPGs have emphasis on character stats or classes, attributes such as strength, dexterity, agility, intelligence etc.. and all those are properly codified. But you don’t need that.

In PlCRPG there are 3 stats: Health, and Two Others. The others are Strength/Attack/Defence/Whatever and Intelligence/Dexterity/Agility/Magic/Whatever.

The goal is not to be realistic, is to have something where you, as the adult master can just balance them out. Examples we played:

  • Black Skull, the tiny alien with laser eyes: low Health, very high Attack, low defense, can fly.
  • Vanilla, the Elven Mom: average Health, average Intelligence, average Health, has an invisibility cloak.
  • Blooddrop, the saber-toothed mouse: low Health, low Strength, high Speed, starts owning some potions.
  • Almei, the werewolf cub with fractal fangs: average Health, average Strength (it’s a cub), low Intelligence, attack-only bonus.
  • Luna, the forest girl: average Health, low Strength, average Intelligence, but talks to animals and travels with a pet rabbit.
  • Grunt, half-orc: average Health, high Strength, low Intelligence.
  • Fire Spirit: low Health

Can I do something?

I think these are called checks in D&D. You should use a variety of dice with different probabilities but we just had playing cards. Most Italian playing cards use the latin 4 suits (Clubs, Swords, Coins and Cups, these are pretty well suited thematically!) and have 10 cards each. You can use the French or German ones (or tarots, or UNO cards or whatever) sticking with the 1-10 cards, and re-use the others as characters or equipment.

The system is simple: average stats means you use 1-10 cards. High stats mean you use 6-10, low stats use 1-5, buffs through objects or spells change the set of cards.

Some examples:

  • The party wants to break a door: that requires a 5, the kid player pulls a card, and if it’s above that they manage to break it.
    • the Half-Orc has 6-10 for Strength, will always succeed
    • the Elven Mom has 1-10 so she’ll succeed half the time
      • the Saber-toothed mouse has 1-5 so it just can’t do it (but could lockpick it)
  • The party is in a room looking for a book: I think this is a bit harder so I decide it requires a score >6
  • Elven mom has a 40% chance to pass
    • …but she found a spell that makes light, so instead of using cards 1-10 she’ll use 3-10
    • Werewolf cub is dumb, so even with the light he can’t do it

Fights and stuff

Fighting happens card-on-card: you attack with what you draw, defend with what you draw, subtract the difference from remaining health. Each player attacks in turn, the master makes up the order . To deal with extreme disparity, a “best” draw still does something.

For example Half-Orc fight a fire spirit:

  • Half-Orc has High Strength (cards 6-10), random Fire Spirit is tiny (cards 1-5). Half-Orc draws a 8, fire spirit draws a 4, takes 4 damage.
  • Fire Spirit attacks the Half-Orc, draws a 5: it could never damage the other which will always get a draw >6, but to make this mildly interesting a 5 (best draw) sets the other on fire, so they lose 1 health every round.

Experience, levels and such stuff

I did not bother with this. The kids will pick new characters the next game, and if they want to keep the same and “get better” I’ll just let them find some equipment.

Exploration, maps and such

I just draw on a bit of paper, I pre-planned dungeons but sometimes I just add stuff as we go on. My kids can’t be bothered to count steps and such, so I just have them move from one place to another instantaneously, it works well enough.

Conclusion

This is not a lot of rules. It’s barely more than not having rules, but the point is to get creative while spending time with your family, which we all enjoyed. There will be plenty of time to play with big rulesets when they grow up (and then there won’t be, as they’ll think playing with Dad is lame).

But do let me know if you have your own made up game, I’d be happy to play that too ūüôā

Micro review: The Ocean at the End of the Lane

I really enjoyed this book.

I like Neil Gaiman quite a bit, but this book felt somewhat different: it felt somehow like a Stephen King story.

Mild spoilers ahead.

The book is written as the main character, as an adult, visits the place where he grew up. There’s a pond there, but he knew, as a kid, that it was no pond, it was the ocean. And there was a girl, somewhat special. And a man, who killed himself.

See? Isn’t this your Kingesque coming-of-age/did-we-imagine-it-or-was-it-real plot?

It also feels pretty intimate, you are led to immediately visualize young Neil in the story, not a random kid. It’s a good book, well written, with a good story and characters.

And a big difference between King and Gaiman is that Stephen is not very good at endings, but Neil is great.

Vote: 8/10

Mini review: Bobiverse audiobooks 1-4

I am not sure how I got into these audiobooks, but I think it’s because the premise was pretty great: Bob is a software developer that gets his mind uploaded into a Von Neumann probe, a spacecraft that travels the universe replicating itself.

This poses a few interesting issues: how does such a human survive as disincorporated mind? How does he deal with the solitude of space? How does it deal with clones that have his exact thought process?

It also creates interesting issues for the writer: how do you write about traveling through the endless vacuum in an interesting way? How do you create contrast between copies of the same character? And if Bob is now just software, when it gets copied to another machine, is it the same?

Hic Sunt Spoilers

Well, the plot issues are handled easily: you Marty Sue the shit out of them. Bob builds its own virtual reality. Its own AIs. Its own faster than light communication and drives. He masters computer science, material science, physics, biology, agronomy, astronomy. He terraforms, creates life, alters solar systems.

Most problems boil down to being barely an inconvenience, except for the issue most males have struggled during the ages: getting the girl. Women, uh?

(This is ironic, don’t lynch me please)

The writing issues are often sidestepped: there is no void of space, Bob just never gets bored or just sleeps. There are never N copies of the same character, since there is always some drift. You can’t copy a Bob.

I liked the idea that you can never have two copies of the same personality (because “quantum“), but if you turn one off, then you can move it to another machine.

It’s a good enough solution for the well known issue that the teleportation is incompatibile with a unique soul, which I expect will be tackled by some future interstellar council (I hope the ensuing schismatics/heretics will be called Renziani, whatever their position).

Anyway, the books are entertaining, Bob acts as God to some creatures, screws up some stuff, fights battle, kills aliens, deals with conspiracies. The various incarnations of Bob are likeable, no doubt due to a good performance on part of the narrator.

There’s also a certain amount of “here’s a new chapter and a new issue, and here’s how I tackle with my smarts” which can either get on your nerves or entice you depending on how much you identify with the character.

The author winks a lot to a certain reader, filling the book with nerd references which can be nice, but it gets boring after a while. Not as bad as Ready Player One anyway.

My ending is better

I liked the fourth book the most. The Bobs go looking for a lost Bob and find a giant space structure where an alien civilization is kept in a permanent state of low-tech development. Not wanting for anything, but stagnating, ignorant of their status, and slowly devolving.

Here the Bobs go on an adventure and find a giant computer mind that manages the whole civilization for their own good. Having incarnated into robots, the Bobs travel the planet, meet people, do stuff, start revolutions and so on.

This is my favorite book as the author seems to have abandoned the somewhat gimmicky nature of the first three, and gives us a cool space adventure, interesting world building, characters with mode depth. I think it might have made a good standalone book even leaving the Bobiverse aside completely.

My only disappointment is that I really, really, really wanted the evil computer mind to be the lost Bob. This would have cast a shadow on previous choices the Bobs did, forcing the reader to face hard ethical choices. Alas, we just get a “everybody is happy” ending.

Still, it’s nice to have happy endings now and then, and I look forward to the next book.

Vote: 7/10

A tale of two lost cities

Last summer I spent some time in Campania, and my family took the chance to visit a few places we had not seen before.

My wife had visited it, but I had never been to the Reggia di Caserta, the largest (former) royal residence in the world, which you may remember as being the background for the royal palace in Star Wars: Episode I.

Charles VII of Naples wanted to build a big palace to make it the administrative center of his kingdom. But history is what happens while you’re making other plans, and by the time the palace was finished, Italy’s unification was underway, and the center of the state would move to Rome.

It is, anyway, a stunning sight, and I highly recommend it. But I did not want to talk about this in particular.

Lost and found and lost again

We visited the archeological site of Pompeii, a populous Roman city which was thriving in the first century. Alas, history had other ideas.

The eruption of mount Vesuvius covered the city in volcanic ash, and also destroyed the nearby Herculaneum§.

We know a lot about this, because Pliny the Younger saw the thing with his own eyes, and wrote about it. After the disaster there was some feeble attempt to recover some stuff, and there was some looting, and the Romans gave up on excavating meters and meters of ash, and over the centuries we forgot where the city was.

I can hear you, Dear Reader, “How do you lose a city? Just look at a freaking map!“. But you see, there were not a lot of maps. And the topological references weren’t there either. The coast had shifted by kilometers, and even the layer of ash had been covered by dirt and vegetation.

The city was buried somewhere, but people had no clue, nor interest, in looking for it. Until they did, in the 18th century. First we found Herculaneum by mining stone, and then we found Pompeii, covered by the ash.

We were lucky because the ash preserved a lot of the city, including paintings, mosaics, statues, buildings and more.

If you visit Pompeii you have the surreal feeling of walking in a theme park, because there is just so much stuff. You will see the bakeries, the eateries, the public baths, the tanneries. You will see painting of gods, advertisement, political campaigning. The brothels and the temples and the places of government§.

And of course, you will see the calques of the people, and animals, who died there. You see, before the ashes arrived the people and animals were killed by fumes, and their muscles contracted and kept them in position as the ashes fell over them.

It must have been a terrible way to die§, and the cast of the dog trying to free itself has made an everlasting effect on me when I first saw it as a kid.

And yeah, the casts. When Giuseppe Fiorelli started working on the city in the 19th century, he noticed they were hitting empty cavities left by the (long disappeared) bodies. He had the brilliant idea of using liquid plaster to fill such cavities, and then excavate the casts and look at them.

The plaster casts are incredible, the images of people covering their head, hugging each other, cowering in obvious fear. I am moved a bit even as I write. A write described as

The pain of death that gets back body and image

Luigi Settembrini

The casts are an incredible window on the past, but Fiorelli was not foreseeing enough: we have lost many of them due to bombings in WWII. And he had not accounted for the fact that gypsum will, over time, fall apart on its own. So we have lost many of the casts, and this time it will be forever.

Modern archeology is attempting to use resin for the same process. Resin has a big advantage: you get to see the bones inside. For some reason, I don’t like this, it feel indiscreet to look inside people..

The unseen city

Both me and my wife had seen Pompeii already, and yet neither of us did.

You see, Pompeii has not been fully excavated yet. As far as I understand, it is a bit of a dream for an archeologist to be able to participate in the ongoing excavation. But modern archeology moves slowly to preserve as much as possible§, I may not be alive by the time they are finished.

And even if I was around. I’d likely still not see it all. There is not enough personnel to monitor a site this big, so only parts of the city are accessible every day. One day you may see something, one day you may see something else. And maybe one day we’ll get another bombing, and something will be gone forever.

Something lost for centuries right at our fingertips, and yet impossible to see.

The temples nobody knows

Another place we got to visit was Paestum, which was also a Roman city. Except of course before that it was a Lucanian city. And before that a Greek city, named Poseidonia, after the God of the sea, as it had an enviable position close to it, and was an important commerce center. Alas, this was not to last.

The delta of the nearby river clogged up, this in turn made the river stagnate, and the nearby land become swampy. With swamps came mosquitoes, and with mosquitoes came malaria. The city became a bad place to live, and it slowly depopulated until it was completely abandoned in the middle ages.

And so, once more, we lost a city.

William Stanley Haseltine - Temple of "Ceres" at Paestum - Walters 371557
William Stanley Haseltine – Temple of “Ceres” at Paestum, 19th century. Notice the swampiness.

I can hear you Dear Reader, you are thinking: “I’m literally looking at a picture of the temple, we obviously did not lose it!”

Sure, but you have to understand: that’s just a temple. Sure, people who lived in the area may know that there were some ruins there, but they didn’t know what it was, and the collective consciousness had forgotten about it. Some people may encounter the name in ancient texts, and would identify it with the nearby Agropoli.

It’s hard to imagine that some knowledge may just disappear, in an era where you can lookup any random name on the internet, but forgetting was the norm.

The historian Alessandro Barbero often says this about antiquity: when an historian or a teacher speaks about antiquity, we have the feeling of knowing everything about it. In reality, we know almost nothing about it.

Historians in pre-modern times wrote some stuff down, but not much, most was lost, and some time they just made shit up. Someone invented a princess Scota of Egyptian origin to explain the latin name Scotia for Scotland, and this became accepted knowledge for a few centuries.

Charlemagne founded the Scola Palatinae to standardize the bible, gave it money to fund monks, its own herd of sheep to make parchment… and they did a massive production of 2 bibles per year. For centuries knowledge was rare.

But today.. this is such an incredible site, and still, it is kind of forgotten. Did you know about it? I was lucky enough to visit it while in high school, but my wife, who has travelled Italy far more than me, had never even heard of it.

Apparently this place is home to 2 overlapping UNESCO sites. It’s a stunning area where you can see multiple Greek temples intermixed with Roman architecture. There are Lucanian tombs and paintings (these are the folks who invented the -Roman circus, tho you may never had heard of them). The city is also where the largest surviving Greek painting was found.

It’s a must see in my opinion (although the museum is under renovation), and I hope it does not get forgotten.

A city is not dead while its name is still spoken§

I worry sometimes about our age. We have access to so much information that it becomes really, really hard to focus. In a sense, we live in the opposite hell of the medieval people.

Any historical site needs to fight for relevance, or it will be forgotten. People used to travel in their own country before going abroad, but they don’t anymore, so you don’t get “visited by default” these days.

This won’t be a problem for Florence or Stonehenge but what will happen with the minor sites?

And what will happen with non-historical sites? Small towns are already depopulating and being abandoned in Europe and elsewhere. In the last 20 years large urban population doubled, in part because of population growth, and in part because people no longer want to live in a small village with one church (or temple).

There are towns becoming forgotten right now, I suppose this is normal, but it is, in some sense, humbling. We will be forgotten too, and I am sometimes saddened that I can’t remember my grand-grandparents’ names§, and perhaps it is necessary to lose sight of old things to focus on the new ones.

Still, I hope I don’t get forgotten too soon.

On Athens

Una faccia una razza

A phrase often heard by Italians visiting Greece is “una faccia una razza“, (one face, one race) implying we look like each other, so we’re more or less the same people.

This sentence may have stemmed from fascist propaganda, but it has been embraced by the tourist industry, because one thing Capitalism is good at is recycling things. Think Che Guevara t-shirts.

And yet, one can forgive the person who made it up, as Italians do feel at home in Greece. When Greeks and Italians meet and discuss the oddities of their respective countries, the other side is generally nodding along saying yeah, we also have this.

Messy government? Check. People spending way too many years in university for no good reasons, and the concept of “refusing low grades”? Check. A bunch of leftists and anarchists§ but also popular neo-fascist movements? Double check. The sea, mediterranean diet, family, religion..? Check them all.

I also believe spoken Greek is the only language which shares a melodic cadence with Italian. If you hear people speaking but you can’t hear the words, you can easily confuse the two§.

But there’s something deeper than that.

Civilization

When I was a kid, I had a deep love for classical antiquity.

This was, perhaps due to the fact that I grew up in Italy, but I think it was really because I got into competitive trivia with my best friend, trying to outdo each other in class with anecdotes and tales and such.

Plus, my mom used to say me and my brother were her jewels.

Anyway, in my child brain, Roman, Etruscan, Greeks etc.. all got mixed up together, and that has tinted my perception since, and made me feel like we share more than we may actually do.

Gave me that feeling that, sure, we share no language nor alphabet, but modern Greeks and modern Italians have a common inheritance. Deep down, while our respective countries are no longer the center of the universe, we still look at the rest of the world and somehow still feel we’re the civilized ones, and foreigners are barbarians.

In the words of the satyrical masterpiece Fascists on Mars, one can secretly keep thinking of outsiders as

people who were hunting groundhogs naked, while we were already stabbing a Julius Caesar!

Gaetano Maria Barbagli (Corrado Guzzanti)

Is this feeling justified? Of course not, Dear Reader, it is pretty obvious we are the backward countries now. But still.

A tale of two cities

So when arriving in Athens, I expect to see Rome. Old women going to churches, with a slightly different layout. Collapsed temples, albeit made from different stones. Roads that were old millennia ago, covered with cars that should have been kicked out of the city center decades ago. Shitty souvenir shops and grand architecture.

That is true, up to a point. But what I did not realize is that Athens and Rome diverged, in the last couple millennia, while I wasn’t paying attention.

Rome was still an important center of the western mediterranean, while the eastern center moved to Costantinopole Bysantium Istanbul.

While Rome was the see of the Pope and capital of the Papal States, Athens was a minor city in the Ottoman Empire. Rome got new baroque churches, while the old ones in Athens were converted to mosques, and when the greeks gained independence, they were, supposedly, demolished altogether.

That would explain why you don’t find something like San Paolo fuori le mura, but either large modern churches, or tiny ancient ones, that the ottomans didn’t bother with.

And then you have the modern developments. Downtown Rome has been a mass tourist destination for decades, and this means almost everything downtown has been restored and redone to accomodate tourists. Except public transport. Meanwhile, downtown Athens is still full of half-demolished buildings, and a stone throw from the tourist center you’ll find big ugly buildings where floors have been converted to be a Chinese import warehouse. Chinese Communism is good at recycling things, think Che-Guevara t-shirts.

I was told Athens gets 3M airline visits per year, which is about one tenth of the people who land in Rome’s main airport.

So the city feels, in some sense, still protected from mass tourism. Yes once you climb up the acropolis you will encounter a bunch of pesky foreigners, but you still have a chance of meeting some genuine greek people downtown.

Good luck finding a non-tourist in Rome’s Trident.

What is also interesting is that, as soon as you walk a bit out, you’ll find a bunch of rundown buildings which, you would assume, could be trivially renovated and turned into a B&B. But I am told this does not happen because they appear to often have no foundation.

So you’d have to build one but (like in Rome!) as soon as you dig a hole you’ll find something of archeological value, and the authorities will freeze the construction. And so no bank is giving out loans for this, and so it does not happen. Fintech is not good at recycling things.

A big hunk of stone

What might really set Athens apart from Rome, is the fact that it’s a port. I mean, the sea is a pretty distinctive thing. But you see, Athens is not named Poseidons.

A legend§ goes that the God of the Sea and the Goddess of Wisdom had a contest to decide who would be patron of the city, on the Acropolis.

Poseidon struck the ground and water sprung out. Athena had an olive tree come out of the dirt. The people chose olives.§

But the main character in this story is neither Athena nor Poseidon. It’s the Acropolis.

I did not expect the Acropolis. Rome has hills, sure. Edinburg has a pretty massive rock in the middle. Many ancient cities are built on high ground.

But the Acropolis of Athens dominates the city with an almost cyberpunk look.

Its sides have been built and rebuilt and fortified and bombarded and it has almost no vegetation, and you just look up and you see it from freaking everywhere.

Basically every accommodation in Athens has “a view on the Acropolis” in their description because it’s visible from everywhere, it’s just a matter of turning the right way!

And… it’s somewhat tiny at the top? But oh, so beautiful.

I am familiar with classical temples. I’ve seen a ton of them, both Roman and Greek. A church in my hometown has columns that have probably been stolen from some and I grew up between them.

I know, cause I studied it in school, that columns are tapered to trick your eyes to look taller. I remember the ones on the corners are bent differently to make the facade look better. I recognize the column orders. And yet, the Parthenon is such a sight that your rational brain takes a back seat and you’re left in awe.

Shadow of the Colossus

The problem with the Acropolis, and the Parthenon, is that it’s too important. The newly built Acropolis museum is literally shaped like the rock, and it was built to host the Parthenon marbles when the freaking barbarians will give them back.

But there’s so much more! For example, the Kerameikos area is absolutely awesome, but mostly ignored by weekend travelers. As someone who has shepherded people in Rome, I can sympathize, I know I’ll never get anyone to stay long enough to visit everything, they just want to put a checkmark on the Colosseum and Saint Peter.§

What about modern Athens and ancient Athens tho? Are people condemned to live in the shadow of ancient greatness, will they be constrained by that? Should modern artists measure themselves with Phidias?

I don’t think so. And I don’t think it’s happening. Athens felt like a vibrant city, where many things are happening.

But perhaps it is at risk, as mass tourism inevitably embraces it. Like Rome, its center will probably become even more overrun with shitty accommodations and pseudogreek eateries. Old people will die and their kids will rent out their places. New buildings will come and old ones will go. You’ll no longer walk on cracked stairs built a century ago, but on modern ones made with marble imported from the Far East. The soul of the city will shift.

But there’s something called the Lindy effect, which in short says, the older something is, the more likely it is it continue existing.

Do you trust the building you’re in now, to be there in 50 years? 100 years? 200? I do not. But I’m pretty confident the Etruscan tombs in my home town will still be there.

Athens will be fine too, it went through a lot, but it stood for three millennia, it’ll manage.

Micro review: A Wizard’s Guide to Defensive Baking

This is a book published in 2020, and I decided to read it as it’s quite short, it has been recommended a few times in many forums, and let’s be honest, it has a pretty fantastic title.

The book is credited as being written by T. Kingfisher, but that turns out to be a pseudonym for Ursula Vernon, and is supposedly a young adult publication.

I actually did read something from Ursula before, the Digger comic § and I quite liked it! But it has a completely different vibe.

The book tracks the adventure of a young magicker girl who works in a bakery and specializes in, well, bread magic. It is quite entertaining, light hearted, and I feel a movie might be objectively great.

Of course, I am not the target audience, so to me it seemed perhaps a bit simplistic and predictable, but hey, it was fun.

Vote: 6.5/10

Mini review: MIND MGMT

Last year I read this comic by Matt Kindt, I put off writing a blog post about it for a long time, but I really wanted to do it, as this is one of the best thing I have ever read.

I read the three-volume omnibus, which was pretty complicated to get §but it was worth it.

MIND MGMT Omnibus
MIND MGMT Omnibus

The comic book tells the story of an eponymous government agency which specializes in training and handling agents with psychic powers, sending them to operate all over the world as you would expect from any proper spy agency.

Now, Dear Reader, you may be thinking this is just another instance of the Super Children School, as seen in Professor Xavier’s School for Gifted Youngsters, The Umbrella Academy, and many, many others. You’re way off.

Common classes here are subliminal messages in advertisement, mass hypnosis via books and music, predicting the future, and becoming immortal. And there are monks in charge of recording the actual history of the world, to keep the agency honest.

Most of all, these are not super-heroes with super-problems with larger than life fighting scenes. These are problematic government officers working in a paranoid spy world reminiscent of the cold war, while also having god-like powers, with conspiracy theories thrown in.

The story is about a woman, Meru, who ends up discovering the existence of MIND MGMT, meeting some of its members, learning about herself, and showing by example why the agency is either a terrible evil or an absolute necessity.

But this is not what the book is about. The essence of the book is to give depth and concreteness to this world, which it does in every possible way. The pages are printed as field report forms, including dotted lines and “please write here” notes. On the page borders, you find excerpts of the MIND MGMT Field Guide, in-universe novels, songs, poetry, fourth-wall breaking messages from the characters, and so on. Also, we get “personnel files” in each number, which are small masterpieces on their own.

The faux advertisement interspersed in the book will regularly contain hidden content, in-panel text is always meaningful, and while most of this is obvious you will get stuck trying to extract information from everything.§ If a book makes you paranoid, it means it’s good.

The art style is somewhat off-putting at first but improves as the books go on, and at some point it becomes implicit communication itself, which is pretty great.

The story gets meandering about 2/3 of the way, and IMO it could have been shorter and little would have been lost, but this is saved by one of the best ending I read in my life.

I regret not having read this at the time it was being published, not knowing it existed, but this comic is so good I ended up also buying a four-issue spin ogg mini series recently published, MIND MGMT: Bootleg§ and heck, I almost bought the board game too.

So, go read this, you won’t regret it.

Vote: 8/10

Mini review: Stand on Zanzibar

I just finished reading (well, listening) Stand on Zanzibar by John Brunner. It won the Hugo Award, and has often been mentioned both by casual readers and by SF authors a must read, so I decided to give it a go.

I didn’t like it very much, but read till the end. Some minor spoilers included.

stand on zanzibar (audible thumbnail)

The Good & The Bad

The world building is pretty good, and the author uses the trick of having whole sections of jumbled up snippets, like zapping through TV channels, so that you get a bunch of advertisement, news reel and so on.

This is of course a common trope (my favourite Shaun of the Dead scenes plays on this) but it allows the writer to just give a ton of depth while avoiding character infodumping. It does not work too well on an audiobook, alas.

The plot lines are much of the same tho. We have multiple things happening, only tangential to each other.

There’s the megacorp that wants to develop something huge in Africa. There’s the afram (sic) manager which has risen quickly in the company ranks using his ethnicity. There’s the super-AI owned by the megacorp which is unable to approve the plans because they’re based on what it thinks are invalid assumptions. There’s the rising power of China with its own super-AI. There’s government-enforce eugenics, genetic manipulation, buying kids and baby farming in underdeveloped countries. The rise of a new power in south-east Asia. There’s the media controlling narrative and people living in their own bubble. There’s the truth-sayers which speak of the dangers of everything and are not censored, but they are basically ignored.

But, again: there’s so much stuff, and so little unity. I am not saying it’s badly written. It’s written perfectly. It’s just that I have not cared for this style since I hit 30.

The awesome

But wait, let’s go back to the worldbulding: it’s a really good world, and it holds together, and it feels very predictive, and modern and speaking a lot about our society.

But it was published in 1968. This means it is closer to World War I than it is to today. It’s a time when computers were in their infancy, and black&white TVs were still outselling the Color ones.

The author hit so many targets that it’s honestly mindblowing. And the writing still feels fresh and not dated at all.

So, I didn’t like this book very much, but I have to say: maybe read it anyway.

Vote: 6.5/10

PS

The AI, Shalmaneser, refuses to predict the economic results of the company’s projects in Beninia. I tried asking ChatGPT, and, alas, it also refused. So, mark one more point for the author.

Solving Advent of Code Day 21 using Z3 and Ruby

This year (2022) I decided to finally try to use Z3 to solve an Advent Of Code challenge, Day 21, to be precise.

Z3 is a theorem prover/SAT/SMT solver, which means “it will solve problems for you“. This is what computers are supposed to do, and I loved this stuff since I did an Operational Research exam in University.

Z3 can solve a variety of problems, but for this problem we just need to understand how it solves simple equations.

How to do algebra with Z3/Ruby

The Ruby bindings for Z3 are not as popular as, say, the python ones, but they work just fine. Install Z3 using your favorite tool (mine is MacPorts), and then the gem

$ port install z3
... compiling stuff
$ gem install z3
... compiling more stuff
$ ruby -r z3 -e 'p Z3.class'
Module

You can start coding now.

To solve an equation with Z3 you define a model composed of variables, values, and constraints, and then ask the solver to fill in the blanks.

The simplest thing you can do is a basic math expression

require 'z3'
solver = Z3::Solver.new

# the argument is the name of the variable in the model
a = Z3.Int('a')
b = Z3.Int('b')
x = Z3.Int('x')

solver.assert a == 1
solver.assert b == 3

solver.assert x == a + b

if solver.satisfiable?
  p solver.model
else
  puts "I can't solve that, Dave"
end

running this should give you

$ ruby additionz3.rb
Z3::Model<a=1, b=3, x=4>

Behold! You can do basic math!

The interesting bit is that Z3.Int is a Z3::IntExpr object, and when you mix it with numbers or other expressions you get back more of the same, you can explore this in irb

>> require 'z3'
=> true
>> a = Z3.Int('a')
=> Int<a>
>> a.class
=> Z3::IntExpr
>> b = a+1
=> Int<a + 1>
>> b.class
=> Z3::IntExpr

You can of course use other operators, such as relational operators. This is how you solve the problem of finding a number between two others

require 'z3'
solver = Z3::Solver.new

a = Z3.Int('a')
b = Z3.Int('b')
x = Z3.Int('x')

solver.assert a == 1
solver.assert b == 3

solver.assert x > a
solver.assert x < b

if solver.satisfiable?
  p solver.model # Z3::Model<a=1, b=3, x=2>
else
  puts "I can't do that Dave"
end

you can solve a system of equations in pretty much the same way. The classic puzzle SEND+MORE=MONEY where each letter is a different digit can be solved like this

require "z3"
solver = Z3::Solver.new

variables = "sendmoremoney".chars.uniq.each_with_object({}) do |digit, hash|
  # All variables are digits
  var = Z3.Int(digit)
  solver.assert var >= 0
  solver.assert var <= 9
  hash[digit] = var
end

# define the words in terms of the digits
send = variables["s"] * 1000 + variables["e"] * 100 + variables["n"] * 10 + variables["d"]
more = variables["m"] * 1000 + variables["o"] * 100 + variables["r"] * 10 + variables["e"]
money = variables["m"] * 10000 + variables["o"] * 1000 + variables["n"] * 100 + variables["e"] * 10 + variables["y"]

# the leftmost digit is never zero
solver.assert variables['s'] > 0
solver.assert variables['m'] > 0

# all digits are different
solver.assert Z3.Distinct(*variables.values)

# define the actual expression
solver.assert money == send + more

if solver.satisfiable?
  # get the values from the model, indexed by their name
  values = solver.model.to_h
  # map each letter to the variable and find each variable in the model
  "send + more = money".chars.map do |char|
    var = variables[char]
    print values[var] || char
  end
  puts
else
  p "Impossibru!"
end

should print

$ ruby smm.rb
9567 + 1085 = 10652

Solving Day 21 with Z3

Spoiler alert: this covers part 2 which is not visible unless you solve part 1.

The problem is: you have a set of monkeys shouting at each other, defined like this:

root: pppw = sjmn
dbpl: 5
cczh: sllz + lgvd
zczc: 2
ptdq: humn - dvpt
dvpt: 3
lfqf: 4
humn: ?
ljgn: 2
sjmn: drzm * dbpl
sllz: 4
pppw: cczh / lfqf
lgvd: ljgn * ptdq
drzm: hmdt - zczc
hmdt: 32

to the left of the : you have the monkey name, and to the right something they shout. A monkey shouts either a number, or the result of an operation based on numbers shouted by other monkeys, except for two of them: the monkey named root will check if the two numbers are equal, and humn represents you: you need to yell the right number so the equality check returns true.

My Clever Reader will have realized this is a simple algebraic problem, but the real input is large, to solve it you would have to think, determine the order of the operations, build a tree.. yeah I got bored already.

But executing instructions is what the Ruby interpreter does. And there is a clear mapping from the input a ruby+z3 instruction. So… let’s just transpile the input to a ruby program!

Each input line becomes an assert, we add a prologue, eval it, and then ask for a solution:

require 'z3'
input = <<~INPUT.lines
    root: pppw + sjmn
    dbpl: 5
    cczh: sllz + lgvd
    zczc: 2
    ptdq: humn - dvpt
    dvpt: 3
    lfqf: 4
    humn: 5
    ljgn: 2
    sjmn: drzm * dbpl
    sllz: 4
    pppw: cczh / lfqf
    lgvd: ljgn * ptdq
    drzm: hmdt - zczc
    hmdt: 32
  INPUT

# create a hash monkey-name -> variable 
# so we can look them up by name
env = Hash.new { |h, k| h[k] = Z3.Int(k) }

# convert the input to a ruby program 
prog = input.map do |l|
  # root checks equality
  l = l.sub(/root: (.*) \+ (.*)\n/, 'solver.assert env["\1"] == env["\2"]' + "\n")
  # this is our incognita, just get rid of it
  l = l.sub(/humn: (.*)\n/, "\n")
  # assert a variable as an exact number
  l = l.sub(/(\w+): (\d+)\n/, 'solver.assert(env["\1"] == \2)' + "\n")
  # assert a variable as the result of a binary operation
  l = l.sub(/(\w+): (\w+) (.) (\w+)\n/, 'solver.assert(env["\1"] == (env["\2"] \3 env["\4"]))' + "\n")
  l
end

solver = Z3::Solver.new
# ger the program in here
eval(prog.join)

# solve and show our solution
p solver.satisfiable?
# ask for a solution
p solver.model.to_h[env["humn"]].to_i

If you remove the input, this boils down to ~10 lines of code.

Is it ugly? Yes. Is it cheating? Probably. Is it running eval on random input I just downloaded from the internet? You bet it is.

But I had a lot of fun.

Cosa dicono i topi nella canzoncina di Kit & Sam?

TLDR: in “Misteri del regno animale” nella canzoncina dicono “File dei Fatti”

I miei figli hanno preso a guardare Kit & Sam – Misteri del regno animale su Netflix.

√ą un cartone animato simpatico, dove due detective animali risolvono casi mentre insegnano qualcosa su qualche specie. Hanno trattato alcuni dei miei animali preferiti, come la tartaruga azzannatrica e l’eterocefalo glabro (“talpa nuda africana”), e secondo me √® un cartone carino..

Ma: c’√® una sigletta in cui la “Squadra Topi” canta una sigletta con ritornello incomprensibile (in italiano).

Bill & Jill – La Squadra Topi

Perché dico che è incomprensibile? Perché né io, né i miei figli siamo riusciti a capire cosa dice. Fan dei botti? Fan dei topi? Fatti Fotti?

La curiosità mi stava uccidendo. Al che uno dice, vabè, cerco su internet.

Dai suggerimenti di ricerca di DuckDuckGo e Google √® evidente che non sono la prima persona, ma √® pure chiaro che non c’√® risposta su internet. Ho provato pure con Netflix Italia su twitter, ma nessuna risposta.

Ma basta leggere i sottotitoli, diranno ora i miei lettori. Cal cavolo, perch√© ovviamente i sottotitoli italiani non corrispondono all’audio italiano, come spesso accade. Nei sottotitoli dicono solo “Dossier!

Grazie al cielo, si pu√≤ sempre contare sugli adattamenti parola per parola di Netflix: in inglese √® “Fact File“, quindi in italiano probabilmente dicono “File dei Fatti“.

Posso anche io unirmi al tormentone del cartone animato “un altro grande caso: risolto!”