Nov 20, 2007

Gmail.Microsoft.com

Read this interesting post by Lenssen......again I am pasting it as it is and stealing some page rank from him .....   :)

What If Gmail Had Been Designed   by Microsoft?

Today I want to ponder the question: what if Microsoft, not Google, had created Gmail? What would be the differences in that web mail client for users today? What if we apply some of the same design rules that brought us Hotmail, for instance?

To start, here’s the current Gmail homepage after you log-in:

First of all, we need to rebrand the application name to something longer. Let’s call this Windows Live Gmail, and add some of the visual elements connected with Windows. Also, as in Hotmail, there needs to be less space for the email subjects to make place for a reading pane, which is full of verbose explanatory help text*:

*Not shown in the screenshot, we’ll also throw in a security measurement that will prevent you from clicking on links in emails, unless you discovered the switch to mark a mail as safe. Another security measurement we’ll add is that you won’t be able to log-in with just username anymore but are required to enter the full username@gmail.com. Furthermore, we will change the browser URL from http://gmail.microsoft.com to the more professional looking http://by114w.bay114.gmail.live.com/mail/mail.aspx?rru=home.

For another design iteration in our inbox, we will need to camouflage the checkboxes next to the messages by putting a mail icon on top of them. Also, we need to break up messages from conversation threads into their individual parts. Furthermore, this version of Gmail needs to change from context-aware text ads to context-unaware graphic banners, which we’ll require to carry at least one clip art. Gmail currently has a chat box which I don’t use and thus find annoying, so I think we can build on that and expand it to a more full-featured chat widget, replacing the labels box. We’ll also adjust the spam filter slightly to show a couple of more bulk mails in the inbox:

There’s still not enough banner space available though, so let’s add a top row for ads and move the rest a bit more down. Also, to go back to the real Microsoft spirit, the inbox will now carry a maximum of 2 MB of messages – that was the amount Hotmail offered when Gmail was released with 1 GB in April 2004. Also, Microsoft-style, the actual start page of this service will not be the inbox, but a “welcome” splash screen. Please imagine the ads blinking at this point:

Somehow, this still misses part of the Microsoft feeling – the current design is just too bright & light, and it doesn’t have enough glamor. I’ll darken the colors a bit and add some smooth shades. Also, admittedly, Hotmail is a bit slower than Google’s competing service, so we’ll add some “loading” messages. Usually there’s less focus on unclutteredness with the Redmond guys, so we’ll add some MSN news bits and “special offers” where space is left. Plus, to increase user lock-in, let’s get rid of the “sign out” link. I’m also putting less emphasis on search, moving the box to the bottom right and replacing it with a dog:

Voila, we’re done... that was easy! Your potential, their passion. Coming up tomorrow: “What if Microsoft had designed Windows Vista.” Stay tuned!

[By Philipp Lenssen | Original post | Comments]

Blogged with Flock

Nov 19, 2007

How to program on Android

This is awesome post and hence i am copy paste the original post here as it is.....

So you saw the Android announcement and decided you wanted a piece of that US$10million in prize money huh? In the week since the SDK was released more than 4,300 people have joined the Android support forum posting more than 4,000 messages between them. Robert Scoble doesn't know a single developer playing with Android – perhaps Scoble doesn't hang around with many developers?

I wanted to give the SDK a good work-out so my application uses the GPS, the address book, and has a map.

The only way to judge an SDK is getting in there and writing an application that does something cool, so I'll take you through the development process for my first Android application: Where Are My Friends?

WamF shows how far away you are right now from all the people in your address book, plots you and them on a map, and draws lines between you and any friends nearby.

WamF is pretty simple but it makes use of some of the more interesting features of Android – Location Based Information (GPS etc), maps, the contacts manager, and the phone dialer. Total development time from hitting Download on the SDK page was about 14 hours (spread over two mornings and evenings). My Android development is in Windows with Eclipse using the plugin, so I will assume you're doing the same.

Before I get started here's a bit on my background. I've mentioned before that I'm a C# .NET desktop applications developer in my real life. It's been almost 10 years since I've done anything with Java and I've never done any mobile phone development. With Android I develop in Windows with Eclipse using the Android plugin.

Let's start by downloading Eclipse and unzipping it into a new folder. Then download the Android SDK and unzip that into another new folder. Open Eclipse and create a new workspace for Android development.

