Category Archives: life

Yesterday Was Change Everything Day

Advance warning: This blog post is a bit rambly and pointless. It’s pretty much “Hey, here’s some stuff I changed about my computer” brain dump. You probably don’t care.

Yesterday I made massive invasive changes to the software I’m running as part of my day to day life.

What triggered it? Well, the initial triggering event was something I’m sure you’ve heard about by now: Google reader shutting down.

An appreciable proportion of the information I consume comes through RSS (or Atom), so shutting down google reader is kinda a big deal for me, so I spent some time playing with replacements. I’m currently trying Feedly, although the Android app is so bad I’m not sure I can stick with it.

This put me in the mood to start tinkering with my setup though (a mood which hits me about annually, and then I lose interest for another year, though in this case it’s only been six months).

So I was kinda in the mood to change my software around, and I was feeling fairly hacked off with Google and uncomfortable with how much of my life lived in their software.

Including my browser. Fortunately, there’s this quite nice alternative to Gogle Chrome. It’s a bit niche, but you may have heard of it. It’s called Firefox. Check it out. It’s not bad.

Actually, you know, it’s really not bad. It’s only been a day or so of using it, but honestly it’s dramatically better than I expected. I’ve not had any problems with it so far and it’s generally been a fairly pleasant experience. Previously when I’ve tried to switch back I had all the expected problems – slow, memory hungry, blah blah blah, but this is easily the equal of Chrome and hasn’t caused me any problems so far.

Discussions around this and google reader caused me to resurrect an old rant to a friend. What rant? This rant!

Tabs are fundamentally wrong.

Tabs are window management reinvented badly by each application. Your application should not be doing your window management. If applications do your window management then each one will reinvent it differently and probably badly. Further, if you actually need your applications to be doing window management that’s a sign that your window manager needs improving.

Of course… pretty much every window manager needs improving in this way.

Then it occurred to me: This is a problem I’ve solved before. I used to run wmii. For various reasons (a post for another day) I stopped. However, when I was using it I felt absolutely zero inclination to use tabs, and in my current xmonad setup I really did need to use them (this is a problem that I can and have fixed in xmonad before, but the fix was a bit clunky when I last used it).

So I decided to give wmii another try. There were some fraught moments when I accidentally broke everything doing it (wmii is not the most user friendly software in its failure modes), but I’ve now got it working and useful.

Honestly? wmii is fucking amazing. If you have the opportunity to try it out you should take it.

So, TLDR, beginning of yesterday I was running this:

  • Google reader
  • Google chrome
  • Mint desktop environment with an Xmonad window manager

Today I am running this:

  • Feedly
  • Firefox
  • wmii with no desktop environment

The only change I’m unhappy with is the one that prompted the whole thing: While Feedly nominally satisfies my requirements for a reader, it’s pretty grossly inadequate. So, still in the market for changing that one.

The resulting changes though? I’m way happier with this setup than with my previous one. So, thanks Google, I guess.

This entry was posted in How do I computer?, life on by .

Questions for prospective employers

So I’m starting interviewing this coming week, which means I have to distil my long list of questions to ask employers into something more manageable. The following is very much a work in progress and I’ve not tested it in the wild yet, but I think it roughly matches what I’m going to want to use. If I change what I actually use then I’ll update it appropriately.

First off, how to raise these: I was originally thinking of mentioning right at the beginning of the interview that this is going to happen. Something along the lines of:

Hey. Up front warning: I have a long list of questions I need to ask your company in order to determine if this is somewhere where I’d like to work. It’ll probably take about half an hour to an hour, and I’ll need at least one developer and one non-developer present. I’d sortof expect this to happen at the end when we get to the “any questions?” part, but really we can do this at any point in the interview you like – we can even schedule a separate interview for it afterwards if you don’t want to take up this much time on it today – but I really will need to do this.

My friend Daniel Royde pointed out in the comments that this is something that I should really be mentioning before I arrive for the interview, so they can actually incorporate this into their schedule. He is 100% right about this.

The one non-developer and one developer thing is very important. I want to see how different their answers are and how they interact.

The actual questions I’m planning to ask are as follows:

  1. What do you personally like about working here? What do you dislike?
  2. What’s your office culture like? Can you describe the typical sense of humour?
  3. What’s your racial and gender diversity like in the company? Does this vary from team to team? If it’s not good, do you know why and is it something you’re trying to change? How?
  4. What is your company doing to have a positive impact on society? (question suggested by my friend Alex White)
  5. What’s your staff turnover rate like? Is it different from team to team? If it’s high, do you know why people typically leave and is it something you’re trying to change? (question suggested by Jamie MacIver, my brother)
  6. How do you deal with failure? When something goes wrong, what do you do to make sure it doesn’t happen again? (question suggested by my friend Kat Matfield)
  7. Who in your company is completely indispensable? Tell me about them (question suggested by my friend Elisabeth)
  8. How much technical debt do you have? What are you doing to address it? Is it working?
  9. Can you tell me about a change you’ve made in your development process recently? What prompted it? (question suggested by Michael Chermside)
  10. How do you decide and manage what to work on next?
  11. Suppose it is decided that a feature is needed and should be part of the current work priorities. What happens between now and the point where that feature hits production?
  12. What’s your business model like? Is it working? How would you know if it wasn’t working, and how would you go about fixing it?

