Where Authors & Readers find each other

The Fantastic (Group) of Lord Matt, Super Geek


Is this enshitification or old age?

September 15, 2024 in reflections by Matthew Brown

While browsing Mastodon today, I saw a link to Terence Eden’s Blog and the post asking “Have I reached the Douglas Adams Inflection point?

The all-knowing sage Douglas Adams had this to say about technology:

  1. Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works.
  2. Anything that’s invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it.
  3. Anything invented after you’re thirty-five is against the natural order of things.
Have I reached the Douglas Adams Inflection point (or is modern tech just a bit rubbish)?

I figure that I’ve got to be coming up on my DAIP (Douglas Adams Inflection Point) soon. Much as I try to remain mentally in my early thirties, fifty is coming up far too fast.

This could explain why I find some modern tech so utterly chiff. That, or the great enshitification is real.

Take social media for an example. I remember when some pretty low-effort MySpace, Twitter, and early Facebook were new and amazing. They were going to improve how we… They would be better because… They redesigned it again and… And then it was all so much zoo leavings and an obvious octad of fails.

Did enshitification happen or did I get old?

While it is inarguable that Twitter was enshitified, what about the other walled gardens? Are they selling out their customers for bigger piles of cash or are we all getting old?

This move towards old-fashioned blogging, own your content, and other IndieWeb ideas – is it a return to better stuff or a reach for older stuff by those of us well past the DAIP?

I don’t actually know. From where I am standing the walled gardens are all utter shite, I chose to believe that I am the only trustworthy one. Give me ActivityPub, Mastodon, RSS, blogs, and WebMention thank you very much.

That said, not everything is new is shite

MRNA vaccines are amazing. I’ve got them in my bloodstream right now. I can’t wait for someone to use them to inoculate against HIV or to cure my lactose intolerance.

Have I reached the Douglas Adams Inflection point (or is modern tech just a bit rubbish)?

Hell yes! MRNA vaccines have the potential to cure or prevent so much. It’s good, it’s positive, and it is loaded with potential. As for the anti-vaxxers? Well, I think I scared them away from this blog a long time ago. Which means I don’t have to worry about misinformed people in my comments when I say vaccines are life savers.

There is a lot of good stuff going on out there. Game development is easier than ever to get into. Indie games are more frequent and better than they have ever been. Open source is winning in general.

Nothing lasts forever. Not even the big tech giants that are slowly destroying the good things to make money. I’m old enough to remember Microsoft trying that. It did not work then and it will not work now.

After every storm comes the morning.

I’m still old though

The only downside is that I am still old. I don’t know how many new technology breakthroughs there will be in my lifetime. Perhaps all I can do is enjoy the good ones for as long as I can.

Have you reached your Douglas Adams Inflection Point yet?

About my Visual Novel

August 6, 2024 in the-spell-collector-vn by Matthew Brown

I have mentioned a few places now that I am working on a visual novel. It is titled “The Spell Collector”.

The Spell Collector is being created in RenPy. (Here is a link to my work-in-progress code).

The image from this post is a digital enhancement of a canvas I painted for a background.

How to find blog readers the IndieWeb (small web) way

August 4, 2024 in blogs-and-blogging by Matthew Brown

You have an IndieWeb-ish blog. Great. Now what?

This post is my guide to connecting with readers in the IndieWeb way. I make no claims to completeness or dependableness but I think this is mostly right. Feel free to correct me with replies, mentions, or comments.

Why do I think I am qualified to talk about this?

I’ve been making wired stuff and putting it on the Internet for over 20 years. In that time, I picked up a few skills. Some of my things are blogs, others are too strange to categorise.

Am I an expert? Only in the sense that I have made a significant number of the mistakes on the theoretical list of all the possible mistakes. I don’t know everything but I do know a few things. Hopefully, I know enough to say something useful.

I may come back and edit this to clarify stuff based on questions and fix spelling and typing mistakes but the main gist of this post is unlikely to change.

Before you start

