New .NET Logo

I believe I am a little late in talking about the new .NET logo Microsoft showcased at the PDC 2008.

White background

Snapshot 2008-11-10 12-40-10

You could certainly get more on msdn but Scott Hanselman has posted some of them on this blog post.


Peopleware: Aren't we missing it?

I am sure most of the IT guys, especially managers are familiar with the word Peopleware. For those who don’t, it originated from a popular book called Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister. It actually underlines the constant conflicts between individual work and corporate ideologies, something most of the software developers face, but hardly speak about. Its a concept which if understood and followed by managers, can result in great work culture, lesser employee turnovers and higher productivity. If you intend to know just what the heck I have scribbled here, then jump to the conclusion below, although please read the book if you haven’t.

I have been a full time employee in India and later in US, which has inspired me a lot to write this post. An important factor which affects the productivity of a developer is the attiture of their manager towards them in day to day activities. There is a startling difference between the companies based in India and those in US (Well other countries too but I have had experience of US only). I would quote a statement from the book mentioned above,

“Managers are not supposed to make people work, but make it possible for them to work.”.

This statement has such a deep meaning in its own sense. I could expand on this giving my own experience at work. While in India, I constantly had a feeling that the manager to whom I was reporting, was really difficult to approach to. The extremely vertical structure of the Indian software industry results in the developers being less communicating and more bullied by the managers. If you imagine a organization structure chart, the white spaces between these levels signify the place where learning should occur. But in most of the Indian firms I feel this space is void or close to void. The result is the manager thinks of the developers as nothing more than replaceable parts of a working machine. When such a feeling is in the air, developers have a depressing attitude towards their work and company. In this case, either the developer’s performance degrades and they eventually leave. Most of the managers would get on with that by hiring a new developer in that place and life moves on. Only good managers realize that this will cost the company much more than spending some on the efforts for retaining that developer. The main theme of the book is quoted as,

“ The major problems at our work are not so much technological in nature than they are sociological in nature”.

Nature of an outsourced job in India

Honestly I feel there is heck of a difference in the kind of job done in majority of software firms in US and in India. The Indian office of an US counterpart is an offshore development place wherein the work is “supposed” to be done quicker and cheaper. This is the mantra of a global service firm. Although, the offshore office is not an exact counterpart of its western office since things are dealt slightly different here. A developer has to manage his/her everyday tasks along with maintaining communication with the manager. At the end of 8 hours of code crunching, he/she might have to attend a phone or video conference with the client since it is day time at the client, the client needs to talk personally what is going on in the codeville. So you see, typically in a IT service firm in India, a developer has much longer day than usual. Most of the developers have put this in their routine but they know it unknowingly, that they are losing precious amount of time of their life which is just one per person. Overtimes, late night drops are a real common thing among the IT firms here. Well the sad thing is, its the nature of the job which seem to demand it.

Go Startup

Frankly, many people have seen this dieffrence between big fat companies and startups. Most startups or small companies are more open cultured, flat due to its size with a well managed office and the meat of the dicussion, the managers have a closer relation with the team members. For me atleast, if the job does not give me the joy of work I need, the salary ain't worth sqaut. I do not say that all startups and small companies are better to work for than big companies, but as a budding developer I feel more interesting and challenging to be in a small pond rather than an ocean. Talking about startups, people interested in starting a new business, may be in IT or something else must read the blog post about The Art of Bootstrapping by Guy Kawasaki.

Conclusion

IT managers in India have to realize that developers are real asset to a project and not replaceable parts. Low quality software product, delayed projects, scrapped out projects are a result of sociological problems in a team rather than a technical one. The book mentioned above openly explains the mistakes manager have been doing until now, some still do. Good managers spend time and money in hiring good people and trust their capabilities rather than telling them what is to be done at each point of time.

