Month: November 2009

Comment left on review for Feeble Paradox

http://www.newstatesman.com/television/2009/11/high-drama-flint-king-paradox

This is the Beeb’s feeble response to Flash Forward – can’t be bother with that either, but at least they have writers who can write.

Best bit was trying to wake the sleeping tanker driver  by standing 50 metres away and shouting, instead of driving right up to the bridge and using the car’s horn like a normal person would. But then Tamzi’s hair might have got mussed and the cheesy special effect would have been harder to do.

The closing sequence with more photos sent from “the aliens”, including her lover looking pretty dead was so clichéd I burst out laughing.

Heroic Failure on the 13th of November

Had you down for Heroic Failure on the 13th of November
Could you oblige?
RSVP to me
We’ll have tiffin on the lawn, eat small tiger for tea
Measure nose to tail
Will be slightly longer than the other one you see?
Tasty tiger don’t eat me no more than necessary

Yeah, you said you’d be there one time I sighed
All my fault
Reciprocate the failure
Send card embossed with lillies
No sympathy
And a short doggerel by Minor Lakeland Poet

Tiffin on the lawn
Cucumber sandwiches

Do come to tea
Don’t confuse me with specifics
Or lectures on entropy
I’ll be your friend for now
And later sigh in memory

Do come to tea

Ok, I’m not perfect and I still get angry – but still try to deal with it

I suffered the misfortune of sitting next to an extremely inconsiderate man on the train on Sunday. I was subjected to 2 hours of having my leg felt and the paper snapped and wafted in my face by the most irritating elbow wielding person I’ve ever sat next to. I think he was trying to get me to move. He had his wife and child with him (at least I think it was his child, I don’t think I saw him make eye contact once).

When he started tapping the chair I meant to say “please stop tapping” but what came out was “for fuck’s sake” – whoops. Should have said something before I came to the boil. Me bad man. Me swear in front of the children of the inconsiderate and self righteous. I’m sure there’s a spiritual message there. I know there is. Maybe he has Tourette’s and I’m really in the wrong. It was like he was trying to pick a fight and was’t even aware of it. I hope that he’s not in any position of power or one day someone that works for him will pee in his coffee, or do something even worse!

Thing is, it’s two days later and I’m still feeling the karmic shock wave of my anger. Anger does this to me more often than I would like to admit. I did’t sleep properly on Sunday and had this boiling anger thing on Monday evening. I could’t believe that someone could be so selfish, and have so little self awareness, it was extraordinary. It was’t arrogance: he just did’t have a clue that invading a total stranger’s personal space and noisily flicking a newspaper every 15 seconds or so could be seen as an arrogant and aggressive, in fact downright rude. It was like sitting next to a toddler who needed a nappy change. Really bizarre.

So ok, I’m a Buddhist, by definition a pacifist and someone who will not follow (or at least try not to follow) emotionally destructive paths. So how do I work with this anger and the irrational wave of hatred (it was that strong) that kept creeping up on me? I finally worked out the shape of it on Tuesday morning. In the Tibetan tradition there is a meditation technique called Tong Len, that translates as “sending and taking” or “exchanging self and other”. I am not a qualified teacher and will not explain it here, but the essence of the practice is to imagine yourself into various people, usually starting with loved ones, and draw their suffering and pain into you as you breathe in and out – transforming it and taking it away from them. Then you gradually change the focus to people unknown to you and finally to your enemies or people who have hurt you. Go and get instruction from a qualified teacher if you want to try it – quite deliberately I have not given enough information here – you would’t give a child matches or let it play with electrical wires. My community’s website is here.

It’s important to stress that Buddhists see no difference between self and other; that all suffering comes from this fundamental misunderstanding (other being everything, not just people). You see something outside you, you start dividing things up into like/dislike/don’t care, you see yourself as separate from these things, and suffering follows from it because these “external” things apparently control how you feel and think (again this is simplified, but I hope correct). Ignorance makes us see the other; pushing and pulling makes us angry and confused, suffering is the result. For me meditation practice is about trying to relax the tightness of this spiritual knot and undo it by seeing and feeling the the world properly, viscerally, and without any sense of a barrier (because there is’t one). It can’t be forced – the more you push the more things push back.

(Yes, Star Wars fans, Yoda says it, kind of: Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering. He misses out the beginning (for a Buddhist): Fear comes from ignorance, from the false concept of self and other – the split making you afraid).

So this bloke is just another process spinning in the empty void like I am, the result of an endless chain of causes and conditions that go back to beginningless time and result in another deluded self hiding in a frail human body. He has no intention of hurting me and my feelings should not be changed by what he does. He can’t help his spiritual ignorance, limited self awareness and narrow view that does’t encompass total strangers like me.

I did’t do the practice, just thought about exchanging myself – one process for another – with him. I thought myself into his head, but kept my critical facilities. Then I realised other people don’t exist for him, so why should he show them any courtesy? This is probably overgeneralising, but the nub of it feels right. The guy must be quite broken in his emotional life, and probably is’t even aware of it. So the arrogance is actually an inability to empathise or relate, a fear that feels like an electric shock, the poor sod. On consideration I feel sorry for him, deeply sad that I did’t find something constructive to say that might have shaken him out of his distorted world view and woken him a little. I’m also scared for him: if he carries on winding people up without even knowing it you know it can’t end well, it could end extremely badly, and he wo’t even know why. 

So what I learned (again) is that you can’t win because there is nothing to win. But maybe you can grow a little if you are’t afraid of the pain. And the guy who could’t look people in the eye and was scared of everything, who was afraid to be happy, and comes across as very arrogant when really he’s afraid? That was me about ten years ago. So I can’t be critical. Still is me when I’m tired or not being mindful.

