jump to navigation

“Shall we?” “Let’s.” 2010 August 11 8:57

Posted by diamond in : Health, Random , 8 comments

On saturday 2010-07-31, at the security gate in zurich airport around 05:40, Noirin and i broke up. We were supposed to be boarding a flight to Sweden, to attend Herräng swing dance camp. Noirin went through, i went home.

This is an attempt to describe why, what happened, what went wrong, how could it go this badly. This is an attempt to understand. This is for the close friends and family members who had no idea (esp. for my brother, and younger sister). This is for me when i try to remember how things were.

Before we got married, many people told us that the first year is like an extended honeymoon period, everything is fantastic. That the second year is when reality would start to kick in. This was so far off truth as to seem like a sick joke in retrospect. The first year was Hard. The second year was Really Hard. The third year broke us. Nov 2010 will be the third anniversary of our wedding.

Two big things contributed to this, plus a multitude of smaller things. I’m going to try and outline the two major factors, as i currently see them.

Memory
I am a man who has made 1000 promises, remembered 5, kept 3. When i tell people i have a really really bad memory, they almost always say “Oh, me too!”. They ask for examples, i can rarely remember any, so they assume i’m exaggerating. They also tell me it can’t be as bad as i say if i’m able to hold down a job. Life, as usual, just isn’t that simple.

My memory is the single biggest factor in our relationship breakdown. Every day, i tell Noirin i’ll do X,Y,Z, i won’t do Q,R,S, my opinions on subjects L,M,O. And every day, i’ll have zero, zero idea that i’ve said i’d do things we talked about only yesterday; i’ll do things i promised i wouldn’t do; i’ll have a completely new opinion on various subjects, having no idea that i had a different opinion on the subject only a few hours ago. Sometimes i realise later that i’d changed my opinion. Most of the time, i don’t.

Every day i’ll watch Noirin look crestfallen time and time again as i’ve failed to live up to my word. And i’ll have no clue what i’ve done or not done. And after this happens for the hundredth time, she just can’t muster the energy to explain again. What’s the point? I haven’t remembered the last 100 times she told me how she feels about something. I’m hardly about to remember it this time.

We talk, she gives me information that changes my opinion on something. The next time we talk, i’ve reverted to my original opinion, oblivious to the reasons i changed my opinion previously, oblivious even to the fact that i did change my opinion. It’s not fair on her. Not even close.

From my side, i live in a relationship of arbitrary rules. It’s *incredibly* frustrating. But i can’t expect Noirin to endlessly explain herself. It’s not fair on me. Not even close.

Doctors haven’t been able to tell me why i have memory issues. I haven’t slept properly in somewhere between 7 and 9 years. But it’s not clear that that’s the issue. I’ve had blood tests, thyroid exams, MRI’s. Nothing. Maybe it’s all psychological. Even so, i’m not aware of it, i can’t just flick a switch.

I’ve tried lists, i’ve tried harder, i’ve tried leaving myself reminders. I forget to look at the lists. I forget what the reminders are about. I feel stressed all the time, from the moment i wake up, to the moment i fall asleep. Constantly stressing about all the stuff i’m forgetting. And it makes it worse. But how do you stop caring, when you see how much damage it’s doing to your relationship?

From the other side, how can you trust someone who is utterly unreliable? You can’t. You try again and again, giving them chance after chance. And they almost always let you down. How can you stay in a relationship where you cannot name a single area you can trust your partner in? Noirin ended up taking care of all the finances, all the health and other insurances (and my health insurance dealings are extensive). All of the planning. All of the responsibility.

How can i cope with work? I don’t know. The fact that it’s a structured environment means i can always read the docs, or ask someone, when i don’t remember something. But i don’t know.

I remember some stuff. It’s not amnesia. And this makes it harder. If someone never remembers anything, that’s tough, really tough to deal with. But at least it’s consistent. Someone who *mostly* doesn’t remember stuff, but does sometimes; that just comes across as not caring. Not giving a damn. It doesn’t matter how much they explain how they can’t help it. It doesn’t matter how much you tell yourself they don’t mean it. Eventually the evidence you see repeatedly is too much. Too hurtful.

Priorities
How do you define love? One of the definitions is putting the needs and wishes of your loved ones above your own needs and wishes. This led me to the following priority list:

  1. Noirin
  2. The relationship
  3. Myself

The logic for the ordering of 1. vs 2. is simple; if Noirin isn’t doing well, the relationship can’t be doing well. Unfortunately, i never applied the same logic to 2. vs 3. until it was too late. Far too late.

How does this screw things up? I censored my emotions and opinions for the sake of the relationship. A simple example. Noirin likes cooking. When she cooks, she usually wants my company, so i sit in the kitchen while she cooks. I find this really tedious, and hence frustrating. But i would squash those feelings, would not allow myself to feel them. I would sit there, because i thought it was the loving thing to do.

