+++*

Symbolic Forest

A homage to loading screens.

Blog

Crossing things off

Finish craft projects? Nah. Start new ones? Yes please

There are still numerous craft projects somewhere in mid-flight at Symbolic Towers, and I keep slowly gathering plans for more that I haven’t even started yet. I have enough crochet patterns to keep me crocheting for several years, probably; a very large cross-stitch under way, and several other cross-stitch kits ready to start—and that’s to say nothing of the Lego or the model train kits. None of these things, really, have been posted on here, largely because I think “I’ll save them for YouTube” and then never video them either.

Despite all that, I’ve just started yet another cross stitch project!

What’s exciting about this project, the reason why it’s using up most of my crafting energy at the moment, is that: for the first time, this isn’t a kit. It’s not even a pattern I’ve bought and then found my own materials for, like most of the crochet projects. No, for the first time, this is a pattern I created myself. I saw something I thought would make a good cross stitch project, turned it (with the help of software) into a chart, and got started.

The start of a new cross stitch project

Because this isn’t something that was designed specifically for cross stitch by a specialist cross stitch designer, it does use quite a lot of colours, and it’s going to be a bit more complex than pretty much all of the cross stitch kits I’ve tried so far. Because of that, for the first time, I’ve actually started crossing off each of the stitches on the pattern as I do it—it helps that I know I can always print another copy off, of course. It is definitely going to help the further into this I get, though, especially when I get to the parts of the design which include lots of small areas of different colours, or the parts with lots of confetti—the cross stitch term for single isolated stitches scattered one-at-a-time across the background. This project will have a lot of confetti.

Crossing things off as I go

It will be some months before the whole thing is finished, even though it’s not full coverage, and even if I did deliberately avoid including any backstitch as part of the design. For now, though, new project energy is carrying me bowling along at pace. Only a week in, and already I’ve done a good chunk of the pattern’s central, focal point.

Progress, as of yesterday

That’s quite a good chunk of stitching for one week’s spare evening moments. What is it, you ask? Well, to know that…if you don’t recognise it, you’ll just have to wait and find out.

You can't go home again

CW: death. Sometimes you don't even feel grief when someone is gone

It’s over eighteen months now since The Mother died, and I’ve barely even talked about it here, aside from one piece I wrote about burying her. There are a whole heap of reasons for that. For one thing, the posting rate here has slowed down to one post a month if that, due to all the various other things making demands on my time. For another, a whole heap of the experiences I had around my mother’s deah pivot on it being, when it happened, less than a year into my gender transition. As I wasn’t open about being transgender on this site until this March, I could hardly recount a lot of the things that happened, from the excited curiosity of the funeral arranger, to the cold stares some of my mother’s friends gave me as I walked into the church behind the coffin.

Some of this, though, is down to how I feel about the death. I don’t feel grief at the death of my parents. Rather, I feel anger, a low, slow-bubbling anger that they let me down in life. And that is all rolled up in my gender too, to some extent.

My parents never supported me. Financially, yes; emotionally, no. I came out to my parents as trans when I was in my early 20s, and they were universally unsupportive about it. My mother cried. Prayed. Said I should start going to church, or take up a new hobby like playing bass guitar, and that would take my mind off the idea. When I started to seek medical support, she kept telling me I didn’t have to go through with anything, at every turn.

So when I decided to stop putting my life on hold, when I decided twenty years later that yes, I needed to transition, that I would never be myself if I did not: I also decided I wasn’t going to tell her. After all, I’d already come out to her once. She didn’t deserve to put me through that a second time. I came out to everyone else; I started wearing nail polish; I changed my whole wardrobe. I did it all right in front of her, and just let her watch and work it out for herself this time.

She died about ten or eleven months into that process.

By the time she died, she knew my name, even though she always claimed she had forgotten it. She even used the right pronouns for me, some of the time. When I am still sorting out her belongings, cursing the state she let things get into, I am also always, in the background, angry that none of that happened until the last few months of her life, until she knew she was on her own apart from me. I wish I’d had the strength and the bravery to cut both of my parents out of my life, and find my own way forward. It would have been very different.

This all sounds quite bitter and nasty, but I’m posting this now because this is June, this is Pride Month, this is the month that for queer people, is supposed to be all parties and parades and excitement. I’m proud of who I am every month of the year though, which is why I’ll always still be angry at the way my parents treated me when I needed them. I wish my mother could see me now, so she could see just how much I’ve changed since she died, and see just what I missed when I was younger.

