Recovering from Childhood Sexual Trauma

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

Three decades ago, as a child, I was a victim of sexual abuse.1

For most of those decades, I wouldn’t have told you about it. I couldn’t have. By a variety of denials, distortions, and disassociations, for the vast majority of my life I repressed, rationalised, and reframed what happened to me; hiding the truth behind a series of psychological defences.

At one point, for example, I’d internalised the events as both consensual2 and unimportant… to the extent that I intellectualised the fact that I wasn’t seeking nor receiving help for a clearly-traumatic experience as evidence that it wasn’t really wasn’t a big deal.

Silhouette photograph of the head of a plain wooden mannequin, wearing a blindfold improvised from a strap of red cloth wrapped repeatedly around its head. Adapted from a photograph by David Underland.

By a later point – and for most of my adult life – the mental wound was wrapped in so many overlapping layers of shielding it became nearly impossible for me to reach the memories at all. And where I could, it felt like a half-remembered dream.3

Without going into detail about what precipitated it, suffice to say: I ended up in therapy. I’ve seen several rounds of therapy over the last few years, punctuated by “homework” periods of exploration by myself, or with on-demand help from specialised services. My initial goal was to find a safe environment in which to unwrap that long-hidden psychic injury, to allow myself to grieve and, perhaps, begin to heal.

A challenge I faced right from the start was a nagging doubt that I really had made the whole thing up. That none of it was real. That I was wasting my time and everybody else’s, chasing the tail of a dream.

My journey of proving to myself that my recollection could be trusted was an odyssey in itself:

Photograph showing a suburban street in a Northern town, shortly after sunrise. The belittered street is worn and the decrepit husk of a telephone box stands outside an abandoned store front.

It involved revisiting places from my childhood, physically walking in the footsteps of my younger self: one foot firmly in the safety of adulthood while the other stepped tentatively into a childhood reverie.

It involved Subject Access Requests to the NHS followed by hours of poring over ancient notes, handwritten by doctors4, faxed, partially-censored5, then re-scanned for delivery to me.

Scanned, partially-censored NHS letter addressed to Dr A Payne, 26 November 1991, from Dr Stickle. Regarding "Daniel Huntley", it reads: I saw this boy with [redacted], Social Worker, at Bickerstaff House on 2 October 1991. The appointment was arranged at [redacted] request. The remainer of the letter has been cropped away.

It involved awkward and tearful conversations with people whose circumstantial recollections of events on the fringes of my memories helped narrow down a timeline. Helped show me what was real. Helped me to at last be able to say out loud the truth:

Three decades ago, as a child, I was a victim of sexual abuse.

Since then, my recovery has had a different focus: “joining the dots”. Even though I spent my teens, twenties, and most of my thirties unable to consciously comprehend what happened to me6, it seems inconceivable that my experience won’t have unconsciously shaped my later life.

Being unable to conclusively say how it did so – or rule out how it didn’t – is uncomfortable. I’m working on that.

Was my vulnerability to falling into an abusive relationship as an adult foreshadowed by my experience as a victim of sexual abuse as a child? What other connections can be found in my life, my personality, my presentation, my sexuality, my identity, my outlook…?

Not to go all Sliding Doors, but: who would I be had one pivotal moment in 1991 gone differently? And would that be a more… authentic “me”?

Two abstract constellations of stars drawn onto a picture of stars over the hills as the last of the sunlight begins to vanish.

You might rightly ask why I’m blogging this. The answer is integrity.

I’ve been blogging for more than half my life, and it simply feels inauthentic to avoid writing about this. I want there to exist a post – this post – that one day, maybe, I can link back to. From a post, perhaps, in which future-me recontextualises this point in my life through the lens of hindsight. I’d feel dishonest to conceal one of the most-significant things I’ve been up to these last few years!

But this post’s publication is artificially limited. It won’t appear on my recent posts lists, nor get syndicated to a half dozen different social channels. You can share it or linking to it or talk about it – those things are all fine – but I just don’t want it to be dominate my homepage, overshadowing whatever I write next. People who just casually drop by my site don’t need this post in their face!

You chose to pass the content warning. You chose to read this far. And I’m really grateful that you did. Because now you get to be part of the story of my recovery, too. If hypothetical future-Dan links back here one day, you’ll know that you were a small part of the journey I took to get there. So: thanks.

I’m still “recovering”. But I’ve come a long way over the last four or so years, and the hardest parts are, I’m confident, now behind me.