All of this is for nothing if you do not first have something worth looking at. Promoting your blog to others used to be known as “launching” the blog. Before you launch, be sure to have at least three solid posts so that there is more to read if visitors like the first thing they encounter.

If a vistor comes to your blog, likes what they read and then cannot find anything else, they may leave and not come back. Show readers why they should stick arround, add you to their feed reader or subscribe in some way by demonstrating that you have more than one great post in you. Take your time. There is no rush.

Never launch naked. Post are clothes. Put some clothes on before you go outside.

In case you missed it I will say it again – don’t promte your blog until it has content.

Step 0 (mostly for WordPress users)

I strongly suggest you install some or all of the following six plugins:

ActivityPub

ActivityPub is so Mastodon and other Fediverse people can follow you. It pairs well with the other plugins I will suggest.

ActivityPub is available for both self-hosted and dot com WordPress.

IndieWeb

This plugin requires WebMention which is just as well because I strongly recommend that too. In addition, I suggest you pick up Syndication Links as it supports a whole bunch of IndieWeb ideas.

Both of these can be added via the IndieWeb extensions page.

WebMention is an official standard ping-back-like system. I think all blogs should use WebMention. One strong selling point is that you can reply to others with a post on your own blog and have it appear as a comment on the other site.

Syndication Links is simply a nice way to do POSSE, PESOS, and reblogging.

There are others which might be useful depending on your individual use case.

WebFinger

This plugin makes your integrations a little smoother.

For more about the protocol visit webfinger.net.

The Friends plugin (personal/single-user blogs only)

At this stage, your blog is pretty much a social media node. Complete the process to enable following and subscribing too.

I have two examples of this my social node and I Am The DJ.

Step 1: Connect with others

Both early web and small web (or smolweb) ran/run on personal connections. There is no magic wand way to “go viral”. Instead, you build relationships over time.

What you are not going to get into one or more of these and immediately start blasting blog links at everyone. That’s just rude.

Here are my favourite ways to connect with others

Forums – making friends on forums is great. I run a forum for bookish people. Forums are a lot of work to set up and maintain so I strongly recommend joining an existing forum. That said, if you want to run a forum I will not stop you (but I may wish to join it). There is a lot of forum software out there to choose from. Find friends with blogs. Subscribe to those blogs.

Social Media – I strongly suggest you connect on Mastodon. When you find others who blog, go read their blogs. If you are reading this, you might like indieweb.social. I am the author of a guide to social media for authors that might help.

Mastodon – If you chose to include ActivityPub in your blog, then you are halfway there already. However, there is a gap to bridge. I will get to that gap later. For now, make an account and start making friends. You should find a steady stream of interesting people who blog – go check out their blogs. Here’s how to join Mastodon.

Comment on other blogs – Once you have found other blogs, leave interesting and value-adding comments. You know the kind – comments that show you read the content and wish to engage with the theme or topic. The kind of comment that makes the author happy to have written the post and overjoyed to see an engaged reader. Be genuine. This is not a game. Many blogs have a field for a link with the comment. Use that link box for your blog.

(Web) Mention other blogs – This is just the advice about comments but using WebMention. You don’t have to run WebMention software but that does make life easier as you do not need to manually ping the other blog. I’ll detail some example blogs that use WebMention later on.

Step 2: Seed your blog into the fediverse

Before your ActivityPub-powered blog will be seen by others it must first be seen by others. This section is my advice on how to overcome the gap keeping you out.

Have a regular Mastodon account

In step I said join mastodon. If you did that already or have now done so, you have your initial subscriber -you.

I like to be clear that my blog and my account are two instances of me. I see no point in covering the fact that the blog is mine.

What you now have is federation to your first instance. You will appear in the local feed there. For more direct discovery, your account can boost your blog.

As your account matures (at a speed dictated by how friendly you are and how often you show up), it will provide more reach. There is no fast way to get readers. This is a slow burn process.

Optional – subscribe directly

