+++*

Symbolic Forest

A homage to loading screens.

Blog : Page 3

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.

Ongoing projects

As soon as something finishes, I start two more

The crafting project I mentioned in my last post is finished! Well, aside from blocking it and framing it, that is.

An actually completed cross stitch project of a Gothenburg tram

Me being me though, I couldn’t resist immediately starting two more. And then, of course, there’s the videos still to produce. I will get to the end of the list, eventually. In the meantime, here’s some photos of a few of the things in progress.

An in-progress Lego project all set up for filming

An in-progress crochet creation; this photo is from a few months ago but I still haven't produced the video about it

Frame from another in-progress Lego build which will probably be the first of these to hit YouTube

At some point, I promise, all of these projects will be complete and will have videos to go with them! Better make a start…

Crafting starts again

Or, a new project is embarked upon

It’s been all quiet on here for the past month, and all quiet on the YouTube front too. I do have a couple of projects waiting to be turned into YouTube videos, you see, but that means putting all the video footage together, assembling it, writing the voiceover, recording the voiceover and then cutting the whole thing so that the one fits the other. It’s a surprising amount of work if you do it like that, and I’m not sure my degree of anal perfectionism will allow me to do it any other way. Those videos will make it to an Internet near you, but not until some time in the middle of March at the earliest.

What have I been doing, then aside from that? Sorting out The Late Mother’s paperwork for one thing, naturally. But also, picking up another craft project that arrived for my birthday. I do have a massive cross-stitch project that I bought myself a while ago waiting to get started on, but this was a little tiny small one. A palate-cleanser, I thought it could be, before I start on the next big thing.

The start of a cross stitch project

It doesn’t take long, with a small project, before you start to see recognisable progress. A cross-stitch kit too, because it contains floss that’s been pre-cut into small, manageable lengths, is always very more-ish. Using a whole length only takes maybe twenty or thirty minutes, so at a weekend or in an evening, it’s always very tempting to just do another.

Further cross stitch progress

If it keeps catching your eye, then within a couple of weeks, you have all the cross-stitching itself finished.

All the crosses stitched

There’s still all the backstitch to do, to give it all some outline. This particular kit has three different shades of backstitch to put in, and I’m not convinced how well some of the very pale backstitching will show up against a background that is, frankly, mostly in shades of medium-grey. Watch this space and we’ll find out.

Beating the bounds

On how unchanged our landscapes can sometimes stay

Recently I’ve been reading Viking Britain: A History by Thomas Williams, so far at least a very good and modern history of the Viking Period in the British Isles, evoking what we know, what we don’t know, and particularly, what experiencing the Vikings may actually have been like, and what they may have thought. In particular it is very good at making clear which stories are likely true, which are likely not true, and which were assembled to make something that may have resembled a form of poetic, literary truth, even if in truth things did not happen exactly as the sagas and chronicles describe.

This blog post isn’t about that book as a whole, though, if nothing else because I haven’t finished reading it yet. This post is about a small section in one of the introductory chapters, translating a land grant from 808 AD, from the King of Wessex to the brethren of a church in Bath. The following is my own edit, picking my favourite parts from William’s translation and the version published online in the Electronic Sawyer Catalogue of Anglo-Saxon Charters.

First from the swine ford up along the brook to Ceolnes’ Spring; along the hedgerow to Lutt’s Pit; then on to the edge of the coppice; along the edge to the road; along the road to Ælle’s Barrow; down to Alder Coombe; along Alder Coombe and out to the Avon; along the Avon to the swine ford.

“The Avon?” you might be thinking if you’re from Bath or Bristol. “The Swine Ford?” I pulled out the maps, and found Swineford, where the Avon Valley downstream of Bath starts to widen from a few hundred yards wide to a mile or two. I used to travel through it daily on the train, to and from work, looking out for the deer in the morning fields. And the land grant, as described, is very clearly still largely the modern boundary of North Stoke parish, although it gets a bit hard to trace up towards Lansdown and near the racecourse. This map is from the 1950s, partly for aesthetics and partly for copyright reasons, but the parish boundaries haven’t really changed much since then.

Map of North Stoke parish, Somerset

