Book Review: The Elements of Computing Systems

I do not fear computers. I fear the lack of them.
– Isaac Asimov

Introduction

Computer programming is a passionate hobby for me from my school days. But I ended up taking a degree in electrical engineering. Almost everything I know about computing is self learnt. This is true for a lot of programmers out there. Most of us are proficient in one or more computer languages and are familiar with the technology stack we use in our day to day work. Yet most of us also have a nagging feeling that we don’t know fully how computers work!

Interestingly this is a problem faced even by computer science graduates! This is due to the high level of specialization and separation of computer science topics. Hence even CS graduates miss the elegant big picture of the computing field. The Elements of Computing Systems is a book designed to address this gap. This book attempts to provide a complete high level summary of the computing basics in just about 250 pages! Man, it does a really good job at that!

As you go through each chapter in the book, you are required to build each building block of a computer. You start with the basic Boolean logic gates and then move onto building complex Boolean circuits, Arithmetic & Logic Unit (ALU), CPU, memory modules, machine language, assembler, virtual machine, high level language, compiler and finally even an operating system!

Book Review: The Elements of Computing Systems

The Elements of Computing Systems (also known as Nand2Tetris) is written by two computer science professors, Noam Nisan and Shimon Schocken. It is a self study guide for building a modern computer from first principles. The book’s basic premise is that the best way to understand how computers work is to build one from scratch! The book consists of 13 chapters each containing a project that the reader is supposed to solve. The only pre-requisite for the book is the knowledge of a programming language.

If you study the book and then solve all the programming problems in it, you will get a deep understanding of the following topics,

  • Boolean logic and logic design
  • Data representation in computers
  • Designing memory, ALU and CPU
  • Practical use of data structures & algorithms such as stack, list, recursion etc.
  • Method call stack, object allocation and heap
  • Variable types, scope, object and array representation
  • Memory addressing and memory mapped I/O
  • How to write an assembler, virtual machine, compiler and operating system!

Obviously building a full fledged computer from basic logic gates is a very complex undertaking. However the authors have simplified this challenge substantially by adopting a number of clever strategies. These strategies ensure that the programming problems doesn’t become too complex for a beginner,

  • We use a hardware simulator for building computer hardware. This avoids the need for working with physical components. Yet at the same time this teaches you everything you need to know about hardware!
  • This course ignore error handling and optimization problems. For example, when you write a compiler you can assume that the program being compiled is error free. Optimization is an important yet hard problem. Ignoring it makes things simpler.
  • The ALU (Arithmetic and Logic Unit) and CPU built as part of this course has a very simple instruction set. For example, the CPU we build won’t have any native multiplication capability. Also it only works with 16-bit integers.
  • The assembly language and high level language (Jack) are all a bit verbose. But this substantially reduces the complexity in building assembler, VM code generator and compiler.
  • Each chapter contains almost the entire design of what you are building. The design and the hints provided are the keys to the simplicity and the power of this course.

The Elements of Computing Systems consists of 13 chapters contained in about 250 pages. Each chapter starts with a background section, describing relevant concepts. The next section is specification, which provides a clear statement of the system’s abstraction – namely, the various services that is expected to deliver. The chapter then proceeds to discuss how the abstraction can be implemented leading to a proposed implementation section. The next section, perspective, highlights the important issues left out from the chapter. Each chapter ends with a project section, which provides a detailed guide on building and testing the system described in the chapter.