If you are using the Friends plugin or have some other way to subscribe/follow with your blog, you can be direct by following interesting people. Each follow will show up as a notification (if everything works as it should).

Do not abuse this unless you want to get blocked or ignored. No one likes a spammer.

Ask your good friends

If you took the time to build up online friendships, you could consider asking some of these friends if they would be willing to follow/subscribe to your blog via their Mastodon account(s).

Do not spam. Requests like this require an existing and firm relationship. This is not speed dating – take your time. I’ve not asked IRL friends to do this for me yet – I want to know my content is worthy of their attention first.

Step 3: Make full use of WebMention

To make the best use of WebMention, you need to find other blogs that use WebMention to interact with. This section is here to help you do that. These are all ideas for getting started with some conversation.

User made lists

My irregular list of all found blogs/sites that use WebMention – March 2024. I sometimes post my list of all found WebMention-enabled blogs. It is far from complete.

Bookmark any such lists that you stumble upon. They make a great starting place for content you might want to reply to (WebMention).

OpenMentions.com

Open Mentions is a pet project of mine that is powered by WebMention and ActivityPub along with some bridge technology – more on that later.

The idea of OpenMentions is to create a distributed directory of topics that you can mention. Thus, as different bloggers tag in on different topics, we are creating a self-updating listing of posts on topics that interest us.

I also try to post a Question of the Week for more narrowly defined topics for discussion. Despite the name, there is no time limit for replying via a mention (or via Mastodon).

Chat: Shall we talk

This is a book and writing-centric blog created as part of Author Buzz UK (the place with the forum that I mentioned). I’m involved in this one too. It is set up to be friendly to WebMention bloggers.

isBrill.com

This is another one of my projects. This site is set up around the ideas of fan pages, shrines, and general positivity. Most of the “brills” are set up expressly for ActivityPub and WebMention use. Topics include IndieWeb, dad jokes, tea, Doctor Who, steampunk, various bands, Sci-fi, Mastodon, and replying to things.

Step 4: Build a bridge (optional)

I’ve hinted at bridge building and no it is time to pay off that promise. I would like to introduce you to brid.gy.

If you have WebMentions installed brid.gy is a tool that will feed likes, boosts, and replies back to your blog as WebMentions. Brid.gy is free and I highly recommend it.

You may also like Brid.gy Fed to connect with BlueSky. If you are a WordPress user with all the toys I recommended installed, you can set up direct syndication to Bridgy Fed.

The most important: Step 5: Follow your passions

Have you ever heard the saying, “Content is king”? If not, let me say it now – content is king.

It does not matter how nicely decorated, how syndicated, how connected – if you never publish anything worth looking at, no one will come and look.

The most important thing you can do for your blog is to write content you care about for only those who also care about it. Yes, you can get readers and subscribers by following trends, algorithms, and fashion but all you will have is an audience with whom you have no common ground.

Therefore, be sincere, be passionate, and create stuff that you care about enough to share.

Be yourself. Everyone else is taken.

Step 6: Use hashtags and hashcats well

By now you should be building connections, engaging with others, and writing about your passions. Your content is propagating out there somewhere. No what?

Now it is time to use tags. Well, I say use tags. Use tags if your content is published via ActivityPub. I have set a custom ActivityPub template that adds my tags and categories as activityPub hashtags. We are going to talk about how to use these.

Hashtags not to use

The power of hashtags is in their specificity. While it might be tempting to tag all your work – that tells me nothing about your subject matters. I suggest you stay well away from generic tags.

Hashtags to use

I would love to give you a list but that list would never be the same from one person to the next. The best tags (hashtags) to use are tags that accurately describe the nature, theme, and subject(s) of the content.

For example, on I Am The DJ my tags are genres, instruments, and artists. That way the Electro Swing lovers and the Metalheads each know if my post is right for them. The same is true of all flavours of music fans.

Don’t chase the big hashtags and trending topics. Instead, use tags to describe in as few tags as possible who this post is for by describing the content and topic.

The best tags are the specific ones because – even if they get very little attention – the right readers for you care about them.

