iA Presenter and Headings

I’m quite curious about iA Presenter (a new Markdown-focused presentation creation app), so I downloaded the 14-day trial.

And it is immediately driving me up the wall that in the sample/instructional presentation that loads by default, the creators are repeatedly misusing headings to create the style for their demonstration slides.

The iA Presenter window as first opened to the demo presentation. The Markdown code for the content begins with an H1 followed by an H4. The next slide begins with an H3 that is followed by an H2.

The cover slide starts with an H1 and then immediately jumps to an H4, presumably because they wanted the visual distinction between the larger text of the title and the notably smaller text of what’s being used as a subtitle. But that skips two levels of headings.

The second slide (and many other slides) starts with an H3 that is immediately followed by an H2. Consistently, slide after slide, it’s an H3 followed by an H2. Again, this appears to be done for the visual presentation, as it results in the smaller-text headline over the larger-text headline. But that means that the headings are all out of order and don’t create a consistent outline to indicate the structure of the document.

And this sort of thing continues throughout the entire demo presentation.

Not only is this generally sloppy, but it’s an accessibility issue: When headings are skipped, users of assistive technology like screen readers have to try to figure out from context whether the headings have actually been skipped, or if they’re they exist but haven’t been tagged properly, or if they’re being presented out of order. When the document outline is out of order, it makes it much more difficult to navigate through and build a coherent mental picture of the final document.

I haven’t gotten as far as looking to see how iA Presenter does with its output (Is the HTML it generates standards compliant? Are the PDFs it generates properly tagged for accessibility)? But even if it exported perfect HTML or ideally tagged PDFs, the content will have accessibility issues because the designers are prioritizing style over substance. And with this as their demo, many people using the app will likely follow their lead.

And that’s a shame. Because on first blush, it’s a gorgeous app with some extremely good advice on how to conceptualize and plan better presentations and some great templates. All criticisms aside, I’m still looking forward to experimenting with it. But the abuse of headings and lack of concern for reasonable document structure is not giving a very good first impression.

Read more

This is a test…

…I’ve been having some issues with alt text on images not showing up when cross-posted to Mastodon, so I’m working with the crossposting plugin’s author to do some troubleshooting. In order to do that, I need to make some posts with images. So here we are! It’s terribly exciting stuff.

This is a test. This is only a test. This test post needed an image, so this is what it gets. If this were an actual post with content worth reading, you would be much more entertained than you are now.

I’m Training AI Chat Bots (Non-Consensually)

The Washington Post has published an article looking at the websites used to train “Google’s C4 data set, a massive snapshot of the contents of 15 million websites that have been used to instruct some high-profile English-language AIs, called large language models, including Google’s T5 and Facebook’s LLaMA.” If you scroll down far enough, there’s a section titled “Is your website training AI?” that lets you drop in a URL to see if it was scraped and included in the data set.

I checked three strings — “michaelhans” (to cover both this site and its prior address at michaelhanscom.com), “djwudi” (for my DJ’ing blog), and norwescon (which I’ve written or tweaked and edited much of the content for). All three of them are represented.

  • norwescon.org: 45k tokens, 0.00003% of all tokens, rank 528,147
  • michaelhanscom.com: 37k tokens, 0.00002% of all tokens, rank 635,948
  • djwudi.com: 3.7k tokens, 0.000002% of all tokens, rank 4,002,025

For the record, I’m not terribly excited about this. I’m also under no illusion that anything can be done; this stuff is all out on the open web, and as it’s free for actual people to browse through and read, it’s also free for bots to scrape and ingest into whatever databases they keep. Sometimes this is a good thing, for projects like the Internet Archive. Sometimes it’s unwittingly helping to train our new AI overlords.

Updating My Computing History

Back in 2003, Adam Kalsey started a project he called Newly Digital — a collection of stories about when people first discovered computers, got online, and so on.

At that time, I updated and reposted my “Back in the Day” post from roughly a year before, to contribute to the project.

