One Decade of Programming

July 26, 2009 at 11:33 am | In General, Suggested Reading, funny, rant | Leave a Comment

Sometime around July 1999 was the time I wrote my first “Hello World” program. Yes, its been 10 years since I started programming, and I dont mean L R L T of Logo. In fact, I wrote some BASIC code as early as 1995-96, but I will skip that for reasons beyond the scope of this post.

I remember liking programming for lots of reasons, but one which I particularly remember. Unlike the other subjects in school, like math or physics, programming had no boundaries or a legacy to deal with. By legacy, I mean there were no equations, constraints and I didn’t have to reciprocate what some mathematician proved 400 years ago. I have always enjoyed freedom and programming gave me that freedom to express myself. I guess, I can claim that most good programmers have taken up programming because it lets them play God or be creationists of some complex entity.

Anyway, there are a lot of interesting and fun facts through these ten years and I shall pen some down.

  1. BASIC was my first programming language. PASCAL was probably my first compiled language.
  2. I wrote my first sorting routine ( an act I call, truly understanding the programming abstraction) sometime during Jan 2000.
  3. I got my first computer in 2001. AMD Athlon 1.7 GHz with 256 MB Ram and 40 Gb harddisk . “OMG 40GB” , was my friends reaction.
  4. I disliked C early on, due to my PASCAL roots, but grew fond of it later on when I completed my first large scale project ( A linux text editor, which I proudly wanted to call, “Better than VI“). This is also where I wrote my first recursive functionality which resulted in people actually wanting to read and understand my code.
  5. My first exposure to Linux and OSS was in 2002, I think it was RedHat linux 7.1 with running Xwindows.
  6. I almost lost my entire project due to a floppy malfunction. USB’s were expensive and uncommon then. CD writers expensive.
  7. I learnt about data structures in 2002. My lecturer, one of the few good ones, was kind enough to teach us the intuition behind data structures and write the implementations ourselves. Our other lecturers taught programming from a book and expected us to replicate the programs written in the book.
  8. I would like to thank my data structures lecturer who spent hours helping me debug and correct programs. It was probably the first time I looked at code from an outside perspective and yes, I realized the importance of indenting code then and there. I have never not indented my code again. (Remember we are still in 2002).
  9. I learnt about OO during christmas vacations of 2002. Loved it. Loved the paradigm shift in the way I thought about programs
  10. My first OO program was one class with 50+ methods in it (Yup, there was nothing OO about it, but its a start)
  11. My first large scale OO project was building a Paint like utility using C++. I am still proud of this work because I learnt about programming abstractions and class reponsibilities here. I still remember writing my first button class which was fully reponsible for itself.
  12. I learnt PERL in 2004 and wrote my first web application. An online messaging, calendar and collaboration utility for friends and corporates. ( yes, this was my first social app). When I saw Myspace very soon after that ( MySpace was still pretty bare in terms of features then) the only difference I saw was that other people could see who my contacts(friends) were and network with them.
  13. When I first discovered databases (2003), I thought, “wow, somebody made my file I/O’s really easy”. It was also an amazement because I had thought of a unified file writing and reading mechanism to solve all my I/O woes. Problem was getting it to work with many languages. I couldn’t get my head around it and thats when I learnt about databases. Imagine my surprise and rejoice. The first database I used was Oracle and later MySQL ( it wasn’t even relational then). My database project earned me 100/100 in my finals.
  14. Compiler Design was one of my favorite subjects. I loved the fact that I could understand how they build programming languagues. Lex Yacc was probably the best thing that ever happened to programming. Prateeksha and I wrote the specifications for a shift reduce parser for C++. We used an A1 sized sheet of paper to write down the shift reduce matrix. After two full days writing the Shift Reduce rules, we realized we had messed up somewhere.
  15. I wrote a prototype of my CASE tool in 2004. My proud entry to the world of .NET. I had my official copy of Visual Studio.NET 2003 and .NET 1.1 . This CASE tool would eventually become my fnal semester project and also enter Microsoft’s Imagine Cup. We reached the Nationals for the competition. I called it Dzine.
  16. Even though I had learnt java in 2004, I didnt use J2EE till late 2005. when I started writing simple J2EE apps. I also figured that javascript, that language I had used to validate my controls in HTML (in 2004) , had suddenly taken the world by storm. Everybody was talking about it. Web 2.0.
  17. I sat for two whole days to figure out how yahoo mail was autocompleting email addresses I typed. After two days and a whole lot of searching, I learnt about AJAX. I was already on Gmail by then and didnt really understand the underlying plumbing that was holding the application together.
  18. Within the next 4 months I put AJAX and J2EE together to work on Samparkh with Prateeksha. I wrote an online chat application using AJAX ( inspired by Meebo). Remember this was a time when firebug wasn’t around and I used a tool called Venkman, which I am sure many of you haven’t even heard of.
  19. Then, Grad school happened and so did Microsoft, and the list of wonderful projects that I did during the two years I spent there.
  20. Special mention to BigKahuna, which took almost two years to perfect and won the Google Product Engineering Competition 2009.