My preferred ActivityPub template

<strong>[ap_title]</strong>

[ap_content apply_filters="yes"]

<p>[ap_hashtags] [ap_hashcats]</p>

[ap_permalink type="html"]

Step 7: Master headlines

Before we start, I am not endorsing linkbait. That might work in the walled gardens but in the small web this is going to come off as fake and manipulative. I don’t want to see “24 things that do bluh (you wont believe number 9)” nor “Is your common thing slowly killing you?”

Instead, practice writing headlines that tell the people who love what you love that this post is for them. There is no magic formula for this. Time and practice are going to be your teachers here.

Here are three ideas I use a lot

  1. I tend to go with descriptive titles but the right choice depends on you and your content.
  2. Asking a question that your post will answer is another method I like.
  3. Starting a conversation with a simple open ended question works too

Tell me about your headline writing in the comments, a reply, or via a mention.

Step 8: Experiment with stuff

If you want to indicate your indie blog into the Fediverse or as a comment via WebMention – try some stuff out. Ideally in a way that doesn’t spam up someone else’s blog or timeline.

It took me a long time before I could get I Am The DJ to look even remotely readable on Mastodon. What I learned was that while I could embed a YouTube video in a post, that did not translate too well in the Fediverse. I learned that I needed a regular link as well as the embed. My posts now often have the text YTL (for YouTube Link) which I link to the video. Then, on Mastodon, the video is shown as long as it is the first link.

You too may need to play about with some stuff until you get things working. Never assume that a jump from one platform to another is still readable. Check. Try stuff. Break things. Try more stuff. This is how we learn.

Step 9: Get feedback

I write stories. Perhaps to a level that could get an agent interested. Maybe. To get there though, I had help. That help came from a community of other writers. Writers who I meet in person most weeks.

When I started out, I had none of that. In fact, I struggled to find a writing group because I had no idea where to look (there were loads). My solution was to start a writing group. That’s not the important part of the story. The important part here is the lesson it taught me. The lesson was this – to get good, you need peer feedback.

Another lesson was to get my story as good as I could get it before asking for feedback. That way anything the other writers flagged up was not something I could have easily fixed if I had made more of an effort.

Those friends you made back in the earlier steps – a polite request for their thoughts on a blog post or two may yield insights you might not get on your own. Yes, you can ask chatGPT but I promise you real humans do it better. Just remember that these are people giving up their time to help you and treat them appropriatly.

Apply what you learn to the next post you write. Keep learning. Keep writing better posts. Do not stop.

Step 10: Maybe go easy on the stock images

While it is true that images with posts often get more attention, that’s not the full story. We humans are visual for the most part. Which is why using images with your post can get more eyeballs on it. Especially if the syndication via ActivityPub and WebMention are working well.

There’s a huge gotcha that no one will tell you about. Stock images.

You are a blogger (or want to be). I’m a blogger. Our readers have seen many blog posts before us. Which means that they have probably seen those stock images ten times before. How many potential readers have skipped past our posts because they are bored of seeing those images?

You know what images your possible readers have not seen before? The ones you take yourself. They don’t even need to be from a dedicated camera (although a good DSLR can take amazing images). Your phone has a good enough camera on it. Go outside. Take pictures. Use them at least sometimes instead of stock images.

If nothing else, you’ll have some unique image content for social media.

I’m practicing what I preach for this post. The image with this post was taken by me earlier this year.

Step 11: Don’t stop

Developing a community or a readership takes time. Yes, I know big walled-garden social media has led us to expect big numbers quickly but IndieWeb is all about quality over quantity.

Blogging is very much a marathon and not a sprint. To be much more accurate – blogging is like fishing. You drop out a line and see if you get a bite. Then you do it again.

If you write stuff people want to read and don’t stop, eventually those people will find you.

Step 12: Add value

You might have noticed that my posts on this blog are infrequent but long. I have found that posts that go deeper, take more research, and a greater investment of time attract the kind of readers that I would like to connect with.

