Software dev, tech, mind hacks and the occasional personal bit

Author: James Page 18 of 20

Bye Bye EDI… Hello ThoughtWorks

Well, after almost four years at EDI (now called CargoWise edi) I am leaving. I finish in the middle of January next year. It has been an interesting time, and I have learnt a lot working with very talented people and from building the framework for a big solution suite (around 4 million lines of C# code). I’ve also had the opportunity to experience the very different joys and pitfalls of product management.

I will be starting at ThoughtWorks (of NUnit, Jim Webber and Martin Fowler fame) in the middle of February in the new year. I’m expecting that there will be a lot of new exciting stuff to learn, and a lot of variety in terms of clients and technologies. ThoughtWorks are strongly XP, do a lot of development on client sites and even have some Rails projects. The people I have met from ThoughtWorks have all been very friendly and I look forward to starting there soon ๐Ÿ™‚

Our Christmas Party ’06


Last Saturday, we had a Christmas party at our place. It went really well. Many thanks to Anh and Neeraj for doing such an excellent job with the BBQ.

Chark Jong – The Calm in the Eye of the Storm

Doing Chark Jong (breaking of the guard) today, my instructor pointed out that I was tensing up too much, and comitting myself to a big forward rush, when I should have been simply walking forward in my correct stance. After this and some more demonstation, I had an ephinany and things suddenly clicked. Here is my summary of how to do the technique more correctly:

  1. Put on a correct stance.
  2. Imagine yourself being sucked up towards the ceiling head first, or that your body is suspended from a thread going from the top of your head to the ceiling. This will straighten your back and neck and relax your spine.
  3. Mirror your oponent’s guard with your guard.
  4. Imagine your arms are very heavy, and relax all the muscles in your arms and shoulders. Your arms should be rotated up and forward by your shoulder ball joint, holding the ultimate angle, but otherwise completely relaxed. Your elbows should feel as though they are pointing towards the floor.
  5. Step forward naturally from your waist.
  6. As you close with your opponent’s guard (preferably a bit above it), allow your arms to drop down under their own weight, while focusing strongly on a point (eg, on the centre of your oponent’s chest). Don’t stop walking as your do this. The combined forward movement of your body and downward fall of your arms will mean that you collapse your oponents guard and hit through to their chest.
  7. Pull back both hands with a circular movement driven from your elbow, like in the form. This will catch the remains of your oponent’s guard and further disrupt their stance. If this move isn’t working for you, don’t overdo it – be careful not to come out of your stance.
  8. Finish by stepping foward from the waist (imagine your belly button is leading the way) and drive your arms forward in a double palm strike.

When it clicks, it feels like the calmness in the eye of a storm. You are relaxed, in control and uncomitted, with time respond to any counters your oponent may choose to do.

Thai Ordering and Development Mode vs Production Mode for Rails Apps

A while back, I wrote a little rails app for Thai food ordering at my work. My colleagues place orders using the system and then bring money to the nominated orderer of the week. Once all orders are in and paid for (this is also tracked in the app), the orderer rings up our favourite Thai restaurant (Laddas) and places the order.

I have the app running from fairly cheap shared hosting. At peak times during the ordering, I guess that they’d be 15 or so people simultaneously using the app. We’ve used it many times without problems. Thus, I was quite surprised and displeased (as were my colleagues), when my hosting account was suspended and we couldn’t see what had been ordered this morning. A hasty email to my hosting provider revealed that my account had been suspended due to high load and “ruby flooding”. They were kind enough to un-suspend my account and we completed the ordering process.

I remembered seeing something about production mode in ‘environment.rb‘. Some googling confirmed my hunch – in development mode, rails apps are much more resource intensive. Caching is not used, and every single file needs to be reloaded every time it is required. After changing my app to production mode, it seemed to run noticeably faster. Michael and I ran ‘top’ and it looked like each request used less CPU.

So, should you be in a similar situation, this is how to change your app to production mode on fast-cgi Apache shared hosting:

  1. Confirm that ‘database.yml‘ in your app’sconfig‘ directory has a section for production mode, and that it has up to date database connection details.
  2. Edit ‘environment.rb‘ in your app’sconfig‘ directory.
  3. Add this line:
         ENV['RAILS_ENV'] ||= 'production'
  4. Run ‘ps -u [your_user_name]’ to find if you have any ‘dispatch.fgi‘ processes running.
  5. If so, kill all of them (they’ll restart and use your new config settings).
  6. Browse to your app, it should now run faster.

Neuro Linguistic Programming – Part 2

This is the second part of my post on NLP. Part 1 is available here.

Building Rapport
To build rapport, the book recommends that you pay careful attention to the person you are speaking with and match their physical posture, expressions, breathing, movements, voice and language patterns. Whole body listening is important – this means you are curious and focused on the person you are speaking with and your language is ‘you’ focused, rather than ‘I/me’ centered.

Perceptual Positions
Perceptual positions are a way of appreciating situations from different standpoints and gaining different perspectives. 1st position is when you are in your own body – this position is good for concentrating on what you want and being assertive. 2nd position is when you imagine yourself in somebody else’s shoes – good for trying to understand their perspective/actions. 3rd position is when you imagine yourself as a fly on the wall looking at the scene – good for detaching yourself emotionally and considering things logically.

Setting Anchors
Anchors are particular stimuli (eg, a touch, smell or taste) that automatically trigger a linked memory or emotion. Everyone has unconscious anchors – eg, smell of food makes you feel hungry and think of eating. However, you can set anchors for yourself which you can then call up at will to change your emotional state:

  1. Choose a state/feeling that you have experienced in your life that you want to be able to access whenever you choose.
  2. Choose an anchor – eg, touching index finger to thumb on your left hand.
  3. Recall the time when the feeling was it its strongest for you. Make sure you are seeing the memory out of your own eyes (1st position). Think about the time – what colours do you see, what do you hear, what do you feel etc.
  4. Just before your emotions peak, set the anchor and then remove it at the peak of your emotions.
  5. Shake yourself to break state, and then repeat the process several times.
  6. Test the anchor – think of something else and trigger the anchor. You should feel the emotions/state you associated with the anchor.

I had a little bit of a play with anchoring emotions. The technique seems to work at least to some extent for me. I intend to play around with it a bit more.

Neuro Linguistic Programming – Part 1

I recently finished reading “NLP at Work” by Sue Night. It was quite a nice introduction to the topic. Here’s some of the more interesting bits through the filter of my interpretation.

Styles of Thought
Visual/Auditory/Feelings – from the way people speak (eg, “that sounds good”), you can guess what style of thought they prefer.

Eye Movements
The way you move your eyes is meant to reflect your thought patterns:

  • Looking up (or straight ahead defocussed) => remembering/constructing images
  • Looking sideways => remembering/constructing sounds
  • Looking down => feelings/internal dialogue

As an aside, if you’re talking and somebody looks away, they are probably thinking, and you should wait till they meet your eyes again before continuing.

Empowerment thought Word Choice and Questions
Empowerment means you take responsiblity for your own experience. Resolve ambiguity and abdication of responsiblity though challenging your thoughts with questions.

  • Deletions: “They overlooked me in the recent promotions” – who are they?
  • Vague actions: “We are going to develop Joe’s ability to learn” – how are we going to do that, and when?
  • Baseless comparisons: “The company is doing well” – compared to what?
  • Abstraction: “It was a difficult conversation” – who was involved, and what made it difficult?
  • Hidden opinion: “This is the right way to do it” – according to who? The speaker?
  • Generalisations: “She never listens to me” – how do you know that? Has there ever been a time when she listened to you?
  • Blame: “the company demotivates me” – how does the company demotivate you?
  • Drivers: “I want to see my friend” vs “I should see my friend”. The former (driven by you) empowers and motivates, the latter (forced on you) triggers opposite feelings.
  • Assumptions: “he is fiddling with his pen => he is bored” – how does fiddling with his mean mean that he is bored? Maybe it is just his habit.

With this approach, you can untangle your beliefs. Eg,
“These presentations never go well” – Never? Has there ever been a time when one did go well? How do you determine if it went well?
“Giving these talks makes me feel stressed” – How exactly does giving the talks cause you to feel stressed? How do you want to feel?

The power of imagination
If you imagine something sufficiently strongly and sensually (when, where, sight, smell, touch, taste, sound, etc), your feelings will be similar to what they would be if it was really happening. Ie, your feeling do not differentiate between what is really happening, and what you imagine.

Hence, if you want to know how you would feel if you did X, simply imagine it in great detail and you’ll find out. Similarly, if you want to achieve something, imagine what it would be like in detail and it will be as though you have already achieved it. Believe it is true, and you will act as though it is true, and then it will be easier for it to become true!

No negatives
The unconscious mind does not understand negatives. Hence, if you say “Don’t worry” to yourself, you are in effect triggering the “worry” emotion.

Rewriting Memories / Modifying Perception
Bring up a memory in detail, and bring in as many senses as you can. Try changing the lighting, the background sound, the relative size of objects etc and see how you feel. If you do this enough, you can change how you feel in the memory, and how you will feel when something similar arises.

I think that this could be done mentally in real time in real situations as well by changing your perception. Eg, somebody is screaming at you. If mentally imagine yourself to be larger, and the screamer to be smaller and imagine a glass between you, you could avoid feeling overwhelmed or getting angry yourself. You could then respond in a better manner.

Beliefs of Excellence
What you believe will influence how you act. Hence, if you take on positive beliefs, you can become more friendly, productive and motivated. Similarly, negative beliefs (eg, “I can’t do it”) are often self-fulfilling. According to the book, the important beliefs for excellence are:

  • Each person is unique
  • Everyone makes the best choice available to them at the time
  • There is no failure, only feedback
  • Behind every behaviour is a positive intention
  • The meaning of the communication is its effect
  • There is a solution to every problem
  • The person with the most flexibility in thinking and behaviour has the best chance of succeeding
  • Mind and body are part of the same system
  • Knowledge, thought, memory and imagination are the result of sequences and combinations of ways of filtering and storing information

Presuppose that these beliefs are true for you – try them out ๐Ÿ™‚
Or go back into memory and imagine how you would have behaved differently had you had these beliefs.
Practice should make the belief become more fixed in you, and change your automatic behaviour.

Outcomes and Goals
What do I really want to achieve in 3 months/6m/1yr/3yrs, beyond..
List, prioritise and choose top 3. For each goal,

  • Imagine it with all senses – how does it feel/look/sound
  • When, where and with whom?
  • What have you got now you’d need to give up?
  • Is it worth the risk/pain? If not, chose another goal and start again.
  • If not self-maintained, chunk up (“recession to ease”, ask “what’s important about that?”) to find the higher level need (eg, “security”)
  • Ensure the outcome fits with who you are and who you want to be
  • What alternative ways are there to satisfy this need that will allow you to move towards the outcome?
  • How does having the outcome fit with the other people who are important in your life?
  • Act by dividing what you need to do into many small steps that you can work through in a real way every day or every week, potentially with time frames.

This topic is continued in Part 2.

Wing Chun Grading

This morning I went for a grading to move from grade 3 to grade 4. I did better than I could have hoped – both passed and got a good score! New and exciting Grade 4 techniques shall be revealed to me next training ๐Ÿ™‚

Mocha, office style

I’d like to share with you an easy recipe for Mocha, made using only the commodities found in your average office kitchen. I learnt this from a colleague the other day, and it makes a nice change from one’s usual tea or coffee in the morning.

Ingredients

  • 2 tsp milo
  • 1/2 tsp instant coffee
  • 1/2 tsp brown sugar
  • milk
  • hot water

Mix all ingredients and stir ๐Ÿ™‚

Interestingly, tea and milo is not a bad combination…

Successful Negotiating

Recently, I read “Successful Negotiating” by Julia Tipler. It’s a pretty quick read (just under 100 pages) but has some interesting info. Here’s some titbits from the book:

Relationships
Try to build long term relationships based on win-win deals rather than scoring points / grinding down opposition.

Language
Use precise language with dates rather than “ASAP” or “when you have time”. Use simple language, and do not assume both sides hold the same assumptions and clarify often with questions.

Preparation
Prepare well by deciding your objectives (needs & wants), non-negotiables, what you can compromise on and limits. Research your opposite number – what do they need and do they have power to sign off?

Agenda
Create agenda and send to other party in advance of the meeting, emphasising that it is a draft and they can add items to it (aim to create a climate of agreement even before discussion begins). Place items that you think will be easy to reach agreement at the top to get momentum.

Place
If you are selling, you should go to the customer as you are making the most effort and people feel more comfortable/polite on their “home ground”. Second meeting could be on “your territory”. If there’s a history of conflict, “neutral ground” may be best.

Time
Make sure you’ve had time to prepare. On the phone, check that now is a convenient time for the other person.

Exploration

  • If person says they need or want something, ask why and encourage them to explain.
  • “If I can’t meet that condition, is there something else that would make this deal work for you?”
  • Identify mutual interest.
  • Chunk down to find out the details of what people want and also chunk up to find out the big picture of why/when. With this understanding, you can then negotiate solutions which meet the needs of both partieis.
  • Show you understand the reasons that lie behind wants/needs as this may reduce resistance to alternative suggestions.
  • Once understanding is reached, move to middle ground of bidding and proposing. Both sides will need to compromise to some extent. At this point, you are asking the other party to consider what a good deal is, rather than firm agreement.
  • Ask “what if” questions (eg, “what if I could offer you slower delivery but lower costs”?) and ask “why not” if they do not agree. Ask direct questions if this fails (eg, “what is the minimum delivery size you would agree to?”).
  • Aim to uncover variables in the negotiations and come up with possibilities based on these.
  • Don’t concede, exchange – doesn’t need to be of equal value however.

Reaching Agreement

  • Summarise and restate after each point is agreed on. Eg, “We’ve agreed on W, X and Y. That only leaves Z to be decided”.
  • Ask series of questions which are closed/leading, where the answer to each is yes, leading to the final question which closes the deal.

Closing

  • Always put agreement in writing (start with a draft framework for discussion).
  • Agree on review and complaint handling processes.
  • Agreement should be specific, measurable, agreed, realistic and time-bound.

Body Language
When interpreting somebodyโ€™s body language (or projecting your own), consider these aspects in decreasing order of importance:

  • Eye contact (around 70% of the time ideal, too little suggests disagreement or disinterest, too much suggests aggression, looking up suggests thinking, looking down suggests discomfort)
  • Facial expression (smile, make sure you show what you are feeling, donโ€™t be deadpan, thatโ€™s unnerving)
  • Posture (Relaxed and upright, leaning forwarding slightly, crossing legs are all signs of interest. Folding arms or turning body away suggests discomfort with the proceedings. Mirroring other person suggests agreement.)
  • Hand gestures (open hand gestures suggest open mind, fiddling or doodling suggests disinterest or nervousness)

If body language is unclear, clarify. Eg, โ€œIs this still all right with you?โ€

Listening

  • Do make listening noises such as “uhuh” and “mmm”.
  • Do not finish other people’s sentences for them, as they may find this irritating.
  • Take notes to show you’re interested and to help you summarise the agreement as you approach the close.

Respond

  • Keep cool and respond, rather than react. Stay adult and detached and offer time out if the opposite part is losing it.
  • Show respect at all times.

My Sister’s Wedding

Today was Mia and Neeraj’s wedding. It went really well, and the newly weds looked awesome ๐Ÿ™‚ After so much planning, everything was very smooth. Neeraj and Mia made their vows and danced very nicely and the speeches were all good.


I got to sit at the top table facing all the other guests for the wedding ceremony, as I was doing a reading of a poem. Afterwards, I joined Soosun on the family table for the reception.

After the reception, Mia and Neeraj left for their honeymoon, we went back to Neeraj’s family’s place. We dressed up in our Bangladeshi clothes (many thanks to our flatmate Asif and his family for these!) and ate far too much tasty curry.
A wonderful day was had by all ๐Ÿ™‚

Page 18 of 20

Powered by WordPress & Theme by Anders Norén