After file and photo sharing, it’s time for “code sharing”

If we want to share a file or photos while chatting with our friends on internet using IM tools like GTalk, we use file sharing services available online. These services allow us to upload a file to their servers and give us a link which we can share with our friends. But what if you are a developer and want to share a small piece of code with your friend? You are left with following choices:

  • Paste it in your chat: I know most of us do this when we quickly want to share the code. However, its annoying as it becomes unreadable and makes your code look as if its obfuscated :)
  • Email: This approach is better compared to previous approach, however the recipient wil need to manually compile the code and run it if he wants to know the output.

I won’t say these approaches are useless. But I would like to have a place, where I can put my code fragment and then share it using a link. I can use this link in my gtalk status, chat or even in twitter posts.

Luckily, there is a site called “codepad” that allows us to do exactly the same thing. It allows us to share a piece of code using a small url.

You can try it now at “http://codepad.org/” or take a look at this example code posted by me at “http://codepad.org/XZpSNngW

Finally, one thing I would like to see is support for C# code.

Missing attachment detector in Gmail

It is really embarrassing to send an email with an attachment and actually forgetting to attach the file you were supposed to mail along, isn’t it? In my case, I often forget to attach files to emails if I’m typing it in hurry. Sometimes, I even end up receiving replies from recipients of those emails requesting me to eat food instead of attachments. It’s really embarrassing when you are working as a professional or interacting with your teaching assistant while studying through online universities.

Luckily, today I came across a feature in Gmail Labs, which helps you to identify missing attachments as soon as you press send button. This small functionality in Gmail warns you if you have written something like “I’m attaching” or “I am attaching” or “I have attached” in your message body and you haven’t actually attached any file. I’m not sure if it is capable of identifying any other patterns in email text which suggests that you wanted to attach something. However, I tested for above 3 patterns and I’m good with it.

To enable this feature, you will need to login to your Gmail account. Then go to Settings -> Labs, and enable ‘Forgotten Attachment Detector’. Don’t forget to click on ‘Save changes’ after that.

I would like to thank Mr. Jonathan K, for creating this useful feature in Gmail lab. It is definitely an important feature for me, and for many other people who like to eat attachments instead of food.

Are computers really becoming user friendly?

Gone are those days when users had to learn all the shell commands (Dos or Unix), to be able to use their PCs. Now you have Graphical User Interfaces or GUIs which allow you to do all those tasks simply by pointing and clicking at icons or menus with that small device near your keyboard called ‘Mouse’. This means that we simply need to buy a computer and sit in front of it, and soon we will be able to use it effectively to manage all required information.

But wait!!!!! As computers are becoming smarter and smarter, some new age pirates are also becoming smarter. They are now finding new ways of hacking into your computer to steal your information with use of Trojans and viruses. For example, read this report on BBC News called ‘Parking ticket leads to a virus’.

This makes me feel that nothing has changed as yet. Earlier, it was difficult to use computers because users had to learn all the commands which were required to operate it. Now, common users are often scared to use their computers for doing activities like online transactions as they need to learn all the ways to protect themselves and their data from hackers.

Well, what does this mean for software developers? Software developers must keep themselves updated about various security issues and design stable and secure system so that more and more users will be able to use technology without even having to learn things they are not supposed to. For those who think software development is easy, I agree with you. Yes, software development is easy. BUT, developing a stable, user friendly and secure application is definitely not as easy as writing ‘var x=a+b;’.

Humorous Video: Agile vs. Waterfall

Many big guys have participated in discussions regarding agile and waterfall model. Hold on big guys, look at this video where two kids have nicely presented the debate on agile vs. waterfall.

Is it really true that something is better than nothing?

They say that something is better than nothing. To some extent even I don’t disagree with this statement. But sometimes, you might end up collecting a lot of that ‘something’ which may not serve your purpose at all. You might end up collecting so much useless information and advice that you will actually feel that actually ‘nothing’ is better than lot of useless ‘something’. When we say that time is important, we should make sure that we save ourselves from these useless ‘something’ and focus on things that we really need.

Being a software application developer, I would like to consider what happens in a typical software industry. What is expected from a software project is nothing but working software. But still, most of companies end up using so called ‘up front’ design approach. In this approach lot of time is spent in designing E-R diagrams or UML diagrams including text documentation. Here, I’m not saying that documentation is useless, but considering the effort that is required to change them once the requirement or design decision is changed, it does feel like a big waste of time. There is another approach in developing software known as Test Driven Development (TDD). In this approach, unit tests are written before the code that implements the required functionality. These tests are written such that:
1. They explain the function of unit under the test
2. The broken functionality is identified automatically as soon as possible

Text based documentation can serve the purpose stated in point 1 but fails to identify broken functionalities automatically. Thus it’s better to have unit tests than to have documentation in text.

