Month in review: May 2026

Things I learnt
- A
HashSetis for storing unique elements. The point is that it has O(1) lookups like aDictionarydoes. It uses the same basic mechanism as aDictionarydoes (hashing objects then using modulo arithmetic to convert the hash into an index to jump directly to the relevant data).- Understanding different collections and algorithmic complexity has always been a weak area for me, perhaps because I didn't study computer science at university so no-one has ever taught me this stuff. I've learnt about it over the years working as a professional programmer, and I've learnt as it's been useful, but it's meant I've learned in a slow (and probably incomplete) way.
Things I've been thinking about
- A client sent some positive feedback to my company which was clearly human-written. It was exactly the sort of message a senior person in a company tends to write — it was full of typos and minor mistakes they chose not to fix because it's not the best use of their time. Nevertheless, it was clearly heartfelt and we appreciated it. One of my colleagues replied with a message which was much more polished and free from such sloppiness, but was also clearly (to my mind) written by an AI. (On a whim I ran it through an AI detector which gave it a score of 100% definitely AI–generated. I have no idea how reliable the detector is.) I had mixed feelings about it. I know this colleague enough to be confident that the sentiment was genuine. The appreciation and gratitude he was expressing was real. But the medium is the message, and despite knowing the sentiment would be real I nevertheless felt that the use of AI undermined it. What particularly struck me was that this was not an intellectual process for me. I didn't consciously evaluate his writing to determine whether or not it was AI–generated then decide how to react to it. I just read the message and immediately felt a little disappointed, and I only thought about it being AI–generated as I worked through my instinctive emotional reaction. I don't know whether the client will notice, and if they do I don't know if they'll care. Certainly this colleague does lots of good work and I'm sure the client will care much more about that than the use of an LLM to reply to an email, but I've never before been struck so forcefully by an AI–generated response to a human–authored message.
- I'm jumping about quite a bit between different tickets, being in a support role and being busy. I'm trying to be disciplined to take a short break between tickets, even just at the level of getting some water or staring out of a window for 10 seconds. I quite enjoy bouncing between tickets (when I'm making progress on them) and moving fast, but it also leaves me feeling frazzled at the end of the day so I'm trying to slow down a little and give myself room to decompress during the day. It's a bit tricky to know what to do about timesheets though. If I have a slightly longer break (e.g. 5 minutes) after bouncing around between several tickets, which does the time get booked to? That's a much easier question if I've spent a long time focusing on one ticket, but is less clear if the time has been very broken up (especially where it's only a few minutes on each ticket).
Things I've published
Things I haven't published
Most ideas I have for blog posts never see the light of day because I don't find the time to write them. Here's what I didn't get round to.
- TIL why dictionary lookups are O(1)
- This is related to my above comment about learning about the use of a
HashSet.
- This is related to my above comment about learning about the use of a
- Passkey concerns