Here is a summary of the chapters,

  1. Boolean Logic – The book starts with quick introduction to Boolean logic and logic gate circuits. Using the basic Nand gate, a hardware description language (HDL), and a hardware simulator, you will build other logic gates such as And, Or, Xor and Multiplexer. An HDL tutorial is provided in the appendix.
  2. Boolean ArithmeticHack Machine CodeChapter 2 introduces Boolean arithmetic and signed integer representation in computers. You will build logic circuits for adding binary numbers using the chips built in the previous chapter. Finally you will build an arithmetic and logic unit (ALU) capable of doing arithmetic and logical operations.
  3. Sequential Logic –  Introduces sequential logic and explains why a clock is necessary to maintain state in logic circuits. This chapter assumes flip-flop as the basic building block and then proceeds to show how memory registers can be built. You will build a program counter and memory units as large as 8K.
  4. Machine Language – Introduces a simple machine language capable of doing computation and memory access. The compute instruction is defined such that it can be implemented using the ALU built in the previous chapter. The machine language is simple and easy to learn and implement.
  5. Computer ArchitectureHack Assembly Instructions This chapter combines the hardware components and the machine language to build a full fledged computer. You will combine memory, ALU and control chips to build the Hack computer. A keyboard and display is also added using memory mapped I/O. In Hack architecture, instruction memory and data memory are kept separate.
  6. Assembler –  This chapter take us to the software land. You need to know a high level language to solve the programming problems from this chapter onwards. A simple mnemonic set is defined for the Hack machine language. You will then build an assembler for converting these mnemonics to actual machine language. 
  7. Virtual Machine – I: Stack Arithmetic – Many modern languages (Java, C# etc.) are compiled to an intermediate virtual machine code for portability. This chapter introduces a stack based virtual machine language/architecture. You will need to write a program to convert the VM instructions to the assembly language defined in the previous chapter. This is a complex activity and hence is split into two chapters.
  8. Virtual Machine – II: Program ControlHack VM Code This is a continuation of the previous chapter and you will build the program control part of the virtual machine. Once you have completed the VM to assembly converter, you can write programs with less effort compared to the assembly language.
  9. High-Level Language – Introduces a high level language called Jack. It is similar to Java but is more verbose so as to help the compiler writer. Write a number of programs in Jack language to get a feel for it.
  10. Compiler – I: Syntax Analysis – The next logical step is to write a compiler that can translate the high level Jack code to the virtual machine code. It is a complex project and hence is attempted in two chapters. This chapter introduces the syntax analysis and parsing techniques of compilers. You will write a parser for the Jack program to convert it into a sequence of tokens.
  11. Compiler – II: Code GenerationJack code for Tic Tac Toe Introduces the common compiler techniques for code generation. Using the parser from the previous chapter, you will write a full fledged Jack compiler. However you will need to use a number of library Jack classes for your program to work. In the next chapter, you will build these library classes.
  12. Operating System – Introduces the concept of an operating system. You will build a number of library classes in Jack language providing the basic OS services for the Hack platform. These include modules such as Keyboard, Screen, Output, Math, Array, String and Sys.
  13. Postscript: More Fun to Go – The final chapter provides a number of pointers to extend the Hack platform. Optimization and error handling are two obvious things to do. Another challenging thing would be to relax the rules of Jack language to increase the complexity of the Jack compiler.

All the required software (including source code) for the book is available on the nand2tetris home page.

The book is elegant, concise and very well structured. Clearly the course material has undergone extensive testing over the years. Each chapter provides hints so you get a high level idea of the solution. But it rarely tells you how to solve something. That is what makes this book so good. You have to really think and find solutions to tough programming problems. Also later chapters are tougher than initial ones.

I think there isn’t even a single redundant/unnecessary sentence in the book!

It took me around 20 days of dedicated work to complete the entire book including all the projects. It took me a while to solve the compiler code generator and the operating system chapter. I got stuck many times while working on the projects. I had an irresistible urge to look for solutions on the Web. But luckily I was able to overcome that urge and solve them on my own. This is something I suggest you do too. Don’t look up solutions on the web or forums. Try to solve problems on your own for the reward of intellectual satisfaction.

One limitation of the computer system we build as part of this course is that it can only work with 16-bit integers. This means that instruction memory size is limited to 32K. Since the code generators we build are not optimized, even simple Jack programs can lead to large machine code that won’t fit in instruction memory. This means that you won’t be able to compile your Tetris program all the way to machine code and then run it on the virtual hardware you built using HDL. Instead you will have to use the VM emulator to run your programs.

Finally this course reminds us the importance of abstractions in human progress. Most of the time we never need to look at what happens under the hood. Our abstractions protect us from all the underlying complexity. But never hesitate to look beyond the abstractions when needed.

Many colleges run computer science courses based on this book. The first half of the book is also available as a course in Coursera.

For a quick introduction to the book, please check out this short video by one of the authors (Shimon Schocken),

Summary

Computers have become an integral part of human existence. Almost everyone now carries a full fledged computer in their pocket! If you are looking for just one book that will help in you in understanding how computers really work, this is the book.

If you are a software developer or is planning to become one in future, you should read the book and complete all the programming projects. It will give you a deep insight into computer architecture and you will find it valuable throughout your career.

I enjoyed the book very much including all the projects in it. In fact this book gave me the best self-study experience in my life. The whole learning journey is one of intellectual thrill and intellectual satisfaction. Some may even find it a life changing experience. Highly recommended!

My Rating: 10/10

Further Reading/Additional Resources

October 2, 2016 | Posted in Programming | No Comments »

Book Review: Sapiens, A Brief History of Humankind by Yuval Noah Harari

Introduction

When I read non-fiction books these days, I get a nagging feeling that the author could have communicated the idea in a much shorter book. Many books these days, especially in the self-help category, are bloated works converted from one or two blog posts. But very rarely you come across a masterpiece book and wish that it was bigger. Sapiens, A Brief History of Humankind by Yuval Noah Harari is one such book!

Yuval Noah Harari is an Israeli professor of history at Hebrew University of Jerusalem. His free YouTube course "A brief History of Humankind" covering 17 lessons and 62 videos is very popular. He wrote "Sapiens" originally in Hebrew and was later translated to other languages including English.

In less than 500 pages, Harari takes us through an exhilarating journey of human history. The topic of human history is so large, that it is a real challenge to decide what to include and what to ignore. Harari takes a high level view of human life over the centuries, but he also takes us through the perspective of common people when needed. Most of the things that traditional history textbooks usually cover are only very briefly touched upon.

Harari argues that it is our ability to gossip and believe in collective myth that has led to the unprecedented growth of human species. Everything that is the foundation of modern human civilization – money, religion, capitalism, consumerism and democracy is the result of our ability to believe in collective myth. Harari claims that it has enabled us to bypass evolution and even become gods on earth!

I am a huge fan of history and once I started reading it, I couldn’t put it down. The book triggers your imagination and curiosity. Harari tells many interesting stories. The lack of "political correctness" and "relaxed historical accuracy" may annoy or anger some readers! Here is an advice for easily offended readers – treat it as fiction!

Is there anything more dangerous than dissatisfied and irresponsible gods who don’t know what they want?

Summary: Sapiens, A Brief History of Humankind

Sapiens book is organized into 4 main parts covering last 70,000 years of human history,

  1. The Cognitive Revolution – Harari argues that it is our ability to gossip and believe in collective myth that led to the unprecedented growth of human species. He argues that it is this sudden ability that enabled us to be the only dominant human species on the planet. This part also takes a look at the day to day lives of early humans and explores the link between human growth and extinction of other animal species.
  2. The Agricultural Revolution – Is agricultural revolution history’s biggest fraud? Harari argues that for the farmers, this revolution manly offered suffering and death. This is an interesting conclusion since we think about agricultural evolution as a major achievement of human species. In more recent times, we have even started romanticizing farming and agriculture. This part also covers the evolution of language and bureaucracy.
  3. The Unification of Mankind – Harari argues that even though human culture has been in constant flux through the centuries, there has always been a definite direction to where we are going. Humans across the planet now form one large family. This part also explores the roles played by money, religion and imperial vision in unification of mankind.
  4. The Scientific Revolution – This section explores some of the reasons behind rapid industrial and scientific growth of European nations. Harari argues such a rapid advance is made possible by our acceptance of the fact that we know little about the world around us. It is our acceptance of ignorance that fuelled rapid scientific innovations. This section also explores the unification of the state, business and science.  Obviously there are dangers in the marriage of business and science.

Each of the above parts have 4 or 5 chapters dealing with topics related to that era. For example, one chapter looks at the origins of money while another chapter explores why agricultural revolution may be a disaster as far as individuals are concerned. Sometimes you get to hear an interesting story, sometimes you get to see a photograph of historical significance.

After going through the entire human history, finally Harari turns into the philosophical questions of human existence such as the meaning of human life and human happiness. He briefly touches upon the consumerism and its effects on human happiness. He points out that we are on the threshold of becoming the gods on earth!

Review: Sapiens, A Brief History of Humankind

Harari’s Sapiens is an excellent summary of human history. It mainly covers the last 70,000 years of human history. But it is not merely about history as Harari is more interested in the motivations of the people behind history. And it is also full of his own conclusions! He argues that the large-scale cooperation of human beings is what made us the masters of the planet.  He also briefly touches on philosophy and the chemical and biological interpretations of our behavior.

For any historian, it is important to at least partially suspend his personal beliefs while explaining historical findings. Harari does a very good job at that. He presents multiple viewpoints and theories of a historical event without actually taking sides. He admits that even today we are ignorant of many things including ancient history which left no evidence for us to study. However when it comes to conclusions, he has his own ideas which are very compelling!

Even though Harari doesn’t take any side in the debate of animal rights and vegetarianism, he paints a grim picture of the plight of domestic animals. There is no doubt that we are very brutal when it comes to industrial handling of animals used for meat and milk. The book contains plenty of horror stories. Historically my own local culture has been much more considerate towards the domestic animals, but money and industrialization is changing that. But here again, we need to be aware of the food requirements of 700 billion people!

One controversial part of the book is where Harari calls the agricultural revolution as history’s biggest fraud! He rightly points out that agricultural life has lead to lot of human suffering – tyranny of the elite classes, the quick spread of deadly diseases etc. Some are critical of this conclusion and argues that he underestimated the challenges faced by the so called happy "hunter-gatherers".

But we need to be aware that it is nearly impossible to make a judgment of history from our current privileged life. Many of the ideas and behaviors of my local community may be unacceptable to someone from a western country. In such a scenario, how can we judge people who lived thousands of years ago?

Towards the end of the book, Harari does a broad analysis of human happiness, looking not just at the philosophical question, but also the chemical and biological findings behind it. This section is sure to leave the reader confused if not completely depressed!

The small stories and intriguing photographs interspersed across the chapters makes the book a memorable read. It made me curious enough to investigate the background of the Lion-man, learn more about Gobekli Tepe and study the Buddhist teachings. And it made me think about what we are doing to our domestic animals bred for meat and milk.

Conclusion

Yuval Noah Harari’s Sapiens, A Brief History of Humankind is a brilliant piece of work. It is full of shocking and thought provoking stories. The vivid, crispy and witty language will dazzle you and its conclusions may even change your perspective on life. This is a masterpiece, get your copy today!

What do we want to want?

My Rating: 9/10

Further Reading/Additional Resources

August 18, 2016 | Posted in Opinion | No Comments »

Book Review: The First 20 Hours, How to Learn Anything Fast by Josh Kaufman

Anyone who stops learning is old, whether at twenty or eighty. Anyone who keeps learning stays young.
– Henry Ford

Introduction

I consider myself a learning junkie. I have a wide variety of interests such as chess, model railways, reading, DIY, programming, photography, travel, writing etc. Even the title logo of this blog is a collection of things that I am passionate about.  With a family of 2 children and a full time job, I find it is extremely difficult to spend time on my current hobbies let alone pick up new skills.

When I picked up the book, “The First 20 Hours, How to Learn Anything” by Josh Kaufman, I realized I am in the same boat as the author. Kaufman has a wide range of interests and claims that he spends a focused amount of time in learning something new and can become good at it in 20 hours. He calls this technique – “Rapid Skill Acquisition”. In this book, Kaufman covers the basics of this technique and explains how he applied it in learning a number of diverse skills. I was hooked!

How to learn anything fast!

Book Review: The First 20 Hours, How to Learn Anything Fast by Josh Kaufman

The First 20 hours, How to Learn Anything Fast is a book on “Rapid Skill Acquisition”. Kaufman claims that by following a disciplined process, it is possible to become fairly good in any skill in 20 hours of deliberate practice. The book starts off with a look at the 10,000 hour rule popularized by Malcolm Gladwell in the book Outliers: The Story of Success. Kaufman explains that 10,000 hour practice is needed for world class mastery, but not for becoming good at something. Most of the time we are not trying to become world champions or world class performers. We just want to be good at certain skills especially when we are pursuing hobbies such as chess or fishing.

Kaufman claims that it takes only 20 hours of disciplined and focused approach to learn any new skill from scratch (I am not sure from where he got this magical number!). He calls this approach “Rapid Skill Acquisition”. According to him there are four key elements of rapid skill acquisition,

  • Deconstructing a skill into the smallest possible sub skills
  • Learning enough about each sub skill to be able to practice intelligently and self-correct during practice
  • Removing physical, mental, and emotional barriers that get in the way of practice
  • Practicing the most important sub skills for at least twenty hours

Kaufman then explains the differences between skill acquisition, learning, training and education. This is followed by a detailed explanation of ten principles of rapid skill acquisition and ten principles of effective learning. I found these sections the most valuable part of the book. These principles also provide a good summary of the book,

Ten Principles of Rapid Skill Acquisition

  1. Choose a lovable project
  2. Focus your energy on one skill at a time
  3. Define your target performance level
  4. Deconstruct the skill into sub skills
  5. Obtain critical tools
  6. Eliminate barriers to practice
  7. Make dedicated time for practice
  8. Create fast feedback loops
  9. Practice by the clock in short bursts
  10. Emphasize quantity and speed

Ten Principles of Effective Learning

  1. Research the skill and related topics
  2. Jump in over your head
  3. Identify mental models and mental hooks
  4. Imagine the opposite of what you want
  5. Talk to practitioners to set expectations
  6. Eliminate distractions in your environment
  7. Use spaced repetition and reinforcement for memorization
  8. Create scaffolds and checklists
  9. Make and test predictions
  10. Honor your biology

I loved the following extract quoted by Kaufman from another book, Art & Fear: Observations on the Perils (and Rewards) of Artmaking by  David Bayles. This is a brilliant illustration of the power of practice (quality comes from quantity),

The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the “quantity” group: fifty pound of pots rated an “A”, forty pounds a “B”, and so on. Those being graded on “quality”, however, needed to produce only one pot — albeit a perfect one — to get an “A”.

Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the “quantity” group was busily churning out piles of work – and learning from their mistakes — the “quality” group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.

I found the first 40 pages of book informative and full of value. I have now adopted his methodology as a checklist whenever I try to learn something new. This book also got me interested in game of Go and Ukulele. 

However some may find that beyond first 40 pages of book, there is little to learn. In the remaining pages, Kaufman explains how he applied the rapid skill acquisition in his areas of interest. I liked these sections, but some readers may find it somewhat boring. I have also felt that in some chapters the learning process is presented as too easy and simple. For example, his learning process on programming seems so simple, yet in practice it is nothing but simple (except perhaps for geniuses). I think the author hides the fact that usually there is considerable time required for research activities. Hence you will end up spending much more than 20 hours to learn something.

I also ended up picking up a number of good books such as The Personal MBA and Art & Fear. Please see further reading section below for the full reading list.

Conclusion

The First 20 hours, How to Learn Anything Fast by Josh Kaufman is a mini manual for rapidly acquiring new skills. If you are passionate about learning new skills like me, you will find this book informative and engaging. The bulk of the book consists of how Kaufman applies the rapid skill acquisition techniques in acquiring skill in his areas. If that is not something you are interested in, I suggest you watch Kaufman’s TEDX presentation instead of buying the book.

Finally there is a larger question to answer before you pursue “rapid skill acquisition” to acquire a diverse set of skills. Do you want to be a jack of all trades and master of none?

For 37 years I’ve practiced fourteen hours a day, and now they call me a genius!
  – Pablo de Sarasate, Famous Spanish Violinist and Composer

My Rating: 7/10

Further Reading/Additional Resources

October 22, 2015 | Posted in Opinion | No Comments »

How to Improve Your Programming Skills

Talk is cheap. Show me the code – Linus Torvalds

Introduction

I have been programming professionally for over 16 years. My first language was Java 1.1 and these days I work primarily with Java 7 or Java 8. One of the interesting side effects of a being a programmer is that you are learning new things almost all the time. The language, the development environment, the  tools, and even the people whom I work with change frequently. It is a challenge and an opportunity. Even though I have been working with Java for last 16 years, I had the opportunity to learn a lot of other languages (C#, Ruby, JavaScript, PHP, Swift, Objective-C) and technologies (Android development, iOS development).

I have been constantly looking at ways to improve my programming skills and this blog post is an attempt to summarize what I have learned over the years. Trying to solve complex problems on a daily basis will definitely improve programming skills, but some of the following practices will speed up the learning process.

Here are the 12 ways to improve your programming skills,

1. Read the Documentation (RTFM)

Whether you are working with a programming language or a software library, you should at least once read through the entire official documentation. You may not learn everything, but you will be aware of the capabilities and the limitations of the language or the library you use. Here are some examples from my experience,

If you are a Java programmer, you should go through Oracle’s official Java tutorials. If you are a Java web application developer who frequently uses Struts2 framework, you should go through the Struts2 documentation.
If you are an Android developer, read the entire Android API guide.

Reading through the documentation may seem like a daunting task and you may not understand everything you read, but it would be very helpful in the long term. It gives you the 20,000 feet view of the language or the library.

2. Study Open Source Projects

One of the beautiful things about programming is that a large number of expert programmers and software companies share their work publicly as Open Source Software. To accelerate your learning, study popular open source projects in your programming field. Downloading, studying and running these projects enables you to quickly grasp how top programmers use the language and libraries effectively.

Always look for high quality open source projects from well known programmers or software organizations such Apache Foundation. For example, If you are an Android developer, you can look at some cool open source projects from Jake Wharton such as Retrofit or butterknife.

If you are a Java programmer, look for trending Java projects on GitHub or take a look Apache projects. Some of the cool projects to look at are Apache Commons, Apache Struts 2 and Apache Hadoop. If you are a .NET/C# programmer, take a look at this list of .NET open source projects. Some of the cool open source .NET projects are Microsoft EntityFramework, NUnit and CruiseControl.NET. You can also take a look at trending .NET projects on GitHub.

3. Study the Source Code of Platforms, Frameworks and Tools

In addition to studying third party open source projects, you can also take a look at the source code available for your platform, tools or frameworks. Since the source code in this case is written by experienced programmers who are responsible for the platform/framework/tools, this code is usually of very high quality. This code is also the most tested code available for you to study!

By studying the source code, you will learn how your programming platform works under the hood. This gives you considerable confidence on the code you write.  For example, if you are an Android developer, you can download and study the Android platform source code. Similarly if you use Struts2 in your Java Web applications, you can download Struts2 source code and take a look under the hood.

Source code for most of the major platforms/frameworks/tools are available these days. Check out the following links to some of the major source code repositories,

4. Study Code Written by Your Peers

If you work in a company, try to find top developers in your team or organization. Study their code and try to understand the logic or patterns used. If you don’t understand something, ask the authors for help.

You can also ask top programmers in your team to take a quick look at the code you write (I am not talking about the formal code reviews). Most of the folks would be more than happy to help you. Find someone who is willing to be your programming mentor. Having a mentor is probably the fastest way to be an expert programmer (or for that matter to be an expert in any endeavor). The feedback loop is short and you will quickly attain the mental model level of your mentor.

5. Study Your Development Environment

Learn the features available in your development environment or IDE thoroughly. Efficient use of development tools and IDE will substantially improve your programming productivity. Learn the shortcuts and features offered by the IDE and deliberately practice them. Initially you may find this a bit hard, but after a while you will wonder how you worked without those tricks and shortcuts!

Each IDE offers a list of tips for increased productivity. Find your favorite IDE in the list below, take a printout of the tips and tricks page and keep it near your desk.

6. Attend Online Programming Courses

Recently there has been an explosion of online courses available for programmers. Both paid and free courses are available for different programming skill levels. I have found that even free courses are very helpful and valuable in learning new technologies. I recommend that once you enroll in a course, push yourself to complete it and attempt all the exercises and tasks given as part of the course.

One good thing about online courses is that most of them are created by experts and the curriculum will cover all the major ideas and best practices in the field. I have attended many of these programming related courses and found them to be challenging and useful. Here are some of my favorites,

Here is a partial list of Websites offering online courses,

  • Udemy – Udemy offers free and paid courses on a wide variety of topics, programming being one of them.
  • Udacity – Udacity offers free and paid courses for programmers. Recently they seem to be focusing on mobile development. Companies such as Google also publishes their free training courses here.
  • Coursera – Coursera offers a large number of training courses from major universities across the world on a wide range of topics. Most of the courses are free.
  • edX – edX offers a large number of free online courses from a number of universities.

7. Read Top Programming Books

Programming books gives you a complete overview of the programming subject being covered. It reflects years of professional experience that the author has in the subject. Reading books is a quick way to attain considerable high level understanding of your programming field.

When it comes to programming, there are 2 distinct types of books – books that deal with the language, framework or tool fundamentals and books that deal with conceptual knowledge and best practices. Books of the first category gets obsolete pretty soon and I usually avoid hard copies of them. But books of the second category are the most useful and you should have them in your library.

I specialize in Web application programming and following are some of the books that has been very influential in my career. Some of them deals with software methodologies or about structuring software teams. As you progress in your career, these are as important as the knowledge of the programming language or best practices.

I have the following books in my library. I highly recommend these books (Please note that my primary area is Java based technologies),

8. Learn Basics of Data Structures and Algorithms

Large number of programmers have no formal education in programming. This means that they have little background in algorithms and data structures. One of the key things that differentiate good programmers from brilliant programmers is the knowledge of algorithms and data structures.

If you have a fairly good idea of algorithms and data structures, you will find that you can handle complex programming tasks much faster. When it comes to usual Web development, mobile development etc. you may find that you can get a lot of things done without deep knowledge of algorithms and data structures. However if you start working on anything complex such as machine learning, data processing or reporting, you will be handicapped without a solid foundation in Algorithms and Data Structures.

Following is a set of resources for learning data structures and algorithms,

9. Learn Attributes of Good Software Code

Once you master a programming language, the next thing to learn is the attributes of good code. Programming is relatively a new human endeavor, but still there is considerable research data available on what makes good programs. High quality software programs are readable, flexible, extensible, testable, maintainable and reusable. Learn specific techniques that will enable us to meet these software requirements. I recommend that you read Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin and Code Complete: A Practical Handbook of Software Construction by Steve McConnell.

10. Participate in Online Programming Challenges

It is now generally known now (thanks to the book Outliers by Malcolm Gladwell) that in order to attain expert level skills (world class) in any area, you need to practice for at least 10,000 hours. The same applies to programming as well. Solve programming problems, work on interesting projects and regularly participate in online challenges to improve your programming skills.

Whenever I get free time, I try to solve interesting programming problems. Following is a list of Websites providing online programming challenges and problems,

11. Write More Complex Code

One of the important aspects of skill acquisition is that whenever you work on the edges of your capability, your capabilities substantially improve. This applies to programming as well. Look for difficult and complex problems and try to solve them in your area of expertise. Some of the interesting examples of such complex problems include character recognition, solving captchas, machine learning algorithms etc.

Another way create complex code  is to try to solve programming problems with intent of making them as generic as possible. A generic solution is always much more complex than solutions which are tailored to a specific data set or problem.

12. Use Code Analysis Tools

There are a number of tools available to check the quality of your code. These tools have a pre-defined set of rules against which the code is evaluated. It is also possible to integrate these tools to your IDE. For example, You can integrate CheckStyle to the Eclipse Java IDE and whenever you write Java code, CheckStyle will report errors or warnings based on its configuration. CheckStyle comes with a set of predefined code quality metrics, however you can fine tune it based on your project needs. If you are a Java developer, you should check out these tools,

If you work on .NET technologies, check out NDepend for Visual Studio. Enabling these tools as part of IDE forces you to improve the code you write.

Summary

In this post, I have given an overview of the ways in which you can improve your programming skills. There are a large number of programming opportunities available and good programmers are in great demand and command good pay. I would recommend that you spend a predefined amount of time on each of the above learning activities every week. As Peter Norving argues in his essay, Teach Yourself Programming in Ten Years, The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes.

Additional Reading/References

October 17, 2015 | Posted in Programming | 2 Comments »

Book Review: Zero to One by Peter Thiel

Never invest in a tech CEO that wears a suit.

Introduction

Zero to One: Notes on Startups, or How to Build the Future by Peter Thiel is a very popular book in India these days. This is hardly surprising since Startups and their crazy valuations are prime time news these days. I recently picked up this book and was very impressed by Thiel’s ideas. This book is packed with lot of useful takeaways for anyone thinking of starting a new technology venture.

Zero to One: Notes on Startups, or How to Build the Future by Peter Thiel

In Zero to One, Thiel argues that building something entirely new (zero to one) is much more difficult than growing something (one to n). He then attempts to lay out the basic principles behind building a successful technology business. The book starts off with a question –  Is there an important truth that only few people agree with you? Thiel argues that such a truth is going to be accepted in the near future and hence holds incredible value in the long term. He then lists out a number of things that we learned from the dotcom crash of technology companies during 1999-2001,

  • Make incremental improvements
  • Stay lean & flexible
  • Improve on competition
  • Focus on products, not sales

While reading the book, I nodded to all the above. But then he goes on to say that we may have got these wrong. What if,

  • It is better to risk boldness than triviality
  • A bad plan is better than no plan
  • Competitive markets destroy profits
  • Sales matter as much as the product

Again I ended up nodding to all of these points. This sudden shift of perspectives was unexpected when I was reading the book. Thiel’s ability to make us think is what makes this book so good. Thiel takes us on an intellectual ride as we get to learn a lot from his experiences as a startup founder (Paypal, Palantir) and a venture capitalist.

Thiel points out that in order to build a successful and sustainable company, the biggest challenge is to escape the competition. The key characteristics of such a monopolistic and successful company are,

  • Proprietary technology (this should be at least 10 times better than nearest competitor!)
  • Network effects (Start with small markets. For example, Facebook started with Harvard students)
  • Economies of scale
  • Branding (Build a brand backed by good product)

Thiel goes on to write,

Tolstoy opens Anna Karenina by observing: “All happy families are alike; each unhappy family is unhappy in its own way.” Business is the opposite. All happy companies are different: each one earns a monopoly by solving a unique problem. All failed companies are the same: they failed to escape competition.

Thiel argues that there are still secrets to be found in the world and such secrets are an important element of innovative companies. According to him we lost belief in secrets due to incrementalism, risk aversion, complacency and flatness. He presents a compelling argument for going after yet to be discovered secrets.

Zero to One contains a lot of interesting anecdotes and stories such as the sad story of French chef Bernard Loiseau who was a 3-star Michelin rated chef. Thiel uses his story as an example of the challenges of undifferentiated commodity business. He also uses the plot of Hitchhiker’s Guide to Galaxy to argue that we tend to underrate the importance of sales in business. Thiel argues that Salesmen are actors and their priority is persuasion, not sincerity. He then points out the art of persuasion in Mark Twain’s Tom Sawyer,

Tom Sawyer managed to persuade his neighborhood friends to whitewash the fence for him— a masterful move. But convincing them to actually pay him for the privilege of doing his chores was the move of a grandmaster, and his friends were none the wiser. Not much has changed since Twain wrote in 1876.

According to Thiel, every business must answer the following questions,

  • The engineering question – can we create breakthrough stuff?
  • The timing question – Is now the right time?
  • The monopoly question – Are you starting with a big share of small market?
  • The people question – Do you have the right team?
  • The distribution question – How do you distribute your product?
  • The durability question – Can this last for 10 to 20 years?
  • The secret question – Have you identified a unique opportunity?

Thiel predicts that future successful companies will ask this question – How can computers help humans solve the hard problems? He bets on it as he is one of the founders behind Palantir Technologies.

Review Summary

Zero to One is a small and intellectually engaging book.  It is an essential read for anyone planning to build a successful and sustainable innovative technology company.

Positively defined, a startup is the largest group of people you can convince of a plan to build a different future.

My Rating: 8/10

Online Resources

October 3, 2015 | Posted in Opinion | No Comments »

Book Review: The Art of Thinking Clearly by Rolf Dobelli

“I don’t make predictions. I never have, and I never will.” – Tony Blair

Introduction

Rolf Dobelli’s book, The Art of Thinking Clearly briefly explains common human behaviors which can be interpreted as illogical behaviors. This book is a database of human biases, fallacies and illusions. The title of the book is misleading since people may think that it is a self-help book containing advice on “clear thinking”. It is NOT. A more apt title would be “Human cognitive biases, fallacies and illusions”. But then will it sell?

The Art of Thinking Clearly by Rolf Dobelli

Dobelli uses simple, direct and engaging writing to explain 99 human cognitive behaviors in individual chapters spanning 2 to 3 pages. What I like most about the book is that it is full of interesting quotes, stories and anecdotes. It makes reading pleasant and entertaining. Each chapter provides a brief overview of the bias, overview of relevant scientific studies and finally author’s own advice on the matter. You should take the advice with a grain of salt unless of course you want to become a world-class jerk.

In The Art of Clear Thinking, Dobelli claims that most of our biases are the result of human evolution. Assume that you are born thousands of years ago and you are walking in a forest with your friends. Suddenly all your friends start running. You wouldn’t stop and think before running after them unless you want to end up as lunch for the resident Tiger. People who did think for long quickly exited from human gene pool! Dobelli claims that these behaviors are no longer useful in the modern world where logic and reasoning is the king. However in the epilogue, he admits that he himself doesn’t follow his own advice. Thinking is too tiring to be done every time you need to make a decision!

The Art of Clear Thinking is heavily influenced by Nassim Nicholas Taleb’s books (Antifragile, The Black Swan, Fooled by Randomness). This has lead to allegations of plagiarism by Taleb. Taleb claims that Dobelli not only picked ideas but also sentences from Taleb’s works. Taleb’s accusations are here and Dobelli’s response is here. Other influences on the book are ideas by Warren Buffet and the book Thinking, Fast And Slow by Daniel Kahneman. There are also plenty of references to scientific studies on human behavior, some of which are very interesting! (See – Marshmallow Test Video and Monkey Business Illusion).

I think it is important for key decision makers to be aware of human cognitive biases. Many of the logical decisions we make can have disastrous effects if we are not aware of these biases. Here is a classic example from the book (Never pay your lawyer by the hour),

In 1947, when the Dead Sea scrolls were discovered, archaeologists set a finder’s fee for each new parchment. Instead of lots of extra scrolls being found, they were simply torn apart to increase the reward. Similarly, in China in the nineteenth century, an incentive was offered for finding dinosaur bones. Farmers located a few on their land, broke them into pieces and cashed in. Modern incentives are no better: company boards promise bonuses for achieved targets. And what happens? Managers invest more energy in trying to lower the targets than in growing the business.

Similarly I see confirmation bias every single day on my Facebook feed. People share complete lies without even doing a cursory check for its accuracy simply because it conforms to their beliefs.

For a happy, contended life we should be able to control our thoughts and behaviors. Take for example, the paradox of choice. Beyond a level, more choice doesn’t translate to better life or more happiness. Rather it can lead to unhappiness and stress! Another one of the human weaknesses is our tendency to fall into Hedonic treadmill. The more we achieve, the more we want. The happiness from our possessions are very short lived. These are some of the fallacies covered in the book. But then it is precisely these human imperfections which makes us human. It is the same weaknesses which creates heroes. We need to be aware of our cognitive imperfections, but in many cases our “gut feel” is better than logical thinking. Sometimes we simply don’t have the time for logical thinking!

One thing that I don’t like about the book is the lack of sources and references at the end of the book. An online link for sources is given in the book which no longer works. Authors must ensure that everything part of the book remains in the book since there is no incentive for the publisher to keep online pages available.

Review Summary

The Art of Thinking Clearly is an excellent and entertaining book providing a good overview of human cognitive behaviors. With plenty of anecdotes, stories and quotes, this book is an ideal book to read during your travels. This book can make you aware of human biases which may positively affect your decision making.

The Pope asked Michelangelo: “Tell me the secret of your genius. How have you created the statue of David, the masterpiece of all masterpieces?” Michelangelo’s answer: “It’s simple. I removed everything that is not David.”

My Rating: 8/10

Online Resources

Further Reading

November 23, 2014 | Posted in Opinion | No Comments »

Book Review: Freakonomics by Steven Levitt

Introduction

Freakonomics is a collection of interesting problems and a look at how statistical methods lead to surprising answers to these problems. Since the author (Steven Levitt) is an economist, he looks at them with an economist’s eyes focusing on the incentives that drive people behind these problems. It obviously helps to sell the book when the problems and solutions are “controversial”. For example, Steven statistically concludes that one of the major reasons for reduction in crime rate in US is legalized abortion! Such conclusions obviously generate a lot of heat.

Book Review: Freakonomics by Steven Levitt

Freakonomics is written by economist Steven Levitt and journalist Stephen Dubner. It has sold over 4 million copies worldwide. It is based on various articles and papers written earlier by Steven Levitt. Each chapter deals with an interesting question,

  • What do school teachers and sumo wrestlers have in common?
  • How is Klu Klux Klan like a group of real estate agents?
  • Why do drug dealers still live with their moms?
  • Where have all the criminals gone?
  • What makes a perfect parent?

These questions and the statistical solutions to these questions are pretty interesting. The question about Klu Klux Klan and real estate agents is interesting and the conclusion about “experts” hoarding their “specialized knowledge” is something I could closely relate to. For example, doctors have been using “specialized knowledge” to confuse and fleece patients. However the Internet has been a major liberator from such “experts” since much of the “specialized knowledge” is publicly available. We also tend to overestimate the “specialized knowledge” available with “experts”.

The book also has a bonus matter section with additional questions and analysis. This sections explore questions such as why we vote and the economics behind gift cards. This section is followed by a Q&A session with the authors.

I personally think that one of the biggest contributions of this book is that it forces people to be critical of the things that are pushed to them as good or as essential. For example, take the case of vaccinations (this example is NOT from the book). It is almost always projected as good thing. But in reality, there is a trade off to be made between the known and unknown side effects of a vaccine against the risk of contracting a specific disease. If there is a 1% chance of contracting a specific disease and in contracted patients if there is 1% chance of death, is vaccination against that disease worth the 0.1% side effects and the possible long term impact on health?

Take another example of global warming or tree conservation (again NOT from the book, however a new book named Superfreakonomics seems to address these topics). Both these are given much more importance than they actually need. It is always important to ask the question, who actually benefits from the scare of global warming or the scarcity of cheap raw material such as wood (trees) which can be easily replenished?

One of my favourite chapters is the one dealing with parenting. I see parents all around me who try everything in their power to make their children better. I have always suspected that parenting has a lesser influence on a child than his genes and his peer group. It appears that what matters in the case of a child is how parents live/what parents are NOT what parents do!

Freakonomics is an interesting read. The authors have done a good job in making even the statistical part seem interesting. The book encourages us to be alert on what we do and what others do and look for reasons behind it.

The Q&A section at the end contains a pretty argument as to why you should read this book!,

Q: Am I worse off for never having read Freakonomics? – Terry

A: Sadly, yes. Independent testing has shown that people who read Freakonomics have sweeter-smelling breath, better posture and more interesting dreams. Also women feel no pain during childbirth; male readers find that their sperm swim faster.

My Rating: 8/10. An excellent book of interesting problems and interesting trivia. If you are a blind follower of “experts”, this is an eye opener!

Online Resources

January 12, 2014 | Posted in Opinion | No Comments »

Gavi Ecotourism

Gavi Lake and Dam

Introduction to Gavi Ecotourism

Gavi Ecotourism is a tourist program conducted by Kerala Forest Development Corporation (KFDC) near Gavi village in Periyar Tiger Reserve forest. This program consists of multiple events conducted in and around Gavi dam, Gavi lake and the adjacent forest areas. KFDC programs at Gavi are,

  • Day trip to Gavi – This is a day trip from 6AM to 4PM. Currently there is no option to book online and you will need to go to Kumily(Thekkady) to book this. This is usually opted by tourists coming staying in Thekkady. For more details, check with KFDC contact numbers. 
  • Green Mansion Lodge Stay – Overnight stay at Gavi in rooms.  This is quite near to the Gavi lake.
  • Swiss Cottage Tent Stay – Overnight stay in tents which are protected by electrified fence. More privacy and a relaxed forest stay is offered here. This place is located before Gavi dam.
  • Jungle Camping – Up to 4 persons can stay in deep jungle after trekking to the location.

Items for sale - Gavi Eco ShopAll programs include food and a number of free activities (trekking, jeep safari and boating). Up to date details of these programs including tariff are available at the KFDC Gavi website. Gavi has no other facilities (apart from a small local hotel in the nearby Gavi village). Also before you plan your trip, always call up the KFDC contact numbers to confirm program details.

Usually you need to pay the room tariff up front by transferring money to KFDC bank account and cancellation charges are pretty high. You also need to inform them about your vehicle number one day before your arrival at Gavi. The per person tariff is around Rs.1000 for day trip and Rs.2000 for overnight stay.

Facilities at Gavi include the KFDC restaurant, a small eco shop at the KFDC reception from where you can purchase a limited set of items (see photo), a small library and cell phone coverage only for BSNL mobiles.

Gavi Ecotourism – Getting There

Gavi is a forest village inside Periyar Tiger Reserve and is part of Pathanamthitta district. It is accessible by road from northern Vandiperiyar town and from southern Angamoozhy village. Gavi distance mapThe Gavi ecotourism spot which includes the Gavi dam and Gavi lake is located about 500m away from the Gavi village. Gavi is located about 28KM from Vandiperiyar town and about  55KM from Angamoozhy village.The entrance from Vandiperiyar side is very restricted. Only vehicles with prior permission is allowed to cross Vallakkadavu check post located about 8KM from Vandiperiyar and about 20KM from Gavi. This restriction is due to the fact that forest areas here belong to the Periyar Tiger Reserve.

The entrance from Angamoozhy historically has been much more lenient since it doesn’t belong to the Tiger reserve. However due to the sudden influx of tourists via Angamoozhy after Gavi was featured in Malayalam movie “Ordinary”, now entry restrictions are in place. Now only 10 vehicles are allowed entry during weekdays and 30 vehicles are allowed entry during weekends. This entry is only allowed between 6AM and 12PM. The vehicles entering from Angamoozhy are not supposed to exit from Vallakkadavu unless they are guests of KFDC (they issue exit and entrance pass for their guests). Forest department is also planning to completely block entry of private vehicles from Angamoozhy once forest department starts their own bus safari till Gavi. This sort of bus safari is usually complete waste of money as I have seen the same in Siruvani (Palakkad).

Gavi Ecotourism Distance Chart

Vandiperiyar 28 km
Thekkady 43 km
Angamoozhy 55 km
Pathanamthitta 93 km
Alappuzha 160 km
Cochin Airport 164 km
Ernakulam 170 km

If you have booked a KFDC Gavi Ecotourism package, you are supposed to enter Gavi via Vallakkadavu check post. KFDC sends the entry pass one day before your arrival to the check post.

The entry fee at Angamoozhy Kochandi check post is Rs.50 for car. At Vallakkadavu check post the entry fee calculation is bit complex and it took the officer on duty sometime to calculate it! There is a per person entry fee (Rs.25 for adults and Rs.10 for children), vehicle entry fee (Rs.50) and then camera entry fee (Rs.25).

Activities at Gavi

KFDC organized programs consists of a number of activities. Usual activities include,

  • Gavi Lake Boating – This is paddle boat trip to a nearby waterfall in the Gavi lake. life jackets are mandatory and the guide will take you in the boat.
  • Trekking Around Gavi – There are around 25km of trekking path in and around Gavi. Usual trek path goes around the jungle on the other side of the lake returning back to the main road and then crossing over to the Sabarimala view point. 
  • Jeep Safari Along the Jungle Road  – The early morning jeep safari is usually from 6AM to 8:30AM and covers Gavi village, Kochupamba etc. towards Angamoozhy. They usually cover about 15 to 20KM along this stretch. 
  • Visit to Sabarimala View Point  – This is very close to the Gavi reception area and is a 15 minute uphill walk to a meadow. You can see Sabarimala usually partially hidden among the mist. Ponnambalamedu mountain can be seen  on the left and pullumedu mountain can be seen on the right.  You can also see the road to Vandiperiyar from here. Take a binocular if you have one.
  • Visit to Animal Museum – There is an animal museum nearby. We never got time to visit it!

In addition to the above there are activities available near Gavi such as boating in Kochu Pamba lake and jungle stay. Ask at reception for details of these. It appears that the addition of Gavi into the Tiger reserve has put a brake on the expansion of eco-tourism activities.

The following map will give you an idea about Gavi geography and where activities are organized.

Gavi location map

Gavi Wildlife

Gavi is now part of Periyar Tiger Reserve and there is abundant wildlife in and around this place. You can spot various exotic types of butterflies and insects if you look for them in the vegetation around. Always look at the tree branches for spotting monkeys, squirrels etc. Some of the commonly spotted animals in Gavi are,

  • Malabar Giant Squirrels, Elephants, Sambars, Gaurs, Lion Tailed Macaque, Barking Deers, Mongoose, Nilgiri Marten, Civets, Bears, Wild Boars, Wild Dogs, Leopards, Nilgiri Tahr, Nilgiri Langur etc.

Commonly spotted birds in Gavi include,

  • Great Indian Hornbill, Malabar Grey Hornbill, Malabar Whistling Thrush, Blue Winged Parakeet, White Bellied Fishing Eagle, Brown Fish Owl, Forest Eagle Owl, White Shouldered Kite, Crested Serpent Eagle, Parakeets, Bulbuls, Wayanad Laughing Thrush, Skylarks and Pipits, Sunbirds, Mynas, Woodpeckers including Great Black Woodpecker, Kingfishers, Flycatchers etc.

Gavi Trip Report – Swiss Tent Stay – November 2013

In November 2013, My brother and I decided to visit Gavi along with family. A week before our planned date I called up KFDC office at Gavi and asked for availability of tent accommodation. He replied that tents are available and in order to book them I need to transfer the entire tariff to their Vandiperiyar bank account. That seemed a bit scary, but there are no other options available at Gavi and since KFDC is a government run facility I decided to take the risk.

I made a NEFT bank transfer to KFDC bank account for booking 2 tents at Gavi and called up KFDC to confirm my stay. I was asked to call one day before our check-in date and inform our vehicle number. This is required for them to arrange vehicle passes at Vallakkadavu forest check post.

The bank account of KFDC, Gavi to which I made money transfer was,

KFDC, Account No: 362801010021042, Union Bank of India, Vandiperiyar.

The IFSC code is UBIN0536288.

Needless to say always double check the account details before you do the money transfer. The details given here are only for double checking what you heard from KFDC contact numbers!

On the way to Gavi - PeerumeduWe started early morning from Ernakulum and headed towards Vandiperiyar. After a slow drive through scenic KK road and a quick visit to Pattumala church we reached Vandiperiyar just in time for lunch. Our check-in time at Gavi was 2pm and the package included evening tea, dinner, breakfast and lunch (next day). We had our lunch in Vandiperiyar and then proceeded to Gavi at around 2pm. At Vallakkadavu check post our entry pass was ready. We had to pay entry fee, vehicle fee and camera fee at the check post.

gavi_monkeyThe 20km drive from Vallakkadavu to Gavi is through thick jungle which is part of Periyar Tiger reserve. This stretch offers excellent opportunity to see wildlife. After a couple of Kilometers, we spotted a single tusker elephant on the meadows to the left of the road. It was away and was partially hidden in thick undergrowth. We also spotted different types monkeys and came across beautiful butterflies.

When we were driving to Gavi, a lot of tourists were returning from their day trip at Gavi in hired jeeps. One of the jeeps slowed down and the driver asked us in Tamil whether we had seen the elephant and where it was located. My brother replied in Tamil. The exchange went on for a while in Tamil and suddenly the jeep driver asked us whether we are malayalees in Malayalam and we replied – Yes! He literally did the face palm. His embarrassed reaction was quite amusing. He assumed we were Tamilians since our vehicle number started with TN!

The road here is narrow, but is in pretty decent condition. We went slow and reached Gavi around 3pm one hour late than our planned check-in time.

When you drive through forests, keep the speed low at around 15-25km/hr. This way you have a higher chance of spotting wildlife. Also slow down when you are at a curve and be prepared to spot wildlife just around the curve. Here is another technique I use when traveling with family. I ask my wife to look for wildlife in the trees on one side and my children to look at the trees on the other side. We have spotted lion tailed macaque, Indian giant squirrel etc. using this technique in most of our trips.

We parked our car after the Gavi dam and checked in at the reception counter. All of us had to sign in a register and the receptionist told us about rules and regulations in a tiger reserve. We were also given an instruction leaflet, entry coupons and was assigned a guide (Kannan). Note that you will be signing a exclusion of liability which means that Gavi eco-tourism will not be liable for any personal injury.

Kannan was from Gavi village and he had over 10 years experience as a forest guide. He was the best forest guide I have ever been with – knowledgeable, helpful, courteous and a true guide!

Gavi - Instruction leaflet by KFDC

The Swiss tents were located away from the reception/canteen/boating area on the other side of the Gavi dam. We walked along the road to reach the tent area located on the right side of the road towards Vandiperiyar. Guide took us till the tents, gave us the keys and said he will be waiting for us at the reception area and recommended we should go on the boat ride.

The forest tent was neat and clean; mineral water bottles and other basic necessities were already arranged in the tent. A tea kettle and hot water facilities are also provided. The tent also had a proper attached toilet. All the tents faced the lake and you could spend hours relaxing in chairs provided in tents. I really wish I could afford spending a week here doing nothing other than reading and watching wildlife. If you are lucky you will be visited by deer, squirrels, monkeys and who knows even a leopard!

Clock Vine in GaviWe quickly deposited our bags inside, got ready and was on our way back to boating dock by 4pm. We had tea and biscuits from the canteen. Canteen and boat dock is located on the opposite side of the reception building. There is beautiful garden on the road side and you need to go through a tunnel decorated with a flowering plant called Clock Vine(Thunbergia mysorensis) to reach the canteen. Whoever planted this is a genius since it attracts a large number of small beautiful birds and combined with their sounds the whole place feels magical!

 

Gavi CanteenWhen we came out of the canteen, Kannan was ready with a paddle boat and life jackets! The paddle boat requires some patience to get in especially for families with children. Always ensure that boat is steady and weight is balanced on the sides.

Boating in Gavi Lake

Since it was late, almost all of the day trip folks had left and there were only few guests for night stay. We were the only ones on the lake. Kannan was also an expert on the paddle boat and patiently answered all our questions and queries. The lake was calm and serene. The silence and the misty lake gives a heavenly experience if you are a nature lover.

Green Pit Viper GaviKannan took us to a waterfall nearby on the lake and since we were alone, we decided to take a quick dip in the river. While walking to the waterfall, my daughter suddenly pointed us to a snake. This was my first encounter with green pit viper! Kannan told us that he will be in trance stage till it becomes dark and told us that getting bitten is fairly common when staying in the forest. This gave us extra motivation to get out of the waterfall before night fall.

After the boating, we sat on the benches near the canteen and just spend our time in front of the pristine and serene lake. It is a shame that such views are now  available only for a price!

At 7:15pm we were served with delicious chicken soup and was followed by a sumptuous non vegetarian buffet dinner. After dinner we went back to our tents since we were all tired after the long trip and boating.

Gavi tentsKannan told us to be ready by 5:50AM for our 6:00AM jeep safari towards Angamoozhy (south bound).

Before we slept we started hearing noises from the other side of the lake (the tents are adjacent to the lake). Our night security guy (John) came running to tell us that elephants are on the other side and we are safe since we are protected by the electrified fence. After he left, we went near the fence to see if we can get a glimpse of the elephant herd.

The elephants seems to have started crossing the lake and we could hear their breathing! Then we heard folks on the boat landing side making noises to scare the elephants away. This is required since the other area is not protected by electric fence. We went back to bed and heard various noises and howls till we slept. The tents are not for the weak hearted!

Gavi Jeep Safari

Gavi Jeep SafariBy 5:45AM we were all ready for a jeep safari and at exact 6AM Kannan was there with an open jeep. The jeep is hired by KFDC and is included in the package. However jeep drivers do expect tip and I always ensure that tip is proportional to their service. Kannan asked whether we want the jeep roof closed since we were with children and I noticed that our guide was very considerate and helpful.

The open jeep ride was pretty exciting and we spotted multiple elephant herds along the way. We also came across a herd of gaurs on a meadow. The misty weather was the only disappointment. On the way back we got really lucky and spotted a big family of lion tailed macaque!

Elephants in GaviWhile returning from Safari, our driver asked whether we want to stop for tea at a shop. He slowed down the jeep but I replied that we would have our breakfast from the canteen. My wife later scolded me for being selfish since the stop was actually needed for the driver/guide.  We bought some snacks from the only restaurant at the Gavi village on the way back.

Gavi Jungle Trekking

After an excellent buffet breakfast consisting of bread toast, uppuma, aval with banana, omelette, pineapple/grapes etc. I set out with my brother and our guide (Kannan) for a trek. Our families went back to the tents for some rest.

Gavi check dam for drinking waterGavi has around 25km of trekking path. The most preferred path actually starts from the other side of the lake after taking a boat from canteen area. This path is actually formed by elephants coming to the lake for water. We started our trek casually and Kannan told us more about the flora around this place. We also came across fresh elephant dung. On our trek we reached upstream of the waterfall in which we had bath on the previous day’s boating trip.

When you go on the trek, always stick with the guide and follow his instructions. Never make loud noises. Elephants can be deadly if you are too close to them and in a thick jungle it is easy to miss them until you are too close to them. When you are near an elephant herd, they usually give you warning with grunting sound and you should gradually move away from them by walking backwards. Never use flash when you are photographing an elephant herd in close range.

After an hour of trekking we came across a herd of elephants on our right side. We also met other trekking teams hiding and watching the elephant herd. All of us decided to move around the herd to get a good view. Then suddenly our guide indicated us to stop. He asked us to wait and then cautiously proceeded to the direction opposite to where the elephant herd was standing. He then indicated to join him without making any sound and then we noticed another herd of elephants coming from the direction that our guide has gone! Without our guide, we would have probably ended up right in front of these elephants!

After the elephant encounter we proceeded to the southern part of Gavi lake crossed over and then reached the main road. We crossed the main road then headed towards the Sabarimala view point. Even here you can spot wildlife and we spotted a Sambar. It was almost 1pm when we reached the view point. There was lot of mist and Sabarimala was faintly visible between Ponnambalamedu and Pullumedu. From view point it is 10 minute walk back to the Gavi reception area.

On the way back we spotted a structure which looked like a tree house but it was small and stood on the ground. We were curious as to what it is and Kannan told us that earlier there was no BSNL mobile tower and hence the staff used to climb up this structure to get mobile signal!

Wild RoosterAfter a quick bath we went for the lunch. It was a sumptuous vegetarian buffet lunch with lot of side dishes. After lunch we took rest on the benches near the lake. By 3PM we checked out from the place, received our exit pass (which should be given at Vallakkadavu check post) and we were on our way back home. Surprisingly we didn’t find much of wildlife while returning back. However Gavi gave us one last glimpse of its rich wildlife in the end; A wild rooster crossed the road majestically in front of our car reminding us that the place belonged to them!

Gavi Travel Tips

  • Always carry some salt with you for leech bite protection. Usually your guide will carry it when you are going on a trek. But even then it is best to carry some along with you. When you get a leech bite, the best way to remove them is to pour some salt on it. Leeches are fairly harmless if you don’t try to forcefully remove them.
  • A binocular is highly recommended if you want to get a close view of Sabarimala. I usually carry a 10x Nikon.
  • No activities are usually allowed before 6AM and after 6PM. At night It is a pretty good idea to be indoors. The dam and the buildings around do give a false sense of security, but remember that you are right in the middle of a forest with plenty of animals! If you are with small children, always ensure that you are near them!
  • Alcohol is not allowed in Periyar Tiger Reserve. If you are crossing the border from Kumily, never bring alcohol bottles across the check post unless you like getting harassed, loosing the bottle and paying a hefty fine. KFDC has a more liberal view towards responsible drinking, but Kerala forest department doesn’t share this sentiment.
  • If you are just staying for one day, the activities make it a hectic holiday. I recommend either staying for 2 days or skipping either the trek or jeep safari.

Gavi Village – Historical Background

When Sri Lanka became an independent nation in 1948, there was a large number of South Indian Tamils in the country who were originally taken there by British as estate workers. In 1948 Sri Lanka passed the Ceylon Citizenship Bill which denied citizenship to a large percentage of Tamils. In 1964 Indian Prime Minister Lal Bahadur Shastri and Sri Lankan Prime Minister Sirimavo Bandaranaike signed the Sirima-Shastri Pact under which India agreed to give Indian Citizenship to about 525,000 Tamils.

Around 150 Tamil families from Sri Lanka were rehabilitated on the cardamom plantations near Gavi and Pachakkanam. Later these plantations came under Kerala Forest Development Corporation (KFDC). Even after 40 years, Tamils are still struggling to have a decent life and recent inclusion of Gavi and surrounding areas into Periyar Tiger Reserve made their life much more difficult. It is a sad fact that the our activities to protect tiger doesn’t take into consideration the hardship suffered by the local human population. Even their right to travel is pretty much restricted due to multiple check posts along the way.

Now there are around 1500 people (400 families) living around Gavi and Pachakkanam. KFDC is also doing bad in cardamom business which in turn affected livelihood of Tamils living there.  The Gavi Ecotourism project gave KFDC much needed money and it also is currently giving the local population a decent way to live. Most of the younger population now work as expert forest guides or staff for the Gavi Ecotourism project.

Gavi Photos

gavi-receptiongavi_meadowsbus over gavi dam

gavi_elephantsgavi gardenlizard

gavi_butterflieslion tailed macaque

Summary

Gavi is a paradise for nature/wildlife lovers. It is a suitable destination for families and bachelors with an interest in nature. When it comes to material comforts, what is provided is basic but yet sufficient to keep you happy.

Online Resources

January 4, 2014 | Posted in Travel Reviews | 1 Comment »

Book Review: Wings of Fire by APJ Abdul Kalam

Introduction

APJ Abdul Kalam is a renowned Indian scientist who went on to become 11th President of India (2002-2007). He is very well known across India and is a recipient of India’s three highest civilian awards – Padma Bhushan, Padma Vibhushan and Bharat Ratna. Wings of Fire is an autobiography of APJ Abdul Kalam written jointly by Arun Tiwari and Abdul Kalam. It covers Kalam’s life before he became president of India and in 2013 another autobiography titled "My Journey: Transforming Dreams into Actions" was released.

Book Review: Wings of Fire by APJ Abdul Kalam

Wings of Fire is an autography of APJ Abdul Kalam covering his early life and his work in Indian space research and missile programs. It is the story of a boy from a humble background who went on to become a key player in Indian space research/Indian missile programs and later became the president of India. The book has been very popular in India and has been translated into multiple languages. I recently picked up a copy and read it in a couple of days. It was very engaging initially, but tended to drag a bit towards the end with lot of technical details and procedural information of his space research and missile projects.

I loved the initial chapters of Wings of Fire since it gives a vivid picture of our country during 1930 – 1950s. Kalam was born in Rameswaram, a southern religious town in Tamilnadu. The initial chapters provides an interesting glimpse of religious harmony which existed before India’s partition,

The famous Shiva temple, which made Rameswaram so sacred to pilgrims , was about a ten-minute walk from our house. Our locality was predominantly Muslim, but there were quite a few Hindu families too, living amicably with their Muslim neighbours.

……

The high priest of Rameswaram temple, Pakshi Lakshmana Sastry, was a very close friend of my father’s. One of the most vivid memories of my early childhood is of the two men, each in his traditional attire, discussing spiritual matters.

……

One day when I was in the fifth standard at the Rameswaram Elementary School, a new teacher came to our class. I used to wear a cap which marked me as a Muslim, and I always sat in the front row next to Ramanadha Sastry, who wore a sacred thread. The new teacher could not stomach a Hindu priest’s son sitting with a Muslim boy. In accordance with our social ranking as the new teacher saw it, I was asked to go and sit on the back bench. I felt very sad, and so did Ramanadha Sastry. He looked utterly downcast as I shifted to my seat in the last row. The image of him weeping when I shifted to the last row left a lasting impression on me. After school , we went home and told our respective parents about the incident.

Lakshmana Sastry summoned the teacher, and in our presence , told the teacher that he should not spread the poison of social inequality and communal intolerance in the minds of innocent children. He bluntly asked the teacher to either apologize or quit the school and the island. Not only did the teacher regret his behaviour, but the strong sense of conviction Lakshmana Sastry conveyed ultimately reformed this young teacher.

Kalam in younger years wanted to be an officer in air force, however he couldn’t clear the interview. He met Swami Sivananda after this failure and I found his words to Kalam interesting and in a way prophetic,

Accept your destiny and go ahead with your life. You are not destined to become an Air Force pilot. What you are destined to become is not revealed now but it is predetermined. Forget this failure, as it was essential to lead you to your destined path. Search, instead, for the true purpose of your existence. Become one with yourself, my son! Surrender yourself to the wish of God,

Battle of Guntur, 1780. Painting by Charles Hubbell.In the book we learn how Kalam started his career in Aeronautical Development Establishment (ADE) and was involved in the design of a hovercraft. Later he moved to Indian Space Research which was the brain child of Vikram Sarabhai. In 1963, Kalam went to NASA facility in Maryland(USA) as part of a training program on sounding rocket launching techniques. There he came across a painting which depicted Tipu Sultan’s rocket warfare against the British,

Here, I saw a painting prominently displayed in the reception lobby. It depicted a battle scene with a few rockets flying in the background. A painting with this theme should be the most commonplace thing at a Flight Facility, but the painting caught my eye because the soldiers on the side launching the rockets were not white , but dark-skinned, with the racial features of people found in South Asia. One day, my curiosity got the better of me, drawing me towards the painting. It turned out to be Tipu Sultan’s army fighting the British. The painting depicted a fact forgotten in Tipu’s own country but commemorated here on the other side of the planet. I was happy to see an Indian glorified by NASA as a hero of warfare rocketry.

The book covers a lot of "behind the scene" information and technical details about India’s satellite and missile program (SLV-3, Prithvi, Agni, Thrisul, Akash and Nag). This might interest technically inclined readers but is sure to put off readers who bought the book to get to know Kalam or to know his principles/ideas. Space and missile programs are huge complex projects and managing them is extremely challenging. The book does give a glimpse of the participatory management technique adopted by Kalam, but at the same time it doesn’t go into details.

Wings of fire covers Kalam’s personal life only briefly which is strange for an autobiography. For example, we don’t know why he decided to remain single or his activities outside space research (even though we can conclude in the end that he was married to science and technology).

Kalam is a poet and is a huge fan of poems. The book contains many of his own poems and his favorite poems. Here is an example,

Do not look at Agni
as an entity directed upward
to deter the ominous
or exhibit your might.
It is fire in the heart of an Indian.
Do not even give it
the form of a missile
as it clings to the
burning pride of this nation
and thus is bright.

Through Wings of Fire, we come across some brilliant people who worked behind Indian space research  such as Vikram Sarabhai and Dr. Brahm Prakash. The book also contains about 24 photos and I found the ones from the early days of Indian space program very interesting. This alone is worth the price of the book!

One of the things that stands out throughout the book is Kalam’s positive thinking. He held many high ranking positions in various organizations. Yet in the book he rarely mentions anything about lethargy/corruption of bureaucracy or politicians. The secret to his success seems to be his ability to ignore negative things around him. The book also gives a clue to his popularity in India. Kalam is a simple, secular, inspiring humanitarian.

My Rating: 7/10. I liked the initial chapters, but wasn’t much impressed by later chapters. Kalam should look for a better writer to write his updated autobiography (After I wrote this review I realized that he has released a new autobiography titled "My Journey: Transforming Dreams into Actions").

Online Resources

November 28, 2013 | Posted in Opinion | No Comments »

Book Review : The Last Lecture by Randy Pausch

"We cannot change the cards we are dealt, just how we play the hand." – Randy Pausch

Introduction

It was sometime in 2007 that I first came across Randy Pausch’s "The Last Lecture" video in which Randy talked about about "Really Achieving Your Childhood Dreams". It has been an influential talk in my life and I have seen the video a couple of times since then. Recently I bought the "The Last Lecture" book by Randy which is based on this popular video. The book goes through the same topic as the video, but also has interesting additional material including background material on the lecture. This is my review of the book.

Background

Randy Pausch was a computer science professor at Carnegie Mellon University in Pennsylvania, US. His expertise was in virtual reality and he went on to create the Alice project. At the age of 46, he was diagnosed with pancreatic cancer. Carnegie Mellon had a lecture series called "the last lecture" (now known as journeys) where faculty members share their reflection on their life journeys. In the case of Randy, "the last lecture" was really like his last lecture since he had only months to live due to his terminal cancer.

On September 18, 2007, Randy Pausch gave his "last lecture" titled "Really Achieving Your Childhood Dreams". The lecture outlined his childhood dreams and how he went about achieving it in his life. It is in essence a short summary of his life and he said he intended the lecture as a message to his children. The video of the lecture became viral and as of writing this article, it had over 15 millions page views!

"The Last Lecture" soon became an internet sensation and Randy went on to do appearances in ABC Network, Oprah Winfrey Show, Time Magazine and also gave a speech at commencement ceremony in Carnegie Mellon. He also wrote a book titled "The Last Lecture" which was sold over 5 million copies world wide.

Randy died from pancreatic cancer on July,2008 at the age of 47. However his book and his lecture will remain a source of inspiration for the future generations.

Book Review : The Last Lecture by Randy Pausch

The Last Lecture BookThe book is subtitled "Lessons in Living" and adds new material to the last lecture video. It is organized into 6 sections,

(I) The Last Lecture – A background on the last lecture at Carnegie Mellon.

(II) Really Achieving Your Childhood Dreams – Much of the material here are also in the video.

(III) Adventures … And Lesson Learned -This is a collection of his life experiences and what he learned.

(IV) Enabling the Dreams of Others

(V) It is About How to Live Your Life – Randy lists the rules by which he tried to live his life.

(VI) Final Remarks

The first thing you notice is that the book assumes that you have seen the last lecture video. Many chapters refer to the background of the video and if you have seen it, you immediately make a connection.

When you read the book, it feels as if you are going through the entire life of Randy in a few minutes. We learn how he achieves his childhood dreams even when there are some really hard obstacles. According to him, the obstacles are there for a reason, it is to keep the "other" people out!

One of the things he mentions in his book is that when you want something, just ask. I have applied this principle even when I thought asking will lead to 100% rejection. Surprisingly, the actual rejection rate was something like 50% and even in those cases I think if I am persistent enough it would have worked. As Randy says,

"The brick walls are there for a reason. The brick walls are not there to keep us out; the brick walls are there to give us a chance to show how badly we want something"

Most of his advice on life is actually ancient wisdom and clearly these are all principles valid till the end of humanity (importance of hard work, dreaming big, showing gratitude etc.). It is interesting to see them in the context of Randy’s life. If you are looking for any soft of deep philosophical discussions, this is not the book for you.

His view of "failures" is that it is what gives us experience. He even had an award for "glorious failure" in his "building virtual worlds" course. As Randy says,

"Experience is what you get when you didn’t get what you wanted"

At just over 200 pages, "The Last Lecture" is a small book. In every page you find a man’s agony in knowing that soon his children won’t have a father to protect & guide them. Randy writes in such a honest and passionate way that you will find it hard to stop once you start reading the book.

My Rating : 8/10. This is a good book. It may have a positive influence on the way you live.

Other Notable Quotes by Randy Pausch

"If I only had three words of advice, they would be, Tell the Truth. If got three more words, I’d add, all the time."

"When you’re screwing up and nobody says anything to you anymore, that means they’ve given up on you."

"It’s not about how to achieve your dreams, it’s about how to lead your life, If you lead your life the right way, the karma will take care of itself, the dreams will come to you."

Online Resources

December 17, 2012 | Posted in Opinion | 2 Comments »