Saturday, 26 November 2011

My .vimrc file

My .vimrc file is below. I use the following plugins: ack.vim, color_sample_pack.vim, easytags.vim, endwise.vim, external.vim, matchit.vim, mru.vim, NERD_commenter.vim, ragtag.vim, rails.vim, repeat.vim, SearchComplete.vim, session.vim, shell.vim, supertab.vim, surround.vim, taglist.vim, yankring.vim.

  1  " Praful's .vimrc file. Used in Windows gvim mainly. 
  2  " I got this initially from 
  3  "   Maintainer: www.swaroopch.com/contact/
  4  "   Reference: Initially based on http://dev.gentoo.org/~ciaranm/docs/vim-guide/
  5  "   se current buffer
  6  "   License: www.opensource.org/licenses/bsd-license.php
  7  " but have since made many changes.
  8  "
  9  " History (Praful):
 10  "   20110429 - commented out "set number" since it conflicts with "set relativenumber"
 11  "   20110710 - add easytag options
 12  "            - disable relativenumber: it's annoying
 13  "   20110918 - change colour scheme to "evening"
 14  "            - remove /v substituion for grep since it doesn't always work well.
 15  "            - use yankring function to map Y to y$ since prev def was being overridden.
 16  "            - add mappings for tab windows
 17  "            - remove reference to vimrc_example.vim since commands now moved into here
 18  "   20110920 - add autosave on losing focus
 19  "            - change leader key from \ to ,
 20  "            - change font to DejaVu Sans Mono pt9
 21  "   20110925 - Restructure and add more options from Steve Losh's vimrc file
 22  "              https://bitbucket.org/sjl/dotfiles/src/tip/vim/.vimrc
 23  "
 24  "
 25  "
 26  " Basic options --------------------------------------------------------------- 
 27  set nocompatible
 28  set encoding=utf-8
 29  set modelines=0
 30  set autoindent
 31  set smartindent
 32  set showmode
 33  set showcmd
 34  "set hidden
 35  set visualbell
 36  set cursorline
 37  set ttyfast
 38  set ruler
 39  set backspace=indent,eol,start "backspace over these places
 40  set nonumber
 41  set norelativenumber
 42  set laststatus=2
 43  set history=1000
 44  set undofile " Allow undos even after file has been closed and reopened
 45  set undoreload=10000
 46  set cpoptions+=J
 47  set nolist
 48  set listchars=tab:▸\ ,eol:¬,extends:,precedes:
 49  "set shell=/bin/bash
 50  set lazyredraw
 51  set matchtime=3 " Tenths of a second to show the matching paren, when 'showmatch' is set
 52  set showbreak=↪ " show this char at beginning of line when it is wraps with previous line
 53  set splitbelow
 54  set splitright
 55  set fillchars=diff:\ 
 56  set ttimeout
 57  set notimeout
 58  set nottimeout
 59  set autowrite
 60  set shiftround
 61  "set dictionary=/usr/share/dict/words
 62  set backup  " keep a backup file
 63  set nospell "enable spell checking
 64  "set spell "enable spell checking
 65
 66  "Don't use this if "set relativenumber" is being used.
 67  set number
 68  " set relativenumber
 69
 70  set autoread "Automatically reload a file if it changes - useful for logs
 71
 72  " redefine leader character
 73  let mapleader = ","
 74
 75  " alternative to ESC, I personally use jj to exit back to normal mode. The only time I’ve ever actually tried to hit two j‘s in a row is just now while writing this entry, so it doesn’t conflict with my normal typing at all:
 76  inoremap jj <ESC>
 77
 78  "use confirm instead of aborting an action
 79  set confirm
 80
 81  set autochdir " current directory is always matching the content of the active window
 82
 83  " remember some stuff after quiting vim:
 84  " marks, registers, searches, buffer list
 85  set viminfo='20,<50,s10,h,%
 86
 87  " Show autocomplete menus.
 88  set wildmenu
 89  set wildmode=list:longest,full
 90
 91  " Any selected text is auto copied to Windows clipboard
 92  " set guioptions+=a "PK 20101013 don't autocopy because we want to select text
 93  " and replace selected text from clipboard.
 94
 95  " Use Windows clipboard as default register for yank, delete, change and put.
 96  " This make * the default register, which is used to access the Windows
 97  " clipboard.
 98  set clipboard+=unnamed
 99
