Category: Alaric

Thoughts on Nice Clothes (by )

As I have previously opined, I like practical clothing with lots of pockets; I am generally more interested in practicality (storage capacity, comfort, keeps me warm and dry) than looks in my clothes. So where I get to choose colours or designs, I tend to go for "black" most of the time; the exception being t-shirts and hoodies, where I of course often get things with amusing cultural references or logos of things I'm proud to support. Although I'm agender, my feature-driven taste in clothing is entirely masculine because, sadly, female-gendered clothes tend to be designed for style rather than features...

However, a discussion I was tangentially involved in a while back got me thinking: if I chose to disregard practicality for some reason and wanted to choose clothes purely for what they look like, what would I want to wear?

After much deliberation, I think I like the cut of garment called a Thawb - although it took me a while to find out that's what it's called! But I'm not keen on the white ones as pictured in that Wikipedia article, I'd like a nice dark black/blue/purple one with some kind of angular pattern embroidered on it in white, silver or gold thread. Perhaps a Hilbert curve around the borders, too?

Not that I'd wear it much, mind; I only really dress up for weddings and stuff like that (The jacket I got married in is somewhat similar to a thawb, although shorter; that's served as an inspiration). Although in principle it might be kind of nice to dress up just to lounge around the house and stuff, it would be rare for me to have a day without having to go out in the rain, brave mud, cook, drill holes in walls, etc - not to mention dealing with the unexpected demands that I carry all that stuff in my pockets for!

Designing software (by )

One thing that has often annoyed me in my career as a software designer is coming into conflict with people who want me to do the worst possible job that is "just good enough".

This often comes out in statements like:

  • "There isn't time to design it properly, just hack something so we can start demoing it"
  • "We'll have to rewrite it anyway, requirements always change"
  • "Supporting more features than we need right now is a waste, add them when we need them"
  • "Can't we just do something quick and simple?"

Reading between the lines, they seem to think that "more designing" will mean more complicated software with more features, that will take more time to build.

I think the problem comes from how product management thinks of software - they want a feature, they request the engineers add it (ideally specifying the feature well enough that they actually describe what they want), they get that feature. And there's often some discussion about reducing the scope of the feature by removing some criteria to get it implemented sooner. It seems very much like "more features with more acceptance criteria equals more work".

I'd like to dispell that myth.

I assert that better-designed software.will take less time to write, and will be better due to being more flexible rather than through having more features, and through being easier to extend in future when new requirements come up.

There's a paragraph in the Scheme language standard known as the "Prime Clingerism", and it reads thus:

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates that a very small number of rules for forming expressions, with no restrictions on how they are composed, suffice to form a practical and efficient programming language that is flexible enough to support most of the major programming paradigms in use today.