That’s not the only way to do things. I also get nice interactions on my social node which is pure short form. There, I get reactions with photos I have taken and open-ended questions that start a discussion.

My best post (by comment count) on Matrix Dreams is a breakdown of a new spam/scam. The readers show up from search results because I’m the only one to have written about this scam.

What these all have in common is that the posts offer value to the people who find them. How they find them differs from blog to blog but it is the value that matters.

Value can be many things. In short, value is something that the visitor finds worthwhile. That can be useful information, niche content, howtos and guides, news, reviews, fun, laughter, cute animals, code samples, tutorials, a game, wildlife photography… So, yeah, value is hard to pin down but, generally, you know it when you see it.

Step 13: Forget about finding readers and unite communities

Having learned all that, I am now going to suggest you forget it and do this one neat thing – unite people.

The more you can draw people together rather than to you specifically the more value everyone gains as a result. The more people in the social network of friends and fellow fans of your specific niche and interests the greater the value to everyone inside the group. They call this the network effect. That’s what makes Facebook and Mastodon work. The more of us there are the better it is for everyone.

While, yes, you can do those other things maybe bringing people together is of more value. The chances are that you will need to do some or all of those things to build a community. I’m not going to lie, community building is harder. However, if you build a loyal readership you only have readers but if you aim to build a found family instead you have both readers and a village of folk who share your passions and interests.

And so this takes us back to the beginning where I suggested that connecting with people is the thing to do. Instead of promoting a blog, promote a virtual village in which your blog is but one house.

Conclusions and Further Reading

Getting readers (and comments) to your indie blog is 90% connecting with people and 10% making neat stuff. There are a few bumps and lumps to overcome so the network effect can kick in assuming that is even what you want.

A node of interacting WebMention blogs grows in value with each additional blogger that connects with the community. As I said, connecting with people is the secret such as it is.

Talking of WebMention, I wrote a post called 100 things you can do with WebMention. One of the things I did not add was subscribe to the hashtag on Mastodon. People tend to post about setting it up. That’s your chance to go connect with another WebMention user.

If you liked this post, you may like my even longer post Let’s talk about making IndieWeb weirder and easier.

Here are some other blog posts not by me for further reading:

Over to you

What are your tips for connecting with readers the IndieWeb way? Do you agree with all my points or do you have an alternative view – I’d love to hear from you either way.

Over to you – WebMention, Reply, or comment with your thoughts, ideas, tips, stories of failure, and all your other stories of blogging on the small web.

I think all WordPress blogs should install WebMention

July 21, 2024 in blogs-and-blogging by Matthew Brown

I am a huge fan of WebMention and a WordPress user. This is why I am so thrilled that Matthias Pfefferle created the fantastic WebMention plugin for WordPress. I think we should all use WebMention and in this post, I will explain why.

What is WebMention?

TL;DR: WebMention pings a page you link to to tell it about the link. The linked-to page can choose to display a list of the pages linking to it this way. Perhaps in the form of a comment.

WebMention is a set of groovy IndieWeb Internet rules (aka a protocol) that (among other things) allows us to reply in the form of a blog post (or any other page on the web). For a better overview, try the Wikipedia Webmention article.

All I have to do to reply from this blog is link to a WebMention-enabled page that I want to mention. My post will (maybe after a short delay) appear as a comment on the mentioned page in question.

Why is WebMention good?

This is a great idea because it allows small web things to knit together into a semblance of a community. Not to mention that it can increase the count of relevant comments. Pair with ActivityPub also by Matthias Pfefferle for maximum federated comments.

Getting comments, I think, validates the efforts we make to write interesting content. Also, it just feels nice.

Can WebMention really get me more readers?

Yes but also maybe.

By itself, WebMention does not do much. However, when you start interacting with others and reply to their content, you are likely to attract the attention of others. Some of those others might like your stuff and bookmark you or add you to a feed reader or something. They might not but they might. That rather depends on what content you make.

Does WebMention increase spam?

No.

