Behat in stages

From time to time, I have this bright idea of learning Behat, the acceptance testing framework. In 2016, I actually did that, and then promptly forgot it all as I never had to use it again. This time, I have done it again and writing down a summary of what I have learned, which hopefully will help me remember it better.

Managing Drupal log using Elasticsearch, Logstash, and Kibana

From time to time, I stumble up on various Drupal performance optimization articles that profess syslog over Drupal's dblog. Problem is, I am a big user of the log exploration interface that comes with the dblog module. For a few years, the first thing in the morning I did at work was to check the Drupal logs from that dblog interface. I love that interface. If I have to abandon dblog for the sake of performance, I want a log search experience just as good as dblog.

Notes from Founders at work and European founders at work

Usually, I try to summarize 1 book in a single write up. This piece is an exception. It covers 2 books - Founders at work (FW) and European founders at work (EFE). Both of them are collections of interviews of well known startup founders. The idea of summarizing interviews did not appeal to me very much. Instead, I was constantly surprised at seeing the same observation expressed by different interviewees.

[Book summary] The Passionate Programmer : Creating a remarkable career in software development.

In 2008, one of my coworkers mentioned a book called My job went to India. I laughed at the funny title. But I did not realize it was written specifically for programmers and simply forgot it. Recently I bought a copy of Andy Lester's amazing Land the Tech Job You Love and immediately landed a new job partly by following the advice in that book.

Writing Trac workflow plugins.

"Trac" is not a spelling mistake. It is indeed "Trac" and not "Track". But this "Trac" is not referring to rail tracks, running tracks or track suits. This is a software and it is used for issue tracking. Everything written in this document applies to Trac version 0.12.2. It may or may not apply to other Trac versions. This writeup is for people who are already using Trac, trying to do what Trac does not do out-of-the-box, and finding it difficult :-)