Thursday, January 6, 2011

an ACM experience



..and finally we disembarked at Kanpur.
Competing at the world's most prestigious programming event (even at the regional level :P ) looked just like a dream earlier but not any more. On 11th of December 2010, we were on our way to IIT Kanpur for competing with some of the best coders of this country. We were (Team name: Elites) amongst the top 50 teams of Northern India who were invited to participate at the ACM regional level after qualifying the prelims, which was held earlier amongst more than 200 teams.

On reaching the campus we were greeted with two goody bags. One was from ACM itself and the second came from Directi, the official sponsers of the event. Goody bags were loaded with some really good stuff ranging from T-shirts, diaries to pens and badges. Great hospitality, awesome management and top-class environment at IIT Kanpur were the things they can really boast about.

On 12th December the teams competed for five hours. There were ten problems given. By the end, we managed to solve three problems (and managed to win three pen drives !!! :P ). The team from Indonesia (Dongskar Pedongi) came first solving eight questions whereas team from IIIT Hyderabad (Any Dream) came second solving seven probelms. The team from Hyderabad included Yash Kumar and Nadeem Moidu, who held the second and fifth position in the AOL CodeDash competition too.

But the team that made it to Egypt (for world finals) was from IIT Kanpur (Deep thought). I would like to further elaborate details about the team members. The team consisted of three members:

Raziman TV, who is a blogger and you can visit his blog "Mistranslated" here. He has won many such events both at the regional and the world level. The entire achievements list of Raziman can be seen here. Now possibly he has one more achievement of ACM to brag about!! :D

Shitikanth was the second member. He topped the IIT-JEE 2008 examination (AIR-1). He is a regular codechef member too.

Utkarsh Lath is also a codechef member and much higher placed than his colleague Shitikanth.
With such great coders IIT Kanpur really deserved to win the world finals berth.

Later in the prize distribution ceremony, I was pleased to see my friend Rahul Gulati (Team name: HyperHexagon) secure the tenth place. We (with Prateek Gupta and Ankit Jain as my team-mates) were amongst the honourable mentioned ones as we managed to solve more than one question. With more than half a dozen of certis we bid IIT Kanpur adieu.

Summing up the entire event.. it was really an amazing ACM experience.. :)

* * * * *

Sunday, September 26, 2010

My Stackoverflow Badge


Stack Overflow profile for vaibhav



This is my Stackoverflow badge. Stackoverflow, as most of you would be knowing, is a website part of the Stack Exchange Network featuring questions and answers on a wide range of topics in computer programming.
I have earned these many points asking questions and posting some quality answers on topics ranging from c/c++ programming, asp. net, Eclipse and Android.

* * * * *

Tuesday, September 7, 2010

My Project Euler Badge

Above is my Project Euler Badge. It shows my username and the number of questions I have solved. It keeps on changing dynamically.

* * * * *

Saturday, August 21, 2010

Getting started with Linux File System

via my friend Prateek Gupta ...

For those of you coming from windows background, the way the linux filesystem is laid out may seem confusing at first glance…. but that is where this article comes in !

The first thing you should know when working with linux, is that everything is treated as either a file or directory. Yep thats right, even hardware is considered a file by linux, and, speaking of hardware… all your hardware devices are located in the /dev directory, but more on that... later.

Another thing that confuses windows users, is the fact that linux dosen’t use drive letters to distinguish between different partitions and devices. that is to say in linux, the “root” of your filesystem is / whereas in windows it would most probably be C:\ . Drives in linux are “mounted” to directories where their data can then be accessed, so for instance, if you needed to use your thumbdrive, you would plug it into your computer, and then mount it using the “mount” command, which specifies the path to the device ( something like /dev/sdb or /dev/sdc ) and the directory to mount it to (usually /mnt or /media), then you can happily access your drive from the /mnt or /media folder.

Sounds strange right? well yes it does if you come from a windows environment, where the entire operating system is consolidated onto a single drive. However, with linux and the ability to mount devices as directories, it gives the end user much greater flexibility in splitting up their operating system over several drives or partitions.

To understand what I mean when I say that this approach in mounting drives grants flexibility, I must first explain the different folders in linux and what they store / this is the root folder, all other folders come under root.. think of it as C:\ in a Windows context.

/bin this folder contains all the user-essential binaries (programs) that are needed to administer and run your linux system… delete this folder and your system is broken.

/boot as the name suggests, this folder contains configuration files and other necessary files that are needed by the bootloader

/dev this folder contains device files (remember, these files represent physical devices, so be careful when working with them)

/etc this folder contains all the configuration files used by the system, you can also start and stop services (daemons ) from here

/home this folder contains the home folders of all the normal (non – root ) users on the system .. think of it as my documents in windows

/lib this folder contains software libraries

/media this is a mount point for removable devices… this is where you would usually mount your thumbdrives … etc

/mnt this is a temporary mount point

/opt this folder contains add on software (extra software)

/sbin this folder contains binaries that can only be run as the root user (”superuser”)

/tmp this folder contains temporary files that are erased upon reboot

/usr this folder and its subfolders contains user installed programs and utilities and libraries

/var this folder contains files that change alot (”Variable files”)

/root this folder contians the root user’s files

/proc this is a psuedo folder, that contains information about the linux kernel and hardware that is updated in realtime.

Now back to how mounting grants flexibility…

You see, how the different folders all contain parts of the operating system? Well we can actually mount a seperate hard drive for each of this folders. for example, your /home folder can be put on another harddrive than your / which means that you can easily recover your personal files if the harddrive on / fails because the harddrive mounted to your /home folder is seperate from the one that is mounted to your /

So there you have it, you now know a lttle bit more about the nuts and bolts of linux based operating systems.

* * * * *

Sunday, July 25, 2010

My Android Applications

During the summer internship I learned about interesting and innovative work of Android Application Development. I have already posted about getting started with it and some important links in my earlier posts. In this post I m going to discuss some of the applications I built.

Info Displayer:

Info displayer is a simple and light application. No doubt, it was my first app :). The application fetches some important information about your Android Device, such as, the device number, the hardware, the Manufacturer, Product, Model, Time etc. The application used "build" library and its functions to fetch the information.


Webber:

Webber claims to be the world's simplest browser. It just has a text box to write a URL and the view below it, which fetches the web-page. It doesn't allow the default browser to hinder its working. I used an EditText and a WebView to present this app. Other stuff was just a cake walk.



Sleek Feed:

Sleek Feed is an application that displays the feeds of the saved URL. The application parses the XML file, and gets the titles of the latest feeds and displays it onto the screen. The URL is feeded by the user himself through the admin panel. The main feature of the application is the fact that it saves the previous URL feeded in the admin panel.
To view its complete working see the video here on youtube.



One thing I learned while building these apps that "it's not knowledge, but it's innovation, that matters a lot while completing an entire project."

* * * * *

Thursday, July 15, 2010

Some useful links for building Android Apps

Working on Android Application Development I came across some very useful links that every Android App Developer must follow. Here is my "Delicious.com" account, you can look for all the bookmarks I have saved.
In this post I am recommending some of the important Android forums and websites. By this time you must obviously be familiar with the official Android Developer Website where you can find the entire documentation of the project. Do add yourself to the Android Google Group for asking all your queries. For hosting your applications access its Official Marketplace.
Besides these regular sites which everyone accesses, I m here to share some more websites that can help novice get started and go on further with the Android App development.

(Click the titles for opening the pages)..

Here's Lars Vogel with his tutorial for getting started with Android App Development. Besides getting started, it also teaches to build a hello world app, demonstrates how to build menus and work with preferences, a nice content provider example and how to make a file browser. At last it demonstrates how to deploy your app onto a real device.

This is one of my best recommendations. Some very nice demo projects are hosted on the site. Studying Motto Twitter project can help understand the concepts in depth. Certain API's have also been explained in the tutorials. The use of bluetooth and camera may become very clear refering to their API tutorials.

Nice tutorials by Nithin Warreir. The blog contains some code snippets that help during development of big projects. One can learn implementation of various tools of Android development easily here. I have even added the admin to my gmail contacts and regularly ask him to review my applications.

Anddev forum is pretty famous for having a large number of online users everytime. For any query you can easily post a question in this forum. Wait for the help that comes in just a few minutes. One can also use the android tag of Stackoverflow, but mind you, it's lame..!! Too slow responses and you'll end answering your own question later which doesn't contribute to the repo at all.. :P

Besides the Official Marketplace, this is another marketplace that hosts developer's applications. For registering as developer in the official marketplace, one needs to pay $25, here lies the advantage of joining SlideMe, it is free..!!
Register yourself and deploy all your apps. The apps may be free or paid. The paid apps can only be downloaded from Android Phone through SlideMe market app. The website asks for copies of your project's ".apk" file and forms an inventory and on downloads you need to generate an invoice to redeem the money. Here is link for viewing my apps.

Happy developing ;)

* * * * *

Wednesday, June 2, 2010

Getting started on Android Application Development


Working as an intern at webkul, I set up Android on my PC. Here's the entire documentation I submitted.

Simple Steps for getting started with the Android Application Development on Windows:

Step-1: Downloads

Step-2: Configure Ellipse

  • Start Eclipse
  • Goto to Help->Install New Software.
  • Hit Add.
  • For the name, type “Android” and set the link to “https://dl-ssl.google.com/android/eclipse/” (if this doesn’t work, try it with http:// instead of https://).
  • Click OK.

Step-3: Add ADT (Android Development Tools)

Step-4: Configure Android SDK

  • Start SDK Setup.exe.
  • Install all the packages needed.
  • SDK Manager installs the tools.

Step-5: Set up Android Virtual Device

  • Click on Virtual Devices in SDK Manager.
  • It creates an Android device that will test run the programs.
  • In the name field: “any name”
  • In target field: “Android 2.2 – API Level 8”
  • Select Size as 20.
  • Hit create.
  • Select AVD from list
  • Hit Start

Step-6: Configure Eclipse again

  • Open Eclipse
  • Goto Window->Preferences
  • Select the Android tab.
  • Browse to the location of your Android SDK
  • Hit Apply.
  • Hit OK.

Step-7: Create a new Project

  • Goto File->New->Projects
  • Select Android Projects.
  • Fill the required fields.
  • Hit Finish
  • Start Coding.

Step-8: Run Your Program

  • Press F11.
  • Hit Save.
* * * * *