Archive by Author

Google Buzz: an entirely new world in Gmail

Recently Google has introduced a new product called Google Buzz into integrated Gmail service. It operates on desktop computers, the iPhone and phones that run Google Android.

google buzz

The social media service offers its users to share and see contents (photos, links, status, messages, and so on) from other sites such as Twitter, YouTube, Flickr and Picasa. Through Google Buzz, public updates will also be available to search engines. The firm has also integrated it with its mapping service and mobile platforms.

google buzzIt is not the first time Google has tried to launch a social network. In 2004, it released Orkut. Recently Google Inc. has signed deal to buy a San Francisco based Internet search and social networking company named Aardvark.

Google Buzz pitches Google directly against rival networks such as Facebook, which has nearly 400 million users since. Buzz’s primary target is to capture its regular 170 million Gmail users.
Google’s Rival Yahoo has already offered a social service like Twitter and Flickr from inside their Yahoo Mail page.

Valid XHTML flash embed code

You’ll be disheartened for the first time when you attempt to validate your flash embedded html page on W3C. Here is the basic structure for valid swf embed code:

<object type="application/x-shockwave-flash" data="movie.swf" width="250" height="25">
	<param name="movie" value="movie.swf" />
</object>

It’s often a big pain after embedding YouTube (or any other) videos, cos your page will no longer be W3 valid! There are many free online tools to convert youtube embed code to valid xhtml format. You may try this one from tools4noobs. It works great.

Symbian has switched to Open-source version of Software

Symbian software is used on more than 330 million phones around the world. It powers the most smart phones in the world. It is facing new competition in the smart phone arena from Apple Inc.’s iPhone and Google Inc.’s Android system. Between these Android is freely available for anyone to use. Now, the Symbian Foundation planned to release, a large part of the software for free.

This open-source version of the software is known as Symbian 3, and supersedes Series 60. It has now completed the largest-ever conversion of proprietary software to “open source,” which means the source code, or blueprint for the software, is available to anyone.

Symbian foundation was set up in 2008 after Nokia Corp. Nokia decided to give the software away to make it more popular with other manufacturers, a move not uncommon in the technology world.

Analysts say Symbian, which has more than 10 years of development behind it, is starting to look outdated and has lagged in supporting must-have new features like touch screens. This version of software deletes incorrect reference to Series 40, which is still owned by Nokia.

iPad: Apple’s advanced technology in a magical and revolutionary device

iPad is a whole new kind of device by Apple. Apple believes this new tablet PC will be the killer Web browsing device, the best way to read newspapers and magazines, perfect way to watch movies on the go, ruling portable gaming devices Because of its large, high-resolution LED-backlit IPS display, Multi-Touch screen, powerful Apple-designed chip.

iPad is thin and light enough to take anywhere (The screen is 9.7 inches measured diagonally. At just 1.5 pounds and 0.5 inch thin). Its battery backup is Upto 10 hours. With built-in 802.11n, iPad takes advantage of the fastest Wi-Fi networks. iPad also comes with Bluetooth 2.1 + EDR technology, letting you connect to devices like wireless headphones or the Apple Wireless Keyboard. iPad will also be available in a 3G model with superfast data speeds up to 7.2 Mbps.

Through this one can get a fast connection for surfing the web, downloading email, or getting directions. The powerful built-in speaker of iPad produces rich, full sound perfect for watching a movie or listening to music. iPad also comes with a headphone jack and a built-in microphone. iPad pricing starts from $499 to $829.
With all the magical combinations, iPad is claimed as a advanced and revolutionary device.

Under Windows 7 laptop reduces more battery life

Based on various forum posts, users are claiming that battery life running out very quickly after a laptop is upgraded from an older OS to Windows 7. Reports of battery life dropping to 15 or 30 minutes of life are not uncommon, and users afflicted with the issue often receive a warning from Windows urging them to “consider replacing your battery. Some have complained that their laptop battery has been permanently damaged as part of the upgrade.

Microsoft is now acknowledging that the problem is real and not isolated. Microsoft has confirmed that it is investigating the cause of dramatically reduced battery run time on laptops running Windows 7.

And it happens most of the world, almost 92000 search entries of Google search for the error message “consider replacing your battery.”

Goojje launches in after Google’s warning to leave china

