Comics Daze

I’ve done enough programming this week, so let’s get some comics readin’ done. And for today’s music — music from 1975 only.

Joni Mitchell: The Hissing Of Summer Lawns

12:49: Hogbook and Lazer Eyes by Maria Bamford & Scott Marvel Cassidy (Fantagraphics)

This starts off being the story of how the two creators met — and it’s very refreshing, because there’s like no drama.

But after a few pages of that, the book is almost exclusively about the various elderly pugs that they adopt. With a couple of pages about their careers in between.

So it’s an odd book — it kinda evaporates while you’re reading it? But it’s a very enjoyable read, and the artwork has a pleasant second generation underground artist thing going on. It’s good stuff.

13:11: Nedzus lykter by Rui Tenreiro (Jippi forlag)

This looks pretty intriguing…

… but the story just kinda feels… not very compelling? It’s a riff on Japanese fairy tales, I guess, and the artwork is inspired by Michael DeForge, I guess, so it feels rather second hand.

David Bowie: Young Americans

13:26: Desert Rats by Nick Bunch (Reptile House)

This is a lot of fun — the artwork is so dynamic and energetic.

It’s really propulsive, which makes it seem like the stories are going at a breakneck speed. Wonderful stuff.

13:38: Nosebleed by Sweick Jones (Reptile House)

This book is basically Scanners.

It’s told very traditionally and solidly, and I wouldn’t be surprised this artist was working for one of the majors soon.

Pink Floyd: Wish You Were Here

13:53: Mora mi by Trond Bredesen (No Comprendo Press)

This book is about the author’s mother’s last two years before she died — it’s a series of sketches of her room at the home, and short vignettes.

And it’s incredibly moving. An extremely strong book — it takes a totally mundane approach without any drama or overall narrative arc, and it’s completely devastating.

14:16: The duke and his army by Emilie Östergren (Sanatorium Förlag)

The artwork here is intriguing.

And the story isn’t really dreamlike, but more kinda sorta incomprehensible, but riffing on Alice in Wonderland, I think? But in a bizarre, squishy way.

Kraftwerk: Exceller 8

14:27: Frankenstein Now and Forever by Baladi (Typocrat)

This is a riff on Frankenstein and monsters in general…

… and it’s really successful in generating an unnerving atmosphere.

And now I have to run some errands.

Kraftwerk: Radio-Activity

17:50: Be Prepared by Vera Brosgol (First Second)

Geez, that took a longer time than I planned…

Oh, right — I read an excerpt of this in the 2018 “Best American Comics” a couple months ago.

It’s a classic tale of an unpopular kid being an unpopular kid — there’s been so many of these autobio books over the years.

The problem with this book is that the author really leans in on the kid here being a dweeb. I’m as wimpy as they come, and even I was going “c’mon” at some of these embarrassing exploits: It gets to a point where you’re just starting to blame the kid, and I don’t think that’s quite the effect they wanted?

But it’s well-told otherwise — it zips along nicely.

Betty Davis: Nasty Gal

18:36: Du har ingen makt i denne situasjonen by Harman Breda Enkerud (Foot Books)

Each page here is like a slogan, lettered an illustrated in an interesting way.

It’s fun and it’s engaging.

And it comes with a fold out translation.

Kate & Anna McGarrigle: Kate & Anna McGarrigle

18:46: The Swordfish is Jesus by David Tea

I haven’t read The Old Man and the Sea since I was, like, 19, and that’s a long time ago, man.

So I have no idea whether the interpretation of the book in this comic makes sense, but I found it quite interesting. I like the way it’s presented — in a kind of offhand, talkative way.

Robert Wyatt: Ruth Is Stranger Than Richard

19:10: Her Frankenstein by Kawashima Norikazu (Living the Line Books)

Huh. More Frankenstein?

So many of Japanese comic books are collections of serialised comics, and that leads to many of them having a pretty staccato reading experience (even when it’s one continuous story). This, however, was created and published as a whole, and I found myself weirdly waiting for a chapter-based structure that wasn’t there.

So that’s fun, but I’m not sure this fires on all cylinders anyway. It starts off as a supernatural horror thing (apparently), but then we get a sad sack backstory…

… and it’s way more harsh than these things usually are.

I dunno. It’s pretty good? Yeah.

19:42: Fahrenbühl by Anna Haifisch (Lystring)

Huh, this is very different from Haifisch’s usual meticulous style.

But I like it. And the story is good, too — it’s about being on an artist’s retreat kinda thing, and then being isolated by somebody.

Heh heh — the mouse there with the hat is complaining about the repetetive nature of making comics — sketches, tighter drawing, inking etc — and the other mouse suggests just printing the sketches instead. Très meta.

19:54: Pictograms by Warja Lavater (50 Watts)

These require some interpretation.

But many of them are quite straightforward — here’s the story of what happens when artists hang out at restaurants, and then tourists arrive.

Julie Tippetts: Sunset Glow

20:19: The End

And perhaps that’s enough comics for today? Yeah, I wanna get back to programming.