I feel like this is a bit too long, but there really aren’t any questions in there I’d be willing to take out. If anything there are questions I’d like to put in that I’ve not!

UPDATE: I’ve decided the bit that follows is a bad idea. Real interviews are too chaotic for voice recording to be practical, and some informal polling suggests that people are bothered enough by the idea that it’s not worth the headache. Left in for posterity.

The other thing I am currently considering is how to handle note taking. Specifically, I’d like to record these question and answer sessions. I’m considering offering this with a speech something along the lines of this:

So I need to take notes on this bit for later review. If I do that by writing, this will slow everything down and it’ll be a pain for all of us. Would you object terribly if I record this bit? I promise never to publish any part of this recording, or even a transcript of it, and at the end I’ll give you the option to delete it before I leave. If you take that option I’ll ask for a few minutes to write down some notes and reference the recording before you do, but will be completely happy to comply.

I’m also thinking of mentioning at the beginning of the interview that I’m going to have a long set of questions to ask them and that I’m happy to do them either at the end of the interview or at whatever other point in it they’ll find convenient.

What do you think? Does this sound like a terrible idea?

This entry was posted in Hiring, life, programming, Work on by .

Ignorance is bliss for whom?

My friend Pete was being a cruel and unfeeling excuse for a human being the other day and inflicting Christmas jingle ear worms on me. I needed a defence.

I’d recently been reminded of Jonathan Coulton, via RE: Your Brains (which is entertaining and I recommend). There was a brief period of time when I listened to him a lot, then I just stopped for some reason. However, I remembered he had some very effective and (mostly) less irritating ear worms (I recommend not listening to Dance, Soterios Johnson, Dance if you ever want it to leave your head), and a lot of his music is on Spotify recently so I thought I’d have a listen.

This didn’t go so well.

It was going ok, although some of his songs are way more depressing than I remember.

First I listened to Code Monkey. It’s… a little bit offensive. As well as being about nerd stereotypes (something you can probably imagine I’m a little touchy about), it’s also about a guy’s obsession with a fairly stereotypical secretary character (apparently) purely because she’s pretty. It’s not a big deal at all, but it annoyed me a little bit.

Then The Future Soon came on. I used to really like this song. It’s basically a kid fantasizing about what it’s going to be like in the future and how his life will be better then (nerd stereotype again, but one I can sympathize with enough that I’ll give it a pass).

And, err, about kidnapping his high school crush and forcing her to marry him.

So, huh, this is kinda rapey isn’t it?

Oh well. They can’t all be winners… Next one.

Hm. Skullcrusher Mountain you say? A light hearted humorous piece about a mad scientist trying to woo a lady… It’s not going so well given that she’s understandably rather terrified of him after his henchman kidnapped her for him.

This too, huh?

Ok. I’m done with this.

Well, this sucks. My increased awareness of social issues has ruined my enjoyment of something. No wonder they say ignorance is bliss, right?

This got me thinking.

A friend mentioned something recently, which resonated a lot: Heavily paraphrased, her point was that she found that getting better at social skills didn’t necessarily make social interactions easier and sometimes made them harder.

How does this make sense and why is it related?

The reason it happens is that increased social skills give you better social awareness. This means that you are more aware of how people are perceiving you and their reactions – if you’re making someone slightly uncomfortable, boring someone, etc. there’s now a much higher chance that you will realise this. You then have to figure out what to do about that, which can be difficult and potentially even painful.

The common point is that your increased awareness of the situation has made you more able to understand why there is a problem while not necessarily granting you the ability to do anything terribly effective about it – you can stop listening to the song (and maybe avoid Jonathan Coulton in future, although I’m not really sure I’d go that far. I have to think about it), or you can try to do better in the social situation (but “improved social skills” doesn’t necessarily translate to being smooth and suave and able to recover here, only that you know that you’re not doing so well. It’s a start, but not necessarily a finish). So by knowing more you have made your life worse.

This seems a bit sad: We’ve improved ourself and are being punished for it. No wonder they say ignorance is bliss.

Thinking some more, we get to the point of the title of the post: For whom, exactly, is your ignorance blissful?

Well, for you, obviously.

Thinking some more…

If you don’t know about them, the problems are still there, aren’t they?

It’s not like the Jonathan Coulton songs are not rapey just because you don’t notice. There’s a reason feminist theory has a term for things which normalize sexual assault, and it isn’t because they’re a rare event. They’re still there and still have an effect regardless of whether you explicitly notice that effect, but by noticing you at least register that it is not OK and start to push back on that.