Eventually, I will write down all those stories, about the dark comedy of the Accident and Emergency ward where half the staff couldn’t get through the doors, and about lying on a bed, half asleep, listening out for the ambulance I had asked for three or four hours before. I’ll have lots of other stories to tell, too, all those fragments and pieces by which I realised I was transgender and started trying to do something about that. Those are important stories. They’re not just for June.

Refactoring

Or, making the site more efficient

Back in March, I wrote about making my post publishing process on this blog a bit simpler. Well; that was really just a side effect. The main point of that post, and the process behind it, was to find a simple and cheap way to move this site onto HTTPS-based hosting, which I accomplished with an Azure Static Web App. The side effect was that the official way to deploy an Azure Static Web App is via Microsoft Oryx, run from a GitHub Action. So now, when I write a new post, I have a fairly ordinary workflow similar to what I’d use (and do use!) in a multi-developer team. I create my changes in a Git branch, create a GitHub pull request, merge that pull request, and the act of doing a merge kicks off a GitHub Action pipeline that fires up Oryx, runs Wintersmith, and produces a site image which Oryx then uploads to Azure. Don’t be scared of all the different names of all the steps: for me, it’s just a couple of buttons that sets off a whole Heath Robinson chain of events. If I was doing this in a multi-person team, the only real difference would be to get someone else to review the change before I merge it, just to make sure I haven’t said something completely stupid.

You, on the other hand, are getting me unfiltered.

I mentioned in that previous post that Oryx would often give me a very vague Failure during content distribution error if the content distribution step—the step that actually uploads the finished site to Azure—hit a five-minute timeout. I tried to address this, at least partially, by cutting the size and number of the tag pages; and it did address it, partially. Not all of the time though. After an evening of trying to deploy a new post for an hour or so, hitting the timeout each time and trying again, I decided I had to come up with a better approach. What I came up with, again, has another rather nice side effect.

A little bit of digging around what other people facing the Failure during content distribution error had written, unearthed a useful tidbit of info. That timeout doesn’t just happen when the site is large in size. It also is more likely to happen when an upload contains a lot of changes.

Now, every page on this site has a whole bunch of menus. If you’re on desktop, they’re over to your right; if you’re on mobile, they’re down at the bottom of the page somewhere. There’s articles filed by category and articles filed by date. There’s the cloud of all the tags I’ve used the most, and there’s links to other sites—I really should give that a refresh. Those blocks are on every page. The ones which link to other pages include a count of articles in that category or month, so you know what you’re letting yourself in for. The tag cloud’s contents shift about occasionally, depending on what I’ve written. The end result is that, when I was adding a new post to the site, every single page already on the blog had to be rewritten. For example, this is the first (and only) post from May 2024, so every single page already on the site (all 4,706 of them), had to be rewritten to add a “May 2024 (1)” line at the top of the “Previously…” section. That’s about 84% of the files on the blog, changing, to add one new post.

However…it doesn’t have to be like that.

The whole site doesn’t have to be completely static. It can still remain server-side static, if you’re willing to rely on a bit of client-side JavaScript; most people, the vast majority of people, have JavaScript available. Instead of including those menus in every page, I thought, why not render those menus once, and have a wee piece of JavaScript on each page that pulls in those blocks on demand?

It wasn’t that hard to do. Rendering the files just needed me to pull those blocks out of the main layout template and into their own files. The JavaScript code to load them is all of 11 lines long, and that’s if you write it neatly; it really just initiates a HTTP GET call and when the results come back, inserts them onto the right place on the page. There’s a sensible fallback option that lets you click through to a truly-static version of each menu, just in case you’re having problems—those largely already existed, but weren’t really being used. Now, adding one new post needs, at the moment, just over a hundred files to change. Most of those are the hundred-ish files that make up the “main sequence” of posts, as when you add one at the top, another drops off the bottom and on to the next page, and so on all the way down. There are also the affected category and month pages. Even so, you’re going from changing ~84% of the pages on the site, to changing somewhere around 2-5%. That’s a massive difference. It also reduces the size of the site quite a lot too: those menus are over 12kb of code, all together. Not very much by modern standards, just once; but repeated on every page of the site, that was using up about 58Mb of space which has now been clawed back.

Naturally, the first deployment of the new system took a few goes to work, because it was still changing every page on the site. Since, though, deployments have gone completely smoothly, and the problem hasn’t come back once. Hopefully, things will stay that way.

This isn’t the only improvement I’ve been working on, by the way. There is, upcoming, another big change to how the site is published. It isn’t quite ready to go live yet, though. I’ll be blogging about it when it reaches production, when I find enough free time to get it finished. It’s something I’m really pleased with, even though if I didn’t tell you, you wouldn’t actually notice a thing. You’ll just have to wait for the next meta-blog post about engineering on the site, to find out what I’m working on.