100  " Tabs, spaces, wrapping ========================================= {{{
101
102  set smarttab
103  set tabstop=2
104  set shiftwidth=2
105  set softtabstop=2
106  set expandtab
107  "set wrap
108  set textwidth=85 "was 999
109  set formatoptions=qrn1
110  "set colorcolumn=+1
111  "
112  set display=lastline "show next line instead of @ symbols
113
114  syntax on
115
116  set whichwrap+=<,>,h,l "cursor keys wrap
117  " }}}
118
119  " Quickreturn
120  "add new line from anywhere in line in insert mode
121  inoremap <c-cr> <esc>A<cr> 
122  "
123  "as above but append colon on line first
124  inoremap <s-cr> <esc>A:<cr> 
125
126  " Searching ============================================== {{{
127  set incsearch
128  set hlsearch
129  set showmatch
130  set ignorecase " First ignore case when searching.
131  set smartcase " Search is case-sensitive if an uppercase character appears in search string
132  set gdefault " subst all occurences on line by default
133
134  " Keep search matches in the middle of the window.
135  nnoremap n nzzzv
136  nnoremap N Nzzzv
137
138  " }}}
139
140  " Movement, buffers and windows ================================================ {{{
141  " Minimal number of screen lines to keep above and below the cursor.
142  set scrolloff=5
143
144  " Easy buffer navigation
145
146  map <C-h> <C-w>h
147  map <C-j> <C-w>j
148  map <C-k> <C-w>k
149  map <C-l> <C-w>l
150
151  "close current buffer
152  map <leader>q :bd<CR> 
153
154  "Ctrl-{up,down} to scroll.
155  "The following only works in gvim?
156  nmap <C-up> <C-y>
157  imap <C-up> <C-o><C-y>
158  nmap <C-down> <C-e>
159  imap <C-down> <C-o><C-e>
160
161  "vertically split window and switch over to it
162  map <leader>w <C-w>v<C-w>l
163
164  "keys for tab windows
165  map <leader>n :tabnew<CR>
166  map <leader>j :tabprevious<CR>
167  map <leader>k :tabnext<CR>
168
169  "let j and k work in wrapped long lines.
170  nnoremap <DOWN> gj
171  nnoremap <UP> gk
172  nnoremap j gj
173  nnoremap k gk
174  " }}}
175  "
176  " ---------------- start of selective copy from vimrc_example.vim
177  " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
178  " let &guioptions = substitute(&guioptions, "t", "", "g")
179
180  " Don't use Ex mode, use Q for formatting
181  map Q gq
182
183  " CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
184  " so that you can undo CTRL-U after inserting a line break.
185  inoremap <C-U> <C-G>u<C-U>
186
187  " In many terminal emulators the mouse works just fine, thus enable it.
188  if has('mouse')
189    set mouse=a
190  endif
191
192  " Switch syntax highlighting on, when the terminal has colors
193  " Also switch on highlighting the last used search pattern.
194  if &t_Co > 2 || has("gui_running")
195    syntax on
196    set hlsearch
197  endif
198
199  " Auto-commands --------------------------------------------------------------- 
200  " Only do this part when compiled with support for autocommands.
201  if has("autocmd")
202
203    " Enable file type detection.
204    " Use the default filetype settings, so that mail gets 'tw' set to 72,
205    " 'cindent' is on in C files, etc.
206    " Also load indent files, to automatically do language-dependent indenting.
207    filetype plugin indent on
208
209    " Put these in an autocmd group, so that we can delete them easily.
210    augroup vimrcEx
211    au!
212    
213    "Autosave file when focus is lost; the silent! ignores the error
214    "message that appears when a buffer has never been saved before.
215     autocmd BufLeave,FocusLost * silent! wall
216     "au FocusLost * :wa
217
218    " For all text files set 'textwidth' to 78 characters.
219    autocmd FileType text setlocal textwidth=78
220
221    " When editing a file, always jump to the last known cursor position.
222    " Don't do it when the position is invalid or when inside an event handler
223    " (happens when dropping a file on gvim).
224    " Also don't do it when the mark is in the first line, that is the default
225    " position when opening a file.
226    autocmd BufReadPost *
227      \ if line("'\"") > 1 && line("'\"") <= line("$") |
228      \   exe "normal! g`\"" |
229      \ endif
230
231    augroup END
232
233  else
234    set autoindent    " always set autoindenting on
235  endif " has("autocmd")
236
237  " Convenient command to see the difference between the current buffer and the
238  " file it was loaded from, thus the changes you made.
239  " Only define it when not defined already.
240  if !exists(":DiffOrig")
241    command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
242        \ | wincmd p | diffthis
243  endif
244  " ---------------- end of copy from vimrc_example.vim
245  "
246  filetype plugin on
247
248  " For Ruby
249  autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
250  autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
251  autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
252  autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
253
254
255  "source $HOME/vimrc_example.vim
256  source $HOME/mswin.vim
257  behave mswin
258
259
260  " leader keys --------------------------------------
261
262  map <leader>s :update<CR>
263  map <leader>t :TlistToggle<CR>
264  map <leader>y :YRShow<CR>
265
266  " toggle visible whitespace
267  nmap <silent> <leader>l :set list!<CR> 
268
269  " write session
270  map <leader>ss :mksession! ~/vim_session <cr> 
271  " restore session
272  map <leader>rs :source ~/vim_session <cr>     
273
274  "underline current line
275  nnoremap <leader>1 yypVr- 
276
277  "reselect the text that was just pasted so I can perform commands (like indentation) on it:
278  nnoremap <leader>v V`]
279
280  " quickly open up my ~/.vimrc file in a vertically split window so I can add new things to it on the fly.
281  nnoremap <leader>ev <C-w><C-v><C-l>:e $MYVIMRC<cr>
282
283  " end of leader keys -------------------------------
284  "
285  " Map ; to : since it’s one less key to hit 
286  "nnoremap ; :
287
288
289  " Set color scheme 
290  if has("gui_running")
291    set gfn=DejaVu_Sans_Mono:h9:cANSI
292    "set gfn=Consolas:h9
293    set lines=50
294    set columns=150
295    "colorscheme evening
296    colorscheme neon-PK
297
298  else
299  "    colorscheme darkblue
300  endif
301
302  " Status line ----------------------------------------------------------------- {{{
303  set laststatus=2
304  set statusline=
305  set statusline+=%-3.3n\                      " buffer number
306  set statusline+=%f\                          " filename
307  set statusline+=%h%m%r%w                     " status flags
308  set statusline+=\[%{strlen(&ft)?&ft:'none'}] " file type
309  set statusline+=%=                           " right align remainder
310  set statusline+=0x%-8B                       " character value
311  set statusline+=%-14(%l,%c%V%)               " line, character
312  set statusline+=%<%P                         " file position
313
314  set statusline=%F%m%r%h%w\[%{strlen(&ft)?&ft:'none'}]\ (%{&ff}/%Y)\ %=line\ %l\/%L,\ col\ %c:\ 0x%-8B\ %<%P
315
316  " Show line number, cursor position.
317  set ruler
318  " }}}
319  "
320
321  " To insert timestamp, press F3.
322  " nmap <F3> a<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
323  " imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
324
325  " Define F3 to paste the results of the last search into a new window
326  nmap <F3> :redir @a<CR>:g//<CR>:redir END<CR>:new<CR>:put! a<CR><CR>
327
328  " To save, press ctrl-s.
329  nmap <c-s> :w<CR>
330  imap <c-s> <Esc>:w<CR>a
331
332  " unhighlight search results
333  :map \\ :noh<return>
334
335
336  " To close file, press ctrl-w
337  " nmap <c-w> :close<CR>
338  " imap <c-w> <Esc>:close<CR>
339
340  " Grep without special vim characters
341  " PK this doesn't always work: so remove
342  "nnoremap / /\v
343  "vnoremap / /\v
344  "cnoremap %s/ %s/\v
345
346
347
348  " Plugins ========================================================= }}}
349  " Tell taglist where Exuberant Tags is installed and map F8 to toggle tag list
350  "
351  " on and off.
352  let Tlist_Ctags_Cmd="C:\\apps\\ctags58\\ctags.exe"
353  let Tlist_GainFocus_On_ToggleOpen=1
354  let Tlist_Use_Right_Window = 1
355  let Tlist_Close_On_Select = 1
356  noremap <silent> <F8> :TlistToggle<CR>
357  "Easytags (enables CTRL=] and CTRL-T) by autotagging  
358  set tags=./.tags;,~/.vimtags
359  let g:easytags_cmd = "C:\\apps\\ctags58\\ctags.exe"
360  "   use local tag files instead of the global .vimtags
361  let g:easytags_dynamic_files = 1
362  "   disable highlighting
363  let g:easytags_auto_highlight = 0
364
365  " yankring shortcut
366  nnoremap <silent> <F12> :YRShow<CR>
367  inoremap <silent> <F12> <ESC>:YRShow<cr>
368  let g:yankring_n_keys = 'Y D x X'
369
370  " Make Y behave like D and C
371  "nnoremap Y y$ "PK this doesn't work with Yankring; use function below
372
373  let g:session_autoload = "yes"
374  let g:session_autosave = "yes"
375  let g:session_default_to_last = 1
376
377  " tell yankring to set Y to y$
378  function! YRRunAfterMaps()
379    nnoremap Y   :<C-U>YRYankCount 'y$'<CR>
380  endfunction
381
382  " Ack {{{
383
384  map <leader>a :Ack! 
385
386  " Ack for the last search.
387  nnoremap <silent> <leader>? :execute "Ack! '" . substitute(substitute(substitute(@/, "\\\\<", "\\\\b", ""), "\\\\>", "\\\\b", ""), "\\\\v", "", "") . "'"<CR>
388  " }}}
389  "
390  " }}}
391  "
392  set diffexpr=MyDiff()
393  function MyDiff()
394    let opt = '-a --binary '
395    if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
396    if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
397    let arg1 = v:fname_in
398    if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
399    let arg2 = v:fname_new
400    if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
401    let arg3 = v:fname_out
402    if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
403    let eq = ''
404    if $VIMRUNTIME =~ ' '
405      if &sh =~ '\<cmd'
406        let cmd = '""' . $VIMRUNTIME . '\diff"'
407        let eq = '"'
408      else
409        let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
410      endif
411    else
412      let cmd = $VIMRUNTIME . '\diff'
413    endif
414    silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
415  endfunction
416
417

Vim colour theme - neon-PK

I uploaded my version of the Vim neon color theme to the Vim site. When using the DejaVu Sans Mono font on Windows, it looks like this:

Monday, 10 July 2006

Zidane

I don’t know what was sadder for me: Zidane’s Moment of Madness or France losing the World Cup after having, for the most part, outplayed Italy.

Undoubtedly, Zidane was provoked. It has been said that this does not make his behaviour excusable. But I wonder: why not? How many people would put up with insults in every day life, for example, at work? Sure, some people would turn the other cheek but not everyone. And how many people will ever feel the pressure that Zidane was under during the World Cup? How much provocation is enough to take someone over the edge?

Of course, some people believe that those in the public eye should be role models – and I’m sure some try to be. But not everyone is made out to be.

In football, so often, the person goading or perpetrating the initial foul gets away with it. It is the retaliator who gets punished. However, the greater punishment should go to the perpetrator of the first misdeed.

The French say that to understand is to forgive. I don’t think we’ll ever understand Zidane - a quiet, private person who shuns the limelight. But we should forgive him because, for so many years, his genius allowed him to glide around on the football pitch and put a smile on the face of every fan of football.    

Monday, 19 September 2005

The Corporation

I have just finished reading The Corporation by Joel Bakan. In it, Bakan writes about the history and current state of large companies.

Nowadays, many corporations have a “social responsibility” department. Are these departments genuinely concerned with their impact on society or they there for PR purposes?

In most countries, corporations have a legal responsibility to one group of people: their shareholders. If shareholders demand higher profits (and they usually do), that is what corporations must deliver. Therefore, any socially responsible acts cannot undermine the need to maximise profits. If corporations have a choice between being more profitable and being socially responsible, they must legally choose to be more profitable.

The US law courts endorsed this rationale many years ago. The Ford Motor Company (when under Henry Ford) was successfully prosecuted when it acted against this doctrine. Ford had this quixotic notion that companies should make a reasonable profit, that it should not be too excessive.

Of course, corporations cannot break the law. Or rather, they should not break the law. As it happens some corporations regularly flout certain (e.g. environmental) legislation. They do this because the cost of being successfully prosecuted is less than the gain of breaking the law.

General Motors were prosecuted by someone whose car caught fire after someone went into the back of it. It turned out that GM moved the petrol tank closer to the back because it reduced the production costs. GM made the calculation that the few fatalities were, for them, an acceptable price to pay for the increase in profits. The original decision against GM was upheld on appeal. GM are appealing again.

One way that companies try to reduce costs is by “externalising” them. This is a roundabout way of saying that they make society pay for their costs. For example, if a government has decided that people need to earn £6 an hour to meet basic needs and a company pays £4 an hour, there is a shortfall. Who makes up that shortfall? In many European countries, governments, i.e. taxpayers, make up the shortfall. If companies pollute rivers, governments clean them up: the taxpayer foots the bill – not the polluter. To prevent this, companies could bear the costs themselves (“internalise” them). To maximise profits, companies do not voluntarily internalise costs. That is why self-regulation tends not to work.

In the personal domain, there is a recognition that self-regulation does not work. When it comes to individual behaviour (murder, theft), societies have laws, which are enforced.

In the early twentieth century, much regulation was introduced to make corporations act responsibly. However, the late twentieth century saw governments removing laws via deregulation and letting corporations regulate themselves.

Deregulation, if it means self-regulation, can result in social irresponsibility. Bakan gives several examples of corporations repeatedly breaking laws. They perform a cost/benefit analysis and decide that it’s more cost effective to, say, pollute a river.

Removing or weakening environmental legislation, say, is not the only way of reducing costs for corporations. Certain recent governments (e.g. US) have reduced the budgets of enforcement agencies so that they can’t do their jobs effectively.

One way to ensure that corporations don’t transfer their costs to society is to ensure that appropriate legislation exists and that there are agencies sufficiently well funded to effectively enforce the legislation. There should also be a strong enough deterrence to prevent corporations repeatedly breaking the law.

You can discuss the issues raised by the book here.

Thursday, 15 September 2005

Vital Lies, Simple Truths

In his book Vital Lies, Simple Truths, Daniel Goleman talks about “schemas”:
A schema, in the words of the cognitive psychologist David Rumelhart, is "a kind of informal, private, unarticulated theory about the nature of events, objects, or situation which we face. The total set of schemas we have available for interpreting our world in a sense constitutes our private theory of the nature of reality".

He goes on to provide an amusing example of what happens when we don’t change our schemas in the light of new experience:
Jean Piaget studied how schemas change as children grow. As we learn, schemas change. When someone fails to revise a schema to fit the facts, the resulting perceptions can be bizarre. To make the point Ulric Neisser tells the joke about a man who goes to a psychiatrist with the problem that he thinks he's dead. After several sessions, the psychiatrist says to him, "You've heard, of course, that dead men don't bleed". The psychiatrist takes a pin and jabs him in the arm so he bleeds. "What do you say now?" he asks. The patient says, "Well, what do you know? Dead men do bleed".

Goleman also discusses Erving Goffman’s theory of frames. He gives two interesting examples of how people are pigeonholed. The first (also provided by Goffman in The Presentation of Self in Everyday Life) is a quote from Sartre:
Their condition is wholly one of ceremony. The public demands of them that they realize it as a ceremony; there is the dance of the grocer, of the tailor, of the auctioneer, by which they endeavour to persuade their clientele that they are nothing but a grocer, an auctioneer, a tailor. A grocer who dreams is offensive to the buyer, because such a grocer is not wholly a grocer. Society demands that he limit himself to his function as a grocer, just as the soldier at attention makes himself into a soldier-thing with a direct regard which does not see at all, which is not longer meant to see, since it is the rule and not the interest of the moment which determines the point he must fix his eyes on (the sight "fixed at ten paces"). There are indeed many precautions to imprison a man in what he is, as if we lived in perpetual fear that he might escape from it, that he might break away and suddenly elude his condition.

The following dialogue in the film My Dinner with André provides the second example:
André:...if we allowed ourselves to see what we're doing every day, we might find it just too nauseating. I mean, the way we treat other people - I mean, you know, every day, several times a day, I walk into my apartment building. The doorman calls me Mr. Gregory, and I call him Jimmy. The same transaction probably occurs between you and the guy you buy groceries from every day, in some other way...You see, I think that an act of murder is committed in that moment, when I walk into my building. Because here is a dignified, intelligent man, a man of my own age, and when I call him Jimmy, then he becomes a child, and I'm an adult...

Wally: Right. That's right. I mean, my God, when I was a Latin teacher, people used to treat me - I mean, if I would go to a party of professional or literary people, I mean, I was just treated - uh - in the nicest sense of the word, like a dog. In other words, there was no question of my being able to participate on an equal basis in the conversation with people. I mean, I would occasionally have conversations with people, but when they asked what I did, which would always happen after about five minutes - uh, you know, their faces - even if they were enjoying the conversation, or they were flirting with me or whatever it was - their faces would just, you know, have that expression like the portcullis crashing down, you know, those medieval gates -

Saturday, 27 August 2005

My Fair Lady

Sometimes, I turn on the TV while I’m eating with the intention of switching it off after I’ve finished.

However, occasionally, a film has started - one of those films that you only have to see a bit of to make you want to see the rest of it. We all probably have a list. And it doesn’t necessarily have to be one of your favourite films: there just has to be something compelling about it; something that makes you want to see the end of it even though you’ve seen the ending many times.

Well, that just happened to me with My Fair Lady. It is probably one of my favourite musicals – a genre I’m not too fond of. Grease is another favourite musical.

The films I usually watch through to the end even if I catch them in the middle include: any Star Wars, any Raiders, any Godfather, Goodfellas, Casino, Pulp Fiction, Reservoir Dogs, Jean de Florette, Manon de Source and probably loads more that I can’t think of at the moment.

There should be a name for these types of films. For convenience, in future, when I come across more films like these, I’m going to call them Fair Ladies, eg “I came across another Fair Lady the other day. It was …”.

Thursday, 25 August 2005

Country House Montali

The Lakes mentioned the other day wasn’t our first holiday this year. In June, we went to this wonderful vegetarian place in Umbria, Italy.

The owners of Country House Montali have flown the vegetarian flag for about 20 years in a country where there are very few vegetarians.

We got the impression that Country House Montali is not a money-spinner. We are sure that the place would be more profitable if it employed fewer people, catered only for non-vegetarians, and served bland food. It’s our good fortune that they are passionate about vegetarianism and put quality first.

All sorts of people stay there. One couple we met had returned for their second stay – and they weren’t even vegetarians. Incidentally, they did the cookery course and spent four hours preparing an evening meal. They were very tired at the end of it and said that the chefs had started on the meal a few hours before them!

There are about eight people who work at Country House Montali, four of whom are chefs! The chefs spend several hours a day preparing meals. The care and attention put into meals is unparalleled. All the staff have been trained – and it shows. They were helpful, courteous, flexible, and unobtrusive. We always felt relaxed when they were around.

One of us is a vegetarian and the other is a vegan. We did not pay any surcharge for the vegan meals. We have eaten vegetarian and vegan food on six continents. It’s difficult finding vegetarian food in many places; vegan food is almost impossible. Often, we’re relieved when we find something edible. Nonetheless, we have had some great meals, for example, in Vietnam and Sri Lanka. However, the meals at Country House Montali were probably the best we’ve ever had. The flavours were exquisite. The meals were unique: you will not find the recipes anywhere. You could tell that the meals were lovingly prepared by people who had a real passion for food.

If your idea of a great meal is a burger served in a few minutes then Country House Montali is probably not the place for you. The evening meal usually took about two hours. Each course was well paced to allow people time to savour and digest it. You could describe it as gourmet food. However, when we think of gourmet food, we think of well-presented food, in a rather formal setting, that leaves us hungry! This was nothing of the sort. We have large appetites but the portions filled us up – and we were swimming twice a day and sightseeing for six hours a day.

There was a relaxed atmosphere in the dining room too. We frequently talked and joked with the other diners. Some of the diners were not staying at the place but came simply to dine there. We were also pleasantly surprised by the excellent and eclectic music that played in the background. There was something for all tastes.

As if the delicious food was not enough, Country House Montali is located on the top of a plateau. There are picturesque views in all directions. When you add the homely rooms and large swimming pool, you have all the ingredients for an ideal holiday.

We hope you’re beginning to realise what an extraordinary place Country House Montali is. It is, obviously, a labour of love. If you want to eat some of the best food in the world in beautiful surroundings and believe that hotel owners should be passionate about vegetarianism, then Country House Montali is the place for you. We wholeheartedly recommend it!

Wednesday, 24 August 2005

Robin Cook

Robin Cook’s early death reminded me of his resignation speech. Some people did not believe him when he said “Iraq probably has no weapons of mass destruction in the commonly understood sense of the term - namely a credible device capable of being delivered against a strategic city target”.

When politicians make fairly unambiguous statement, it means
  1. they’re telling the truth
  2. they’re lying and they think no one can find out
If Robin Cook had been lying, we would have found out very soon because the US and UK were going into Iraq. This means that he probably had good evidence for saying what he did. He had probably learnt this when he was Foreign Secretary.

It turned out that he knew more than we imagined. In his autobiography, he said that Tony Blair told him, before the war, that Iraq had no weapons of mass destruction.