The new tenants in the office opposite ours have been building a single IKEA shelving unit for the last 3 hours. I considered offering my help as I’ve put together so many of them I can put together most standard IKEA units inside of an hour. But they seemed to be getting a bit heated, so I won’t poke the bear.

I’m working on a legacy app which still needs to support IE11. There’s one screen (a search window in a pop-up) which intermittently triggers the XSS filter, depending on values in the URL — despite everything being encoded properly. When this happens the entire screen is prevented from drawing. It’s driving me mad, and to top it off, once it triggers it starts triggering on values which didn’t previously cause the XSS filter to fire.

Edit to add: turning off the XSS filter by setting the header is not allowed.

Box

The box itself has a card sleeve with the product photo over the main box, which features the artwork from Warhammer Fantasy Battle 5th Edition (the best edition, don’t @ me)

Instructions

I didn’t really need these, but it was fun to flick through the instructions, for old times’ sake. For those unaware, the last picture is of a “datafax” – every vehicle in 2nd Edition had one of these, which gave the profile, armour values, and damage charts.

Parts and Contents

The parts I received were in good condition – which I expected, as this was a still-sealed, never-been-opened box! The blister pack and transfer sheet both showed a lot of discolouration, beyond what I’d expect for the age and unopened state, and more than shows up in the pictures; I suspect at least one previous owner smoked. As I was about to assemble everything, I wasn’t concerned by this.

Mould lines weren’t really an issue on the plastic parts. There are a couple of regular problem areas on this kit – the grab rails, and the exhausts – but most other parts were fine. The metal parts had the usual assortment of metal tags and casting imperfections, but nothing out of the ordinary or problem-causing. I’ve had more issues with 2019 GW metal castings than I had with this kit.

Assembly

The original Rhino chassis, which forms the basis of the Immolator kit, is so simple and straightforward to put together. Glue the two halves of the hull together, add the hatches and track sections, and you’re pretty much done. The only thing you have to be mindful of, is some of the parts and connection points are small and/or fragile. I broke one of the top hatch handles just by holding it too tight between my forefinger and thumb, and had to carefully glue it back together before assembly. I did quite a bit more clean-up than 14 year-old me would have, to take care of gaps and mould lines. Modelling knives, clippers, and sanding blocks will be your friends if you ever have to build this kit yourself!

The metal parts of the kit were always a little annoying to work with. The tolerances and variance are much bigger in a spin-cast part than injection moulded plastic, so things don’t quite line-up or fit right. I did as best I could, with a bit of filing, bending, and using some superglue to gap fill where needed. I completely forgot to take pictures of the turret assembly!

I did allow myself a couple of nods to modernity – I added 3mm x 2mm magnets to the tracks and turret, to make transportation easier and stop the turret falling off all the time. To speed things along I used my power drill on the slowest setting, rather than my pin vice.

Finishing Up

After building the Immolator I sprayed it with with Halfords Grey Car Body primer to make sure paint would stick to the metal areas as well as the plastic. Once the primer was dry, I sprayed it with a couple of thin coats of Retributor Armour to match the rest of my Sororitas.

I knew the old Rhino kit was smaller than the current kit, but I hadn’t realised by how much until I put the Immolator next to a Razorback. It’s easily 25% smaller.

When I started opening the box for the Immolator, I was a little intimidated… mainly because I’d never find another in this good a condition if I messed up! By the end though I’d enjoyed myself so much I scoured eBay to find a retro Rhino kit to work on next!

For the last 24-18 months or so I’ve had a background project to recreate my original Adepta Sororitas (nee: “Sisters of Battle“) army, in advance of the new codex and plastic release. With that release looking more and more imminent, I really need to get my skates on! By my reckoning I’ve got roughly three months to finish up, maybe less!

John Blanche illustration used on the Sisters of Battle codex in 1997

The original army was purchased by fourteen year-old me on release day in 1997. I’d saved up my paper round money for several weeks to afford it, after falling in love with what had been previewed in White Dwarf the month before. It’s a tiny army by modern standards (roughly 545 points in a Patrol Detachment), but it was a decent sized force in Second Edition, and I loved playing it. Anyway, to cut a long story short, the army was given away by my mum a few years later, once I’d moved out for university and had fallen out of the hobby. Since coming back to the fold, it’s been the one army I’ve really regretted not having any more.

I’ve already collected and painted the two Sororitas character models from the original army – a Canoness and Standard Bearer (now called an Imagifier), and I’ve started painting the two squads I’ve acquired so far: a ten-woman Battle Sister squad, and five Seraphim. I also need to paint a banner for the Standard Bearer, to truly finish it off. Long-time readers will know I have finished painting some Battle Sister squads this year, but those were bought to bulk the collection up to a “full size” Eighth Edition army, and aren’t part of the core project.

There’s still a five-strong Retributor squad to get hold of, but the problem I have here is I can’t for the life of me remember exactly what I armed them with twenty-two years ago! I’m pretty sure it was four of one weapon type – either Multi-Meltas or Heavy Flamers – but given the time period it could well have been a mix of all three. I think I’m going to go with four Heavy Flamers, as I remember I painted at least one of these “back in the day,” and I’m certain it wasn’t for the Battle Sister squad (which had a Heavy Bolter). Plus, I’ve never really liked the “Sabbat” helmet shown on some of the Sisters models, which is why I’m reasonably sure it wasn’t the Multi-Meltas.

When I started the project I knew that some of the models were going to be really hard to get hold of in a usable condition, and for a reasonable price. While many are still available from Games Workshop, several are long out of print: namely the Canoness, Standard Bearer, Immolator, and an “Imperial Missionary with Plasma Gun”. Of these, I thought the Immolator was going to be the hardest to acquire, but I found one on Saturday. Now I just need to get the Missionary. They occasionally pop-up on eBay, but usually in a bad condition, and for a higher price than I’m willing to pay for that condition. It wouldn’t be the end of the world if I can’t get hold of one at this time – it’s no longer a game-legal choice, and I’m concentrating on the Sororitas – but it would be nice for completion’s sake!

1997 'Imperial Missionary 2', armed with Plasma Gun
Got one of these to sell? Let me know!

So, roughly 21/22 models to paint in the next couple of months, with a currently unknown target date for completion? Sounds doable, right? Well, yeah, if you’re not as slow a painter as me, and hadn’t started a Genestealer Cults army in the meantime which needs cleared from the painting desk… If the codex is due in October, I’m reasonably confident I can make it; coming sooner and I’m less so. If anyone in the Warhammer Community team who might happen to read this wants to give me a subtle hint, that would be helpful! 😉 (Also, I’d love to write about the project as an article on the community site, once I have some more finished models to show off!)

With all that said, whether the new models are coming in 3 months, or 3 weeks, first I need to stock up on more Retributer Armour spray paint!

I mentioned last week I had setup iOS Shortcuts to post Likes, Reposts, and Bookmarks to my website, and automatically syndicate those posts to Twitter. This solved a particular pain point in my “workflow,” where I’d share something to my website with Indigenous, but then have to go in to the WordPress editor through a browser to get the post to share back to Twitter. This was enough of a pain I avoided it where possible. With the new shortcuts I don’t have to worry about that. A couple of taps, and everything “Just Works”(tm).

This post is an attempt to document how I have my shortcuts setup, so you can make some of your own. I’ve tried to keep things as jargon free as possible, but the instructions do assume the following:

  • you have a website of your own,
  • that website has a Micropub-compatible endpoint, such as self-hosted WordPress with the Micropub plugin,
  • your iPhone or iPad is running iOS 12 or above,
  • optionally, your website can syndicate to other sites through Micropub syndication target. WordPress users can use the Syndication Links plugin.

My own setup uses WordPress with all of the IndieWeb plugin pack, so that is what this guide has been tested with, but everything here should be universal to any Micropub server. To get started, you will first need to install a pre-requisite shortcut.

Install the IndieAuth Shortcut.