Swineford, after all, is still Swineford. The brook leading up to the spring must be Pipley Bottom; and there are a number of springs up in Pipley Wood. On Lansdown it is now hard to trace, as the road pattern has changed, the racecourse has been built and there are any number of prehistoric earthworks that could be Ælle’s Barrow; but Alder Coombe must be the small wooded valley that runs down to the river near Avon House.

It’s strange to think that this line on the map, this little patch surrounding one small village, has not in essence changed very much for around 1,200 years. No doubt there are many parishes across England where the same applies—not so much in Wales due to the rather different early medieval history of that country. In Lincolnshire, for example, parish boundaries still sometimes follow the line of Roman-period roads which were landmarks in Saxon times but today are little more than farm tracks or lines on a map.

I’ve never explored North Stoke, just seen it many times from a train window. Maybe, as the year comes in and the days grow lighter, I should try exploring the ancient boundaries of some of the places around me. Just to see what I can still trace.

Photo post of the year

A random selection

As the calendar year is drawing to a close, and Yuletide is slowly coming to an end, here’s a selection of random photos from 2022 that I don’t think I’ve posted anywhere previously.

Inside Hereford Cathedral

Penarth pier

Foundation stone of Caistor town hall

Haltwhistle station and signalbox

The beach at Whitley Bay

Housesteads Roman Fort

Self-promotion

A couple of Yuletide videos

It’s still the Yuletide season, although we’re now very much into the time-between-the-years when everybody is grazing on snacks and leftovers, has battened down the hatches against the storms, and has completely forgotten what day of the week it is.*

As it is still Yuletide, though, I thought I’d post a couple of the seasonal Lego videos I put up on my YouTube channel last week, before the holiday season had really got under way. Both of them are Lego build videos, for some seasonal sets that I picked up earlier in the month.

Firstly, a “Winter Holiday Train”…

…and, secondly, Santa’s Workshop

In a few days they’ll be going away ready for next year, but for now, I hope you enjoy them whilst you’re still feeling a little bit seasonal!

* No, don’t ask me either.

The great year

Looking back, on reflection

The year turns, and the seasons change, as has happened many times before. Tomorrow evening, if you’re in Europe, is the winter solstice, and the days start turning back towards spring. Right now, as I write this, the sun is well below the horizon and the moon is a thin misty sliver behind dark and rain-filled clouds.

This site has been quiet since I posted about putting The Mother’s body in the ground, back at the start of November. Since then…there has been too much other stuff on the horizon to have space in my mind to assemble words into sentences for here, or for that matter, to add video for things to go on YouTube. When you’re dealing with a death in the family, there is an awful lot of paperwork to do, correspondence to answer, and many hours spent on hold to banks, energy companies, everyone she had to deal with. I’ve even had a few letters to answer from organisations who now suddenly think my dad has died, three years later, because The Mother never cancelled all of his direct debits.

Tomorrow, though, is Yule. The end of the year and the start of that time between this and the next, the strange unofficial intercalary weeks that we all somehow seem to obey. Everyone is wound down, yet still tense. Everyone needs the light to change and the sun to move backwards in the sky; and so we have candles and glitter and the warmth of a fire.

At the turning of the year, albeit not the Great Year, it’s worth looking back at what has and hasn’t happened. I’ve made huge strides in life, even if it feels like I haven’t. I’ve taken massive steps, even though I feel I haven’t moved for a long while now.

The other week I was at the beautician’s salon and she asked if I was seeing any difference in how I looked. “It’s hard to say,” I told her, “because I look at myself day to day so I never notice a tiny daily change. You’re more likely to notice a change than I have.” I’m sure, if I were to go back to photos of myself a year ago, I’d see a massive change, even if I feel right now that no massive changes have happened. Hopefully at the next Yule there will have been more changes, even if I feel there haven’t been still then.

I will sit back, imagine lighting a fire, imagine watching the log crackle in the flames, and drink a warming drink. Hopefully, a clear sky, and I can watch the stars spiral and turn. Here’s to one year gone, and here’s to the next just starting, the old gods bringing the sun back around to us once more.

Into the earth

CW: death. Another day, another funeral