Typecasting

In which Caitlin is at risk of acquiring a new hobby

One stereotypical nerd gadget I’ve never seen the point of, that I always assumed was the nerd equivalent of hand-woven gold hi fi cables, was the mechanical keyboard. I assumed they were, as the phrase goes, fidget spinners for IT geeks. Something that is expensive and makes lots of fun clicky-clacky noises, but doesn’t actually change your computing experience by one tiny bit.

Well, reader, I was wrong. I admit it. Completely, absolutely, 100 per cent wrong. Switching to a mechanical keyboard has been one of the best productivity improvements I could have made to my workplace. Since I started using one, my typing has speeded up enormously. It’s definitely not just a toy. Having a decent length of travel on each key movement somehow genuinely makes it much easier and quicker for me to type; and also makes my typing a lot more confident. I’ve never learned to type properly, and I still make a lot of mistakes, but in general I’m finding my fingers skip across the keys much more freely.

This first started last summer when I was already tempted by the idea, and saw that a fairly cheap model already had been reduced quite a lot on sale. So, I bought it. And, if nothing else, it was pretty. It glowed, with rainbow light. It came with a choice of beige or purple keycaps, so being contrary I naturally changed just half of them over, trying to get a dithering kind of effect from beige on the left to purple on the right. It kind of worked. Typing, though, was excellent.

The mixed keycaps of my first mechanical keyboard, with shine-through legends on the keys

I felt like I was typing much better than I ever had on laptop keyboards, but there was something wrong. Still, I resisted the temptation to be a keyboard nerd. An enthusiast. One keyboard would be enough for me.

The problem with the first keyboard was that it was only a 60% model. In other words, it only has about 60% of the keys of a “full” PC keyboard; just the core letters and numbers really. To get all the other functions, you need a modifier key. A lot of laptops do that to access extra functions or squeeze all of the keys into a laptop case, but this was using it for fairly basic functionality like the four cursor keys. When coding, I find myself moving around with them a lot, so having to chord to use them quickly became annoying. On top of that there were other little problems: the Bluetooth connection would sometimes glitch out, particularly if the battery was low. When the battery ran low the only warning was one of the modifier keys flashing, and then when you charged it up there was no sign of how charged it was. On the good side, its small size made it nice and portable. Overall, it was a good starter.

After a few months, I’d decided it was time to think about buying a full-size mechanical keyboard. And why not go all in and just buy a “barebones” model. A barebones keyboard is, well, not really a keyboard at all. It’s the core of a keyboard, but it doesn’t have any keys. You have to fit it out with keyswitches and keycaps for it to work. When it arrived, it was very nicely-packaged, it felt very substantial, solid and heavy, but I couldn’t actually start using it.

The new barebones keyboard, a Keychron K10, without any switches or keycaps

It’s a Keychron K10 model, and all you have to do to get it working is push switches into each of those sockets. You get to choose the brand of keyswitch you want, though, and switch manufacturers publish complex charts of the response and movement of different types of switch, describing them as “soft”, “firm”, “clicky” and so on. I just went for a fairly soft switch from a well-known brand, and set to work plugging them all in. It was quite a therapeutic job, pushing each switch home until it is firmly in place.

Plugging switches into the keyboard.  If I'd been planning to blog about this I'd have done my nails first

All the switch sockets nicely filled in

The harder part is choosing the keycaps: harder, because as well as how they feel, they have to look pretty too, and there are an innumerable assortment of manufacturers who will sell you pretty keys. And in the end, I just couldn’t decide, so went with a set of plain black “pudding” keycaps. “Pudding” keycaps have a solid, opaque top but translucent sides, so the backlights on each key shine nicely through. I’m not sure they are the right keycaps for me long-term, but they were a nice and cheap “first set”.

The finished keyboard with pudding keycaps

Am I going to turn into a keyboard nerd? Well, I’ve already tweaked it a wee bit. I kept hitting the “Insert” key by accident, not being used to having a key there, so I’ve already changed the switch on that specific key to be a much firmer, clickier one, so that at least when I do hit it by accident I notice I’ve done it. I’ll probably change the keycaps for something prettier at some point, something a bit more distinctive. I’m not going to go out and buy a lot more keyboards, because I already think this one is very nice to type on. It has a sensible, useful power lamp that flashes when the battery’s low, is red when it’s charging and goes green when it’s finished. But, overall: I admit I was wrong. This is much, much nicer to type on—I’m writing this post on it now—than a standard laptop keyboard is. For something I’ll use pretty much every day that I’m at home, it’s definitely worth the money.

Becoming visible

In which we talk about Transgender Day of Visibility