It has been my experience that this approach applies to all forms of software design, not just programming languages. As a software architect, I see designing a feature as more like Michelangelo making the statue of David (famously, he said that the process of making a statue is just to get a big enough block of stone, and remove all the bits of it that aren't the statue).

Rather than thinking in terms of each acceptance criterion in the specification for the feature as a thing that will have to be done separately (so more ACs means more work), I like to work the other way: what's the simplest piece of software that can do all of these things? Most problems have a "core" that it can be boiled down to, plus some "details". I try to design software that has to meet specific requirements by making the "core" with the fewest assumptions and then adding "details" to tailor it to the exact requirements - which tends to mean I can add more details later to fulfill more requirements.

An example

For instance, many years ago, I worked at a CRM SaaS company. A big part of the app was sending out HTML emails to subsets of a user's customers to offer them some special offer, serving up the images in the email from our HTTP server (and tracking who saw the email by including the email message ID and the recipient ID in the image URL), and tracking what links they clicked by replacing URLs in the email body with URLs hosted by our HTTP server that would log the email message ID and recipient ID then redirect the user.

I was given a feature request: people were occasionally forwarding the emails to their friends, and when they did so, their viewing of the email images and their clicking of links would be logged against the original recipient, as their ID was in all the URLs. Our server would see the same person viewing the email lots of times and clicking the links lots of times. Learning how users responded to these messages was a big priority for our customers (we had extensive reporting systems to analyse this data!), so they were tetchy about this, and desired the ability to put "forward to a friend" forms in the email HTML. The recipient would put their friend's email address into this form and hit a button, and our system would send a fresh copy of the email to their friend, with their own recipient ID - so our user would know the forward had happened, and could see the friends' response separately.

Now, the "simplest" solution would be to add an extra feature to our HTTP server, accepting a form submission to a URL containing the recipient and message IDs, extracting an email address from the form submission in the usual manner, creating a new recipient in the DB with the email address (or finding an existing one), recording a forward from the original recipient ID to the "friend"'s ID, and sending a copy of the email to the "friend" - then responding to the form submission with either a hardcoded thankyou page or responding with custom thankyou-page HTML uploaded by our user, or a redirect to a URL set by the user.

A quick chat with the boss revealed that being able to host custom thankyou pages was a very desirable feature, and as that would involved embedded CSS and images (and maybe javascript), I clearly needed some kind of generic user-uploaded-content HTTP serving infrastructure. So I threw that together, letting customers created websites in the application and upload files, and an HTTP server that would server resources from them with a URL containing the website ID and the path of the file "within" that website - and with the ability to tag URLs with email message and recipient IDs for tracking purposes. We already had an engine to "personalise" HTML message content for a specific recipient, which also handled modifying all the URLs to embed email message and recipient IDs, so I used that again for hosting textual content such as HTML, meaning that if a link came in from an email message with message and recipient IDs, they would be fed into all further URLs returned by the system. To prevent spoofing of the IDs in the URLs, I reused the method we used on the image and redirect server URLs: the URL itself was "signed" with a short cryptographic signature when the software generated it.

But rather than hardcoding the forward-to-a-friend feature into that, I did something that took perhaps ten minutes more programming: I allowed an arbitrary number of named "commands" to be included in a URL. The only named command I implemented was "forward" that would do the forward-to-a-friend logic (finding all form submission fields called "forward-to" and using them as recipient email addresses, so you could make forms that accepted lots of addresses; making it loop over all fields with that name rather than just looking for one was the first assumption I removed to simplify the software while making it more flexible) then proceed with handling the HTTP request in the normal way.

But when a requirement came in to support unsubscribe forms, I just added an "unsubscribe" command, which took all of five minutes. Adding an "update" command handler to let people update their details in the master DB took a little longer, just because I had to list all the supported field names in the documentation and include a more lengthy example. And then, because I'd implemented the recipient and email message IDs in the URLs as optional things from the start, adding a "subscribe" command handler that created a new recipient in the DB from scratch, along with a tweak to the UI to let the user get an anonymous URL for any file in their website took an hour or so - and meant that users could now create subscription forms and generate a URL they could publish. I think I also added a "send" command handler to send a copy of a specific email message to the recipient ID in the tracking context; as the "subscribe" command put the new recipient's ID in the tracking context, a URL with a "subscribe" command followed by a "send-" command would handle a subscription and then send a welcome email to the new subscriber...

I added a few other command types that did various other things in the system, and all was good.

Now, I didn't "set out" to design an "overcomplicated super-flexible" HTTP server system that could do all these things when I was asked to add the forward-to-a-friend system. I just spotted that the following assumptions would be really easy to NOT bake into the core of the implementation:

  • Forward to a friend is always to a single friend; it's easy to create multiple form fields with the same name in an HTML form, and easy to make my server loop over any it finds.
  • Every visit to the new generic HTTP server will have a recipient ID and an email message ID; although forward-to-friends will as they will be linked from an email, it's easy to imagine that we might want to host subscription forms in future. So making the tracking IDs in the email optional (or allowing for other kinds of tracking IDs in future) by making the URL structure by a series of tagged fields (it looked something like http://domain/sss/Rxxx/Eyyy/Wzzz/foo.html for a request for file foo.html in website ID zzz for recipient xxx from email yyy, with sss being the anti-tamper signature) was worth the few minutes' work.
  • Requests to the web server will be forward-to-friend requests or just static resources in support of a response page; it was easy (given we already had an ordered list of tagged components in the URL) to added an ordered list of arbitrary commands (with URL path components like forward, subscribe, etc; any component before the Wzzz/filename part was considered a command or tag, and tags started with an uppercase letter).

The "extra work" required to do things that way rather than the "simple" way was tiny. But it meant that the core of the HTTP server was simple to read and didn't need to change as we extended it with more and more commands (by adding them to a lookup table); it made a powerful system that was easy to extend, easy to understand, and capable of things we didn't have to "add as features" (some or our users did quite creative things by stacking commands!). As the HTTP server core and the commands were small separate modules with a clearly-defined interface, they could be understood individually and were well isolated from each others' implementation details, the benefits of which are well documented.

So please help me fight the assumption that putting thought into designing software means it'll be complicated, more effort to implement, and that "it'll need rewriting anyway so there's no point"! Let me do my job well 🙂

Enthusiasm (by )

When I was a child, I was full of enthusiasm - as a keen self-taught engineer I was soaking up knowledge about the wonderful things that could be done, and my future was full of promise; I lacked the tools and money to build many of the things I planned, so focussed on tinkering with software (once I had a computer, programming was free!). But I was confident that I would be able to turn my skills to employment and earn enough to buy tools, and then I'd build so much cool stuff.

However, it took a while to get there, and along the way, I accumulated lots of pressures on my time as well. These days, when I have free time, I'm often too physically exhausted to do much, and that enthusiasm is all gone - nothing seems rewarding any more, and I fritter the free time away.

But it's not always like that. A few times a year, a burst of enthusiasm comes to me (and I think I know how to trigger it deliberately, too).

This weekend, I did a lot of DIY. I worked on the van, tidied the house, sealed the skirting boards in the kitchen (I've learnt how to apply sealant neatly!), caught up on my emails, did some financial admin, wrote up a lot of scrappy notes I had into my filing system (re-organising some bits of it on the way), and caught up on work hours I'd missed in the week due to visiting my sick father in hospital (he hurt his knee, and is recovering well!).

The combination of dealing with emails, filing my notes, and organising my filing system, however, brought back The Enthusiasm.

Which, on the one hand, is great - I used that energy to get a lot more done than I usually do.

On the other hand, it also meant that when I went to bed at 10:30pm (for a 6:30am alarm clock start), I couldn't sleep as my head was buzzing with ideas. I wrote them up in my bedside notepad, which usually releases the pressure of thinking about them, but one of them was exciting (a really nice way of supporting HTTPS in my Web hosting stack), and one of them wouldn't stop going around in my head - I came up with a simpler design for a new desk/shelving system I want to build in my workshop, combining my computer desk and an electronics workbench. This was stuck in my head because I couldn't just think it through to completion and then record it; I was trying to visualise all the fine details to work out how it would fit together, and it wouldn't fit in my head. So about 2am I gave in and went downstairs and fired up OpenSCAD and bashed out a 3D model of it, which also spits out a cutlist of what lengths of square steel tubing and areas of plywood I'll need to make it:

Figuring out all the fine details and seeing how they'd fit together finally relieved the mental pressure, and sometime past 4:30am, I fell asleep... getting somewhat less than two hours' sleep.

Today I've been able to divert the energy to my work, which is great, as that's what I'm supposed to be doing - and using that energy to make up for the fact that I'm dog tired. But I still spent my lunch break writing up my overnight notepad notes into the filing system and doing a few of the tasks I'd thought of, including planning a comprehensive consolidation of my sewing supplies into a proper sewing box plus a tiny sewing kit for emergency repairs, that can go into my bag. And writing this blog post!

I'm confident this is not evidence of bipolar disorder, because I'm fully aware of my slightly manic state, and I'm following tasks through to completion! But it's still not an ideal situation.

I've observed in the past that The Enthusiasm can be invoked by doing "infrastructure" work - updating my filing system, tidying my workshop, building tools, maintaining the van, building software infrastructure, etc. so my plan is thus:

  1. Book out infrastructure days.
  2. Work on infrastructure projects in the mornings. Try to remember the Enthusiasm I've felt before (this blog post will help as a memory jogger) plus sheer willpower to get me started, even if I don't feel like it.
  3. Let my enthusiasm take me where it takes me in the afternoon.
  4. Do this frequently enough that it's not all backed up inside me somewhere, so just a bit comes out at a time in a controlled manner, rather than big multi-day sleepless orgy of creativity.

Wish me luck!

Radio Waves (by )

I really love learning things, and recently I've finally been removing a long-standing thorn in my side - the fact that I don't really understand radio frequency electronics and the propagation of radio waves.

I've tried to fix this a few times in the past, but the resources I'd read never seemed to quite explain the whole picture - and I couldn't see how to piece the things they explained together into one coherent understanding of the electromagnetic world; they were clearly only shedding light on little corners of a totality that still remained mysterious to me.

Well, there are still gaps in my understanding... but I've made some progress, and in the hope that I can help others struggling with the same confusions as I was, I'd like to share my way of understanding it all.

One thing that bothered me was that explanations of transmission-line behaviour seemed to flip between talking about instantaneous voltages and currents at some point in the line, sampling the analogue signal traveling down the line - or talking about an RMS average voltage or current, and thereby causing me to struggle to make sense of what they were saying. But I think I now get transmission lines to some extent (although I'm still hazy on wave guides, because I've not gotten around to looking into them yet). And I was never quite sure what the impedance of a whole transmission line really meant, regardless of its length. If I had a transmission line and put a resistor over the end of it, and hooked it up to a battery and an ammeter, I knew that the current flowing would depend on the total resistance of the line and the resistor at the end - which would depend on the length of the line, as its resistance would be in ohms per meter. So what the heck was this impedance thing about? How did impedance mismatches cause reflections?

So, here's how I think about transmission lines now. The "DC model" of hooking a battery up to one end of a line and reading the current that flows into it is, of course, perfectly true - we can set the circuit up and test it; the reason it doesn't contradict with this weird parallel world of impedances is that the DC model is a steady state model of the system. When you first connect that battery to the line, current is going to start flowing into it, crawling along at a sizeable fraction of the speed of light; but until that current has reached the end, flowed through the terminating resistor, and flowed all the way back, it can't possibly have communicated any information about the total resistance of the line and its terminating resistor... So how much current initially flows from the battery, and why? Of course, the line can be thought of as two series of tiny inductors (with resistors in series, if we assume the inductors are perfect) with tiny capacitors connecting the two conductors, due to the inherent inductance of the wire and the inherent capacitance of the gap between them; you can imagine that the current from the battery has to charge the capacitors through the inductors for the voltage/current surge to propagate down the line. But what made "impedance" really click for me was going back to the basics of Ohm's Law and seeing it as a ratio of voltage to current. At any point along that transmission line, a certain instantaneous current will be flowing - and there will be a certain instantaneous voltage between the two conductors at that point; and the voltage divided by the current is the impedance.

So, if a 12 volt voltage source is connected suddenly to a 50 ohm impedance cable, an instantaneous current of 0.24 amps (12̣̣̣̣÷50) will flow. Now, as Kirchoff's current law tells us, the currents flowing into a node must sum to zero; so with the imaginary node at any point on the transmission line connecting two halves of it, the input current must equal the output current (although some current may be lost to resistive heating or leakage, that's not relevant in this case). So what happens when there's a change in impedance at some point in the transmission line? The current must remain the same, but the impedance changes - so the voltage must change, to make Ohm's Law still hold. If my 50 ohm cable is connected to a 75 ohm cable, that 0.24 amps flows into it and changes into a voltage of 18 volts (0.24×75). Which is why high impedance transmission lines are less lossy; a transmitter putting a watt of power down such a line (with proper impedance matching) will push out a higher voltage with less current that one putting a watt of power into a low impedance line - and resistive losses in the cable are worse for higher currents.

How about the reflections when impedance changes? I'm still a little hazy on this, but I think it's something along the lines of this: imagine a point just where the impedance changes in our example of moving from a 50 ohm cable to a 75 ohm one. A current is flowing into that point, but the voltage is higher after that point than before - which is going to create a current traveling back the other way. Where I'm hazy on is how this happens at junctions where the impedance falls (is it to do with the fact that the current flows alternately backwards and forwards, so the junction is traversed by current in both directions anyway, and the phases where the current travels from low to high impedance are what create the reflections? If so, isn't that a kind of rectifying action, that will create harmonics and intermodulation? But what is the "direction" of a signal traveling along a line, anyway? If we froze the signal in time, we'd just see a sine wave of voltage and a sine wave of current along the transmission line - if we restart time, how does it "know" what direction to propagate in? Something to do with the relative phase of the voltage and current waves?) So, yeah, I've a little more to learn there.

But this model of impedance does explain a lot. I wondered why the angles of the radials of a ground-plane monopole antenna affected impedance, but now it makes sense - the end of the transmission line basically spreads out to become a dipole, or a monopole and its ground plane; the electrical field of the traveling signal has to cross a larger region of space, so it makes sense that the voltage required to do so might vary depending on the amount of space crossed. All the mysterious constants, like the fact that a dipole trimmed to 0.48 times the wavelength has an impedance of 70 ohms are really down to the electromagnetic stretchiness of space: the impedance is the voltage required to push one amp along a transmission line (a dipole antenna just being an oddly-shaped transmission line, handing the signal over to the even weirder transmission line that is free space itself), and that is a function of the permittivity and permeability of that space.

This model also explains how impedance matching transformers work. A 1:2 turn ratio transformer will transform X volts and Y amps on the "left" into 2*X volts and Y/2 amps on the "right"; as the impedance is V/I, that means it converts R ohms on the left into R*4 ohms on the right, simply through changing the voltages and currents. A 1:N turn ratio transformer makes a 1:N^2 change in impedance.

Antennas with multiple elements are confusing, but I'm not sure anybody really understands them - as far as I can tell, the design process is almost always to mock it up in a finite-element computer simulation or build a prototype and tweak the design until the desired parameters are obtained experimentally; the mutual interactions between the elements (not to mention ground, support structures, and the transmission line feeding the antenna) are just too complicated to analyse.

I really don't get why there's a near field and a far field (or that funny one in between that, I think, is just a mixture of the two). Does the antenna both far and near fields at once, and the near field is stronger but doesn't spread out far, so the far field is negligible when close to the antenna? Or does the antenna create a near fields, which "decays into" the far field as it spreads out? Nothing I've found seems to explain.

I'm not very clear on why a balanced transmission line that's shorted at one end and open at the other end has varying impedance along its length, and can be used for impedance matching, but it doesn't create reflections from the ends.

But, I can understand how to run a cable to a dipole or monopole antenna, manage the impedance transitions, and make it radiate efficiently. That's progress!

Alien (by )

It'd certainly be fair to call me a noncomformist; I'm hardly a slave to fashions, and my hobbies tend to revolve around meddling with the fundamental forces that bind the Universe together, science fiction, old technical books, and learning self-defence.

But... this isn't exactly a role I've chosen for myself. I haven't gone to some effort to step off the beaten track; I've not rejected the mainstream as an act of rebellion. The truth is, I've never really felt a part of the human race.

Why should being different be a problem, though? I love talking to people who are different to me - and I couldn't do that unless I was different from them. The diversity of human experience fascinates me; I love seeing how people's lives differ from mine. Monocultures are harmful and fragile: our diversity is a great strength.

Of course, for many, being different is hell because they experience explicit discrimination for it. LGBT folks, immigrants, minority ethnic groups are all explicitly targetted for their difference, by people who think that their being different makes them a threat. But I'm lucky; I've had very little of that in my life. At school I had some unwelcome attention from the bullies for being bookish and shy rather than sporty, but I'm pretty sure those folks were just looking for levers to mess with people rather than actually taking some kind of moral high ground over me; and I didn't have all that much trouble with them, as I didn't react much so they went after more interesting targets.

For me, the problem is more subtle: my experience is mainly of feeling left out, unwanted, or forgotten.

I was born with one functioning eye, so "3D" films and magic-eye pictures were always things for normal people; and PE teachers at school never seemed to understand that I really had a problem with depth perception, and assumed that my pitiful performance at anything resembling catching a ball was me mucking around. I was given an unusual name, so those things in shops with keyrings/pens/mugs with a selection of common names on never had anything for me. I was raised vegetarian, so I always had to check if I could actually eat food I was given, and went hungry at my primary school's leaver's barbecue. I was the only child of an unemployed single parent, so normal family dynamics never applied, and I never had the expensive toys the other kids at school had. I learnt to read before I started school and read through books insatiably, so my experience of education was very different to that of the other children in my class; I can hardly complain about the fact that I found school and exams easy, but it meant I couldn't really relate to my friends' difficulties. We ate food we grew on our own allotment, and didn't have a car. For whatever reason, I've never liked hot drinks. Spectator sports hold little joy for me. I find pubs and parties distressing. The only mass media that featured people like me was the harder end of science fiction, so I was used to most stuff on the TV (and what the other kids raved about, in particular) as reinforcing the idea that "normal people aren't like me". I can certainly relate to the calls for better representation of different groups in mass media today!

I become irrationally touchy about any situation where somebody assumed that something which applied to most people would apply to all people: People describing bacon and coffee as delicious as if this was some objective truth, rather than just the fact that they find them delicious. Employers thinking that expensive coffee and free beer are a good way to reward the team. Each of these things is tiny in itself, not really worth making a fuss over, but the accumulated weight of them all became hard to bear. This makes me feel angry: I remember a dream I had when I was about ten years old. In this dream, there was a special event at school; the teachers had organised everyone into groups of three, each of which had a kit to assemble, but they'd forgotten about me when drawing the groups up. So I was sat with a couple of other kids who'd been explicitly excluded from the activity for being troublemakers, and we were given some leftovers from everyone else's kits to "just mess around with". I was furious - so recruited the two troublemakers into a plan: with the leftover parts we had, we built a high-powered catapult and, when everyone else had finished their kits, we opened fired and smashed them all. I woke from the dream seething with fury, almost in tears.

But I can't simply blame others for my situation; I am certainly complicit in my own invisibility. When somebody assumes something about me, I feel embarrassed about being different, and I freeze; the opportunity to interject passes, and I seem to have implicitly agreed to whatever it is. It's only when I look back and realise: that was the point where I could have gently avoided whatever catastrophe it turned into. For instance, a few years ago, some friends came to visit our house for New Year's Eve. This was great at first, but then one of them proudly produced a bottle of some strong spirit from their bag, and the others were pleased about this. I, however, wasn't; it made my stomach churn with fear, but my initial thoughts were just "Oh no, this is bad". I held on as long as I could, but they started showing signs of inebriation, then talking about their symptoms of inebriation, and after a few hours I couldn't cope any more and made excuses to go and hide away on my own elsewhere in the house, only reappearing when my help was needed with something. I was furious that I had been made to feel like this in my own house; some reptilian-hindbrain part of me was feeling like my home had been invaded; I was riding the stressful emotional rollercoaster of bitter fantasies of storming downstairs and kicking them out of my home (into the cold streets of an unfamiliar city at night when they'd be legally unable to drive themselves the 50-odd miles home), while rationally knowing I could do no such thing; history would certainly record me as the Bad Guy if I did that.

