Except some high profile engineering colleges like IIT, the quality of
professors in most of the engineering colleges is pathetic. But this
reaches a whole new level in Computer Science department, where a
professor who has no idea about the fundamentals of compiler could
teach you the compiler course, by dictating whatever is written on the
course book, and dodge any questions raised by students by blabbering
something irrelevant to the question.
It begs the natural question: why the situation is so bad in CS
department compared to others?
The main problem seems to be the demand and supply of computer science
professionals — which determines the salary indirectly. The supply is
very less compared to the demand, even people with pathetic skill set
get a job as a software engineer with a good salary.
Most of the colleges pay peanuts compared to the software industry
salary. This may be good enough to attract competent professors in
other departments, where there is a huge supply of professionals
compared to the demand. But this is definitely not the case in the
The result is, most of the people who show up for the professor job
interviews are the ones who don’t even have the minimal skill set
required to get a job in software industry.
At work, I had to write a JQPL — Yet another poorly documented
objected oriented query language — query which involved 3 tables. It
was little frustrating because of the lack of proper documentation
about JQPL and my poor mental model of the join operation. I almost
forgot most of the SQL I had learned during my undergraduate years. I
blame hibernate, active-record et al. for the decay of my SQL
I finally decided to read the “SQL and Relational Theory” book by
C.J. Date, which had been sitting on my bookshelf for more than 6
months. His writing style is a bit pedantic, but not dry. You will
probably get used to it after one or two chapters.
In the initial chapters, he reiterates the fact that SQL is not a
faithful implementation of Relational Model because SQL allows
duplicates and null, which are not allowed in Relation Model, then
goes on to explain all kind of problems introduced by this mistake — I
wasn’t aware of Three-valued logic used by SQL.
Then he introduces the necessary vocabulary like relation, relvar,
tuple etc. He uses a language called Tutorial D — seems like a
well-thought language than SQL — alongside with SQL to explain most of
Chapter 5 and 6 explain relational operators in a rigorous form, which
in my opinion, is the real meat of the book. You might come across
some new concepts — or old concepts described in new ways — like image
relation and relation-valued attributes, also touches on recursion and
cycle, which I hadn’t given much thought in the relational context
In later chapters, he explains constraints, views, the relation
between logic and SQL, and how to map from logic to SQL. He also
bashes SQL along the way for many bad design decisions and provides
alternatives — Whether the alternatives are good or bad is difficult
to judge, without hearing arguments from the other side.
Overall, I would say the book is rigorous, thought-provoking and worth
I have been using Goodreads for about 3 years. Usually, I add a book
to Goodreads reading list, once I am sure that I would finish the
book. For some books, I can sense it right away. Either the writing
would be outright bad, or I might not be interested in the subject, or
it might be way over my current knowledge. For some cases, I would
read about 30% and then realize it’s not worth to finish it. In cases
where I successfully finish the book, I would rate it in Goodreads.
The above process eliminates “Rating book without reading” problem,
but it introduces new kind of problems. I don’t rate very bad books,
because who has time to finish it. I also abandon most of the mediocre
books. The books I finish and rate mostly falls into either good or
very good category. If I use 3 stars for good and 4 stars for very
good, and 5 stars for outstanding, then I would never use 1 star or 2
stars. So my reading habit systematically prevents me from using lower
It seems like most of the Goodreads’ users suffer from this
problem. Most of the books are rated between 3.5 - 4.25. I rarely see
books rated below 3. So basically Goodreads rating is useless in most
of the situation.
Human, the only species on the earth which is consciously aware of the
fact that death is inevitable. Although everyone is aware of the fact,
most of them act in such a way that they are going to live
forever. The human race as whole lives, reproduces and goes on. Though
it might make sense for the race as a whole — where it is marching
towards is out of scope of this discussion — it never makes sense for
an individual to take part in this.
It leads to the inevitable question, why does a human choose to live,
when he can easily kill himself. Thus liberating himself and the yet
to born descendants from the worldly misery. What makes human beings
resilient against suicidal thoughts. I am sure everyone — at least
those who have crossed their childhood — must have contemplated
suicide at some point in their life. But almost all of them try to
bury the thought deep inside their mind, afraid of it, even though
they know nothing about what lies ahead.
We wouldn’t be here if all our ancestors had decided to kill
themselves. But this doesn’t explain the fact nonetheless. What keeps
them going forward. What keeps them from exploring the other end of
Recently I found myself switching between Emacs and browser to refer
the jQuery documentation. So I looked around and found
XML dump of the jQuery
documentation. Now I have the data and just have to figure out a way
to display it inside emacs. Parsing the XML file every time to look-up
a method documentation will be very slow. So I wrote a converter which
will parse the XML dump and spit out elisp code. The generated elisp
code will look as follows.
Now all I have to do is configure
auto complete to use
this data and write some
code to display the
documentation in a buffer.