Similarly, in case of online forums, threads are created asking for help. But most of the time I see replies like “Yes I agree” or “Wow!!! That was great”.  I have seen replies that advice the creator of the thread to search Google for more information. Such replies don’t add any real value to the owner of the thread or to other readers. If you want to give your opinion then make sure that you also add value to the thread by recommending your own solution. This way, every reply to a thread will improve the discussion further.

Another case I would like to consider is the case of websites which are created only to make money. Such websites are known as virtual real estates and use PLR articles as content. This leads to hundreds of websites having similar content floating in cyberspace. Another fact is that, most of the time such websites are created by people who knows nothing about the topic. The articles are mostly ghostwritten or taken from PLR sources or article directories. Google knows that such duplicate content doesn’t add any value to internet users and thus, hides the results containing duplicate information.

Whatever may be the case or purpose, we should remember that whatever we do, even if it’s little, should add value to our work. Something is better than nothing holds true only when that ‘something’ has a value and not otherwise.

Active mind and software development

Every software developer knows the importance of his or her own mind. Well, I feel that software development itself is an excellent mind game where an active mind can help you to drive the design and development of your software effectively.

If you are involved in the development of software for a domain where requirements keep changing every second, a developer needs to come up with new and new ideas to prevent the development process from stalling. To think of new ideas, you need to keep your mind focused on the problem which is difficult if your mind is not active.

To keep your mind active all the time, you basically need to keep it engaged in some activities so that your mind won’t have to stay idle. Let’s look at some activities that can keep your mind active and engaged for most of the time.

1. Reading: Everybody knows the importance of reading. Apart from keeping your mind engaged, it also helps you to learn new concepts, and to come up with some new ideas. You could read literature on almost any topic. Normally, whenever I get tired after long hours of software development, I like to read some story books or newspaper. It distracts my mind for a short time from the puzzles I was trying to solve while coding and thus, making it fresh again after some time.

2. Writing: Some people think that writing is generally a physical exercise. Just try to write some original articles or essays and you will come to know how much you need to think. But what to write? You can keep your personal diary where you can write your daily experience or a weblog where you can post your thoughts or ideas which could help others. If can even try to write your own poems or songs even if you haven’t written one before.

3. Playing mind games: Games like chess or sudoku are quite challenging by nature. You can even play these games without moving away from your computer (lol). Don’t worry if you are not expert in chess or sudoku as we are trying to play just for the sake of keeping our mind engaged.

4. Observing mother nature: If you are really bored of reading, writing or even playing then you can just hang out in some nice garden and appreciate the beautify of our mother nature. Trust me, it works!!!!! Once when I was struggling to come up with an algorithm to write one game, Alan had advised me to go out and look at birds and trees. I listened to his advice and soon after that, my problem was solved.

Here I’ve mentioned the activities that I follow to keep my mind active. Sometimes, I even do meditation for around 10 minutes. Don’t just limit yourself to these activities for keeping your mind engaged. Do whatever you like but make sure that your mind won’t stay idle.

Professionalism: A misunderstood term

Everyday, thousands of students join engineering colleges thinking that they are going to be “Professionals” after completing around four years of course. Once I asked some students the reason behind joining computer engineering in college. One of the answers that I got was “To become professional software developer”. On the other hand, I have noticed students appearing for interviews wearing formal clothes just to show that they are professionals. Not only students, but many times, people working in software companies develop a culture where they won’t call you professional unless you are going to wear formal clothes.

I know these experiences are little funny but they clearly show how people have misunderstood the term “Professional” and “Professionalism”. Once I met one of my friends during office timings and noticed that he was trying to be too serious in his approach. At his home, he used to be pretty humorous. When I asked him about the reason behind his change of behavior, he said he needs to be serious to look professional. So what exactly is professionalism?

While at work, it’s true that you need to follow some dress code and work ethics but that doesn’t mean that being professional is only limited to acting serious and wearing formal clothes. According to an article titled ‘What is a professional programmer?’ by Sarah George, being professional is to have set of qualities like trustworthiness, teamwork, leadership, communication, constant updating of skills, an interest in minimizing risks and accountability.

I completely agree with Sarah George. However, now I have a new question in my mind. Are our professional colleges trying to develop these qualities in students or are they trying to make them pseudo professional by training them with false concepts. When I raised this question in front of related authorities, they simply said it’s the fault of students that they don’t take any interest to learn by themselves.

There are many reasons behind misunderstanding the meaning of professionalism. But it’s our responsibility to leave such misunderstandings behind and develop the qualities described by Sarah George. This will not only help us in developing our career but will also help in the progress of our nation, world and the whole human race.

Economic Exploitation………

Before I go ahead with this post, let me quote the dictionary meaning of the word economic exploitation :