And now, after looking back at my “Newly Digital” post while once again updating the tail end of it with my current computers, I noticed more and more links succumbing to link rot, so I figured I’d give it another refresh. So here we go!


I was born in 1973 — certainly before home computers were a thing, but at a point where computers were starting to make their way into the school system.

The first computers I can remember playing with were the Apple IIs that my elementary school had. Before long our friends the Burns had one of their own that I got to play with, while my babysitter picked up a Commodore 64 that gave me my first look at the BASIC programming language.

Eventually, my family got our first computer — an Osborne 1. This was a beast of a machine. 64k of RAM, a Z-80 CPU, two 5.25″ floppy drives, and a 5″ monochrome 80×40 greenscreen, all packed into a case the size of a suitcase that weighed about 30 pounds. The keyboard could be snapped up against the face of the computer, allowing it to be carried around — one of the first, if not the very first, “portable” computers! It ran CP/M (a precursor to MS-DOS) — aside from fiddling with the machines at school or at my friends’ houses, my first real command-line experience! There was a 300 baud modem available for the Osborne 1 computer, however my family didn’t get one until years later (when those of our friends who had also had Osborne 1 computers were giving them to us as they upgraded, allowing me to cannibalize parts from two machines to keep one running).

I first got online sometime in 1990, with the first computer I bought myself — an Apple Macintosh Classic with no hard drive (the computer booted System 6.0.7 off one 3.5″ floppy, and I kept MS Word 4 on a second floppy, along with all the papers I typed that year), 1 Mb of RAM — and a 2400 baud modem. Suddenly an entire new world opened up to me. After a brief but nearly disasterous flirtation with America Online at a time when the only way to dial in to AOL from Anchorage, Alaska was to call long distance, I discovered the more affordable world of local BBS’s (Bulletin Board Systems).

I spent many hours over the next few years exploring the BBS’s around Anchorage, from Ak Mac (where most of my time was devoted) to Forest Through the Trees, Roaring Lion, and many others that I can’t remember the names of at the moment. I found some of my first online friends, many of whom I conversed with for months without ever meeting — and many that I never did meet. Most of the Mac-based boards used the Hermes BBS software, which shared its look and feel with whatever the most popular PC-based software was, so virtually all the boards acted the same, allowing me to quickly move from one to the other. After springing the $300 for an external 100Mb hard drive (how would I ever fill up all that space?!?) I downloaded my first ‘warez’ (bootlegged software), at least one of which had a trojan horse that wiped out about half my hard drive. I discovered the joys — and occasional horrors — of free pornography. I found amazing amounts of shareware and freeware, some useful, some useless. It was all amazing, fun, and so much more than I’d found before. In short — I was hooked.

After I graduated from high school in 1991, I had a short-lived stint attending the University of Alaska, Anchorage. One of the perks of being a student was an e-mail account on the university’s VAX computer system. In order to access your e-mail, you could either use one of the computers in the university’s computer lab, or you could dial into their system via modem. Logging in either way gave you access to your shell account, at which point you could use the pine e-mail program. However, I soon learned that the university’s computer was linked to other computers via the still-growing Internet!

And here I’d thought BBS’s were a new world — this Internet thing was even better! Suddenly I was diving into ftp prompts and pulling files to my computer from computers across the globe. Usenet readers introduced me to BBS-style discussions with people chiming in from all over the world, instead of just all over town. I could jump into Internet Relay Chat (IRC) and have real-time conversations with people in other countries. The gopher protocol was essentially a precursor to the World Wide Web: text pages linked to each other by subject. I was fascinated — more information than I had dreamed of was at my fingertips.

By the time I left UAA and lost my student account, the ‘net had started to show up on the radar of public consciousness, but still at a very low level — it was still fairly limited to the ‘geek set.’ That was enough, however, to have convinced some of the local BBS systems to set up primitive (but state of the art at the time) internet links: once a day, generally at some early hour, they would dial into a special node on the ‘net and download a certain set of information, which the BBS users could then access locally. It was slow, time-delayed, and somewhat kludgy, but it worked, and it allowed us to have working e-mail addresses. It wasn’t what I’d had while at the university, but it was certainly better than nothing.