It turns out, if you censor your emotions for a long enough time, you stop having any. You forget how to feel. You’re numb inside. You rarely feel anything, and when you do, you feel guilty about it. But over time, your subconscious gets filled to overflowing with frustration and resentment. And this shows through the numbness, through everything you do to be nice.

Noirin loves me, i tell Noirin that i love her, but it’s a purely rational gesture, it’s never heartfelt, it can never have emotion behind it. I talk based on commitment, not connection. It comes across as cold. And the emotions i do feel are destructive, negative, so i stop talking about them. Noirin can sense them anyway, and it hurts her.

I’m depressed, have been for years. I never realised. I saw a psychiatrist here for 6 months because of how badly the relationship was going. He said “well you’re clearly not depressed”. We went together to another psych for one session. He said “well you’re clearly chronically depressed”. Colour me confused. But the next tuesday, i was in work when i realised two things:

  1. I’d spent most of monday and tuesday wanting to go home to bed, curl up into a little ball and cry.
  2. This was normal for me.

So yeah, the second psych was absolutely right. I see him regularly now. I’m on 3 different antidepressants. I’m on the road to recovery. I’ve realised that i’ve been censoring emotion, and that’s what’s making me so angry inside. But these things take time to fix. A long time. And time is not infinite. Living with a depressed person is incredibly draining. And eventually it got to be too much.

Where does that leave us?
How Noirin lasted so long, i’ll never understand. She’s amazing. Towards the end, we finally got to the point where we understood each other, what we were both going through. The breakup was gentle. Noirin couldn’t go on any longer, i couldn’t ask her to sacrifice herself any more for the sake of the relationship that was so destructive for both of us. Living on the edge for so long has torn us both up, and Noirin has had a rougher time than me (partially because i simply don’t remember so much). If she’s at breaking point, and she is a higher priority than the relationship, then it’s over. It’s as simple as that.

I waited till the following thursday before i told my parents. I was hoping against all probability that something might happen, something might change, that Noirin would change her mind. Then i realised that this wasn’t fair on Noirin. Putting all the responsibility on her, yet again.

On friday, i realised something more. I couldn’t go back either. If Noirin returned on sunday and told me she wanted to try one more time, i’d have to tell her no. I need time to figure out how to be myself again. I need time to work through this depression. And i can’t do it inside a relationship. The stresses of trying to live up to a role i just can’t cope with is a big part of the problem that’s brought me to this point.

We’re still friends, we still talk to each other. It’s as amicable as it can be under the circumstances. The title of this blog post is from a comedy sketch we saw on our last cruise. The comedian was painting the picture of middle-aged couples separating with utmost civility and mutual understanding. It amused us greatly at the time, i look back on it as bitter-sweet.

I hope that in the future, where we’re both doing much much better, it’s possible we might get back together. But i can’t live my life centered around that hope. I spent the last 6 months of this relationship hoping things would get better, and it’s killed me. “Hope deferred makes the heart sick”. In the meantime, we’re working on being friends. And if we get that figured out, maybe we can work on being more than friends. But that’s a long way down the road.

***Update***
Noirin has just posted her own take on the situation.

mounting usb drives at boot using udev on debian 2010 March 27 11:31

Posted by diamond in : Tech , 2 comments