Most often, the word exploitation is used to refer to economic exploitation; that is, the act of using another person’s labor without offering them an adequate compensation. (http://encyclopedia.thefreedictionary.com/exploitation)

After reading this, you might say, “Oh yes, we know about this. This is how poor and uneducated people get exploited”. If you also think similarly than you are wrong. There are many educated people who get exploited too.

One company in Bangalore, hires freshers (as software developers) and pays them as less as Rs. 3000 per month during training. All this for the full time training. That is 10:00 am till 8:00 pm. Trainees need to manage their food, shelter and all the basic needs in this amount for the full month in a city like Bangalore (What the hell….). Can you believe this?

The story is not over yet. The company once decided to organise an internal event for which they collected Rs.50 from all the trainees. When one of them raised a voice, saying that for him its not possible to pay as his full salary goes in satisfying all his basic needs, the trainer advised him to ask for money from his friends. My doubt is, whether this company teaches people to do their job or to beg?

When the question is raised over the initial salary(?), the management says, “we employed you when any other company didn’t recruit you”.

What I can’t understand is, why do people fall for such kind of exploitation. Why no one opposes it? But for those who don’t like to get exploited, be careful from such companies.

How to judge talent?

Some days back, I came across this real life incident that happened in one reputed company in Bangalore. When I heard about it, I was shocked. It raised lot of questions in my mind.

The company had hired some freshers. During their training period, the trainer told students to write twenty programs which will include all the concepts taught by him that day. Almost everybody wrote 20 programs. But one of them (who was really smart), solved only five but presenting all the concepts which the trainer had taught.

Before knowing what happened next, let me tell you what I thought when I heard up till here. I thought that guy really loves to learn. He solved only five not because he was lazy to code twenty programs but he thought it was waste of time writing twenty programs when all the concepts could have been easily presented in just five programs. Trainer should have been interested in finding out if the students have properly understood the concepts or not. Showing all the concepts in just five programs would have saved trainers valuable time. Also, it would have given the student more time to learn more about the concepts. Excellent! I said in my mind.

But what happened in reality was quite shocking. Trainer was not happy with that student. Trainer wanted twenty programs. But before company could have taken any action against the student, he left the company himself.

Shocking isn’t it? Can writing twenty programs prove that someone is a great programmer? Or can it prove that he had understood all the concepts?

Well, which is the correct way of judging talent? I leave it up to the readers to decide. But if you ask that trainer, how would he identify a talented people, he might say, give them twenty programs to write and if they manage to write, declare him as talented………………

After a long time…………….

After a long time………….

Well this is the word that I hear lot of times these days. To add more to it, even I say these words quite often. Ever since I’m in bangalore, I started hearing and speaking this sentence every now and then. To start with, I am posting in my own blog ‘After a long time’.

Why am I writing a blog on this topic? I was posting in comp_rules blog very often, but ever since I’m in bangalore, I haven’t posted a single topic in my own blog. So, finally I thought, let me write something atleast in my blog. But write about what? There are lots of things to write but where to start from? Finally I thought that, today atleast, after a long time, I must post a topic in my blog. And wait, that’s it, I found a topic. After a long time of thinking process, I finally found a topic.

I reached bangalore on 2nd July 2006. When I came here, I was alone from my class atleast in bangalore. I was waiting for someone whom I knew to come to bangalore so that I would feel comfortable. And finally, after a long time (actually in next two weeks), Ralston and Jessel landed up in bangalore. Hurray, finally, after long time, I had a chance to meet my classmates again. Great, Isn’t it?

Okay, lets continue with the topic. I was getting bored here in Bangalore so decided to come back to Goa for two days over a weekend just two weeks after reaching Bangalore. When I reached there, I met Maya, Lata, Harshali and Vishal. When I met them, they all said one thing first. “Hi Anay, Good to see you after a long time”.

As I was in Goa for two days, I finally got chance to eat home food after a long time. I enjoyed it completely. Nothing compares to home food. Yes! East or West, home food is the best. Well, what do you think? Even if you don’t agree now, you will surely do but after a long time.

What’s next? Hey man, I’m still in goa and two days of weekends are not over yet. After a long time, I got a chance to see video of my Birthday party. It refreshed some of the memories and made me feel even more comfortable.

Now, it was Sunday evening and time for me to leave back to Bangalore. Soon after that, Maya and Harshali also got placed here in Bangalore. After a long time after college, Maya and Harshali got placed and I was equally happy.

Huh, I think, even if I’m posting something to my blog after a long time, I should stop now. But whats the conclusion? Well, lot of good things don’t happen quickly. Good things happens to those who wait. When you get happiness after a long time of waiting period, that happiness lasts longer. So, be patient. And you know what? I realized the importance of waiting, after a long time.