1 Don’t get hung up on terminology. Even legally-speaking, definitions vary: today, it might be described as kidnapping and sexual assault, but these are terms whose meaning has changed in the interim. Again, though: the terminology’s not important.

2 Again, I’m not interested in getting hung up on terminology. But in the unlikely event that it needs stating: a ten-year-old is neither legally nor developmentally competent to consent to sexual activity with an adult. Fucking obviously.

3 I spent the longest time in a state of cyclical reasoning: I must have completely imagined it, because if it had really happened, then I’d be traumatised, and if it was that big I’d be able to remember it clearly, right? This outermost line of psychological defence stood impenetrable for twenty years.

4 The oft-told joke about doctors’ handwriting becomes significantly less-funny when each sentence deciphered is a fragment of a story a child was too hurt to give voice to himself, too scared to share in a way that he would be understood.

5 Over-zealous data handlers, fresh from their GDPR compliance courses, for some reason saw fit to black out my parents’ names from some (but not all) of the documents I received in response to my SAR. Like I wouldn’t know who was meant when they wrote, for example, “Daniel was brought in by his mother, [redacted], on 19 June 1991”!

6 Perhaps-unsurprisingly, my memories “around” the period during which I was victimised have long been shaky, too, compared to my earlier and later childhood.

× × × ×


This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

I first met my now-metamour JTA 19½ years ago (the week after next).

For most of that time I’ve been aware of, and have ocassionally mocked, his capacity for nostalgia, which is so strong that he’s able to look back on things that he never even experienced in the first place: he still wants his eleven days back, for example.

Screenshot of the game Last Call BBS, showing a fictional operating system initiating a dial-up connection to a BBS; a game of Solitaire can be seen in the background.
This post might have been inspired by Last Call BBS, which incidentally is on sale on GOG and Steam this week…

But his demonstrable nostalgia for technology (even from before his time) is something I really appreciated when it gave me a “buddy” with whom to watch BBS: The Documentary (and Get Lamp) many years ago. Despite having missed out on the BBS scene and only brushed the edges of text based adventures, he can really “get” the enthusiasm for it. And that’s awesome.

Anyway: if you’ve not tried Zachtronicsfinal game Last Call BBS yet, it’s worth a look. At least: it is if you either have fond memories of trading warez on clandestine dial-in microcomputer systems or else have a love for that whole BeOS aesthetic and want to experience the 90s dial-up world one last time (in a rose-tinted way)!