Install the Android Plugin by selecting Help > Software Updates > Find and Install..., and in the dialog box choose Search for new Features to install. Select New Remote Site and enter https://dl-ssl.google.com/android/eclipse/. into the dialog box. Hit OK and accept all the prompts until it's installed. Restart Eclipse and you're almost ready to rock.

Select Window > Preferences... and select Android, then put the folder where you unzipped the SDK into the SDK Location text box. Hit Apply then OK and you're done.

The tutorial and exercises are useful. Do them.

Let's make sure everything's installed right by creating the Hello Android demo. The Android team have a detailed description of how to do this so I won't repeat it here. It's worth checking out the known bugs if you encounter any problems.

The Android documentation is excellent; after you've finished the Hello Android project run through the exercises. They're easy to follow and give a good idea of how a 'real' application fits together.

Design a UI, leveraging one of the sample projects

Onto business. Step one should always be UI design. Figure out what it is you want to tell the user and what actions they'll need then develop an interface that will make this as intuitive as possible. To keep things simple I'm going to base my new project on the NotePad project used in the tutorial exercises.

I'll start by changing the resource strings to change the name of the app, and modifying the menu options .

Use the Location Based Services to figure out where we are and request updates when we move

Possibly the most enticing of the Android features are the Location Based Services that give your application geographical context through Location Providers (GPS etc). Android includes a mock provider called 'gps' that marches back and forth through San Fransisco. Alternatively you can create your own mock providers in XML.

You use the LocationManager to find your current position.

    locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = locationManager.getCurrentLocation("gps");

Iterate over the address book pulling out names, locations, and phone numbers

A less publicized feature of Android is the ability to share content between applications. We're going to use this feature to populate our List with our contacts' names and their current distance from our phone so we create an updateList method that we call after we've gotten our current location.

Use the ContentResolver to return a query that provides access to data shared using Content Providers. Queries are returned as cursors that provide access to the underlying data tables. The data we're interested in is accessed using the People content provider.

    Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null); startManagingCursor(c);

The Cursor is a managed way of controlling your position (Row) in the underlying table. We get access to the data by specifying the column that holds the information we're after. Rather than memorising the column index for each Content Provider we can use constants from the People class as a shortcut.

    int coordIdx = c.getColumnIndex(People.NOTES); int phoneIdx = c.getColumnIndex(People.PhonesColumns.NUMBER); int nameIdx = c.getColumnIndex(People.NAME);

Now iterate over the table using the cursor storing the results in arrays. You'll note that we're pulling our contacts' location from the Notes field. In reality we'd want to figure this out based on their address using a geocoding lookup.

    List listItems = new ArrayList();

    c.first();
    do {
      String name = c.getString(nameIdx);
      String coords = c.getString(coordIdx);
      String phone = c.getString(phoneIdx);

      ... [ Process the lat/long from the coordinates ] ...
      ... [ Storing their location under variable loc ] ...

      String distStr = String.valueOf(location.distanceTo(loc)/1000);
      name = name + " (" + distStr + "km)";
      listItems.add(name);

      numbers.add("tel:" + phone);
    } while(c.next());

Then we assign our list of strings to the array using an ArrayAdapter.

    ArrayAdapter notes = new ArrayAdapter(this, R.layout.notes_row, items);
    setListAdapter(notes);

Refresh our list when we move

Given the location sensitive nature of WamF it makes sense to update the display whenever we move. Do this by asking the LocationManager to trigger a new Intent when our location provider notices we've moved.

    List providers = locationManager.getProviders();
    LocationProvider provider = providers.get(0);
    Intent intent = new Intent(LOCATION_CHANGED);
    locationManager.requestUpdates(provider, minTime, minDistance, intent);

Intents in Android are like events in traditional event driven programming, so we're triggering a LOCATION_CHANGED event/intent every time we move by a minimum distance after a minimum time. The next step is to create an IntentReceiver (event handler), so create a new internal class that extends IntentReceiver and override the ReceiveIntent event to call our update method.

    public class myIntentReceiver extends IntentReceiver {
      @Override
      public void onReceiveIntent(Context context, Intent intent) {
        updateList();
      }
    }

We then have our activity listen for a LOCATION_CHANGED intent by registering the event handler and specifying the intent it should be listening for (LOCATION_CHANGED). Do this in the onCreate method or create a new menu option to start/stop the automatic updates.

    filter = new IntentFilter(LOCATION_CHANGED);
    receiver = new myIntentReceiver();
    registerReceiver(receiver, filter);

Keep your phone running light by registering / unregistering the receiver when the activity Pauses and Resumes – there's no point in listening for location changes if we can't see the list.

Set up a map activity and create an overlay to show where you are in relation to your friends

Half of the fun in having location sensitive information is drawing it on a map. Create a new activity class to display a map centered on our current location with markers at our friends locations. While we're at it we can draw a line from our position to each of our friends.

The map control itself is called a MapView, but we can only use a MapView in a MapActivity, so we'll change the inheritance of this activity to MapActivity.

    public class MyMapViewActivity extends MapActivity

To display the map we need to create a new MapView and set it as the content for our activity in the OnCreate method.

    MapView mapView = new MapView(this);
    setContentView(mapView);

This will make the MapView fill the entire screen, so use views like LinearLayout if we want to create a more complicated UI layout.

We'll want to get access to the OverlayController and MapController, so create global variables to store them and assign the references within the OnCreate method. We'll also be using the Location information, so get a reference to that too. With the references assigned set your map zoom and starting location using the MapController. When you're finished OnCreate should look something like this.

    protected void onCreate(Bundle icicle) {
      super.onCreate(icicle);
      MapView mapView = new MapView(this);
      mapController = mapView.getController();
      overlayController = mapView.createOverlayController();
      locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
      mapController.zoomTo(9);
      setContentView(mMapView);
      updateView();
    }

updateView is where we do the work. Start by getting our current location and convert the Lat/Long to a map Point, then centre the map on our current location.

    Double lat = location.getLatitude()*1E6;
    Double lng = location.getLongitude()*1E6;
    Point point = new Point(lat.intValue(), lng.intValue());
    mapController.centerMapTo(point, false);

The only thing left to do on our map is draw markers and link them up with lines. To do this you need to create a new class that extends Overlay, and add this using the OverlayController.

    MyLocationOverlay myLocationOverlay = new MyLocationOverlay();
    overlayController.add(myLocationOverlay, true);

The work in the Overlay class is done by overriding the draw method.

    protected class MyLocationOverlay extends Overlay {
      @Override
      public void draw(Canvas canvas, PixelCalculator calculator, boolean
      shadow) {
        ... [ draw things here ] ...
      }
    }

I start by drawing a 'marker' on my current location. There doesn't seem to be support for 'traditional' Google Maps markers but you can achieve the same thing by drawing on the map canvas; I chose to draw small circles as markers. First you need to use the PixelCalculator to convert your Lat/Long points to screen coordinates, then create a Paint object to define the colours and settings for your brush. Then paint your markers.

    int[] screenCoords = new int[2];
    calculator.getPointXY(point, screenCoords);
    RectF oval = new RectF(...);
    Paint paint = new Paint();
    paint.setARGB(200, 255, 0, 0);
    canvas.drawOval(oval, paint);

I add my friends locations the same way as before, iterating over my address book grabbing names and locations. I filter out anyone too far away (say 10km) and draw markers, names (drawText), and joining lines (drawLine) to those nearby.

Let's make a call

Now we know when we're close to our friends, what are we likely to want to do when we're close? Drop in! But we're polite so we'll call them first. Let's change our list item click function to call the friend we've clicked. We can do this by firing a DIAL_ACTION intent.

    Intent i = new Intent();
    i.setAction(DIAL_ACTION);
    i.setData(new ContentURI(numbers.get(position)));
    startActivity(i);

The phone dialer has registered an IntentReceiver filtered on DIAL_ACTION so it will react to this.

Android is an environment where the biggest limitation is your imagination

And that's it.

I've got a list of a dozen or so changes to make it a little more useful and a half dozen ideas for projects that might actually make it into the running for some of that prize money. My conclusion? Android is everything a development kit should be – an environment where the biggest limitation is what you can imagine.

[By Reto Meier | Original post | Comments]

Blogged with Flock

Link to Specific content from Gmail

Google has made their web-based email client Gmail more accessible in their recent update. Now, the URL on top will change with your actions – meaning that if you switch to a certain conversation thread, or you switch to a label, or you perform a search, you can then actually copy the address on top as a kind of permalink (oldtimers among us may still remember this kind of feature from websites of the 1990s!).

