Total Pageviews

Showing posts with label Computers. Show all posts
Showing posts with label Computers. Show all posts

Thursday, July 19, 2012

TCS CodeVita : A quarter million pageviews later ...


TCS CodeVita Pageviews
10 days and a quarter million+ pageviews later, its time for analysis. Firstly, I think its a decent start for an initiative, open only to Batch of 2013 of engineering or equivalent graduates. The updated web page says the contest is open for only TCS accredited colleges. Assuming that approximately 4 Lakh students graduate every year and given TCS' track record of recruiting 30K-40K candidates for the past few years, I would assume that the target audience for this contest is approximately 2 Lakh students. The event is a team event where each team is comprised of 3 people. Given that there are approximately 6K teams, CodeVita seems to have attracted participation from as many as 18K students. Not bad, I would say. The registration deadlines have been extended to 31st July, 2012. Its very possible that CodeVita breaches the 5-figure mark. That's a huge number and I have not heard of any competition of that scale. It will be interesting to see how TCS manages to pull off things at such scale.

For the uninitiated, a coding platform usually comprises of an engine which compiles the user submitted code and runs a battery of test cases against it before it can figure out if the submission is to be accepted or rejected. To isolate users from each other, there is usually some sand-boxing that the engine does. All these activities - compilation, execution, sand-boxing etc. are resource intensive. Depending upon level of difficulty, its fair to assume that in a 6 hour window a team would submit at least 10 solutions. That will be 10 * 10K submissions for the engine to handle spread over a 24-hour window. That's roughly 1 submission / sec. To compile and execute 1 submission in 1 sec is a pretty stiff challenge. Moreover, the submitted code is written by the participant. It is very likely that these submissions would run longer. The longer a submission sits inside the sand-box, the more challenging it will keep getting for the engine to manage a rapid rate of submission. Will be interesting to see how its all managed.

Next, let me talk about region wise participation statistics. CodeVita website shows participation from each state. I have access to Google Analytics traffic report for this website. The next set of observations is based on data from these two sources and some correlation between them.

  1. Bangalore and Chennai have nearly the same number of page views, but Tamil Nadu is far ahead of Karnataka in number of teams registered. What it probably means is that rest of the Tamil Nadu has done much better than rest of Karnataka.
  2. Top 5 cities showing interest in CodeVita are Bangalore, Chennai, Kolkata, New Delhi and Pune while Top 5 states which have generated interest are Tamil Nadu, Andhra Pradesh, Maharashtra, Karnataka and West Bengal.  Hyderabad is sixth on the list. Not surprisingly, the states' growth is driven by their educational capitals.
  3. That brings attention to Mumbai. Mumbai is a lowly 12th of list of cities showing interest. Excluding Navi Mumbai, Mumbai has about 25 engineering colleges in TCS' accredited list. We don't know the college-wise break down of registrations yet, but low traffic from Mumbai is a strong indicator of Mumbai's poor participation. I strongly suspect Mumbai's participation will be a tiny fraction of Maharashtra's participation. Given that TCS is head-quartered in Mumbai, this is significant. Wake up, Mumbai, you sleeping beauty ....
  4. We see traffic coming from approximately 80 Indian cities. Would be fair to assume that each of those cities have on an average 3 engineering colleges. That suggests that we could see participation from approximately 250 colleges. In all likelihood, this could be the largest assembly for event of any kind where these many colleges have come together on the same stage.
  5. 66% of the traffic is direct traffic i.e people have reached the site by typing the web site URL. 25% traffic is search traffic. 9% is referral traffic. Facebook has largest share in referral traffic. What this also means is that traditional means of advertising the event has been the pre-dominant form of advertising the event. 
  6. Average time spent on the site is 15 min per user session. Not bad, considering that its only a registration site. This translates to 4500 eyeball-hours. (18000 users * 15 min)
  7. Average page load time is a whopping 10 seconds. But this also includes photo uploads by registered candidates. Besides it also depends on end-user bandwidth. Many who accessed the site would also be first-time users. Their browser caches may also not be primed. Hence difficult to say whether the site is slow or not. My personal experience has been that the site loads in sub-seconds, because I have browsed it many many times.
  8. 46% of the traffic is from Chrome, followed by 39% from Firefox and 11% from IE. In TCS (AFAIK), we don't use much of Chrome, so I doubt the development team was geared for this.
  9. 95% traffic is from Windows machines, 3 % from Linux and 2% from mobile devices and corresponding OSes.
  10. Web searches return hundreds of pages for "TCS CodeVita". Almost nil online presence for CodeVita on Twitter. 
Adios, Fellas. Will keep following and posting this event. If you like the idea of pan-India inter-collegiate coding competitions, please get the word out. Drive that budding geek you know to take part in the competition.

Disclaimer:- The author works at TCS. This blog is NOT an official source of information about TCS CodeVita. Since the author is a passionate programmer and the source of action is so near to him, it is but natural for the author to talk about it. Is that not why people blog?

Monday, July 9, 2012

An upcoming sport - Coding Competition

India has never made it big in renowned inter-collegiate programming competitions like ACM ICPC or IEEE -IEEEXtreme. The 2011 ICPC and IEEEXtreme competitions had first Indian teams ranked at 42 and 105 respectively. Not to take away anything from the teams, but this is hardly anything to be proud of from a country which produces approximately 4 Lakh (1 Lakh = 100K) engineers annually. In fact, if we consider the fact that IT industry has been the darling of the Indian economy for a past decade, the results are downright poor. For a country having dearth of technical talent and good English speaking skills these results are just not good enough.

The reason is obvious, there are not enough domestic "tournaments" which these colleges can take part in and hone their skills before bursting on the international skills, whereas their international peers have already solved dozens and dozens of programming problems "just for fun". These countries  / universities take pride in organizing such events. Participants receive vociferous support from peers and well-wishers and Coding Competitions are nothing short of an admired sport. We in India are far far behind on this aspect.

This article is inspired by the fact that India's largest IT company - Tata Consultancy Services (TCS) is conducting a pan-India coding contest that is expected to attract thousands of teams from hundreds of colleges. The pleasure of being able to participate in such events is a reward in itself, but from what I have heard and read on the net, the prizes for winners are attractive too. Prizes include iPad 2 WiFi, 16 GB, Smart Phone, Kindle, Digital Photo Frames, IEEE membership etc. How I wish the clock winds back by a decade where I as a collegian could have a shot at these prizes :(

The name of this competition is CodeVita and requires students to register in order to participate in the event. The registration URL is http://tcscodevita.com and it seems that the student community is responding well to this opportunity. The schedule as advertised on the site is as below.

TCS CodeVita Schedule (Source: http://tcscodevita.com)

Registrations opened at 3 PM IST on 9th July 2012. The site is not yet indexed by Google or other search engines which could make this post a very useful one :). Considering that the site is so fresh that Google has not yet indexed it, it is heartening to know that registration count has already reached 3 figures within a few hours of opening.
Screenshot of the registration site
Spread the word out. Let eligible college students know that honour, glory and oh yes, the prizes await them. I for one will be interested to see how it pans out. Will you be interested?





Disclaimer:- The author works at TCS. This blog is NOT an official source of information about CodeVita. Since the author is a passionate programmer and the source of action is so near to him, it is but natural for the author to talk about it. Is that not why people blog?

Tuesday, November 22, 2011

Computing learning styles of the past decade


A decade in computer industry is a long time. Many things relevant a decade ago are obsolete today. So comparing what I studied, with what today’s collegians study, is meaningless. However, what is comparable is the method of learning computing.  I have had the good fortune of meeting lot of people of all ages in the field of computing (read computer science, IT, software, hardware etc) and I have had something to learn from many of them. From those interactions, I noticed how various individuals had similar or dissimilar computing habits than mine. After giving some thought to it, it was easy to correlate the habits to the era in which they learned computing. Once I could understand their habits, I could predict or at least anticipate their next action with fairly good success ratio. This proved useful in building good professional relations at work.

In this post, I am going to make observations about changes in computing technology and how it has affected learning styles of people. I want to keep it short and simple, so I am going to exempt the times preceding the era in which I learned (studied) computing. Since that’s approximately the year 2000, this post is going to contain comments relevant between then and now (2011).

So let’s start the comparison

Factors
Parameters
Then (around year 2000)
Now (2011)
Economic
Affordability
A PC used to cost 10x to 15x monthly saving of a middle class Indian family
Typically, costs less than 3x monthly savings of a middle class Indian family
Availability
At least a month of wait time
Immediate availability. At worst, next day delivery
Maintainability
People used to opt for maintenance plans
Hardly anyone opts for maintenance plans in PC segments, but expect 100% reliability
Social
Status
Considered luxury
Considered necessity
Primary consumers
Kids for gaming and students and professionals for institutional work
All kinds of people for plenty of different kinds of usages
Wow factor
Tremendous
Almost zero
Special attractions
Internet
Broadband, VOIP
Technology
Computer sizes
233 MHz processor, 64 MB RAM, 1.2 GB HDD, 56 Kbps modems
3 GHz processor, 2 GB RAM, 1 TB HDD, 2 Mbps broadband connections
Operating Systems
DOS or Windows 3.1 / 95 / 98
Windows 7 / Linux / Mac
Typical applications
Documents, Spreadsheets
Browser-based

So it’s fair to say that a decade ago computing resources were scarce and had to be hard-earned whereas acquiring computing resources is easy pickings today. It’s basic human psychology that hard-earned resources tend to get valued more than the ones acquired without much hard work. Naturally then, the returns that one gets on it, is proportional to the value that one places on it. In the next table let’s substantiate the efforts part of the equation.

Factors
Parameters
Then (around year 2000)
Now (2011)
Pedagogical
Knowledge Acquisition
Students used to refer tens of books and compare and contrast literature within. Computer books were costly, hence people used to subscribe to libraries and photocopy parts of books they wanted to refer
Mumbai university has “text-books” for computer science engineering courses (what a pity). I seriously doubt if such a system can produce students who can objectively evaluate merits and demerits of comp sci concepts
Technology-enabled knowledge acquisition
There were no Google, Wikipedia or blog sites to learn from other people’s experiences
Everything is available at click of a button. Absolutely zero efforts in acquiring knowledge resources
Knowledge retention and reproduction
Students used to do projects which reflected the concepts one had studied. Some of the projects that me and my friends did in our college days were
·         MathCAD library
·         Multi-tasking in DOS
·         Chess programming
·         Code beautifiers
·         C to Basic conversion etc.
Today’s projects are much application oriented and very few systems oriented projects are original work for e.g.
·         Hotel management system
·         Railway reservation system
·         Compressing JPEG images etc.

The Outcome
As a result of the hard-work, time and money spent in learning the science of computing, a student graduating from engineering college, a decade ago, would be brimming with confidence and eager to apply his theoretical knowledge in solving the real world problems. Also, because of his deeper understanding he is well-versed with the concepts and can objectively evaluate merits and demerits of a computing solution.

On the other hand, because of his focus on applications, an engineer who graduates in today’s era is more adept at aspects like Usability and domain-specific things. However, when such an engineer is scratched beneath the surface one sees poor fundamentals and lower levels of confidence. This corroborates with my observation that instead of knowing what he can offer to the world, he is in search of doing a course on the next in-thing like a new language or a new technology. So now, after graduating, he is thinking of spending money instead of earning money, to stay relevant

If I come across as saying - Cooking one's own food is better than eating cooked food - then let me be more explicit here. I am just saying that the value of the food is directly proportional to the hunger one has. Staying hungry is the key here.

My Verdict
According to me, various socio-economic and technological factors have severely impacted the learning approaches towards computing science.  The seriousness and the formality required in studying the subject is quickly getting lost in a world which needs direct applications and / or commercialization.  In the process, it has actually widened the skills gap instead of closing it. As a consequence, we have more people who can use a finished product and less people who can actually build a good product and that’s dangerous in the long run.

By way of analogy, I say, engineering a car and driving a car are two different aspects of the same car. Both are important in its own rights, but I am strongly biased that students who study computing science should engineer the cars and leave the driving to others who have not formally studied the subject.



DISCLAIMER: - These are vast generalizations based on personal observations and exceptions exist.

Thursday, October 27, 2011

Cabling for WiFi - No kidding



Cabling for WiFi - sounds much like - Dress-up to get naked, an oxymoron, but effective. If you think I am crazy, let me tell you the whole story and then you decide.

I have two WiFi-enabled network devices, a broadband connection and about half  a dozen consumer devices like computers and cell phones.My network devices were an ADSL 2 WiFi modem and a D-Link router, each with 4-port connectivity. I live in Mumbai in a 3-BHK and have at least 3 very active internet users at home. The point -- I needed my WiFi setup such that each one of us could comfortably (and reliably) access the internet from their preferred location. Needless to say the 3-bedrooms and the hall HAD to have WiFi available at all times.

I tried different combinations regarding the positions of the modem and the router, but no matter where I placed the devices, the yield just wouldn't cover the entire area. For the first and probably the only time in my life I wished the house had been a little smaller. Buying a 3rd device was not an option because even with 2 devices the connection was not very reliable because of the walls, doors and other structural factors. These constraints were something over which I had totally no control. I was convinced the 3rd device would not help. Besides, I was told by my ISP, who also is my telecom provider, that the more I parallelize the incoming line (voice + data) by using sockets in different rooms, the weaker the signal will get. This will not only affect  internet connections but also telephone conversations. Also, I was told there was no way to boost this signal. So having different devices for different locations was straight-away ruled out. Besides, even if this would have worked, it would be 3 different networks. This would just make the device-to-device communication more tedious. Am no network expert, so I ruled out the geeky options of bridging all the network devices so that  all (at least 4) computers come in the same network.

Forced to stick to 2 devices with an overwhelming urge for simplicity, I decided to live with the problem for some time only to encounter another set of funny situations. These other situations were

  1. We had to cluster in one location, if the other location was occupied or was distracting enough (like TV)
  2. With 3 of us clustering into one room and one port being occupied to connect to the other device, each one had to be content with a quota of of one network port each. So I could either chat on my cell phone or check emails on my laptop. The desktop would often starve for any kind of connectivity.
  3. Finally, since the modem was in my room I could never close its door, since it would break the connectivity at the other end. An extreme variant of this used to happen when I would want to sleep and somebody would need to work through the night.

After a few sleepless nights, I thought of cabling up right to the other end of the house so that the modem and the router would be connected by Ethernet cable instead of being connected wirelessly like they were now. I thought it was a pretty smart move since all connectivity problems could get resolved without having to deal with the funny situations mentioned above.  When I proposed it at home, it was shot down by a huge margin and I was given a sound lecture on aesthetics since the cable would "annihilate" any sense of beauty that the walls may possess.

Not the one to give up easily and being convinced about the merit of my solution, I started thinking about how to find a golden mean that would satisfy both the parties. One night, while lying on my bed, it just struck me that somehow if I can get the Cat 5 Ethernet cable pass through the same ducts as electricity wires in the house then I could possibly get my solution implemented without others objecting. Voila, that sounded like a plan and the next thing I was doing was - talking to my electrician.

When I ran my idea through him, he said he had never wired an ethernet cable, nor had he done any concealed cabling from one end to the other in an occupied house. Doing it for electricity wires when the house is unoccupied is routine for him but not for ethernet cables; not simply because the cables are thicker than wires but also the layout for an under-construction house is known, but for an occupied house it is next to impossible if the layout is not known.

I appreciated his set of problems and the next thing we were doing is looking for the electricity duct layouts in the housing agreement and talking to the developer of the real estate. After getting a rough idea we did a small PoC (Proof of Concept). We tried laying an Ethernet cable from the electricity switch behind my computer table to the main electricity board of my room. Laying the cable through the duct itself is such a skilled task that its worth writing a separate blog on that. Long story short - the electrician was successful in getting the Cat 5 laid. This boosted his as well as my confidence.

Now the problem was how do we estimate the length of the wire that we will need to lay from one end of the house to another. Also what is the guarantee that being able to lay it for shorter distance would also mean that longer distances were possible? We didn't know the answer to either but we had to try. So we approached the cable-wallah and asked him for the longest cable that he had for which we would pay based on the actual usage. Initially, he was reluctant, but then I painted a rosy picture for for him. I explained to him, what we were doing and that if my PoC was successful more people in the locality were likely to buy cables from him. Fully aware of the WiFi issues he readily agreed and got us a 47 meter long Cat 5 cable.   

After consuming 32 meters of cable and 4 hours of 2-man laying team (excluding me), the Cat 5 cable popped out from the electricity board at the other end of the house. The cable was entirely concealed and I promptly configured the modem and the router at either ends and tested the connectivity from every corner of the house. Every corner of the house was covered for just Rs 1650/- of which Rs 800 was the cable cost. It was a perfect Diwali gift I gave myself !!!

Looking back, I feel every experience counts. Had it not been for those funny situations I would have never thought about simple solution of cabling and am so thankful to my folks at home that they raised the right objection at the right time and saved the walls from looking ugly. Had it not been for the electrician who toiled and the cable-wallah who relented, a reliable WiFi at all places would have just been an item in my wishlist and never a reality. Being practical has its own benefits.

Well then, if you have the same problems as me, would you cable-up for a WiFi?