Am I a good programmer? I dont know. But, I will continue to remain a programmer. Most of my friends know that I dont take sides. By sides, I mean OSS v/s Closed source, Linux vs Windows , Google vs Yahoo, and this is because of the vast and varied experiences I have had with all these different entities during programming. They all have a special place in my heart and I cannot choose one over the other. Programming is changing fast, and all I can hope for is that that I dont wear out of ideas or skills to call myself a programmer in the years to come.

A list of all the wonderful projects that I have pursued over the years is available here.

Social Design and the Opaque value problem

July 3, 2007 at 3:50 pm | In Architecture - Design, Suggested Reading, Unsolved Problems, socionets | Leave a Comment

Note : I blog on my personal space at riteshnayak.com/blog . This is a mirror of the content.

I read this post by Joshua Porter about the value of social networks and the opaque value problem and it got me thinking. Why and for what do we actually use web based services.

The fact that we don’t understand what value others get from social web apps is part of the paradigm of social software. The key is that each person has their own social lives, their own social circle, and thus their own social values. What is important to their social life will almost certainly be unimportant to us because we have our own to worry about.

Think of it this way. Each person has their own social network. Chances are that social network overlaps very little with yours. If, say, that person wanted recommendations for watching a movie, they might turn to their social network, which is made up of their family, friends, and colleagues. They would ask these people, the people they know and trust, what movies they recommend.

Now, would you turn to the same social network for movie recommendations? Of course not. You trust the people you know…your social network, and so any of the chatter from their social network has no value for you. It’s meaningless chatter. Just like most people’s Tweets on Twitter. In a larger sense, this opaque value problem affects most social software. Twitter, MySpace, Facebook, most social software is built around providing personalized, socially-focused conversation. It’s person-centered and as a result is difficult for anybody but that person to really appreciate: the value becomes opaque in this way. Designing social software is going to be very difficult. The designers won’t be able to put themselves into a position of someone who wants to keep up to date with their social network, which is something that all of these sites are doing.

Social Design  by Joshua Porter  

What the excerpt from the original blog clearly states is that a person using a social software has his/her own reasons to do so. The fact that the others don’t know what value the other person sees in a social network is the entire basis behind social software. I may log into myspace to chat with my peer group, but I dont know what my friend X does in her network, so what do I do ? I snoop around their profiles and walls to get a glimpse of their world coz her value from the network is opaque to me .

The goal of social software is evolve from this paradigm to a more productive one. Efforts are on to make social software enter the productivity space and that too with good success. Based on all of these observations, how do you design for a social concept. How do we actually add value to the users ? Its not easy to please everyone, but at least if the majority is kept happy, you can be sure of winning product.

Selecting a good theme for your blog

July 3, 2007 at 3:41 pm | In Suggested Reading, Tips,Tricks and code, Web 2.0 | Leave a Comment

Note : I blog on my personal space at riteshnayak.com/blog . This is a mirror of the content.

Past couple of days, I have been trying to pick out a new theme for my blog and have made a small checklist of things needed to make the decision more simple. I had been running a really pretty theme which somehow seemed to hamper the entire readers experience, So I picked this new one. Its not just me speaking here, it was the stats that showed bounces from the very fist page. Also since the number of pages /visit also had dramatically reduced ever since I shifted to the new theme, I decided it was time for a revamp. These tips that I will list below can be applied to almost all websites with respect to its usability, accessibility , information etc.

Information : People come to your blog for information. Its very depressing if you cannot find what you came looking for. Its also more likely that if they do find what they were looking for, they will stay a little longer on your blog and may even acknowledge your effort with a nice comment. So what should you do ? make sure your content is well placed and is of good typographical quality. Avoid typewriter like fonts, they are old school. Use more rounded fonts that don’t need any anti aliasing. The position of the content is also extremely important. The content must always occupy the majority of the real estate on your blog.

Load time : Its easy to get carried away with themes that are very glossy looking and also have dynamic refreshes and complex javascript. People!! readers don’t come to your blog for your template, they come there for the information. If I have to wait for 20 seconds to get 4 lines of information , which comes enveloped in about half an MB of images and javascript, then I will be might pissed. Take a subtle theme that is posh to look at and uses as less images as possible. The other problem is that the image based themes look extremely bad if the images don’t load; most of bloggers themes have this problem that none of the images load and you are left with a very ugly looking page which does zilch to visual appeal. Selecting CSS based layouts ensures that page degrades gracefully even if your images give way.

Delivery : yes this is extremely crucial,which is why I went for a revamp. All things said, I come to your blog for content, so make sure I see it first, the widgets and other sidebar junk can come later. Its easy to get carried away with all the widget goodies available now for blogs, with those flash based embeds and scripts. But these only add to the overhead of your blogs load time. My previous theme had all the widgets on the left and the content on the right, as a result, only after all my content was loaded, my content would appear. A typical reader would have to wait for over half a minute to get a glimpse of what he actually came to read, that too, considering he had a good broadband connection. There were dependencies too- if one of those widgets were to fail , then your content would never load, which is bad. Always make sure your content is the first to load. A simple way to ensure this would be to keep the widgets and other junk on the right hand side of the content, when pages get rendered left to right, the content will appear first.

Credentials : People like to know the credentials of a blogger while reading. I definitely would trust techcrunch against TechNayak, so its that essential to establish your blogs credentials. Solutions include a map of all your readers, mybloglog widget, stats from your blog and also brief abstract of your blog and you. Most of the times, a future employer will be reading your blog, make sure you get his/her attention. A simple description about you and your blog should just about do the trick.

More reading material : If people like your writing and want to read more, give them some more material to read. In addition to your article that is already being read, make sure there are some click able links that point to more of your work. Internal links in your post could be a good starting point. Even better would be a related posts section that many blog providers offer, its more likely that people will be interested in reading more about the current subject.

Feeds and syndication : feeds are growing in popularity and people are busy bookmarking and burning your feeds into their online world. Exemplify your feed URL, make it easy to access and use. There are some themes that don’t even provide RSS urls in the main page, don’t use them. Always make your feed url stand out in the clutter.

Customize if you can : No theme is perfect , there is always something or the other that will be missing. It could be something as simple as the way your theme addresses people, instead of saying ” Leave a comment ” you may want to say ” Say a word or two ” . Make these customizations where necessary.

In the midst of all this don’t forget to have fun and blogroll. There is nothing sweeter than sharing link love.

Rules for high performance websites

July 3, 2007 at 1:51 pm | In Architecture - Design, Suggested Reading, rant | Leave a Comment

My recent interest in building scalable applications has led me to learn a lot of simple yet effective programming and deployment techniques, to scale and deliver web apps with ease. Its not rocket science to build for scalability but it certainly gets challenging when your app really scales you come across problems about your environment, unknown to you. Take for example our servers, since we host on shared environments our servers flush their memory contents every 24 hours or so. This is done to keep the discarded objects and dangling pointers from filling up the memory. But when did I figure this out, post deployment – what followed next was an analysis of all the problems that we were to face because of this new found wisdom. Truly, most of our so called cool functionality came crashing down like a hailstorm ( truth behind why Instant Messaging never got off the ground on Samparkh ). We did try to tailor the code and make it work, and it did too, but a problem like this requires a visit back to the drawing board. The next time we know better than to code with assumptions ; most of us aren’t lucky enough to know all about our deployment environments, so we make do with assumptions.

That was a lesson, no harm done, no money lost. But there are some applications that have to be delivered to be robust , scalable and always available. I found this article which highlights some rules for high performance website. I suggest you visit this site and read about these rules, its worth it .

Job rotation in IT

June 6, 2007 at 12:00 pm | In Suggested Reading, rant | Leave a Comment

Note : I blog on my personal space at riteshnayak.com/blog . This is a mirror of the content.

Thanks to Nishant from office, I got this great article from Forrester Research about job rotation in the IT industry and why it makes sense. I don’t really know If can put these things up on my blog, but I shall do it anyway ( apologies Forrester, its for the betterment of mankind) .

I am a firm believer of job rotation in companies. Its just human nature that people tend to get bored of their jobs after a while and they need some change. My parents tell me Im too demanding and that jobs aren’t meant to be that way, but I tell them they are a generation old. Our generation is a bunch of knowledge hungry folks who cannot watch a television channel for 5 minutes straight. Good or bad, we have been nurtured in an environment where we have a choice in everything, right from our breakfast cereal to our television channels, we take pride in the right to choose. Add to the fact that our quality of jobs aren’t really that great which only enhances our boredom at work.

My friend Hardev, while working at GE, told me about their intern program and how it was spaced out over a period of 2 years or so. The program essentially exposed to various types of jobs , right from technology to marketing and after two years or so, let you decide what you wanted to. The program in itself was nice because it gave you the opportunity to get a first hand look at what and how you do the various roles that you see everyday and also let you decide based on your experience where you would fit best. Although many companies cannot afford to encourage such programmes, I think steps towards such an effort will only help build confidence, increase employee loyalty and increase productivity.

Forget freshers, even experienced people need a change sometimes. Its an understood fact that once your learning stops, your interest and motivation levels drops exponentially. With our job quality being so low, how do you expect an employee to stay interested in his/her job for endless years. Job rotation only makes the job more challenging, more interesting and also has many other positives to it. I shall stop here and let you read the pdf.

Click here to read the ” It Job rotation ” PDF

Implications of OpenId

June 6, 2007 at 11:58 am | In Suggested Reading, Web 2.0 | Leave a Comment

OpenId is becoming bigger and more widely accepted as a worthwhile solution for the multiple account -multiple signon mess. Many services are accepting OpenId authentication for their sites. Even popular portals like Digg have moved in support of OpenId. I found thi great presentation by Simon Willison on Implications of OpenId which I think should be mentioned in this blog. Thanks Simon for the great presentation.

Javascript Frameworks – the complete which, what and why

June 6, 2007 at 11:45 am | In Suggested Reading, Tips,Tricks and code, Web 2.0 | Leave a Comment

For years people have been asking me a ton of questions about Javascript libraries – whats that ? why should I use one ? Do you think Im a fool ? Which library do I use , if I have to ..yada yada yada. Well I was more than happy to find the ultimatum in the subject. One of the best introductions to javascript frameworks with all the necessary indications about what to use and how. Thanks to Simon Willison and his presentation.

Click here to view the slideshow.

If you really want to use these libraries, then I suggest Dojo and YUI, both are well documented and have really cool features. You can find the Dojo Documentation here and YUI docs here.

Is universal search the right answer ?

June 6, 2007 at 11:40 am | In Suggested Reading, Unsolved Problems, rant | Leave a Comment

Google unveiled their universal search page for their search results, basically a page where you get more than just web pages, you get blogs, pics and videos even. But this is my question – is the concept of universal search even possible ?

Penetration of user generated data into spaces like technology and entertainment have been exponential. Every person who wants information on code and solutions looks up forums and blogs but there are certain niches which are still firmly controlled by the creators like astro physics and rocket science ( pun) . Now when we have such a divide how can we make sure that universal search is actually delivering to its full potential. The primary criteria I guess is to put the search query in its proper classified subset. By this I mean, if I search for a topic that has more material in a blog than a wiki or a full blown site, then how will the algorithm know its relevance. Ranking clearly fails in these conditions and its pretty evident.

The second biggest problem is of course, the real estate. What I may be looking for may not turn up in the first search result and with most of my observation people don’t like shifting pages to more results, they decide to change the query instead. In that minimal screen how will you fit in the right contents based on the rank, relevance, semantics and many other jargons that even I, haven’t heard of. One thing clear though is you need to mine.

Mine data from the users, their previous search results, probably from the one place where they have disclosed something about their life, their interests, hobbies etc – Social Networks. Even the real estate management should change , there should be a new scheme of viewing results for a query, probably a tag based scheme that can subdivide the query into many groups and subsets of relevance and then refine it on top of the tags. It requires a change, in peoples usage, which is a dreaded de-motivator , but tags started the same way and its doing pretty alright in sites like flickr and del.icio.us.

The concept and implementation of web search is still unexplored and untapped. There are a wealth of things that can be done and I have mentioned a couple above. Semantic web could solve some major problems, but its still a long way away and more time means more space for innovation.

in10 my latest foray

June 6, 2007 at 11:39 am | In Suggested Reading | Leave a Comment

For long I have been amused about the concept of the most simple to use libraries, services and code that can be used to our advantage. Some are so simple that it takes less than a couple of minutes to actually get a result that would have probably taken days to achieve. Since I was coming across such useful pieces of technology, I thought why not write an exclusive blog for these under 10 technologies. And so in10 is born .

Url : http://in10.wordpress.com
Feed : http://in10.wordpress.com/feed

Silverlight – Expectations and more

June 6, 2007 at 11:37 am | In Suggested Reading, Web 2.0 | Leave a Comment

I read some wonderful articles about possibilities with Silverlight and trust me they are tremendous. The CLR integration, the browser independent mode, the seamless brilliance in video delivery and also easy to build tools will probably make silverlight a leader in its own right. I shall not blabber anymore and quote from some other articles .

The video handling capabilities of SilverLight are impressive. During MIX, there were several demos showing multiple video streams being shown in one application, many of which were in motion and had various types of masks. The demos looked great at MIX, but what surprised me most is that they looked just as good on my 3 year old desktop at home and the applications were surprisingly easy to build. This is one area where SilverLight is definitely going to be the top dog.

The other great feature about SilverLight is the CLR integration. The in-browser CLR extension allows access to almost the entire .NET framework, from a client side app. It also uses XAML, the same presentation markup as WPF for the desktop. It’s nice because Microsoft isn’t trying to force developers into a new language. It’s also nice because it makes for a much more robust development experience than working with AJAX or even Flash.

Ian Muir – SitePoint Blogs

My personal opinion is that Silverlight is great and that Microsoft have done very well to bring .NET to the browser (almost all browsers). What will be interesting to follow will be designer adoption of Expression Studio (as Adobe is heavily entrenched here) and then consumer adoption of Silverlight. There is no doubt that it will take time for Silverlight to hit the browsers and it is up against Flash which is deeply entrenched – but the barrier to delivering a new plugin to browsers is nowhere near as high as most users will trust Microsoft as the publisher of the plugin and will install it. I also expect that Silverlight will get distribution through Windows Update and Microsoft’s own applications (hotmail?).

Nik from TechCrunch

I’m glad we waited to write. Nik (a long-time developer) was most impressed by how small Silverlight is (4 MB) and how fast it is (it blows away native Javascript routines – without exaggeration, Ajax looks like a bicycle next to a Ferrari when compared to Silverlight).

The news today about Silverlight is significantly more thoughtful. Microsoft-hater Steve Gillmor gives it a thumbs up and says “the engineering behind this is stunning.” Robert Scoble, who’s angry at Microsoft for not giving him a free pass to the Mix event, says “Microsoft “rebooted the Web” yesterday.” The list goes on

Mike Arrington – TechCrunch

what more could I possibly say. Yes , I did write about Silverlight before MIX, thats something I guess.

Next Page »

Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.