The Fifth Elephant 2025 (w/ Travelopia)

In the picture (from left to right): Senthil, Abhishek, yours truly & Pavan. I’ve written about all of them in my previous post.

I remember being involved in organising The Fifth Elephant conference about a decade back. I knew nothing about it apart from the conference being very popular and the word “Big Data” that was being used around it.

Fast forward to now and it was just last week that I attended it for the first time – and what a time to be attending it!

Of course, the major theme was around AI. However, that wasn’t what drew me into it. If you followed my last post, then you know I am no more doing web backend. Data Engineering is my bread and butter.

Half way through the second year now, I feel like I am back in my first programming job – Building a website using Django at Eventifier – pretty clueless about a lot still, but in awe of the bits and pieces that are starting to fall in place. Smiling at myself seeing a log being printed, being able to understand certain words that never made sense to me before, knowing it is okay to not know a certain thing, and starting to wake up looking forward to the next piece.

Attending the conference just opened up doors that I didn’t know existed.

Conversations:

  • “And you know it only when there is no data”
    • That short laugh with Anay Nayak talking about data quality at the BoF, and how sometimes the metrics themselves are misleading only to be figured out at the end when all the data goes dry.
  • “I told you this is * not * the board room!”
    • That effort at convincing the “very reliable” Payal (forgive me!) about a discrepancy within the schedule and the conversation that followed.
  • “Aren’t you the company that has a Private jet?”
    • I was very surprised when Srujan asked me that as soon as he heard I was working at Travelopia. I guess my eyes and smile got so wide that even before I asked he explained to me how he used to work in the travel industry earlier and had talks with TCS World Travel before.
  • “Get Claude Code Max & feel the difference!”
    • Multiple conversations with SVS around hiring, upskilling and of course, his heart felt request to get the Max plan for Claude Code and to never look back 😀
  • “Loooooooooooooooooooong time!”
    • Leena – A lovely unexpected catch up with her after almost a decade. Exchanging pleasantries & life updates.
    • Anenth – A lovely expected catch up with him almost after a decade. Good old days of working at the bakery, jokes around the helpless hackathoners around if he was participating.
    • Kiran Gangadharan – whom I was just able to meet only for a second since he was running for his talk. Need to remember and catch him next time at Bangalore.
  • “Long live Vizchitra”
    • Amit – Feedback about Vizchitra and wishing well for its future
  • “Leadership & Software Engineering in AI Era”
    • Discussions around the BoF Vedang hosted as well as thoughts around leadership training and work involved. Oh, and the tea as well 🙂

All the other hallway tracks including but not limited to the chats with Ashwin, Kiran & Zainab.

Notes:

  1. Srikanth’s insightful experiment of building an “AI developer” using Vertex + Gemini keeping track of metrics, inspecting the repo and automating PRs with fixes
    • Grafana’s LOKI as an event store keeping number of discrete events to be less so that queries are simpler
    • How it took 4 weeks of a developer’s observation to get it to an acceptable flow with a feedback loop in place
  2. Data Quality
    • Pydantic, PyDQ
    • Handling failures:
      • Block pipeline (not recommended since it reduces volume of data)
      • Quarantine -> Datadog can be used?
      • Tracking (Alert fatigue with them reds and greens coming so much that as long as some green is seen, you chill) – SO GLAD THAT IT ISN’T JUST ME! 😀
    • Volume check is another metric to be used
    • “Relative Rate of Change” (in context of that laugh mentioned above)
    • Custom Quality Checks:
      • Anomaly detection
      • “Reduced % over a week”?
    • System Wide Checks (Focusing on multiple datasets at a time instead of just one):
    • Prevent bad data at entry points
    • Prioritise critical data paths
    • Monitor trends across joined results of datasets
    • Airflow sensor (TBE – To Be Explored)
    • The DataOps discipline!
    • The trick of defining Data Quality budget
    • Don’t take up all DQ checks for your boundaries yourself – let 3rd parties do their part themselves (Hubspot!??)
    • Observability: Starting from being reactive -> proactive is fine
    • Re-ingesting data is fine
    • What is a Data Catalogue?
    • Metaplane (TBE)
    • Using emails for alerts might help better than Slack messages
    • Root Cause Analysis:
      • Can it be solved as a tech problem or as a process problem?
  3. BoFs
    • And yet it moves: data quality and observability | A Birds of Feather session
      • I’ve already covered the Data Quality related points above that were discussed in this BoF
    • Software development in the age of AI | Birds of Feather session
      • https://x.com/vedang/status/1946551972401999983
      • We listed down a bunch of AI tools that folks used (or at least tried once)
      • The discussions finally more or less came down to Cursor & Claude Code
      • Few folks did demos of their workflows
      • One interesting approach was how one person treated Claude as a “new Engineer learning the ropes” by having basic sessions with it. Each time you notice it makes a mistake, you manually tell it what the correction is, and ask it to go and create files in a directory that describes both what the mistake is and its correction was. After 3 or 4 such sessions, it ends up creating a pretty decent bank of specific “mistake – fix” instances that you “taught” so that the next time something similar comes up, it can go look things up there and figure it out itself.

The final piece for me were the lightning talks since I had to head out a little early for catching my train back home thanks to Bangalore traffic.

