Sunday, December 29, 2013

Connecting your Android phone to your Windows WiFi HotSpot

Now this actually something I thought would be a piece of cake, until the day I actually wanted to do it.

This is how I tried:

I went to 'Network and Sharing Center' and selected 'Set up a Connection or Network' and clicked on 'Set up a wireless ad hoc (computer-to-computer) network'.

Then gave the following details.

Windows said my network is ready to use but it was not showing up on my Android phone.

Googled a bit, and got the bad news. Android does not support WiFi ad hoc networks! Well at least if your phone is not rooted. In my case I was trying with a Nexus running Vanilla Android. Doh!

Again, Google to the rescue. I found out that we can use 'netsh' administrative commands to host a wireless network in the access point mode instead of the ad hoc mode.

So on an administrative command prompt, you type:
netsh wlan set hostednetwork mode=allow ssid=MyAdHocNetwork

Then you start it:
netsh wlan start hostednetwork

Now you will see 'MyAdHocNetwork' in your Android phone's WiFi networks list!

PS: Later I found out this can be done with ease using 'Virtual Router Plus', but it doesn't hurt to get a little grease under the nails once in a while :)

Android Studio: How to refer an external library (.jar)

I had quite a bit of trouble doing this, hence thought of blogging it.

First you need to download the required .jar file. In my case it is 'commons-codec-1.9.jar'.

Then create a folder named 'lib' in your project folder and copy the .jar file.

From Android Studio, right click the lib file and select 'Add as Library...'.

Select your project and confirm.

Open 'build.gradle' of your project and add line 'the following line under 'dependencies':
compile files('libs/commons-codec-1.9.jar')

Add code to use the referenced library.

Rebuild your project.

That's it! :)

Sunday, December 22, 2013

Android Studio: New Project Wizard Weird Blank Error Resolution

Recently I bought a new laptop and had to install all my software from scratch. Everything worked fine but I just couldn't get the Android Studio working. Whenever I tried to complete the New Project Wizard, it backed off throwing the following blank error message.

I tried re-installing the Studio, JDK, trying various setup configurations, typical restarts and whatnot but this was not going away. Surprisingly the samples which comes with SDK seem to load fine. Therefore I tried to copy one sample project folder to my working folder and thought of changing everything to suit my new project. Kaboom! The error came back!!!

Then only I checked whether my working folder path is to blame...


Damn it! That single quotation mark is screwing things up all this time. Shame on you Android Studio. It's almost 2014 and still you cannot sanitize user inputs? So I changed my working directory and all went fine just like the old days :) Hope this post will help someone someday who is splitting hair across this stupid error. Peace out!

Saturday, September 21, 2013

How to run AutoCAD R14 in 64bit Windows 7

If you hate reading all the step-by-step crap about how I did it, just scroll to the bottom. The summary is there :)


First of all a bit of history on why I actually want to do this. My father is a surveyor. While I was doing my bachelors, I wrote a program to automate block plan drawing using AutoLISP. This was running on top of AutoCAD R14, and since then he was using it to do all his work. This was installed on Windows XP and was running on a desktop PC. Recently I upgraded my laptop and I wanted to give my old one to him and it was running a genuine Windows 7. Then I faced this problem on running AutoCAD R14 on 64bit Windows 7...

Before we start, I have to confess that I actually had a copy of the files which I got from the installed directory in Windows XP. If you want to do a fresh installation, then I am not sure how you can go about running the AutoCAD setup on Windows 7. Most probably you will have to set up a virtual box running Windows XP, install AutoCAD on it and then get the installed files copied to somewhere else. (The reason being the AutoCAD R14 setup does not run on Windows XP compatibility mode)

Ok, so let's assume you have a complete copy of AutoCAD folder from a Windows XP box. If you run the AutoCAD.exe directly in Windows 7, you get a message saying 'heidi3.dll' is not found. So first thing I did was to download it and copy it to the AutoCAD folder. You can download it here.

Now when you run AutoCAD, a different type of error message starts to appear. It's thrown from 'SmartHeap Library' and reveals nothing other than its enum value :D 'MEM_BAD_POINTER'. A bit of googling revealed that it is due to the 'sh31w32.dll' which is probably out of date when dealing with a 64bit OS. So I downloaded a more recent copy and replaced which was inside the AutoCAD directory. You can get it here.

And voila! AutoCAD splash screen came up! Hold on... that was just for a second. The main interface also got loaded and greeted me with another error message. I started loving it! This time it was more specific, just like the first one. It said now it cannot find 'gdifont3.hdi'. No worries, Internet to the rescue. So I downloaded the god damn file and copied it just like before. Get it here.

I was expecting a series of file missing error messages, but to my surprise, AutoCAD loaded fine and seemed to work just like it was freshly installed on Windows 7! Even my lisp program was running perfectly. So there you have it. AutoCAD R14 running on 64bit Windows 7 without skipping a beat!


Ok so here's what you need to do in a nutshell:
  1. You need a copy of working AutoCAD R14 files from another computer.
  2. Copy the following files into that folder. (Replace whatever necessary)
  3. Done!

Sunday, July 7, 2013

The Android+Azure Love Story

Once upon a time, there was this beautiful princess named ‘Android’. ‘Azure’ was the most powerful warrior at that time. One sunny day… Ok, let’s cut the crap and get down to business.

If you haven’t tried out Windows Azure yet, well then you’ve been missing out a lot. Windows Azure is amazing! If you’ve been living under a rock for the last couple of years, Azure is Microsoft’s flexible, open & rock solid cloud platform. And by any chance if you haven’t heard of Android, stop reading right now and go kill yourself!

With the introduction of the Mobile Services SDK for Android, Windows Azure supports developers with super easy access to structure data storage, authenticate and push notifications using GCM. Now you are going to learn how to get started.


Let’s build a simple ‘Contacts’ app which saves its content on the cloud. Sounds pretty lame, but we gotta start somewhere right?

Step 1: Create a new mobile service in Azure.

Step 2: Go to the DATA tab and create a new table named ‘Contact’. You do not need to create the columns. They are automatically generated when the data is inserted.

Step 3: Create a new Android project.

Step 4: Extract the .jar files in Mobile Services SDK to the project’s lib folder.

Step 5: Create a new class to hold the contact data.

The class name has to be the same name as of the table in mobile service database. Case doesn't matter.

Did you notice the annotations? They specify the mapping between the DTO fields and the back end Azure table columns. They even work with private fields.

Step 6: Modify onCreate method of your main activity to insert a random contact.

Client creation takes the mobile service URL and the application key, which can be found in the portal.

Note: `getRandomContact’ and  ‘showMessage’ method implementation details are omitted for brevity.

Step 7: Run the app couple of times.

Step 8: Browse the Contact table in Azure.

So there you have it. An Android app hookup up with an Azure backend in no time! And that’s not all; you can perform all your CRUD operations with ease. You can even intercept requests to the database using the ‘Script’ tab. This is particularly useful for hooking up push notifications for the GCM clients, like illustrated below.

The only thing you have to do is to enter your API key in the ‘Push’ tab. You can get your API key by registering the app in Google APIs console.

Also you can setup authentication for your app using Google, Facebook, Microsoft or Twitter accounts very easily. All you gotta do is add the credentials under the ‘Identity’ tab.

So, hopefully you figured how easy it is to use Azure mobile services with Android. Remember that you get 10 free mobile services with your free trial, so start experimenting now. I’m sure you are going to love it.

Inspired by a Colombo Mobile Developer Meetup session.

Tuesday, April 23, 2013

SLT Usage Meter - Firefox Add-on

Get the firefox add-on here.

I ported the Chrome extension to Firefox. Nothing new there. Just use :)

Here is a screenshot:

Get the firefox add-on here.

Sunday, February 17, 2013

SLT Usage Meter - Chrome Extension

Get the chrome extension here.

I previously wrote a small Windows application for checking the SLT ADSL usage for one of my colleagues.  (If you came looking for that, go here.) And now he has changed his laptop to a MacBook Pro and wanted to run it there. We tried installing it via Wine Bottler using .NET v2.0, but it didn't quite work out. Although we managed to get the UI, it looked like the HTTP requests are not going through. This limitation drove me to implement a more generic version of the same which would work practically on any OS. And a Chrome Extension seemed to be the way to go...

To be honest I have never written one. So went through the default developer tutorials and a hell of other stack overflow posts to get things rolling. Finally managed to get it working the way I wanted. And yes it DOES work on the Mac :)

 Here is the link to install the chrome extension:
Or else you can go to Chome Extensions home page and search for 'SLT Usage Meter'. Make sure you search under 'Extensions'. It will ask for your permission to access the website which you would normally check your usage. That's all your needs to do to get it working!

Here is a screenshots of the extension at work.

Try it out and let me know how it is. Comments are most welcome. And don't forget to rate and share it :) Thanks!

Get the chrome extension here.

PS: If you want the same for Firefox, its here.