It’s not like you weren’t (or, to make this less abstract, I wasn’t. There have definitely been periods in my life where in retrospect I was being a bit of a dick and didn’t realise) making people uncomfortable or otherwise causing social problems before you gained better social awareness. Your improved social awareness has come at a cost to you, which is that you are now more aware of others and have to take that into account. Well, you don’t have to, but it’s The Right Thing To Do.

So this is my thesis:

In many cases, knowing more comes with a cost to yourself. This might incline you to conclude that knowing more was bad and that you should avoid it in future. This can certainly be a good strategy in some cases.

But before you do that, you should ask yourself what cost other people were paying previously because you knew less.

This entry was posted in life on by .

Saturday night madness

This weekend seems to by my last weekend without a party this year, so I’ve been taking advantage of it to write code.

(21:49:32) David: I decided to write C instead of being social. It’s almost the same thing
(22:01:05) m.: haha
(22:01:12) m.: you mean eye-gougingly awful?
(22:04:20) David: I *like* writing C.
(22:04:34) m.: sick cunt
(22:05:17) David: It’s one of those things where it’s nice as a break from high level ruby bullshit
(22:06:53) David: Ruby: “Yes I know this looks like you’re setting a field but actually you’re invoking method missing which mixes in a module that accesses a database so it’s really doing a network round trip except when you’re using the caching layer of course”
C: “Yes I know this looks like you’re setting a field but YOU’RE NOT BECAUSE YOU’RE A MORON WHO DIDN’T INITIALIZE YOUR MEMORY AND OH LOOK A SEGFAULT ARE YOU HAPPY NOW MOTHERFUCKER?”
(22:07:01) David: A change is as good as a rest and all that

Behold my rock and roll lifestyle.

This entry was posted in life, programming on by .

Playing to your strengths can be a weakness

If you tried to hire me as a sysadmin I would politely explain to you that you had misunderstood my skill set.

If you tried to hire me as a front end developer I would less politely explain to you that you needed your eyes checked and your head examined.

There are things that I am good at. There are even things that I am very good at. Systems administration, user experience and visual design are very emphatically not in those categories.

I’m probably more trustworthy as a sysadmin than the average dev, but not a lot. I wouldn’t like to comment on where my visual design skills are compared to the average dev – I’ve worked with plenty of people who have worse, but that’s because the teams I’ve worked in have typically had a bit of a back-end/front-end imbalance.

The point is, there are people who are good at these things, and I love working with them. It’s truly a delight working with good people who have different and complementary skill sets to your own, because you can compartmentalize problems and trust them to handle the parts you’re not good at. The reach of a good team is vastly greater than the reach of the individuals within it, and the reason is division of skills far more than it is division of labour.

But where do you draw the line?

The problem is you can easily get into a pattern of over reliance. If you always work with people who are much better at something than you, you can get into a habit of handing over even the smallest tasks to them. This can be a bottleneck even when you are working with them – your five minute task might take days to complete because the front end or opts team are busy with a major feature and doesn’t have time to do the task you need.

I’ve worked with people who basically refuse to touch the front end code. I’m not quite that bad – I’m perfectly happy to make changes to html or javascript, but I tend to draw the line where I’d have to make significant UI or style changes. I think this is more or less reasonable. Similarly I often chip in at work and do a little bit of sysadmin, but I leave any serious tasks to our actual sysadmin. So at work I don’t think my balance is too bad, though I could probably go further in each direction than I currently do.

For me, somewhere this really comes out is when I have side projects.

I have a lot of ideas. Sometimes I implement them. The problem is, what will usually happen is that I will implement them and go “Halp! Mike! I can’t make this pretty!”. Mike will then kindly step in and make it pretty for me, but I’ll probably feel like a bit of an ass about it.

The reason is that I’ve got so used to working with Mike and other people who are better at front end than I am that I’ve come to the conclusion that I’m simply not good at all. Design is just a thing I can’t do. A fact which causes me painful limitations but you’ve got to face reality, right?

Except it turns out it’s not really true.

I’m not good at design, but I can put together something entirely functional. With practice I may even upgrade myself from not bad to actually good (I doubt I’ll ever be amazing. If nothing else I don’t care enough to put in the practice).

For example, I did Github Explorer on my own and you know what, it’s fine. It’s nothing original design-wise and it sure isn’t going to win any prizes, but it doesn’t need to. It just needs to look ok and present the underlying idea.

Would it be better given the attention of a dedicated designer and front-end expert? Oh, certainly. But there are a lot of ways to make it better, and it doesn’t really need any of them. It’s fine.

Which I guess is really the core of my point: Knowing the things that you’re not good at is important. Working with people who are good at the things you are not is great, because it expands your reach. But often you are good enough at these things, and if the thing you want to achieve is already within your reach then relying on other people to help you achieve it is unnecessary, and believing that you need to do so will limit what you can achieve when those people are not available.

This entry was posted in life, rambling nonsense on by .