There were talks around Data Visualisation, Doc-Monitor (https://sahaj.ai/mcp-and-doc-monitor-transform-external-services-integration/), image generation & Vizchitra. Two of them that stood out were:

  • Learning Vs Education:
    The talk wasn’t exactly about it, but the person explained “learning” as an “innate tendency” of human being whereas “education” these days have become something that is being “pushed down” into students.
    He asked about the difference last time when you had a mentor / good-teacher showed you the “next step” or “removed a blocker” understanding your capabilities and your proficiency (helped you learn). As opposed to someone just simply giving you information (Education).
    His idea was to build a platform that uses AI to be that mentor for people.
  • AI Engineering
    This one was by SVS. A new “role” that has come into existence – vibe code to the death! Ahem, no. The basic idea being proficient in juggling AI tools to get stuff done.

All this was only made better by having my colleagues around. Discussing the talks attended, to attend, general networking tips and making good use of the sponsorship stalls! The jam packed schedule and our talk priorities only gave us little time to interact between ourselves though.

Epilogue

Before any of us made the decision to even attend the conference, I remember thinking once, twice, thrice, deciding not to bring it up in our standup…. Voices held me down.

“You did post about it once in the channel. It is not as if it is your duty to get them there, is it?”
“Nothing’s going to happen if you don’t do it. Why simply embarrass yourself? It is not as if they are interested right?”
“Come on Haris, just relax. It’ll pass. Don’t get into yet another management memo conversation”

I was bloody restless. Why would I not try my best? Worst case I might be misunderstood, but I wouldn’t have to live with the guilt of having not given my best shot, of having missed an opportunity that life brought my way.

I brought it up on the standup. And dropped the following text on Slack. Our manager asked who all wanted to attend, 5 of us raised hands (one of them couldn’t come due to health) and the company agreed to sponsor all of us!

The Slack text:


Here's the schedule of the conference: https://hasgeek.com/fifthelephant/2025/schedule

Feel free to look through the Data Engineering track (you can attend other tracks too :smile: ) 

- Ticket price:

The ticket prices are there at the top of the message and if a bunch of us are interested, we can get discounts as far as I had a word with the organising team.

- A "membership" benefit I feel

As I mentioned, they host short events throughout the year during weekends / evenings with "visiting geeks" or other such initiatives and they fall under this "membership ticket" along with the conference. (https://hasgeek.com/One2N/bof-with-swanand-and-svs/ was one such event that I attended with a different membership & I can vouch for the experience + takeaways)

- Workshops:

Most of the workshops are sold out since we are so close to the dates - however, they are live streamed for the conference ticket holders.

If we can choose a couple of us for attending a few interested ones online, I feel that it'll be worthwhile and presentable later on during our dev huddles.

- Quality:

One specific thing that comes up about conferences are the quality of the talks and the "hidden agenda". The AWS event we attended last year / 2023 was definitely to promote AWS - not to promote Engineering.

While I can personally vouch about the agenda being for the love of Engineering since my first job was at this organisation organising these conferences, you can see that they have a transparent talk selection process with community voting and public discussion: https://hasgeek.com/fifthelephant/2025/sub

- Significance:

* Team building

As I mentioned on the call, there is a very special "team building" that happens when engineers get together. Specifically on engineering problems. We love yelling at each other on bad variable names, unconventional folder structures, the unpinned requirements, and last but the best -  legacy code.

Isaac's team hackathon last year, the AWS F1 race competition, the exposure to databricks (and evaluating its usefulness for our engineering specific problems as a team), etc are examples.

As far as my experience in Travelopia goes, we've never shied away from investing in team building activities and getting team members together. With the importance that the data team and its engineering has currently at Travelopia, I feel this will be an investment that will greatly pay off in the long run.

* Finding answers and new perspectives

We can prepare the kind of challenges we have, questions we want to ask etc and take them there, find the randomest Joe at the water cooler, and start getting answers :stuck_out_tongue:

* Attendance:

But yes, it boils down to folks being interested to attend. That's really on us as individuals. @di-devs Maybe respond on this thread with a :hand::skin-tone-3: emoji if you'd love to attend (not considering the ticket price as the blocker).

I personally have my train tickets booked, but need to see if my health allows me to get on it Thursday night :slightly_smiling_face: I understand that it might be a bit too late for non-bangalore folks to plan the trip, hence raise hands accordingly.

Cheers!

Feel free to hit me up with questions.

C̶o̶m̶p̶l̶e̶t̶i̶n̶g̶ Surviving a year at Travelopia – From Startups to Corporate

(NOTE: This was written back in Oct 2024! A lot has happened since then – something I’ll probably write about sometime later)

A UK based organisation, a Slack channel with British folks around, we use Python, and I had just been introduced. I couldn’t resist.

However, that was the beginning of my realization that things were going to be different this time around.

No one seemed to have got the joke.

I was embarrassed beyond words then. I was gracefully advised about how that specific Slack channel was used for important announcements and success stories only. I sat in front of my screen with a very weird feeling. The “first impression is the best impression” was lurking around somewhere in my head poking me and making me imagine how the entire year is going to be from that moment onwards. In retrospect, that imagination wasn’t completely wrong.

The saving grace was Luke Reader. I breathed a sigh of relief and I regained my composure once he replied talking about the health of his Parrot. I had an exchange with him and he knew exactly what he was doing with his reply. He left the organisation recently and I’ll be forever in his debt. I couldn’t thank him enough.

Thus started my journey.

Getting the Job

  • Leaving Able:

I had left Able on the 31st of May 2023 after an exact 3 year stint. Those 3 years were the most challenging & humbling time of my life. More from a personal perspective than a career one. Now that I think about it, the WordPress editor screwing me out of the blog post I had composed as a reflection of the work & life during that time – sitting at a stretch for 3 days nonetheless – was for the best. I was brought in as a Lead Python developer who took up Ruby during the final year because of the circumstances dictating it. If it weren’t for both Arpan & Madhu on the career side of things, I don’t want to imagine how my life would’ve turned out to be.

While thinking about my next adventure, in a moment of coincidence, I heard about Travelopia both from my brother as well as Vamsee. Having worked as Web Backend Engineer, the JD didn’t seem to fit.

  • Seeking (and the failed interviews):

I reached out to a few folks amidst which I decided to apply for a few interviews directly as well. I had never given an “official” interview before and a part of me wanted to see what would happen there. Long story short, I didn’t clear any of them.

I’ll probably write about my thoughts around it in a later blog post, but the tension I had was unreal. I had to sell myself – my experience, my principles, my worth – in the span of roughly an hour where I was trying to solve a problem for the sake of solving the problem.

Outside of that, I had conversations with a few out of which we decided to mutually part ways except for 2.

In the midst of all of this, as much as I felt to not be a perfect fit, Vamsee had convinced me to quit judging myself too much and just get on with the programme. Hence the conversations with Travelopia had started.

  • The talks, the offer letter, and the postponing

There were a few rounds of conversations with multiple people. It was a roller coaster then itself and my lack of experience dealing with larger companies and their processes really was exposed. “Salary slips” was something completely new to me. That should be probably convey the idea enough and how patient the HR folks had to be with me. I was frustrated with the time the process took that I finally lost my cool – something that I learnt to be never a good thing – to which I apologised for.

I flew to Bangalore on a Friday to meet with both Venky and Sree. We had a nice chat sitting on the rooftop terrace. I declined to have the office tea wherein Venky convinced me to open up to new experiences. I obliged and I enjoyed the tea. Him recommending “Catcher in the Rye” was the highlight of the meeting (of course, apart from presenting me with a t-shirt after our chat, making their intent explicit).

There were quite a few other gems hidden within that conversation too – thoughts & insights into being a “programmer” as opposed to being a “python programmer”. How the titles of “junior” / “senior” when it comes to “Engineers solving a problem” have brought about an unnecessary bias in terms of decision making. A few examples that Sree mentioned in terms of noticing the scope of certain projects and how he had to make hard choices around them, etc. In short, I walked away a smarter man.

They sent me the offer letter with the date of joining as 28th of August. An hour before receiving the offer letter on 16th of August, I tweaked my ankle and got a bone fracture just under my left leg’s little toe. I communicated, they understood and the date was moved to September 11th.

The Job

The formal title was “Tech Lead – Data Engineering”. As I mentioned earlier, I felt the JD didn’t fit being a web backend engineer my entire career. It was only when I sat back and thought about it that I realised there was quite a bit of overlap. While the backend of a particular website and its functionality was my “speciality”, almost all (actually, all) of the jobs involved building integrations, ensuring integrity, cleanup, collating info from various source, transformation, schedulers, etc.

Once I looked it from that perspective, the tension vanished. Technically it was the same job. The only difference I could see was scale as well as the breadth of AWS stack being used. That was just about picking up a new technology to get the job done. I had done that before. I had my intuition to guide me. I was sure to stumble, slip, crawl, fall & fail.. and fall. I knew I would be frustrated, confused, struggling…

However, one thing that remained consistent about me since I heard it from Kiran (my first boss) for the first time was… I’d get sh** done.

The Bias

I wish I didn’t have this part. However, such is life.

  • “Office Space”

The image of a large organisation played out in my head as the “Office Space” movie. It was my go to movie to relax. The “people skills” part along with the one where they destroy the printer are gold. Actually, the entire movie is. I’ve never had any of the experiences depicted in the movie and hence didn’t take any of it seriously.

The problem was this thought lingering in my head about how “large organisations” could be like that. I was instantly proven wrong when I had my chat with Rajesh – someone whom I’ll refer to for the rest of my life as my first officially titled “engineering manager”.

A nice human being who listens to you and points you to the places you need to know about for getting your stuff. He never asked me “what’s happening?”. (you’ll know if you watch the movie)

  • Visibility of work

Another bias was about the visibility of work. This wasn’t from the movie, but from peers. In all my previous organisations, due to the size, my work and decisions were instantly visible as well as impactful – regardless of whether they were good or bad. The feedback loop was immediate, real and strong. Forcing you to learn, improvise and adapt quick. Assuming you fall into that category of people who take pride in their craft instead of just doing a job, there’s a certain level of Engineering maturity that comes with it when you see the business depends on you directly. You are directly a part of the decisions being made and you can make an impact on the business.

This part is different in here. I am not one to question since I don’t have the experience of the folks within the organisation who have been running it successfully for such a long time. They structured it in such a way that Engineering & Business were one step apart without having a direct connection. As much as I feel I don’t operate my best in that setup, I “improvise, adapt & overcome” for learning from the new experience. I still seek the reasons trying to have a much better understanding of the overall picture, but I am not there yet.

The Team

The Data Engineering / Integration team – The DI Team, and we DI trying. We are a group function. Essentially meaning that our work spans across the entirety of the services / brands that make Travelopia.

Recently Sree talked about the history of the team and how it is special to the organisation and even more so, to him. Time makes stories and the flow is only evident in retrospect. We’ll probably cover that one in a separate post. I like our team, but the week spent together at Bangalore during September made me like ’em all even more.

In an alphabetically sorted order, following are the folks from our team (for a vague definition of it since I haven’t seen an ‘official’ version of it yet) and how I know them. Since the work and the responsibilities are so vast, I haven’t had the chance to spend a lot of time with a few of them. Hence, I reiterate that this is from my perspective alone as “the human beings I work with”. Read it with a smile and please take it on a lighter note.

Abhijit Sahani
We joined on the same day. September 11th. While I was at the Bangalore office, he was on screen joining remotely. Someone who is grounded in reality, unlike me (now that I mention it, I think most people do have a much better grasp of reality than me!). A calm and composed soul who is skilfully juggling his personal and professional life. The “grounded in reality” part has made me reach out to him more than a few times regarding different perspectives of organisational hierarchy and how things get done.

Abhishek Yadav
He is the first person in my life whom I interviewed and gave a thumbs up to. I still remember how Nizam and I were staring at the screen during his live coding session thinking “this guy has lost it and going in some completely different direction”. We were ready to cut him off when we noticed that he was reaching the solution in an entirely different manner. His resume fit, he was smart and the coding session really impressed us. Nizam and I were like, “how did he do that?” (Reminds me of Jackie Chan jumping off a landing with cables tied around him in Who Am I)

Ameen Ahsan
You can talk about anything around him. A jolly soul who is always up for a laugh. Curious and driven by nature as well as extremely good at tech, he has a lot of projects under him on which our organisation runs today and he keeps exploring the ways in which things can be made better. Just so that I am not put on the spot, he is a huge fan of poetry and believes it is about time that pip be retired.

Anshika Srivastava
When she sent out that invitation to join something called “Fun Friday” a couple of months back, all of us were like – “now what is this about!?”. Our scepticism was answered by an eye-watering-laughing pictionary playing online event on that Friday which not only did we enjoy, but also helped us bond even better as a team since it brought out our inner humor sense and “picture identification skills”. One whom I work closely with in my recent project, her entry as a QA is what made all the difference in terms of the future of it.

Athul
If it weren’t for him patiently explaining the debugging process of certain failed systemd process sitting on a mature EC2 instance that was responsible for ensuring the output of an ML model was synced back one of its sources, I wouldn’t have had made it through the first few months of my job. An extremely smart yet quiet by nature person, he was someone about whom I had already heard a lot from my brother, but had the good fortune to experience first hand as well.

Devendra
One among my first two reportees. I had never done pair programming in my life and it was the norm of the company. He was the first person whom I did it with and found how useful it is in certain contexts. Very receptive and curious, he is as gentle and down to earth as a person can be. Our fates at Travelopia are intertwined since we both have been assigned to be the keepers of the Catalyst track. We trade Hollywood movie as well as cartoon recommendations quite often. Information security is his calling and his love for bikes is what will probably get him there. He he. (I could go on, but will save it for later).

Oh, and he is the one who introduced me to LLMs – “there’s this thing called ChatGPT”, he said.

Eldho
One of the senior folks on our team. It was only recently that I got a chance to work him hand in hand, and it was a pleasure! It is common knowledge across the company regarding how he is able to retain and recollect the smallest of details from oldest of projects. And hence, it is very nice to brainstorm with him because the discussion flows so effortlessly without having to search & reverify every little thing. He literally and figuratively knows what he is talking about, is a mentor to many and is our lead product owner (a title I’m still curious to learn more about), hence managing our daily standups as well.

Haris
“An un-self-managed, negative thinking angry young man with a blaming mentality who generally has a lack of trust and spreads toxicity and seeks attention”

Isaac Raja
There are a few people whom I’ve met who falls into the category of being a wise man comparable to a glass of water so full to the brim with knowledge that just by standing close to the glass, you’ll get the water on you. And this is not “gyaan” or “advice”. Just pure, unadulterated knowledge. My first impression of him was as of a very serious, quiet guy who doesn’t waste time indulging in senseless banter. Someone whom you should * only * interact with for that exact thing you need and then steer clear of.

Boy oh boy, was I wrong! Not just wrong, but completely wrong. Not only does he enjoy a good laugh, he is a master at finding excuses for it too! A fellow good at heart, extremely helpful and someone with a myriad of interests outside of tech as well. As much as an introvert he is, it was a true moment of true leadership (and an inspiration for me) when he put forward the idea of the mini hackathon (Using local LLMs to answer questions about our documentation). Everyone * wanted * to follow him.

Nizam Mohamed
Coming from the web app backend monoliths world, I’ve had my frustrations more than a few times with all the microservice architecture going on here and to know that this guy wrote the first AWS Lambda within our org only makes me hate him even more! He he…
One among the early employees of the team, someone with a good sense of the tech he works with, and a very soft spoken friendly persona. Literally a neighbor, I was fortunate to meet his family recently when they were coming over to spend an evening at Karma Road.

Pankaj Bhatt
One among the freshers, someone who loves learning and pushing his own limits. A jolly guy who I remember desperately tried to get us to paintball during our team outing. A humble fellow who taught me about the knap sack problem, I’m sure I’ll have more to write about him over the coming months and years.

Pavan
One among my first two reportees. A well rounded engineer with a bright future. Someone whom I enjoyed working with a lot. Curious about his machine, passionate about his work, the only time he’ll get angry is if you don’t hit the cork after he shouts “yours” during a badminton game. A good company to have in any gathering, I hope the work we’ve both put into the project together over the last year will soon start to pay dividends. (Much like Devendra, I could keep going, but will save it for later)

Pradeep Bhat
One of the first few folks I met from the team, and I am still thankful to him for sharing one half of the roti during my first lunch with them. I believe his official title is “Project Manager” (another title much like ‘product owner’ that I am curious about). He has been one of the people whom I’ve depended on to get to know more about the business and how things work. Someone who keeps track of the projects of the data engineering team, its resource and time allocation, he is a pro badminton player and a nice person to pick a chat with.

Rajesh Iyer
The OG of the data engineering team – as Sree puts it. Our Engineering Manager as well as a father figure to many. As I mentioned earlier, I had my initial conversation with him with “Bill Lumbergh” in mind and within the first few seconds of the conversation, I felt ashamed of myself for having had that image in my head at all. Someone who is looking forward to the next stage of his life – to make a difference in the world rather than Github PRs. I was lucky to have this overlap of my time with him where he told me his story and how it is a career choice, but an important one, to maintain your hands on curiosity on tech as and when you go up the corporate ladder.

Reshma
An ace QA, she was away for a huge chunk of the last year, busy welcoming her bundle of joy to this world. It has only been through the daily standups that I know she is someone whom quite a few projects of the team depends on to ensure its quality. I’m sure our paths will cross soon & I look forward to me rising to the fight when she challenges the work that I do.

Senthil
One of the senior folks along with Eldho who has seen the evolution of our team first hand. An extremely soft spoken person whom I haven’t had the chance to interact much with over the days until now. I’m sure it is going to be just a matter of time before our paths cross and hence will leave this part as it is for now.

Sreehari
The chill dude. Any and every interaction that I can think of his, he has that vibe about him. Getting his “good game” remark for a badminton game during our September ’24 team retreat was a huge confidence booster for me personally. I was playing after 15 years, and my confidence going into the game was literally 0.

As far as my understanding goes, there’s isn’t an exact “so many members for this team” kind of a rule. There are quite a few people we consistently engage with for different projects at one point or another – Dan, Steve, Shilpi, Jaysheel, Roshna, Harish, etc.

However, I wouldn’t feel like I did it justice unless I wrote about 3 more people.

Sreenath
Whenever I try to come up with a description of him in any conversation (including now), I always talk about how he was the only person who got my 6 year old comfortable enough to talk during the time I took her to visit the office. That reflects the way his conversations are and hence why I felt it was important to mention it. My conversations with him revolve around the lines of what it means to be an Engineer and a Tech lead. Someone who convinced me of the “boy scout rule” from his personal experience even outside of tech, I look forward to the time when I’m able to collaborate with him directly on a project.

Venky
A “high energy person” in his own words that sometimes his energy is so high that you’re left with no choice but to tune your energy down so as to not disrupt the energy equilibrium of the universe!

I already mentioned about the tea and “catcher in the rye” earlier. A book that I immensely enjoyed. The “energy” part wasn’t a joke either. After the incident, I consistently have conversations with him. He asks these difficult questions, and slowly nudges me into practical ways to find answers for it. He has a way of leading a conversation and making sure it stays afloat with the subject of what it is about instead of unknowingly diverging away into tangents. I’ve already been able to not only apply the thoughts I’ve learnt from him, but also practically experience the difference it makes.

Sree
I’ve heard from more than a few people at the organisation that the attitude / culture of the team is a trickle down effect from him. I haven’t had the chance to spend too much time with him personally though. He has a good amount of history with both my brother and Vamsee – the two people whom which my referral came through. A religious person and someone who consistently tries to lead by example, he has quite a few stories to tell about Enchanting Travels becoming a part of Travelopia, about witnessing the growth of certain people through their career paths and about what it takes to keep an organisation running.

Experiences

  • No Coffee for you:

    Around the mid of November 2023, there were a bunch of folks from UK visiting the Bangalore office out which one of them was none other than our CTO – Mike Blakemore. For whatever reason, he had setup these 15 – 30 minute catchups with the “senior” employees and one among them was me. The poor guy was having a hard time with a nasty cold and a sore throat too I believe.

    By the time it was my slot, he came out and rushed past me apologising saying he wanted to get a coffee. I followed him thinking it’d be nice to chat there over coffee rather than in the cubicle. He put the cup under the coffee machine and clicked on whatever his choice was (sorry, not a coffee connoisseur here) and it went “pookhhhhh”. Tried again “pooookhhh”. It was empty.

    It was 6.30PM, it was getting dark and most of the people had left the building. Even though I saw Sree & Venky standing at the other end of the office, it felt weird to run up to them & interrupt saying “no coffee!” (now that I know them better, today I actually would do it). So I decided to go get Sreejith instead and took a few steps to head down the 2nd floor when Mike called me back and said its okay. He asked me about water and I pointed to the tap that all of us take water from.

    He put the glass under it and asked “will it be okay if I drink this?”
    My mind answered “How the heck should I know man!?”
    My mouth answered “Umm, yeah.. We all drink that….”

    He didn’t take that either and we ended up having our chat with the poor guy sneezing and coughing. Apparently he had a stomach upset before due to some similar experience and he was just trying to be careful. It was my 3rd month on the job, I was happy to get that time with the CTO and I blabbered away like an idiot. I remember him saying “you seem happy”.

  • Almost getting fired (and learning what “raised to the HR” means)

    Venky and I recently discussed about how the context of a moment past & the reasons of its being is never fully recreatable.

    That being said, as they say, “there are levels to this sh**”, and the levels are taken pretty seriously. A combination of my lack of understanding of that seriousness along with the effect of Chinese whisper led to this happening.

    While expressing my concern over a faulty metric I found that was being used to evaluate the effectiveness of one of the functions we had implemented, I was misunderstood and the decision was made to let me go. Before it was enforced, Venky decided to have a conversation with me. The “how I expressed my concern” was then identified to be the problem. Neither the “what” and nor the “why”. Now you know why the title says “survived”.

    It was personally even worse for me because I was expecting my thanks for having pinpointed the fault (something outside of my “employment responsibilities”) when Rajesh mentioned “raised to the HR” to me in a rather gloomy tone. I was not aware of that phrase. To be honest, I even thought “wow, even the HR wants to talk to me about my find?”. However, the tone suggested something else and a conversation with a friend of mine revealed to me what it actually meant.

    From experience, being fired for the right reasons is an experience that I value. It happened to me back in 2016, and I keep it close to my heart. As impractical as it sounds, it is so up there at the top of my concerns that it not only acts as an instantaneous personal SOS for the last 8 years, but also helps me hold true to the trust between myself and the organisation that I’ve made a professional commitment with.

    Venky generously offered me his time to help me with getting a better grasp of the “how” and we’ve been consistently chatting over the last few months.

  • Raising a concern (and a * huge * self reflection)

    During the initial months of a project we were working on, I raised quite strong concerns over mismanagement around it. My frustration at not being acknowledged came out very explicitly and I felt bad about the way I reacted to the situation.

    The “raised to the HR” incident happened after this, and hence I assume both was read together. However, I was conflicted trying to put things in perspective.

    It was during this time that I attended an event at Pune and it was one of the best decision I made in recent years:

    https://x.com/harisibrahimkv/status/1825928166365376714

    Siddharth offered me his time. During the initial call, I brought this up. He listened patiently and finally asked:

    “You’re still working there because of one person’s compassion. Where was that compassion of yours?”

    I was dumbfounded. The conversation carried on for a while where he narrated his experiences and certain unwritten rules about how to navigate situations such as these. How “feedback” isn’t what is important, but “helpful feedback” is. How “helpful feedback” isn’t just about the content, but the strategy of presentation as well.

    I spent a lot of early mornings by myself reflecting on this and I wrote kept on writing to introspect. There were two things I wanted to do:
    – Genuinely apologise. Not the “sorry” to calm things down. Not do the “bygones be bygones, let’s move over” thingie.
    – Ensure I never put anyone else ever in that spot.

    As I mentioned, Venky gave me his time generously during this phase. While the lesson I was learning along with the growth from this experience in the long run was important, as was the practical steps I could take to man up and face the situation. Long story short, I achieved the first and I could face the people involved with an open heart. I am prepared for the second.

    The funny thing was how I felt looking at this entire situation from the perspective of a third person – unnecessarily serious.

  • Events and retreats

    There were a bunch of events and retreats over the year ranging from outings, parties, gatherings at the office on special occasions, gatherings at the office during the times when people from the UK visits, etc. I had a good time at all of them that I attended. Here are bits and pieces from them:

    * The year end party:
    It was at a club in Indira Nagar. If memory serves me right, it was the first time I was at that sort of a bar. The woman at the entry gave me two small ticket like thingies and I wasn’t really sure what they were for. Well, until conversations started happening about whether I had my “shots” and if not, whether I could lend them my “tickets”. That’s when the power I had hit me. But before I could toy with it, Kirana caught me and confiscated those tickets of mine. Apparently it was to control the number of drinks people can buy from the bar. Nice.

    * The Onam Sadya:
    My first experience cutting up flowers to make the pookalam. Scissors, chopping boards, knifes and what not.

    * The September ’24 team meet:
    It was a lovely week. Everyone shared a lot of history about themselves and we laughed and we laughed and we laughed. It was a good choice for the company to have booked an Airbnb apartment as opposed to the usual individual hotel rooms. Gave us all enough common space to sit and chit chat.

    It gave me the opportunity to connect personally with a few of them as time allowed as well. That moment was a realisation for me.

    We did a team cooking event at Slurp Studios. It wasn’t really my first time cooking, but when you see the humor and fun of the team that you work with day in day out in a context other than tech, you feel touched. Suffice to say, we cut, we chopped, we knead, we heated, we fried, we joked, we laughed, we cooked and last but definitely not the least, we slurped! Yep, all of us ate what we cooked if you can believe that. He he…

    We had a badminton event. While it was a game, it was a highlight for me. Not in terms of wins or losses or performance, but at a very intricate personal level. Also, as I mentioned above, Sreehari’s “good game” made a * huge * impact. I laugh at how such a “small thing” viewed from the eyes of another person, can be a life changing event in someone else’s. Extremely grateful to everyone who played with me that day.

  • Someone has heard of Travelopia!

    Up until August ’24, whenever I mentioned I worked at “Travelopia”, it gave people the idea of a “ticket booking company” immediately. The conversation starts with “not like Cleartrip or Makemytrip…”. And then it hits the spot with “We have our own Jet“.

    1.
    The event at Pune which I mentioned earlier, led me to join a discord called “The Engineering Org” (TEO). Everyone who joins introduces themselves. After mine, a friend from back in my HasGeek days, whom I haven’t been in touch with for a long time, replied saying, obviously “long time”. We setup a call and had a chat.

    As I said, the notion of people not having heard about the companies I worked for was not new to me. However with Ashwin, when I mentioned Travelopia, he thought for a moment and said – “That UK based company, isn’t it? I know someone from there…”

    “Oh, first time someone has heard of it in my circle. Who is it?”, I asked.

    “Some Rajesh… Rajesh…”

    “Gosh! He knows my manager??”, I thought to myself.

    “Rajesh.. Thiagarajan. We worked together at RecruiterBox

    2.
    I recently attended Rootconf. I was only too happy to meet one of my earliest programming mentors – Anand Chitipothu. We hugged and had a lot of catch up on, in the midst of which I mentioned where I work at.

    “Oh, you work with Sree? I did a Python training for them just a year or so back”

    I almost mentioned “Yep! He is one of my 5 bosses”, but restrained myself.

    Anand continued, “You know a fun fact? He hosted the 2nd Bangpypers meetup since it started”

    Again I chuckled to myself thinking about the irony of how I’ve been trying to get the org to host a Bangpypers meetup since the last 2 or 3 months.

    3.
    At the same event, we were having a BoF around “Use boring tech”. I met Neependra Khare there, who gives corporate trainings on Kubernetes. He was a nice person to chat with and again, when I mentioned where I work at, he mentioned, “Oh, you work with Vamsee”.

  • The #books channel coming to life
    On 23rd May ’24, I had finished rereading “Round the World in Eighty Days” after a long time. It was one of those hardcover ladybird classics which was one of the very first unabridged books that I had finished end to end during my childhood. One of the books that marked my coming of age. One of the books that you fall in love with the way it looks, the way it feels, the way it smells and finally the way it makes you feel with the story.

    Reading, stories and especially fiction, isn’t for everyone. No judgement there. People get drawn to different things. However, it is always nice to find peers. I spoke my mind about my wish, Sree replied saying to get it done and hence the #books channel on our Slack was born.

    Here’s the list that’s been discussed so far:

    Fiction
    * Round the World in Eighty Days - Jules Verne
    Science Fiction
    * Foundation’s Edge - Isaac Asimov Our Final Invention: Artificial

    * Intelligence and the End of the Human Era - Gary Dana & James Barrat
    * The Forever War - Joe Haldeman
    * Down and Out in the Magic Kingdom - Cory Doctorow
    * Makers - Cory Doctorow
    * Walkaway - Cory Doctorow
    * Silo Trilogy - Hugh Howey
    * The 3 body problem trilogy - Cixin Liu
    Fantasy
    * The Wise Man’s Fear - Patrick Rothfuss
    Technical
    * The Phoenix Project: A Novel about It, Devops, and Helping Your Business Win - Gene Kim, Kevin Behr, and George Spafford
    Self Help
    * The Surrender Experiment (Lead Title): My Journey into Life's Perfection - Michael A. Singer

    * Be more pirate - Sam Conniff Allende
    * HBR's 10 Must Reads on Emotional Intelligence (With Featured Article "What Makes a Leader?" by Daniel Goleman): HBR's 10 Must Reads Series - Harvard Business Review, Daniel Goleman, Richard Boyatzis, Annie McKee, Sydney Finkelstein
    * Why Travel Matters - Craig Storti
    * Manage Your Mind: The Mental Fitness Guide - Gillian Butler
    Auto Biography
    * Limitless - Tim Peake

    * The Ride of a Lifetime - Robert Iger
    Gamers
    * Ready Player One - Ernest Cline

    * Tomorrow and Tomorrow and Tomorrow - Gabrielle Zevin
    True Crime
    * Dark Wire

Summary
– An extremely interesting year especially from the perspective of coming to a corporate from 9 years of working at startups
– Impressed by the default compassion & trust and the organisation has towards its employees. From the perspective of “human beings working at an org”. Reflects in terms of work hours, leave policies & benefits
– Yet to figure out the reasons behind a few of the “processes for the sake of processes” that are in place like “objective setting”.
– As I touched up on before, frustrated with the gap between “engineering” & “business”. Still trying to learn (and hence can’t judge) why that was made the norm.
– Enjoying pair programming to an extent, but still not convinced about how “that has to be the way”
– If you are at a point in your life where you want a “work life balance”, then an amazing place for it. (I differ in my outlook towards making ‘work life balance’ as ‘the * only * way to do it’)
– Having a separate work laptop has worked wonders for me. Especially having stopped listening to music while working.
– Happy with the pay, but extremely sad with the taxes (first time having that experience since I worked as a ‘consultant’ before and hence the realisation). Not something to do directly with the company, but just personally.
– Happy with the work challenges and extremely happy with the learnings so far. It was evident while talking with a few of my peers from the past.
– Happy about the final impact of my work being about “enabling travelling”.
– Toughening up to not let an employer emotionally break me.

Wrapping up
You learn by trying things. You learn even more by finishing ’em.

A year’s worth of experience is a lot to write, and I am keen on learning. For those few of you who know about this post coming, it’s a been a while since I started working on this. I recently saw someone making a bullet point list of things to do tomorrow and striking them off one by one. I am striking “finish the one year blog post” off today. I might come back with edits. Might.

I am by no means an introvert, but I have my moments when I disconnect. That being said, there are a LOT of people whom I had very nice chats with during the last year. And hence a lot of people to thank. I’ve started appreciating time and health like never before and hence thank you to all of you there who took even a minute of your time to have a chat. Especially Mehar, Kirana & Savithri having had the patience to answer my queries again and again and again…. and again.

Last but not the least… definitely not the least.. thank you Isaac and Pavan. Thank you for just mindlessly laughing with me on that Friday afternoon about every little random thing under God’s Green Earth. Ignoring work and ignoring everything else. Otherwise that would’ve been my last day at Travelopia.

Volunteering at PyCon India 2024

https://platform.twitter.com/widgets.js

(Nope, I am not in that picture)

It was quite a year.

Not just in terms of PyCon, but personally as well. Hence when Ani came up to me during that Bangpypers event, I thought twice before answering him when he asked me about volunteering for PyCon. After a few seconds, as much as I had the “great automatic grammatizator” at the back of my head, I said “Content”.

My fear was proven right. Not only so, but I wasn’t able to deliver either. Of course, as is with almost everything, the first few weeks went according to plan – weekly meetings, discussions around who would take up what, etc. However, as time moved on, as much as I hate using the phrase “as was expected since we were volunteering”, that is indeed what happened and I started slacking.

The one whom I have to apologise the most to would be Aakashnil Roy since his social media as well as mailing list announcements were blocked due to the content team falling behind. The reason I mention this is because, I hate this excuse. Intentionally or not, that is the excuse I used in my head.

Volunteering

The way I see volunteering at its core is like meeting a person who desperately is in need of help and telling them “trust me, I will help you”. Obviously, it is very rare that you would say that going upto a complete stranger doing something completely random at a completely random time. Hence the assumption here is that you are telling it to either someone whom you know, or someone whom you see is putting in the effort to achieve a cause that you believe in.

They feel relieved. They trust you. They delegate. The success of the effort now depends on you as much as it does on them. They gave you power. You can probably imagine what “letting them down” would mean by now.

However, “letting them down” is not the metric on which you should base the consequence of your actions. Remember, you offered your help because you either loved the person whom you offered it to or loved the cause they were working for.

Hence letting yourself down should be the more important metric here.

You make yourself vulnerable to be held accountable for. Accountability is inevitable. Being defensive at your failure is not an option. You admit. You get back up. You continue.

It will be definitely be up there in one of the most fun experiences you’ve ever had, but volunteering is not “just fun”.

And therein lies the beauty of it. You are never alone.

The Team

The beauty of the thing is, the excuse works both ways. On one side, as I said, people use it to slack off. However on the other side, people see it as a sign for showing compassion. The respect towards the intention with which the initial commitment was made pours out and the team comes forward to support.

That. Is. Magical.

Suffice to say that the team did a lot of the reviews that were required which, to be honest, made me feel ashamed of myself. However, one common theme across all the times I have volunteered for in my life is that the team accepts you. As I said, you are never alone. You belong.

And the PyCon India team of volunteers will always remain my goto example whenever I make that comment.

We persevered, we stuck together, we delivered. Along the journey during which I was continuously relearning & refreshing whatever I wrote so far.

September 21st

I reached Bangalore on 21st itself. After volunteering in the morning at my office for cutting up the flowers and leaves for making the “Onam pookalam” and having a good “Onam sadya” (Lunch) with my colleague Eldho, I left work a little early since all the volunteers for the conference were asked to report at the venue by 5PM sharp.

I really hate it when people don’t respect others’ time. I was there at 5.

The allocation of duties were already done by that time. For whatever reason, seeing myself allocated as the “Emcee/ Speaker coordinator for Audi 3” made me feel extremely uneasy. I was not sure why. I talked to my wife & mentioned that I was considering attending instead of volunteering.

She said, “That’s the last half a decade’s worth of comfort zone messing with you. Go get it done”. I fondly remembered one of Sidharth’s comments during the Pune BoF meetup – “Marry well”.

We spent the evening introducing ourselves to each other as well as making sure everyone knew what their tasks were going to be and whom they were going to work with. We had fun doing the swag packing session with the “most optimised algorithm generated over the last decade” as well.

Since all of us had to reach the venue at 7AM for the next 2 days, I bid goodbye a little early and went to get a good night’s sleep.

I was nervous and tensed beyond words. I knew why. I cycled my mind through a few of the volunteers’ faces. Both old and new. I felt calm, and I slept off.

September 22nd & 23rd

Grabbed my volunteer’s badge and went in.

“We need to vacate the inventory room downstairs! Nimhans is super strict about only having their stuff in that room” – Bibhas and Sohom were discussing.

I was like, “Ah lovely! The fun starts”.

For whatever reason, one of the things that I look forward to the most during any and all of my volunteering experiences was handling the unplanned and unaccounted for stuff. It is one of those occasions where “that person” takes charge and there’s no question of “who put you in charge”, but everyone just falls in line and gets it done. We found a very… strange trolley (one that has to be pulled instead of pushed), loaded it up with boxes, a certain “chair on chair” combination and within 10 – 20 minutes, got everything out.

In the midst of which Pratik found me and said, “Hey, go and have breakfast”.

Speaker Co-ordination

In Audi 3, Sam and I were handling the speaker co-ordination on day 1. Kalyan and I did it on day 2. While the task itself had a proper definition, it was all the subtle things around it that I loved the most. The most important thing being – to make the speakers comfortable.

Many of the them were first time speakers. I would be lying if I said I wasn’t a bit emotional seeing myself in them when I had my first such experience almost a decade ago. A pat on the back, a few jokes, the water bottles, the short pep talks, all goes a long way. During those moments, personally for me, it never felt like “me doing my task”. It was like trying to make the best out of that occasion together with them.

And that is the tricky line to walk. It * is * a professional conference by all means. Volunteer driven or not, the attendees and speakers come with very high expectations. Hence standing your ground and at the same time not being rude or rubbing anyone off the wrong way is extremely important. I had to cut a few of the speakers off, limit the Q&A along with a few subtle head nods and thumbs ups to make sure things were on time and on track.

Two of the speakers coming towards the end of the conference and explicitly showing their gratitude made the entire effort worthwhile.

Wrapping up

There were numerous tiny things that added up to the whole experience otherwise too:
– Manning the door to do crowd control since Audi 3 was the smallest and hence got filled up quick.
– Meeting folks from the past and that instant smile on their faces.
– The short but sweet show of concern from different folks (especially Pratik & Ashish) asking “had food?”, “tired? need a break?”, “come over and join the others”, etc.
– The good food!
– Couple of times when certain people called me “Noufal!”, and started talking to me. I enjoyed standing there, and it took a minute or two for them to realise the mistake. He he.
– And finally that attendee who was desperate to get a speaker bag from me! I thought it was silly until the point when I got one of them bags as a token of appreciation being a volunteer. Then I could understand why he really wanted to have one of ’em.

https://platform.twitter.com/widgets.js

That’s about it for this year folks. For nostalgia’s sake, here is an email I sent back in 2015 to the entire registration team once the event was over:

Okay, I spent a minute on how to address all of you..

"friends"? Na, too immature and formal.
"folks"? Nope, something that I use a general addressing noun.

Know what? I am just gonna skip addressing altogether! I'll just begin
by saying we were the best TEAM EVaaa!

And yeah, this mail was sometime coming. Let me make the usual excuse
saying I was catching up on work and blah blah.

How're all of you doing? Recovered well and back to your daily
routines again I hope? For me personally, it felt good to rest me feet
(yes, literally) because they were hurting beyond words on Sunday
night.

I haven't felt the way I felt being with all of you in all my
volunteering and team work experiences. I really meant it when I said
this: https://twitter.com/harisibrahimkv/status/651011704810156033

Each and every one of you are awesome.

Numan,
It was such a weight off my head when you agreed to take up all the
printing and pouch hunting. I was so worried of getting back to
Bangalore late after Eid. Thanks to you I could stay back with my
family for a couple of days. :)

Take care of yourself. Haven't met your two little ones, but they are
extremely fortunate to have a Father like you.

Rakesh,
Well, I can't thank you enough for sorting and splitting up all those
badges and getting them ready for registration day. I know I might
sound over-excited, but trust me when I say that one of life's
greatest pleasures is to have friends who are as committed as you for
a job and don't miss out on the even smallest of details.

I hope you found time to talk to a few potential employers at the event. ;)