Within a few years, though, the ‘net suddenly exploded across public consciousness with the advent and popularization of the World Wide Web. Suddenly, you didn’t have to do everything on the ‘net through a command line — first using NCSA Mosaic, and later that upstart Netscape Navigator, you could point and click your way through all that information — and some of the pages even had graphics on them! It was simplistic by today’s standards, but at the time it was revolutionary, and I joined in that revolution sometime in 1995 with my first homepage.

Since then, there’s been no turning back. Over the years, my computers have been upgraded from that little Mac Classic to:

And, of course, this blog has been running for more than 20 years. It started as simple hand-coded update posts on my early personal pages in 1996. In late 2000 I found a script called NewsPro that was essentially a very early content management system (CMS), and then just over a year later I moved to MovableType, which was only about three months old at the time. MovableType started strong but eventually pivoted to focus on the enterprise space rather than home users, and in 2006 I moved over to WordPress.

WordPress has lasted by far the longest, though I’ve been getting less enamored with it for a while. But realistically, after this long, I’m unlikely to put the effort into finding something else — and as far as I know, the blogging CMS I really want hasn’t yet been written.

Some years my blog gets more posts than others — the rise of social media sites like Facebook and Twitter certainly pulled me away for a while — but I’ve never let it fade away completely, and I certainly don’t intend to let it die. I may not always be rambling away here a lot (though the demise of Twitter has certainly spurred me to be more active here once more), but I’m unlikely to ever entirely disappear.

Self-Hosted Image Gallery Recommendations?

A lazyweb question: Is there decently modern web image gallery software anywhere?

I’d like to move away from Flickr in favor of self-hosting my photo galleries. But so far all the packages I’ve found are…well, they tend to look and feel (both on the backend admin side and the frontend public gallery side) like they haven’t been updated in the past decade or more.

Admittedly, sometimes this is because that’s exactly the case…which also doesn’t make me want to download them. But sometimes they’re still apparently under active development, but still look and feel like early-2000s projects.

Software I’ve installed, poked at, thought “mmm…well…maybe…”, and looked on to see what else I could find:

  • Piwigo is under active development (last release three weeks ago) but has rather sparse documentation if you’re not a developer building plugins, and needs config file editing just to display more than the most basic image metadata.
  • Zenphoto is also under active development (last release a month ago), but appears to be gearing for a more major update…which could be good, but there’s no indication of when that will happen, and much of the current installation (like every one of the default themes) has a “this has been deprecated” warning. So it doesn’t seem worth investing time into getting it up and running and populated if the current version is soon to be end-of-lifed, with who knows what sort of compatibility with the next version.

Things I’ve looked at but not downloaded:

  • 4Images may or may not be under active development; the last update was in November of ’21.
  • Coppermine‘s last update was in 2018…but the two before that were in 2013 and 2010, so who knows if it’s still active or not.
  • Gallery at least admits it’s dead; it points to Gallery Revival, which hasn’t been updated since November of ’21.
  • Pixelpost: “tldr: This project is abandoned, and has known security issues, use at your own risk.”
  • TinyWebGallery: I can’t quickly figure out when it was last updated, but the header graphic advertises “Flash uploaders”, and there are too many ads for online casinos on that page for me to bother digging around any further.

I’d like to stop giving Flickr money (I have nothing particularly against them, but at this point, I have nothing particularly for them either; their website doesn’t “give me joy”, and when embedding photos, the alt text is just the image title, not even the image comments, let alone any option to add true alt text), and I simply don’t trust Google enough to drop all my images into their systems. I’ve played with SmugMug as well, but again, I’d like to be able to self-host, not pay.

I’m a little surprised that this is such a sparse field, but I suppose that Flickr and Google Photos are “good enough” for most people these days, so there’s not a big market for people like me: a tech-savvy hobbyist photographer who’s not particularly interested in relentlessly pursuing monetization.