Today, March 31st, is Transgender Day of Visibility. This year, 2024, it’s fifteen years since the event first started. Event is maybe a big word. It’s a marker, a day in the calendar for trans people to stand up and be loud about who they are.

The calendar sometimes seems full of queer-related events nowadays. Aside from TDoV there’s LGBTQ History Month (February, in Britain at any rate); Pride Month (June); Transgender Day of Remembrance (November); and probably more that haven’t immediately sprung into my head. It sometimes feels like there’s so many similar events in the calendar that they are coming around every week. Nevertheless, they are still all important. Transgender Day of Visibility was started as a celebration, a reaction to the only trans-specific day in the calendar being one of sadness and hurt, a reaction to the medical establishment’s position that the ultimate goal of all trans people should be to become invisible, and a reaction to those who don’t think trans people should be included under the queer umbrella. A day for us to stand up and be proud of ourselves.

Yes, ourselves.

This blog started in its current form in August 2005, getting on for nineteen years ago. In all that time, I think, I’ve not once referenced the fact that I am trans. There’s a reason for that.

I’m not just trans, I am a detransitioner. In 2005, I had just detransitioned. I went into deep, deep denial, about who I was and who I am. So, here, it was never mentioned.

I started to transition again in 2021. One of the first things one of my close friends said was: “Welcome back!” It touched me more than you can imagine. I scanned all of the content on this blog for anything that gendered me, and scrupulously removed them all. I wasn’t ready to talk about it here until now.

Transitioning, like coming out, isn’t a single event. It’s a lifelong process. But an important part of my second transition, coming out to my work colleagues, coincidentally happened two years ago today. Not specifially because it was TDoV, just because we happened to have the quarterly all-staff meeting that day and HR thought it would be a good idea to make it as face-to-face an event as possible. I didn’t mind. I had to do it three times, with separate groups of people. Each time I told them the basic facts, and each time everyone around me was as caring and supportive as possible. In general, that has absolutely been the case. The first time I came out, over twenty years ago, I did lose friends. Not most, but some. This time, everyone in my life who matters to me has been completely and unequivocally supportive of me.

There’s never a right day to come out. Just like being gay, though; if you’re trans, you’re still trans whether or not you come out. Detransitioners are still, ultimately, trans, even though they are used as a political football by the queerphobic—one reason I always kept very quiet about being a detransitioner. I was born trans, I always will be trans, and I always would have been even if I had never transitioned.

As I do transition, too, I’m becoming less visible. I look like any other middle-aged mum now. It’s not immediately obvious that I’m transgender, not at all. That’s one reason, I think, why days like TDoV are still important. Even though I do enjoy looking like any other middle aged mum, I enjoy no longer having to fight for my gender to be perceived, I will still always be trans. Like many middle aged women, I rely on HRT now. Even people who know I am trans forget that I am; a colleague recently was slightly surprised to discover that I have changed my first name. Before too long, people will only know if they go back and read things like this, or if I stand up on days like today and say so. It matters, though. In some ways, I want to be visible.

There’s a museum I’ve taken The Children to a few times, that often has the same person either behind the counter or working as a custodian in one of the rooms. They have long hair, and a beard. They appear to be male. But…every time they see me, even though they are a stranger, their face breaks out into a broad, broad smile as if they are incredibly happy to see me existing in the world as a visibly trans woman. I’ve seen that look a few times, on the faces of strangers in the street, on the faces of teenagers, even on the faces of work colleagues. They’re probably also trans people, trans people who for now are still in the closet, who haven’t been able to transition yet. Maybe they never will. But in moments like that, I know it’s good to be visible, it’s good to be able to show people that this is possible. At least one friend has told me that my transition inspired them to come out too. I hope I can keep doing that—I hope I can keep inspiring people and showing them that is possible to be out in the world as your true self. I hope all of them, everyone who sees me and feels that urge inside, is able to find themselves eventually.

Beside the sea again

Or, resurgence from the waves

Regular readers might remember that two or three years back, I visited the Buck Beck Beach Bench, a strange and delightful bench built up from driftwood on one of the remoter stretches of Cleethorpes Beach. I haven’t been back very much since that visit, what for one reason and another, but I did keep following the Bench and its creators on social media. Because of that, I knew that twice since, it had been completely destroyed by storms; and then, rebuilt. After all, the Bench first started as a ramshackle, makeshift affair for dog-walkers to sit on whilst they waited for the tide to turn, and it was created by slow, organic growth rather than some grand plan. When it is destroyed, it comes back, recreated with the same impulse to create something, build something, and create a record that people stood in a particular spot and stared out at the ever-changing ocean.

A view of the Buck Beck Beach Bench