This is the foundation for the other shortcuts. With out this, your shortcuts cant authenticate with your site. It can be found here, with some more notes found on this IndieWeb wiki page about Shortcuts. While installing it, you can configure it with the URL of your site and run through the authentication process to get a token, or enter a pre-existing token. Alternatively, if you already have a valid token from somewhere, you can enter that into the shortcut for it to use.

Note for WordPress users.

I ran into an issue with the IndieAuth shortcut, where WordPress didn’t interpret the authentication scopes properly, meaning the generated token wouldn’t work. I didn’t spend much time debugging this, so I don’t know if the issue is in the plugin or how Shortcuts sends the request. Thankfully, there’s a workaround. Go to your WordPress admin area > Users > Manage Tokens. At the bottom of the screen will be a form where you can generate an appropriate token. You’ll want to select at least the “create” scope. Do this, then copy and paste the token code in to the text field at the top of the shortcut, like this:

With our authentication mechanism setup, it’s time to build the shortcut proper.

Building the Shortcut.

Initial Setup.

In the Shortcuts app, create a new shortcut. The first thing we need is a “Get URLs from Input” block, then a “Set Variable” block. Name the variable something memorable, as we’ll be using it in a couple of places. I called mine “repost” in my Retweet shortcut.

Next, add a “Run Shortcut” block, and another “Set Variable” block after it. The shortcut block should be set to run your IndieAuth shortcut, and you can turn off “Show While Running”. Set the variable name to “token.” Once done, you should have something like this:

Posting to Your Site.

This is “where the magic happens.” In broad terms, the next few blocks will:

  1. Be configured with the Micropub endpoint of your site,
  2. Craft a POST request to your endpoint, with the following pieces of information:
    1. Your authentication token
    2. The type of Micropub post we’re creating (“entry”)
    3. The URL we’re sharing, as a “repost-of”, “like-of”, or whatever
    4. Set a syndication target.

With these steps in mind, onward we go!

Add a URL block to your site. Enter the URL of your Micropub endpoint. If you’re not sure exactly what this is, check the source of your site. Look for a link tag with rel=“micropub”. Alternatively, I’ve written another shortcut which will try to detect an endpoint for a given domain. You can find it here. Note that I’ve not tested this shortcut on any device but my own, so there may be bugs. The Get Endpoint shortcut will check if the endpoint variable is set, and if not, ask for a domain to parse for the endpoint. Once parsed, the endpoint URL will be copied to the device clipboard for pasting elsewhere, and return a URL.

Back in the sharing shortcut, add a “Get Contents of URL” block. Tap on “Advanced,” then set the Method to POST. Tap on “Headers.” Add a header called “authorization” (note the US spelling, if you’re using a UK keyboard or similar). Set the value of this header to “Bearer ” – with the space at the end – then insert the token variable created earlier.

Next, in the Request Body section, set it to Form. If you’re replicating my setup, add three new fields: h, repost-of (or like-of, etc.), and mp-syndicate-to. Set the value of h to entry. Set repost-of to the variable you created from your input URL, right back at the start.

Finally, set mp-syndicate-to to the UID of the syndication target you want to share to. In my WordPress setup, this is twitter-bridgy. Your system may vary, if you’re not using WordPress + the Syndication Links plugin. If you’re not sure what your UID might be, you can try running another shortcut I’ve created, which will query your site to find all the places you can syndicate to. The shortcut requires the “Get Endpoint” shortcut linked above, and will return text listing all UIDs configured for your site. As an example, the output for me looks like this:

{"name":"XYZ IndieWeb","uid":"xyz-indieweb"}
{"name":"XYZ Linking","uid":"xyz-linking"}
{"name":"IndieNews En","uid":"indienews-en"}
{"name":"XYZ Books","uid":"xyz-books"}
{"name":"Twitter via Bridgy","uid":"twitter-bridgy"}
{"name":"Github via Bridgy","uid":"github-bridgy"}

If you don’t want to syndicate your post, remove the mp-syndicate-to field entirely – don’t just leave it blank, or you might run into issues.

Once all fields in your Like/Repost shortcut have been filled in, you should have something like this:

You can leave things here, if you want, or you can add something like a Notification block to show you the returned response from your site, for debugging purposes. Unfortunately, the current limitations of Shortcuts mean we can’t get the URL to our new post from the results. Maybe that will change in iOS 13.

Set your new shortcut with an appropriate name and icon. Turn on the option “Show in Share Sheet,” and optionally set the “Accepted Types” to “URLs.” Tap Done a couple of times, and your shortcut should be complete! The best bit is, you can duplicate the shortcut, change repost-of to like-of (or viceversa), and you’ll have a working Like shortcut too 😃

Now, you can use the iOS share sheet for any URL to run your shortcut. Tap the share icon, tap Shortcuts, then tap the relevant shortcut from the list:

As a bonus, here’s a couple of short clips of the Like shortcut in action:

If you run into any issues getting the shortcut created, please do let me know through a comment or Webmention, and I’ll try to help where I can.

I mentioned over on Micro.blog that I’d managed to get a workable edit/commit/push workflow on my iPad. Naturally, I’m now considering a keyboard to complete the setup.

Does anyone have any recommendations for a good keyboard to use with a 9.7” iPad Pro?

The last time I had a similar setup, I used an Apple Wireless Keyboard (in an Origami case/stand) as the Bluetooth keyboard + case combos available at the time all felt horrible to type on. I do have a spare ultra-compact mechanical keyboard I could try with a USB adapter, but thinking more about it, that’s probably not going to work well when I don’t have a table to work on.

So, if anyone has any suggestions, I’d love to hear them!

Screenshot of my Instagram feed
Photo by Donna Murray Photography

I mentioned yesterday my frustrations with Instagram were at an all-time high, and I wanted to “soft quit” the app by adding my follows as a source in Monocle. I didn’t find any existing guide on how to do this (sorry if I missed yours!), but I did get two useful suggestions about tools to enable this: Instagram Atom, and Granary.

I use Granary already, to pipe Twitter into Monocle, so that was my preferred option. The short guide below documents the steps I took to get things set up.

Step 1. Get your Instagram session ID

Instagram doesn’t offer much of an API anymore, so to let Granary do the magic, we need to get our Instagram session ID. To do this:

  • Login to Instagram through a desktop web browser
  • Use the developer tools to inspect the cookies set by Instagram. Look for a cookie called “sessionid” and copy the value of it:

Step 2. Link up Granary

Head over to Granary. Click on the Instagram login button, and authorise Granary if you need to. When you return to Granary, there will be a couple of form fields you can fill in.

  • Enter your Instagram username
  • Select @friends from the dropdown
  • Change the format to html/atom/json
  • Enter your copied session id in the cookie field

Click “GET”, and Granary will generate a preview of your feed and give you a link:

Copy that link.

Step 3. Add to Microsub

You need to add the URL you’ve copied from Granary as a source in whatever Microsub server you use. I use Aperture, so I added a new Instagram channel with my feed as a source. I’m going to assume you know how to do this for your server of choice.

Step 4. Enjoy

All being well, you should now have an Instagram feed in Monocle/your chosen social reader.

With all this set up, I can now add the Instagram app to the “To Quit” folder on my iPhone.
Screenshot of my iOS “to quit” folder, containing a handful of silo apps

Caveats

There’s a couple of limitations with “using” Instagram in a reader:

  • No syndication – to my knowledge, it’s not possible to syndicate any of your response (likes, replies, etc) back to Instagram. So if you want to let your Instagram-only friend know you liked their photo, into the app you go.
  • Session expiry – I don’t know yet if the session id we got in Step 1 will expire. If it does, you’ll probably need to redo creating and adding your feed.
  • Multi-accounts – if, like me, you have more than one Instagram account, and want to add both, there are some hoops to jump through. I found you need to add the second account using a second browser/new private browsing session, or some wires will get crossed somewhere and you’ll need to setup both feeds all over again.

I’ve started using my new(ish) test site to build my new IndieWeb WordPress theme. It’s very early in the process, and I’m getting the markup in place first, before I go anywhere near a stylesheet – so it all looks very 1996 right now.

The lessons learned on “K” will be put into use with this theme, along with several ideas I’ve picked up along the way. I’ve already reused some of the more useful bits of K to give me a head-start, so I know that stuff like the feed and post microformats should be pretty robust (if not yet 100% complete). The main improvement I want to make over K is in flexibility  – i.e. it’s not just usable by me, or locks me/the user into a particular setup.

If there is anything you would like to see in an IndieWeb WordPress theme, or any other suggestions, please file an issue in the repository. I can’t promise I’ll implement it, but at this stage, the chances are high 😉

If you’re a Monocle user, you might have noticed a new feature in your UI today. If you self-host, you’ll want to update your installation to the latest version. Two nice “quality of life” features have gone live, and I’m a little excited, because I helped build one of them 😁

The biggest feature I’ve been missing in Monocle over, say, Feedly, is a “mark all read” button. I follow too many busy sources to be able to keep up with everything, so I frequently mark everything as read and carry on. It helps me not get overloaded.

Monocle "view menu" on desktop

Aaron had raised an issue to build the feature at some point, but I wanted it, and had a spare weekend, so figured I’d make myself useful!

In all, it was surprisingly straightforward. The Microsub spec is well documented, so I knew how it needed to work. All I had to figure out was how to fit that into how Monocle already did things, and there was already a “mark read” for single entries to work from.

The UI took the longest to build, mostly because I had to figure out the Bulma frontend framework. Rosemary had already come up with some ideas on how it should work, so the hard part had pretty much been done.

Monocle "view menu" on mobile

And with a little bit of testing, there it was – “Mark All Read” in Monocle. I’ve been running it in my install for a little over a week now, and I hope you’ll find it as useful as I have if you’re a heavy Monocle user.

I can’t take any credit for in the slightest for the new “Show Only Unread Entries” feature – to my knowledge, that was all Aaron. It was a nice surprise to find once I updated my local install from the master branch!

Between tags and post kinds/formats, are “categories” considered redundant when organising a blog? I have a bunch of legacy posts which have some high-level categories assigned, but the vast majority of posts end up in the default category (notes), and I can’t remember the last time I went out of my way to set the category on anything (other than this post) – because most of the time I’m quick-posting from a tool which doesn’t even have the option to set categories.

Categories seem to be very much de-emphasised these days.

But then I come back to a time before we had tags, before post types, and when categories were all we had. They were useful and helped us structure our blogs so visitors could find stuff they’d be interested in. Serious planning was sometimes put into a categorisation scheme. I think of how I would use categories to label “asides” before there was an Aside post format (or even an <aside> HTML tag), “bookmarks” before there was a Bookmark post kind. Then I wonder if they’re worth maintaining as the “lowest common denominator” of organisation and data portability. Another blogging tool might not have native support for “post kinds” – but it’s almost certainly got some sort of category system.

I’m also trying to think about this from an aspect of theming WordPress. How much space or emphasis should be placed on each of the ways of describing a particular post? Should they be listed in some contexts, but not others? Autonomie only shows the post kind in list pages, but adds in category and tags on the the post’s page. K showed only an icon for the type, and tags if they were set.

Even as I’m thinking and writing this out, I’m not sure if I’m talking myself into or out of going through and properly categorising ~1400 blog posts (850 published, the rest pending review). Do I move everything into the default bucket? Or do I create and assign a robust categorisation scheme? What would that scheme look like?

One to ponder a bit further, I think🤔

I’ve been running my own instance of Aaron’s excellent Monocle microsub client for a while now. I think it’s time I take the leap and run my own instance of Aperture microsub server as well (and its associated services), just so I don’t have to rely on any services hosted elsewhere.

I just need to figure out if I need to give Aperture its’ own server, rather than run it alongside everything else on my existing VM.

I’ve taken the decision to switch my site away from the custom theme called “K” I was building, and for now I’m using the excellent Autonomie by Matthias Pfefferle instead1. Development of K had already slowed to a standstill, and realistically, I’m not going to go back to it anytime soon. It feels a little like a failure, a little like giving up, but I think it’s ultimately the right thing to do.