Siva,
Well, I can aptly describe you as being the power house of the entire
team. ;) Thanks for understanding the times I was so tired and taking
up the load from me. As I said, every little thing, not matter how
mundane, adds up to being a strong team.

Also folks, this: http://www.imdb.com/name/nm4089236/. I feel privileged now!

Meghana,
I didn't get much time to get to know you personally, but thank you so
much for being there at the time we needed you. Just coming up and
saying that you would take up the sponsor/speaker stall was such a
relief. I really was decision-tired at that point and I guess as I
mentioned here (https://mail.python.org/pipermail/inpycon/2015-October/010256.html),
there really is a telepathic connection going on. :)

I hope you had a great time with your event with the dev sprints and
along with your sister.

Dhriti,
Your commitment showed the moment you reached so early on Saturday
morning to help out! Thank you so much for sacrificing your time at
the conference to help us out. Within the little time we had at the
venue, I understand why Chandan so proud to introduce you. :)

Hope the volunteering work didn't take up too much of your time and
you were able to engage with the conference crowd as well.

Rajat,
Dude, you were a shoulder I could lean on! And your humour sense
coupled with that look you can have on your face is priceless at
times. You know those few people whom you know that if you're with you
are guaranteed a good time? It's you. :)

I am sure you'll be a pillar of PyDelhi's community.

Kiran,
I guess the conference had a lot on your plate. I am just glad I could
pull you in now and then to help us out in between your other duties.
Sadly, we didn't get much time to chat this year unlike last except
for a few minutes over food. It was fun doing crowd control with you
at the t-shirt stall. :)

And man, you're the coolest!

Anand,
You were inevitable in the team! Thank you so much for taking care of
all the money matters! I am sure I would have gone crazy trying to
handle that in between. It was a great weight off all of our heads
when I heard you were bringing in all the stationery.

Besides the registration, thank you for being a pillar in organizing
PyCon. I am sure Vijay and Krace could not have done it without you.

Soumyo,
You were a blessing in disguise at the time of need. I apologise for
dragging you into registration when you were happily planning to
attend the conference for both the days, but thank you so much for
having the mind to help out. Hope I didn't take too much of your time
out from the conference.

And man, I was so glad to hear you pronounce my name "Haris" instead
of "Harish"!

Apoorva,
Well, even if you hadn't been there at the registration stall, I
wouldn't have been able to thank you enough for sorting those "A"
badges in place! I am pretty sure none of us would have had the
patience to do it. Thank you so much for manning the stall, even alone
at times. You were someone I could count on with my eyes shut.

So no more waking up at 6? At least, I am glad that you enjoyed that
for the conference. ;)

Vanitha,
You literally ran the conference! Folks, she took care of all the
speaker - reviewer co-ordination for this year's conference. Thank you
so much for taking the time from between your busy schedule to help us
out with the sponsor/speaker stall at the time of need.

I am glad you were there to cool down those two people who came with
the workshop tickets for the conference. :) Man, that was quite a
moment.

Mahanthesh,
Your excitement to be a part of community and to get involved more
translated into your commitment. I am sorry I didn't get to using your
Whatsapp suggestion, but that would have been extremely helpful in
that scenario had I used it. Perhaps you can take charge next year and
lead the registrations? :)

Also I understand that you want to get involved more. Have you signed
up at https://mail.python.org/mailman/listinfo/inpycon? If not please
do. We would love you to come forward and take more responsibility.

Himanshu,
I never could figure you out, and I meant that as a compliment. I
mean, running your own company and taking this much time out of that
to sit at a registration desk and volunteer? I am not digging in, but
I am just too glad that you were on the team. Couldn't have placed the
stall in better hands on the second day while we were manning the
t-shirt stalls. Also, thanks for the bike ride. ;)

Finalized on your trip dates to Kochi? Give me a call once you pass
Calicut. I can probably meet you on your way as my home is in between
the highway from Calicut to Kochi. And dude, we really need to talk
about your sleep cycles. :D

Thank you, all of you, so much. I am neither exaggerating nor lying
when I say my faith in humanity only got strengthened after working
with all of you. Knowing that people have your back and that feeling
of being able to trust someone blindly; that's what makes a strong
community, a strong team.

I am sure by now I've lost most of you. :P That's my problem, I just
keep on writing when I am excited. Might not be the best work of
literature, but hey, it just goes to show how happy I am! :)

Let me start wrapping up by saying I would love for all of us to meet
again if possible. I know that not all of us are in Bangalore, and I
guess we can't do much about that either. Who all are in Bangalore
among us? Numan, Siva, Anand, Vanitha, Mahantesh, Meghana, Himanshu
and I, right? Let's try and see if we can catch up for lunch/tea (I
don't drink coffee :P) sometime.

I hope all of us come together sometime soon, although I feel it is
only going to be at next year's pycon. :/

Keep in touch, stay excellent, take care and hope to see y'all soon.

Until then,

A sunny Saturday at BeaglesLoft.

Siva sent me, Krace, Kartik and Sayan an email asking whether we would be available on the 7th of June to volunteer for the first offline Django meetup. I was only too happy to receive the invitation and replied saying “I believe I can make it”.

The next mail in my inbox is where I found TechBuilders. The email was from the BangPypers mailing list posted by someone called Niranjan. This is the link that was in the mail:

http://techbuildersbayesianreasoning.splashthat.com/

Even during my time at HasGeek last year, I used to keep wondering why isn’t there any learning related to Math happening among all these Computer geeks who were working on Python, JS, Ruby, etc. I even had a decent conversation regarding this with the one person whom I found to be interested in the Math aspect of computers. His name is Abhijith and we became friends at the Fifth Elephant conference last year when he signed up to volunteer for it.