The bench is smaller now, much smaller than it was before, small enough that it can almost be captured in a single photo. The bench-builders still aim for everything the bench is made from to be safely degradable, something that will rot away harmlessly when it is washed away, as it inevitably will be.

A view of the Buck Beck Beach Bench

The new bench has moved a little from its previous spot which can still be identified from fragments of the previous bench lying about and projecting from the sand. It is on higher ground, now, higher above the waves. This does give it a more commanding view, but I doubt it will last as long as its previous incarnations. This is because it stands on top of a dune, close to its edge, and before very long that edge will have eroded away. It will erode quickly, both from the action of the sea at the spring tide and the footsteps of people climbing up and down from the shore to the bench and back to the shore again. I only give it a few months, before it is undermined and topples down into the water.

Closeup of the Buck Beck Beach Bench

But when it does, it will be rebuilt. And I’ll go down there again, take photos of what its latest regeneration looks like, at once the same but entirely, completely different. And then I will turn, homeward and landward, picking my path carefully back through the marsh.

View from the Buck Beck Beach Bench

Modern technology

Or, keeping the site up to date

Well, hello there! This site has been on somethng of a hiatus since last summer, for one reason and another. There’s plenty to write about, there’s plenty going on, but somehow I’ve always been too busy, too distracted, too many other things going on to sit down and want to write a blog post. Moreover, there are more technical reasons that I’ve felt I needed to get resolved too.

This site has never been a “secure site”. By that I mean, the connection between the website’s server and your browser has never been encrypted; anyone with access to the network in-between can see what you’re looking at. Alongside that, there’s no way for you to be certain that you’re looking at my genuine site, that the connection from your browser or device is actually going to me, not just to someone pretending to be me. Frankly, I’d never thought, for the sort of nonsense I post here, that it was very important. You’re not going to be sending me your bank details or your phone number; since the last big technical redesign, all of four years ago now, you haven’t been able to send me anything at all because I took away the ability to leave a comment. After that redesign was finished, “turn the site into a secure site” was certainly on the to-do list, but never very near the top of it. For one thing, I doubt anyone would ever want to impersonate me.

That changed a bit, though, in the last few months. There has been a concerted effort from the big browser companies to push users away from accessing sites that don’t use encryption. This website won’t shop up for you in search results any more. Some web browsers will show you an error page if you go to the site, and you have to deliberately click past a warning telling you, in dire terms, that people might interfere with your traffic or capture your credit card number. That’s not really a risk for this site, but the general trend has been to push non-technical users towards thinking that all non-encrypted sites are all extremely dangerous to the same degree. It might be a bit debateable, but it’s easy and straightforward for them to do, and it does at least avoid any confusion for the users, avoids them having to make any sort of value judgement about a technical issue they don’t properly understand. The side effect: it puts a barrier in front of actually viewing this site. To get over that barrier, I’d have to implement TLS security.

After I did the big rewrite, switching this site over from Wordpress to a static site generator back in 2020, I wrote a series of blog posts about the generation engine I was using and the work pipeline I came up with. What I didn’t talk about very much was how the site was actually hosted. It was hosted using Azure Storage, which lets you expose a set of files to the internet as a static website very cheaply. Azure Storage supports using TLS encryption for your website, and it supports you hosting it under a custom domain like symbolicforest.com. Unfortunately, it doesn’t very easily let you do both at the same time; you have to put a Content Delivery Network in front of your Storage container, and terminate your TLS connection on the CDN. It’s certainly possible to do, and if this was the day job then I’d happily put the parts together. For this site, though, a weird little hobby site that I don’t sometimes update for months or years at a time, it felt like a fiddly and expensive way to go.

During the last four years, though, Microsoft have introduced a new Azure products which falls somewhere in-between the Azure Storage web-hosting functionality and the fully-featured hosting of Azure App Service. This is Azure Static Web Apps, which can host static files in a similar way to Azure Storage, but with a control panel interface more like Azure App Service. Moreover, Static Web Apps feature TLS support for custom domains, out of the box, for free. This is a far cry from 20-something years ago, when I remember having to get a solicitor to prove my identity before someone would issue me with a (very expensive) TLS certificate; according to the documentation, it Just Works with no real configuration needed at all. Why not, I thought, give it a bit of a try?

With Azure Storage, you dump the files you want to serve as objects in an Azure Blob Storage container and away you go. With an App Service, you can zip up the files that form your website and upload them. Azure Static Web Apps are a bit more complex than this: they only support deployment via a CI/CD pipeline from a supported source repository hosting service. For, say, Github, Azure tries to automate it as much as possible: you link the Static Web App to your Github account, specify the repository, and Azure will create an Action which is run on updates to the main branch, and which uses Microsoft Oryx to build your site and push the build artefacts into the web app. I’m sure you could manually pull apart what Oryx does, get the web app’s security token from the Azure portal, and replicate this whole process manually, but the goal is clearly that you use a fully automated workflow.

