Directi Hackfest – 31st January, 2010
Ever since I learnt how to use git, there has been an urge from within to share my code, look at others and collaborate and develop something useful which everyone else can use. For me, usability is as important as functionality. Both are as equal as the other in general cases.
Rewind
Long back I once asked Abhishek Mishra (ideamonk) if we could meet up and organise a small hackfest. The aim was to let know each other’s project, meet new people, learn new things etc etc. One in these *etc* was to complete our unfinished projects due to lack of time, motivation or even know-how of some of the aspect of a technology. Long back Abhishek and Yuvraj Pandian T (YuviPanda) have collaborated on a project named PyMos which was to generate Mosaic for any image. It was written in Python and works like a charm. Give it a try.
Since me and ideamonk live in Bangalore, having a hacking session being physically present would be better than working online. Abhishek liked the idea and tweeted whether anyone is willing to give us space for this event which has wifi. He instantly got a reply from The Chef of CodeChef and there we had a space in the Directi office. Thanks to all the kewl cool people at Directi with “Hacker Mentality” for supporting us.
Agenda
Abhishek invited his friends for this session and two of them turned up – Ishaan Chattopadhyaya and Rohan Prabhu. Naresh from Directi was waiting for us. When we came in, there wasn’t any plan on what needs to be done, as we expected to work out on a common interest field. Ishaan had to speak on Location Based Search and me on CodeIgniter (PHP Framework). Abhishek had some projects like sahanapy and creating a GUI over apt-offline.
Talks
Till this time I had a feeling that we won’t be working much today since I didn’t knew anyone apart from Abhishek. To learn more, we first had small talks so that we can know each other and their interest of fields. Ishaan talked on Location based search which includes geographical searches like Google Maps. It wasn’t a very exhaustive one, but a pretty nice explanation of what all complexity lies beneath the hood.
At this time, we were total 4 people – me, Abhishek. Rohan, Ishaan and Naresh(Directi)
Then I went to speak on CodeIgniter which is a Framework of PHP. As opposed to what I said earlier, it actually doesn’t look like a framework, since it does not have many of functionality which make a F/W. This is what I explained – why it has only the things which we want, awesome documentation and a dead simple setup. It is just a set of classes which relive you from messing with lower level functionality. Since it is very simple, there is hardly any overhead with speed. You get only the basic boring things and complicated and interesting things are left to you.
Code
Abhishek showed us apt-offline which is an utility for getting updates, upgrades and packages on a Debian based box which does not have internet connection. The system on which these updates,upgrades and package download is done can also be windows. Typical situation is you have a very slow or no internet at home, but blazing fast net at workplace. You would be tempted to use office net to download the packages and update your local index, install updates and install packages.
This utility was created by Ritesh Raj Sarraf long back and was just a command line based application. Abhishek had tried it and it works flawlessly. All which was missing was a GUI over it. It first looked like an easy task. Use Qt Designer and drag-drop every control and here we go. This way of development had a big flaw. The GUI developed is no better than the CLI since the clueless non-techies wont understand words like “apt-offline set”, “apt-offline get” etc etc. Even it took me a minute or two to actually get what all these mean.
Rohan can be called a Qt geek. The guy knows each and every class and it’s properties and event etc etc. This made us even more interested since he is always at disposal to help us and teach us more. By this it was pretty late and we were wondering if could do something worthy at that time. Then we decided to work only on UI as of now, make small changes in the core class to accommodate the GUI which is otherwise hard-coded. We had to dive in the code to get better knowledge of how apt-offline works as there is hardly any documentation apart from one written by Ritesh himself.
Conclusion
I don’t have much idea of Qt and this was a good learning curve. I agree that this hackfest didn’t pay off well as we expected. Most of the time we spent in discussing data structures, algorithms, Qt, git etc etc. which was again as usual – AWESOME.
My personal expectations from such sessions is to create some useful software and not just YAXX (Yet Another XX). Functionality, Usability, Accessibility and Documentation – all matters equally. I would also like to slowly slowly move on more tougher and promising things like kernel and filesystem level coding.
Winding up, this is just a start and I have great expectations from these sessions. I would like to again thank the Directi guys and the other people who were supposed to come but were not able to turn up due to their personal commitments.
2009. A Recap(Technical)
2009 has been a great year for me in the sense that I learnt many new technologies and used a few other. Below is the list of keywords/products/terms which have affected me in the last year. Take this list as a collection of technologies which I adopted, hated or loved.
1. GitHub
Status: Adopted and love it
Probably one of the best thing for me this year when it comes to software engineering is the evolution of GitHub as a de-facto standard for hosting code. Earlier there was no such service by which people used to swear by. Projects were scattered all over Google Code, Launchpad, FedoraHosted, SourceForge and what not. GitHub changed the way people looked at source code hosting. It also gets the credit for making git insanely famous such that people who had settled with svn started their shift to git. It was only due to GitHub that I tried out git other I would have been stuck up with Google Code with svn.
2. Nokia 5800
Status: Bought
I bought a Nokia 5800 in September 2009 and it has now become my major source of internet on the move. I know many die-hard Apple fans bought curse me for not buying an iPhone. Anyway, thanks for the pain to think about it.
3. Posterous
Status: Love
Posterous is probably one of the most awesome service I have ever seen. Just mail the snaps, audio files and whatever you have and the awesome Posterous would take care of it. It is integrated well with many twitter clients too(Gravity) which allow us to snap and send the pics. The best platform for informal blogging.
4. Dropbox
Status: Adopted
I started using Dropbox on the daily basis quite late. Even though I had an account long back, I didn’t feel to use it on day to day basis. After exploring the awesomeness of this service, efforts were made from my side to get used to it. Now I keep all my code in Dropbox folder. This code is basically those which I have checked-out(svn)/cloned(git) and made local changes and havn’t commmitted(svn) or pushed(git). Sometimes of other some recent snaps also find their way.
5. Lotus Notes/ClearCase
Status: Use at work. Hate a lot
I am still not able to understand which idiot made these two junk software? Lotus Notes isn’t meant for humans and ClearCase creates more problem that it actually solves. Files take ages to checkin and half of the options are not clear. Even Lotus Notes is no less. WTF is replication? Shocked? In Lotus Notes lingo "Replicate" means "Fetch Now". Even people with sound technical knowledge easily get confused with this junk.
6. Seagate 500GB External Hard Disk
Status: Purchased.
I recently(3 months) bought a Seagate 500GB external Hard Disk. It has solved many of their storage problems. Including a HDD in this list would look lame, still it deserves it’s place due to the problem it solved and the immense help it provided.
7. Google Reader
Status: Got addicted
Someone says that due to Twitter effect, feed reading is declining. For me feeds are still an important source of knowledge since I shell out dedicated time for reading feeds. The subscriptions contains only those sources which give complete or sometimes exhaustive coverage of the topics they are covering. Sources whose feed vomits only the URL are purged. I need atleast half of the article to be in feed as a minimum qualification. Only Ars is the single source left with a partial feed.
8. Python
Status: Now I swear by it
Even though I like Python, the first half of the year was spent in hacking, coding, eating and sleeping python. The language got on me and at one time I found it as the only language which exists on this planet. After a period I recovered and started looking the world from a wider angle and became language agnostic (for language which pass the minimum threshold)
9. C#, .NET and Silverlight
Status: Love and Hate
My employer needs me to work on .NET based tehnologies. Since I usually don’t have much problems with .NET unlike others and I view C# as really a good language which has evolved as a good alternative language of choice. Silverlight is the thing I really don’t like personally even though I have been working on it. I hate technologies which are as a plugin for browser technologies like Flash, Java Applets, Silverlight, Shockwave etc.
10. IE6
Status: Hate
God! This thing refuses to die. My hate for IE6 has grown so much that these days I find any browser fit for my need. Earlier it was just the pain of developers as ignorant users never had seen a better browser. After using IE6 at my office for official work, I am ready to fund for the funeral of this villian. Anyway I use Firefox/Chrome for my personal work at work.
Education given by Indian Engineering Lecturers
Case 1:
Lecturer: Write a program to implement a simple stack.
Student: Here is the program
Lecturer: No, not like that .You need to ask the user which element needs to be pop-ped.
Case 2:
Lecturer: What is your project on?
Student: I have implemented a software tool like revision control system which can keep revisions of all files during the software development cycle.
Lecturer: Why have you taken so much pains to implement it, can’t you use “Save As”?
Case 3:
Lecturer: Total Internal Reflection happens when light travels from rarer to denser medium.
Case 4:
Lecturer: Examples of web browsers are Internet Explorer and Netscape.
Students (shouting): Ma’am Mozilla too.
Lecturer: No! Only Internet Explorer and Netscape.
The Art of Power-Point Presentation
How many times did you have “butterflies in your stomach” just because you were told to be present in the auditorium/seminar hall where your attendance was compulsory for something more precisely called “Power Point Presentation”. You especially need to take care that it is referred to as PPT and not just a presentation, the former probably stands for “Powerpoint”.
PPTs are probably one of the most hated things in this world, due to one simple reason-They are usually boring. The person giving the presentation considers it a liability and the audience feel attendance a compulsion. The audience resist from asking questions as it will prolong the event to unbearable lengths. The presenter just wants to get rid of his responsibilities either because he is not interested or he knows no one cares to listen.
Essayists
Nothing is more torturous for me than attending a presentation, where the dude has copied the whole content on the slide and is reading it aloud for the audience! Like we are illiterates.
Body Language
Would you like to attend a presentation where the person uses his hands, eyes, face for communication or in a presentation where the person speaks like a robot? We have enough text-to-speech converters. Humans need not take the pains for the same.
Animations on the slides
Probably many people might disagree with me on this topic, but I hate those presentations where the slides have tons of effects like fade-in, swirl, zoom-in etc. To add more insult those effects have sounds effects like brake,gunfire,coughing, sneezing and what not.
One-Phrase Focus
This solution is probably for all the essayists. I have seen many people who can capture the attention of the audience by focussing on one-phrase at a time. If a person is speaking on say “Memory Management”, then keep this word/phrase on the slide and nothing else. The slide is just to keep the audience alert on which topic the talk is going on. If there are many sub-topics, probably all of them can be shown on the screen, but only one of them should have focus and rest should be grayed out.
PPT
Presentation is not a “Power Point presentation”. You don’t need Power Point for putting forward your views. I don’t know who coined this horrible term called “PPT” which most probably stands for “PowerPoint”. I use OO.org, so it means I am unfit for giving a PPT?
Steve Jobs
If everything else fails, turn towards one of the biggest visionary and orator of this time for more suggestions. Have a look at the keynotes delivered by Jobs. Learn from them. Do you find his whole speech written on the background?
In fact presentation should not use PowerPoint. Ideally, every so called PPT should be like a Steve Jobs keynote.
Conclusion
I am also not an expert in delivering speeches or presentations. Since I have to attend some of the other presentation every forthnight, I do notice some of the other mistakes committed by others, make a note of it. Next time when I prepare for any speeches, I keep those points in mind. The above points are taken from that list. This list is from an audience perspective.
Computer Science Project for Indian Engineering Colleges
How many times you put your best effort in making a project only to be ridiculed during the presentation with words like “This is shit”.”WTF is this” by the teachers. OK OK! I am exaggerating, but it is a truth that students who put their best don’t get their reward. Most of such students put their sincere effort just because they like their work and not just for marks. To add insult to injury, those who copy-paste the projects get great reviews.
The situation is no different in Computer Science branch too. We loose hundreds of such talents students just because they became de-moralized after poor feedback for their project by the faculty. They should realize that hard-work in college hardly pays off. They should put their coding efforts in competitions like “Google Code Jam”, “CodeChef” or some open-source projects.
Now the million dollar question is “How to handle the college projects”? Let me explain with an example.
My Stackoverflow archives #1
Usually when I am wandering around on stackoverflow, there are times when I find some of the questions being interesting and bookmark them. Since this list grows day by day, it came to my mind to publish them for the betterment of the general public. These are the questions which I found good and don’t claim to be the “Best of StackOverflow”. You would notice the variation in the type of questions.
If you have your list, please let me know. The comment section is open for this noble cause. BTW here is the part 1 of the list.
Feminism
Looks like Mark Shuttleworth has created a storm by uttering something which is not well received by a few Feminine Geeks. First I thought that ‘asking for apology’ is only my country’s national pastime, but probably it’s international.
The way everything is put forward, I can only say that things are blown out of proportion. Did Mark say that women are incompetent? Did he say that they are dumb or anything even faintly similar? Quoting from Skud’s article on geekfeminism
I’m sorry I wasn’t able to make it to LinuxCon this year; I hear it’s a pretty good event. I’ve been listening with some interest to people’s reports of what’s going on there, and this afternoon I heard from multiple sources about your keynote, in which you referred to our work in Linux as being “hard to explain to girls”.
She was herself not on the venue and all she knows is from *multiple* sources. Sometimes words get distorted and lose their context if they get passed from person to person. LinuxCon is not a place to vent someone’s anger, nor to abuse anyone. If Mark wanted to abuse them, he would have said it somewhere else.

