James Crisp

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

The Secrets of Consulting by Gerald Weinberg

The Secrets of Consulting by Gerald Weinberg is one of the most entertaining (largely?) non-fiction books that I have read – a heady mix of How to Win Friends and Influence People, Fear and Loathing in Las Vegas (just look at the illustrations!) , and the 10 Commandments. The book provides general advice, case studies/stories and then derives general “rules” and recommendations from these.

Personally, I found the chapter on the pricing of consulting to be particularly interesting. Thinking about setting a price previously, I would have suggested it should be enough to cover costs and make a bit of a profit. Weinberg points out that price is more than this – it is a big factor in the relationship and the level of respect for the consultant.

The Weinberg’s consulting “rules” are quite numerous – my personal favourites are:

  • “If you can’t fix it, feature it.”
  • “It may look like a crisis, but it’s only the end of an illusion.”
  • “You’ll never accomplish anything if you care who gets the credit.”
  • “If something’s faked, it must need fixing.”
  • “The name of the thing [label] is not the thing.”
  • “It tastes better when you add your own egg.”
  • “You don’t get nothin‘ for nothin‘. Moving in one direction incurs a cost in the other.”
  • “Whatever the client is doing, advice something else.”
  • “What you don’t know may not hurt you, but what you don’t remember always does.”
  • “Clients always know how to solve their problems and always tell the solution in the first five minutes.”
  • “When change is inevitable, we struggle most to keep what we value most.”
  • “The biggest and longest lasting changes usually originate in attempts to preserve the very thing ultimately changes most.”
  • “Effective problem-solvers may have many problems, but rarely have a single, dominant problem.”
  • “Make sure they pay you enough so they’ll do what you say. The most important act in consulting is setting the right fee.”
  • “The more they pay you, the more they love you. The less they pay you, the less they respect you.”
  • “Spend at least one day a week getting exposure.” and “Spend at least 1/4 of your time doing nothing.” and make sure your fee covers this.
  • “Set a price so you won’t regret it either way.”
  • “If they don’t like your work, don’t take their money.”
  • “Cucumbers get more pickled than brine gets cucumbered.”
  • “Give away your best ideas.”
  • “Look for what you like in the present situation and comment on it.”
  • “Study for understanding, not for criticism.”
  • “Never promise more than 10% improvement.. if you happen to achieve more than 10% improvement, make sure it isn’t noticed.”
  • “Consultants tend to be the most effective on the third problem you give them.”
  • “The child who receives a hammer for Christmas will discover that everything needs pounding.”

Mango Liqueur

Started a quick mango liqueur this evening. Two large fresh mangoes worth of pulp (approx 500ml) mixed with 500ml of vodka in a jar. Planning to shake every few days for the next few weeks, filter and then add about 1 cup of sugar, before maturing for a few months. I have high hopes, as a similar recipe worked well with bananas in the past.

_vimrc for Ruby

In the past I’ve used gvim for Ruby coding. It’s been pretty good, especially with the new tabbed editing and omni complete (bit like intellisense in Visual Studio) introduced in vim 7. However, when I downloaded vim at work, I was missing the secret sauce – a good vimrc. Here’s my usual vimrc for ruby:

set nocompatible
behave xtermset
selectmode=mouse
set nu
set tabstop=2
set shiftwidth=2
set softtabstop=2
set ai
set columns=100
set lines=70
set guifont=Courier:h10
set expandtab
set smarttab
let g:rubycomplete_rails = 1

Among other things, it makes the default window size bigger, uses a prettier font, sets up auto indenting ruby style, and turns on omni-complete.

By the way, on windows, assuming a default install, vimrc is to be found here:

C:\\Program Files\\Vim\\_vimrc

JRuby Setup

Recently got a JRuby/Rails system with Java integration up and running. Unfortunately, it took quite a few hours, as most of the docs and code you find through Google are out of date.

If you use JRuby 0.9.2 from Codehaus, you will get an error similar to this when you try to access a rails application:

[2007-02-26 17:54:59] INFO WEBrick::HTTPServer start: pid=22540508 port=3000
<ArgumentError: Anonymous modules have no name to be referenced by>
[“c:/jruby-0.9.2/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/
active_support/dependencies.rb:402:in `to_constant_name’…

If you’re stuck in this rut, fear not! Nick Sieger has written very helpful instructions which outline how to get and set up the latest development snapshot. Please note that in addition to the instructions, you need to set your JRUBY_HOME environment variable. Under Windows, do something like this:

set JRUBY_HOME=c:\jruby

If you’d prefer not to use the snapshot, you can get the source code through subversion from:

http://svn.codehaus.org/jruby/trunk/jruby

but at the time of this post, you need to run svn checkout or update with “–ignore-externals” to avoid the following error:

Error: URL ‘svn://rubyforge.org/var/svn/bfts/bfts/trunk’ doesn’t exist

Many thanks to Nick Sieger and the JRuby user mailing list for their help.

Holiday 2007 – Venice and Padua

It was a sudden decision to take a sleeper train to Venice. We didn’t really know what to expect. By chance, we arrived at Carnivale (mask and costume festival), probably the busiest time of the year. Venice was filled to the rafters with tourists, prices were high and it was difficult to walk in many areas due to the number of people in the narrow streets! The solution was to take to the water – catching the ferry was fun and it got you out of the crowds.

Venice is really beautiful. The Doges (ruler’s) palace and nearby Cathedral in St Marco square are amazing. The palace has huge painted ceiling murals by famous artists and enormous open halls. In the Cathedral, there are golden mosaics over the whole ceiling, and even the floor is an artwork in tiles. There’s also some impressive golden relics from when the Venetians sacked Constantinople during the crusades.

In Venice, most streets lead to the water, and the best facades are turned towards the canals. It really is a city designed to be traversed on the water. The buildings are mainly standing on foundations made from hundreds of pine trees hammered into the silty mud under Venice. Historically, Venice’s influence peaked in the 13th century or so, and from then on, it was a slow decline in power. But to make up for this, the wealthy families spent lavishly on buildings, clothes and decorations.

On our last day in Italy, we went to Padua to take a look at a more typical Italian city. It was a friendly and fun place with few tourists, but good food and a nice atmosphere. Last picture is of Padua, all the rest are from Venice!














 

Holiday 2007 – Monaco

Monaco is easily accessible from Nice – about 1/2h by train. We spent an enjoyable afternoon and evening there, visiting the cactus “exotic” garden, castle, casino and cave. The cave was particularly interesting – it was about 18degC inside (despite winter temperatures outside), and walkways for visitors had been made using explosives and diamond drills! Despite the damage, it was still a lovely cave. Monaco was clean and tidy, and felt almost like a movie set.





 

Using floating point variables to represent money => not a good idea!

I was reading through some code the other day and was surprised to find that it was using doubles to represent dollar amounts. Reason for the alarm bells is that doubles and floats cannot accurately represent many decimal fractions (eg, 0.1), since doubles and floats internally work with powers of 2 rather than powers of 10. These inaccuracies are likely to lead to significant errors, especially when performing arithmetic (eg, adding up a table of dollar amounts). See this IBM article for a more in depth explanation and examples. The solution is to use types that work with powers of ten internally. In C#, you can use ‘decimal’ and in Java or Ruby, ‘BigDecimal‘, to avoid these problems.

Holiday 2007 – Provence & Cote D’Azure in the South of France

France supposedly is the number 1 tourist destination in the world, and certainly it is one of my personal favourites! Besides the pleasure of speaking French, we had the opportunity to eat a lot of good food, and visit really pretty coastal areas, medieval towns, castles and ancient Roman remains.

Our itinerary looked roughly like this:
Marseilles -> Aix En Provence -> Avignon -> Nimes -> Arles -> Tarascon -> (Italy) -> Nice -> Antibes -> (Monaco)

In terms of hotels, it was very much ‘get what you pay for’. We tended to stay in two star places around 40-50 euros per night. Our first hotel in Marseilles was only 37E per night, and it convinced us that the extra 10E or so was really worth it! Hotels were fairly easy to find (well sign posted), though often not too close to transport.

We tried the random approach to finding good restaurants to start with, but this led to a number of disappointments. The solution was to ask our hoteliers for their favourite restaurants – this led to some really great meals 🙂

We had planned to rent a car for some parts of the trip.. however, make sure you learn to drive a manual before attempting this! Autos in France are horribly expensive to rent, so we ended up doing everything by public transport – bit tricky in winter time especially, but we managed. Tourist offices were generally very helpful.








































































 

Holiday 2007 – South Korea

South Korea is a great place to visit. People tend to be very friendly, the alphabet is phonetic, food is good and everything is excitingly foreign! Don’t forget your phrase book though.. English is not widely spoken. This was my 3rd trip to Korea, and it was an opportunity to catch up with Soosun‘s relatives, improve my pitiful Korean and see some interesting areas.

Should you happen to go to Korea with a partner, I would recommend staying in ‘motels’. They are around 30,000-40,000 WON in most places per night, are conveniently located near transport and generally have nice rooms. Despite their reputation as love hotels, they are often more comfortable and cheaper than other alternatives. Don’t be surprised, however, if they don’t ask for your name, and require payment in cash!

Also, visiting the local jimjil-bung (sauna) is an experience not to miss. They are generally open 24h and provide showers, sauna rooms, hot and cold pools, massage and general sleeping and relaxing areas, as well as funny coloured clothes to wear while you are there 🙂

Some of the fun stuff I did this trip was catching up with friends and relatives, walking around fortresses, going to a hot spring spa, doing a little caving, taking in some amazing scenery and going skiing.
















 

Back from Holidays

Back to Sydney after a very enjoyable holiday! Soosun and I were away for a bit over a month, and spent time in South Korea, France (Provence, Cote D’Azure), Monaco and Italy (Venice and Padua). The next few posts are going to give a little taste of these places 🙂

Page 17 of 21

Powered by WordPress & Theme by Anders Norén