My site had never been set up with an automated workflow: that was another “nice to have” which had never been that high on the priority list. Instead, my deployment technique was all very manual: once I had a version of the site I wanted to deploy in my main branch—whose config was set up for local running—I would merge that branch into a deploy branch which contained the production config, manually run npm run clean && npm run build in that branch, and then use a tool to upload any and all new or changed files to the Azure Storage container. Making sure this all worked inside a Github Action took a little bit of work: changing parts of the site templates, for example, to make sure that all paths within the site were relative so that a single configuration file could handle both local and production builds. I also had to make sure that the top-level npm run build script also called npm install for each subsite, including for the shared Wintersmith plugins, so that the build would run on a freshly-cloned repository without any additional steps. With a few other little tweaks to match what Oryx expected—such as the build output directory being within the source directory instead of alongside it—everything would build cleanly inside a Github action runner.

It was here I hit the major issue. One of the big attractions of Azure Static Web Apps is that they’re free! Assuming you only want a personal site, with a couple of domain names, they’re free! Being from Northern England, I definitely liked that idea. However, free Static Web Apps also have a size limit of 250Mb. Oryx was hitting it.

This site is an old site, after all. There are just over a thousand posts on here, at the time of writing,* some of them over twenty years old. You can go back through all of them, ten at a time, from the home page; or you can go through them all by category; or month by month; or there are well over 3,000 different tags. Because this site is hosted through static pages, that means the text of each post is repeated inside multiple different HTML files, as well as each post having its own individual page. All in all, that adds up to about 350Mb of data to be hosted. I have to admit, that’s quite a lot. An average of 350Kb or so per post—admittedly, there are images in there which bump that total up a bit.

In the short term, this is fixable, in theory. Azure Static Web Apps offer two Hosting Plans at present. The free one, with its 250Mb limit, and a paid one. The paid one has a 500Mb limit, which should be enough for now. In the longer term, I might need to look at solutions to reduce the amount of space per post, but for now it would work. It wasn’t that expensive, either, so I signed up. And found that…Oryx still fell over. Instead of clearly hitting a size limit, I was getting a much vaguer error message. Failure during content distribution. That’s not really very helpful; but I could see two things. Firstly, this only occurred when Oryx was deploying to my production environment, not to the staging environment, so the issue wasn’t in my build artefacts. Secondly, it always occurred just as the deployment step passed the five-minute-runtime mark—handily, it printed a log message every 15 seconds which made that nice and easy to spot. The size of the site seemed to be causing a timeout.

The obvious place to try to fix this was with the tag pages, as they were making up over a third of the total file size. For comparison, all of the images included in articles were about half, and the remaining sixth, roughly speaking, covered everything else including the individual article pages. I tried cutting the article text out of the tag pages, assuming readers would think to click through to the indivdual articles if they wanted to read them, but the upload still failed. However, I did find a hint in a Github issue, suggesting that the issue could also occur for uploads which changed lots of content. I built the site with no tag pages at all, and the upload worked. I rebuilt it with them added in again, and it still worked.

Cutting the article text out of the tag pages has only really reduced the size to about 305Kb per post, so for the long term, I am definitely going to have to do more to ensure that I can keep blogging for as long as I like without hitting that 500Mb size limit. I have a few ideas for things to do on this, but I haven’t really measured how successful they will be likely to be. Also, the current design requires pretty much every single page on the site to change when a new post is added, because of the post counts on the by-month and by-category archive pages. That was definitely a nuisance when I was manually uploading the site after building it locally; if it causes issues with the apparent 5-minute timeout, it may well prove to be a worse problem for a Static Web App. I have an idea on how to work around this, too; hopefully it will work well.

Is this change a success? Well, it’s a relatively simple way to ensure the site is TLS-secured whilst still hosting it for a relatively cheap cost, and it didn’t require too much in the way of changes to fit it in to my existing site maintenance processes. The site feels much faster and more responsive, subjectively to me, than the Azure Storage version did. There are still more improvements to do, but they are improvements that would likely have been a good idea in any case; this project is just pushing them further to the top of the heap. Hopefully it will be a while before I get near the next hosting size limit; and in the meantime, this hosting change has forced me to improve my own build-and-deploy process and make it much smoother than it was before. You never know…maybe I’ll even start writing more blog posts again.

* If I’ve added up correctly, this is post 1,004.