It just works
The reality is that the population of girls/women in FOSS world is very marginal. I know that situation is improving, but it would not happen overnight. In my country girls are more attracted towards medical, healthcare, product services etc. First, India’s female literacy is less than male’s. Secondly, the percentage of girls in Indian engineering colleges is quite less. Thirdly, most of the female engineering graduates want to pursue MBA. So, hardly girls are left whom you would find interested in FOSS. Those who are really enthusiastic surely go a long way.
Shuttleworth said that Linux is hard to explain to girls. I can only say that it’s even tough to explain to guys who are not interested in technical matters. Probably Mark must have tried explaining it to girls who are not even interested in computers. Neither me nor Mark has any intention to look down upon women, but nit-picking at each and every phrase is somewhat lame. This actually does more harm to women who want to be more involved in FOSS.
For those who are still trapped up in the same array of tweets and dents related to this event, you may prefer reading Matthew Brennan Jones’s response to geekfeminism. He has written a post on his blog clearing the misconceptions. Go read it as he was physically present that time of the event.
I know am late expressing my views, but it hardly matters.
List of useful Python libraries
If you are a .NET programmer, then you find Python a bit tough. Reason? Python does not include library for each and every operation possible in this world. You may have to work around to find the necessary packages, download them and continue with your development.
Python’s standard module list has a finite number of entries as opposed to .NET ( I use .NET at my workplace). Here this is an attempt to collect all such libraries which are outside standard modules, which you might badly need for your development. Many of them are extensions or wrapper packages for already existing libraries.
1 ) scapy
This is a library for TCP/IP stack wherein you can have full control over the lowest detail of the Packet that leaves your computer. It supports many protocols like ETH, IP, ARP, ICMP, TCP, UDP etc. You can create custom TCP/IP packet and send it to any host. Typical implementation is ARP Ping, ICMP Ping.
Experience: Tried. Works perfectly. Havn’t stumbled across any bugs as of now.
2) soaplib
Used for creating lightweight web services. As the page says, it comes with a client and server built in and on-demand WSDL generation.
Experience: Havn’t tried. Heard about it’s existence.
3) mysql
Uh? Do I really have to tell what this is actually. I hope everyone knows.
Documentation for python-mysql
Experience: Obviously! Obviously! I think I should remove this line.
4) aubio
Stating directly from it’s site – “aubio is a library for audio labelling. Its features include segmenting a sound file before each of its attacks, performing pitch detection, tapping the beat and producing midi streams from live audio. The name aubio comes from ‘audio’ with a typo”
Experience: None. Presently in To-Do List.
5) Beautiful Soup
BeautifulSoup is an SGML parser which is highly robust and doesn’t die straight-off even if you give it poorly formed data. To make it scream and die all you have to do is to give something that isn’t SGML at all. It even has a parser class named BeautifulSOAP which is used to parse SOAP message (as the name applies). It even has a class named ICantBelieveItsBeautifulSoup. Sounds stupid? Who cares as long as it does it work.
Experience: Tried when I saw Anomit using it. Need more experience as I have lost touch as of now. Never tried BeautifulSOAP.
6) python-clamav
It is pending in my To-Do list. Will start working as I get time. Check a small tutorial
Experience: No! Read the line above.
7) python-crypto
Presently in #1 position of To-Do list. Sounds just too promising. Hope it is as I thought it to be.
Check the API and it’s general overview
Experience: No
8 ) django
Now if you don’t know django – Go shoot yourself or read about it here if you somehow survive.
[ As pointed by Anomit, it isnt a framework, but library is a general name I have used for the title ]
Experience: Obviously!
9) gd
I have used GD a lot in PHP, but hardly on Python. GD is simpler than ImageMagik (never used) as people told me. Hope to use this library if I ever require.
If you ever require the documentation, head yourself to this page.
Experience: Not used in Python, but in PHP
10) gmp
GMP stands for GMP Multi Precision and gmpy is a python wrapper over it. Though you might not need it in Python, but if you are coming from C background, this might be a familiar name.
Experience: Normal, not an expert
11) python-jabber
Python-Jabber is a python module which implements jabber instant messaging protocol. Check out the documentation and a funny example .
Experience: Little experience. Not much. After all it doesn’t look so tough, so will sit down for a hacking session,
12) python-irclib
I encountered this library when I was searching more on python-jabber library. This also falls in the category of real-time messaging. The problem I can see is that there is no documentation. How to proceed? Use dir() and inspect module extensively?
Experience: Kidding? Please show me the documentation. I don’t have more time for hacks as I did with scapy.
–
Till now ,I had kept this list for my own reference. Many more required libraries are missing. If you have any more in mind, please mention it. I would be glad to add it.
Idiotic Twitter Activities
With the uncontrolled explosion of microblogging we have seen every Tom, Dick and Harry having a Twitter account. The problem doesn’t lie in having a account, but how they use it.
Re-tweets
At times it looks like some people have just no work and only thing they do is to re-tweet another’s thoughts. Re tweeting a few exceptional ones makes some sense, but why re-tweet each and every fuckin tweet in this damn universe? Come-on, create a script, follow people and do mass re-tweets. In this way you won’t miss even a single piece of shit thrown upon you. Sometimes re-tweets can be thought upon as a method to gain more followers. God knows how? Am just making wild guesses.
Trending Topics
When topic trend, it means everyone is talking about the same shit and redundancy is at it’s peak. Hell Yeah! Re-tweets even complicate this delicate ecosystem of twitter. Lots of re-tweets mean those fuckin topics start trending. These days trending topics hardly have any originality and the only way to save your sanity is to hide the section.
Tweets with Innumerable Handles
I have seen some people whose tweets contains more twitter handles than they have text. Consider an example
@deathsen It would be better that me, @fcukarrington @dziuba go out for drive with @gragsha. Should we @scobleshit @fkbeer ?
If you can decipher the tweets, it is well and good. If you get such tweets on a daily basis, the unfollow button comes handy. Just hit that button before insanity starts getting hold of you. I am hardly able to understand whom they are talking to or whether trying to gain attention. I am even curious whether they know what they are writing.
There are more, but probably not so nasty as these. SMS Lingo is one which still gets on my nerves, but somehow I have managed to live with it.
FOSS Industry Adoption
Probably I am not so much qualified to enlighten others on this topic, but this is what I can see from my eyes.
Praise Python! Praise Linux! Praise any other FOSS technology! Now go and check what is being used in the corporations. I would like to list them down a few – .NET, IE6 , ActiveX, Rational Suite, Lotus Notes etc etc. Most of the technologies are either outdated or fully enterprise software. Half of them would be probably new for anyone.
.NET
Even when I was in college, all I used to hear was that .NET used to be an integral part of their requirement of any company that hits the campus. Even in the Internship last year, .NET was the religion. Even in all the jobs around why is .NET so important? We hear so much about Python, isn’t it? Where is it? When will it be adopted as mainstream popular development language?
Don’t confuse between .NET and Python. When we say .NET we usually mean C#.NET. This language was responsible for the success of the framework. We even have IronPython, but hardly anyone uses it. (Please don’t bring VB.NET in between). One reason is that since all of the language having .NET bindings generate MSIL, the language doesn’t matter. Since C# has syntax very similar to Java, it becomes a preferred choice even for beginner and experts.
I personally don’t like the .NET runtime. It is slow and hogs the resources. Visual Studio sucks more RAM and resources than the OS itself(read Vista). It is slow in response, freezes a lot. (Please don’t give bullshit suggestions to get a 4GB RAM Module). The only positive thing is C# which is very familiar and is probably the best language from Microsoft.
To make Python more famous, we need to look out from the standard modules and create a huge collection of libraries and organize them in categories. .NET has a bigger library for more functionality (makes it more heavy).
Source Control
ClearCase! I would keep my mouth shut over here, but the web interface sucks. Sucks bigtime! Doesn’t look like a web app in the first place. Upgrades are slow in enterprise and we are forced to use the old versions of any software which should be kicked out by now.
Why not subversion? I know some of my friends who say that their company uses it, but still ClearCase still has a big market share. Probably a big reason may be due to early adoption and a complete Suite. I have attended one conference of IBM Rational Suite in which I was really impressed by the way it was being explained. I hope people should get the point. Marketing matters as much as quality matters. Subversion may be excellent, but it needs an excellent marketing to make it more appealing. A rock-solid support is also needed.
IE6
Probably nothing sucks more than IE6 when web is mentioned. The usage of IE6 is highest in corporate offices. Employees are forced to use this stone-age browser because either their company policies don’t allow or they don’t have admin privileges or the worst of all – The smart-ass programmers made the company’s intranet to work only on IE6.
Operating System
Do I even need to mention this? All companies have deals with the software giant for bulk licenses to keep their systems running. They strike special deals if they ever need *nix systems. This decision is usually taken after lot of brainstorming.
This post was not to show someone superior or inferior. Just my point of view! Your point of view goes down in the comments section.