Next time, I will try to overwhelm whoever it is with gentleness, kindness and a little humour before I come to the boil. At least I know I’m broken.

Oh, and move my seat, even if the train is full. If he wants both seats let him have them – there’s more difficult and useful battles to have. Stubbornness does’t help either, but that’s another essay all of its own.

Imported Comments:

maxxxmagician

🙂

Tumbleweed Interview Candidates

In my present role helping a team become more agile I was asked to help with some interviews. We must have talked to about ten people. The profile is relatively unusual: Object-oriented PHP with MVC and some Oracle PL/SQL. Unusual but a lot of people claim to have at least some of it.

I’ve helped conduct at least two interviews where you ask a straight question related to a claim on a CV e.g. claims about knowing Object-oriented design patterns, I get what I’ve come to call the tumbleweed response. As in what happens when someone makes an unfunny joke and there is silence. The idiom comes from the cowboy movie where the wind blows across the silent plains and makes the tumbleweed roll by; there is nothing there! (Reeves and Mortimer fans will know exactly what I mean).

So, if you are going to be interviewed by me, remember the following:

If you claim to have designed databases with hundreds of tables you should be able to explain what foreign keys and lookup tables are. Third normal form? It’s a dying art. Look it up or don’t make the claim.

If you claim to know PL/SQL then you know the difference between implicit & explicit cursors, probably what ref cursors are and what in, out and nocopy mean and why you would use them. Bonus question – what are PL/SQL tables (hint: nothing to do with database tables, it’s a language construct, so don’t start talking about database tables – it means you don’t have a clue).

SQL: inner and outer joins, foreign keys etc. Why as well as what.

If you know J2EE or Java beyond having attended a one-day course tell me what might go wrong with singletons (have a read up about serialisation)? How and why do you implement an equals method (just look it up)? Bonus question – if you have read about trying to create enumerated types in Bloch’s Effective Java are there any problems with it? Double bonus – tell me about synchronisation and the actual order statements can be executed when optimised that breaks it. It’s a feature. I’m a bastard question: why have’t you read Effective Java? Do you know what POJO is, and why does it have so much meaty goodness? (See Bootnote – some of this stuff has changed).

If you claim to be well-versed in object-oriented techniques you sure as christmas is coming need to be able to tell me the difference between has-a and is-a relationships, and why they are needed. Plus the usual stuff about abstract classes, interfaces and so on. Maybe, as a bonus question, why dynamic languages don’t need interface or abstract – or do they? I like people with opinions.

Ruby – what is duck typing? Can you explain what method_missing does? What does yield do? What’s the difference between a string and a symbol? How do you pass a block to a function – why would you? What’s a mixin and why do they taste so nice and chocolatey? Bonus: Why is the splat operator so handy?

Rails –  how does an @ variable set in the controller appear in the view? What tools to you use to test model/view/controller code separately and together? Tell me why fat model, thin controller is a good guideline. (This question also works for PHP/J2EE and whatever framework you want).

(I will think up more RoR questions – readers feel free to chip in and I will add them).

Agile: What does YAGNI mean? What does PIE mean? What is TDD? Then, of course, why? Bonus: Demeter/Tight and loose coupling/…

Patterns: Describe MVC (why as well as what). Do you know what the conductor pattern is? If you claim to know patterns such as Factory or Singleton, then expect to be asked “what does a factory give you” (concrete class that implements a known interface, like a database connector or cross-platform representation of a GUI object) or “why would you use a singleto” (global data store, or even a factory!) Bonus question – what does “concrete class” mean? Expect why questions – anyone can implement someone else’s pattern – why was it a good idea?

General Programming: How do you track production system bugs down (this is open ended – no right answer – but have some idea, please!) Why is refactoring old code generally a good idea? Or is it a bad idea? What’s refactoring anyway?

I can’t be bothered asking questions about XML but there are plenty – I leave that as an exercise for you, dear reader.

Some of these questions overlap, obviously.

Bottom line: If you claim to know something then expect to be asked about it – I will bone up on the web if I don’t know to do you the courtesy of being able to shine – I want you to succeed, honest.

Bottom line: Don’t make claims you can’t back up. Don’t waste my time.

Envoi: I don’t know is a fine answer, don’t be afraid of it. You get more respect for it. Just don’t sit there watching the tumbleweed after claiming to be a world expert on something – it makes us all so embarrassed.

Bootnote: 2015

I believe that enums are now part of Java and the daft problems where the compiler would sometimes re-order code outside of synchronized blocks have been resolved. Not so sure about the singletons not being singletons when they get moved from VM to VM problem though.

TDD is effective if you look at the right things

http://theruntime.com/blogs/jacob/archive/2008/01/22/tdd-proven-effective-or-is-it.aspx

It’s nothing to do with the initial development. All about the long-term viability of the code. You can’t refactor or maintain something if you can’t prove your changes have’t broken it. I do believe that the code is better, as long as each test comes directly from the specification, it shows you have understood it.

The comment above about doing your own coverage using the debugger is naive. You can cover everything every time you make a change, or only the tiny bit when you make the next one? Then you start to have something really brittle. Not immediately, but soon (really soon) you will start to feel fear every time you change something. Then you’re in trouble.

This research is measuring the wrong thing. I don’t know how you’d measure the longevity of the code, but the initial build is only 10% of the effort in any large system. This is not taught at school and it should be. Writing maintainable code that has full tests is not a luxury. Far too many people think it is.