How to cross the same river twice

Or, returning to the scenes of your youth

They say you can never go back again. Never cross the same river twice. The past is a foreign country, as the famous quotation goes. Sometimes, it can’t be avoided. Sometimes, though, it can be worth doing just for yourself.

When I was small, our summer holidays followed the same pattern, from when I was three through to when I was about 14 or 15 or so—I can’t rememeber the exact year it stopped. We would go camping for a fortnight, either two weeks in Sussex, two weeks in Kent, or more often than not, one week in each. The amount of equipment and comfort changed over the years, from smaller tents to larger tents, trailer tents through to caravans, but the destinations were always the same, the same two campsites in the same two parts of England. Wherever else we went, every holiday would include at least one day trip to Hastings, the south eastern seaside town that feels almost like a genteel resort, a noisy arcades town and a West Country fishing village all rolled into a single ball and mixed together. Here’s a photo I took when I was eleven, of the cliffs in Hastings Country Park, looking towards Fairlight Glen.

The cliffs east of Hastings

And then, in my mid teens, we stopped going. We had a couple more family holidays, where I asked for Gwynedd to replace Sussex, but I never again went back to Hastings.

Until last week.

I took The Children away for a summer holiday; and where better to go than a classic seaside town that has a beach that’s great for paddling, arcades, a miniature railway you can ride on, castles, caves, cliffs, the lot. OK, you can’t really build sandcastles, but building sandcastles is something The Children really enjoy in theory far more than in practice, and at least the sea never disappears to the horizon, the beach being steep enough to let it merely retreat a respectful few yards from the prom and the arcades. And: they loved it. I took them around all the same places I’d been taken when I was a kid myself: the miniature railway, the crazy golf, the cliff railway, the castle, and they loved absolutely all of it. We barely even left town for the week. The Child Who Loves Animals would have had us go to the aquarium every day if he’d had his way. I just enjoyed the chance to walk around and practice a bit with my new camera.

Hastings seafront seen from the pier

Bottle Alley, the covered promenade linking Hastings and St Leonards

The town? As a child your priorities are naturally a bit different to those of a middle-aged adult; but, even I could see that it has changed in the past thirty years. It has improved, a lot. So many places to eat out in the evening! So much craft beer everywhere. So many Pride flags flying, even from the flagpole in the castle. But it was still recognisably the same place, the same old shape, new flesh on old bones. The 1930s railway station might have been demolished and replaced, but the walk from it down to the beach was still unchanged. The art deco promenade by the pier has artwork now, but still the same concrete lines. The miniature railway might have nicer trains, but they still go between the same two spots, past a boating lake now cleared of boats and pedalos, but to a crazy golf course that still has its windmill and watermill obstacles and where hitting the bell at the end still scores you a free round. It’s hard to say, but I’m fairly sure the fish and chips is better.

The main thing that’s changed, though? Probably me. And it made me quite emotional. The last time I went there, I had a fairly good idea of the sort of person I wanted to be as an adult. Going back, walking down the promenade, I almost drew tears as I thought about just how much of my envisaged self, the me I imagined back in my early teens, is present in the woman I am today. Even if it does mean that I have to walk along the shingle in heels now.

Because the East Hill Lift was closed for major track repairs, we didn’t go up to the Country Park so I could replicate the picture at the top of this piece. Here, though, is a view of the town from the West Hill, the castle site, still the same odd little mixture of holidaymaking and industry that it was when I was a preschooler.

View of Hastings from the castle

Sunset at St Leonards beach

Oh, I said we barely did leave the town, but we did go for a couple of days out, to Battle and to Hythe. Here’s a couple of photos of Hythe railway station, one I took age 9 (I think) and one from last week, just to show you that in some ways I haven’t changed that much at all.

Hythe railway station in the mid 1980s

Hythe railway station in August 2023

The flutter in the dusk

Bats are flying round Symbolic Towers

At this time of the year, when spring is firmly established, the day has been warm and lots of insects have been buzzing around the garden—as dusk falls, just before nine o’clock, there is still life in the garden.

If I’m still at my desk, working away on some crafting or one of my side projects, and the curtains are pulled back, then I start to see a flutter out of the corner of my eye. This is the time the bats come out.

When I mention the garden bats to some people, they’ll say “you’re so lucky! I’ve never seen a bat.” I think, though, it depends if you know what you’re looking for. They’re quick, faster than birds. They dart to and fro, changing direction apparently at random. It’s dusk, though, and unless you spot the outline of their wings you might mistake one for a small bird heading off to their roost. I’ve been stood outside a friend’s house and seen bats flying around us. I recall, years ago now, going on a camping holiday in Cornwall with H; walking back to the campsite after a lovely dinner in the nearest village, up a steep ancient lane lined with tall hedges, and with bats flying around above us constantly the whole way. I’m not sure that anything quite beats, though, the idea that bats are fluttering around my garden every spring and summer night. As the moon rises—as it is now, waxing and almost full—I stand at the window, and watch their silhouettes flicker.