Recommendations would be appreciated if I’ve missed something worth investigating. As it is right now, though, I’m guessing my best bet will be to see what I can manage with either Piwigo or ZenPhoto.

Bring Back Blogging

Monique Judge at The Verge, in “Bring Back Personal Blogging“:

In the beginning, there were blogs, and they were the original social web. We built community. We found our people. We wrote personally. We wrote frequently. We self-policed, and we linked to each other so that newbies could discover new and good blogs.

I want to go back there.

Hard agree. This blog got its start in the mid-’90s — the earliest “post” I can still verify was on December 29, 1995, and though it now lives in this blog, was originally a hand-coded entry on a static “Announcements” page — back before “blogging” was even a term. In fact, it wasn’t until February 8, 2001 that I first discovered the word “blog”.

So there’s a lot of what Monique writes about that I remember very clearly. And I miss a lot of it. Which seems kind of funny to say, because in a lot of ways, it really hasn’t ever completely died, but the shift to social media definitely impacted the blogging world.

I’m hopeful (if not optimstic) that just maybe the issues at Twitter, the rise of Mastodon, and the general upheaval in online spaces will actually lead to something of a resurgence of people writing for themselves and in their own spaces.

Buy that domain name. Carve your space out on the web. Tell your stories, build your community, and talk to your people. It doesn’t have to be big. It doesn’t have to be fancy. You don’t have to reinvent the wheel. It doesn’t need to duplicate any space that already exists on the web — in fact, it shouldn’t. This is your creation. It’s your expression. It should reflect you.

Bring back personal blogging in 2023. We, as a web community, will be all that much better for it.

Blogging CMS Wishlist

High on my reasons why I wish I had the knowledge (or the time and energy to gain the knowledge) to code my own software: As far as I can tell, nobody has yet written the CMS I want to use for blogging.

Basically, what I want is early-2000s MovableType, only with some modern updates. I’ve long missed many of the tweaks and customizations that I could manage with MovableType that I can’t do on WordPress.

Pie-in-the-sky featureset:

  • Self-hostable or installable on a hosted server (Dreamhost, etc.)
  • Micropub compatible so I can use MarsEdit or other such third-party editors
  • ActivityPub/IndieWeb compatible for federation (at least outbound, ideally bidirectional so that federated replies could be appended as “comments”)
  • Generates a static website instead of building every page when its called
  • Only regenerates necessary pages when updates are published, full-site rebuilds available on demand
  • Some sort of templating “building blocks” system for assembling different pages, posts, or sections thereof
  • Basic templates that are fully standards-compliant and accessible (HTML5, ARIA when/if necessary (since static pages shouldn’t have much dynamic content), etc.)
  • Templates should also be microblogging compatible
    • Example: Titles are optional, and shouldn’t be the only item used for permalinks to any given post, something that bugs me about my current blog template but I haven’t figured out how to fix yet
  • Markdown for writing and storing posts
  • The ability to generate multiple versions of posts/pages on rebuild
    • Example: Output both .html and .md versions of a blog post, so a “view source” link could be included in the post template; readers could then easily click through to view the Markdown version
  • Import posts exported from existing common blogging or microblogging systems (WordPress and Twitter, in my particular case)

Things I don’t want or care about:

  • Fancy drag-and drop “block” editors like WordPress’s Gutenberg
  • Comments (beyond pingbacks/trackbacks/federated responses)
  • Having to do everything on one machine (edit locally and upload)

I’m sure there are plenty of other things that I could put in the wishlist or the “no thanks” list, but those are the first ones to come to mind. Every time I’ve done a survey of static site generators, they consistently fail one or more of the above.

Honestly, I think I could live without much of the above, if I could find a static site generator that would allow me to blog and manage posts and pages from anywhere (my desktop, my laptop, my iPhone, my iPad, etc.) through the Micropub API; logging into a web interface of some sort should be possible if necessary but not required for general day-to-day post publishing.

