# 2013-01-08 Online Photos

In 2012, I basically took pictures using Instagram, shared them with Facebook (part of the family), Twitter (another part of the family), Flickr (my favorite), and I used IFTTT to send a copy to Picasa Web because I felt that I’d like to have some pictures for people to see on Google+.

But then, when Instagram changed its terms of service (they rephrased them somewhat) and I decided that I might want to look into using something else for a bit.

I liked the new Flickr app somewhat.

I tried organizing my pictures on Picasa Web but was unable to create a new empty album in order to move some of my pictures in the Scrapbook album. When I selected more than 300 of the pictures and tried to move them, it also told me I could not move more than 100 at a time. I was confused. It looked like the user interface could use some improvements. I even started up my local Picasa copy and wasn’t clear on how to use it to manage my albums online. Perhaps you can’t. I was not impressed. It looks as if I’m not going to abandon iPhoto any time soon. Then again, I really want to abandon iPhoto one of these days because I hate it’s opaque storage regime.

Also, the lens or the protective plastic cover of my iPhone camera is scratched. The photos from the main camera now all look hazy. The terrible quality had resulted in me taking a lot of self-portraits from the second camera.

Since I didn’t want to use Instagram too often, I have uploaded the pictures to Flickr directly. This means that I haven’t posted any pictures to Facebook; I haven’t posted any pictures to Twitter, and none where uploaded to Picasa Web.

Strangely enough it doesn’t bother me.

Maybe it bothers me a bit because I’ve been using simple photos of my daily life as a replacement for status updates for my family and friends. We’ll see. Perhaps I’ll post status updates again. Or I’ll abandon Facebook. Or resume the use of Instagram.

Tags:

# 2013-01-11 Trying LaTeX Again

Inspired by a link to LaTeX templates Brad Murray had posted recently on Google+, I decided to try and spend a few hours moving a German FATE variant of mine (inspired by the simplicity of the Diaspora core but with skills appropriate for a Mesopotamia or Ancient Greece setting) to !LaTeX. I really wanted to use the Tufte template.

I really hate editing the text such that section beginnings and endings fall on page breaks! But I think it worked. I’m not quite sure whether it it actually significantly better. After having spent a few hours refreshing my LaTeX skills, I guess I'm just happy it's done What do you think of the layout?

Update: Now on GitHub.

Tags:

Comments on 2013-01-11 Trying LaTeX Again

Why did you make the whole document two-column?

– Stefan 2013-01-11 18:32 UTC

I like the rules in the main text and the example in the sidebar. I also like the look of the Edward Tufte books, so that was an additional incentive to use this template.

AlexSchroeder 2013-01-12 08:53 UTC

# 2013-01-14 Javascript

I just rewrote my Tag Cloud to use the Google Treemap.

What it does is the following:

1. The cloud action runs the old code (text representation).
2. The tagcloud action runs the new code.
3. The new code basically takes the example Google Treemap and replaces the data with my tags. These tags are not nested.
4. On click, we call the tag action which shows the last blog pages with that tag.

Try it! → Tag Cloud. (I realize that the tag cloud isn’t very interesting in and of itself. I just enjoyed using the Google tools and learning a little bit of Javascript on the way.)

$Action{cloud} =$Action{tagcloud};
$Action{tagcloud} = \&MyTagCloud; sub MyTagCloud { print GetHeader('', T('Tag Cloud'), ''); # open the DB file require DB_File; tie %h, "DB_File",$TagFile;
my $max = 0; my$min = 0;
my %count = ();
foreach my $tag (grep !/^_/, keys %h) {$count{$tag} = split(/$FS/, $h{$tag});
$max =$count{$tag} if$count{$tag} >$max;
$min =$count{$tag} if not$min or $count{$tag} < $min; } untie %h; # ignore 90% of all tags my @values = sort values %count;$min = GetParam('min', $values[int($#values * 0.9)]);
print <<EOT;
<script type="text/javascript">
function drawChart() {
// Create and populate the data table.
['Location', 'Parent', 'Mentions', ''],
['Tags', null, 0, 0],
EOT
foreach my $tag (sort keys %count) { my$n = $count{$tag};
next unless $n >$min;
print "          ['$tag', 'Tags',$n, 0],\n";
}
print <<EOT;
]);
// Create and draw the visualization.
tree.draw(data);
function selectHandler() {
var selection = tree.getSelection();
var item = selection[0];
window.location = "/alex?action=tag;id=" + data.getValue(item.row,0);
}
}
</script>
EOT
print $q->start_div({-class=>'content cloud'}); print$q->p(ScriptLink('action=tagcloud;min=0', T('Include all tags')),
Ts('(currently showing tags with more than %s occurences)', $min)); print$q->p(Ts('Or switch to a %s.', ScriptLink('action=cloud', T('text format'))));
print $q->start_div({-id=>'treemap', -style=>'height: 1000px;'}); print$q->end_div();
print \$q->end_div();
PrintFooter();
}

# 2013-01-19 Spears of the Dawn

The PDF for backers of Kevin Crawford’s Spears of the Dawn is done! It was on Kickstarter: “Spears of the Dawn, an African-inspired old-school RPG from the maker of Stars Without Number.”

I just leafed through it and I liked what I saw! It makes me want to add an African-inspired section to my campaign right now.

I liked the art. The pieces fit together, had a unified style, made me want to play or meet those characters.

Remember, I didn’t read those 180 pages. But some of my impressions regarding the rules: standard six attributes but smaller modifiers: 3 → -2; 4–7 → -1; 14–17 → +1; 18 → +2. There are four cultures with half a page of background followed by a large number of interesting one-paragraph character backgrounds that grant you a number of skills. Skills go from 0–4. I’m not a big friend of skill systems, but it doesn’t bother me too much.

There are four classes: warriors (fighters) and three classes with magical abilities—griots (bards), marabouts (clerics) and ngangas (magic users).

The “fighters” have access to a very simple feat system. I’m no friend of the feats in D&D 3.5 or Adventure Conqueror King, but this system here only takes a single page and doesn’t constitute a feat tree and only concerns fighters. I think this works for me.

There are three kinds of “bard” songs (minor, great, ancient) and characters get access to the more powerful variants at 4th and at 7th level. I like the simplicity of the system. The effects of these songs persists for as long as they are being sung.

The “clerics” can invoke miracles (spells) from a variety of spheres. They are spontaneous casters with a certain number of miracles/day limit. Each sphere comes with a list of spells. Thus, by gaining access to more spheres they get more choice in spells. Their favorite sphere gets them a minor magical ability.

The power of “magic users” comes in the form of rituals and spells. Known rituals can be performed as long as the characters have the necessary time and resources (many cost money). Spells are “memorized” by creating little fetishes and “cast” by triggering them.

The various classes are an excellent demonstration of how to rewrite the standard descriptions to conjure up a different atmosphere and invoke the new setting.

There is a one-page quick reference after the rules section. Excellent idea.

There is a lot of material explaining how to run a sandbox campaign without just copying what he said in Red Tide and An Echo Resounding. Excellent!

Three pages on how to play—responsibility of players, responsibility of the referee, how to start the first session, this kind of stuff, short and succinct. Another three pages on typical pitfalls: how to use combat in your game, how to handle character death, how to handle investigative games, how to handle magic items, how to handle unfamiliarity with the setting. All of these are a great introduction to people unfamiliar with sandbox play, I think. Thinking back to my recent game mastering career and remembering the D&D 3.5 Dungeon Master Guide, I’d say that these pages here come with all the relevant advice that you need.

The domain game uses Might, Trouble and Treasure as the kingdom stats. In An Echo Resounding the three stats were Military, Social and Wealth. If you’re interested in a short overview of An Echo Resounding, check out my summary. The concepts are similar. These stats are used to resolve the kingdom turns. The game does not come with units, resources to build, mass combat and all the other things An Echo Resounding introduced.

As for creating adventures: the book comes with an empty map for a dungeon, a building, an estate, a shrine, a cave; it comes with tables for cults, magic user spells, non-player characters, cultures, names, adventure elements; domain game rules incl. building costs, henchmen, hirelings, magic items, treasures, monsters—all suitably themed! I think this is awesome. The book also comes with a lot of advice on how to go about creating adventures, how to think about the set (the place), the actors (denizens, non-player characters) and props (treasure, items), and how to put the three together. Skimming through this section, I found myself nodding along.

There is an index, which is something I appreciate. There’s also an annotated bibliography for fiction, history, mythology, religion and pictures. This should be useful for people like me with practically no experience with Africa.

All in all, I think this book would be an excellent book. With its 180 pages it looks much like a slightly expanded B/X D&D with an African theme. It has plenty of good advice and ideas for beginners and sandbox newbies. Personally, I think many games lack the succinct guidance a new referee needs. The D&D 3.5 DM’s guide didn’t have it. I don’t think my favorite variant of the game has it, either: Labyrinth Lord is quite bare bones. At the same time, Spears of Dawn is not simply a collection of house rules tacked onto B/X D&D. The infusion of the African setting into every paragraph and its strong focus on teaching the reader how to run a sandbox campaign sets it appart.

star: :star: :star: :star: :star:

I highly recommend it. Then again, remember I haven’t read it in depth (and I probably won’t unless the campaign moves into an African direction).

# 2013-01-22 Changers

These days my players are exploring the Forgotten Depths. I added Tower of the Changer (from Metal Earth). It mentions Dilvashti the Carrion-Sculptor (from Planet Algol). Looking at my campaign and the existing Frankenstein arts, I decided that a level 14 Vivimancer using Theorems & Thaumaturgy (from The City of Iron) would be ideal.

What can I say? Some of the best stuff out there is free. Thank you, RPG bloggers!

Also, my blog needs more metal. ;)

Tags:

DeletedPage

# 2013-01-22 Gists on Emacs Wiki

I just read a rant about Emacs Wiki and it’s alternative: The Wikemacs Experiment: 300 Days Later. Check out How Emacs Wiki Works for some context from my point of view. Anyway, the anonymous author says: “Maybe someone could work with Alex to add gist-style code snippets to Oddmuse, and make it so that code can be cited inline on Wiki pages, so that anyone visiting the page is automatically looking at the most up to date version of the code.”

Let’s take this random gist as an example. Click on the “view raw” button. Use <include text "..."> to transclude it:

(setq abg-elisp-external-dir
(expand-file-name "external" abg-elisp-dir))

; ...