A New Package for Making Charts in Emacs: eplot

One of the items on my todo list was:

And that’s because I’ve been looking for an easy way to do simple plots for yonks. When I did a post about movie ratings, I tried chart.el:

It’s a built-in thing in Emacs that has its origins as a testing tool for eieio, and as such, it is pretty limited. But it basically did what I needed? Except for… man, look at that Y axis. This cannot stand!

Bad axes marking is a personal bugaboo — I hate them sooo much! But it’s easy to understand how they end up that way, because it’s a genuinely tricky problem.

For instance, for decades Google Finance had charts looking like this, with totally nonsensical axes.

They basically just use the largest number as the highest Y marking, and then add a couple lines equidistant towards origo, and then go off and collect their paychecks.

These useless charts were there until, I think, 2021? I used to check them irregularly for years to see whether they’d gotten sufficiently embarrassed by this shameful thing, but nope. But then they reimplemented the entire site, and they finally got proper axes.

I was particularly interested because I worked for a stock broker, and one of the first things I did (back in 1997-ish) was implementing a chart library:

And the problem isn’t exactly “hard” in a “solve for Eulers dilemma” maths way, but it just requires some thought about what “pleasing numbers” are (basically 1, 2 and 5 in various scales), and thoughtful handling of the many border cases you get when plotting stock charts (a range can be between $0.00001 and $0.00002, or between 1e9 and 1e10 etc etc), and how do to time periods (years, sure, but then half years and then quarters and months and weeks? and then possibly divide months into weeks? so many details).

So why didn’t I just use this PHP thing for my charts? Well, while it’s really convenient to generate stuff on a web server — that’s not really very convenient when you’re futzing around in Emacs with some numbers. There’s a reason Excel and Jiputer Notebooks are so popular, after all — interactively massaging the data until it shows what you want it to show is where it’s at. I mean, giving others an optimal experience of the data.

Now, of course Org has functions for doing plots, but… it uses Gnuplot as the backend, and I’ve never enjoyed how Gnuplot does anything:

Again, look at that Y axis and roll your eyes. I mean, it’s chosen nice numbers for the axis, but the formatting?

I mean, Gnuplot is perfectly OK, but…

But mainly, I had a stomach bug thing, so I didn’t really have anything to do, so I decided to type up this thing anyway. So:

Look! The Y axis! It has numbers that make sense!

And… I wasn’t really going to implement everything from chart.php, but when I got started, it was just irresistible to do everything.

But also more, like “dark mode”.

One fun thing in the PHP library are the gradients, which were painstakingly written by hand (including a GIF colour map resource thing, if I remember correctly). So they were painted pixel by pixel, I think? But in the Emacs Lisp version, I just use SVG, and SVG has support for gradients. So I just make a polygon and gradient that (as shown above).

And here’s the PHP original. Looks pretty similar?

Just about the only thing I didn’t implement was this other, weird gradient, because… er… well, it would be hard! I’d have to re-implement the pixel by pixel thing… or at least line by line thing, and that would involve math and stuff.

But it’s not like anybody would use that…

But it does look nice in the backgrounds? *sigh* Nah, not gonna implement it.

So what does the Emacs user interface for this look like?

You go to a buffer with a lot of numbers in, and you type M-x eplot. (Yes, I had to call the thing eplot, since chart was taken.)

It’ll then pop up a buffer and show the plot.

But how do you then adjust the plot? After all, the point of all this is that it should be easy to tweak plots until you get what you want, so…

To digress a bit — sometimes I happen upon what seems to be nice libraries (or frameworks, as they often call themselves), and the selling point is often “we do all the boring stuff for you! Things just work!” And then they present a minimal example, like I’ve done here, and then they sort of leave it hanging how you do the rest.

So when you google that, you discover that if you want to change any of the defaults, you have to write a depth-first traversal algorithm (in Haskell), and then override all of the stuff everywhere, and then you end up with 4x as much code as if you’d just written the darn thing yourself the way you wanted it.

That is: Many frameworks seem to actually have the motto “we make the simple things trivial, and then the slightly more difficult things almost impossible”.

So — I hope I haven’t landed there myself?

OK, the first “extra” thing I did was introduce the concept of “headers”, like this:

I’m using a compact format with a small chart, just as a demonstration here — don’t need all that scrolling on the blog here.

And that’s basically it — most of the different variations you see in the very first image on this blog post are by these simple headers thingies.

All the useful things can be controlled by these headers, so iterating through this stuff is fast — just add some headers and C-c C-c and then you immediately see the results. (Yes, there’s an eplot mode to make this easier.)

Yada yada. I’ve even written a README.md file that documents all the various possibilities.

This is still very much a work in progress, but I’ve put it on Microsoft Github. I think it should basically be somewhat useful now, but I’ve been hacking away at this for a week now, and I keep redoing everything, so perhaps not? In any case, the code is a complete mess now as I’ve been programming it test case by test case, in the least efficient way possible, and I need to consolidate a lot of code paths, and make the code more readable.

But I feel like taking a break now, so I just pushed it. So there. Caveat end userage.