I made a lot of mistakes while building K, which overcomplicated things, made development more difficult, and ultimately led me into a dead-end. I thought “for simplicity” that I would use the Bootstrap frontend framework, as it would give me a robust foundation to build on. It did, but I had to bend and twist WordPress in increasingly hacky ways to get the output to “play nice.” A large chunk of the K codebase was being taken up by code solely tasked with massaging the output of WordPress to add the right Bootstrap classes or container markup. It felt increasingly fragile and hacky, and it was a bad sign. K would work for my setup, but I couldn’t ensure it would work for everyone.

Bootstrap added other complications: to properly manage my CSS “overrides” I had to create a build system that would compile a whole lot of SASS files together. When I started K, the CSS was stripped down to the bare minimum needed, and came to a few KB. After a while I ended up including the whole Bootstrap framework, just to make the build process easier.

There were no “options” to speak of, so it couldn’t be tailored to suit someone else using the WordPress customiser. I didn’t even want to think about Gutenberg support.

Microformats always felt like whack-a-mole. I’d get them working, then make adjustments somewhere else, and promptly see things break again. I put this on my need to make so many adjustments to the WordPress output – inadvertant issues kept creeping in.

Then there were the visual design choices. K grew out of the simple design I employed when I was writing 1-2 short posts a month, in the traditional format. In that scenario it worked fine. Once I started to use the various post kinds, things became more problematic. Now I was posting several posts per day, most of which weren’t in a traditional blog format. The home page became cluttered; it started to remind me of a badly thought-out notification area, rather than a well designed blog. The archive page was a disaster and I had no good ideas on how to fix it. There were a thousand other little niggles.

None of this is meant as a knock against Bootstrap, or WordPress, or build systems, or any other tool or technology I used to get to this point. K failed because of my decisions, rather than deficiencies in the tools. There were things I liked about K… it used zero JavaScript, and I did my best to stop unnecessary plugin resources from loading. Markup was as minimal as I could make it (within the constraints of what I could remove from WordPress output, microformats, and what Bootstrap needed). It worked well across browsers and devices (thanks Bootstrap!), and the accent colours were fun. I learned a lot about the excellent Post Kinds plugin during the development process. I’m filing it away as a failed experiment, which I’ll learn from and apply the lessons to the IndieWeb WordPress theme I’m still intending to create. One that will hopefully work for more people than just me ?

I put the source code to K on GitHub right back near the start of the project. If you want to take a look, steal any code, rework it into something usable – feel more than welcome to!

1 As a result, a couple of things that were setup specifically for K are broken. I’ll look into fixing those over the next few days. ⤴️

With the recent change in ownership, I’ve been wondering if Flickr could become a viable alternative to Instagram for photo sharing (again)? I have a nostalgic view of Flickr, even though I haven’t used it in years. I closed my account, but I’d like to see them do well, and could be convinced to sign up.

As much as I’d love for people to be using their own site/domain, many (most?) don’t want that hassle – so a good service app will be their go-to.

As an aside, I need to get back in the habit of posting photos on this site. I haven’t really been taking pictures with the intent to share over the last couple of months, but one or two have ended up on social media regardless.

I mentioned that I was thinking about installing Manjaro Linux… well I went ahead and did it. Not even just a little, by dual-booting with Windows 10. No, I wiped everything and just went for it as my one and only operating system. What follows is my notes from the install, so if I want to get back to where I was at some point in the future, I can retrace my steps.

“Live USB” Installer

Due to having a Broadcom wireless adapter in my self-built PC, the networking didn’t work “out of the box” for me. Which was a surprise, because it did work the last time I installed Linux. From what I’ve read, kernel 3 worked fine, but kernel 4 (on the Live image) has some problems with these cards, due to their drivers. This actually stumped me for a while, but in the end… iPhone tethering to the rescue! Put an iPhone into “hotspot” mode, then plug it in to the PC via USB, and Manjaro picks it up as a working network adapter pretty much instantly. It worked over Bluetooth as well. I’ll admit I was impressed by this.

This let me connect to the internet and test how to get the WiFi card working. Once I had a plan for that, it was on to the installation