Developers need to realize that the reason you intend to work hard is because you like it and evetually wanna have a better life. But what is the point of that life if you spend your twenties and thirties in a cubicle or an office doing overtime crunching millions of lines of code. Most of us do realize this fact and just keep going, but when you eventually feel like stopping its all over.

Slow down you crazy child,

And take the phone off the hook and disappear for a while.

Its all right, you can afford to lose a day or two,

When will you realize … Vienna waits for you?

-- Billy Joel.


Unlocking iphone 2G safely and correctly



I know I know I am a PC guy! But I could not stop myself buying an iphone as soon as it was released in 2007 being a techjunkie. I enjoyed legally using it when I was in US. Like a honest buyer I used the AT&T sim, paid the bills blah blah. But I had this big question in my mind, what the f*** would I do when I move to India. When I returned here earlier this year iphone was not yet released and the only way to use it was unlocking it. But yet again like an honest buyer I played the wait and watch game, I thought Apple would certainly come up with a plan for people changing their region with the old 2G iphone. But instead they released iPhone 3G here for country which is yet to have a 3G network! So I was left with 2 options, either buy a new iphone in India or unlock my 2G iphone. Hah, like I was gonna be honest anymore!

Thus began my tryst with the hackers. I followed lots of blogs about unlocking it and came across lots of folks with horrible error messages on their iphone sometimes rendering the iphone in recovery mode. No doubt unlocking is a risky business but I had to do it. I spent 2 nights figuring out the error messages I used to get while unlocking it for the first time. Finally I got it right with the following steps for 3 different updates which makes it a pretty much foolproof method. Frankly Pwnage tool is really made for a non-technical person and the errors which we get are some exceptional cases only. Again, these are the steps that have worked for me for all updates until the latest 2.2 update.

Steps for unlocking iphone 2G –:

1) Remove the SIM card. I have found this step important for later activation. Take a backup of your iphone.

2)This is a step many people might not follow but I have found doing this step avoid the 1600 error we get at the end of the process. If the iphone is never unlocked then jump to step 5, if it is, restore the iphone with a .ipsw file downloaded from apple. For ex. while updating to 2.2 my iphone was already pwned to 2.1.1 version. So I restored it to the 2.1 ipsw file I had from apple. If you do not have that file you can look on the internet for it, lots of guys have kept copies of these files. Same procedure must be applied for further updates.

3) Restoring the iphone to an earlier version as described above will take some time. TO restore, connect the iphone, once iTunes fires up. cancel any message boxes for updating the iphone to new versions. Hold Option and click Restore. I think it is Alt on Windows. This will allow you to select a .ipsw file to restore with. While restoring the iphone will restart several times, you would see the apple logo indicating we are using a valid .ipsw file from apple.

4) Once restoration is complete you would get a message of no SIM card installed which is a good sign.

5) Now exit iTunes completely and fire up Pwnage tool. Select iPhone, expert mode and click Next.

Picture 2

6) Allow the tool to search for the restore bundle you downloaded from apple. By default the .ipsw file is in Library/iTunes/iphone software updates on a Mac. I generally transfer this file to a folder on a desktop to make the process easy. I have all the earlier restore bundles in this folder.

Picture 3

7) Select the restore bundle you need, mostly you would select the latest version in this case 2.2 version. Click next. On the next screen you would see several customization options. Select General and click next.

Picture 4

8) If you have a legitimate iPhone contract with your carrier (for instance, and iPhone contract with AT&T), you will need to uncheck the box next to “Activate”

If you don't have one, like me since I am in India with a US iphone I have left it checked.

Change Root Partition size to 1000MB for updating to 2.2.

Picture 5

8) Keep clicking Next until you reach the Build screen again. In between steps include changing icons etc which can be left as it is.

Picture 6

9) Let the tool build the Custom bundle for you, have a drink till then! Store the custom restore file on your machine somewhere. This file will be used to restore the iphone.

Picture 7

10) Once complete, you would get a message asking if your iphone was pwned before. Now since we have restored the iphone in the first step with a legal .ipsw file it is not pwned anymore and hence select No. In either case, if your iphone is pwned earlier or not select No in this step, of course assuming step 1 is done. Click Yes has resulted in 1600 error for me at least.

Picture 8

11) Now are the easy steps. Follow the instructions to get the iphone in recovery mode. You can use iTunes to do this but I prefer to use Pwnage. Once you get a message saying successfully in DRU mode or something, the Pwnage tool job is done!

Picture 10

12) Now move to iTunes. Since iPhone is in recovery mode, you will get an option of clicking the Restore button on iTunes. Hold Option and click Restore to select the Custom Restore bundle just built by Pwnage tool.

13) Now its time to sit back and relax. If anything was done wrong, you would get a 1600 error message just after extracting the bundle. This error message is such a piece of s#$$ that it does no help in understanding what the problem was.

14) I am assuming here that there were no errors till now and the iphone is getting restarted several times with a pineapple logo.

15) Once everything is done, the iphone will show off its home screen. Insert SIM card now. Restore the iphone with the latest backup you took.

16) You should have an unlocked iphone with all your data as before!

I have a feeling that even Apple enjoys playing this “cat and mouse” game with the hackers out there. If you are interested in what the great “Woz” has to say about this please watch this video http://news.bbc.co.uk/1/hi/programmes/click_online/7742797.stm.

Please let me know if you are stuck with some step. Hail the iphone dev team!!

Happy unlocking!! Someone's gonna get PWNED!!


Returning to India!

“ Wherever you wander, wherever you roam 
Always remember you are missed back home ”

Its been a while I wanted to blog about my experience of coming back to my home, India. Living in US was awesome, the time I spent for my Masters, the work I did with an American firm was a lifetime experience. But India was at the back of my mind all the time. When I decided to leave US for good, I was kinda dreading my thought. It is one heck of a big decision in my life. Quite frankly, staying away from home, studying there alone, working there and managing all the day to day things certainly makes us really smarter than before. May be some of us have already had that experience here in India, but I was always in my house during my graduation. I never stayed in a hostel or anything of that kind.Every night after work I used to search for blogs about guys who have already made their move to India. These blogs, and few of my friends who returned to India before me, really helped me make my decision.

It is really a personal choice whether to stay there or come back. I do not think there is anything unpatriotic about not being in India. But there is certainly a clear difference between the lifestyles. In US you will certainly earn well, of course expense is more but still the savings are more than done here. The work culture in American firms is just awesome. I enjoyed working every day for my company in Chicago. But you miss your family at other end. Being such a rich cultural country you certainly miss the festivals every year. I especially missed Diwali, it being such a vibrant festival :). Of course no need to mention the different cuisines we have here. Food is something Indians love from the bottom of their hearts and I bet there is no single restaurant, atleast in Chicago, which can make the kind of pav bhaji the guy at the corner of the street here in my city makes. If you love spicy fast food, Mumbai is the place to be baby!

Things that are different here

Internet Connection – Man, I was so much attached to my wireless since I was on my Mac all the time. Blogging, “ Youtube”ing, checking out pubs to hangout etc was a routine for sure. I was using 6Mbps Comcast high speed internet which was awesome. But in India, it is hard to find such luxury since wireless is not that penetrated in people’s lives. I found it really difficult to not use internet as I was using before. But now I use MTNL’s package which is uncharacteristically pretty fast and not really expensive. I brought my Linksys router with me which I use here in my house. So I am cruising on the internet these days. My package allows me to use unlimited internet after midnight which kinda works for me.

Pollution – This factor is especially for those returning to Mumbai. Pollution due to traffic has soared like hell. I had sore throat for first few days. I also had a viral infection, may be due to the vada pav I had, which went on for a week. It was just irritating being on bed all the time. After living in US for a while, my resistance power had reduced like anything which actually makes us vulnerable to infections here. But how much ever we complain about infection, fever, pollution blah blah blah, Mumbai is always missed, comon be true to yourself!

Parents :) – Yup, parents. I am currently living with my parents and brother in Mumbai. Let me tell you, after living with friends and doing all kinds of “stuff” in US, it is not very easy to give away all that freedom suddenly. Imagine to stop all that frequent pubbing and playing beer pong and what not. But all this comes with a little reward too. We are pampered like little kids all day. I do not need to do laundry, no need to cook, just get what I want. Uber cool!!

Job Search – This is something everyone would be thinking first before moving to a place after a while.  To be honest, having a Masters on my resume, with some cool projects done on campus, and the work experience really boosts the chances of getting an awesome job here. May be this is obvious to everyone, but having such experience on the resume certainly makes it better than the majority, so you are in a much better position in finding a job you want here.

There are so many other things to talk about being back home. I really hope this experience of mine would help you make your decision to stay there or come back. Close yourself in your room and talk to yourself about this in front of a mirror. I am sure the only person who can solve this dilemma is the one looking at you. I am sure there will be a million people telling you what to do and what not to do. In my case people settled in US did persuade me in staying back. Finally I did what was in my mind all the time and I do not think my decision is the right decision. As I said, it is a personal choice after all!

Best of Luck!


Recommended Readings

I love reading books. I try to add a new book in my collection every 2 weeks or so. It’s just one of those things that I cannot quit until I die. The books I recommend are a mixture of technical and non technical books since I think it’s essential for a developer to be enlightened in all aspects of programming. Being a .NET guy my focus is mostly on C# and ASP.NET. The books are not in any particular order but I have loved reading each and every book in this list.I have provided ebook download links for some of them, go ahead and try downloading them.

.NET books

1) C# in a nutshell – O’reilly ( For a beginner in C#)  Download Here

2) CLR via C# – Jeffrey Richter ( For an experienced C# developer, highly recommended to gain in depth knowledge of the .NET runtime.)

3) Professional ASP.NET – Evjen, Hanselman, Rader ( A must have reference book for ASP.NET)

4) Essential ASP.NET – Fritz Onion  (Must have book for clearing concepts in ASP.NET)

5) Essential ASP.NET with examples in C# – Fritz Onion (Must have book for clearing concepts in ASP.NET)  Download Here

6) ASP.NET Ajax in Action – Gallo, Barkol, Vavilala ( Great book for beginner and experienced in ASP.NET Ajax framework)  Download Here

7) Windows Presentation Foundation Unleashed – Adam Nathan ( I think it is the bible for WPF developers)  Download Here

8) ASP.NET 2.0  Website programming – Marco Bellinaso ( Good ASP.NET book with a practical project example in the book)   Download here

General Programming books

1) Introduction to Algorithms – Thomas Cormen ( Must have book to refresh algorithm knowledge if preparing for interviews :))

2) The Algorithm Design Manual – Steven Skeina ( Good book with examples on algorithm applications)

3) Head First Design Patterns – Freeman and Freeman ( My favourite book on design patterns, fun and work approach to teach design patterns, highly recommended for beginners to intermediate)

4) Design Patterns , Elements of reusable object oriented software – Gamma, Helm, johnson, Vlissides  ( The bible for design patterns, although go through the head first book before reading this book, thats my personal experience though).

5) Code Complete – Steve McConnell ( My favourite book, a must have book for every developer on this planet!)

6) Rapid development, Taming wild software schedules – Steve McConnell ( An excellent book for good development practices)  Download Here

7) A pragmatic programmer – ( A must have book for those who wanna be better programmers)  Download Here

8) Programming Interviews exposed ( A nice book for preparing for interviews with companies like Microsoft).

9) Thinkertoys ( A nice book on creative thinking)

Some of these books have been taken from recommended reading sections of the blogs I follow.  I can assure that all of these books have been “tested OK” by many important guys in the programming world. So go ahead and read them!

Happy programming!!