I’ve never had a spam WebMention. Probably because the link to the page has to exist when the ping was sent or the mention gets rejected.

Is WebMention free?

Yes.

There are no ways for someone to charge you for it. The WordPress plugin is free too.

Conclusions

WebMention is fantastic IMHO. I want more people to find out about it and start mentioning to each other. If you are an indie blogger, WebMention is your friend.

Python bits in Renpy for my visual novel

July 14, 2024 in uncategorised by Matthew Brown

In this post, I am going to share some Python stuff I have written for my visual novel written in Renpy. The novel is set in my Three Kingdoms setting (recently added to my pixel wall).

These may or may not be a good way to do what I am doing. Please feel free to comment or reply with corrections, suggestions, or insights. Then again, feel free to just say hello.

If you want to use my draft Python code, feel free to take it under the GNU GPL2 or CC BY-NC-SA 4.0.

Injectable flags

init 1 python:
    #skip some stuff
    
    class ChFlags:
        def __init__(self):
            self.name = 'flags'
            self.flags = dict()
        
        def set(self, flag, flag_bool=True):
            self.flags[flag]=flag_bool
            
        def has(self, flag):
            if flag in self.flags:
                return self.flags[flag]
            self.flags[flag] = False
            return False

The purpose of this class is that it can be injected into other classes – mostly character and faction classes. The setting self.name is what is used as the index to retrieve the class later.

Injectable classes (like characters) have a method like this:

        def add_feature(self,feature):
            self.feature[feature.name]=feature

I chose to go this way as not all characters need all the features. The player, for example, needs almost all, and the key characters also need many. Characters have a big enough list of data as it is. Adding more than needed did not seem smart.

Faction tracking

I use a similar approach to assigning characters to factions.

init 1 python:
    #skip some stuff
    class faction:
        def __init__(self, name):
            self.name = name
            self.chars = dict()
    
        #skip some stuff 
    
        def add(self,ch):
            self.chars[ch.name] = ch

In this class for faction tracking, you can see that I’ve not completed it (I skipped some bits that are not good enough to show off yet). I use that same name as the key method as characters all have unique names. Here, however, the faction itself is initialised with a unique name. That’s because the collection of all factions contains more than one faction. This way I can ask for a faction by name.

Spells and spell effects

I have used the same pattern for building up unique spells.

init 4 python:
    #skip some stuff

    class SpellEffect:
        def __init__(self):
            self.name = 'mistake'
            
        def single_target_effect(self, target, caster,spell):
            pass

    #skip some stuff

    class SpellEffectDamageDice(SpellEffect):
    
        def __init__(self):
            self.name = 'damagedice'
            self.n=1
            self.dice=4
            
        def define_dice(self,n,dice):
            self.n=n
            self.dice=dice
            
        def single_target_effect(self, target, caster,spell):
            damage = spell.modify_by_element(dice_roll(self.n,dice=self.dice))
            return target.take_hp(damage)

In this example, spell effects build off of the SpellEffect class. This is so I can change all spells at once (if I need to) by editing the base class and specifying different ways to implement spell effects.

The example here is SpellEffectDamageDice(SpellEffect) – a class that rolls a number (n) of arbitrary-sided dice. As the name variable is set only one dice roll of damage happens per spell. That said, all class attributes are public in Python as far as I can tell so, I guess, I can always rename one.

In case you were wondering about that last method (not fully tested), dice_roll is a function. IT is currently the only helper/tool not inside a class.

init -99 python:

    # common rpg feature
    def dice_roll(number=1, dice=6, plus=0):
        total = 0
        for x in range(1,number):
            total = total + renpy.random.randint(1, dice)
        total = total + plus
        return total

Conclusions

I have this peek at some of my code from a project in development was interesting. I’d love to hear your thoughts on my approach. Is it good, bad, or something else? I’m fairly new to Python so I won’t feel bad if you want to correct me on anything.

I’m sharing this mostly for the comments and interactions – so please reply, mention, or comment. I want to know your thoughts.

Blog Activity