It was a bright, crisp, autumn afternoon, the sun still high in the sky. I put my hand in front of my face to shade my eyes from it. Nobody else did, and I wondered if they thought I was saluting.

“Private committal”, I had said on the Order Of Service, so it was only a small group of us. Two of The Mother’s brothers, and their wives; the third brother was too sick to travel. A nephew, a couple of nieces, and my children standing by.

The Child Who Likes Animals was taking a great interest. “She will be buried next to Grandpa,” he kept saying, no matter how many times people explained that, no, Grandpa’s grave had been made specially deep so Grandma could be slotted neatly on top in her matching wicker coffin. When the funeral director had us, the mourners, stand well back by the hearse as the coffin was carried over the damp grass to the temporary trestles at the graveside, The Child Who Likes Animals had ignored him completely, had run circles around them and peered down into the hole. He was the only mourner who saw the bottom of the grave, before the coffin went in.

“Earth to earth,” said the priest, in her hard-edged New England accent. I don’t mean that to sound like a bad thing: she is a very good priest, but her public-speaking voice is firm, and clear, every syllable carefully divided and enunciated. “Ashes to ashes; dust to dust.” She sprinkled soil from a small plastic takeaway container, finely-divided to be straightforward to sprinkle in.

“Take as long as you want,” said the funeral director, after the ceremony had finished. We stood, not really knowing exactly what to do, or how long to wait before leaving. I thanked the priest, and the director; the pallbearers, two old men and two young women, had drifted away discreetly as soon as the body had been lowered into the ground. We stood, chatted a little, said how nice the flowers were, and it was something of an anticlimax. When she had died, in a hospital room, it felt inappropriate some how to be the last one to leave the room and leave her body, on its own, slowly cooling. At the graveside, it felt the same.

This is also something of an anticlimatic way to end this post. When my father died, this blog was on pause, but I wrote about watching him die straight away. The Mother’s death was four weeks ago, and so far, I haven’t written anything about it, about what led up to it, about the sudden shift in realisation that a life will be ending, not in months or years but in a few hours or days. This, though, might be a good point to start writing about it: the end of the process, not the end of the legal and formal processes, but the end of the ritual part.

Know your limits!

Or remember that computers are still not boxes of infinite resource, whatever you might think

Sometimes, given that I often work with people who are twenty years or so younger than me, I feel old. I mean, the archives of this blog go back over twenty years now: these are serious, intelligent colleagues, and when I started writing my first blog posts they were likely still toddlers.

Sometimes, though, that has an advantage. I was thinking of this when debugging some code a colleague had written, which worked fine up to a point, but failed if its input file was more than, say, a few tens of megabytes. When the input reached that size, the whole thing crashed with OutOfMemoryException even on a computer with multiple gigabytes of memory, a hundred times more memory than the hundred-megabyte example file the client had sent.

When I was younger, you see, that would have seemed a ridiculous amount of data, unimaginable to fit in one file. Even when I had my first PC, the thought of a file too big to fit on even a superfloppy like a Zip disk was a little bit mindblowing, even though the PC seemed massive compared to what I’d experienced before.

Back when I was at school, I’d tried to teach myself how to code on an Amstrad CPC, a mid-1980s 8-bit machine with a 64k address space and a floppy disk drive of 180k capacity. It was the second-generation of 8-bit home machine really, more powerful than a C64 or a Sinclair Spectrum despite sharing the same CPU as the latter. Unlike those, it had a fully-bitmapped screen with individual pixels all fully addressable; however, that took up 16k of the 64k address space, so the actual code on it had to be pretty damn tight to fit. The programmers’ Firmware Manual—what we’d now call the API reference documentation—is of course scanned and online; one of the reasons I was never very succssful coding on the machine itself* was that in the 1980s and 90s copies of it were almost impossible to find once Amstrad’s print run was exhausted. On the CPC, every byte you used counted; a lot of software development houses ended up cross-assembling their code purely because for a large program it was difficult to fit the source code itself onto the machine.** That’s the background I came from, and it makes me wary still nowadays not to waste too much memory or resources. I’m the sort of developer who will pass an expected size parameter to the List<T> constructor if it’s known, to avoid unnecessary reallocations, who doesn’t add ToList() automatically by reflex to the end of every LINQ operation—which is a good idea in any case, as long as you know when you do need to.