I should be proud, really, that they choose my garden because my garden has enough insects for them to feast on. There must be three or four regular visitors at the moment: if you watch them, if you are quick, you can see more than one in your line of sight at the same time, or one disappear off to the left just as another swoops in from the right.

A few years ago I went on a bat walk with my friend W, for his birthday; the tour guide gave us all “bat detectors”, pitch-shifters that lowered ultrasound to audible frequencies. If you twisted the knob up and down the dial, you’d occasionally hear snatches of bat, a bit like trying to tune a shortwave radio to a Dutch or German station. Each species of bat has a slightly different voice, so if you leave the dial in one position you might miss something; equally, turning the dial makes you wonder if you’re going to be on the wrong frequency at the wrong time. For all the noises we heard, we didn’t really see very many bats. Here, though, I see them nearly every fine night. No need to listen for them when I can watch each wheel and turn. At this time of night, at this time of year, you’ll find me at the window, watching the bats.

No more cookies!

Or, rather, no more analytics

Regular readers—or, at least, people who have looked at this site before the last month or two—might remember that it used to have a discreet cookie consent banner at the top of the page, asking if you consented to me planting a tracking cookie that I promised not to send to anyone else. It would pop up again about once a year, just to make sure you hadn’t changed your mind. If you clicked yes, you appeared on my Google Analytics dashboard. If you clicked no, you didn’t.

What you probably haven’t noticed is that it isn’t there any more. A few weeks ago now, I quietly stripped it out. This site now puts no cookies of any sort on your machine, necessary or otherwise, so there’s no need for me to ask to do it.

When I first started this site’s predecessor, twenty-something years ago, I found it quite fascinating looking at the statistics, and in particular, looking at what search terms had brought people to the site. If you look back in the archives, it used to be a common topic for posts: “look what someone was searching for and it led them to me!” What to do when you find a dead bat was one common one; and the lyrics to the childrens’ hymn “Autumn Days When The Grass Is Jewelled”. It was, I thought—and I might not have been right about this—an interesting topic to read about, and it was certainly a useful piece of filler back in the days of 2005 when I was aiming to publish a post on this site every day, rather than every month. If you go back to the archives for 2005, there’s a lot of filler.

Now, though? Hopefully there’s not as much filler on the site as there was back then. But the logs have changed. Barely anything reaches this site through “organic search” any more—“organic search” is the industry term for “people entering a search phrase in their browser and hitting a link”. Whether this means Google has got better or worse at giving people search results I don’t know—personally, for the searches I make, Google has got a lot worse for the sort of searches where I didn’t know what site I wanted to go to beforehand, but for the sort of lazy searches where I already know where I want to go, it’s got better. I suspect the first sort were generally the sort that brought people here. Anyway, all the traffic to this site comes from people who follow me on social media so follow the link when I tell them there’s a new blog post up.

Given that the analytics aren’t very interesting, I hadn’t looked at them for months. And, frankly, do I write this site in order to generate traffic to it? No, I dont. I write this site to scratch an itch, to get things off my chest, because there’s something I want to say. I write this site in order to write this site, not to drive my income or to self-promote. I don’t really need a hit counter in order to do that. Morover, I realised that in all honesty I couldn’t justify the cutesy “I’m only setting a cookie to satisfy my own innate curiosity” message I’d put in the consent banner, because although I was just doing that, I had no idea what Google were doing with the information that you’d been here. The less information they can gather on us, the better. It’s an uphill struggle, but it’s a small piece in the jigsaw.

So, no more cookies, no more consent banner and no more analytics, until I come up with the itch to write my own on-prem cookie-based analytics engine that I can promise does just give me the sort of stats that satisfy my own nosiness—which I’m not likely to do, because I have more than enough things ongoing to last me a lifetime already. This site is that little bit more indie, that little bit more Indieweb, because I can promise I’m not doing anything at all to harvest your data and not sending any of it to any third parties. The next bit to protect you will be setting up an SSL certificate, which has been on the to-do list for some months now; for this site, given that you can’t send me any data, all SSL will really do is guarantee that I’m still me and haven’t been replaced, which isn’t likely to be anything you’re particularly worried about. It will come, though, probably more as a side-piece to some other aspect of improving the site’s infrastructure than anything else. This site is, always has been, proudly independent, and I hope it always will be.