Sunday, September 26, 2010

Hone your algorithmic and programming skills

Efficient and clever programming is one quality which every to-be IT professional should possess. Most people misunderstand programming as 'knowing full syntax and semantics set of your favourite programming language(s)'. Programming languages are mere tools to implement your algorithms. The real power lies in devising the algorithm to solve real world problems and this ability needs a solid foundation of mathematics and aptitude. Converting your algorithm into a program in any programming language is the last step.
Most students who learn how to find factorial, fibonacci sequence, palindrome etc. start thinking themselves as great programmers. If you are such a student, you are on a wrong track. I was also one among the same, when I was in 2nd Semester of B.Tech, way back in 2007. Until and unless you train yourself to program for real world problem situations, your programming capabilities are for nothing.
If you want to bear that special quality, then you should hone your programming skills. Just like everything we have on internet, there is a service dedicated to this thing too, on the internet. It is called SPOJ that stands for SPhere Online Judge. The address is http://spoj.pl . Register there. Once you login, you can click "Problems" in the left pane to see a list of programming problems. Click anyone in the list. Read the problem and try to solve. If you are a first timer, pay attention to their input and output constraints and example. Since your program will be evaluated by a computer, not a human being, you need to accept inputs and present output in the way defined in the problem. You can see the example input and output set t understand the issue. Once you solve and test on your computer, you should upload and check whether it gets accepted. Most beginners have problems following the input and output constraints. Once you get used to, SPOJ is very addictive if you are a guy serious about sharpening your skills.
The problems are generally tough mathematical issues. You need to think with open and calm mind to arrive at a solution. If you are a B.E./B.Tech CS/IT guy I would really like to encourage you to continue this as a hobby through out the course. At the end you will be an outstanding guy in your group.
And, if you wish to earn some cash then go to http://codechef.com and participate in their competitions. There are cash prizes for the winners.

Friday, September 17, 2010

Solution to Android's Ad-Hoc WiFi issue

I own a Sony Ericsson XPERIA X10 Mini(Also known as E10i). It runs Android OS 1.6 Donut. Android doesn't let you connect your phone to an ad-hoc(i.e. computer to computer) WiFi network for browsing internet. Only infrastructure networks are supported. So, if you have a wired internet connection in your laptop or desktop PC, you can't share that to your Android phone through WiFi. You need to purchase a WiFi router/access point to do so. But now, you can do that at absolutely no cost!!! Without purchasing any hardware!!!! Read on...

Today I came across a freeware application for Windows 7, that turns your Windows 7 computer into a WiFi Access Point!!!! It emulates a WiFi router through Software!!!! And my problem is solved!!!! Now I can share my laptop's wired internet connection to my Android phone. Here is a 2-step guide to setting up everything.

Step 1
Download the application Connectify from here and install it. It will prompt you to install a driver, twice. Press Ok, for each prompt.

Step 2
After the installation, you'll see an icon in the system tray which looks like . Click the icon. You'll see a pop up dialog as shown below.
Turn on your laptop's WiFi card if your laptop has a dedicated button to turn it on. Then fill the WiFi Name as anything you like. I filled it MAX. Check the box that says Share Internet. Then in the Mode drop down list, select Access Point, WPA2-PSK. Oh wait!!! Do you see only Ad-hoc open and Ad-hoc WEP? If you see Access Point, WPA2-PSK or you don't see a drop down list at all, means you're lucky. Just click Start Hotspot button, and you're done! For those who aren't lucky, just like me, read on...
What happened to me was that I didn't see the Access Point mode. I thought, my WiFi card doesn't support Access Point mode. I went to the supported card's list at http://connectify.me/docs/supportedcards.html and I could see my card Intel 5100/5300, WiFi Link 1000 BGN listed there. "Then what's the catch?", thought the frustrated me! I noted that the driver version supported was 13.0.0.107. I checked my card's driver version in Device Manager and saw that it was 11.x.x.x. I went to my laptop's manufacturer support site and saw that the latest WiFi driver for my machine was available and it was 13.0.0.107. I also noticed that all other components(like Chipset, Audio, Graphics, Ethernet card etc...) had updated drivers for them. I Downed 'em all and installed.(What's the morale??? Always keep your drivers updated.)
After the re-boot, I could see a Virtual WiFi MiniPort adaptor installed in Network Connections with the name Wireless Network Connection 2.


Then I launched connectify, I didn't see any drop down list in the mode box(screenshot. below). I entered a 8-character WPA2 key and clicked the Start Hotspot button.


It took a while(about 15-20 seconds) to configure and my WiFi hotspot was up and running! My Connectify popup was now with the Status: Running MAX, Mode: Access Point WPA2-PSK. I was a happy man! I turned on my phone's WiFi and connected my phone to MAX easily. I saw my phone's MAC and IP addresses in the Connected Clients list. Even a Sony Ericsson logo was shown there!!!
Using DHCP my phone was assigned the IP address 192.168.2.10. The computer's Software based WiFi router was assigned the IP address as 192.168.2.1. In the system tray, the red mark from Connectify icon was now removed and it was like this


Troubleshooting
Everything was up and runing, still I couldn't browse the web. In he phone, I checked the gateway address and it was fine i.e. 192.168.2.1, that I had already cnfigured in WiFi static.
I went to Network Connections, in my laptop. That can be reached through Network and Sharing Center > Change Adaptor Settings. I right clicked my wired ethernet icon and clicked properties. In the sharing tab Wireless Network Connection was listed as the Home Netowrking Connection. I understood that it must be set to Wireless Network Connection 2 which was the name of the connection that WiFi Miniport Adaptor had. I unchecked the box that said Allow other network users to connect through..... then clicked Ok, and closed the properties window. Then again right clicked my wired internet connection icon, clicked properties and in the Sharing tab checked the box Allow other.... In the Home Networking dropdown I selected Wireless Networking Cnnection 2 and clicked Ok and closed the properties window.

I restarted the hotspot and my phone got connected and I could successfully browse the web on my phone!!!
One of the major issues with the phone that I had pointed in one of my previous posts i.e. http://p97.blogspot.com/2010/08/sony-ericsson-xperia-x10-mini.html , has been solved!!! Go Android go!!!