(dolist (project (directory-files abg-elisp-external-dir t "\\w+"))
(when (file-directory-p project)


Actually, I added an Emacs Wiki feature using two lines of code that add support for fancy inclusion:

<include gist "https://gist.github.com/1236665">

It only works over there, however. See EmacsWiki:Gists.

Anyway, the same also works for Lisppaste:

<include text "http://paste.lisp.org/display/134703/raw">

Results in:

;; Set XTERM resources as so
;;
;; metaSendsEscape: false
;; altSendsEscape: false
;; eightBitInput: true

;; Verify with cat > /dev/null command that pressing alt-a
;; alt-b and so on produces single >128bit char (will look
;; like a with a hat

;; once above is working in emacs do

;; Prevent pressing esc O from triggering binding
(define-key (get-input-decode-map) "\eO" nil)

;; tell emacs Meta is 8th bit
(cond ((fboundp 'set-input-meta-mode)
(set-input-meta-mode t))
(t (set-input-mode t nil t)))

I don’t think there’s a nice way to include the colored version, unfortunately.

Update: I added support and minimal Lisp highlighting for the following:

<include lisppaste "http://paste.lisp.org/display/134703">

It only works over there, of course.

Tags:

# 2013-01-23 Handyman

I replaced the lens cover on my iPhone 4!

1. I watched this German video on YouTube.
2. I read this encouraging German report on how to do it.
3. I ordered some stuff from a Swiss website.

I had to order two lens covers because the minimum order is 10 CHF (about 10 USD):

 iPhone 4 Kamera Halter mit Chrom Ring und Linse R1-B-030 2 11,80 CHF iPhone 5 / 4S / 4 Werkzeugset 5in1 Tool-IP4-Rot 1 3,90 CHF Zwischensumme 14,54 CHF Versandkosten 0,00 CHF !MwSt. 1,16 CHF Gesamtsumme 15,70 CHF

Work, work…

Schönes Wetter, Baustellen, Graffiti
Yay! :ok:

Tags:

I recently needed to replace the lens cover again. And a day later it falls to the floor and the back cover shatters. Aaaaargh! Ordering one more spare lens cover and a new back cover. Luckily, this stuff is cheap.

AlexSchroeder 2013-07-18 20:14 UTC

In the anonymous rant The Wikemacs Experiment: 300 Days Later, the author claims “The biggest problem is that it is insecure. […] Anyone can edit any of the pages that contain Elisp code.” The same sentiment was expressed by Alex Bennée in a comment on Google+: “What is really needed is a way to be sure that the source for the emacs extension your updating hasn’t been subverted by someone else with ill intent.”

I said:

Experiences and ideas of “what is really necessary” vary. As for myself, I’ve installed code from all over the Internet without reviewing the source. Installing it from a gist or git repo is hardly a different experience. If you want to figure out whether a source is trustworthy, you do the usual things: do people link to the code, how long has it been around, what about recent checkins, that sort of thing. Or you get into the crypto business of signing releases.

You could of course say that every day that passes without a problem increases our false sense of security… I have no answer to that. All I can say is that if security is your problem, using gists and github is not the solution (as you say yourself). The source of the insecurity is our habits, our culture of downloading and installing anything and everything. I’m not sure how you’ll ever make sure “that the source for the emacs extension your updating hasn’t been subverted by someone else with ill intent.” That seems pretty impossible to me unless you limit yourself to the core Emacs distribution (and even that’s not a guarantee).

People on the #emacs channel keep asking “is there way to do X” and thus my impression is that finding stuff is a more pressing problem. I feel that encouraging people to create a page on the wiki saying “here is code to help you do something” is the solution to that problem.

But then again, I guess we all differ in what we consider to be the most pressing problem.

Alex Bennée the correctly points out that using “a user locked solution like a gist or git repo you can at least be assured what you’re installing has come through one person who you’ve trusted to a degree before.” I guess that’s true. We’ll see whether people start switching over to using gists instead of editing wiki pages. I said in an earlier comment:

I added gist support […] because it was easy to do, not because it will encourage existing authors to move their elisp code on wiki pages to github. If at all, it might encourage future elisp authors to transclude a gist… But then again, there’s nothing preventing them from linking to a gist right now. Perhaps it’s also a generational thing. People that have been living without github and gists don’t feel a particular need to start using it.﻿

Interesting times.

Tags:

Hi Alex,

first of all - thank you very much for Oddmuse! I’m using it for both my personal site and Department's site. It has some rough edges, but overall I find it a very nice tool, and I did recommend it to a few people.

Now to the point: I was just wondering whether it might be a good idea to use stackoverflow with [emacs] tag (which you mentioned in your earlier post), or maybe even start something like emacs.stackexchange.com? I’m not sure whether it could solve any problems you mentioned, but (at least for the more paranoia-oriented people) it might feel a bit more secure, with all the comments, up- and downvotes etc. I don’t know. (Personally, I didn’t use any actual code from Emacswiki, but I guess it would not be a huge problem for me.)

mbork 2013-01-23 20:55 UTC

Nothing has really changed. Previously, Lisp code was shared between a few Emacs hackers and the intention was to work on improving it and get it integrated into Emacs. The GNU Project was the trusted authority. They distributed the useful contributions. Obviously, that hasn’t scaled well. I think it’s perfectly reasonable for Emacs newbies to distrust code they can’t read that was written by hackers they don’t know.

AaronHawley 2013-01-23 21:56 UTC

Thank you for the kind words, Marcin. I think a lot of people are already using Stackoverflow for Emacs questions. I find the site incredibly useful when I’m at work (except my work is hardly ever related to Emacs, unfortunately).

I also agree with Aaron. Good point regarding the GNU Project being the trusted authority.

AlexSchroeder 2013-01-23 22:39 UTC

I’ve collected examples of manipulated code or binaries: http://www.koch.ro/blog/index.php?/archives/153-On-distributing-binaries.html

I don’t think that it’s too hard to get a gpg key, go to a signing party on your next software conference and sign all your releases. It’s rather dumb easy. And you can use signed git tags on github or any other git hosting platform to provide a very strong confidence for your user that they can trace you back in case you provided bad code.

Thomas Koch 2013-01-24 12:57 UTC

True, it is not “too hard” for many people. But when I write a little throw-away piece of code like EmacsWiki:1000 Words it’s a bit much to ask. I’ve never been to a key signing party. I never go to software conferences. I post it on the wiki. And when I write another little piece of code, I do it again. That’s why my code ends up on the wiki and not on github. I keep hoping people will volunteer to maintain code I wrote and either add it to Emacs itself or maintain it in decent repositories. I just don’t see myself doing it. I like the division of labor between programming and packaging.

AlexSchroeder 2013-01-25 10:24 UTC

It might be a bit too much to sign a little script of 10 lines that I can quickly review. I was rather referring to big software projects. However once you’ve got a gpg key you can sign a small code snippet just as easily as you can sign an email.

Thomas Koch 2013-01-26 10:11 UTC

I think now the discussion turns to the question of where to draw the line. There’s exactly one large project that is exclusively hosted on Emacs Wiki, I think: EmacsWiki:Icicles. Others, such as EmacsWiki:Anything moved to github. Other, like EmacsWiki:Gnus or EmacsWiki:BBDB were never hosted on Emacs Wiki to begin with. Then there are the large collection of inofficial extensions like the ones listed on EmacsWiki:rcirc. Do they count as a single project or is each file a separate one? From my point of view, each one is a separate project. I just use two of them myself. As such, they are not really “a little script of 10 lines” but they don’t feel like big software projects, either.

I think I’m with Aaron. Emacs Wiki mostly hosts code on the wiki that one could view as “incubator” stuff. Things that haven’t made it into their own repositories or that haven’t made it into Emacs itself. Thus, asking for version control and signed releases is—in the context of code hosted on Emacs Wiki—asking for the right thing at the wrong time. It’s premature for those small single file projects that are hanging in Limbo somewhere between ten lines and inclusion into Emacs or indendence as their separate projects.

AlexSchroeder 2013-01-26 11:46 UTC

Using El-Get you can easily add a checksum in your setup so that you only automatically get code from EmacsWiki with that checksum. So if you get to a new machine or re-install your Emacs setup from scratch, and the newly downloaded EmacsWiki code does not match your checksum, El-Get will refuse to load it for you. You can get the checksum interactively using M-x el-get-checksum command.

dim 2013-01-27 21:13 UTC

Excellent feature!

AlexSchroeder 2013-01-28 07:23 UTC

# 2013-01-29 Meine Probleme mit Burning Wheel

Gerade eben sah ich eine Frage von Thorsten Panknin auf Google+ zum Thema Burning Wheel. Ich habe mit Burning Wheel Revised zwei Einzelspiele geleitet (einmal Heian, einmal das Zombiebäreneinführungsabenteuer aus einem der Bücher), eine kurze Kampagne über das Netz geleitet (nur zwei Mitspieler, ein Abend Welterschaffung, sechs Abende für die Kampagne, Campaign:Krythos), und einmal in einer kurzen Kampagne am Tisch mitgespielt (wieder sechs Abende, Campaign:BurningSix). Was ich ihm auf alle Fälle geschrieben habe:

Ich wollte Burning Wheel immer gerne haben, habe Burning Wheel Revised gekauft, Zusatzbänder, Heian Setting, Jihad Setting, wollte meine Freunde überreden, es auszuprobieren… und als ich es dann probiert habe, war es lasch: die einfachen Dinge zu kompliziert (sobald man beim Kämpfen das einfache Gegeneinanderwürfeln weglässt), soziale Konflikte wollte ich lieber ausdiskutieren statt mit LSD-Schere-Stein-Papier auswürfeln, die Charaktererschaffung war langwierig und mühsam (endlose Zahlenschaufelei und tausend Fehlerquellen, dabei war die Anzahl Karriereschritte und die von ihnen vorgegebenen und erlaubten Fertigkeiten das einzig Interessante), überhaupt: Rüstungsverfall, Trefferregionen, Deckung… Da schläft mir das Gesicht ein, bis wir weiter kommen. Grundsätzlich mit extrem viel Meta Diskussion, weil die einzelnen Schritte nicht trivial sind oder gar ausgehandelt werden müssen, und demzufolge fehlt mir die Immersion. Ein Metaspiel mit Artha (Heldenpunkte) finde ich immer noch schrecklich, weil damit ein Teil der Spannung wegfällt, die Konflikte verlängert werden, der Spieler irgendwie entmündigt wird (kann er nicht richtig spielen kriegt er keine Punkte?). Der Tonfall des Autors, die Emo Magie, Lebenspfade, diese öfter kritisierten Elemente finde ich immer noch gut.

Zum Thema Artha bzw. Heldenpunkte und zum Thema soziale Konflikte habe ich auch mal was auf Englisch geschrieben: I don't like Bennies, Role Play, not Wish Fulfilment.

Kommentare hier, auf Google+ oder auf dem Forum.

Tags:

Comments on 2013-01-29 Meine Probleme mit Burning Wheel

Kommentare gerne auch auf dem Forum.

The problem with Google+ used to be that joining it gave you nothing. You needed to circle some people. Those people could potentially read what you wrote. For them to actually see it in their stream, however, they would have to circle you back. Alternatively, you could just post for all to see, but that doesn’t announce yourself to others, thus they won’t circle you, thus they’ll never see you in their stream.

Now, if you keep posting to your circles, and somebody new stumbles upon your profile, they see nothing. If you did not any public posts, then there’s nothing to see. That’s why people kept saying that you had to list your interests on your profile for others to figure out which circle to put you in. Hopefully you would in turn—based on their posts you saw—put them in the appropriate circles. This situation was better if you posted publicly, but it also tended to annoy some people: they just want to see posts on a particular topic, not see your political ranting and all that.

I sent Google feedback saying that I wanted to announce some of my circles on my profile such that people would automatically know how to sign up for them. Instead, we got Communities.

I think that in addition of working like instant forums, Communities can work just as I intended. Here’s how: Pick a circle like RPG. Instead of posting to the circle, post to the RPG Community. Tell others that this is what you are doing, eg. on your profile. The others add you to their circle and join the RPG Community. Now they’ll see your RPG posts without ever going to the Community. In fact, neither you nor they will ever “look at the Community”. All you’re doing is tagging the posts. This works because if you have circled people and they post in Communities both of you joined, you’ll see their posts in your stream. This way, the simple membership expresses interest in a circle. What do you think? It sounds like an excellent solution to me.﻿

The benefit is that you, as the author, don’t need to circle your readers. At the same time, newcomers can go to the Communities, check out who writes interesting stuff and circle the authors. It’s no longer symmetric.

The drawback is that now all your posts are effectively public—and obviously so since you posted to a public Community. If you want to draw a thin line, you can switch of the setting “Show your Google+ communities posts on the Posts tab of your Google+ profile.” Unfortunately, this also stops announcing your interests unless you link the communities you are posting to from your profile.

There is also the additional drawback of potentially annoying the people that want to treat communities like a forum. I’ll have to try it in order to know for sure.

Yet another drawback is that people that have me circled but haven’t joined any of the Communities I am using will not see those posts. I used to post to the RPG Circle, but now I’m posting to the RPG Community. If they are in my RPG Circle but haven’t joined the RPG Community, they won’t see the post unless they visit my profile. Well, to be honest I haven’t posted much of anything at all, but that would be the plan.

My current RPG communities:

I don’t think joining communities for systems I don’t use or Google+ Hangouts makes much sense (since I get to play a lot offline).

My current software oriented Communities:

Any other suggestions?

Tags:

I tried practically 100% Communities for a year, now. I deleted most of my circles and subscribed to communities instead. I felt that these would act as “public circles”.

I was never really happy about it. Nobody else seemed to be using communities this way. In addition to that, you could have “more” or “less” of a community in your home stream, but whenever I looked at the list of communities, I was unable to tell whether I had read all the posts or whether the good stuff has been slipping by. Today I added a big RPG circle by Claytonian JP. We’ll see how that goes.

I’m still not sure whether I should start posting publicly or whether I should keep posting to communities. I’ve seen people say that they uncircle when they see non-RPG posts in their stream. I’ve seen people say that they don’t just want to present a facet of themselves. It’s all or nothing. I guess I need to choose which faction I want to join. This sucks, because where as my blog is absolutely mixed content, you can always subscribe to just the RPG posts. I thought that communities was the middle ground I was looking for, but I guess it’s not to be.﻿

AlexSchroeder 2014-01-12 19:57 UTC

# 2013-01 Book Club

When: 23 January, 19:30 – RSVP on Meetup (optional ;))

Where: Bistro Lochergut (tram 2+3 ‘Lochergut’)

Book description (from Amazon): An astonishingly inventive, wonderfully exuberant novel that takes us from the shimmering dunes of ancient Egypt to the war-torn streets of twenty-first-century Lebanon.

In 2003, Osama al-Kharrat returns to Beirut after many years in America to stand vigil at his father’s deathbed. The city is a shell of the Beirut Osama remembers, but he and his friends and family take solace in the things that have always sustained them: gossip, laughter, and, above all, stories.

Osama’s grandfather was a hakawati, or storyteller, and his bewitching stories—of his arrival in Lebanon, an orphan of the Turkish wars, and of how he earned the name al-Kharrat, the fibster—are interwoven with classic tales of the Middle East, stunningly reimagined. Here are Abraham and Isaac; Ishmael, father of the Arab tribes; the ancient, fabled Fatima; and Baybars, the slave prince who vanquished the Crusaders. Here, too, are contemporary Lebanese whose stories tell a larger, heartbreaking tale of seemingly endless war—and of survival.

Like a true hakawati, Rabih Alameddine has given us an Arabian Nights for this century—a funny, captivating novel that enchants and dazzles from its very first lines: “Listen. Let me take you on a journey beyond imagining. Let me tell you a story.”