Suffice to say, visiting that link, when I saw that these people were trying to bring Math and Computer Science together, I knew it was something that I could not miss at any cost. I sent Siva and the rest of them an email then and there itself saying I had stumbled upon this TechBuilders meeting and might not be able to make it for the Django workshop.

I love teaching and hence was extremely upset about missing the Django workshop. However, on the other hand, I felt like the TechBuilders people had read my mind. It was, as Paulo Coelho would say, a calling. I could not resist going. Also, I had to give up on my Saturday writing as well.

It was being hosted at Haggle’s office. The people working at Haggle were the ones behind BeaglesLoft (a playground for creators and innovators) and also behind TechBuilders, their initiative to teach the Bangalore tech community something that it is lacking. The office was just a 5 minute walk away from my home.

The mail which we received from Asya, the quick witted community manager at BeaglesLoft, on the day before had asked all of us to be there at the venue exactly at 10:30AM and not to follow the “Indian Standard Time”. Little did they realize the inevitable force they were reckoning with. The meeting started at 11:00AM.

The event was supposed to start off with Sandipan from JustDial giving a talk on how they were using Bayesian theorem at their company. Unfortunately, he had some emergency and could not make it. So Niranjan, who is the founder of Haggle, took the stage and started off by introducing us to what the whole deal was about.

The thing that I liked about Niranjan was that he was not pretentious. He really observed Math was not a part of the IT culture, along with the liberal arts being treated as a completely separate entity as well. He wanted to create an atmosphere where these things would co-exist and would value each other’s importance. There, he was doing it.

Not just that. I have heard many people twisting their words to indirectly mean “spread the word”. Niranjan directly told us to do it. His conviction to doing this impressed me. Apart from taking the initiative to build the community, I must say he is a really good teacher too. He taught me Math and that, is amazing.

If you were to meet me before my 4th year of college, I would have told you, without question, that I was going to become a Math teacher. So when he talked about Mass Probability function and the Bayesian theorem in a way that I could understand after more than 2 years of staying away from it, it felt really great.

You must read his series of blog posts on Bayesian Reasoning here: http://beaglesblog.tumblr.com/tagged/techbuilders

We were asked to read them before attending the meetup. Having been the college kid, I put it to the last moment as usual. An hour before the meetup! I finished off all the posts within 45 minutes and it was time to leave in order to reach the venue on time. That dreadful feeling of not having revised what you had learned that dawns upon you on the morning of the exam day was on me. I know, it is funny. But to know that it was not something to worry about, made me feel even more excited to attend the gathering.

Towards the end of his session, he proposed a few use cases where Bayesian reasoning could be applied so that we could break up into teams and work on modelling them.

One was about a Rikshaw driver. Suppose you were one and someone came and asked you to take him to Jayanagar, how would you apply Bayesian reasoning to know whether it would be profitable for you to take him there.

Second one was about the problem given on the blog itself, identifying a person whom you meet in the US as being from Bangalore or not.

The third one was the famous Monty Hall problem. Even though I say it is famous, it was the first time I was hearing of it. It is an interesting problem which makes you realize why Math ain’t your gut feeling. It is a bit crazy, but yeah, read it.

We decided to then split up into three teams of 5 each. The decision was followed by an interesting 5 minutes of trying to figure out an algorithm to split us up. Whether the count should start from 1 and go until 5 before the 15 us were through or whether it should start form 1 until 3 until all of us were through. The confusion was funny enough to have while we were learning Math!

I was in team 2 consisting of:

Sandeep, an IIITB graduate who was going to join Haggle in a few months. He was sharp. The moment we gathered around a table to “brain-buzz”, he came up with this idea of building a recommendation system which would analyse the social media streams of users and figure out what sort of restaurants he preferred to eat out of.

Ashray, who was working with Haggle already. A strong and silent person, I would say. He was as keen as the rest of us on learning together.

Ashutosh, who is Sandeep’s junior at IIITB. He is awesome. When I was struggling to get the basics really strong, he took my pen and paper from me and taught me the reasoning from step 1 patiently, with examples and proper explanation. I hope to see more of him over the coming days.

Last but not the least, Fasil. I would define him as exuberant, but not the BSing kind. He was very outspoken but knew exactly well what he was speaking about. He was working on his own startup.

By the time we had discussed and modelled our recommendation system, it was time for presentations.

Oh, and I forgot to mention the drinks and biscuits that were there all along! No, no, seriously. What kind of a chump would I be if I did not mention this after eating 6 of those delicious cream biscuits right under the nose of my team mates while they were busy building the recommendation system!

Asya, Reya and Tania made sure we had the best atmosphere for thinking and solving the problems at hand. These are the times when I really see the importance of good community managers. They make other people’s lives easier. I never saw myself like that when I was at HasGeek I guess. I just hope others did at least.

It was time for the presentations and team 1 was the first one to go in front. They had build a model around detecting the person who was sarcastic. After analysing manually a few 100s of a person’s tweets and identifying the sarcastic ones in them, each person was assigned a probability of being sarcastic based on how many times he was sarcastic among his past 100 tweets.

This was done for more than a few users. After having built the prior data, when a new tweet came in, you could use the Bayesian reasoning to find out what was the probability of that tweet being sarcastic given it was from a particular user. They had a few numbers as well for demoing this.

Second one was us. Well, I have already explained what we did. The interesting point that Niranjan made was to use more than just words for our probability calculation. Because if we were to just look at words like “Pizza”, “Burger”, etc, then we would miss out on differences between sentences like “I hate pizza” and “I love pizza”.

Once ours was concluded, team 3 came in. They had a funny use case. I have learnt to take things in a lighter note and I hope people don’t jump around reading the use case. It was about the probability of a girl going out with you given the fact that she smiled at you. As funny as this was, for a few of them to think of something like this, would mean that the social media that we have today would have already gone miles ahead in terms of taking advantage of  us on similar terms. It was scary.

Niranjan came up to conclude the presentations. This is where he asked us to spread the word and help build the community. He left the rest of the afternoon as an open invitation to do anything sitting together or to move out.

They were taking memberships for the community and I “sold my soul”, as Asya put it. We hung out with each other for an hour or more, getting to know each other better.

I met Samarth, a smart lad who was a Hardware hacker by passion working at Infosys. His face was familiar and there was only one question that I could ask him about it. “Were you there at any HasGeek events?”. Yep, he was there for Droidcon 2013.

Then there was Vamsee, who was a kindred soul when it came to people calling him “Vamshee” adding that all-too-horrible “h” right in the middle! We shared our grief with each other over how inconsiderate people were towards our feelings.

Then there was Ashutosh, Jha (because I really can’t remember his other part of the name), Fasil, Prateek, who asked me, “Hey, aren’t you that guy who wrote that Eventifier blog post? That was amazing”. I was so happy! Jon from Minsh was there. It was good to meet him after such a long time. He was the first few geeks whom I interacted with as soon as I had joined HasGeek. Definitely a part of what made me grow.

We shook hands and were about to leave when I met this unassuming young fellow at the stairs.

“Hey, don’t I know you?”

“I am Rishab. Umm.. Do you know me?”

I unleashed my secret weapon once again.

“Were you at any HasGeek event before?”

“Oh… Were you at MetaRefresh 2013?”

“Yeah, I was a part of the organizing committee”

“Okay. Maybe you heard about that guy who gave a talk on CSSDeck?”

“Oooh! It was you! Now I remember… Cool man”

So that was him. He had generated a whole lot of buzz with his flash talk at that conference. He said he was working on his own startup now. I bid him goodbye and was on my way.

Now I have an excuse to learn Math. I hope these folks keep at it. It was amazing.

My beginning and journey so far with Eventifier

The beginning
——————-

“Yawn”.

I was quite irritated being disturbed from my peaceful sleep by my phone ringing. With sleepy eyes, I looked at its screen. It said:

“Jaseem Abid calling…”

“Oh man, not now.”, I thought. Not because of any personal reasons, but just because I was craving for that deep sleep and my mind working was the last thing I wanted at that point. I put it to silent, ignored the call and peacefully went back to sleep.

When I woke up after an hour or so, I found a message that Jaseem had left.

“Hey, there are these guys looking for a Python dev. Wanted to talk to you about it”

(Detour)

This happened sometime in September 2013, while I had already submitted my resignation at HasGeek. I had talked to other folks and was looking around quite desperately to find another job. There were a handful of people whom I talked to before I made the decision to resign. If not for the support offered by people like Arpan & Vamsee, I would have probably gone into a state of depression. They were kind enough to let me learn from them by staying with them in case I wanted to polish up my programming skills. Sajjad was another person who gave me hope by introducing me to Gautam and considering my engagement with Akshara Foundation. That, however, had been on hold since they were trying to figure out a road map for the next year and said they would need at least a month before letting me know.

Even Kiran had introduced me to Sameer from Next Big What. He recommended me to them as an excellent writer. Discussions were going on with them where they wanted me to complete a few tasks before they could take it forward. Since I expressed my interest, as delicately as possible, to write code, they gave me a data set, asked me to Visualize it using JavaScript and write a report on it. JavaScript! Visualizing data sets! I was doomed. For all the Data Visualization hacknights and JSFoo conference I organized and was a part of, I had never written or read a single line of JS.

However, if not then, when I was going to learn programming? I intended to give it my best shot. I had not quit HasGeek then. I was a full time employee. Hence, I had to do this task in the midst of all the emails and organizational activities. I had one week time. At the end of piling up all the tutorials, copy-pasting code, trial and error fixes, I finally managed to do a really, extremely crude bar graph visualization of the data set. No one would be able to understand the joy that I felt at being able to do that. Also, since I had finished this by the evening of the day on which I was supposed to submit it, I had to finish writing the report in an hour, which I did. I think it was a sad piece of work and that they were not quite amused. Suffice to say, there were no further interactions.

You can find the code as well as the report here: https://github.com/harisibrahimkv/d3_viz

The situation was really quite dire. I had no industry skills in terms of programming apart from the few incomplete pet projects I tried to do during my time with HasGeek. Since my job was mostly related to organizing, emails, community management, etc, I never could find an uninterrupted stretch of time to dedicate to learn writing code. After all, I do realize that managing humans is far more rewarding and complicated than managing code.

You must be thinking how I found the courage to actually submit my resignation without having another job or the necessary skills to attain one. Well, I guess many people do it and it is not so much of a big deal. Let me tell you though, it was and still is a really big deal for me. Anyway, there was a person behind me finding courage to take the step forward.

(Following is one day before I submitted my resignation)

Sudar Muthu is a loving Husband, a caring Father and a passionate programmer. Even though I had heard his talks before at HasGeek events, we got to know each other better when I approached him for doing a hands-on public workshop on “Processing Data using Pig”. We used to keep in touch after that and we met each other again at PyCon India 2013, which happened at the very end of August. That was my first ever PyCon and I was glad I attended it. I was catching up with friends over breakfast. I could relax and take my time to do it since I was not a volunteer (although I ended up pushing boxes, selling T-shirts and packing participant kits).

In the midst of breakfast, Sudar walked past me. I called out to him.

“Hey Sudar!”

“Hey Haris, how is it going? It has been a while.”

“Not bad. My first PyCon. You have a talk today, don’t you? Looking forward to that. Feels glorious not being responsible for anything that is happening around me for a change”, I added with a chuckle.

We chit chatted for a while. At some point, the conversation shifted in the direction of me explaining that I was in a troublesome situation where I wanted to shift to a programming career and I could not leave my current job unless I found another job, which was quite impossible in the current state of affairs. He had just one question to ask.

“Do you need to have a job?”

That caught me off-guard.

“W-What?”, I asked, stuttering.

“Are you in a situation where you need to have a job? Where people are depending on you or you have big loan to repay or something?”

“Uh, no. Not really….”

“If you really believe that you are not doing the right thing, then this is the time to make the difference. Before financial aspects become a responsibility and burden. Take some time off and make *absolutely* sure that you make the most out of it. Otherwise it will be an even worse situation”

I could only look at him with wide open eyes. I would not say I was in a shock, but it was something quite close. I could feel my brain rewiring, dropping certain assumptions, bringing up new plans, constructing alternate routes, opening up new doors, and a little devil at the corner who would damn my soul if I were to fail myself in taking and executing the right choice. All happened in a split second.

We chatted for a while more regarding this. However, my innards were bursting with a sense of anxiety and excitement.

“This is it. I am going to do it”

On September 2nd, I submitted my resignation.

(Coming back to where we left off)

I called Jaseem then itself. He explained that there is this company called Eventifier being run by three friends.

“They are not hardcore techies, but are really nice guys. I am planning to work with them for a month and see if we can continue the engagement. I’ll whatsapp you Jazeel’s number. He is the CEO of the company.”

This is back when I had whatsapp and the Nexus4, courtsey of HasGeek. He went on for a while longer talking about the company. He ‘whatsapped’ me Jazeel’s number.

Quite frankly, I was not amused. Due to my extreme ego of thinking I was destined to be the greatest person in the world, I thought, “Well, yet another startup somewhere. The Akshara one looks more promising. And oh! These people are building a product having something to do with social networking!”

Whatever is the opposite of fanboy-ism, I used to be that when it came to social networking sites. I never had any proper justification for my thoughts I guess.

I tucked the idea away in a corner of my mind and moved forward. October came and whatever I explained in terms of Akshara and Next Big What happened then. I was at home for a week during October for Eid. One of the days, while I was watching some movie on my laptop at around 8’o’clock in the morning, my phone rang. It was an unknown number. I attended the call.

“Hi, is this Haris?”

“Yeah, this is Haris”

“Oh hey, I am Jazeel. Jaseem must have spoken to you about me. I am calling from Eventifier”

“Ah yes! I remember. I am so sorry. The days have been too busy that I forgot to call you”

“Its alright. He said you were looking to move out and find another job. How are you placed now?”

“Well, I am talking with a few people, but nothing confirmed yet”

“Yeah, the thing is, we are also looking to hire a Python developer. We just moved to Bangalore a couple of month’s back and are planning on expanding”

Jazeel went on to explaining what Eventifier does.

“Also, we got funded by Accel. So, would you like to meet and talk sometime soon?”

“Ehm well, you should know about my Python development experience as well. I don’t have any experience writing production code. I have used it for my projects at college as well as to do some pet projects which you can find on my Github profile. I guess that is about it”

“Oh cool. Let’s talk about it. Are you in Bangalore now?”

“Uh no, I am at home in Kerala. I’ll be back on Wednesday. Maybe we can meet Thursday early morning? Say, around 9?”

“Sounds good. I’ll just confirm with the rest of my team and let you know over email”

“Cool”

“Okay, bye. Oh and how old are you?”

“Uh, 24. Why?”

“Nothing. Just wanted to know. I’ll send you an email”

“Alright. Bye”

“Bye”

On Thursday morning, standing in front of the Accel partners office, I just cut my call telling Jazeel I had arrived. After a few minutes, someone tapped on my shoulders. I turned around and saw this handsome looking young man with a slightly golden colored beard and hair, standing behind me with a smile.

“Haris?”

“Yeah”

“Hey, nice to meet you. I’m Jazeel. Let’s go in.”

We shook hands and he led me in. I had to sign in my name in the visitor’s register, after which we went to one of the meeting rooms. He asked me to wait while he fetched someone else whose name I did not quite catch. At the moment, tension started creeping up my spine. I thought to myself,

“What the hell am I doing here? I haven’t even prepared for an interview! Heck, I should have at least read something up about their company. Oh my God…”

My thoughts were cut short by Jazeel entering the room along with the “someone else”.

J: “Hey Haris, meet Saud. He is the Chief Designer of Eventifier”

I was a bit amused. The CEO was as old as me and now he brings in another 25 year old saying he is the chief designer! “Gosh, this must be like an army of Ershads!”, I thought. Ershad is a friend who dropped out of college during his second year. A genius hardcore programmer and a Free Software enthusiast. He used to be the winner of all tech competitions around Kerala.

S: “Hi. How are you doing?”

Me: “I am fine, thank you. How about you?”

S: “Good, good.”

J: “Yeah so… Nazim will be here in a bit. He is the CTO”

Augh! What am I going to tell him, what am I going to tell him! Technology scared me.

Me: “Ah okay. Well, maybe to begin with you could elaborate a bit on what we discussed that day? I mean, about how you guys founded the company and what it is about?”

Jazeel and Saud together explained their adventure. That story is already told and hence I won’t go over it. Towards the end of it, the door opened again. A simple looking cool person with long hair and an almost-French beard entered.

J: “Meet Nazim”.

Me: “Oh hey, I’m Haris”

N: “Yeah hi, I’m Nazim”.

He had a really soft voice.

Me: “Well, as I was telling Jazeel, you guys should know I don’t have any experience writing production code. Only a few pet projects and a handful of tutorials is what I’ve got. Apart from attending and organizing the best workshops on Python and Git, I’ve never actually quite gotten down to using them.”

There was laughter around the room.