Oh, and it needs to be installed and managed by someone who has a higher-than-average knowledge of computing and tech geekery, but doesn’t do this stuff for a living. Someone who gets annoyed when they call tech support and have to start with the “is it plugged in?” level of questioning, but who also gets annoyed when software assumes that you’ve been immersed in this kind of stuff for decades. There doesn’t seem to be much out there other than WordPress that does a good job of bridging between “it just works” and “I eat, drink, and breathe code in all my waking and sleeping hours” levels of capability. I don’t mind, and even enjoy, poking at the guts of things when I have the time and energy, but I don’t want to be required to do a week of research to figure out what the terms in the “how to install” documentation mean.

So — I don’t suppose that anyone knows of my magical unicorn blogging software actually existing anywhere?

Cross-posting from WordPress to Mastodon

I’ve finally got WordPress to Mastodon cross-posting working the way I want: automatically, whether I’m posting through the WordPress web interface or through a desktop or mobile client like MarsEdit or the WordPress mobile app, and with the format that I want:

Title: Excerpt (#tags)

Full post on Eclecticism: URL

I’d been using the Autopost to Mastodon plugin, which works great, and I can recommend it — as long as you only or primarily post using the WordPress web interface.

However, the plug-in is only triggered when publishing a post through the WordPress web interface. Any time I posted through a client, nothing went to Mastodon. So I either had to go into the web interface and manually trigger an update to the post with the “Send to Mastodon” option checked, or just skip out on using anything but the web interface at all, which I’m not a fan of (especially on mobile).

I’d asked the plug-in author, and they’ve said that this is just the way it is.

So I put out a call for help on Mastodon, and got some kind tips from Elephantidae, who pointed out the Share on Mastodon plugin. This looked promising, as its documentation specifically mentions being able to configure it to work with externally created posts. However, looking through the docs made it clear that most of this plugin’s configuration, including changing the format of the text it sends to Mastodon, is done through adding and tweaking PHP functions…and as with most of my coding knowledge, my PHP knowledge is roughly at the “I can usually get a vauge idea of what it’s doing when I read the code, but actually creating something is a whole different ballgame” territory. Plus, dumping PHP code into my theme’s files risks losing those changes the next time the theme files are updated.

Retaining the code through theme updates can be managed through creating a site-specific plugin, however — a handy trick which, somewhat amusingly, I’d never had exactly the right combination of “I want to do this” and “how do I do it” in the past to discover until now.

So, after a bit of fumbling around with the Share on Mastodon plugin documentation and figuring out the right PHP and WordPress function calls, here’s what I’ve ended up adding to my site-specific plugin:

/* Tweaks for the Share on Mastodon plugin */

/* Customize sharing text */

add_filter( 'share_on_mastodon_status', function( $status, $post ) {
  $tags = get_the_tags( $post->ID );

  $status = get_the_title( $post ) . ": " . get_the_excerpt( $post );

  if ( $tags ) {
    $status .= " (";

    foreach ( $tags as $tag ) {
        $status .= '#' . preg_replace( '/\s/', '', $tag->name ) . ' ';
        }

    $status = trim( $status );  
    $status .= ")";
    }

  $status .= "\n\nFull post on Eclecticism: " . get_permalink( $post );
  return html_entity_decode( $status );
  return $status;
}, 10, 2 );

/* Share if sent through XML-RPC */

add_filter ('share_on_mastodon_enabled', '__return_true');

/* End Share on Mastodon tweaks */

And after a few tests to fine-tune everything, it all seems to work just the way I wanted. Success!

(Also, re-reading through this, I’ve realized that since I like to give the background of why and how I stumble my way through things, I end up writing posts that are basically a slightly geekier version of the “stop telling me about your childhood vacations to Europe and just post the damn recipe!” posts that are commonly mocked. And I don’t even have ad blocks all over my site! At least I’m not making you click through several slideshow pages of inane chatter before I get to the good stuff. My inane chatter is easy to scroll through.)