Installation

Other than the network adapter, everything else about the installation was a breeze. Manjaro came pre-installed with the proprietary Nvidia graphics driver, and after picking a few options (user account, disk partitioning), the installer formatted the disk, set everything up, and prompted me to reboot within a couple of minutes.

Post Installation

So here’s where I had to fix a couple of things.

Network Drivers

With the iPhone still tethered, the process was something like this:

  • Perform a full system update using the package manager
  • Use the Manjaro Kernel Manager to install and switch to the latest Linux 5.0 kernel
  • Uninstall the broadcom-wl driver package
  • Reboot
  • Install the broadcom-wl-dkms drivers
  • Reboot
  • Configure the network connection in the connection manager

I configured my VPN by downloading the profiles from NordVPN, imported one of them, then set my WiFi connection to automatically connect to the VPN when the network started up.

Blank Screen during/after boot

I encountered a really strange issue where the login screen would not show after boot, and the system would appear to hang until I pressed some keys. It wasn’t a huge deal, once I figured out to press something, but it did start to niggle and made my system feel slower. After a lot of searching I came across this thread talking about similar symptoms. I installed the recommended package haveged, enabled the service, rebooted, and the problem was instantly fixed. After a little more reading, I replaced haveged with rng-tools, and everything has been fine since.

Other tweaks

I followed some of the suggestions from this video – namely install the fonts, reduce “swappiness”, install Pamac and a firewall.

Look and Feel

This was my first time using KDE as my desktop environment, so I was keen to spend some time customising it to my liking. So far I’ve settled on the “Adapta Breeze Nokto” theme, some additional icons, and played around with the panel + widget setup. It’s not fancy, but my desktop currently looks like this:

I’m generally a fan of darker themes, as they’re less of a strain on my eyes.

Other Random Notes

So far I’ve only installed a couple of extra software packages and tweaked a couple of small things.

  • I installed Lutris, for running Blizzard games. Hearthstone and World of Warcraft run flawlessly in my limited testing.
  • Visual Studio Code was also installed, for pretty much anything involving an editor.
  • Steam came pre-installed. A quick check shows around half my existing library is already compatible with Linux; the rest I’ll check through “Steam Play” and Proton.
  • I added a “bootsplash” loading screen using the (kinda vague) instructions in this thread. Basically: install a suitable theme, edit a kernel hook and rebuild the kernel, then add an option to GRUB. Given the speed everything loads at, this might be unnecessary – it’s shown for at most 1.5 seconds.
  • On SSD-based systems, enable the fstrim.timer service to enable TRIM support (recommended).
  • With the Nvidia driver, get better looking scrolling in Firefox by enabling layers.acceleration.force-enabled in about:config.

That’s all my notes for now. No doubt I’ll post up more as I get more comfortable with the OS and explore the capabilities a bit more ?

I noted the other day that Textpattern might be a good fit for some people trying to build their own websites, but that there wasn’t much in the way of resources to get them plugged into the IndieWeb.

Well, I went and started to do something about that. #IndieWeb TextPattern is a site where I will be exploring and documenting how to add various IndieWeb building-blocks to their Textpattern website. There’s not a whole lot of stuff there yet: just the mission statement, and how to add an h-card using form templates; but my intent is for the site to grow into a kind of guidebook for interested parties to be pointed to from the IndieWeb wiki and elsewhere. I was inspired by the short series of posts Gary put together about Blogger recently.

It’s been years since I last used Textpattern — possibly more than a decade(!) — so there will have to be a lot of experimenting and exploration before I figure out everything that will be needed. I want to get the “quick wins” out of the way at the start, then at some point I anticipate having to write new code as part of this project… hopefully just as Textpattern plugins, but there might be some features which need a “bridge” service to get working. I mention in the introductory post some of the areas where I think I’m going to have to write code, but for now, those are all later concerns ?

In the more immediate future, my planned content includes: getting a site ready for IndieAuth, adding microformats to post templates, receiving WebMentions, and possibly implementing post kinds in a manual capacity. If you have any suggestions at all for the site or topics, please do let me know!