I have an external 1.5TB usb hard disk that i use for backups. If i add it to /etc/fstab as normal, it will fail to mount on boot, as the usb subsystem won’t be initialized that early. This is unsatisfactory. So, here’s what i did to fix this.

  1. I added the drive to /etc/fstab with this line:/dev/disk/by-label/bmopbackup1 /mnt/backup ext3 defaults,noauto 0 0
    Note the noauto option (don’t mount this drive on boot), and the fsck pass number set to zero (don’t check this filesystem for errors on boot). As you can see, i labelled the external hard drive as bmopbackup1, using e2label. It just makes it a little easier to work with.
  2. Next, i needed to check how udev can recognise my drive:
    # udevadm info -q env -n /dev/disk/by-label/bmopbackup1
    ID_VENDOR=WD
    ID_MODEL=15EADS_External
    ID_REVISION=1.75
    ID_SERIAL=WD_15EADS_External_57442D574341565530323131333934-0:0
    ID_SERIAL_SHORT=57442D574341565530323131333934
    ID_TYPE=disk
    ID_INSTANCE=0:0
    ID_BUS=usb
    ID_PATH=pci-0000:00:10.4-usb-0:4:1.0-scsi-0:0:0:0
    ID_FS_USAGE=filesystem
    ID_FS_TYPE=ext3
    ID_FS_VERSION=1.0
    ID_FS_UUID=d519f829-eef8-4651-9a21-70a0552ad933
    ID_FS_UUID_ENC=d519f829-eef8-4651-9a21-70a0552ad933
    ID_FS_LABEL=bmopbackup1
    ID_FS_LABEL_ENC=bmopbackup1
    ID_FS_LABEL_SAFE=bmopbackup1

    As you can see, udev sets ID_FS_LABEL to bmopbackup1, so i can use that to uniquely identify the device to udev. If you don’t have a label on the drive, you could just as easily use ID_FS_UUID.
  3. So, here’s the magic part. I created a udev rules file /etc/udev/rules.d/99-bmopbackup.rules with the following line:
    SUBSYSTEMS=="block", ENV{ID_FS_LABEL}=="bmopbackup1", RUN+="/etc/scripts/bmopbackup-connected"
    This tells udev that when it sees a block device with the filesystem label bmopbackup1, run the specified script.
  4. And finally, I created the /etc/scripts/bmopbackup-connected script:
    #!/bin/bash
    {
    date
    fsck -aC /dev/disk/by-label/bmopbackup1
    ret=$?
    date
    if [ $ret -eq 0 ]; then
    echo "Fsck succeeded, mounting"
    mount /dev/disk/by-label/bmopbackup1
    else
    echo "Fsck failed, not mounting"
    fi
    } &> "/tmp/$(basename "$0").log" &

    If i didn’t want to run fsck on the drive, i could just tell udev to run mount /mnt/backup directly. However, given that this drive is used for backups, i definitely want the drive checked every boot (if i was really paranoid, i’d add the -f to fsck, to force it to run a full filesystem check if it’s marked clean).
  5. If you try something similar to the above and it doesn’t seem to be working, a useful check is to see what udev thinks it should run when a given device is connected:
    # udevadm test /sys/block/sdb/sdb1
    This program is for debugging only, it does not run any program,
    specified by a RUN key. It may show incorrect results, because
    some values may be different, or not available at a simulation run.
    ...
    udevtest: run: '/etc/scripts/bmopbackup-connected'

    To run this test, you have to supply the sysfs path to where your device is currently connected. /dev/disk/by-label/bmopbackup1 is a symlink to /dev/sdb1, so /sys/block/sdb/sdb1 is the equivalent sysfs path.

Protected: So here goes 2009 October 25 13:53

Posted by diamond in : Uncategorized , Enter your password to view comments

This post is password protected. To view it please enter your password below:


diamond out for maintenance starting friday 2009 October 20 12:53

Posted by diamond in : Uncategorized , 4 comments

The doctors have finally come up with a service patch to work out all
of the remaining bugs and issues that people have with diamond 1.0.
This patch will be applied starting friday and continuing on
sunday/monday. Service may be interrupted for a few days following
monday, it’s not yet clear how smoothly the reboot will go, so diamond
2.0 may be offline completely for a while, intermittently available
remotely, or fully available. It is hoped that this new service patch
will fix the ongoing longtime issues with suspend, and hence greatly
improve service quality, poor battery life, memory fragmentation, and
cpu throttling issues.

Postfix & catchall domains with exceptions 2009 May 4 19:22

Posted by diamond in : Random , add a comment

So, you have a domain (we’ll use catch.example as a, uh, example). You’d like most addresses at that domain (foo@catch.example, bar@catch.example, and so on) to get send to your actual email account (bob@real.example). However, you’d also like to be able to selectively drop mail to certain addresses (bad@catch.example and unwanted@catch.example). Finally, you’d like to do this using postfix. Well, here’s how.

  1. Setup postfix to handle mail for catch.example (Note: getting mail for catch.example to be delivered to your server in the first place is beyond the scope of this) by adding these lines to /etc/postfix/main.cf:
    # Aliases for virtually hosted domains
    virtual_alias_domains = catch.example
    virtual_alias_maps = hash:/etc/postfix/virtual.aliases
  2. Create /etc/postfix/virtual.aliases mapping file that tells postfix what to do with mails for the catch.example domain with these contents:
    @catch.example bob@real.example
    bad@catch.example null
    unwanted@catch.example null

    Note: there should be no : between the two entries on each line, this is not the /etc/aliases file format.
  3. Add a null alias to your /etc/aliases file:
    null: /dev/null
  4. Update the mapping and alias database files, and reload postfix’s configuration:
    postmap /etc/postfix/virtual.aliases
    postalias /etc/aliases
    postfix reload

And that’s it. Any mail to catch.example that’s not to one of the specified unwanted email addresses will be forwarded to your real email account, and the rest will be silently dropped. Voila.

***Update***
Actually, i’ve just noticed that if you want more control over what happens to the exceptions, you can use check_recipient_access, which allows you to specify desired actions such as accept, reject, discard etc. That said, i’d be a lot more wary about using check_recipient_access as its extra power includes more own-foot-removal capabilities.