A new search engine named Goojje has appeared in China. In Mandarin word “jiejie” (sounds like “goojje”) means older sister. While Goojje sounds like “sister”, the word Google sounds similar to the Mandarin word gege, which means “big brother”. Goojje has a message on its site which reads: “Sister was very happy when brother gave up the thought of leaving and stayed for sister”.

goojje

This site also contains very similar branding to Google. Goojje’s search results appear to be filtered for sensitive content in accordance with Chinese regulations.

Google said that hackers had tried to infiltrate its software coding and the e-mail accounts of Chinese human rights activists. Google warned to leave china unless the the China government relaxed censorship.

Flicka on Android Market is knocking at

Flickr.com is going to introduce its aptitude through Flicka on Android phone.

flicka screenshotWith Flicka, one can customize notifications to get immediate notification about the new Flickr contact uploads, Flickr mail, Photo stream comments, in your Android notifications bar.  Favorite (or any photo) can be viewed, and set the photo as your Android wallpaper or contact icon by this.  Flicka gives you the ability to quick and powerful searches on Flickr browse, add, and remove Flickr contacts  and easy upload content directly from your phone to Flickr. Its “Share” feature, allowing you to easily upload new photos or video to Flickr with a single tap. It also facilitates Custom photo slideshow and wallpaper slideshow on Android background wallpaper cycle between specific Flickr photos.

By signing up to the official Flicka mailinglist you can get notified of Flicka’s release on the Android Market.  To get the full advantage of Flickr, user should use a JavaScript-enabled browser and install the latest version of the Macromedia Flash Player.

Search Stories: Google’s new look and feel of marketing campaign

As Google has about 70 percent market share in search, it hardly needs to attract users. But last week Google has launched half dozen of short videos called “search stories” which look suspiciously like commercials posted on its blog and YouTube.

Cheermobile (My Favorite)

This Search Stories are titled like Parisian Love, Mad to Live, Batman, Newbie, Potholes, and High School. Google has launched these videos in a common tag line “Search on” to have the look and feel of a marketing campaign and give the feel of belongingness of Google homepage to its users. IT also stresses a variety of Google products, such as mapping, video, price comparisons, email and more. Some people are smelling  that the Search Stories are for the $100 million marketing push by Microsoft launched for its Bing search service, but Google said that it was feeling all warm and fuzzy and decided to make some kids-let’s-put-on-a-show videos and simply avoided the debate.

CakePHP Advanced Pagination – sort by derived field

This is my second post on cake. Yesterday I was trying to implement pagination on my cakephp application and got frustrated as it can’t(?) sort by derived fields like SUM(), AVG(). I ransacked for the solution and got many alternate ways. Here is one from Andy Dawson: http://bakery.cakephp.org/articles/view/pagination. He has done a great job. But I wanted to do it by the core pagination method and didn’t feel interested to add a new component as cake has already provided with this feature.

Here comes struggling – I spent a couple of hours to find out a way… and finally got it! yes it is possible to sort by derived fields using the built-in pagination feature of cakephp! Let’s talk about the solution a little later, first I’d like to introduce you with the exact problem I faced.

I was trying to show the list of products in a tabular format with product name and lowest price. The product title is from products table (Product model) and the lowestprice is the MIN of price field from products_of_merchants table(ProductsOfMerchant model). Each Product belongsTo a certain SubCategory and hasMany ProductsOfMerchant selling them on different price(s).

Controller code segment

$this->paginate = array(
	'conditions' => array('Product.sub_category_id' => $subcategory['SubCategory']['id']),
	'fields' => array(
		'Product.id',
		'Product.title',
		'MIN(ProductsOfMerchant.price) AS lowestprice'
	),
	'order' => array('lowestprice' => 'asc'),
	'limit' => 10,
	'group' => 'Product.id'
);
$products = $this->paginate('Product');
$this->set(compact('products'));

It works fine for the first time as default order by lowestprice asc. In the view, I wanted to sort the lowestprice (derived field) column interactively asc/desc.

View code segment

<?php echo $paginator->sort('Lowest Price', 'lowestprice'); ?>

Also tried with

<?php echo $paginator->sort('Lowest Price', 'ProductsOfMerchant.lowestprice'); ?>

I clicked the ‘Lowest Price’ link to sort by desc, no luck! cos it’s a derived field and in debug mode there is no “ORDER BY” clause at the end of the query. I found a lot of ppl looking for the solution of this same issue and here is the solve (+backstage scenes) I’m gonna share with you.

From the cake book I found this Custom Query Pagination.
First I added this function in the Product model for debugging.