Why isn’t the internet more fun and weird? by Jarred Sumner

“MySpace inspired a generation of teenagers to learn how to code. We have Dark Mode now, but where did all the glitter go?”

I may be showing my age here, but I was never on MySpace. That said, this blog post (and the CodeBlog service it’s advertising) reminds me a lot of platforms I do remember, like Tripod and Geocities. Pages were built from raw HTML, and adorned with all sorts of widgets found on places like DynamicDrive and BraveNet. The <blink> tag ran rampant! Early Tumblr had a similar vibe, but look how that turned out.

These early services were places you could experiment and explore until you had the confidence, skills (and cash) to get your own domain name and server. Nowadays anyone can have their own domain and site quickly and cheaply on somewhere like WordPress.com/Blogger, but they are very cookie-cutter and locked down. Even using self-hosted tools like WordPress.org reign-in a lot of the free-form creativity.

One of the reasons I love Kicks Condor is because of how anachronistic and fun it looks; I can easily imagine 15 year-old me, magazine HTML tutorial in hand and full of enthusiasm to learn something fresh and new, creating something similar by accident and having a blast doing it.

By making things easier, more accessible – and safer – it feels like we’ve hidden away the building blocks. It’s harder for people to get at the pieces they need to try their own thing out of curiosity. Can you imagine if LEGO pieces were keyed to only fit a certain way, so you could only build what was shown on the box art?

Shared to IndieWeb.xyz and IndieNews

(Skip to the end for the TL;DR summary)

After an evening of debugging and rewriting sections of the HTML in “K”, I think I’ve fixed the markup and parsing issues I mentioned yesterday.

It turns out that X-Ray, the parsing engine used by IndieNews, Aperture, and probably others, was only finding the sidebar h-card in my markup. The rest of the content was being ignored. I’m not entirely sure why this is, to be honest, but it gave me a place to start.

Working from the (admittedly shakey) basis that if the parser was only going to find one mf2 entity on the page, then I’d want it to be the main h-feed or h-entry… so I started moving around some blocks of HTML and a few classes, and stripped out a few likely redundant pieces of HTML.

This… worked! The feed would show up in the X-Ray output instead of the h-card, and wasn’t all that different in the Pin13 parser compared to yesterday’s results. But it was far from ideal. The authorship information on every feed entry was screwed up; I’d made a change yesterday so only one full h-card was on the page (the sidebar) and followed the recommendation to markup the h-entry author details with u-author instead. Now came the conundrum: do I add back in a dedicated h-card to every h-entry, and by doing so re-break some of the other parsers looking for a single “representitive” h-card? I tried out adding them back in, just to see what happened. X-Ray was still fixed, but IndieWebify.me complained about it, and the IndieWeb Webring still couldn’t work out who I was.

I could have left it here. X-Ray was the main target, IndieWebify might not have liked it but could at least still see some details, and IndieWeb Webring was a “nice to have” in a way. But truth be told, it would have nagged at me. What if these “minor” issues were the proverbial canary? I want to achieve the widest possible compatibility now, to reduce potential issues at a later date.

It was around about this point that I remembered that an h-feed itself could have its own embedded h-card, which could potentially solve the issue. After moving my ‘h-feed’ class to the body element, instead of the main I’d been using up to then (so now it would use the sidebar h-card to represent the feed), it more or less did solve the issue.

It threw me at first that X-Ray didn’t list a separate h-card item like Pin13 did, but instead used the feed h-card for the authorship of every nested h-entry. Removing the now redundant author h-card from the entries stopped IndieWebify from grousing about these multiples. Oh, and here’s my new profile page on the IndieWeb Webring. Even my test microformat-based feed in Aperture/Monocle started displaying posts almost immediately after applying the change.

So, TL;DR: I moved my main h-card inside the h-feed, instead of it being a distinct entity on the page. By doing so I fixed pretty much all of the microformat parsing issues I was experiencing, which means “K” has taken a big leap forward… and I can stop pulling my hair out ?

Shared to IndieNews (maybe) and IndieWeb.xyz.