Here’s why this can be useful:

  • Sometimes a conversation thread contains details for a certain event, an event which you now decide to add to e.g. Google Calendar. What’s easier than copying & pasting the conversation information into your event? Right, just linking to the Gmail thread from your calendar event is. (Your thread is password-protected with your Google account credentials of course, so you won’t create an additional privacy risk either – though I would probably not post such permalinks in public places, who knows what the permalink ID can be abused for with some hack!)
  • You can now share searches with a friend, e.g. tell them “Check out the previous mail I sent you at http://mail.google.com/mail/#search/grab+coffee+at+starbucks ...”.
  • You can now bookmark certain labels. In Firefox, you can also then create a shortcut for such a label bookmark. Say you bookmarked “http://mail.google.com/mail/#label/job” – right-click the bookmark and select properties; in the keyword field, enter “job”. Now, you can enter “job” in the Firefox address bar at any time to be taken straight to your Gmail job label/ folder and the conversations contained within it.

Blogged with Flock

Nov 17, 2007

Enclosing in a Google Circle



I was thinking about how much time I spent on Google products in a day and I was just stunned by finding that this Logo keep showing in my browser about 30% of the tabs opened  and about 80% of the time. And nobody is forcing me to do so. No penny spent. Also in all the workflows that Google provided has no hassles, they are straight, do only they designed to do and nothing else, have cleanlier user interface. I think we are all are using Google too much and its just starting.  as per John Bettelle an average searcher searches about 5-10 queries per day in a search engine and expert may be around 20-35. In that way we software engineers are way ahead as we on an average searches more then 50 queries per day. I uses google search not only for finding information but also as a calculator and dictionary for checking spelling.

Stumble upon good link on the same http://www.redherring.com/Home/23165

Blogged with Flock

Nov 16, 2007

Google Trends Pridectibility

Google Trends shows an interesting search popularity graph for the queries “turkey” (as in turkey the food, too) and “diet”:

On North-American Thanksgiving day, the searches for a traditional dish for the festivity peak. There’s still Xmas ahead with a second, milder peak for turkey queries... afterwards, searches for a diet are building up, peaking right after on New Year.

There’s an interesting other correlation... between depression and rain:

Blogged with Flock

Nov 12, 2007

Interesting Numbers about online Ads












That's interesting figures. Now the real question would be how will Google, Facebook, Yahoo divide the pie.

Nov 6, 2007

No GPhone, its Android


Google launches Android: The new mobile platform with collaboration in 34 top mobile and computing companies. That's How Google shows how much it abide by his "Do No Evil" funda and also working for providing best solutions to end user rather then thinking towards the monopolizing the business.A group of 34 companies that will create a package of free software that includes everything needed to run a cell phone: an open-source, Linux-based operating system, a Web browser, and a slew of applications, including maps, e-mail, and video-sharing and -viewing tools.

This also allows third party developers to develop new application for this platform and this gives the platform numerous growth potential. he Alliance includes some of the biggest names in tech, including chipmakers Intel (INTC) and Qualcomm (QCOM), handset maker Motorola (MOT), wireless carriers T-Mobile and Sprint Nextel (S), and e-commerce provider eBay (EBAY). Startups already are itching to contribute to the Alliance's efforts—and investors are eager to fund them. Unlike with other mobile-platform providers, developers working with Android pay no licensing or other fees. They also will be able to sell their applications through a Google-created online marketplace without sharing revenues with the search giant. Google will make money on the ads served through the phone's browser.

The idea of generating revenue only by the ads served and not by licensing will smart enough to keep Google a leader in the mobile game for coming years. Actually the revenue by ads idea has so mush potential that it can even provide the users all the hardware and software for free, if implemented in correct way.

Android and Open Handset Alliance will poses a great threat to Symbian and Windows mobile OS. Andy Rubin, head of the Android project at Google, hopes that within five years, "hundreds of millions" of Android-based phones will be sold per year. After five years of effort, Microsoft ships about 20 million phones based on Windows Mobile each year. And Microsoft already works with more than 160 operators and 48 handset makers and offers more than 18,000 applications for Windows Mobile.

So Again Google is here and Future is Open.

Nov 3, 2007

Hello World in Open Social.



Check thin new video about how to make applications in Open Social