But what I should have done was say something at the beginning. My instinct was to freeze and think "Oh crap", and then enter into the vicious spiral of feeling bad, hiding my emotions, and then feeling worse because nobody's responding to how I feel.

EDIT 2019-07-31: Added this paragraph after a recent revelation about myself:

I'm never sure if I'm entitled to complain if other people do things that most people would be fine with but I am not. There's an unwritten (and constantly changing) social contract about what things are OK to say/do to random others and which aren't; and it's based on a kind of assumption of what "most people" would find acceptable. In the past, jokes about rape were funny; but as it's become apparent that sexual abuse is more commonplace than was thought, and that a rather large proportion of the human race will find jokes about rape upsetting rather than funny, they have become taboo. Lots of things people say and do cause me distress (even if they're not saying/doing them to me, but I just overhear or witness); I'm used to it being my problem, not theirs, and it's usually only in hindsight that I realise that something somebody has done was actually violating the usual social contract, and by then, I feel I've implicitly accepted their behaviour by not rejecting it immediately. That, combined with never being quite sure if it really was a breach of the normal social norms or just me being sensitive, makes it hard to speak up. So I rarely go back over such things.

I don't feel comfortable with drawing attention to my different-ness, anyway, particularly when it's something that's bad about me; but a big factor in my tendency to hide my pain was a nasty episode at a place I worked many years ago. I worked part-time while I was at University; I had been struggling with the alcohol culture amongst my university peers, so I had as little to do with university as possible, just turning up for the bare minimum of lectures, and focussing my attention on my workplace; it became a safe refuge for me. But the little software consultancy I worked for was growing, and started to hire non-technical people for roles such as HR and sales; and with those people came a drinking culture that quickly spread to dominate the company's social fabric, and became a significant topic of conversation during the days. I went to my boss and explained that the recent shift towards all company-organised social and celebratory functions being held in bars with drinks on the company was becoming a problem for me, and he asked the person who had been tasked with organising all that stuff (the new sales guy) to change it; but he took exception to that, did everything he could to work around the spirit of the restriction while staying just inside the letter of the ruling, pointedly rubbed my face in this, and privately told me that I had no right to dictate how other people lived their lives. Ever since then, I've tended to just grit my teeth and bear it, but I think the result of this has just been that I'm slowly filling up with resentment. I need to be a bit more open about my mental health issues (hence starting to blog about it), but I must also be careful about who I hand that power over me to. In hindsight, I have come to realise that a large fraction of people are alcoholics, probably without even realising; they will react, with aggressive defensiveness, to anything that might call their use of alcohol into question.

I don't think complaining to other people is necessarily the solution, anyway. Spending all my time suggesting that people offer nice smoothies as well as coffee as a reward for something because not everybody likes coffee gets tiring, and I don't want to be That Guy who complicates everything for everybody. I know I'm a minority, and I think there should be some kind of trade-off between the current situation and some hypothetical world where every decision has to take into account every possible weird edge case; I think I wouldn't mind being left out if I didn't feel like people were making assumptions. "We could only afford the time/money to organise one thing so we got coffee as most people like it, please give us suggestions for other stuff you might like in future" is fantastic. "We got a reward budget and we spent it all on coffee, isn't that fantastic?" isn't. But explaining that distinction to busy people every time this comes up would be rather tiring. What energy we have for changing the world needs to be focussed on fighting more pressing problems, like sexism, hompohobia, transphobia and xenophobia, or better disabled access; these are things that affect large groups of people, so effort spent there will have a greater improvement on the average quality of human life than worrying about weird edge cases such as myself.

Instead, I think we need to just broaden our minds in general. People like to make assumptions about other people. If we learn to stop doing that, then things will be a bit better for everyone who's a little bit different. I don't mind being weird in itself - life would be pretty boring if everyone was the same. It's just people making assumptions that hurts!

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales