Last week I changed the tariff on my phone to better suit my usage. However, it turns out that by changing the tariff I also needed to change some settings on my phone. So, when the old tariff cut out, so did my 3G connectivity and I lost internet on my phone for a couple of days until a friend of a friend who happens to work for O2 explained what I needed to do to get it to work. Up until then, since I had made no modifications to my phone, I had be blaming O2’s network infrastructure.
Here is a summary of the tweets I made about it:
- 4/March:
- Don't have a data network available. Most irritating @o2. Where's my 3G network?
- Still no data network. @o2 what are you doing. All the way from Glasgow to Edinburgh an no data network.
- Made it all the way back to glasgow. Still no data network. @o2 get your shit together!
- Woohoo! I have data back on my iPhone. But then I'm now at home connected to my wifi network. @o2 thanks for nothing!
- 5/March:
- Still no data network. @o2 you #FAIL big time! I'm moving to orange when I get a chance.
- @kstenson No data network in Glasgow, in Edinburgh or points in between. Phone signal only. @o2 #FAIL
- Got a data network back! One of @chriscanal's friends works for @o2 and fixed it for me
- Turns out because I changed my tariff my connections settings also changed. But no one told me that!
O2 could have saved themselves a lot of frustration from me if their store employee had been told that the tariff also required a change in phone settings.
[NOTE: This post was created using OpenRasta 2.0 RC (rev 429)]
One service I’ve found to be increasingly useful is Exceptioneer by Pixel Programming. As I’m about to start a new project using OpenRasta I wanted to be able to use Exceptioneer with it in order that I can log any exceptions effectively.
For a basic 404 error it was very easy. Just following the instructions on the Exceptioneer site for the ASP.NET integration worked a treat.
However, a little more work was required for when something like a Handler in OpenRasta threw an exception that didn’t get caught. In this case I had to set up an OperationInterceptor in order to catch the exception and send it to Exceptioneer.
Here is the ExceptionInterceptor class:
class ExceptionInterceptor : OperationInterceptor
{
readonly IDependencyResolver resolver;
public ExceptionInterceptor(IDependencyResolver resolver)
{
this.resolver = resolver;
}
public override Func<IEnumerable<OutputMember>> RewriteOperation
(Func<IEnumerable<OutputMember>> operationBuilder)
{
return () =>
{
IEnumerable<OutputMember> result = null;
try
{
result = operationBuilder();
}
catch (Exception ex)
{
Client exceptioneerClient = new Client();
exceptioneerClient.CurrentException = ex;
exceptioneerClient.Submit();
throw;
}
return result;
};
}
}
Note that you have to include using Exceptioneer.WebClient; at the top of the file.
What this gives us is the ability to log any exception that is left uncaught from the Handler, log it then allow OpenRasta to continue on as it would have normally.
All that remains is to wire this up. In the Configuration class (if you’ve used the Visual Studio 2008 project template, or what ever your IConfigurationSource class is called otherwise) the following is added to the Configure method:
ResourceSpace.Uses.CustomDependency<IOperationInterceptor,
ExceptionInterceptor>(DependencyLifetime.Transient);
Now any time a handler has an uncaught exception, it will be logged and sent off to Exceptioneer.
Further reading:
Don’t allow duplicate input fields into your form.
The other day I was trying to debug a bug in an application that I maintain. The code created a set of pagination buttons at the top of the page with previous and next buttons. At some point a request had come in that the buttons needed to be replicated at the bottom of the page. Since the HTML was being built up in a string and dumped in a literal control in the first place the developer that was tasked with making the change just dumped the string into two literal controls, the original at the top of the page, and the new one at the bottom of the page. The previous and next buttons use hidden input field to tell the application which actual page number the buttons correspond to. And these were now duplicated and as a result the previous and next buttons ceased to work.
Here is an example of something similar:
<input id="first-hidden-field" value="123" type="hidden" name="some-name" />
<input id="submit-button" value="Submit" type="submit" />
<input id="second-hidden-field" value="456" type="hidden" name="some-name" />
When the form fields are returned to the application and the field “some-name” is queried the result back is a combination of the two fields with the duplicate name. In this case:
string someName = Request.Form["some-name"];
will result in the value of “123,456” being stored in the string. Basically, it is the comma separated form of all the input fields with the given name.
I don’t usually put personal stuff on my blog, but I have a feeling that this year there are going to be a few posts like this. My blog has always been mostly an aide memoire for me but at the same time I realise that if it helps anyone then all the better. While writing this has been a useful exercise for me, I hope more than anything that it helps others.
Yesterday a good friend of mine, Ben Nunney, posted on his blog and article entitled “Luck, Love and Dinner”. While I did post a brief reply to the blog post at the time I felt that a longer response was in order.
Ben ended his post with “I’ve talked to a lot of people … who have only recently begun to accept themselves for who they are, or who have only just started to realize that the days aren’t looking as dark as they did for Britten, Wilde and Turing.”
As someone who hid in the closet until the age of 35 I am guessing I’m one of the people he was talking about in that final paragraph. So, let me tell you my coming out story and how I got to being 35 and only just coming out.
Coming Out