Me: “What do you guys use and what sort of a workflow do you have?”

I could not believe how humble the three of them were. Very down to Earth, soft spoken and very gentle. I have met a lot of people during my HasGeek days and I must say almost every one of them had one point or the other where they would try to sell themselves showcasing their talent or skill and asserting they are good at it. Nothing of the sort came from these three. As far as I am concerned, after having accomplished so much and establishing a company, if you can be so humble, that is quite an asset.

N: “Yeah so… We use Django and Python. And we have made a git repository on Github where we push the code. We pull from there onto the server and deploy it”

Me: “Uh okay. Um, is that it?”

N: “Yeah, that is pretty much it”

Me: “Cool”

J: “We’ll get Ajay, our adviser, to meet you now”

With that, the three of them went out. I sat there for a while. Ajay came in and asked me about my previous job and a few metrics related to it. It was a short conversation. After that he went out. Jazeel and Saud came in.

J: “Yeah, we are happy to have you onboard. Ajay also felt you would be a good fit”

Wow. That was fast. Was it that they did not hear what I said about not having any experience or whether they chose to simply ignore it? Whatever it was, I thought getting to be in the company of these people would be an unmatched asset. I had almost made up my mind.

J: “So what do you feel?”

Me: “From what you have told me, I’m interested in going forward as well. But you should know that I won’t be able to contribute to your code from day one onwards. Maybe you can send me a small task that I could work on in order to get acquainted with the technology?”

J: “Sounds like a good idea. I’ll tell Nazim to get in touch with you regarding that”

We discussed the joining date, which would be on November 11th, a Monday, since I was leaving HasGeek on October 31st and would be at home for a few days after that. We decided on a salary as well, after which we parted.

I was leaving for Goa that day along with Kiran and Zainab to attend NitroDroid. I remember calling my Mom and Dad while I stood waiting to embark on the KSRTC bus to Goa and telling them I had made up my mind to join Eventifier.

On Octoer 31st evening, I was sitting with mixed feelings. I tweeted out this the day before: https://twitter.com/harisibrahimkv/status/395799344231616512. I believe those emotions are better kept inside of me and hence I shall refrain from writing them. Around 5, I packed my bags and got out. My eyes watered slightly.

The Journey so far
————————-

I have never pulled an all-nighter in my life. Until the day came where I had to finish Nazim’s task. I finished them on the 9th of November at 6:00AM, having sat through the entire night. No coffee, no energy drinks. Just working.

On Monday morning, at around 9:00AM, I tweeted this and got out. Full of excitement, I reached there only to find Jaseem there. He waved to me from the great glass building and asked me to come in. I obliged and went in, thus starting my first day with Eventifier!

PS: Meanwhile in the Founders’ home.

“Nazim, Nazim! Wake up! Haris has tweeted! I think he is already there.”, Jazeel was frantically trying to wake Nazim and Saud up, having himself only woken up at about 9:45AM.

“Wha, what?”, Nazim stuttered, waking up lazily and rubbing his eyes. “Oh! We have to go now.”

They had hired their first employee.

***

Bryan Adam’s “Summer of 69” is one of my favorite songs of all time. There is one line in that song which says, “Those were the best days of my life”. That is exactly what I have to say regarding the past 6 months. On different levels, it has worked out really great.

First of all, establishing a routine. I was adamant about establishing a work life balance. Although a few people advised me against doing that during the early days of joining a company, I did not pay heed to it. I should say it has worked out quite well. From day 1, I would wake up at 6, finish off my chores and prayers, bath and leave to office around 7:30. Breakfast would be from the Madhurai Idly Shop near my office. I reach my desk by 8:15 – 8:30. I check my mails and Twitter for half an hour and then jump into work. Usually it is even earlier. Since the office is a shared space, two other companies use the space as well. However, none of the employees come in before 11 or so. Hence, I get a lot of peaceful time to work. I would leave back for home latest by 4:30PM every day. This way, I avoid the rush hour traffic both in the morning and in the evening. Weekends – absolutely no work. Even if I laze out completely, I used to refrain from work. This was not the best of things to do, and I am rectifying it slowly. I was more than glad that the company allowed me to maintain this.

I took up cycling. A gazillion thanks to Sam Kocsis for letting me have his bike, a Bergamont Vitox 6.2, while he was going back to the US. It has been a tremendous experience the last 6 months cycling wherever I go. The concept of having to wait for transport has become so alien! The best part is, the grey areas of traffic where a cyclist can easily find his way through traffic. However, I must say most of the motor vehicle drivers are inconsiderate towards cyclists. They blow their horn and give looks that says, “Why the hell are you even on the road butt head?”. Anyway, I am enjoying the ride.

Cooking was another interesting practice I started. It is amazing how the human mind and body works once you decide on doing something. It adapts pretty well and delivers. Although not a master chef, I can make decent food for myself hence eating home cooked food and bringing the cost down as well.

All this would not have had its fun if my work did not go well along with it. I was amazed at how pleasantly all three welcomed me into their team like a family. At times when I get excited about something that I am working on, I stay back late and feel lazy to cycle back home. During those days, all of us go back together to their home, which is close by to the office and I spend the night there. We kick up a ruckus now and then with the football they have in their home. However, lately, Nazim skilfully bent the ball to go and hit the mirror hanging on the wall just above the basin. Suffice to say, they are ‘mirrorless’ now.

I started learning Django. The craft of software production, at least to get things done, was not so hard as I had thought it to be. I started delivering within two weeks. From then on, things moved forward with quite a pace. Exploring different ways of doing things, looking into cleaning up code, a couple of rewrites, etc.

The most interesting part is working with Nazim. Being the CTO, he is the one who wrote the entire code base single handed. Jazeel was on Marketing and Sales while Saud was on Design and Administration. Hence, for a person with 3 years of hands-on experience with Django, he has always let me do my stuff. Elaborating on that, whenever I am building something, I would discuss now and then about it with him. The funny thing is, he would know that the implementation would have a bug if done that way. However, he would never say that up front. He would let me do it. I would happily do it, test it on local or staging and it would fail. I try to isolate the bug and ask advice on what might have gone wrong. He would sit back on his chair, legs crossed and say,

“I am not sure, maybe something went wrong with <that particular part of the code>?”

Guess what? That would be the exact part of the code which would be causing the bug. As such, my respect for him has continuously grown.

I believe I am off to a good start on my plans to get into teaching. The learning experience has been amazing although I myself think I have not worked hard enough. Well, it has only been 6 months and I believe there is a lot to come.

Saud is the one who comes earliest to office among the three. Around 10:30 to 11:00AM. A pleasant soul to talk with. He always inquires about how life is, about family and in general whip up a sweet conversation. Someone to whom you could open up to completely and he will sit and listen patiently until it is over. Now that Praseetha has joined us, he has the job of being a mentor as well.

Jazeel, being the face of the company, is the cool dude around. Lately he has switched over the US timings since all his calls with clients are during the night. He usually comes to office around 3PM or so and starts his day then. He has his own strong opinions on matters which he is not even in the slightest sense afraid to shout out. Conversations with him leads to insightful discussions. I guess getting through to the customers is the greatest skill that a sales ops should possess.

Oh, and at times, we go around working from different places as well, like the Ants Cafe and Mr. Beans It has been amazing so far and I pray that it continues to be so. Our team goes strong with 6 including me, Jazeel, Nazim, Saud, Nawaz, who is a sales ops and Praseetha, whom I have written about aplenty before.

—————————————-

Comments from Twitter:

https://twitter.com/codepodu/status/462882923377471488

https://twitter.com/V1mal/status/463218501520355328

https://twitter.com/jaseemabid/status/463820977818714112

Jitendra Vyas and The Bangalore Front End Developers

The following blog post was written a while ago. Due to one reason or the other, it never got published. Well, the wait has ended!

It is just like “Wolverine and the X-Men”, but a way more creative bunch.

******
Jitendra Vyas
 is one among those who were enthusiastic about art and design even before the Internet was widespread in India. Passionate about experimenting and learning new ways of web design, he was always on the lookout for further knowledge and experience. As such, it was important to him to find people who knew more than him; to share what he knew, and to learn what he knew not. It was this yearning of his that led him to bring together the Bangalore Front End Developers community.

According to him, in this world where tools and technologies are changing so fast, the ability to understand and start using a tool is equally important as having a thorough understanding of the basic concepts related to web development. “It is one thing to say you know HTML and CSS really well, but it is completely another when you use notepad to type in your code”, says Jitendra. “You have to pick up tools that will make your life easier, tools that increase your productivity. Without them, you will be left behind in no time because these days, speed is as important as quality”.

His career as a web designer primarily started when he joined a software firm in his home town Bikaner, Rajasthan. There he started experimenting with HTML and CSS as a way of bringing his design skills onto the web. He found Dreamweaver to be extremely helpful in this regard. With fiery enthusiasm, he explored and experimented on his own, thereby learning a lot. Even though his company fared well, his thirst for exploring new horizons couldn’t be quenched remaining there. After 3 long years of work, he quit.

His thoughts on design as a profession were quite insightful. According to him, finding a good designer is not that hard if you stop comparing them with each other. The trick is to search for them at the right place and be open to hire them from any part of world. However, it is a bit difficult to always give them the correct combination of interesting work as well as good pay.

He thinks that as far as a company is concerned, just hiring a good designer is not enough. You have to listen to them, give value to their thoughts, give them the freedom to experiment, give them time to read UX blogs, invite them to attend product meetings, send them to design conferences if you can afford to, buy them good books, etc. Designers should not be considered just as a pixel decorator. The more he understands the expectations from a project or product and about who the target audience are, the better he can design. Also, a good design is not a guarantee of good user experience. There are many cases where even fantastic graphic designers tend to lack in UX skills. Due to that reason, everyone should be involved in design decisions. Good User experience is a team effort and everyone is a part of that – Designer, front-end developer, copywriter, back-end developer, product manager, etc.

From his experience in the industry, some (not all!) good designers don’t prefer to work at big companies because they think they would not be able to make good designs with their own vision, as well as because they might have to work with people who have less understanding of design than them. He quoted the following:

“The enemy of good design is rarely bad design; more often, it is politics, and poor understanding of the problem at hand”

Moreover, as a freelancer, you are free to choose your own clients and interesting projects and can earn even more money than a regular job, if you are really good at what you do. However, if you are able to find the right enterprise, this shouldn’t be that much of a problem. There are actually many good designers who work at big organizations as well, and these people make designs too.

FED

Being at Bangalore, he looked forward to meeting people with similar interests and learning new technologies related to front end development together. He used the most popular and easiest method of reaching out to everyone – Facebook.

He put down his initial thought on the UX India group. He received an amazing response as many people out there were excited to find a kindred soul. The replies and comments from them was the motivation that Jitendra needed to take the initiative to form the Bangalore Front End Developers group, comprising of a group of elite developers from Bangalore. The group came to be on 26th August, 2012. Read his first post in the group.

Things kicked off when Kavita Arora of the Bangalore Designers group invited Jitendra for giving a demo on SASS for one of their meetups, which was held at CIS. This was done as a joint workshop along with FED.

The group started growing when Jitendra started adding developers from his network to the group. The growth continued when his friends added their friends and so on.

Still being in the early stages of growth, they have not fixed any strict schedules for meetings as of now. Yet, the group is very much active, brimming with discussions regarding the latest and coolest front end technologies.

Apart from just geeks talking to each other about heavy duty front-end issues, they help each other out whenever one of them gets stuck at some point. They have online meetups every now and then, by which they are slowly moving forward on the beautiful journey that lies ahead.

The group is thriving with 800+ members today and instead of simply increasing the head count, they strive to keep the group alive and productive with the ones who are already there. In Jitendra’s own words, “It is easy to start a group, but to prevent it becoming useless, is hard”.

Jitendra specially thanks Praveen Kumar, Mikul Gohil, Maulik Suchak and Pulak Kanti Battacharya for helping him to keep the group going strong.

Maulik Suchak says

First, FED is not a term for me. Its a platform where Geeks becomes ‘SuperGeeks’. As we already know, there are lots of things that keep happening day by day in the Front-End world. This is the group where you can share ideas, meet front-end geeks and share tricks!

Talking about the future of the group, I must say it looks very bright. If we do something with good cause, people will surely admire it. Moreover, all of us are putting in our best to keep it alive.

Personally, I like the group because the people there are very enthusiastic and active. We even have plans to take this discussion out from Facebook to our own website if we can achieve it. We are thinking of organizing outings as well.

Mikul says

FED is great! I have never seen such an active group. The good thing is that people are friendly. We joke, we fight and we help each other out. It is just like family to me.

FED has many talented people in the group. I would love to work with them if I ever get a chance. It has helped me in many ways as a developer as well. I had an illusion of knowing a lot about front end development, but after joining this group, I realized that there are still lots of things out there that I need to learn and explore, things that I did not know of in the past.

Bangalore is the place where people come to develop and educate themselves, to make one’s self the best there is. This group has many such motivated people and to have people like that around, makes a lot of difference in your work as well. From getting help to fix issues when you are stuck at some point, to getting to know the latest trends in the market.

If you want to learn something new, then this group has a lot to offer you.

Praveen says

Jitendra started this group after we were discussing about SaaS in User Experience India fb group. We decided to organise a meetup where we got to meet many other front end developers and got a chance to discuss about the workflow each one uses. We also pledged to never hoard the knowledge we learn/acquire and always share it in the group. Then we had a Google Hangout on various CSS frameworks. Non-bangalore folks joined in as well.

I was under the impression that all good designers and front end developers had moved to the valley and nobody stayed back in India. However, the group proved me wrong. I think it encouraged a few of them to come to Bangalore (to attend events like Meta Refresh and then meet other members)

So far, I’ve learned a lot from the discussions we’ve had in the group and I see regular meetups/learning sessions happening in the near future. I hope this encourages developers from other parts of India to start their local user groups as well.

It would seems that Christian Heilmann is an active member of the group. Check out what he had to say once: https://twitter.com/codepo8/status/405747481201229826

In a interesting turn of events, Praveen accidentally made the group a secret one, which unfortunately, was an action that Facebook doesn’t let you revert. So if you want to join in, you should be friends with someone who is already in the group and they have to send you an invite. You can see the current members here: http://labs.apnerve.com/bangalore-frontend/

Well, that’s it for now folks! Here is to the future!

Being a part of the Mozilla community.

It would be appropriate to start by saying that this is my baby step, the first step in trying to contribute back to the Mozilla community for all the effort that they have put in in order to connect people around the world and make amazing products. To be quite frank, I used to have an impression (as is my impression about all things amazing) that all this talk about “community” and “contribution” were only meant for the elite and masters of technology out there, two of whom I know being Sajjad and Nigel, two hardcore techies.

Now I know am wrong.

This realization came about due to two reasons, which I will come to later.

I started using Firefox almost 7 years back, when I first got my computer, about which I have written here. Chrome was not there then. As mentioned in that post, I was quite new to computers and my understanding of browsers was that they were what people referred to as the “Internet”. So I went on using “Internet”, unaware of the fact that I was using Firefox for about a year. Thinking about it now, I am not quite sure when I started understanding about browsers for what they were, but since then, till the December of 2012, I continued using the same.

I was employed by this time and the pressure of having to learn and understand technology was on me. In my journey of understanding more about computers, I used to do the online courses at Udacity and Coursera now and then. However, one day during the course, the video classes started to crash with a message, “An error occurred”. A reload used to solve that, but this kept on happening until one day, I just could not watch any of the videos.

I got irritated. Showed it to my colleague who tried opening up the same video link in his Chrome browser. It worked. I switched.

For the past 10 months I’ve been using Chromium, until recently, after I shifted my career to becoming an Engineer, when I found out my RAM was being eaten up by Chromium. I tweeted out saying this and without further delay switched to using Firefox. I would have been happy using it and simply going forward, if not for Firefox’s response. It was not too much of a big deal, but I was touched. At that instant, I felt I was a part of something bigger.

This was one of the reasons why I had the realization that I mentioned earlier. I came back home and started looking for opportunities so as to how I could get involved even further. I landed up on their contributions page. I filled up my email id, chose my area of interest as “Documentation and writing” since I was more confident in my writing skills than my coding skills at the moment, and submitted the form.

This is when the second reason for the realization hit me. My friend Haseeb. He was passionate about the Urdu language as well as about community development. Both these combined led him to take part actively in translating Mozilla to Urdu. His contributions were not at all gone unnoticed when he received an invitation to be a part of the Mozilla Summit in the U.S. a couple of months back. So have an open mind to contribute, with whatever you know and whatever you are passionate about. Hence, here I am, having reached the point where I had submitted my volunteer form.

All this was done in that adrenaline rush, which I knew had happened to me more than once before. However, nothing of the sort would continue as all would end up in a couple of automated emails that I would receive asking me to act. The same happened here as well. Though things would have continued like that, even before I had the adrenaline rush die down, I received one more email. This time from a certain human being who goes by the name of Janet Swisher.