Update: I suppose if I’m talking about nostalgic tech, I should point out that this post is available over Gemini (gemini://, Gopher (gopher://, and even Finger (run finger at your favourite terminal…).


A Little Redesign

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

I’ve soft-launched a bit of a redesign on the old one was getting a little stale, and I wanted space to try out some new ideas!

Screenshot showing the homepage of The headline post is "How cool are Silo's credits?"
The new design is squarer, flatter, and fluidly-responsive (without breakpoints).

A major “theme” to my new design has been technical simplicity and performance. WordPress is great as a CMS, but the fact that it’s so easy to install “just one more plugin” to solve a problem can leave some WordPress sites feeling a little bloated. Plus, heavyweight sites seem to be the norm these days, sadly!

So I’m proud to have –

  • Almost halved the number of WordPress plugins in-use from 35 to 18. (Of those 18, two are mine.)
  • Dramatically reduced the number of scripts and stylesheets injected into the frontend by plugins from 7 to 0. (Virtually all the plugins that remain are for backend functionality.)
  • Halved the total Javascript payload of a typical page from 8.3kb (compressed) to under 4kb (uncompressed, with full comments).1
  • Made the Javascript and CSS that remain so small that they can be inlined, in their entirety, into each page, and still fit into a typical TCP slow start window.2
  • Re-encoded most of the images as WebP for browsers that support it.3

What else? Lots of things that I’d been meaning to do for ages, but wanted a clean slate for:

Screenshot showing a "footer" area from a checkin post, showing links to other posts, a map showing the location (in Athens) of the checkin, tags, and syndications.
Ignoring the nice new maps for a moment: I’m pretty pleased with these <details> elements, enhanced with a little stylistic CSS.
  • Improved accessibility, especially with regard to colour contrast.
  • Switched out the maps that appear on checkin posts so they’re precached images from OpenStreetMap rather than Google Maps.
  • Made my HTML nicer to read in View Source mode.4
  • Added some new static pages: a colophon to explain how the site works, a summary of the implications of the license I publish under, etc.
  • Added a second font (oooh!), for headings. I’m still not 100% convinced by it.
  • Made it easier to see how people can reply to my posts, including by email.
  • Added code to discourage search engines from indexing “RSS Club” posts, like this one!
  • And lots more!

My aim is not to deliver this new generation of my site and have it be “complete” for a few years, like on previous ocassions.

A blurred "todo" list; about half the items, mostly towards the top, are done.
Somehow, my “things to do while redeveloping the site” list has gotten longer as I ticked items off!

Instead, part of the reason I’ve gone for a blank slate is to try to make it easier for me to do some “personal website gardening” more often. Lately I’ve written a lot of content… but I haven’t done much with my code. My digital garden has been delightful to relax in, but unruly to cultivate. A fresh start makes it easier to work on new things.


1 All Javascript remains optional, and the site works fine without it. Progressive enhancement for the win! Specifically, the Javascript on this site (a) launches a service worker, to enable “smarter” caching and so improve performance, (b) fires up, to start preloading links when you hover over them briefly and so improve performance, (c) make 360° photography WebGL friendly, and (d) make some disclaimer text “dismissible”. That’s all.

2 This is a Web Performance 201 thing. Here’s the skinny: while a web server is working out how much data it can dump on a user agent at once, it’ll typically send out about 14kb in the first tranche of data and then wait for guidance from the user agent before it continues. If you send 8kb of HTML in that first 14kb window, and then the browser parses the HTML and realises it needs 4kb of CSS too, then the browser it has to make a separate request for that CSS. In that instance, it would have been more-efficient to include the CSS in the initial HTML! This flies in the face of everything you learned in Web Performance 101 because that CSS now can’t be cached and re-used for subsequent page loads, but so long as most pages (by popularity) come in under the 14kb window it’s always more-efficient to bundle them with some of their resources. It reduces the length of your request chains too. Same principle applies to other dependencies – even (small) images!

3 Even my image-heavy homepage would comfortably fit twice onto a 1.44Mb 3.5″ floppy disk, with all resources, nowadays. I mean: if that’s the kind of thing you’re into.

4 I learned to code on the Web with thanks to View Source, and while I respect that the (new-fangled) Inspector tool is generally more-useful, I still think we owe it to future developers to not obfuscate the kinds of code that we ourselves learned from.

× × ×

Inspiring Leaders

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

Despite my best efforts, I periodically find myself running teams: usually only when anybody who could conceivably be better at it is unavailable. I’m not… terrible at it, but I’m not great either, and I get frustrated if I spend more of my time in meetings than writing code (which seems to often be the case when I take any kind of managerial position).

A conversation with my excellent coach this morning1 got me thinking about leaders I’ve worked alongside or under that I particularly admire. Especially those who’ve demonstrated skills that I don’t have, or that I’m weaker at, but that I could learn to improve. Those that came to mind include:

  • Formerly at the Bodleian, my colleague Liz, who seemed to make project management look effortless: keeping track of dozens of moving parts while promoting a relaxed, creative atmosphere. I competed with her for a management role once; I’m so glad she got it, she did a much better job than I would have.
  • Three Rings‘ head of development (who took over from me last year, allowing me to focus more on the technical aspects of my work) Beverley, who brings emotional honesty in professional environments. I admire the fact that they’ve got the courage to start a meeting by asking everybody present, for example, “what kind of weather represents how you’re feeling right now?”
  • My team lead Bero at Automattic, who’s proactive support in putting his team first means I’ve always felt safe to speak my mind.

It’s perhaps inevitable that I’ll keep ending up in leadership positions, whether ir not I desire it!

But I’m optimistic that a greater awareness of the places I’ve got potential to grow as a person will help ensure that when it happens, I’m a better leader than I was the previous time.


1 My coach also inspired my blog post about doing what you’re bad at and the accompanying vlog version. I always come out of sessions with her with so many ideas for blog posts, but – as always – I have less spare time for blogging than I’d like!

What is RSS Club for?

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

For members of RSS Club (all of whom I follow, thanks to FreshRSS‘s awesome Dynamic OPML feature), RSS Club provides varying purposes. We probably all agree that it’s a great excuse to celebrate how awesome RSS is, but beyond that we differ.

A common purpose seems to be to provide a platform that’s slightly less well-publicised, slightly more-ephemeral1 than the majority of the content that authors put on their blog, while still continuing to host and control it indefinitely. I’ve enjoyed seeing how some members choose to show content via RSS only that they might not be ready to share more-widely: weeklogs, half-finished ideas, and so on.

That’s been a big part part of the attraction for me. As my drafts folder continues to grow and half-finished ideas stagnate indefinitely, I’ve become increasingly concerned that I’m perhaps too much of a perfectionist about my blogging. Rationally, I know I needn’t be, for two big reasons:

  1. The popularity2 of a post seems to be only barely-related to the amount of time that went into it. Consider for example:
  2. My primary target audience for my blogging for the last few years remains: myself! I aspire to write content that I myself would enjoy, distribute it by appropriate channels in case it’s of interest to others, and not care one way or another about whether anybody else ever reads it3. Clearly I don’t always succeed, as I’ve demonstrated in the bullet point above, but that’s my goal and for the most part it works for me.

I’m trying to get better at publishing things when they’re “good enough”, and RSS Club is in some ways a gateway to that. In my RSS only posts, I don’t always feel like I even have to re-read them before I click “publish”. If there are mistakes, I’ll go back in and fix them later! It’s an effort to encourage a more-casual and laid-back attitude to my blogging, and I feel like it’s working.

Also; writing RSS only posts helps me feel like I don’t have to stay on-topic as much as I might otherwise. On which note: I’m really loving how the “Twitter Migration” has breathed a whole new level of energy into the Fediverse; I dusted off my old Mastodon server earlier this month, installed… umm… let’s just say a lot of patches (ahem)… and started chatting to newcomers. I’ve helped a couple of other instances manage their scaling-up, and I’m loving the fact that the old vibe still remains and the toxicity of the “birdsite” has so far been kept out. Fingers crossed for its future. If you’ve not come and said hi to me there yet, you’ll find me – of course – as


1 Like Derek’s notes, where you can only see the most-recent 10 unless you already know where they are (or are, you know, willing to reverse-engineer the source code of his “random note” page: the risks of a static site implementation!).

2 I’m only really able to track popularity by direct feedback, such as comments and reshares, because I’ve been working at stripping all other analytics tools out of my infrastructure to improve the performance and privacy footprint of my personal websites.

3 Again: this is part of why I actively avoid analytics!

Note #20563

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

Having upgraded FreshRSS last week for the new XMLPath scraping feature, I’m also loving the dynamic OPML feature! Dave Rupert’s RSS Club publishes an OPML feed of its members and that means I’m able to instantly and dynamically subscribe to all my fellow RSS Club members. It’s been interesting – but perhaps to be expected – to see the overlapping interests that many of us share outside of the joy of RSS!

RSS Club for WordPress

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

I’ve started publishing posts that are only publicised on my RSS feed (and places that syndicate it, I suppose), not on the HTML pages of my blog nor via any social media channels. It’s a concept promoted by Dave Rupert as “RSS Club”. Of it, he says:

What kind of content should you post? Whatever you want. More personal, less personal, weird. It doesn’t matter.

These posts aren’t very “secret”; they’re at publicly-accessible web addresses and linked from a publicly-accessible, promoted feed. But in an era where feed readers don’t enjoy the popularity they once had (and perhaps still ought to have!), it provides a fun and quirky way to artificially reduce the audience that some of your blog posts get. So I’m enjoying playing with it a bit.

I came across the idea via Jim Nielsen‘s blog, and I’ve wanted to get in on the action for a while, but I’d been putting off getting the code in place to support it. Dave uses Jekyll, so he just had to tweak his buildchain to not include his “RSS only” posts. I assume Jim’s process was similar (he’s powered by Metalsmith). But me? I’ve got multiple decades of history in WordPress format, and I can’t see that changing anytime soon, so I needed to roll my sleeves up and get hacky before I could join the club.

I tried Lutz Schröer‘s plugin, which should have “just worked”, but it didn’t: probably because of the huge stack of custom code I’m already running on this site! So instead I came up with my own. My goals were:

  1. Posts with the “rss club” tag should not appear on listing pages, blog search results, previous/next post links, the homepage, or in the “related posts” section.
  2. But these posts should be visible if you go directly to their URL, as well as in RSS feeds, and if you go to the listing page that specifically shows all posts with that tag (incidentally, WordPress takes this setup and ensures I have an RSS feed of just the “RSS only” posts!).

My resulting code turned out tiny – much smaller than the plugin I couldn’t make work – so I just dumped it into my theme’s functions.php. In case it’s any use to you, here it is:

// Posts tagged "rss-club" shouldn't appear outside of RSS, so:
// 1. Prevent main queries from returning such posts, except in RSS feeds:
function rss_club_pre_get_posts($query){
  if ( is_admin() ) return; // always see rss club posts in the admin interface
  if ( is_feed() ) return; // always see rss club posts in RSS feeds, duh
  if ( is_tag( 'rss-club' ) ) return; // if we've found the rss-club tag and we're specifically looking for things in it, show them
  $tag = get_term_by('slug', 'rss-club', 'post_tag');
  if ( ! $tag ) return; // if we don't have an rss-club tag, drop out here
  // filter the query:
  $query->set( 'tag__not_in', $tag->term_id );
add_action( 'pre_get_posts', 'rss_club_pre_get_posts' );

// 2. Previous prev/next links "skip over" such posts:
function rss_club_prev_next_where($where){
  global $wpdb;
  $secret_post_ids = array_map('array_shift', $wpdb->get_results('SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id=1137', ARRAY_N)); // need to use wpdb so we don't hit our own hook above!
  $secret_post_ids[] = -1; // add a dummy item to ensure the SQL is valid even if there are no secret posts
  $secret_post_ids_list = implode(',', $secret_post_ids);
  // Append our filter onto the query:
  return $where . " AND NOT IN ($secret_post_ids_list)";
add_action( 'get_previous_post_where', 'rss_club_prev_next_where' );
add_action( 'get_next_post_where', 'rss_club_prev_next_where' );

The Shape Of Depression

This post is secret; you can only find it via my RSS feeds (and places which syndicate them). It's okay to talk about it or link to it, though. Thanks for being part of RSS Club!

My mental health has good days and bad days. Most days are good days, but bad days tend to cluster together, 2±1 times a year, into a significant low spell. Because I’m keen on developing coping strategies for when I’m not doing so well – and because I’m a nerd – I’ve been trying to understand what a depressive episode looks like. Let’s draw a curve:

Graph showing mood dipping over time, and then climbing again. A point just before the lowest ebb is labelled "A". A point just after that is labelled "B", a point most of the way back up the side is labelled "C".
When life’s a rollercoaster, you make rollercaosterade graphs.

For most of my life, I’ve often only been able to see the shape of the curve as I come out of it; about point “C” on the graph, or even later on. One time, about 12 years ago, I had a bad winter that I couldn’t identify as depression until months after it ended. I just sort-of internalised my sadness and lethargy as “just who I am”; it took a lot of distance before I could say “oh wow; I was really low back then”.

Nowadays I do a lot better: I tend to spot that I’m depressed at about point “A” on the curve. That’s before I hit the bottom, which helps with taking steps to mitigate the worst of it (talk, diet, mindfulness, exercise, sunlight, etc. as applicable).

It’s still not as soon as I’d like, but better self-awareness will, I hope, keep pushing point “A” earlier and earlier. The challenge is, of course – as any data scientist can tell you – not getting distracted by false maxima/minima:

Graph showing a portion of the "downhill" section of the earlier graph, but instead of going down across its entire length, it goes down, then up again, then plunges down once more, creating a local maxima.
Zoom and enhance! The smooth ride downhill at point “A” might be bumpier up-close.

Getting to point “A”, making positive steps to try to course-correct, and then feeling better for a few days doesn’t necessarily mean I’m on the up-and-up, and that’s dispiriting. But still: having the full curve to-hand serves as a reassuing reminder that, in the end, I’ll come “up” the other side, as I have time and again. This too shall pass, and all that.

Point “B” is where I often get sick, as a reminder that psychological and physical health so often go hand-in-hand. It’s a bit disheartening that I’m usually right at the point where I’m thinking “hey, things are getting better” and then the next day come down with a cold or something, but at least it’s on the right hand side of the curve. I’m acutely aware of this part of the process because I got sick early this week and I’m still not quite feeling myself again, but still: at least I’m on the up-swing of the curve.

I’ve gotten to be moderately good at spotting the whys that act as harbingers to upcoming low spells. So now I’m focussed on understanding the hows of what it’s like to enter and leave them. Maybe someday I’ll be good enough at making course-corrections, early enough, that I can flatten out these graphs. But for now, I’m going to get back to my point-“B”-to-“C” self-care.

Update: turns out that what I was coming down with at point “B” this time was Covid. Delightful.

× ×