Product Model code segment

function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) {
	print_r(func_get_args()); // for debugging
	$group = $extra['group'];
	return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group'));
}

Here is the output when I tried to sort by ‘lowestprice’ desc by clicking the ‘Lowest Price’ column header link:

Array
(
    [0] => Array
        (
            [Product.sub_category_id] => 5
        )

    [1] => Array
        (
            [0] => Product.id
            [1] => Product.title
            [2] => MIN(ProductsOfMerchant.price) AS lowestprice
        )

    [2] => Array
        (
        )

    [3] => 10
    [4] => 1
    [5] => 1
    [6] => Array
        (
            [group] => Product.id
        )
)

You can see when you try to sort by a derived field the order by array (array key=2) is empty. This is definitely a bug of the pagination method, but for now we need a patch/fix to get it work and you know it’s never a good idea to modify the core of any framework. The interesting part of the paginate function is it takes an $extra argument which contains an array with ‘group’ key. I added a dummy key-value array to the $paginate array in the controller and wow! it’s automagically appended with the $extra argument of the paginate function in the model. Now all I need is to pass the sort key somehow via the $extra array. This is exactly what I did:

Controller code segment

$this->paginate = array(
	'conditions' => array('Product.sub_category_id' => $subcategory['SubCategory']['id']),
	'fields' => array(
		'Product.id',
		'Product.title',
		'MIN(ProductsOfMerchant.price) AS lowestprice'
	),
	'order' => array('lowestprice' => 'asc'),
	'limit' => 10,
	'group' => 'Product.id',
	'passit' => $this->passedArgs // pass via $extra
);
$products = $this->paginate('Product');
$this->set(compact('products'));

I hope you know what does $this->passedArgs do. If not, no worry, you can see the output of pr($this->passedArgs) from any controller/view.

Here is the patch I applied to the paginate function in the model:

Product Model code segment

function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) {
	if(empty($order)){
		// great fix!
		$order = array($extra['passit']['sort'] => $extra['passit']['direction']);
	}
	$group = $extra['group'];
	return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group'));
}

And finally it worked great!

Oh! I forgot, there is a little pain in the view section. I’ve already said this is a patch, the paginate function can’t detect the current sorting direction of the derived fields automatically. The link with the derived field’s sorting column always remains direction:asc no matter you change it manually from the address bar to asc or desc! Here is the fix for view section:

View code segment

<?php
// echo $paginator->sort('Lowest Price', 'lowestprice');
// Use $html->link, not $paginator->sort
echo $html->link(__('Lowest Price', true), array(
	'controller' => 'sub_categories',
	'action' => 'view',
	'page' => $this->passedArgs['page'],
	'sort' => 'lowestprice',
	'direction' => (empty($this->passedArgs['direction']) || $this->passedArgs['direction'] == 'asc')?'desc' : 'asc',
	'limit' => $this->passedArgs['limit']
));
?>

Please turn off debugging by Configure::write(‘debug’, 0) otherwise you may see some annoying warnings and notices of undefined variables. Or you may use isset to check if the vars are set or not and modify the view code accordingly. To me it’s less important and didn’t bother to fix it.

It’s almost perfect now and worked happily ever after.. ;)

If you have any better idea or suggestion please share in the comments.

Zynga’s revenue has touched the sky in 2009

Zynga is the number one social gaming company on the web. Popular social online games by zynga are Cafe World, Dragon Wars, FarmVille, Fashion Wars, FishVille, Mafia Wars, PetVille, Pirates, Roller Coaster, Scramble, Special Forces, Street Racing, Vampires, Word Twist, YoVille, Zynga Poker and so on. No download is required for Zynga games, and Zynga uses Facebook, MySpace, Bebo, Friendster, Hi5, and iphone as platform for these games and social networking.

Zynga logo

When Zynga got 5 million users its goal had been to get to 12 million daily active users by the end of the year 2009, but now they have ended 2009 with around 65 million users.

Zynga’s revenue has increased like boom with its users. According to Zynga CEO Mark Pincus, ZYnga’s revenue run rate has increased by additional 246 percent to 260 percent in the year 2009. So, Zynga’s annualized revenue run rate is now more than $300 million in 2009. And, earlier this month, the company closed a $180 million round of funding.

Based on preliminary sales trend on virtual goods, Zynga will likely do at least $200 million in revenues this calendar year through virtual farm games only.