Even though she told me that technical documentation was where they were best setup to bring in new writing contributions, she did not discourage me on what I had pointed out saying I was better off as a story teller or a biographer than a technical writer when it came to writing. With the promise of passing on my remarks to their creative team and reading my blog posts to provide her feedback, she ended the mail.

That part where it conveyed it was not just about them and what they wanted, but also it being a part of what I was and what I could do, was quite heart warming. I replied and we exchanged a couple of emails where she pointed me to a couple of links as well as read a few blog posts that I had already written, complementing me on them. It was her suggestion to take the first step by writing a personal blog on what Mozilla means to me.

At this point, more than just thinking in terms of Firefox, I was inclined to think of a bunch of nice people trying to strengthen human relationships across the globe around technology. Hence, I was inspired to write about how touched I was with their effort to actually take the time to reach out to a complete stranger and offering to help him out. And here I have written about it. May this be the first step in a journey of  a thousand miles.

Learned Web2.0 the hard way.

So, Kiran decided that he wanted to make “funnel” (http://funnel.hasgeek.com/) as a separate application so that people could use it for their own events and stuff. After all of us at HasGeek had a face to face discussion regarding the matter, we reached the point where we had to think of a new domain name for the app. The discussion was left off at there, only to be reinitialized again on the IRC last Friday night.

People jumped in and started suggesting names – funnelit, thefunnel, heyhofunnel and funnelwhatnot. The list went on and on and on. It is hard to contain one’s temptation in such a situation and yours truly had his own share of contributions to make. Well, until what happened next.

Yours truly is “kaakku” on IRC and he came up with a brilliant name. See what followed:

* chandan_kumar (~chandan@112.79.36.144) has joined #hasgeek
<kaakku> Funneller.com?
<jace> fnlr?
<anandology> funnelr.com is web2.0
<jace> funnelr?
* tazz (~gaurav@115.114.59.182) has joined #hasgeek
<anandology> 🙂
<jace> yeah, we’re not 2.0

There you go! Kaakku was sitting there in front of his computer thinking what the heck was going on with all the sudden web2.0 references and the misspelled rip off of his brilliant suggestion. He did feel something fishy going on, which took his thoughts to the man, the machine, street hawk. Err.. I don’t where that came in from all of a sudden, but what I meant is that I went to Mr. Jonnalagadda, and expressed my state of ignorance in front of him, only to be faced with a roar of laughter from him as well as the King, Krace!

Ha! Laugh or no laughs, I was not going to go until I got my answer. I was there on a mission, a mission from God. Or, Whatever..

So Kiran decided it was worthwhile to take a few minutes off his coding spree and explain to a certain geek herder what Web2.0 was all about.

Well, it seems Tim O’Reilly coined this term, Web2.0, meaning that web had evolved into its next phase from what it was with just the static pages hosted on a lot of computers. (Man, I just have to say this. Oh really!) Anyway, this thing caught on and people started coming up with all-things-2.0.

Kaakku found the story really amusing and funny. However, he thought, “Yes, that is a really amusing story, but what the heck does that have to do with me suggesting ‘funneler’?” He thought that through his mouth, which carried it to Kiran.

Kiran continued with the story. Somewhere around 2005 or so, a certain photo sharing site was born, or rather, was built by a certain excited group of people who always would shout out with joy. They came up with the idea of the site and a perfect name for it too. However, unlike human names, you were not allowed to have more than one website with the same name. These guys thought hard and long and finally came up with a solution, a solution that made Mr. Kaakku embarrassed on a certain Friday night on a certain IRC channel.

The guys omitted the ‘e’ from ‘flicker’!

Just as the Web2.0 revolution, the idea of ‘omission’ caught on which led to a wildfire of startups and projects all having misspelled names, omitted letters and what not.

“Ah! Here we are!”, thought Kaakku, feeling enlightened and less stupid, having learned Web2.0 and spelling mistakes the hard way.

But come on guys! I suggested “funneler”! Who the heck took out the el’s and eeeeeee’s!

Lesson learned: When someone mentions Web2.0, they are making fun of you. Lol!

 

Debian – Choosing between stable, unstable and testing.

After installing Debian, one of the problems that I faced was which version to use. Version as in stable, unstable or testing. Since I personally knew a Debian developer, Praveen A, I turned to him for guidance. The reason why I got into this state was because I found out that Debian squeeze stable had python 2.6 in its repositories. However, I wanted python 2.7 for my work.

I asked him what these versions mean and how I could switch between them. He gave me the following explanation:

“Sid is where all development happens, all new packages come there. Then it moves to testing when certain requirements are satisfied. At a certain point focus is shifted to fix all bugs in testing and this is called freeze.

So main distributions are stable, testing and unstable. There are nicknames for each. Unstable is always called sid – that kid in toy story who always break things. Current stable is squeeze, testing is wheezy and next testing is jessie. When wheezy becomes stable, squeeze becomes old stable and jessie becomes testing. A copy of testing is made and it is called stable, testing is renamed and freeze is lifted for next release cycle.

So change to testing means change stable/squeeze with testing/wheezy in /etc/sources.list and do apt-get/aptitude update and dist-upgrade. If you choose wheezy, you’ll get stable when it is stable, if you choose testing, you’ll always be on testing. Same for sid as well.”

Since testing sounded stabler than unstable, I decided to go with testing. So here is how my /etc/apt/sources.list looks like:


#

# deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official i386 CD Binary-1 20120512-13:45]/ squeeze main

# Line commented out by installer because it failed to verify:
deb http://security.debian.org/ testing/updates main
# Line commented out by installer because it failed to verify:
deb-src http://security.debian.org/ testing/updates main

deb http://ftp.us.debian.org/debian testing main
deb-src http://ftp.us.debian.org/debian testing main

deb http://ftp.us.debian.org/debian testing-updates main
deb-src http://ftp.us.debian.org/debian testing-updates main

I’m still not sure whether I should add any other repositories, but as of now, this has worked well for me. Once you make the changes to the sources.list file, you have to run:

$ sudo apt-get update && sudo apt-get dist-upgrade

Prepare yourself for long hours of download. It took me almost 8 hours to have my distro upgraded. Have fun!

Is execution important than vision?

I had a pretty tiring day.

Being at the town, I started walking from a certain point, under the blazing hot noon sun, visiting each and every slipper shop on the way, trying to get hold of a certain brand which I had been using till now. I walked and I walked and to my surprise and dismay, reached back at exactly the point that I had started, without any luck whatsoever. Tired and wounded, not to mention disappointed, I went and had a drink. I sat and rested my overworked feet for a while. I got up again and started walking towards the bus stand in order to catch a home bound bus.

Just when I had taken 4 or 5 steps, there was this shop to my left. Out of inertia of having asked at each and every shop that had slippers in them, I simply stood outside and with an air of sarcasm , asked the owner whether he had the brand that I was looking for. I got what I was looking for from there.

The lesson that I learned from this happening is that always start the things that you want to do just before you  are  actually going to start doing it. In the philosophical sense, this thought has many implications. However, having experienced this first hand in real life, I’m bound to start applying this thought to the various aspects of life.

Anyway, that was just the icing of the cake and the above three paragraphs were not in my mind at all until I thought about how to begin this post that I wanted to write.

Reaching back home, I turned on my laptop and checked my mails. I happened to stumble upon this thread. I simply went through the replies and happened to click this link, with no particular reason. That was Diaspora page of Jishnu. Since I was tired from the day’s happenings and wanted to rest, I was simply browsing and as such, scrolled down along his posts. There I stumbled upon the following video, which is the primary reason for this blog post.

Usually I had this idea of talks by technical people getting boring and monotonous. This was exactly the opposite. Moreover, this was not a talk but rather a sort of Q&A session. I was not planning to sit through it completely, but the more I listened, the more I got interested to listen to the rest and hence, I finished it in one shot.

Mind you, I’m not saying that Linus is the epitome of perfection or anything of the sort. He maybe, he maybe not. I just wanted to think and improvise on some of the things that he mentioned during that session and that is exactly what I am going to do.

The fist and foremost being the title of the blog post. Is execution more important than vision? Vision as in, a dream of how something should be.

Well, according to Linus, he personally was in favor of getting things done rather than thinking and dreaming constantly of a bright future and end up doing bits and pieces. He takes the analogy of a man walking, looking at the stars. He has vision. However, unfortunately, he fails to see the potholes that are in the way that he walks because he is not looking down. Hence, he stumbles upon them and falls down. Linus does not completely criticize visionaries too as it is possible that the path that guy is walking upon might not have potholes and as such, he will achieve his vision.

This is a very interesting point because everyone can have ideas. People can have tons of awesome ideas. They can dream of things that should happen and keep on dreaming. As much as I admit that you should dream until your dreams come true, sometimes (most of the times), people simply end up only dreaming. That does not help.

What makes you different, or better, worthy of being alive, is when you get things done. Linus even quoted Edison where he said, “Success is 99% perspiration and 1% inspiration”. That is more or less true. Passion, inspiration, dreams, ambitions, etc all are just thoughts in the wind until you work hard for it, and achieve it.

With this thought in mind, I thought about how I have been over the past year and it was quite interesting to see the difference.

  • Started my blog – “Yet another guy who has access to Internet registers yet another blog on wordpress”
  • Wrote posts – “Yet another blogger who has to put in his blog, everything that happens to him”
  • Wrote posts consistently – “Hmm… Yet another consistent blogger”
  • Wrote stories – “Most definitely not a personal diary”
  • Technical posts – “Not just philosophy and stories. Useful posts”
  • Crossed 100 posts in a year – “Wow, I did not expect this guy to keep at this for so long. Still…”
  • Published a book – “Awesome. This guy is actually getting things done”

I sure as hell would like to meet that omnipresent dude who commented on my stages of blogging. However, the point that I was trying to make was that even though I hadn’t realized it till now, I was following my passion and getting things done.  I needed this push as I have in my drafts, 4 incomplete posts that I started writing and half way through, started thinking about how it should be and the impact that it should bring about to a reader. That thought is good, but it should not be as strong so as to pose a hindrance to what you are doing. Otherwise it ends up as the case mentioned earlier. I have these amazing vision and thoughts but I’m not actually doing anything for it. Now that I have that idea in my head, I’ll be finishing those posts soon.

Hence, as much as it is important to have a vision, it is as important to get things done as well.

Another interesting thing that he mentioned is being open about your feelings regarding something. He quoted his own example for this statement which was that one guy who worked on a certain kernel feature, got suicidal when Linus told him that the kernel did not want that feature. This would not have happened if people clearly knew about how Linus wanted the project to be.

I was not a big fan of extremism. However, taking into consideration the above scenario, there are times where being an extremist pays off. I mean, him being like that in regard to his project does not mean that he is like that with his family. The point being that there are occasions where you should stand like the Pole star and there are occasion where you should be diplomatic. I mean, Linus could have called that guy for a cup of coffee and started the, “Listen, I knew you’ve worked really hard” thing, but seriously, that attitude would have left the entire kernel project in once heck of a mess.

To the question of whether all the students should be made aware of the open source movement, his answer was thought provoking. The point is that everyone need not be made to learn programming or anything of th sort. However, the ones who have the spark in them should be given the chance and the proper encouragement for learning and improvising on it. He mentioned the cheap Raspberry pi board available where out of 100 boards, 99 of them might be lying in the dust. Still, the important thing is that one board gave an interested person the opportunity to learn and that is what matters.

This is true in real life also. When you try to do something for the people, instead of worrying and spending time on getting everyone involved and interested, you should be more set and concentrate on helping out those who are genuinely interested. We tend to forget that in our path of achieving a “noble cause”. Once you get through to those who are interested and when they start to do wonders, the influence will become bigger and will spread.

Well, that’s about it I guess. That session was something that I desperately needed and I’m glad I did not stumble upon it any later.

Thanks Linus.

SMC annual meet, in the memory of Jinesh – MES kutipuram.

Each time being at that college among those students, you really feel rejuvenated.

On September 29th, MatriCS, the association (an awesome one at that!) under the Computer Science department at MES College of Engineering had it’s inauguration as well as was the host for the SMC annual meet. These two days are those that I don’t want to forget in a hurry. Hence, I thought I’d just write down about how it went so that next year when we meet, we might be able to have a nice laugh at what all happened this year.

I was not actually expecting a formal event and as such when I suddenly came to realize that the event was at the auditorium, it felt a bit weird. However, the moment I met Riyas, the third year CS student there who was extremely enthusiastic about getting things done, I knew things were going to get better. He had this friendly way of welcoming people and getting them to fit in without any trouble. I hope he keeps that spirit up because the society needs people like him. There was Hiran ettan (met him for the first time) and some other lady and Riyas took all the three of us into the hall.

I could sense the tension of the organizers to get things started in time, realizing at the last moment that certain people who were supposed to talk at the event, were not going to show up (Boy, I really hate when people do that). I had myself been in similar situations before and it was heart warming to see everything, more or less, going smooth. Shamsir, the current chairman of the association was getting everything together with an air of command. A jovial, innocent fellow who is as much enthusiastic as Riyas in getting things done.

My wishes and prayers to both of them.

I’m not going to go about describing each and everything that happened. You can find the itinerary of the event over here.

It was an awesome auditorium and there was a small session regarding OCRs, which were helpful for the blind people to use computers. I marveled at how the organizers thought of incorporating such a talk into the event. To know that the time had come where Computer Engineers had a real part to play in the society, gave us a feeling of responsibility.

29th of September was a special day because it had been exactly a year since Jinesh had passed away. The SMC members did an excellent job at collecting all the articles and blog posts written by Jinesh and compiling them into one single book under the name of “Logbook of an observer”. A hard copy of the book was handed over to his Father at the ceremony and people who knew him personally as well as through the net talked about him. Another person named “Shyam” was also mentioned who had this sincere love for our mother tongue. Knowing that people like them existed and how much they had influenced the world around them in the short time they were here, was really inspiring.

One of the other mention worthy (really mention worthy) things about the event was to get to see people in real life! And that is awesome. I mean, a few days ago, a guy called Ani Peter asked for help regarding translation on the SMC mailing list. I decided to help him out and with my inexperienced typing, helped out a tiny bit.

I was looking forward to meeting him at the event. With this thought in mind, I was sitting there in the second row of the auditorium pretty much alone. The speeches were going on and when it got monotonous, I happened to get a glimpse at the laptop of the lady who was sitting beside me. She was the one who was with Hiran ettan earlier. Her laptop booted and displayed the login screen. Just above the login screen was written “Ani Peter”.

Augh!

The point being, it is nice (and necessary!)  to meet people in real life. Hrishikesh (a really jovial and friendly guy), the artistic Ark Arjun, Hiran ettan, Manoj, Rajeesh ettan (An ultra cool guy with an awesome attitude), the sisterly Ani Peter, Adhil (whom I had briefly met for Chakkakuutaan), Manu (the renowned MES geek) were the ones among the newly-seen-in-real-life people.

It was heart warming to see Praveen ettan, Ershad, Nakul, Musfir, Sadiq, Anish, Kiran (well, I’ve been seeing this guy everyday for a month now, but still I was glad to see him at MES). Also the guys from MES itself. I’ not that good with names, so forgive me if I have accidentally left someone out. Yahul, Rahul, Navin, Sohail and the other young hacksters there who all added to the bright and wonderful atmosphere there.

The afternoon sessions of the first day were informal ones and I felt right at home. Anish talked about the Free Software philosophy and Hrishi came forward with introducing Diaspora and the free movie initiatives. Well, one of the troubles that the speakers always face is the problem of making the session interactive. When they ask something and the audience sit as if they had no clue what was going on, it usually becomes a bit depressing. However, little did they realize Musfir was one among the crowd!

He just would not sit taking everything that the speakers said for granted. He shot out with his questions and the whole session was completely interactive. It was nice to discuss and talk about philosophies. The Open movie initiative was really interesting and we all sat and saw the movie tears of steel.

However, there was something that bothered me with the whole ordeal. I was quite worried about the message that was reaching the students. I mean, the people who were giving the talks were really good programmers and developers. They gave talks on the matters that affected what they were working on. I felt that the technical part of the message was not getting through to the students. The feeling that the free software community was growing as a political party based on ideals and philosophies without the hacker spirit actually being there was somehow becoming more and more evident. I’m sure there might be an alternative explanation to this, but I’ve been seeing this trend (with me too!) growing up.

As if to counter my thought, the second day witnessed two wonderful workshops. One was on Shell scripting by Rajeesh ettan, which was extremely informative as he explained in detail many aspects of how the shell worked and its configurations along with the basic, practical funda of how to use the shell to script something. It has ticked me off into learning it and I’m sure be giving it a shot now.

This was followed by Ershad’s workshop on git, which was superb as usual. The sessions were wound up at about 1.30 with trophies being awarded to the SMC people who helped out with the events and sessions. We all had a few informal chats and I bid my farewell to everyone then.

I missed the hacknight on the first day which, as I was able to gather from the people who attended it, was extremely fun. I also missed the afternoon session on the second day which was on Remote Desktop and Networks. Hoping to read the details of both from some place else.

All through the event, I really missed Sajith sir. I’m sure all the students there missed him too. Here is praying and hoping that he will have his troubles settled and his wishes granted.

A heart warming experience. Something that students of MES can be proud of. I hope that they keep the spirit and enthusiasm flowing in the future as well.

Compiling the Linux kernel for BeagleBoard-XM

First of all, this post is not about building an Angstrom distribution (Linux OS that is known to run well on embedded devices) from scratch. This about compiling a Linux kernel source which you can boot from using your Angstrom distro. I’m assuming that you already have a working Angstrom MMC with you. I used the one that came along with the BeagleBoard XM, pre-installed with Angstrom.

Before getting started, a few words regarding how the MicroSD card is structured. It has two partitions on it. A FAT partition and an ext partition. The FAT partition contains 4 files namely MLO, u-boot.bin, uEnv.txt and UIMAGE. The ext partition contains the root directory of the distribution. That means it contains ‘/‘.

The BeagleBoard boots from the Linux kernel within the /boot/ directory of the ext partition. That directory will contain a symbolic link called uImage which we will point to the kernel image we want the BB-XM to boot to.

It might be well to point out here that I tried 5 versions of the kernel from kernel.org and all of them failed to work and I was unable to debug the reason for that. However, it seems that there was a certain group of people working on patching up the kernel to make it compatible exactly for the BB-XM. We will be using their source in this post.

So let us get the tools ready. First you need to get the toolchain for doing the cross compilation. You can get it from here. Download the ones for ARM and GNU/Linux. You’ll need to register yourself to download it. Once downloaded, extract it to some convenient location and set your PATH environmental variable to point to there. Refer to the following figure:

Now we need to get the kernel source. As I said earlier, we are not going to use the source from kernel.org but instead, we are going to use the source from the following repository.

https://github.com/beagleboard/kernel

Clone that repository. At the time I was trying to compile the source, the stable branch was the 3.0 one. So I’ll be using the same for demonstrating in this post. Clone that repository and checkout the 3.0 branch. To checkout, run:

git checkout origin/beagleboard-3.0 -b beagleboard-3.0

Once you have checked out that branch, run the patch.sh file there.

./patch.sh

It will fetch a few patches and apply them in the source. Once you are through with that, you need to setup the configuration of the kernel. Normally, we do this by using the default omap2plus_defconfig configurationgiven in the kernel source but, try as I might, it did not work for me. Hence we will use the config file created by running the patch.sh file as our kernel configuration. But first, after running the patch file, your directory will look like below:

You can see the configurations that the kernel provides. You can see omap2plus_defconfig there. Now I will explain the 4 steps of kernel compilation.

Step 1

We need to give the kernel configuration. As stated before, we are going to use the configuration created by the patch.sh file. In order to do this, copy the configuration from the /patches/ directory to the .config file under the kernel source. Assuming you are in the kernel source directory (as given in the above figure) you would do:

cp ../patches/beagleboard/defconfig .config

However, keep in mind that this is not the standard way of doing things. Usually, we do the following:

make -j2 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- <defconfig>

Where <defconfig> should be replaced by whichever configuration you want from the /arch/arm/configs/ directory.

Step 2

We can access the configuration file of the kernel as a menu and manipulate several options such as which all modules we want enabled as well as whether certain modules should be compiled as ‘built-in’ to the kernel or compiled as a separate module. In order to get the menu, we do:

make -j2 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig

After making the necessary changes, save and quit.

Step 3

Now we actually compile and make the Linux kernel image.

make -j2 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

This will take a while. Once it is finished, you can get the kernel image called uImage under the /arch/arm/boot/ directory. Copy this image into the /boot/ directory of the ext partition of the MicroSD card. After copying, get the symbolic there called uImage to point to our new image. You can do this by:

sudo ln -sf <destination> <source>

Once that is done, we proceed to the next step.

Step 4

Here we compile the corresponding modules of the kernel separately. In oder to do this, you run:

make -j2 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules

This will also take a while depending on how many modules you selected to be compiled in the menuconfig interface. Once this is finished, you have to install these modules. For that, you do:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH=<path to where you mounted the mmc root diectory> modules_install

This will install the compiled modules under /lib in the path given. The path that I would give in my system would be /media/Narcissus-rootfs. Refer to the following figure. You can see the different directories corresponding to the different versions of the kernel I tried compiling.

Now everything is set. There are a few more points to note however. You can find the following line in the uEnv.txt file within the FAT partition.

console=”tty0 console=ttyS2,115200n8″

Change it into

console=”tty0 console=ttyO2,115200n8″

One more thing. Within the /etc/inittab file of  your MicroSD card’s root directory, you can find the following line:

S:2345:respawn:/sbin/getty 115200 ttyS2

Chang it into:

S:2345:respawn:/sbin/getty 115200 ttyO2

Basically, what you did in the above two steps is to replace the places where ttyS2 is present with ttyO2. I think this is because kernel versions from 2.6 onwards use ttyO2 as their console. If you do not do the above change, you might get the following error in the middle of booting the kernel:

INIT: Id “S” respawnin too fast: disabled for 5 minutes

——————————————

You are good to go. You can now boot from the new kernel.

Happy hacking!

Getting started with the Play! Framework.

Yesterday I attended Pramode sir’s workshop on ‘Introduction to developing web applications in GNU/Linux with Play framework’.

As usual, his energetic way of presenting the material got us all interested in a few seconds. Although we could not cover all the aspects in detail due to the time constraint, this post is going to be about what all he was able to teach us in the time we had together.

INTRODUCTION TO THE SESSION

So, Play! is a framework for writing web applications. What are web applications? Just like we have applications that run on our computer, they are applications that run on the web. And what are frameworks? Frameworks are those software tools that lets you use certain pre-defined functions, that implement the basic network protocols for you. So basically, you just need to concentrate purely on your application and not bother about the lower layer implementations. Hence, it is an abstraction. You can find many of them like Flask, Django, Ruby on Rails, etc.

A web applications has two parts. One, the Client side and the other, the Sever side. The Client side is where you actually see the web application in action and hence it contains our HTML, JavaScript and CSS. The Server side will run a Web Server program that gives out the matter that is to be displayed by the client. So that’s that.

Once that was explained, he got into explaining the difference between statically typed v/s dynamically typed languages. Pointing out Python as an example of a dynamically typed language, he explained the concept by the following piece of code


a = input()
if a == 1:
    a = 'Hello'
else:
    a = 1.2
print a

In the above code, we cannot determine of what data type the variable ‘a’ is at the time of printing it. Because it depends upon whether the ‘if’ or the ‘else’ executes. These kind of languages are called dynamically typed languages.

Whereas in statically typed ones, you can know the data type of variable at any given place. You can understand it better with an example C code:


int main() {
    int c;
    .....
}

When you declare a variable to be of a certain data type, that variable retains that type till the end of its scope. In this case, the opening and closing curly braces. These are called statically typed languages.

Both having their own advantages and disadvantages, there are places where both have their own uses. However, the errors in the code of a dynamically typed language will be visible only when the program is in execution and it reaches that part of the code where the error is present. Even though, static typing might not be a one that gives “error free” code, it helps you catch certain type of errors that a dynamically typed language might not be able to catch.

Then we came to the popularity of the JVM based languages these days. The popularity of such languages was based on the fact that a vast eco-system of libraries will be available at your command at the beginning itself. This is available because Java has been around for a long time and hence a lot of libraries has been developed for it. The JVM based new languages can use these and thus, move forward in full swing from the beginning itself! Clojure and Scala are the two ones that are on a roll at present.

However, both of them uses the Functional Programming Paradigm. He told us that the world was slowly realizing that OOP was not the solution to all the problems and that there were many instances where a functional approach was much better. Those days when people used to get impressed by seeing ‘Python’, ‘Django’, ‘RoR’ on your resume are behind. Now ‘Clojure’, ‘Scala’ and ‘Play!’ are those that make an impression.

During earlier days when PHP ruled the world of web application development, most applications’ code base were designed horribly. This was because all the code for a certain application was fitted into one file. As in, you would write a bit of HTML code, then insert PHP into the middle of that and then a few JavaScript here and there and finally end up making a mess out of your code, even if not your application.

In order to overcome this clumsiness, a certain design philosophy referred to as MVC (Model-View-Controller) was established and people began to follow that in order to structure their code bases better. A quick explanation of what MVC is.

Model stands for Database part of the web applications. As in, how things are stored into and retrieved from it.
View, as you might have guessed, consists of the HTML, JS and CSS. As in, what we see.
Controller defines the business logic. As in, the code that we have written using a certain language.

Now coming to play!, we were going to deal with Play!2. It seems a major difference was made in the succession from Play!1 to Play!2. The difference is that in Play!1, the core of the framework was written in Java. However, in Play!2, the entire thing has been re-written in Scala. Talking further about play!, a thing noteworthy about it is that the entire framework is statically typed! As in, at the time of compilation itself, before actually deploying the application, you will be shown the syntactical errors that you have made. According to him, this is a major (and super awesome) feature of play!.

You do not need to run your application in order to see where you have made a syntax/typing mistake. The compiling stage takes advantage of the statically typed nature of the framework, and shows you exactly the line where the error has occurred. The advantage of this is that, even though the initial learning curve might be bit high, once you get everything correct and deploy the app, the chances of it crashing are really low compared to other dynamically typed frameworks.

Another innovative feature that Play! introduced was that of automatic reloading. As in, usually when we make a change to the code in statically typed languages, we would have to compile it once more in order to run it. Play! got over that hindrance by introducing a feature that automatically detects a change in the code of the application and reloads (recompiles and reruns) it.

Now for the hands on session.

INTRODUCING PLAY!

1. Setting up play!

Always before starting a work, make sure you have the right tools for it. The first thing here would be java. Please install openjdk-7-jdk, or any versions of openjdk. They tell us not to use gcj (which is the default Java compiler on most Linux systems) as it seems to break things while execution. So to install, do:

sudo apt-get install openjdk-7-jdk

The next would be play! itself. You can download it from here. Once you have downloaded the zip file, unzip it and extract it to some location. Include that path in your PATH variable. That is, do:

$EXPORT PATH=$PATH:/path_to_play/play2.0.2/

In order to check if you are good to go, just do:

$play

and hit enter. You should see something like below:

Wonderful. Now let us proceed.

In order to teach us how to get started with it, he had already made a series of applications that took us through small step by step modifications which were really helpful in learning the concept. You can find the code base at my github repository at: https://github.com/harisibrahimkv/Play-tutorial

You can either download it as a zip from there or you can clone it. Assuming you have git and git-core installed, you can do:

$git clone git://github.com/harisibrahimkv/Play-tutorial.git

which will clone the repository for you.

2. Creating your first app

In order to create your first app, do:

$play new app (you can give any name here and not necessarily ‘app’)

You will be asked your app name and also the template you wish to choose. See the figure below:


Now, play! will have created a pretty good working application skeleton for you in a directory called app. If you ‘cd’ into it, you will be able to see 4 folders and a README file. This is the basic structure of any play! application. In order to create your application, you just need to fill in whatever you want. Let us try running the app huh?

3. Running your first app

Alright. Just do:

$play

and hit enter. Now you will see your memory and processor being eaten up! It will take a while before the application starts working. However, this seems to be the case in development mode only. A deployed play! 2.0 app is not that memory intensive.

Once it is done, you will be given a prompt. Type “run” there and hit enter. Once it says “Server started”, you are good to go. Access your browser and head over to:

http://localhost:9000/

It will take a while for the page to load as the code only starts to compile once you send the server a request. This is the case only in development mode. While in production mode, compilation will be done beforehand itself. See the web page loading? Wonderful. Do not try out anything written in that page for now. Let us proceed with Pramode sir’s example. Your terminal will be looking something like this now:

In order to stop the program, hit Ctrl+c.

Just a quick explanation of the different folders:

app: This contains your application. If you cd into it, you can see the sub folders ‘controllers’ and ‘views’. Inside ‘controllers’ you will a ‘Application.java’ file, which is the code that you write. It will be already filled with a basic application. The ‘views’ folder is where your templates go. What are templates? Templates are files that contains HTML code. But it is not purely HTML. You can write Scala code in a template thereby allowing you to use features like “for loops” and “variable declarations” inside it. Usually, the “models” sub folder should also be present here. But there is no need for a database for a minimal application. Refer to the figure below:

conf: The conf directory contains two files. A ‘application.conf’ file and a ‘routes’ file. We did not cover what the former one was for. But the latter one is the important one for now. The ‘routes file specifies which function in your /app/controllers/Application.java file should be triggered corresponding to a given URL. You’ll understand this better once we go the tutorial.

project: It contains the play build tool called sbt (Simple Build Tool). Much like the Makefiles we use. We did not concern ourselves with that.

public: This contains the images used in the web app, the javascript codes and the css scripts.

Now, get into the ‘part1’ folder which you cloned from my github repository earlier. We will walk you through all the steps one by one.

4. Through the Tutorial

This tutorial is aimed at providing a basic idea about how the play! framework works. It does not include explanation of the syntaxes of neither Java nor Scala. Hence, if you know either of those two, you’ll be able to improvise quickly. Otherwise, you will have to learn them. During the workshop, we were only able to go through ‘part1’ of the entire tutorial. ‘part2’ was covered only vaguely.

How we move about in the tutorial is by visiting the folders of each app, checking the README there, then the /conf/routes file, the /app/controllers/Application.java file and to the end, the /app/views/index.scala.html file.

We first go into the folder ‘part1’ and explore the different ‘app*’ folders there.

app1

This is the same one that we made ourselves earlier by creating our first app. Hence we won’t look into it further.

app2

Remember the flow, the README file, then the /conf/routes file and so on. This app is to show the most fundamental idea of how a play! app works. We can see in the ‘routes’ file that there is a “GET / controllers.Application.index()” line. What does it mean?

That line defines the rule that, if ever a “GET HTTP” request comes that corresponds to ‘/’ (In a URL, simply a / denotes the domain name itself. As in ‘google.com/’, ‘facebook.com/’, etc. Note the trailing slash at the end of both the domain names), then the function “controllers.Application.index()” should be executed. In case you haven’t already figured out, that functions resides in the file “/app/controllers/Application.java

You can see the method index() there with a “return” statement in the body. The “ok”, it seems is an object that everything is fine in the execution of the code, and the plain text “Hello, world, again!” maybe sent to the client. Since it is simply passed as a string, it will be displayed as plain text in the browser.

Now try running the app as we said before in the “Running your first app” section. However after typing in”play” and you are given the prompt, do not directly type “run”. This is because the code you cloned from my repository at github has been run by me once. As such, the class files will be present already in the application. First remove them and then “run” your application. In order to remove the class files, type in “clean”.

Now “run” and head over to “localhost:9000” (our domain name in this case) in your browser where you should be able to see the plain text “Hello, world, again!” displayed.

Mind you, run the command “play” from within the directory that contains the “app”, “conf”, “projects”, “public”, etc folders.

Got it? Cool. Let us proceed soldier.

app3

It is time to add more URLs. Check the README and then the “routes” file. You can see that two more URLs are defined. Things that come after the first ‘/’. You have seen “facebook.com/user” right? Similar to that. Two new functions are mentioned in the  “routes” file. So check them out in the Applications.java file.You can see those functions defined.

Try running the code. If you head over to “localhost:9000”, you will be greeted by the return value of the index() function, if you check out “localhost:9000/docs” you will be greeted by the return value of the docs() function and correspondingly for “fun” too.

That was easy now, wasn’t it? Let us move on.

app4

README. Don’t forget the flow in each app.

We are introducing an error into the “routes” file. Instead of giving the function name as docs(), we are giving it as doc(). It is a common mistake that could happen to anyone. The point that you should understand here is that, since this is a statically typed framework, everything is checked for consistency beforehand. So in production code, even before you run the app, you will be shown the error which, according to him, is a great feeling of relief while switching from dynamic ones to static. However, since we are running development code, the compilation will be done only once you have sent the URL. Hence, we might feel no difference yet.

Try running the application (don’t forget to run “clean” at the prompt) and go to “localhost:9000”. You need not go to /docs to get the error because the compilation is done once you have activated the first URL itself. You will be greeted by a friendly, cool looking error message in the browser. Do NOT look into the terminal! It will be shouting at you with a lot of stuff. Don’t be scared and don’t be discouraged. Did you get the error message in your browser? Awesome. Forward March!

app5

We are simply playing with the syntax of the definitions in routes. Instead of the URL /docs, we are giving /docs/one. Now if you run the app and check out “loalhost:9000/docs/”, you will get an “Action not found” error message. In order to invoke the docs() function, you have to type in the defined URL “/docs/one” itself.

Let’s move on.

app6

Continuing with testing the syntax of URLs, suppose you want to pass a variable to your web application through your URL. How would you do it? We see that now.

In the “routes” file, you can see that the /docs/ is followed by a “:num”. This states that whatever comes after /docs/ in the URL that you specify, it will be treated as variable with the name “num”. The type of the parameter is specified in the argument part of the corresponding function. You can see that in this case, it is “num: Long” which is of integer type.

Check out the corresponding function definition at the Applications.java file. You can see that the docs() function is receiving ‘n’ as a parameter and you can use it inside your ‘return’ statement as give there.

Now try running the app and checkout “localhost:9000/docs/37” in your browser and see the magic working. Got it? Let’s keep pushing my men!

app7

Suppose you make a mistake in declaring the type of your URL parameter. What happens then? You can see that the ‘routes’ file is same as before. But checkout the /app/controllers/Application.java file. In there you can see that the parameter has been declared as a String. So there is a type mismatch.

Try running the app and head over to “localhost:9000”. You will be greeted by our good old friendly and cool erro message. As before, don’t look at the terminal lest you should black out. Check the browser. You will see:

Saw it? Then let’s get going.

app8

What if we want to pass two URL parameters to the application? That is what this app demonstrates. In the “routes” file, you can see that there is a rule /:student/:mark. So you can specify two parameters after “localhost:9000”. No, you MUST specify two parameters after “localhost:9000” if you want the second rule to be invoked. If you pass just one parameter in the URL, you will receive an “action not found” error. If you pass the parameters in wrong format, as in if you give a string instead of marks, you will get a “bad request” error too.

If you check the corresponding Applications.java file, you can see that we can use the parameters passed as we like. In the corresponding evaluate() function, we care comparing the marks with 80 and executing one of the statements based on the comparison. Try running the app. Experiment with passing marks less than 80 and greater than 80. Feel the difference! Your URL can be something like “localhost:9000/wolverine/67”.

Felt the difference? Excellent. The end is in sight, let’s move on.

app9

Now we come to query strings. You can read upon what query strings are here. If you check the “routes” as well as the Application.java file, you can see that we don;t have to do anything special in order to make the application accept a query string. All we have to do is to put an extra parameter in the function definition. In this case, that is “mark: Long”. Once that is there, we can pass query strings to the applications as follows:

“localhost:9000/wolverine?mark=35”

Try running the app and check it out with the above query string or with one of your own. Gave enough marks to wolverine? Great. Next one!

app10

Till now, we have only displayed plain text in out browser. But as you all know, it rarely the case that you get to see plain text in websites. Almost all the content is of HTML type. So how do we display HTML? Let us get to it.

This is where the “views” folder under /app/ comes into life. We had explained earlier that the “views” folder would contain the templates. Templates are not purely HTML. But for this example, we use a purely HTML template.

Check out the HTML code at /app/views/Application/hello.scala.html . It is a straightforward code and you can understand how it will be displayed in the browser. How is it displayed? Whenever we use the /hello URL, the corresponding function hello() in Applications.java file get executed. It returns a function (views.html.Application.hello.render()) value. That “hello” in that string is the name of our HTML file in the “views” folder. We named out file hello.scala.html right? That .scala.html extension should be there for all the templates.

Try running the code and visit “localhost:9000/hello” to view your first HTML output using play! in your browser.

Happy? Pat your back but no time to wait! Let’s keep going.

app11

How do you pass variables to your template in order to display them as HTML in your browser? The “routes” file is the same. We pass a parameter through the render() function that we saw above. Check the Applications.java file and you can see that render() has a parameter “Arun”. Alright, we understand how to pass an argument to functions, but how is it possible to get that variable in an HTML file? That is why we said that we are using “templates” and not HTML files. The templates here can contain Scala code in it.

So, checkout the template under app/views/Application/hello.scala.html

You can see that the first line is “@(name: String)”. This is the part that accepts the argument that we passed through the function into the template through a String variable “name”. Now, the template will replace wherever it sees “@name” in that file with the parameter passed, in this case “Arun”.

You don’t believe me? Then try running your app and visit “localhost:9000/hello”.

Ah ha! Now you believe me right? Hmph! Next..

app12

Now we couple two things that we learned above. Passing a parameter to the application via a query string and then passing that variable to the template in order to display it as an HTML output. So you can see that we have declared a parameter for the hello() function in the “routes” file. Now you can pass a query string such as “localhost:9000/hello?name=wolverine”. So “wolverine” will be there in ‘name’.

Then the hello() function in the Applications.java file is invoked. There, it has a parameter name, which will now contain what we passed. We use that parameter in the render function and thus, pass it to our template. The template is the same as last one and accepts the passed argument into “@name”.

Run the application and try passing the above URL. Greeted Wolverine? Swell! Now for the final app of part1!

app13

Here we learn to send multiple items through a query string parameter, to split those items and finally display them as a bullet list HTML page.

The “routes” file does not have anything new. It just accepts a String variable called “namelist” which is passed to it as a query string. The corresponding hello() function in Applications.java is invoked.

In the hello() function, we declare an array of strings (String t[]) and pass it the query string values (now in “names”) one by one by splitting them at the commas. Once we finish doing that, we pass the array “t” into the render() function to be accepted by our template. Now let us take a look at our template.

Check the app/views/Application/hello.scala.html file. We can see that it accepts the array ‘t’ that we passed into an array of Strings called names. This is what the “@(names: Array[String]) does. Now, since “names” is an array, we need to take each element from it individually right? That is what that funky looking “for loop” does.

The “@for(name <- names)” iterates over the array “names” and assigns each string in the array into the variable “name”. This is displayed as a list by the “@name”. So, basically, that for loop pastes that contents of the array into the file as an HTML code and then our render() function renders and return it to the browser.

Try running the app and pass the following URL in the browser:

“localhost:9000/hello?namelist=wolverine,haris,batman”

Saw all the superheroes being listed? I know you did. Thank you!
———————————–

This concludes part1 of the tutorial. We did not get enough time to discuss part two entirely. Hence I will share what I know.

One of the most important parts of a web application is the Database part. MySQL is one of the most popular relational Database models. However, here he mentioned about ORM – Object Relational Mapping. ORM is a programming technique that is used to convert a relational database into an Object Oriented model with the first field as the object and the rest of the fields (columns) as their attributes. But it seems that this abstraction is a leaky abstraction.

Leaky abstraction refers to those abstractions that fail to let us use that abstraction without knowing what happens underneath it, at some point of time. As an example, in Python, he told us to try inserting elements at the beginning of a list as well appending at the end of a list. When you try the above two approaches with a million items, you  will find that the former one takes a heck lot of time than the latter. In order to understand why this happens you will need to dig into how lists are implemented in Python using C. Hence, what lies beyond will be revealed, piercing the abstraction.

Refer to the following article for a hilarious description of the Law of Leaky Abstractions:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Now enter into the folder ‘part2’ and let us explore the ‘app*’ there.

app1

Up until now, all that we have done are GET requests. GET requests are those HTTP requests that do not change the state of the server program and the database. It simply requests a resource which the server sends back to the browser. By default, all the URLS in a browser are GET requests. On the other hand, a POST request is what we use in order to change the state of the server side program and database. But how can we invoke a POST request if the browser sends all the URL as GET request by default? Let us see.

If you check in the ‘routes’ file, you will find that a new rule has been added. “POST /add additem()”. In order to test whether the function additem() works, we need to send a POST request with the URL /add. We cannot directly type in a POST request in the address. So we use a command called “telnet” to test our application. First of all, run our app. Once it has started running, and you see the “Server started” message, open a new terminal.

Install telnet on your system. It must be there by default on Ubuntu systems. Type in:

$telnet localhost 9000

and hit enter. You will see a few messages and then the cursor will stay below it, blinking. Type “POST /add http/1.0” and hit enter twice. You will see the return statement of the additem() function printed on your terminal. Refer to the following figure. After running the application in one terminal, in the other terminal:

That highlighted line is what you should type in and HIT ENTER TWICE. So our application is working in receiving POST requests and in responding to it. Let’s get to app2.

app2

Here we see how we can trigger a POST URL from our browser. For this purpose we create a “form” in HTML. You can see that the ‘routes’ file has not been changed. However, the index() function in ‘Applications.java’  renders a template called ‘index’. Let us take a look at that template under /app/views/Applications. The ‘index.scala.html’ file.

If you know basic HTML, you can understand that we are creating a form, which is a submit button, whose action is ‘/add’ and method is POST. Thus, if you click that submit button, it will ivoke the URL ‘/add’ with a POST request, which, according to our ‘routes’ file, will trigger the additem() function.

Try running the app and visit “localhost:9000”. You’ll be able to see the “submit” button. Click on it and you can see the additem() function getting invoked.

Cool? Let us proceed.

app3

This is where you actually POST some data and the server responds according to the data you have posted. However, by this time, the session was at an end and we could not discuss in depth what was going on.

First of all, the index.scala.html file is rendered which gives you a text box named “task” along with a “submit” button. When you type something in the box and hit “submit”, that data will be sent as a POST request on /add. Thus the function additem() will be invoked. That function extracts the data we sent and stores it in a String called ‘task’, and then sends back the response as plain text which includes the “task” String.

Try running the application. Enter something and hit the “submit” button. You will see the String under the additem() function being printed on your browser appended at the end with the task that you entered. So now you know how to issue a POST request.

—————————

Unfortunately, we did not have time to discuss the further applications. We directly went to app6 and tried running that app to see the output. With that, the session came to an end.

A small discussion was there regarding how sessions were established. He explained that each HTTP request is independent from other HTTP requests. Hence it has no way of identifying whether the requests are coming from the same user. So the concept of session is done by implementing cookies. What are cookies? When a user “logs in” to a website, that site sends with the response of the user’s request, an exclusive data that will be stored temporarily in the user’s computer. When making the next request, if the user has not logged out, his browser will take this data and send it along with his HTTP request. When the Server sees this exclusive data, it understand that the new request comes from the same user itself. This is how sessions are established.

The session came to an end with us having a few friendly chats. It was a really informative and practical workshop. One ofthe best ones that I have ever attended. Hoping for more in the future!

Let’s play!

Enabling graphical display by switching user from the terminal.

First of all, the guys at smc (Swathanthra Malayalam Computing) is so totally cool. They are like, waiting for helping you out with something. Really helpful people there. Ershad, Rag Sagar (whom I got to know yesterday just because of the doubt I posted in their mailing list), Jaseem, Praveen, only to mention a few.

Not only that, but it is wonderful to see how easily the world is connected today. Within a few seconds, people from Pune, Bangalore, Calicut and Malappuram talked together and solved a certain Linux administrative problem, which I am going to describe below.

I was trying to learn git and as such, wanted to experiment on managing pull requests. I did not wish to bother anyone else with the task of sending me a pull request and hence, I created a new user in my system. There were two options for me to do it. Whether to use useradd or adduser.

useradd, it seems, is the primitive Unix command of creating a user. I guess you could put it like “raw create user”

On the other hand, adduser, was a perl script that used useradd, and also other informations to create your new user account for you.

Hence, I went along with the latter and created my user. I switched to my new user account using

$su newuser

However, when I tried to open/create a file within the home directory of the newuser with the command

$gedit test.c

I got the following errors:

No protocol specified
No protocol specified
Cannot open display:
Run ‘gedit –help’ to see a full list of available command line options.

Which meant that the graphical display was not working for the new user. Without much delay, I posed the question on the smc mailing list and got two answers:

1. The twisted way proposed by Ershad. He he…

To ssh into the new user account with the -X parameter so that you can use the graphical display. For this, you need to install openssh-server and do:

$ssh -X newuser@127.0.0.1 (Or you could use ‘localhost’ instead of ‘127.0.0.1’ if the mapping is there in your /etc/hosts file)

You are good to go. However, he mentioned that this was not the right way to do things and wanted to find how to do it right. It was then that Rag Sagar pinged me online (since he was not able to reply to the thread due to some technical difficulties). He provided me with the second way, which was the ‘right’ way it seems!

2. The right way by Rag Sagar.

As root, run the following

$xhost local:newuser

Switch to newuser account

$su – newuser

Voila! Now you can use the graphics as you wish. Note the ‘‘ sign in the su command. It stands there for giving the environmental settings for the new user as expected when logging in directly with the new user account. Need to dig up more information on how that works.

And xhost, it seems, is the program that decides/allows who all can access the X server. (What!?). Got to get more info on this as well.

Well, that is the adventure that I had yesterday. Now gitting back to git.

I’m not a FOSS fan boy.

“FOSS fan boy”. That term is really scary. It says in a single breath that the person described by that term is nothing but attitude.

“FOSS fanboys will never understand that, because they need to believe that they’re freedom fighters in a revolutionary war, like characters in their favourite animes”

This is what provoked me to write this post. Trying to draw an analogy, during my college life, I have seen a lot of students getting involved in politics. I have always wondered what got them so interested and dedicated to the cause. I used to find it absurd that they spend time on useless discussions, strikes and fights. I even have discouraged many of them from going after politics and “ruining” the time they had at college. As far as my analogy goes, the belief that something great or superior is there to be achieved by our little actions, is what drives the people, and I believe that there is something free software is destined to achieve.

I’m not sure so as to how this belief is instilled in the young minds. I don’t exactly know how even I got into that mindset. But somewhere along the way,  I did.

People always like to make themselves believe that they are important. They do that by mingling with the ones  who make them feel that they are important. Once they realize which group of people makes them feel important, they will start actively working for it.

I believe that is the truth to getting followers. In some aspects it is easy to provide the motivation because the actions of the group are easy to be imitated. That is the case with political parties as it is easy to be one in a crowd and shout. You can always get attention and feel important without doing much. You just have to make some noise and be somewhere by the side of the mob.

Don’t get me wrong. I’m in no way implying that politics is bad. On the other hand, what I’m talking about is the “Fan” attitude. A more meaningful (and unparliamentary) way of putting it would be “All fart and no shit”.

Another observable example are the “fans” of celebrities. It is one thing liking a certain superstar and it is completely another treating them as God, spending time on putting banners and posters of them everywhere and picking fights with anyone who says he sucks. Most of the youth these days, sadly, involuntarily falls into this trap. The seriousness with which they “fight” to support the celebrity is rather… admirable?

There are still many examples like football fans and cricket fans where all they do is talk without ever having kicked a ball or having held a bat.

Now coming to FOSS. I entirely agree that the ‘fan’ culture is there for that too. Basically, it means that you keep on talking about philosophy without an ounce of technical knowledge. The “keeping on talking” would be fine if you would only spend a little time on it. However, with fan boys that is not the case. They keep at it day and night.

You see certain ‘free software enthusiasts’ commenting about Linus Torvalds and Richard Stallman saying that they are not right. These ‘fans’ would not have even cloned the kernel source code yet and they say “Torvalds was wrong to do that, he was wrong to say this” and stuff. I mean, the Linux kernel is such a huge project being maintained by one guy collaborating thousand of developers from across the whole world! You have no clue what that management is like nor any idea regarding its implementation. All you have done is to sit comfortably at your home, open your laptop, read some stuff from here and there and there you go! Somehow you are man enough to advice others. XKCD depicts this wonderfully. Take a look below.

What do you want me to do? LEAVE? Then they'll keep being wrong

As far as I can see, that attitude is not something to feel proud about regarding FOSS. Let me mention a few people who love FOSS and have done much for it and yet are humble.

The first one would be my brother, Noufal Ibrahim K V. He neither talks philosophy nor tries to correct the “wrong person” on the internet. He lived his college life by tinkering with the internals of the Linux OS and thus learning much about how a computer works. He says that it was the Free Software Movement that brought about the freedom for this kind a thing to happen and thus he respects its existence. He works for the internet archive which is a non-profit NGO dedicated to archiving the whole of internet (as crazy as that sounds!) and yet he does not simply criticize others.

The next would be Ershad. He is just so enthusiastic about computers that he would give his life in exchange for it (Just kidding!). He gets to voice his opinion because he has done much for the society due to his love for FOSS. Not only has he a really good technical knowledge but he has contributed much with it. Both through programming as well as teaching. Personally speaking, he was the main reason for the small light of hope that was lit at our college,

Then comes Praveen ettan whom I have gotten to know over the past few months. Nothing more need be said about him other than that he is a Debian developer! Which means that he spends his time and effort, without any return whatsoever, for maintaining packages for the Debian Operating System. That, my friends, is how you contribute to society. He has strong philosophical beliefs which he puts forward and there is nothing wrong with that because he is one person who tries heart and soul to keep the spirit of Free Software alive not only through words but also through actions.

Now coming to the essence of the post. Am I a fan boy? To an extent I am for my contributions are questionable. Also, since I have been a great ‘fan’ of comic book superheroes like Batman and Wolverine, I’m pretty easy to get excited about “fighting for the goodness of the world”. So the comment at the the beginning of this post applies in my case.

Thanks Sharat for opening my eye. I am not going to be simply “one among the crowd” and shout. Till now all that I have done is to make chances for a few people to come together and learn a little but I see that is not enough. I will try to better myself and one day, I shall speak.