James Crisp

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

Category: Book Reviews (Page 2 of 3)

Review: JavaScript – The Good Parts by Douglas Crockford

“JavaScript: The Good Parts” was kindly lent to me by my friend and colleague Dave Cameron. It was a highly informative read, and a good length at just under 150 pages. The aim of the book is to define an elegant, recommended subset of JavaScript that allows you to do everything you need, and work around problems in the language. The book is aimed at people who already have a good grasp of programming in other languages.

I learnt quite a bit from the book. Here are a few of the most important parts that come to mind:

  • JavaScript has function scope, not block scope so it is best to declare variables at the top of functions.
  • It is important to put { on the same line as the block opening keyword (eg, function, if etc) rather than on the next line. Otherwise, you may run into problems with some JavaScript implementations auto-adding ; in the wrong place.
  • Using the === and !== operators are safer and better than the == and != operators as they do no coerce types.
  • The ‘new’ operator is a bad way to make new objects in JavaScript and should be avoided. Functions starting with a capital letter should always be called with the new operator by convention. Failing to do this will add all the functionality of the object you are trying to create to the global object (thanks to the this references)!
  • You can always pass any number of arguments to a function. Extra arguments are not bound to function parameters, missing arguments will be undefined. Inside the function all arguments are accessible using the ‘arguments’ variable which is an array-like object.
  • Lots of things are false. Eg, 0, NaN, empty string, null, and undefined.
  • hasOwnProperty(name) is great in for(property in object) loops to find members of your object rather inherited members.
  • Object.beget(someOtherObject) allows prototypal inheritance from someOtherObject.
  • JavaScript arrays are really just objects with numerical property names and the length property, so if you use a for in loop, you’ll get indices in random order.
  • It is a good idea to ‘namespace’ your code in a single global variable for your application to avoid conflicts with other libraries. Eg, myApp = {}; myApp.myVariable = 5;
  • If you don’t used var, a global variable is created.
  • Closures let you make information private and give you encapsulation.
  • Inner functions have access to the variables defined in an outer function.

Creating objects with private data:

var incrementer = function() {
  var value = 0;
  
  return {
    increment: function (inc) {
      value += typeof inc === 'number' ? inc : 1;
    },
    getValue: function() {
      return value;
    }
  };
};

var myIncrementer = incrementer();
 

Functional inheritance

var mammal = function(spec) {
  var that = {};
  
  that.getName = function() {
    return spec.name;
  };

  return that;
};

var myMammal = mammal({name: 'Fred'});
myMammal.getName() === 'Fred'

var cat = function(spec) {
  var that = mammal(spec);
  var super_getName = that.superior('getName');

  that.purr = function { /* new catty stuff */ };

  that.getName = function { 
    return super_getName() + ' the Cat!';
  };

  return that;
};

var myCat = cat({name: 'Kitty'});
myCat.getName() === 'Kitty the Cat!'

// Helpers

Object.method('superior', function(name) {
  var that = this, method = that[name];
  return function() { return method.apply(that, arguments); };
});

Function.prototype.method = function(name, func) {
  this.prototype[name] = func;
  return this;
};

There were a few things that I thought could be improved in the book. First of all, although the structure was adequate, it did lend itself to repetition. For example, scope is covered on p36 (in Functions section) and p102 (Awful parts), with very similar words. Secondly, I did not find the frequent syntax diagrams added much to the narrative.

Despite these small blemishes, I’m glad to have read Crockford’s book. I now understand much better which parts of JavaScript to use, and how to build good object oriented code in JavaScript.

The Long Tail by Chris Anderson

Just finished reading “The Long Tail – How Endless Choice is Creating Unlimited Demand” by Chris Anderson. In summary, the long tail is about selling small volumes of a vast variety of items instead of large volumes of a small number of “hits”. This possible when the cost of distribution to geographically distant customers is low and the cost of storage for stock is not a concern (eg, intellectual property in electronic format, JIT manufacture). Popular companies capitalising on the long tail include eBay, Amazon, Google Adwords and Lulu.

The book has a lot of interesting stories and statistics but tends to repeat itself often. The long tail idea is probably not new to most readers these days, and I think if you’re familiar with Amazon, there’s little that comes as a surprise. However, I did find an interesting section in the book about the tyranny of choice. Anderson suggests that choice is good, customers want choice, and choice is only a problem if you don’t know what to choose to suit your taste. Hence, an important part of a long tail business is helping people find what they want (ie, filter out noise) in all the vast array of choices. He suggests using user reviews, rankings, sorting etc as means to help people find the “best” choice for them. I also hadn’t come across Lulu before – looks worth checking out, a site for mini self-publishing.

Thoughts from Process Consulting

Just finished reading “Process Consulting” by Alan Weiss, lent to me by my talented colleague, Darren Smith. The book is concerned more with general consulting, not IT consulting or IT methodologies. I found the bigger picture view in Weiss’s book enlightening and helpful in evaluating and questioning my own consulting practices. Here’s a few thoughts from the book:

  • Remember that you are not the change agent. The client personnel are the change agents. You are the catalyst, but they are accountable for enduring change. Don’t be a hero…
  • Cute phrases and pithy slogans don’t change behaviour. Aligning people’s objectives behind corporate objectives and supporting that behaviour with metrics and rewards will usually gain their attention. Rapidly.
  • Is it really progress if we teach a cannibal to use a knife and fork? (from Stanislaw Lem, quoted by Weiss)
  • At the outset of any change process, immediately after agreement with the buyer, identify and “recruit” these key positions [hierarchical leaders, front line management, respected leaders and experts]. Use the buyer’s clout if you must. The most crucial factor in organizational change occurs prior to implementation: It’s the conceptual agreement and acknowledged self-interest among the few people who actually have their hands on the controls.
  • [Regarding change,] neutral is as bad as negative, since the default position for everyone else will always be the old behaviour.
  • Don’t be anxious to “make change”. If you have a six month window, for example, invest at least the first month or more aligning your support and key sponsors and establishing their accountabilities. The more time you take with critical sponsors, the faster you will ultimately create change.
  • When you find someone micromanaging, it is almost always because of a lack of trust. If you don’t do the job the way he or she would do it, you must be doing it incorrectly. If the leader has trust in subordinates, simply providing the goals should be sufficient.

Practical JRuby on Rails (Web 2.0 Projects) by Ola Bini

The fine folk at Apress sent me a copy of Ola Bini‘s new book to review. The full title is “Practical JRuby on Rails Web 2.0 Projects – Bringing Ruby On Rails to the Java Platform”. Overall, it was a good read, and extremely valuable to anyone who is developing in JRuby. JRuby information and documentation is scarce and most of the time, a Google trawl does not give you good results on a JRuby related query. Ola’s is the first, and currently the only JRuby book available, and in my experience, the most valuable resource available to give you an all-round picture of JRuby capabilities and usage.

Audience
Despite comments on the cover, I would suggest that this book is not ideal for people new to Ruby / Rails. Ola jumps in the deep end quite quickly, and being a talented Ruby programmer, makes use of lots of shorthand, procs, code blocks etc which would likely be hard to follow for someone new to Ruby. Although there is a section at the back called “Ruby for Java programmers”, I think this would not be sufficient for somebody new to Ruby to understand all the code examples.

To get the most value out of the book, it would be good to have at least a basic understanding of Ruby and Rails (eg, having read Agile Web Development with Rails or messed around with Ruby/Rails a bit) and a basic understanding of Java syntax, deployment and Java EE.

What’s Covered?
The book is project based, so as to give context and useful examples of JRuby functionality. There are 4 projects:

  • The Store (Shoplet) – a standard Rails app running under JRuby using Active Record JDBC.
  • Content management system – general Java integration and using Java libraries for content rendering.
  • Administration System – using EJBs, JMX and discussion of JRuby deployment options.
  • Library System – JRuby as the “glue that never sets”. Using Java Web service frameworks and JMS from JRuby.

The Good

  • Teaches you how to do all those tricky bits which are half-Java and half-Ruby and can’t be easily found online, such as converting between Ruby and Java types, including JAR files, implementing Java interfaces, etc
  • Clever and concise Ruby code – I picked up some Ruby tricks reading Ola’s code.
  • Complex code snippets are generally well explained in text.
  • Useful tips on when to use Java libraries and when to use Ruby ones.
  • Generally good and interesting example projects which justified the use of JRuby and the techniques shown in the book.
  • Helpful discussion of JDBC and database connectivity options for JRuby.
  • Nice overview of the many JRuby deployment options.
  • Helpful “sidebars” about Java Enterprise Edition technologies.
  • Covers the strong areas of JRuby well – web applications and system integration.
  • Appendices provide useful reference information.
  • Nice section at the end on how you can get involved in JRuby.

The Less Good

  • Example views often contain table layouts, inline styles and other layout information that would be better done in separate CSS files.
  • Variable names in code could be more descriptive. This would make example code easier to follow.
  • Occasional odd spelling like “sur_name” and use of deprecated Rails features, such as “start_form_tag” (to be fair though, Rails API does change very quickly).
  • The title suggests that the book is about Web 2.0. There is a little token AJAX, and I suppose a content management system is a bit Web 2.0, but overall, buy the book if you want to know about JRuby, not Web 2.0.
  • Although REST is only mentioned briefly in a little sidebar, and not a focus of the book, I found the description of REST and CRUD a bit misleading, especially when considering PUT vs POST.
  • The discussion of JRuby deployment provides a good overview, but more in depth discussion of major options (eg, GoldSpike), and production configurations would be great.

Conclusion
As the best and only JRuby reference, I’d highly recommend you buy a copy if you are working in, or planning to work in JRuby. The book will help you to write JRuby applications which make good use of Ruby, Rails, Java libraries and Java Enterprise Edition features.

Some Murakami Quotes

Recently, I’ve been catching up on my reading. Haruki Murakami is one of my all time favourite authors. His novels are always interesting, and the writing style is generally gorgeous, although it does vary a little between different books. I’m not sure if this is Haruki Murakami changing his style in the original Japanese, or simply results from different translators.

Something I’ve been noticing lately is that in all of the Murakami novels I can recall, the protagonist always has a lot of time. This is so different to most other novels which try to rush from one exciting event to the next. Perhaps this is part of the reason why I really like Murakami’s writing so much. Anyway, here’s some memorable quotes from Murakami novels that I’ve read recently:

From Kafka on the Shore:
“Perhaps most people in the world aren’t trying to be free, Kafka. They just think they are. It’s all an illusion. If they really were set free, most people would be in a real pickle. You’d better remember that. People actually prefer not being free.”

“Pointless thinking is worse than no thinking at all”.

From Hard-Boiled Wonderland and the End of the World:
“Huge organisations and me don’t get along. They’re too inflexible, waste too much time, have too many stupid people.”

“It’s frightening,” she said. “Most of my salary disappears into my stomach.”

From The Wind Up Bird Chronicles: (language warning on this one)
Show quote, although it contains 4-letter words.

Web Design and CSS, how hard can it be?

So, audaciously, I decided to do the theme for my pet Rails project. How hard can CSS and Photoshop really be? Having made basic layouts and modified various themes, I thought my CSS skills were adequate, and Photoshop is, after all, just another Windows application.

With the help of my talented fiancee and flatmate, the Photoshop side of things went fairly well for a banner image. Not too hard, find a good image and apply some layers, effects and text.

When time came to hit the CSS, I felt confident. Based on my vague trial and error understanding of floats etc, I managed to spend a fair bit of time messing around, painfully, slowly getting a good layout in Firefox, only to be frustrated by an awful rendition in Internet Explorer. Then trying to make a compromise layout between the two that looked reasonable in both, only to have a slight change throw everything into disarray. Repeat ad nauseum.

Clearly, I my confidence was misplaced, and my CSS skills sucked. Time to actually learn something. I turned to my yet un-opened copy of “Beginning CSS Web Development – From Novice to Professional” by Simon Collison, recommended by a ThoughtWorks buddy, Warren. I read it pretty much cover to cover on Saturday. It was quite a good read, practical with useful examples and a light tone. Lots of good stuff within:

  • Clear explanation of the basics
  • Coverage of different browsers
  • Some insight into a web designer’s mind
  • A number of useful page layouts
  • Different options for form layouts
  • Some advanced CSS tricks
  • A nice worked example of cutting up a Photoshop mock-up and turning it into image slices, CSS and HTML.

Overall, the book was pretty much exactly what I needed to get back on track and bring my misbehaving CSS under control.

Here’s a few things I learnt that solved some of the most pressing woes I was having with CSS:

  • Margins collapse into each other. Ie, if you have two elements next to each other and each has a 10px margin, the total distance between the two will only be 10px. Adding 1px of padding will mean the borders of the two elements don’t touch and hence won’t collapse
  • Generally avoid padding on fixed width elements. Instead, wrap them in another element such as a div, and put the padding on it. That way, you avoid needing to do any hacks for the broken box model in older versions of IE.
  • You can put an ID on each pages’ BODY, and that way, you can easily target elements on individual pages using their body’s ID.
  • Often a good way of doing layout with floats is to keep the document as much using the normal flow layout, and then put in appropriate margins or padding to make space for floats, rather than floating the whole document.
  • The order of values in short declarations like ‘margin: 1px 2px 3px 4px;’ is top, right, bottom, left.
  • It is a good idea to stick to the limited set of web-safe fonts, and also use a number of fallbacks for font family to cover all viewers.

My app’s theme is not finished yet, but CSS has now become more a pleasure than a frustration.

Naked Economics by Charles Wheelan

Just finished reading ‘Naked Economics: Undressing the dismal science’. It was a present from a friend, and I’ve been meaning to read it for a while. Glad I finally got around to it.

From the title, I assumed the book aimed to point out the failures of economics as a science. Not so at all – it was written by an economist and provides a high level overview of capitalism in layman’s terms.

Here’s some interesting questions and explanations from the book:

  • Why do we have money? So that we can indirectly swap our labour or goods for the things we want, even if the person with the things we want is not interested in our labour or goods. Without money, we would need to barter. That’s fine if you’re swapping chickens for rice. But what happens if you do web design, and you want meat for dinner, and the butcher does not want a website?
  • Money has value only because we all believe it does. We have faith that if we sell something (ie, convert it to the common value unit), we will then be able to swap that money for something we want.
  • Why have markets anyway? Markets produce what people want – ie, what people are willing to pay for (or at least what we are convinced into wanting through advertising etc).
  • Why not set the price of everything rather than letting it get worked out in a market? Well, it would be an enormous job, and things would not reflect the cost of production. Eg, bird flu wipes out half of the chickens in the world. There are now less chickens to go around so chicken becomes more expensive. People who really want chicken can still get it, but it costs them more. People who don’t care as much or can’t afford it eat fish or beef instead. If the cost of chicken was a constant mandated by the state, chicken distribution would need to be mandated in some other way. If there’s not enough chicken for everyone who wants it, who should get it? First come first served? Political clout? Personal connections?
  • Markets destroy. A new way to mechanize weaving may make thousands unemployed and destroy towns and communities. But according to Wheelan, the country as a whole is better off as we are able to produce more for less cost, hence increasing our standard of living. Ie, as a consumer, you may now be able to buy a shirt for half the price.
  • In politics, small motivated groups often drive policy. Eg, the general population does not care much one way or other on a subsidy on growing alfalfa. It might cost each person in Australia 0.01c per year. However, if the subsidy was to be removed, and the alfalfa farmers would care a lot. It may well mean their livelihoods so they would demonstrate, make campaign donations, vote as a block and generally make as much fuss as possible to make sure the subsidy was not removed.
  • Why do people work in sweatshops? According to Wheelan, the pay is generally better than for other jobs available – ie, sweatshops are not the cause of the problem, rather a symptom of the general poverty and lack of opportunity in the area.
  • Why is free trade good? So that everyone can do what they do best – ie, specialise to the max. The idea being that if everyone works on what they are most good at, then productivity overall is higher.
  • Why are tariffs bad? Because they support local industries that are not viable – ie, a poor uses of resources.
  • Why do we need governments? To provide the rails for capitalism. Eg, to enforce laws (so you can’t just kill me and take my stuff), to regulate the excesses of the free market and to provide goods and services that people need but that free markets will never provide. Also, to do things that individuals cannot do alone, but are in the interest of the population as a whole – eg, build infrastructure.
  • Care for the environment is a luxury good – ie, if you and your family are starving, cutting down trees to sell for food seems like a pretty good idea.
  • Companies destroy the environment because the current monetary cost of environmental destruction is usually minimal. If the full cost of environmental destruction was factored into the market (eg, companies have to pay for pollution and destruction), then environmental destruction would slow dramatically.
  • Who can create new money? The reserve bank, and it does it by buying bonds from banks with money that did not previously exist.
  • How can the reserve bank change interest rates? It can sell government bonds at its target rate and it can buy bonds (with brand new money) or sell bonds from/to trading banks to influence the amount of cash the banks have to lend. Eg, lots of cash at a trading bank means they’ll lower the interest rates so as to rent out the money.
  • How come the economy can go into recession for no real reason? If people are worried, they don’t spend. If people don’t spend, then companies can’t afford new/current investment. People get sacked and then can spend even less. People get more worried and the cycle continues.
  • Why is the level of savings in a country important? Money in the bank means it can be lent out to people who want to use it to create new businesses or expand current businesses. Access to capital allows growth.

I wouldn’t take these on face value, and I would certainly question some of the assumptions on which they are based. However, they provide some interesting areas for further thought.

A few choice quotes from “The Unbearable Lightness Of Being” by Milan Kundera

Starts slowly with quite a philosophical bent, but becomes really compelling once the main characters are introduced. Some memorable quotes:

Happiness
“If Kerenin had been a person instead of a dog, he would surely have long since said to Tereza, ‘Look, I’m sick and tired of carrying that roll in my mouth every day. Can’t you come up with something different?’ And therein lies the whole of man’s plight. Human time does not turn in a circle; it runs ahead in a straight line. That is why man cannot be happy: happiness is the longing for repetition.”

Love
“The brain appears to possess a special area which we might call poetic memory and which records everything that charms or touches us, that makes our lives beautiful… Their love story did not begin until afterwards: she fell ill and he was unable to send her home as he had the others. Kneeling by her as she lay sleeping in his bed, he realized that someone had sent her downstream in a bulrush basket. I have said before that metaphors are dangerous. Love begins with a metaphor. Which is to say, love begins at the point when a woman enters her first word into our poetic memory.”

A feeling of importance
“We all need somebody to look at us. We can be divided into four categories according to the kind of look we wish to live under. The first category longs for the look of an infinite number of anonymous eyes, in other words, for the look of the public…
The second category is made up of people who have a vital need to be looked at by many known eyes. They are the tireless hosts of cocktail parties and dinners…
Then there is the third category, the category of people who need to be constantly before the eyes of the person they love. Their situation is as dangerous as the situation of people in the first category. One day the eyes of their beloved will close, and the room will go dark..
And finally there is the fourth category, the rarest, the category of people who live in the imaginary eyes of those who are not present. They are the dreamers.”

Kitsch
“Kitsch is the absolute denial of shit, in both the literal and the figurative senses of the word; kitsch excludes everything from its purview which is essentially unacceptable in human existence
Kitsch causes two tears to flow in quick succession. The first tear says: How nice to see children running on the grass! The second tear says: How nice to be moved, together with all mankind, by children running on the grass! It is the second tear that makes kitsch kitsch. The brotherhood of man on earth will be possible only on a basis of kitsch…
And no one knows this better than politicians. Whenever a camera is in the offing, they immediately run to the nearest child, lift it into the air, kiss it on the cheek. Kitsch is the aesthetic ideal of all politicians and all political parties and movements…
In the realm of totalitarian kitsch, all answers are given in advance and preclude any questions. It follows, then that the true opponent of totalitarian kitsch is the person who asks questions…
From that time on, she [Sabina] began to insert mystifications into her biography, and by the time she got to America she even managed to hide the fact that she was Czech. It was all merely a desperate attempt to escape the kitsch that people wanted to make of her life.”

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.”

How to Win Friends and Influence People

“How to Win Friends and Influence People” by Dale Carnegie is a very interesting and practical book. Of the personal/professional development books that I have read, this one is probably the most valuable.

Carnegie summaries each chapter in one sentence as a “principle”. Here they are:

  • Don’t criticise, condemn or complain.
  • Give honest and sincere appreciation.
  • Arouse in the other person an eager want.
  • Become genuinely interested in other people.
  • Smile.
  • Remember that a person’s name is to that person the sweetest and most important sound in any language.
  • Be a good listener. Encourage others to talk about themselves.
  • Talk in terms of the other person’s interests.
  • Make the other person feel important – and do it sincerely.
  • The only way to get the best of an argument is to avoid it.
  • Show respect for the other person’s opinions. Never say, “You’re wrong.”.
  • If you are wrong, admit it quickly and emphatically.
  • Begin in a friendly way.
  • Get the other person saying “yes, yes” immediately.
  • Let the other person do a great deal of the talking.
  • Let the other person feel that the idea is his or hers.
  • Try honestly to see things from the other person’s point of view.
  • Be sympathetic with the other person’s ideas and desires.
  • Appeal to the nobler motives.
  • Dramatise your ideas.
  • Throw down a challenge.
  • Begin with praise and honest appreciation.
  • Call attention to people’s mistakes indirectly.
  • Talk about your own mistakes before criticising the other person.
  • Ask questions instead of giving direct orders.
  • Let the other person save face.
  • Praise the slightest improvement and praise every improvement. Be “hearty in your approbation and lavish in your praise.”
  • Give the other person a fine reputation to live up to.
  • Use encouragement. Make the fault seem easy to correct.
  • Make the other person happy about doing the thing you suggest.

Although these points give a bit of an idea what Cargnegie is advocating, I’d highly recommend reading the book. Each chapter is filled with stories – they are the valuable part as they provide examples of speeches, letters and conversations.

People have criticised the book as coldly manipulative. From reading the table of contents and the title of the book, I would be inclined to agree. Personally, from the content of chapters themselves, I find that a different story emerges. My reading is that Carnegie suggests that most people are fundamentally nice, and if they enjoy your company and you make them feel good they will reciprocate by looking out for your interests. Similarly, people will feel guilty if they are in the wrong, and will resolve their mistakes, as long as they are not angry from hurt pride or similar. Carnegie paints people as highly emotional beings, driven by pride and ego, but with huge untapped potential and happy to help others.

If I had to choose the 3 most important points from the book, I’d say:

  • People desire a sense of importance. Anyone will be pleased to have their opinion sought, talk about something of interest to them or have their achievements recognised and praised.
  • Use a light and indirect touch when trying to change people. Rather than criticising directly, explain a how you made a similar mistake in the past and the consequences, or give the person a good reputation to live up to.
  • When you make a mistake, don’t hide it or argue. Instead, admit it straight out and blame yourself in the strongest terms.

I borrowed the book from the library, but am planning to buy my very own copy. It is worth having on the bookshelf and re-reading.

Page 2 of 3

Powered by WordPress & Theme by Anders Norén