In March 2009 I was in London for a conference and a friend invited me along to the pub one evening and brought a couple of other friends with him. It was there that I met Seb for the first time. He was just very open about himself and his sexuality. I’d never met anyone like that before. It was Seb’s openness that allowed me to start breaking down the mental barriers in my head and I began the acceptance process.
It was mid-May that I realised I’d finally begun to accept myself. Then sometime around late late July I realised that I had stopped snacking and as a result I had begun to lose weight. I’ve always eaten comfort foods when stressed and it became obvious that hiding from myself had been causing a lot of stress.
In August I was once again in London for a conference and I met Phil (another gay friend) and Seb again. It was at that point that I decided that I should tell them and ask for advice. Unfortunately, I didn’t really find an opportune moment that weekend.
In September I was down in Manchester for a mini-conference. In the pub after the conference I asked Seb if he could spare some time to talk to me in private that evening. So, it was at about 2AM after returning to the hotel that I finally took my first steps out of the closet.
From my point of view I felt incredibly stupid. All that I had read on the internet prior to that talked about people coming out in their teens or early twenties. So it seemed to me that I was very slow. Seb was able to put me at my ease by letting me know of people he knew that had come out much later in their life than I had.
I also sought advice on what to do next. I had taken the first steps but I didn’t really know what to do next. I didn’t want to hide any more, that much I knew.
I put together a list of the people I was closest to, the people I wanted to tell personally rather than have them find out second hand. Over the following two weeks I contacted all of them. Each conversation started with me kind of stumbling around trying to find the right set of words to use. I was anxious in case I found out any of my friends were less than tolerant and this might be the conversation that could end that friendship.
I have to say that as I got through the list and I received positive reactions from my friends it gave me a new confidence that I’d never felt before. It wasn’t just tolerance, it was acceptance. I now feel closer to all those friends. At the same time, it also made me feel silly that I hadn’t done this long before.
Within about 10 days I’d personally told all my closest friends. All that was left was my parents.
I had in fact made one attempt to tell them but bottled it at the last minute. The following weekend I made a second attempt, but as I stumbled around trying to get the conversation going I bottled it again so I simply went home again. However, on the way out of my parents house I asked if I could speak to my mum sometime in the next few days.
So one evening after work I drove round to my parents house and spoke with just my mum. I figured it would be easier with just one person. Naturally, I was extremely anxious. As usual, I stumbled around a little before simply blurting out “I’m gay!”
At that point there was a pause as I looked at my mum’s blank expression for any signs of which way the conversation was about to turn. For me it seemed like an eternity. In fact I can’t have been any more than about a second or so. She then cheered up and responded “Oh, thank goodness for that. I thought something was wrong!”
How did I get here?
So, now you know the details of my coming out let me go back and tell you how I got to being 34 by the time I finally accepted my sexuality and 35 by the time I finally exited the closet.
Back when I was at school and I had the first inclining that I was attracted to men I obviously wasn’t sure what to do. I felt that there was no one to speak to. While I was trying to figure out if this was a permanent feeling or just a phase another kid in my class was outed.
It wasn’t pleasant. And quite frankly I didn’t want to go through that so I hid. I buried my feelings as deeply as I could. Effectively I hid from myself. From that point, every time I heard a homophobic comment it just got piled in on top burying those feelings even deeper.
Perhaps if there was something like Stonewall’s FIT campaign that might not have happened. Perhaps if many things were different I would have come to acceptance sooner. It is now all water under the bridge and there is little point dwelling on it because what is done is done and cannot be undone.

Moving On
Now, this post is entitled “Exploding out of the Closet”. And you might be forgiven for wondering why at this stage.
When I spoke to Seb on the day of my coming out, he told me that he thought I was a bit of a closed person. He always had the impression that I wasn’t very open about myself. After that conversation I decided that this was something that had to change. Since I’d realised that it was something that had caused me to build up a whole heap of stress I decided that I needed to be more open, not just with others but with myself too. As I mentioned above, I already knew I didn’t want to hide any more so being more open definitely be something that would compliment that.
While I never made any grand announcement on twitter (at least, that was my intention) I just just joked with the friends that already knew. My sense of humour has always included a fair bit of innuendo [^] so I expected that people would pick up soon enough.
I also attended my first Gay Geek Dinner in November followed by a tour of some of Soho’s gay bars and clubs. While there I tweeted my experience and uploaded some photos onto Facebook and Flickr. After that, I had assumed that everyone must have realised given this volume of information. Phil even commented later that I had “exploded out of the closet” (Hence the title of the post)
Incidentally, I did eventually make that grand announcement because the innuendo confused a number of people so I had to clear that up [^]. And of course, I guess this blog post acts as a grand announcement too. So, I guess I’m now well and truly out!
If you have Spotify: I’m Coming Out – Diana Ross.
Update
I received some comments also on Twitter about this blog post in addition to the comments below. Here are the twitter comments: