I recently installed the Ice-cream sandwich flavour of the Ehndroix mod. After hours of scouring the web & bricking my phone multiple times in the process, ICS is up and running on my phone. I’m documenting the exact process here so that it will be useful for everyone.

This post applies only for Samsung Galaxy S Plus GT-I9001. These steps might not work on any other phone. Even, if you are on I9001 phone, proceed at your own risk. No one (including me & God) is responsible if anything happens to you or your phone 😉

Assuming you are running the stock Gingerbread Android OS, here are the steps:

  1. Get all the required software
  2. Enable development mode on your phone
  3. Backup all your existing data
  4. Root your phone
  5. Install ClockworkMod Recovery 5.5.0.4
  6. Reboot your phone in recovery mode
  7. Install Ehndroix
  8. Install S3 style pack
  9. Reboot your phone
Read the rest of this entry »

Buxfer – Automatic Data Backup

February 15th, 2011

A month ago, Buxfer.com went down & took down a month’s worth of data along with it. Thankfully I had a CSV export of my data before the website went down.

After that, I wrote a simple utility script that will automatically do a full CSV export of Buxfer accounts data and email it. At the start of the script, there are couple of PHP variables that you can use to customize it – your buxfer id and password, from email address, to email address, email content etc. To automate it completely, use crontab to schedule its execution and rest in peace 🙂 .

I have hosted the code at GitHub. Do check it out and let me know your feedback. Or better yet, fork it and add your bells and whistles.

You can access the GitHub repository here.

Cameras must be WiFi enabled

April 30th, 2010

Few months ago, I purchased a Panasonic Lumix DMC FZ-28 digital camera. It’s a bridge camera and has plenty of features. I’m totally in love with the camera. However, cameras such as this, Canon Powershot SX 20 IS etc. should have a few more features along with wifi enabled so that we amateurs are able to do a lot more easily 🙂

Here’s a typical work flow for my trek photos:

Go on a trek –> Click nice pictures –> Transfer the photos to the computer –> Make minor modifications such as contrast, brightness, saturation, cropping etc. –> Remove duplicates –> Add signature, copyright notice –> Generate a low resolution version of the final photographs –> Upload them to Flickr/Picasa/Facebook to share them with the world.

With these powerful cameras, much of this can be done on the camera itself. For e.g. my camera already allows adding signatures to pictures through a text stamp feature. It also allows notes to be added to pictures. The pictures can be cropped and frame freezes can be obtained from HD videos shot with this camera. While cropping, a tiny popup containing contrast, saturation and brightness could be displayed. Pictures can be marked with a star so that they can be cycled through while viewing the clicks.

Panasonic Lumix DMC FZ-28

What I want now

Each camera should have a nice file system API, network API and GUI API. Using these APIs, third party applications would be able to fetch photos from the memory card and do the required modifications. More detailed descriptions would be added to the photos and they would be preserved as part of the picture’s EXIF data.

The memory card should be formatted in a special way so that it can hold third party applications in a separate shell. This shell would be accessible through an iTunes like desktop software from which third party applications for the camera can be installed or removed. Once an application is installed, it should be displayed in an Application settings screen on the camera, from where the application can be activated or deactivated.

Once the necessary modifications are done, using the network APIs and WiFi, the application should upload the “starred” photos to flickr, picasa, facebook or any other service the application supports. All these and other services support HTTP APIs. Instead of the camera themselves supporting various services, it could just provide nice APIs and let the developers do the magic. While uploading each picture, a very high resolution picture should be scaled down for the web dynamically.

Geo Tagging

Oh wait! I want to geo-tag the photos as well. So, while clicking each photo, they should be geo-tagged in the background so that the actual speed of clicking a photo isn’t affected. Manually geo-tagging photos are a huge pain in the wrong places.

So, there you go! Click pictures –> Geo tag them in background –> crop them & make other minor modifications –> add text stamp for copyright notice –> Generate low resolution versions dynamically (cache them if required) and upload them!

Since most of the work is done by software in digital cameras, I think the stuff mentioned above is very much feasible. At least geo-tagging should be brought in as a feature.

Note: I haven’t yet published some trekking posts since Feb. But this couldn’t wait. So they’ll be up soon.

By now, everyone must have been aware of the recent Facebook announcement of the universal Like button. As probably talked about all over the web, this one button is like giving too much of power to one company. By now the Like button should have appeared on thousands of websites already. Famous press blogs running wordpress should have had the Like button along their standard ‘share this’ toolbar. Facebook’s 400 million+ user base is a huge audience to showcase your content to & everyone wants a piece of the pie!

However, this like button reopens an old problem in a new way… User Privacy. Few years ago, when doubleclick.net installed tracking cookies for sending customized advertisements, it created a huge uproar. Similar stuff happened when Google History came about. But now, Facebook uses a clever way to track users that, you cannot even opt out if you don’t like the process. It makes of full use of the way how the web and ultimately, HTTP(S) works.

I’m not even talking about the case where you are logged in to Facebook and click on a ‘Like’ button on a website. That’s voluntary. You like a piece of content and you spread it to your friends and fans on Facebook. I’m talking about the case where you just visit a certain website containing the Like button and that data will be harvested by Facebook.

Like this on Facebook to understand how it works: [sniplet fblike]

How it works

Let us take it step by step:

  1. Clear cookies on your browser. If you are using Firefox or Chrome, press Ctrl+Shift+Del.
  2. Visit www.facebook.com
  3. Login to Facebook.
  4. Visit other websites to be tracked. So simple isn’t it?

When you first visit Facebook.com, it sets a cookie called “datr”, whose expiry is two years from now. So, if you visit Facebook.com today and never clear your browser’s cookies, you will be tracked for the first two years with “datr”. When that period expires, it will be replaced with a new cookie 🙂 and you will continue to be tracked. After you login to Facebook, it sets some more cookies on your browser along with a cookie called “xs” which is the session cookie for your Facebook session. If you remove this cookie, you will be redirected to Facebook’s login page. After login, “datr” and “xs” cookies will be refreshed.

Sunrise

When you embed the Like button on your website, it loads in an iframe in the Facebook.com domain. When a request is sent to any website by clicking on a link or by typing it on the browser’s address bar, the browser sends all the active (non-expired) cookies to the domain. So, when the Like button loads on a website, it makes a request to http://www.facebook.com/plugins/like.php. Along with this request, it will send the “datr” and “xs” cookies. It will also set the HTTP ‘Referer’ header to the originating website. For example, if you click on a Facebook.com link from my website, the Referer header will be set as ‘www.aswinanand.com’. This is used by other websites to determine where the user is coming from.

Now, when the ‘Like’ button loads on a website inside Facebook’s iframe, the Referer header will be set to your website’s page, “datr” cookie will be sent and if you have already logged in to Facebook, “xs” cookie will also be sent. So, just by loading Facebook’s Like button, Facebook will know what websites you had visited. Since the expiry for “datr” is set to two years, it will associate your Facebook logins to this cookie… which means, even if you logout of Facebook, it will know who the user is. Moreover, when you are logged in and move from one place to another, Facebook will know during what times of the day you are active and during what times you are inactive. When you are active, it will know from where your web browsing occurs and by being able to find location from IP address, they will know where exactly you are moving. Don’t worry, all this data will also be combined with your Facebook mobile usage and a final stat will be arrived at! That’s scary because it could reveal so much about a user & all privacy is gone with the wind.

Targeted Advertisements

This kind of tracking is something the user cannot opt out because sending cookies and setting HTTP Referer headers are part of the protocol. That means, you are tracked by default. Without your knowledge, your online behaviour and all the websites you visit (assuming they have added the Like button) after logging into Facebook are tracked by Facebook. This is useful for a lot of cases. Say you visit IMDB after logging in to Facebook. Each of the movie pages will have the like button. So Facebook will know which movies you are visiting. When you click on the ‘Like’ button for a certain movie, it gets to know your tastes and offer more movies along similar lines when you visit IMDB next. This same technique could also be used by spammers to trick you in to ‘liking’ some random link of their choice.

Like this, through the iframe based ‘Like’ button, Facebook funnels all required data to create a customized and scary experience.

Why not Google?

Ideally speaking, this was something that Google should have done a year or two ago. Most people I know are logged in to Google all their day and web browsing happens simultaneously. Just think of what would would happen if Google had done this. With their already powerful search tracking user behaviour and statistics, adsense would use this data to send specific advertisements to users. Google analytics is already deployed on tons and tons of websites all over the web. This one ‘GLike’ button could also be used to track statistics so easily. Now all of that happens on Facebook. Facebook is luring developers and users alike with its huge user base 🙂 . Combining a utility like ‘Like’ button with Google’s powerful anti-spam, anti-phishing and other anti-* mechanisms, it would indeed become a formidable force on the web.

What if you don’t want to be tracked?

If you don’t want to be tracked without your explicit approval, I would suggest browsing Facebook in Incognito browsing mode in Chrome, multiple profiles in Firefox or InPrivate browsing mode in Internet Explorer. All these modes will clear cookies and other history data when you close the browser window. So you might not be tracked as efficiently as possible.

I hope Facebook addresses this privacy concern. Facebook, please don’t be evil 🙂 with our data. I wouldn’t be surprised if Facebook launches a general purpose search engine in the next couple of years!

Ever since I discovered Opera Mini, I had installed it on my first mobile (K300i) and now the latest Opera Mini 5 beta is present on my Nokia E51. Few months ago a new browser came up for S60 3rd Edition Mobiles named Skyfire. The main selling point of this browser was almost full support for javascript and Adobe Flash with near desktop experience; which enabled us to watch YouTube videos on the mobile!

I had been using both browsers side by side for a few months now & came to feel that Opera Mini is a lot better for daily use and Skyfire is better for those one off toughie websites that must work with javascript and other stuff enabled.

Here’s an example: Recently, I started accessing my twitter account through Dabr from Opera Mini. The mobile UI rocks and zoom in and zoom out is instant. It happens in the client side. Opera Mini has an intelligent mix of client side and server side operations, whereas, all operations from Skyfire require an active internet connection. At best, internet access from mobiles through GPRS still remains patchy & hence, Skyfire should have that intelligent mix of operations and where possible, operations should be done at the client rather than server.

Opera desktop’s goodness of Speed Dial has arrived on Opera Mini 5. It’s awesome and saves you tons of clickety-clicks, which are irritating on a mobile. The whole menu system has been completely revamped. UI is smooth and fast (which is a downside with Skyfire)!

The best feature of Opera Mini of all is tabbed browsing. That blows away any other mobile browser on the planet. Being fast and loading heavy pages on separate tabs is a pretty awesome thing. By long pressing on a link, you can open them in new tabs inside Opera Mini. Hence, the Dabr + Opera Mini seems to beat any other twitter competition. Saved pages are really saved pages. They can be accessed even when there’s no connectivity.

Recently we had to book tickets to watch a movie at Mayajaal and Skyfire displayed the website amazingly well. Opera Mini suffered there. Similarly, Opera Mini rocks in opening popup windows (when clicked explicitly), whereas Skyfire fails. All in all, if you are going on a long journey with conservative power, Opera Mini is the way to go. Or if you want near desktop experience on your mobile for all websites, then Skyfire is the way to go.

Skyfire Gripes:

  1. No tabbed browsing.
  2. No landscape view of web pages and videos.
  3. Phone heats up after about 15 minutes of usage. Doesn’t ever happen with Opera Mini.
  4. Compared to Opera Mini, it is very heavy on battery.
  5. No option to logout from your Skyfire account. You have to manually delete the “Preferences” file to logout.
  6. The assumption that an active internet connection is always available.
  7. Proxy server support and proxy authentication i.e. HTTP code 407. I have been asking this for so long that I’m beginning to feel that this feature won’t come at all.

Opera Mini Gripes:

  1. No flash support.
  2. Javascript should be supported better.
  3. Zoom in to images is dismal. I hope this issue will be corrected when Opera Mini 5 comes out beta.
  4. This browser also doesn’t have support for proxy servers and proxy authentication.

What are your opinions on these two browsers? What browser are you using on your mobile phone?

Webbynode Invites

July 21st, 2009

Update: The invites have been used.

As mentioned in this Webbynode blog post, I happen to be one of the current VIP users having five invites. That’s right… five awesome invites. If you are looking for a VPS with a 15% discount for the rest of your life, this could be your chance to get it.

Post a comment with your email id and I shall send you an invite. First come, first served 🙂

Enjoy!

Moving Hosts

June 18th, 2009

Hey guys, I will be switching hosts today and in the time that the DNS propogates, you may experience a slight downtime. Kindly bear the same. Thanks.

I’m a big fan of Dev Opera Articles. They have some excellent articles on HTML, javascript and all things web.

The biggest problem is that, their RSS feed doesn’t give the full content. Everytime new articles show up, I have to visit the website by clicking the link on the RSS feed. It soon got very frustrating.

So, here’s the result – http://feeds2.feedburner.com/DevOperaFullFeed. That link contains the RSS feed for Dev Opera Articles in full. That is, there are no one liners any more. This feed will give you the full content of the articles present on the Dev Opera’s original feed. Subscribe to this feed and live happily ever after 😛

Skyfire Review

June 1st, 2009

Skyfire 1.0 is the new kid on the block in the mobile browser war. Its not a kid per se but there are some big boys like Opera Mini and Opera Mobile who don’t give up all too easily. I have been a beta user of it from India since 0.6 😉 and it was fun all this while to keep track of this superb browser. Their main aim is to bring desktop like browsing experience to the mobile browser and they are almost there. So near, yet so far.

Like all other reviews about this browser until now, its safe to tell that it is able to play flash videos pretty well inside the small screen. Here are some notable differences between the earlier betas and this 1.0 version:

  1. While watching any videos on youtube, my Nokia E51‘s rear would just heat up quickly & few minutes down, it would be difficult to hold the phone. This problem has been nearly solved in 1.0. That’s possibly due to power optimization techniques.
  2. When you scroll very quickly on long web pages, Skyfire usually shows a checkered screen with gray squares (screenshot below), which disappear as and when content appears. Pre 1.0, this checkered screen would take a long time to disappear. With 1.0, this problem has been solved. Same problem used to occur during zoom in/out. Now zoom happens at blazing speed. Neat!
  3. The checkered placeholder
  4. Its able to handle basic javascript very well. For e.g. its able to display the hover menus that are present on top of my blog. Its also able to show alert boxes.
  5. Video quality is maintained even during zoom in and zoom out. This was a major drawback in pre 1.0 versions.
  6. The initial loading and shutdown of the browser would take a long time in pre 1.0 releases. Not so in this current release. This has been drastically improved.
  7. File downloads happens excellently. Kudos for this. This is a major drawback with the E51’s native browser.

Read the rest of this entry »

Top 5 Gmail Lab Features

April 3rd, 2009

Ever since Gmail launched its Gmail Lab, I have been its fan. Some of its features are so awesome I use them day in and day out. Mentioned below are my favourite lab features:

1. Go to Label

If I were asked to pick one best lab feature from all of them, this would be it. I have set up filters extensively to mark labels to most of my emails. I’m also a keyboard shortcut junkie & expect web apps to have keyboard shortcuts. Retrieving emails based on a given label had never been this easier. Just type ‘g‘ followed by ‘l‘. A small dialog opens and offers suggestions as you type the label names. This is an awesome feature that saves loads of scrolling and clicking.

2. Search Autocomplete

This is an Excellent lab feature that was announced yesterday. I have enabled it and searching mail using its operators has been made very easy. This also offers suggestions from your contacts as you type. For each letter that you type, if there’s an available search operator, it lists that as well; neatly separating the operators from the contacts with a black line.

3. Tasks

Less is more. This tasks features offers very little features, almost mimicking it to a paper to-do list. Just list the tasks and strike them as you are done with it. There are of course some advanced features tucked in. But they don’t appear at first sight. This is a well executed Labs Feature. There are times when you do not need a full blown task manager & this feature comes in handy. I hope they bring this feature to their gmail mobile app.

4. Youtube, Picasa, Flickr Previews

Recently, I have been trekking/touring a lot. People from the trekking gang send emails with links to Picasa/Flickr albums. They also add youtube video links to the email because there’s no way to actually embed a video inside an email. With this labs feature, I’m able to enjoy all the related photos/videos in one place. Really cool.

5. Quick Links

This is one awesome feature. Many months ago, I posted a question on a mailing list asking for suggestions for buying wireless routers. After a week since the discussion, I was searching high and low for that email but couldn’t find it. Lots of people had given valuable suggestions and how can I lose them all? As soon as I found the email, I activated this quick links feature and clicked on “Add Quick Link” button in its dialog box. Voila! Now I can reach this email directly with a mouse click. 

There are also times when I search for “in:inbox is:unread“. This search operator retrieves all mails in your inbox that have not been read yet. I didn’t want to type this operator every time to check for unread messages that are buried somewhere. I just added a Quick Link for this operator and now its just a click away. Happy times!

What are your favourite Gmail Lab features? Let me know in the comments.