Returning to the present: what had my team member done, then, that he was provoking a machine into running out of memory when in theory he had plenty to play with? Well, there were two problems at work.

Firstly, yes, we’re talking about someone who has never tried building code on a tiny tiny environment. The purpose of this particular code was to take an input zip file, open it, modify some of its content, recompress it, and send it off to an API elsewhere. Moreover, this had been done re-using existing internal code, some of which wanted to operate on a Stream and some of which, for whatever reason I don’t know, wanted to operate on a byte[]. We had ended up with code that received the data in a MemoryStream, unzipped it in memory, and copied the contents out into more MemoryStream objects. Each of those was being copied into a byte array which was being passed to a routine that immediately copied its input into a new MemoryStream, before deserializing…well, you get the idea. The whole thing ended up with many, many copies of the input data in memory, either in essentially its original format, or in a slightly modified form, and all of these copies were still in memory at the end of the process.

Secondly, there was another issue that was not quite so much the developer’s responsibility. This .NET code was being combined in “Portable” form, and the server was, again for reasons best known to itself, deciding that it should run it with the 32-bit runtime. Therefore, although there should have been 16Gb of memory on the server instance, we were working with a 2Gb memory ceiling.

I did dig in and rewrite as much of the code as I thought I needed to. Some of the copying could be elided altogether; and as this wasn’t a time-critical piece of code, I changed a lot of the rest to use a temporary file instead of memory. The second issue had an easy, lazy fix: compile the thing as 64-bit only, so the server would have no choice of runtime. As a result I never did get to the bottom of why it was preferring the 32-bit runtime, but I had working, shippable, code at the end of the day, and that’s what mattered here.

What I couldn’t help thinking, though, was that the rewriting might not have been needed to begin with. A young developer—who’s never worked on a genuinely small system—has spent so much time, though, never worrying about working anywhere near the boundaries of what their virtual servers can cope with, that when they do hit those boundaries, it comes as a nasty, sudden shock. They have no idea at all what to do, or even where to start: an OutOfMemoryException may as well be an act of the gods. Maybe when I’m helping train people up, I should give them all an Amstrad CPC emulator and see what the result is.

* My high point was successfully cloning Minesweeper, but with keyboard controls.

** Some software was shipped on 16k ROMs, to go along with third-party ROM socket boxes that attached to the expansion bus; this kept the assembler and editor code out of the main address space, but it could still be difficult to fit the source code and the assembler output in memory at the same time. The ROMs were scanned on boot and each declared named entrypoints which could then be accessed as BASIC commands. At least one game I can remember—The Bard’s Tale—crashed if too many ROMs were attached, because each ROM could reserve an area of RAM for its own bookkeeping, and the game found itself without enough memory available.

On whether birds have legs

Or, conversations The Mother has had

It’s been quiet on the blog for the past month, what with one reason and another. Work has taken priority; other writing projects have taken priority; and more than anything, I didn’t realise just how long videoing my crafting exploits, recording a narration and editing the footage into something at least semi-watchable would take. I will put a link to the YouTube channel over on the sidebar at some point.

I did think it would be nice to make sure I did have at least one thing posted here in September, though, and handily The Mother said something yesterday that I thought was worth writing down. “You probably won’t believe this happened,” she said, “but when I was in town today…”

When The Mother says “you probably won’t believe this happened,” it usually means she’s about to say something that’s extremely believable—much more believable than a lot of the things she claims as straight-up fact—but also unintentionally hilarious. I pricked up my ears.

“…you see this top I’m wearing, how it’s covered in animals?” she said, veering off on a tangent. She was wearing a horrible brown sweatshirt, the colour of estuarine mud, coveerd in embroidered birds.

“There were these two women in town with a pushchair,” she said, “youngish lasses, and one of them came over to me and said: ‘scuse me, can you come over here and show my friend your top?’ So I went over, and she said to her: ‘see! Birds do have legs!’”

I almost wish I’d heard the rest of the conversation, which could be settled most quickly by finding an old woman with the right clothing, rather than, you know, an actual seagull or something. The matter, though, had been decided. The Mother can’t quite get over it.