sábado, 3 de setembro de 2011



Submitted by: gaguerreiro

Posted at: 2011-09-01 02:43:19

See full post and comment: http://9gag.com/gag/232056

A look at Java 7's new features

A look at Java 7's new features:

There are a number of features in Java 7 that will please developers. Things such as strings in switch statements, multi-catch exception handling, try-with-resource statements, the new File System API, extensions of the JVM, support for dynamically-typed languages, the fork and join framework for task parallelism, and a few others will certainly be embraced by the community.

Below I outline the features and provide examples where appropriate. A zip file containing code snippets used in this post can be downloaded here.

Language enhancements

Java 7 includes a few new language features via Project Coin. These features are quite handy for a developer.

Diamond Operator

You may have noted on many occasions your IDE complaining of types when working with Generics. For example, if we have to declare a map of trades using Generics, we write the code as follows:

Map<String, List<Trade>> trades = new TreeMap<String, List<Trade>> ();

The not-so-nice thing about this declaration is that we must declare the types on both the sides, although the right-hand side seems a bit redundant. Can the compiler infer the types by looking at the left-hand-side declaration? Not unless you're using Java 7. In 7, it's written like this:

Map<String, List<Trade>> trades = new TreeMap <> ();

How cool is that? You don't have to type the whole list of types for the instantiation. Instead you use the <> symbol, which is called diamond operator. Note that while not declaring the diamond operator is legal, as trades = new TreeMap (), it will make the compiler generate a couple of type-safety warnings.

Using strings in switch statements

Switch statements work either with primitive types or enumerated types. Java 7 introduced another type that we can use in Switch statements: the String type.

Say we have a requirement to process a Trade based on its status. Until now we used to do this by using if-else statements.

private void processTrade(Trade t) {

String status = t.getStatus();

if (status.equalsIgnoreCase(NEW)) {


} else if (status.equalsIgnoreCase(EXECUTE)) {


} else if (status.equalsIgnoreCase(PENDING)) {




This method of working on strings is crude. In Java 7, we can improve the program by utilizing the enhanced Switch statement, which takes a String type as an argument.

public void processTrade(Trade t) {

String status = t.getStatus();

switch (status) {

case NEW:













In the above program, the status field is always compared against the case label by using the String.equals() method.

Automatic resource management

Resources such as Connections, Files, Input/OutStreams, etc. should be closed manually by the developer by writing bog-standard code. Usually we use a try-finally block to close the respective resources. See the current practice of creating a resource, using it and finally closing it:


public void oldTry() {

try {

fos = new FileOutputStream("movies.txt");

dos = new DataOutputStream(fos);

dos.writeUTF("Java 7 Block Buster");

} catch (IOException e) {


} finally {

try {



} catch (IOException e) {

// log the exception




However, Java 7 has introduced another cool feature to manage the resources automatically. It is simple in operation, too. All we have to do is declare the resources in the try as follows:


// your code


The above method with the old try can finally can be re-written using this new feature as shown below:

     public void newTry() {

try (FileOutputStream fos = new FileOutputStream("movies.txt");

DataOutputStream dos = new DataOutputStream(fos)) {

dos.writeUTF("Java 7 Block Buster");

} catch (IOException e) {

// log the exception



The above code also represents another aspect of this feature: working with multiple resources. The FileOutputStream and DataOutputStream resources are enclosed in the try statement one after the other, each one separated by a semicolon (;) separator. We do not have to nullify or close the streams manually, as they are closed automatically once the control exists the try block.

Behind the scenes, the resources that should be auto closed must implement java.lang.AutoCloseable interface.

Any resource that implements AutoCloseble interface can be a candidate for automatic resource management. The AutoCloseable is the parent of java.io.Closeable interface and has just one method close() that would be called by the JVM when the control comes out of the try block.

Numeric literals with underscores

Numerical literals are definitely eye strainers. I am sure you would start counting the zeroes like me if you've been given a number with, say, ten zeros. It's quite error prone and cumbersome to identify a literal if it's a million or a billion unless you count the places from right to left. Not anymore. Java 7 introduced underscores in identifying the places. For example, you can declare 1000 as shown below:

int thousand =  1_000;

or 1000000 (one million) as follows

int million  =  1_000_000

Note that binary literals are also introduced in this release too — for example "0b1" — so developers don't have to convert them to hexadecimals any more.

Improved exception handling

There are a couple of improvements in the exception handling area. Java 7 introduced multi-catch functionality to catch multiple exception types using a single catch block.

Let's say you have a method that throws three exceptions. In the current state, you would deal them individually as shown in below:

  public void oldMultiCatch() {

try {


} catch (ExceptionOne e) {

// log and deal with ExceptionOne

} catch (ExceptionTwo e) {

// log and deal with ExceptionTwo

} catch (ExceptionThree e) {

// log and deal with ExceptionThree



Catching an endless number of exceptions one after the other in a catch block looks cluttered. And I have seen code that catches a dozen exceptions, too. This is incredibly inefficient and error prone. Java 7 has brought in a new language change to address this ugly duckling. See the improved version of the method oldMultiCatch method below:

     public void newMultiCatch() {

try {


} catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {

// log and deal with all Exceptions



The multiple exceptions are caught in one catch block by using a '|' operator. This way, you do not have to write dozens of exception catches. However, if you have bunch of exceptions that belong to different types, then you could use "multi multi-catch" blocks too. The following snippet illustrates this:

public void newMultiMultiCatch() {

try {


} catch (ExceptionOne e) {

// log and deal with ExceptionOne

} catch (ExceptionTwo | ExceptionThree e) {

// log and deal with ExceptionTwo and ExceptionThree



In the above case, the ExceptionTwo and ExceptionThree belong to a different hierarchy, so you would want to handle them differently but with a single catch block.

New file system API (NIO 2.0)

Those who worked with Java IO may still remember the headaches that framework caused. It was never easy to work seamlessly across operating systems or multi-file systems. There were methods such as delete or rename that behaved unexpected in most cases. Working with symbolic links was another issue. In an essence, the API needed an overhaul.

With the intention of solving the above problems with Java IO, Java 7 introduced an overhauled and in many cases new API.

The NIO 2.0 has come forward with many enhancements. It's also introduced new classes to ease the life of a developer when working with multiple file systems.

Working with Path

A new java.nio.file package consists of classes and interfaces such as Path, Paths, FileSystem, FileSystems and others.

A Path is simply a reference to a file path. It is the equivalent (and with more features) to java.io.File. The following snippet shows how to obtain a path reference to the "temp" folder:

public void pathInfo() {

Path path = Paths.get("c:\\Temp\\temp");

System.out.println("Number of Nodes:" + path.getNameCount());

System.out.println("File Name:" + path.getFileName());

System.out.println("File Root:" + path.getRoot());

System.out.println("File Parent:" + path.getParent());


The console output would be:

Number of Nodes:2

File Name:temp.txt

File Root:c:\

File Parent:c:\Temp

Deleting a file or directory is as simple as invoking a delete method on Files (note the plural) class. The Files class exposes two delete methods, one that throws NoSuchFileException and the other that does not.

The following delete method invocation throws NoSuchFileException, so you have to handle it:


Where as Files.deleteIfExists(path) does not throw exception (as expected) if the file/directory does not exist.

You can use other utility methods such as Files.copy(..) and Files.move(..) to act on a file system efficiently. Similarly, use the createSymbolicLink(..) method to create symbolic links using your code.

File change notifications

One of my favorite improvements in the JDK 7 release is the addition of File Change Notifications. This has been a long-awaited feature that's finally carved into NIO 2.0. The WatchService API lets you receive notification events upon changes to the subject (directory or file).

The steps involved in implementing the API are:

  • Create a WatchService. This service consists of a queue to hold WatchKeys

  • Register the directory/file you wish to monitor with this WatchService

  • While registering, specify the types of events you wish to receive (create, modify or delete events)

  • You have to start an infinite loop to listen to events

  • When an event occurs, a WatchKey is placed into the queue

  • Consume the WatchKey and invoke queries on it

Let's follow this via an example. We create a DirPolice Java program whose responsibility is to police a particular directory. The steps are provided below:

1. Creating a WatchService object:

WatchService  watchService = FileSystems.getDefault().newWatchService();

2. Obtain a path reference to your watchable directory. I suggest you parameterize this directory so you don't hard code the file name.

path = Paths.get("C:\\Temp\\temp\\");

3. The next step is to register the directory with the WatchService for all types of events:

dirToWatch.register(watchService, ENTRY_CREATE, ENTRY_MODIFY,


These are java.nio.file.StandardWatchEventKinds event types

4. Initiate the infinite loop and start taking the events:



WatchKey key = watchService.take(); // this would return you keys


5. Run through the events on the key:

for (WatchEvent<?> event : key.pollEvents()) {

Kind<?> kind = event.kind();

System.out.println("Event on " + event.context().toString() + " is " + kind);


For example, if you modify or delete the temp directory, you would see statement as shown below on the console respectively:

Event on temp is ENTRY_MODIFY

Event on temp is ENTRY_DELETE

The relevant methods of the DirPolice source code are posted below (download the full source code):


* This initiates the police


private void init() {

path = Paths.get("C:\\Temp\\temp\\");

try {

watchService = FileSystems.getDefault().newWatchService();

path.register(watchService, ENTRY_CREATE, ENTRY_DELETE,


} catch (IOException e) {

System.out.println("IOException"+ e.getMessage());




* The police will start making rounds


private void doRounds() {

WatchKey key = null;

while(true) {

try {

key = watchService.take();

for (WatchEvent<?> event : key.pollEvents()) {

Kind<?> kind = event.kind();

System.out.println("Event on " + event.context().toString() + " is " + kind);


} catch (InterruptedException e) {

System.out.println("InterruptedException: "+e.getMessage());


boolean reset = key.reset();





Fork and Join

The effective use of parallel cores in a Java program has always been a challenge. There were few home-grown frameworks that would distribute the work across multiple cores and then join them to return the result set. Java 7 has incorporated this feature as a Fork and Join framework.

Basically the Fork-Join breaks the task at hand into mini-tasks until the mini-task is simple enough that it can be solved without further breakups. It's like a divide-and-conquer algorithm. One important concept to note in this framework is that ideally no worker thread is idle. They implement a work-stealing algorithm in that idle workers "steal" the work from those workers who are busy.

The core classes supporting the Fork-Join mechanism are ForkJoinPool and ForkJoinTask. The ForkJoinPool is basically a specialized implementation of ExecutorService implementing the work-stealing algorithm we talked about above.

We create an instance of ForkJoinPool by providing the target parallelism level — the number of processors as shown below:

ForkJoinPool pool = new ForkJoinPool(numberOfProcessors)

Where numberOfProcessors = Runtime.getRunTime().availableProcessors();

However, the default ForkJoinPool instantiation would set the parallelism level equal to the same number obtained as above.

The problem that needs to be solved is coded in a ForkJoinTask. However, there are two implementations of this class out of the box: the RecursiveAction and RecursiveTask. The only difference between these two classes is that the former one does not return a value while the latter returns an object of specified type.

Here's how to create a RecursiveAction or RecursiveTask class that represents your requirement problem (I use the RecursiveAction class):

public class MyBigProblemTask extends RecursiveAction {


protected void compute() {

. . . // your problem invocation goes here



You have to override the compute method where in you need to provide the computing functionality. Now, provide this ForkJoinTask to the Executor by calling invoke method on the ForkJoinPool:


Supporting dynamism

Java is a statically typed language — the type checking of the variables, methods and return values is performed at compile time. The JVM executes this strongly-typed bytecode at runtime without having to worry about finding the type information.

There's another breed of typed languages — the dynamically typed languages. Ruby, Python and Clojure are in this category. The type information is unresolved until runtime in these languages. This is not possible in Java as it would not have any necessary type information.

There is an increasing pressure on Java folks improvise running the dynamic languages efficiently. Although it is possible to run these languages on a JVM (using Reflection), it's not without constraints and restrictions.

In Java 7, a new feature called invokedynamic was introduced. This makes VM changes to incorporate non-Java language requirements. A new package, java.lang.invoke, consisting of classes such as MethodHandle, CallSite and others, has been created to extend the support of dynamic languages.

Wrapping up

As we've covered, Java 7 has a few bells and whistles that should put smiles on developers' faces, and the open-source collaboration and support for dynamic languages via JVM extensions should also be well received by those outside the Java community.


15 tips to get the most out of Google Docs

15 tips to get the most out of Google Docs: Documents

Believe it or not, Microsoft Office is over two decades old now. And in that time, it has grown to become the number one commercial office suite across the world, with applications such as Word, Excel and PowerPoint the default tools of choice for enterprises and consumers alike.

Of course, there are a number of free alternatives, such as Open Office and SoftMaker (2008), but with compatibility issues, lack of familiarity and without full-feature functionality, millions chose to stick it out with the original Microsoft Office. But then Google Docs arrived on the scene.

Google Docs: A potted history

Google starting rolling out its answer to Microsoft Office after acquiring Upstartle, creators of Web-based word processor Writely, in March 2006. Google later launched Google Labs Spreadsheets in June 2006, which was based on XL2Web from 2Web Technologies. Writely was fully integrated with Google accounts in September 2006.

Google Docs was released to Google Apps users in February 2007, presentations were added into the mix in September that year and then Google Docs, alongside other Google Apps, left beta mode in July 2009. That’s about as potted a history as you’ll get, but it should at least jog your memory as to the path Google Docs has taken to where it is today.

Google Docs vs. Microsoft Office

Google Docs offered a number of key advantages over Microsoft Office. Namely, it was free to use, it was cloud-based and users could easily collaborate in real-time across the Web. Since then Microsoft has tried to fight back, with a free version of its own Office suite and also a cloud-based alternative – Office365, which was launched back in June.

So, the battle is intensifying and Google Docs has taken some market share, but cloud computing is still gaining traction and Microsoft Office is still firmly ingrained in many people’s computing psyche. Plus, Google docs traditionally lacked the full functionality of Office, but it is evolving into a pretty robust set of free tools that are improving every month.

At its most basic level, Google Docs lets you create, edit and share documents, spreadsheets, presentations, forms and drawings. You can even upload Microsoft Office files directly into Docs, or downloads Docs files in Microsoft Office formats. But what else can it do?

The thing with cloud-based applications such as Google Docs, is they can be continuously updated – sometimes updates are released without you even knowing about it, or there may simply be additional functionality that you never knew existed since you first dismissed Docs back in 2007.

We’ve had a dig around, pooled our knowledge and compiled a list of tips and tricks to help you get the most out of Google Docs. Some of these you may know already, others maybe not.

1. Back-up, download all

Google Docs is all about the cloud, so it doesn’t understand the concept of ‘desktop’, right? Wrong. Google Docs actually makes it very easy to both upload and download files.

If you want to back-up all your Google Docs files stored on Google’s servers to your hard drive, select what files you want to download from the main the Google Docs screen. Next, click ‘Actions’ and select ‘Download’, then you’ll be presented with this dialog box:

You’ll then see how many items of each file type you can download, and you can even convert the file-types. You’ll end up with a neatly packaged zipped folder on your hard drive.

2. Drag and drop

Despite being cloud-based, you can still drag and drop between your hard drive and your Google Docs account, though this only works in Chrome or Firefox.

Simply drag your file(s) from your folder onto the main main Docs screen…and voila. But by clicking on the ‘Upload’ button, you can select entire folders to upload, and this will also also bring any sub-folders with it.

3. Inserting images

Speaking of drag and drop, you can also drag and drop images directly from your desktop into specific Google Docs, which is a pretty quick way of sprucing up a document.

Moreover, you can actually insert images directly from a Google Image Search and Picasa Web Albums. Simply go to ‘Insert’ and then ‘Image’ on the menu bar, and take it from there.

4. Revision History

Good old Track Changes. A staple part of life on Microsoft Office since, well, ever. When multiple people have to work on a single document, the need to monitor changes each person makes is imperative, and this functionality is replicated on Google Docs in the form of Revision History.

Go to ‘File’ and ‘See Revision History’, and you will see all versions of a document as it has progressed. Google Docs auto-saves everything you do, so this can be a particularly useful feature, and you can see who made each amendment to the document too. Users can even view two versions simultaneously, and see color-coded changes.

5. Google Docs Viewer

The Google Docs Viewer lets users view many file types online, including PDFs and Microsoft Office formats, as well as image files. You can also create a link enabling others to view your document easily in any browser.

The Google Docs Viewer supports over 15 different file types, including Microsoft Word/Excel/PowerPoint, Apple Pages (.PAGES), Adobe Illustrator (.AI), Adobe Photoshop (.PSD), Tagged Image File Format (.TIFF) and more.

The Google Docs Viewer is connected directly to Gmail, so if you receive an attachment in Gmail, click the ‘View’ link, and the attachment will be displayed in the Google Docs Viewer.

6. Google Docs Templates

Microsoft Office has plenty of document templates to help get you started – whether that’s creating your CV, a letter or producing an invoice. And believe it or not, Google’s word processor and spreadsheet applications have hundreds to help kick-start any number of projects you’re working on.

In the main Google Docs homepage, click ‘Create New’, and then ‘From Template’. From there, you can choose from ‘Most Users’ or ‘Highest Rating’, and specify whether you’re looking for documents, spreadsheets, presentations, forms or drawings.

7. More editing bang for your buck

If you want to max out your typing space, that’s easily done. Go to ‘View’ and then ‘Full Screen’, this will fill your entire browser window with your document. Want to lose everything and use up the entire screen space? Pressing F11 on your keyboard should achieve this on most browsers.

8. Search Google Docs and Gmail Together

Naturally, Google Docs and Gmail are quite well integrated, and you can integrate them even further by tweaking your settings.

You can search your Google Docs from within Gmail, by clicking the ‘Settings’ icon in the top right of the screen, click the Labs tab and then scroll until you see the ‘Apps Search’ option. Click ‘Enable’, make sure you save this change and then then all searches within Gmail will include Google Docs (and Google Sites) results below the Gmail search results.

9. Quickly insert links

Hyperlinks are what the Web is all about, right? In Google Docs, you can either select ‘Insert’ and then ‘Link’ whilst highlighting some text, or you can speed things up a little and hit Ctrl+K.

But Chrome and Firefox users can also drag an item from their Bookmark menu in the browser onto the canvas, where it will instantly become a hyperlinked piece of text.

10. Google Docs to store ALL your files

Okay, we’ve covered how Google Docs lets you store all your important documents. But in fact, it can be used to store just about any kind of file, whether that’s an mp3 or a .jpg. Of course, you won’t be able to ‘play’ all these files, but Google Docs will play many types of video using Google Video player. So you can use Google Docs as a sort of cloud-based backup tool for all your files.

Say you want to store your entire mp3 collection in the cloud, you can opt to pay for a storage plan, which can be used across all Google services including Gmail, Picasa and Google Docs.

Of course, a standard Google Docs account comes with 1GB of free storage for uploaded files, this doesn’t include your actual documents created in Google Docs or files you’ve converted.

If you run out of storage, an extra 20GB a year will cost $5, 80GB will cost $20, 200GB will cost $50…all the way up to a whopping 16TB, which will set you back $4,096.

11. Add YouTube videos to Presentations

Google owns YouTube, so it’s only natural it would integrate the video streaming platform with Google Docs in some way. Indeed, you can actually search and add YouTube videos into your Google presentations – click ‘Insert’, select ‘Video’ and a window will pop up letting you search YouTube. Select the video and double-click to insert it. You can then move and resize the video as you wish.

12.Cloud Magic

CloudMagic is an instant search extension for Gmail, Contacts and, of course, Google Docs.

Working across Chrome and Firefox on Windows, MacOS and Linux (32 & 64 bit), the Cloud Magic extension will list relevant emails, documents, calendar events and contacts as you type. But perhaps its most useful feature is that it lets you search offline, meaning if you find yourself without an Internet connection, you can still trawl your Google Docs, as well as your emails, calendar and contacts.

13. Send to Google Docs

The Send to Google Docs Chrome extension helps users save Web pages to Google Docs. You basically click the extension icon on the Web page you want to save, and hit ‘Save in Google Docs’ on the Google Docs Viewer that pops up.

You will then have the entire Web page saved to a Google Doc, including active hyperlinks and all the images on the page. It won’t, however, work on sites that require a log-in or session.

14. WatchDoc

Google Docs is all about collaboration, but how do you know if changes have been made to a file without checking? The WatchDoc Chrome extension lists your shared documents that have been updated since you last viewed them.

Once installed, WatchDoc sits in Chrome’s toolbar until someone updates or adds a comment to a shared Google Doc. Then, you’ll see a notification badge showing how many updates have been made. You can click the WatchDoc button and you’ll see a list of which documents have been updated, who updated them and when.

15. Keyboard shortcuts

A quick one to finish things off here.

Keyboard shortcuts are the ultimate way to speed up your productivity. And if you’re accustomed to the Ctrl+C/Ctrl+V way of doing things, Google Docs has many of the same, familiar shortcuts – plus a few additional ones.

Google has provided a compendium of keyboard shortcuts from across its main office applications. You can access these here: Google Documents | Google Spreadsheets | Google Presentations.

Over to you

These are just a selection of some of the ways you can optimize your experience on Google Docs, but there are many, many more shortcuts, tips and tricks to help you get the most from it.

Do you have any you’d like to share? Or is there a really obvious feature that Google Docs hasn’t yet implemented? Leave a comment below.

terça-feira, 30 de agosto de 2011

Superior Alternatives to Crappy Windows Software [Crapware]

Superior Alternatives to Crappy Windows Software [Crapware]:

Superior Alternatives to Crappy Windows SoftwareWhether it comes bundled with your computer, bundled with other software, or is just the go-to program for a specific task, the Windows ecosystem is rife with oft-used, yet craptastic software. We asked you what your most hated Windows apps are, and you gave us tons of shudder-inducing examples. We've compiled your answers into a list of our least favorite crapware, and the better programs you can use in their place.

Application to Avoid: Adobe Reader

Indictment: Slow as molasses, insecure, and runs annoying helper app at startup

Superior Alternative(s): We prefer SumatraPDF, though Foxit Reader and PDF-XChange Viewer are also popular alternatives

Notes: Adobe Reader isn't great, but you may find that some PDFs—particularly those with watermarks, editable form fields, or other special features—work better in Adobe Reader than in other PDF readers. If you have to work with PDFs often, Adobe Reader might be unavoidable, but it's a good idea to try something like Sumatra first just to make sure.

Superior Alternatives to Crappy Windows SoftwareApplication to Avoid: Adobe Flash

Indictment: Slows your computer, causes frequent browser crashes, hogs resources, drains battery, makes laptops heat up, and much more.

Superior Alternative(s): None, sadly.

Notes: It's pretty hard to go without Flash these days. HTML5 is slowly replacing it in some cases, but a lot of sites still require Flash. The best solution is to install something like Flashblock, available for both Chrome and Firefox, which will let you load Flash only when you need it. Alternatively, you can uninstall the Flash plugin entirely and use Chrome's self-contained version when you need it. This has the added advantage of loading HTML5 on some sites, like YouTube, when using Flashblock would just block the original Flash instead of serving the new HTML5 content.

Application to Avoid: Norton, McAfee, and other premium Antivirus suites

Indictment: Pricey, Slow, Bloated

Superior Alternative(s): Microsoft Security Essentials

Notes: Ever since Microsoft Security Essentials came out, you haven't had much of a reason to use anything else. MSE is lightweight, good at catching viruses, and does all of its work in the background without bugging you. If you really don't like MSE, though, you have a few other solid options.

Application to Avoid: Internet Explorer

Indictment: Always stuck in the past

Superior Alternative(s): Google ChromeFirefox, Opera

Notes: IE isn't horrible (in fact, version 9 has made a few improvements), but it always seems behind the times compared to every other browser in existence. Unless it's the only browser that can load a specific webapp, it's not worth your time. Use IE to download a more extensible, feature-filled browser and forget about it.

Superior Alternatives to Crappy Windows SoftwareApplication(s) to Avoid: Browser Toolbars

Indictment: I don't even know where to start. They'll change your home page, track your browsing habits, take up space, and offer you features you don't want in return.

Superior Alternative(s): Not installing toolbars.

Notes: There are a few exceptions to this rule, but in general, you want to avoid browser toolbars at all costs. Toolbars often come packaged with other software and hijack the crap out of your browser, so any time you see a checkbox with the words "Ask Toolbar" next to it, do whatever it takes to keep that thing off your system.

Application to Avoid: Windows Media Player

Indictment: Lack of format support, crappy interface

Superior Alternative(s): VLC, KMPlayer, Media Player Classic

Notes: Windows Media Player isn't all bad, but rarely is it preferable over simpler video players like VLC and KMPlayer.

Application to Avoid: iTunes

Indictment: Slower than a turtle with dumbbells on its feet, comes with the annoying Apple Software Update and the unnecessary QuickTime

Superior Alternative(s): Winamp, Foobar2000, MediaMonkey, Spotify, and tons of others

Notes: If you have to sync an iOS device, you might be stuck with iTunes. However, you can always use iTunes solely for syncing and use something different for actually listening to your music, which'll help you escape iTunes' bloat for most of the day.

Application to Avoid: QuickTime

Indictment: Unnecessary, comes with the annoying Apple Software Update

Superior Alternative(s): VLC, KMPlayer, Media Player Classic

Notes: QuickTime isn't nearly as bad as it used to be, and if you use iTunes, you have to have it on your system. If you're not going to use iTunes, though, you can play QuickTime videos in VLC without a problem. VLC and Media Player Classic even come with a browser plugin on the off chance you come across a QuickTime-only format video embedded in a web page.

Superior Alternatives to Crappy Windows SoftwareApplication to Avoid: WinZip and WinRAR

Indictment: Pricey, Unnecessary

Superior Alternative(s): 7-Zip, among others

Notes: WinZip is completely unnecessary on modern Windows machines, since it has ZIP support built-in. On the rare occasion ZIP isn't good enough, RARs provide great compression, but WinRAR is shareware, and RAR isn't that much better than 7-Zip's 7z format. For more information on file compression, check out our rundown of the best way to compress your files.

Application to Avoid: Nero Burning ROM, Roxio Creator, and other bloated CD/DVD burners

Indictment: Pricey, bloated

Superior Alternative(s): ImgBurn

Notes: Suites like Nero and Roxio are certainly more advanced than their freeware counterparts, but the majority of users will never need their more advanced features—especially considering their cost (both in dollars and in bloat). Plus, between smartphones and thumb drives, how often do you burn optical media, anyway?

Application to Avoid: Paint

Indictment: Is it still 1995?

Superior Alternative(s): Paint.NET, GIMP

Notes: If you ever have to do any basic image editing, you've probably realized Microsoft Paint is an incredibly primitive (almost childish) program. Paint.NET will serve your basic image editing needs, while GIMP provides more advanced features.

Application to Avoid: AIM, Windows Live Messenger

Indictment: Only support one network at a time, filled with ads

Superior Alternative(s): Pidgin, Miranda, Trillian, Digsby

Notes: We can't recommend Pidgin enough, though if you don't like it, Trillian and Digsby are also feature-filled, multi-protocol options. However, both contain either ads or bundled crapware, which is the exact problem we're trying to solve today. They're certainly better than AIM and Live Messenger, just be aware they're still dangerously close to being adware and crapware.

Application to Avoid: Windows Picture Viewer

Indictment: Doesn't support every format, very basic

Superior Alternative(s): IrfanView, XnView

Notes: Windows Picture Viewer is okay, but if you want support for other formats and extra features like keyboard shortcuts, IrfanView is a great replacement.

Application to Avoid: Skype

Indictment: Difficult to quit, runs at startup, horrible interface

Superior Alternative(s): Google Video Chat

Notes: This one's a little harder to escape, since everyone else you know probably uses Skype. But it's such a pain in the butt, it's worth trying to get all your friends to convert, since Skype probably annoys them just as much as it does you.

Superior Alternatives to Crappy Windows SoftwareApplication to Avoid: Microsoft Office

Indictment: Pricey, painfully slow, difficult to use

Superior Alternative(s): LibreOffice, Google Docs

Notes: Office suites have never been the poster children for blinding speed, but Microsoft Office is one of the worst offenders. It feels like you stare at that splash screen for hours before you actually get to start working. If you don't absolutely need Microsoft Office, LibreOffice is a great, free replacement that can handle most users' needs, though Google Docs'll also get the job done for more adventurous users.

Application to Avoid: Notepad

Indictment: Severely lacking in features

Superior Alternative(s): Notepad++, Notepad2

Notes: It's fine for one-off text edits, but if you ever spend any time in text editors, you know how painfully basic Windows' Notepad is. Notepad++ is is packed with useful features that make it stand out over Notepad. If you really want to complete the transition away from Notepad, a few system tweaks can make sure you never have to deal with it again.

Application to Avoid: Windows Command Prompt

Indictment: Annoying interface quirks, lacks real power

Superior Alternative(s): Cygwin + Console2, PowerShell

Notes: If you rarely visit the command prompt, Windows' built-in offering is probably fine. But if you're a heavy command line user, you'll want something a bit more advanced. Users familiar with Windows commands will love PowerShell, which is bundled with Windows 7, while UNIX veterans will love the Cygwin shell coupled with a better terminal program like Console2.

It's hardly an exhaustive list, but these are certainly the most annoying pieces of crapware you'll find on a given machine. Got another program that we didn't mention? Tell us about it (and its superior alternative) in the comments.

domingo, 28 de agosto de 2011

Breaking Into Social Gaming — A Must-Read Guide To Entering the Facebook Game Space

Breaking Into Social Gaming — A Must-Read Guide To Entering the Facebook Game Space:

Mike Turner is a managing partner for Bitfold Online Games, an independent social game developer that focuses on original social game IP for Facebook, international social networks, and mobile devices. Read more about Bitfold after the article.

The social gaming market is without doubt the new buzz in the world of gaming. The top companies in the social market have launched games which have millions of users and million in monthly revenue. However, most of the successful companies in the space are either totally new companies like Zynga or casual gaming companies like Popcap games or King.com. Only a small handful of developers & publishers established on other gaming platforms (consoles, MMO, etc.) have had any success in the social market.

Why is this?

In our opinion it’s because these casual gaming companies & new upstarts have gone into the space with the exclusive intention to take risks & experiment within the space. Through extensive experimentation, these companies have learned how to make good games that social networking users want to play. Developers established in other platforms such as consoles or MMOs do not possess similar experience. They therefore have had a much harder figuring out how to make games users want to play their games and have experienced many failures in the space.

In our view however, this doesn’t have to be the case. We believe that if any new entrant is able to create games that social networking users love to play and learn how to incentivize these users to keep playing & spend money, they can be successful.

This article attempts to explain the keys to creating a successful long-term presence in the social gaming market. It is targeted at any developer or publisher who has had success in other markets and wants to get into social gaming.

Part 1 – The social gaming market for large game companies

Before entering a new space, it’s first important to determine what return is likely in the market and decide whether this return is enough to justify the risk and cost of entering it. This section tries to provide the information required to make that decision by providing the following information:

  1. Definition of the social gaming market

  2. Performance of successful social game developers and where new entrants can realistically hope to place among them

  3. The key trends among successful social game developers that make them successful The cost of entering the social market

  4. The performance of brands in social games

How do you define the social gaming market?

Social games sometimes mean different things to different people. Most often though, it is used to describe games that are played primarily on social networking sites or games that can be played with a person’s real world social graph. The primary platforms on which these games are played are described below.


With nearly 700 million registrations and 350-400 million active users monthly, it is undoubtedly the most popular social networking platform in the world. According to ALLFacebook.com, 53% of these users play Facebook games. Because of this highly active userbase and a high percentage of users in “rich” countries, it presents a great platform for gaining lots of high-monetizing users. However, in the last year, the cost of acquiring users on Facebook has risen sharply. Adparlor estimates that purchasing installs can cost anywhere from $.50 – $3 per install. Thus launching a game on Facebook often requires heavy marketing investment to gain a large number of users.

Facebook – The 400 million pound gorilla in the social gaming space

Other Social Networks

There are many other social networks outside of Facebook. These networks fall into several categories.

  1. Regionally popular general social networks such as Orkut (Brazil), StudiVZ (Germany), Vkontakte (Russia), and more.

  2. Secondary English speaking networks (Bebo, Blackplanet, Tagged, etc.)

  3. Specialty networks focused around specialized themes such as gaming (IMVU) or Journaling (Livejournal).

Individually, each network only has around 2 million (IMVU) to 50+ million (Orkut) monthly active users a piece. Added together however, the combined active userbases add up to hundreds of millions of active users. Therefore, games that target a large number of social networks at once have the possibility to gain several tens of thousands or millions of extra active users. Among those who have ported their games to outside social networks are leading Facebook developers LOLapps, Wooga, OMGPOP, and Kixeye.

Some of the popular regional social networks

Mobile Social Games

A growing number of mobile games are including social functionality. This social functionality varies wildly at the moment, ranging from simple leaderboards, to interaction with strangers who also have the game installed, to interaction your Facebook friends. The latter option (playing with your Facebook friends) is enabled by integrating Facebook Connect into the app. This option enables full social games of the type that would be seen on Facebook to be played on mobile. A great example of this is Smurf’s Village by Capcom. Mobile social games are still a very young market in Western countries, and at the moment there are not huge volumes of data to gauge its potential. However, as adoption of internet capable smartphone devices is currently increasing, it is a market with potential for high growth.

Playfish’s “Who has the biggest brain” on the iOS

Market Performance of the Top 80 Developers (and where you might place)

Let’s imagine that you have several hundred thousand to a few million dollars to invest in entering the social gaming market. What can you realistically expect out of your investment? To answer this, it’s helpful to know how much money other developers are making so that you have a reference for what your earning potential is. To establish this reference, we provide an estimate of gross revenue of the top 80 developers below.

Methodology for Revenue Estimation

In our last article published in Socialtimes, we quoted a very basic method for calculating revenue based upon the amount of daily active users (or DAU for short) that a developer has. This method is borrowed from Lisa Marino, CEO of RockYou in her presentation titled “Monetization of Social Games”. Her method of revenue approximation states that most games monetize between $10 and $30 for every 1000 DAU, and that well monetized games can earn upwards of $100 per 1000 DAU.

To use this method, we first take the total DAU count of each of the top 80 game developers from Appdata.com. From this we establish 5 ranges of DAU counts, pictured in Figure 1. Next, we apply Lisa’s approximation and provide revenue estimates for two developers within each range (shown in Table 1). This provides us with a general range of what social game developers are earning.

Please note that this revenue estimation method is very basic and only intended to provide a basic idea of social game revenues. Estimating social game revenues rigorously would require more sophisticated statistical methods and a more complete dataset than is used in our estimation.

Figure 1 – Number of developers that fall within various ranges of Daily Active User counts on 5/29/11 Source Data: Appdata.com

Table 1- Revenue estimates based on the number of daily active users each developer has Source Data: Appdata.com, Revenue Estimation Method: “Monetizing Social Games”, p.11, by Lisa Marino

Looking at the top 80 app developers, we see DAU ranging from over 49 million at the top (Zynga) to under 150k at the bottom. Excluding Zynga, this rough approximation predicts daily earnings of $4k to $154k assuming $30/1000 DAU and daily earnings of $8k to $309k assuming $60/1000 DAU.

Analysis & Interpretation of the Numbers

Looking at these numbers we can identify the following trends

  • Zynga is the undisputed leader, they have more DAU than their 9 top competitors combined

  • Only 16 developers had DAU above 1 million. This will of course fluctuate throughout a year, but the data indicates that only a handful of developers have managed to achieve top earnings in the social market. Those that do make enough good games to place into this bracket however will earn handsomely.

  • 63 developers have achieved DAU counts over 100,000, which our approximation predicted would earn 1 million a year or more in revenue. Thus even if you only end up with 1 game that averages 100k DAU in a year, you’ll at least have several hundreds of thousands of dollars in return.

  • By looking at the differences between $30/1000 DAU and $60/1000 DAU, we see that if games are well monetized, game revenues can be very high.

Overall, we see that a lot of developers are achieving moderate success, and the few that have immensely popular games are achieving earnings in the tens of millions.

Where can you Expect to Place?

It depends on your will to enter the space with a smart strategy. If you take time to really understand what makes successful developers successful, try to create excellent games, create proper live operation & marketing strategies, experiment rigorously, and commit to a long-term stay in the social market, you could find yourself on the top earners. If you do anything else, you’ll likely find yourself in the lower end of the success scale or in the social deadpool entirely.

What are the key market players doing to be successful?

Six of the market leaders in social gaming

Key Trends Among the Top 80 Successful Facebook Developers

To understand what top companies are doing to be successful, it is helpful to look at their performance in the market and see if there are any common trends these companies follow. By looking at the MAU, DAU of the top companies, playing their games, and examining their financial history, we notice the following trends.

  1. DAU counts range from 100k DAU to 49 million DAU

  2. Many successful developers have more than one game.

  3. The total active userbase of most developers is gained from the combined userbases of the games they operate, but a majority of their active users come from only a few highly successful games.

  4. In most developer’s portfolios, there are several games which have mediocre performance or are complete failures.

  5. Figure 2 – A view of 6 of the 40 top developer’s list of games. In this we see points 2-4 illustrated.

  6. 5. Developers with multiple games cross-promote their other games. This allows these developers to pass users which have stopped playing one game to another, allowing them to retain that user.

  7. Wooga’s game bar, where all of their other games are shown.

  8. 6. New features & content are added to the successful games constantly (usually daily or weekly)

  9. Updated content in Nightclub City

  10. A large percentage of the top developers have had either heavy capital investment or pre-existing operating capital with which to develop & market with.

Keys to Success

From these above trends, we can draw a few general conclusions about what core steps these developers are taking to create their success.

  1. Creation of high quality social games that users want to play

  2. The financial resources to acquire millions of users with advertising

  3. Development of multiple game products.

  4. Heavy experimentation with different game concepts & gameplay mechanics that has led to both failures & successes.

  5. Consistent ongoing improvements to games to keep users engaged & playing

In short, it’s no big secret. They create good games tailored to what social networking users want to play, market them properly, and constantly improve them.

It’s these measures that new entrants should try to emulate. New entrants should be prepared to focus on making fun & appealing games, to support their games long-term, to experiment constantly with different game concepts and gameplay mechanics, and to create a smart strategy for user acquisition.


So, let’s assume you are ready to take on the challenge of entering the social gaming market. What kind of costs will you incur in doing so? This section provides an answer to that question.

In social game development cost boils down to three main areas: development, marketing, and live operation. The magnitude of these costs is explained below:

  • Development: According to Zynga, each game costs $100k to $300k to make & launch.

  • Marketing: To market on Facebook, Adparlor (a leading social game advertising company) states that ads cost anywhere from $.50 per install when a game is first launched and up to $3 per install at the later stages of a game’s lifecycle. Depending on how many ads are purchased, the cost for a launch could range from several tens to hundreds of thousands of dollars.

  • Live Operation: Ongoing maintenance & content updates will require a live team. Your game will thus have a burn rate that varies depending on the size of your live team and their salary. Assuming a minimal team of 1 developer, 2 artists, 1 half time tester, and 1 marketing & monetization specialist, your live operation team would require a payment of 4.5 man months each month. Depending on where your live team is, this could cost anywhere from $12.5k (assuming $2500 average man-month cost) monthly to over $20k (assuming a $5000 average man-month cost) monthly.

  • Totals:

Table 2 – An estimate of total social game development & launch costs

The Cost of a Product Line

As illustrated above, many companies launch multiple games within short time periods. This is generally done both to experiment with different designs and to establish a network of related games that users can migrate between. For first time entrants, launching multiple games in the first year can be a good strategy as it will let you test the waters with different gameplay mechanics and themes. An estimation of what such a strategy would cost is done below.

To do the estimation, we need to make some assumptions. In this example, we will make assumptions about how many games are developed, what each game costs, how many games are successful, what DAU count constitutes a “successful game”, and what rates the successful games monetize at. These assumptions are provided below:

  • Assumed number of games: 4

  • Average daily DAU for each successful game in a year: 100k – 800k/li>

  • Number of successful games: 1-2

  • Average development cost of each game: $180k

  • Average marketing costs of each game over 6 months: $130k

  • Live operation costs for each game over 6 months: $120k

  • Assumed monetization rates: $30/1000 DAU – $60/1000 DAU

  • Assumed revenue cut to Facebook: 30%

Table 3 – An estimate of the range of success possible

From these rough estimates, we see that if games are only mediocre successes, losses will likely be incurred. However, if a few games become very popular, it can be an outstanding new revenue source for a new entrant that will allow them to establish themselves even further into the social game market. Therefore naturally, a company will want to do everything in its power to make games that can be popular.

How do brands & existing IPs perform in the social space?

Developers successful in other gaming markets have several successful IP lines that are tried and true. Therefore, these IPs are their best bet for a success in the social space right?

Well, according to the numbers, maybe not.

Before launching brands into the social space, it’s good to look at how brands perform in this space. To answer this question, we performed an analysis of the performance of branded games in the top 500 apps on Facebook in March 2011. The results of this analysis are explained below.

We broke brands down into the following categories.

  • Casual skill game IP (Bejeweled, Bubble Pop, etc.)

  • Sports games (Soccer, American Football, Baseball, etc.)

  • Well known board or card games (Uno, Poker, Monopoly, Farkle, etc.)

  • Gameshows (Family Feud, The Price is Right, etc.)

  • Game IP ported from other platforms (console game IPs, hardcore games, TV shows/books, etc.)

  • Casual downloadable game IP (Hidden Object, Management, etc.)

  • MMO Games

The following table shows the performance of each of these genres

Table 4 – An analysis of brands on Facebook out of the top 500 apps on 3/21/2011

Doing the math on the number in this table, we see that out of all of the brands listed above, existing IPs ported from other gaming platforms such as PC downloadable, console, and MMO account for only 12% of the DAU in the top branded games.

Looking further outside the top 500 apps, we find several more Facebook versions of existing IPs created by large name publishers. Listed in the image below, we find 17 existing game IPs ported from other platforms to Facebook by several famous game publishers. Out of these 17 IPs has, only one has managed to get over 100k DAU. That’s a bad indication for the performance of brands & existing IPs in the social space.

Figure 3 – Over 17 ported game IPs, only 1 game with a DAU count over 100k

Why are the numbers like this? Why do gameshow, card/table, sports, and skill games do well in the social space, but IPs popular on other platforms fail? There are 3 reasons for this in our opinion.

  1. Social Gamers are not heavy gamersThe fact is that social network users are the general internet using population of the world. They’re your parents, your spouse, your busy friends who just had two kids, not avid gamers. A lot of them are either entirely new to gaming or have been only occasional gamers in the past so they probably haven’t heard of your brands before the thus majority of users have no incentive to play them.

    What they do have incentive to play are brands that everyone has played and knows is fun. Bejeweled, Uno, Monopoly, Family Fued, and soccer are brands that everyone knows which are fun & have lots of replay value. However, if it’s not something everyone knows and likes, your brand’s name is not too likely to bring you any great benefit.

  2. Mechanics that make the IP line popular don’t usually fit well into Facebook:The mechanics that make many IP lines so popular on other platforms don’t work well on Facebook.

  3. 3. Brands sometimes limit the ability for a game to be unique among other high quality games:Success in the social space is about making games users want to play. When making a branded game, its gameplay mechanics & theme are restricted to what the brand permits. These brand restrictions may limit the ability for you to make innovative design decisions that will make the games more appealing to users than competing games.

Nightclub city vs. Ubisoft’s Party Central. Nightclub city was a highly successful party management game. When Ubisoft brought its own party management game Party Central to Facebook, it stayed true to the mechanics of their Party Planner brand, but it failed to be more unique or compelling than Nightclub city. Therefore, Nightclub City succeeded and Party Central failed.

Should you make your Existing IPs into Social Games?

According to the numbers, existing IPs have historically performed terribly. Therefore, our professional recommendation would be not to unless they have immense worldwide name recognition and game mechanics that will very clearly be fun on a social network. If you have to struggle to think about how your IP will be fun for users and compete against other games of its type on Facebook, then it’s likely it won’t do either.

The exceptions are:

  • If your IP is extremely well known and/or has casual mechanics that have high replay value.

  • Your IP can fill some a niche on Facebook better than its competitors.

If you are intent on bringing a brand to the space, you must make the gameplay more unique and fun than other games competing for the demographics you’re targeting! IP recognition alone won’t cut it.

Part 2 – Strategies for Success

In the above section we painted a picture of the costs, potential returns, and success strategies being used by developers in the social gaming market. In this section we aim to explain what strategies and best practices that a publisher or established developer can use to succeed in the social gaming market.

Covered are the following areas

  1. The main risks of social game development

  2. How to create successful products

  3. Live operation, marketing, user acquisition, and monetization strategies

  4. Creating a good team and structuring a proper development process

  5. Strategies for reducing costs

Your Main Risks

When looking at strategies for establishing yourself in the social games market, it is helpful to first take a look at the risks developers commonly face.

A game fails because the concept or game design is not good

Sometimes users simply don’t like a game. Many games have been launched and marketed heavily, only to lose their entire userbase within a few months. Generally the causes of this include:

  • The game didn’t appeal to the targeted demographic

  • The game was not better or more unique than competing games

  • The game was fun for a short time, but had little replay value

  • The game was just not fun

A game fails because of excessive technical problems

A game is fun and users enjoy it, but heavy technical problems interrupt users’ gameplay experiences and end up causing a mass exodus of users.

Development cost goes over budget or over schedule

Development of a game takes several months more than expected, tying up resources, going over budget, and overall clogging your pipeline.

Losing a lot of money to marketing

A large marketing campaign is launched to promote a new game, but the game is not fun or has technical issues, and several tens or hundreds of thousands are lost on marketing.

The third party developer chosen to build a game doesn’t perform well

The developer selected is low-quality, or doesn’t meet the creative vision of your game and their mistakes are costly to reverse.

Your production process is slow and clunky

A social gamer’s interest is hard to capture and maintain and there are a lot of good games out there. When things go wrong in a game (users don’t like specific features, critical bugs appear) users will start leaving the game quickly. If your process isn’t setup to deliver fixes & new features fast to improve user experience, then it will be impossible to stop a mass exodus of users.

Creating a successful product line

Games live or die based upon their ability to interest a large amount of social networking users & inspire them to come back repeatedly. This section gives strategies for creating a line of games that can interest users and retain a large userbase over a long period of time.

Target a specific genre & demographic, and make a GOOD game for it

are a variety of game genres on Facebook that have successful games in them. They include management games, skill games, girl games, action games, RPGs and more. Each caters to a different target audience. Some will target women 25-65, while others will target men 18-40. If you intend to create successful games, then your biggest key to success will be to target a SPECIFIC GENRE and focus on making FUN and UNIQUE games for it!

Management, Action, Skill Games, Girl Games, and more! Which genre can you fill?

In general, when creating a social game, you want to ensure that it:

  • Targets a specific genre and user demographic (preferably an underserved one)

  • Provides a unique experience among other games in that genre

  • Is extremely fun!

  • Has core gameplay that will be addicting to the audience that plays that genre and provides STRONG incentives for them to return over & over again

  • Has social mechanics that are appropriate for the targeted audience

  • Ensure you design pipelines for user retention and engagement into the game

For instance, if you are targeting a genre that serves 18-45 year old men, the gameplay mechanics might be more action focused and social mechanics more competition or combat based. If you’re targeting a genre that serves 25-65 year old women, gameplay might be more light-hearted and have social mechanics based on cooperation & showing off.

In the current social game market, there are several niches that are currently underfilled and have room for growth such as arcade, RTS, and skill games. Our advice is to select niches you feel you can fill well, and do your best to create one or more great games for them.

Most existing IP won’t be successful in the social game space

This sounds like an arrogant claim, but as stated in the performance analysis of existing IP above, most existing IPs that have been brought to Facebook have failed. The reason is that most IPs don’t have name recognition among social gamers nor mechanics that port well to social networks. Because of this, they often end up providing a lackluster experience to users, and who wants to play a lackluster game when there are so many other good ones out there?

The exceptions are

  • If your IP is extremely well known and/or has casual mechanics that have high replay value.

  • Your IP can fill some underserved niche on Facebook better than its competitors.

Other than these two exceptions however, porting your brands will most likely not compete well in the market and result in lost money. Focus first on making games that are unique and fun among other games in existing social game genres, and second on brands. If you do bring a brand to the space, you must do all you can to target a specific demographic, and make it an experience more fun & unique among other games competing for attention.

How to create new IPs

Many developers entering the social space will have the issue of needing to create new IPs for it. For companies used to other platforms, creation of new IPs that can do well in the social space can be quite challenging. Here are a few guidelines for how to create them:

  • Understand where the niches are: Study appdata.com, and figure from top 100 games, what you think the niches are. Once you’ve determined what the niches are, determine which games are performing and try to determine why they’re performing. From this you will get an idea of why successful games are successful in their genre and give you an idea what you must do to compete against them. This is a very eye opening exercise, so make it a task!

  • Determine what niches you’ll be good at filling: Once you’ve determined what the niches are, try to figure out what niche you think your company can fill. For instance, Popcap games chose to do skill games, and Kabam chose to do RPG & adventure games. What are you good at?

  • Hire a designer, or design consultant: Hiring someone who has had experience designing and running social games can help you a lot in figuring how to create gameplay mechanics that will engage users and incentivize them to pay.

  • Get pitches from developers: Put a call out to third party social game developers for concepts. A lot of developers have concepts or game demos waiting to be green-lighted, and you may find some gems among these!

  • Create a concept pool & select the ones you think will work best: Once you have a team in-house creating concepts and are getting a satisfactory amount from 3rd party developers, you can then create a pool of concepts. Once you have a satisfactory number, you can review them and greenlight the ones you feel are best.

Launch multiple games

Most developers on Facebook have not gained success with just one game. Rather, they’ve experimented with several games and gained hits out of a select few. By launching multiple games, you will be able to experiment with multiple concepts to learn what works, increase the chances of overall success, and increase the total number of users you are reaching.

The difficulty to this strategy is that it’s quite complex to make and launch online multiple games, so it’s likely not feasible to launch them all at once. This can be solved by spreading out the launches of your games over the course of a year. This will give you time to apply lessons learned to your future games and provide time for you to setup a proper live operations team.

Publish games from other developers

One route that many large developers such as Playdom and 6waves take to increase their overall userbase is to find games from independent developers to publish. Often these developers will have finished games, but not enough resources to publish or market them properly. If you do manage to find a good game, this can save you the money you’d otherwise invest in development and reduce risk by having an already proven concept in hand. Additionally, you may be able to bring on a competent development team to help run your live operations or to develop great new original games.

Pantheon by independent developer Diamplay who admits: “In the absence of a publisher, we haven’t been able to spread our game because of our limited marketing resources, so we’re currently seeking one.”

Be prepared for multiple products, long-term experimentation, and long-term operation

Success in the social space is largely discovered (yes, discovered) through experimentation. Many of the developers successful today have experimented with many game concepts and have spent years refining their product and live operation strategy. It’s only through this that they’ve learned how to make successes. This is a way of life in social games, and you need to be prepared for it.

Of course experimentation can be expensive, but doing so over several games amounts to far less than the cost of a console game, and the cost can be kept down by being smart about how you implement your development and live operation strategies.

Live Operation

This section explains what is required to run a live social game and presents strategies for being successful in doing it.

Social games are 24/7 online services. Operating this service is what makes money So let’s say you have made a great game that users love and want to play. This is excellent news, but to monetize it and keep it alive, you will need to run a proper live operation. When running a game, developers generally have a pre-engineered funnel which they direct users through to monetize them (which is often composed of several smaller funnels). This funnel is visualized below with some of the key factors affecting each phase.

Figure 4 – Simple example of a game monetization funnel

To make this monetization pipeline work in your game, it’s important to realize that a social game is a 24/7 online service that you’re providing to users. This service will have multiple components such as the gameplay itself, the in-game store & payment system, the game’s social components, etc. that users will be accessing daily. There will be things users like, things they dislike, and critical technical issues that they will have. You need to understand what experience your users are having with your entire service as a whole and then do your best to solve problems and optimize user experience. By understanding user experience and optimizing it, you will be able to increase the number of users that successfully move through the monetization pipeline.

Use metrics to understand everything about your game

A major part of optimizing your game’s monetization will be to understand how your game is performing and what users like and dislike. For this, a metrics platform is essential. Metrics platforms such as Kontagent (kontagent.com) or Mixpanel (mixpanel.com) monitor your game’s data and provide easily readable statistics on its performance. Metrics measured include key performance indicators which measure critical overall metrics such as financial performance, player retention, etc. (such as DAU, Average Return Per User, Paying User Conversion Rate, etc.) and metrics that measure user behavior in game such as entry events, exit events, popularity of items, and popularity of social features.

Kontagent’s social game metrics platform, an excellent tool

With these metrics tools, you are able to understand how your game is performing overall and understand where improvements need to be made. You can then introduce small changes (new content, new features, fixes) and measure which changes improve the game’s key performance indicators. Through this gradual process, you are able to improve your game in the following areas:

  1. Kill Major Issues: Fix Issues (payment flaws, unnoticed bugs, long load times, etc.)

  2. Lower Marketing Costs: Tweak your marketing campaigns to lower the cost of user acquisition as far as possible by determining what demographics to target & what ads work best.

  3. Improve Retention: Improve the game’s ability to retain new users & existing users by determining what incentivizes users to stay and what makes them leave.

  4. Increase Engagement: Determine what new gameplay and social features will keep users playing long-term and refine your engagement and viral funnels.

  5. Improve Conversion & Return Per User: Determine what gameplay mechanics, content, item pricing, and payment options will incentivize users to pay.

Engagement is crucial

The term “engagement” when applied to a social game generally is meant to qualify a game’s ability to incentivize users to play the game a lot. When users play a lot, they are much more likely to spend money and invite friends other friends to be active in a game. Therefore, a developer must take steps to keep engagement consistently high throughout a game’s lifetime.

In engaging the user, there are three critical steps:

  1. Initial Design: You want your game by design to inspire a user to want to play a lot, and this is where a lot of games fail. How to do this is dependent on the type of game you’re building, but it should be a top consideration in the design process.

  2. New Content & Features: When your game is launched, new content and gameplay features will help provide a fresh experience to players and keep them interested.

  3. Engagement Funnels: You want to direct users while they play the game through guided series of events which guide them to take specific actions that get them deeper into the gameplay (i.e. in a realtime strategy game, you might guide users on how best to attack their neighbors!). Having these at appropriate points in the game will help to keep your users playing.

Part of an engagement funnel in Backyard Monsters that guides a user towards building a base & attack fleet of monsters – fun!

Make Constant Content and Feature Updates That Add New Depth to Your Game

When users play a social game, they will get a certain entertainment value out of it. However, after a while, they will get tired of the same experience and move on. As you run your game, you will want to evolve it such that even users that have been playing for a long time can feel like they’re having new experiences. An excellent example of this is Mafia Wars (as shown below).

Mafia Wars – From one city + basic missions & properties (2008) to over 5 countries, new gameplay, & tons of new content (2011)

Hire appropriate specialists for user acquisition, metrics, and monetization

Effectively gaining, retaining, and monetizing users is no easy task if you’ve never done it before. Having specialists with experience in these areas on your team will allow you to make smart decisions for user acquisition and monetization.

It’s important to note that these specialists don’t need to be stuck to one role. If you only have a small team and need everyone to be somewhat entrepreneurial, you can have these experts fill multiple roles such as design or production also. Having their expertise in multiple parts of the pipeline is likely to improve the quality of decisions made in these processes greatly.

Have partners manage parts of the live operation you’re not good at

In running a social game as a service, there are a lot of different components to be managed and most new entrants don’t have the expertise to manage them all correctly. One option for overcoming these shortcomings is to partner with companies that have the competencies you lack.

Examples include:

  • Ad firms that can manage your marketing campaigns and keep the cost down

  • Developers that can help manage live operation and monetization

  • Technology partners that help you solve complicated back-end issues

  • Distribution partners that help you reach international audiences

Marketing & User Acquisition

User acquisition on Facebook is challenging. There are many developers who are attempting to acquire users via Facebook marketing, but are having trouble doing so.

Reduce marketing costs with limited betas

Marketing on Facebook is expensive, with costs ranging from $0.50-$3 per install. With such high advertising costs, you don’t want to spend a huge amount of money on marketing until you’re confident the game can perform well. To gauge initial performance, it is a wise idea to run a beta first. To execute this beta, you can gain users by investing a small amount of money in Facebook ads to acquire a few thousand users. Make sure when you do this to target your target demographic.

After players initially install your application, the following metrics will give you an idea of its performance.

  1. Weekly retention rate: What percentage of users are retained in the first week, and what is the week to week retention rate following that?

  2. Demographics: What are the age, locations, and genders of those who are paying & playing?

  3. Conversion & Monetization: What percentage of users are paying, what events cause them to convert, and what rates do they monetize at?

  4. Actions: What are the key actions & features that users love. What (if any) features are tied to users exiting the game & not returning?

Figure 5 – A sample graph of various game’s week to week retention rates. If yours is high, you’ve got a lot to be happy about.

Once you’ve monitored these metrics, you will have an idea of your game’s retention and monetization as well as data on how users play the game. If your game has a great retention rate and other positive performance indicators, you can give the greenlight to a larger marketing effort. However, if your retention is bad during this period then it implies your game doesn’t inspire users to come back & needs fixing or is fatally flawed on a fundamental level. In this situation it’s best to introduce changes to fix this immediately and try a further small beta to gauge if your changes worked. If this fixes your retention & other performance indicators, you can consider a larger marketing campaign. If not, you should consider focusing your efforts on other products.

Target specific demographics & experiment with multiple ad variants

When buying ads for your game, Facebook will allow you to target specific age groups, genders, and locations with specific parameters. Thus, to lower the cost per click of your ads as low as possible, you want to focus on the demographics you think are most likely to play your games in your genre, and try multiple ad variants to see which ones are most effective. Many tools are available for monitoring performance of social game ads, so it’s wise to employ one of these tools to track the efficiency of your campaign

Virality is not dead! It’s just hard to achieve. Use unique tactics to spread your app virally

Initially when buying ads, the cost of user acquisition can be as low as $0.10. If every user played your game faithfully, this would equate to a fairly low cost of user acquisition. However, generally games only retain a certain percentage of users that install the game. Thus, if your retention rate is only 1 out of 5, your true cost of users acquisition is $.50 per user, which is fairly expensive, and this cost will only increase as your app continues to run, so it’s helpful to have some virality working to your advantage.

Back in the days of rampant notifications on Facebook (roughly 2008 to early 2010), it was much easier to spread an app via viral means. Today these notifications are long gone and trying to acquire users virally only through Facebook’s viral channels is quite difficult. K factors (virality coefficients) are often far below 1, with 0.1 or below being typical numbers for many developers. Thus it’s been commonly stated that “virality is dead”, but this isn’t true, it’s just hard.

What’s required these days to get a good viral coefficient is to be smart about how you achieve virality. Some of the most popular approaches to this include

  • Small Facebook games & apps for the purpose of driving traffic to the main app

  • Games on flash portals that send users to the Facebook game.

  • Clever video marketing

If you can make a combination of cheap or free viral marketing tools like this, you can significantly reduce the cost of user acquisition.

Partner with a marketing firm

Specialist social marketing firms like Adparlor (adparlor.com) help social game companies focus their campaigns as efficiently as possible. Often these firms offer both tools to help you focus and monitor your campaigns and services focused on lowering your cost per click for your target demographics as low as possible. Assuming you have a good game, partnering with these firms can lower your cost of user acquisition and help you create more focused marketing campaigns.

Adparlor provides tools and services to help reduce ad spending required when buying installs

Launch on other networks

There are many social networks outside of Facebook that combined represent hundreds of millions of extra active users. Many of these networks possess users that monetize just as well as Facebook, have less saturation, better viral channels, and lower advertising costs than Facebook. Additionally, since many of these networks are hungry for game content, they provide developers that port to their network generous free promotion packages that allow their games to get boosts of several tens to hundreds of thousands of free users. So for a developer willing to make the effort to port outside of Facebook, there is a rich market with hundreds of millions extra users waiting. Playdom states that roughly 35% of their social game revenues come from networks outside Facebook.

Integration with several networks can be somewhat of a difficult task. It requires integrating into each network’s specific API & rules, each region’s currency, and contextualizing content. To help deal with this difficulty, there are social game distribution companies such as APPWalk (APPwalk.net) that provide both porting tools and services to port and operate your games on outside social networks. Partnering with these firms to help you take your games outside of Facebook can help you gain access to extra markets other developers don’t have.

APPwalk can port your games and help you optimize them for each social network


Having several funnels in place is a good idea

When users play your game, you will want to nudge them to complete specific event chains (called funnels) which guide them towards coming back later, making viral posts, getting deeper into gameplay, or monetizing. This can be done by creating specific event chains triggered at natural points in the gameplay. As you operate your game, you can gauge the performance of these funnels at driving users towards retention, engagement, virality, and ultimately monetization. Over time you want to test to tweak your funnels via testing to be as effective as possible towards achieving their goals.

Figure 6 – An example (provided by Kontagent) of a retention funnel. Note that in this example, the user is using Kontagent to monitor the funnel’s performance.

Pay close attention to what events trigger player monetization When running a game, you may begin to notice that at a certain point in a player’s advancement or at certain events, users frequently convert. You want to take note of these and try to understand what incentivizes users to buy certain items at certain points in their advancement or at certain events. From this you can understand how to create further incentives or events that increase monetization.

Treat virtual products like actual merchandise

When a retailer sells items in a store, they track performance of those various items, and expand those product lines that have high sales. Your virtual items will be no different! You will need to study what virtual items sell and what users are using them for. In this case, it’s useful to use extensive use of A/B testing to test different items against each other to see which has higher performance. From this you can make smart decisions about how to tweak & expand your products so as to provide the most desirable items for users. Additionally it’s good to experiment a lot with the price points of your products to see if it drives any extra monetization.

Nightclub city found that a steampunk theme (which they called ‘gaslight’) was popular among users. Thus they expanded the number of steampunk themed items available.

Focus on making payment as smooth of a process as possible for US & international users

Making your payment process smooth may seem like a no-brainer, but in reality, a lot of games fail at this point through either overly complicated payment processes or a lack of viable payment options for users. To avoid this, you can take the following steps.

  • Provide as many payment options as you can (offers, paypal, etc.), not everyone has a credit card

  • If you’re targeting international users, ensure proper international payment options are available

  • International users will be paying in different currencies, thus an item priced $0.50 in the USA would appear as 1.39 zlotys to a Polish user. This looks weird, so you want to adjust your currencies to be at prices that make sense to your international users.

  • Put options to pay all over your game! Don’t make users always have to navigate to the store.

  • Make use of payment solution providers. There is a huge selection of companies that provide monetization tools & services such as Trialpay, Superewards, or Playspan that help you create better payment options, storefronts, and monetization incentives.

Development Strategies

This section focuses on how to structure your social game development pipeline so that you can efficiently create games and have a strong process and technical back-end to support them.

How to select a developer

If you’re planning to do your development with third party developers, you should be quite careful about who you select. If you fail to do proper due diligence, you could end up with a failed product and lots of wasted money before the game even launches. First & foremost, it’s best to select developers who have created their own social games before as these developers have had the firsthand experience of building and monetizing games.

Additionally you want to do significant due diligence on the following areas

  • Social game specific experience & skillset

  • Internal development process

  • Social game technology & skills

  • The specific RFP response or concept submitted

The table below provides a basic checklist on which to judge developers on. The more of these that end up being checked, the better.

Table 5 – A brief due diligence checklist for selecting a social game developer

Create a unified back-end technology suite that you can manage live operation of all games with

When running a live operation of several games, it’s optimal to be able to have single a system which allows you to manage the services common amongst all of your games.

If your resources permit, you want the following to be managed by a central tool

  1. Metrics and A/B testing for all games

  2. Currencies, payment processing, and most anything related to payment

  3. Virtual item management & storefronts

Often, if games are already built, it can be a difficult process to integrate it into a back-end platform. Therefore, it’s wise in the beginning to create such a platform and make it a requirement for games built by your team or developers you contract to integrate into it. This will cost some money upfront, but save you lots of money in overhead in the long-run.

Have live operations delegated to specific capable teams

One mistake a lot of developers have made is to spread out live operation amongst too many separate development teams. The reason for this is that developers often have varying skill at live operation and some are much better than others. Thus, some games might perform rather poorly just due to mismanagement by the developer and not by quality of the game. If you can build a live operation team in-house, this is excellent and it’s a good idea to shift live operation to them, but if not, you want to select a few key partners (specific developers probably) to handle live operation of most games.

Additionally make sure there’s a clear delegation of tasks. If the various partners or developers involved have joint control over things or are working on the same tasks, it can be a recipe for duplicated efforts and wasted time and money. Make sure everyone involved has clear control of & responsibility for their individual area.

Have an airtight quality assurance process, regression test EVERYTHING!

In online games, bugs & gameplay issues have a horrible effect on user retention and can often be the sole reason a game fails. You want to make sure that you & all of the developers you select outline a rigorous QA process and stick to it. If you’re a publisher, hire or use an internal QA resource with experience in online games to outline QA standards for all developers & internal teams to conform to. Again, YOU WILL BE IN HORRIBLE PAIN WITHOUT A GOOD QA PROCESS!

Have an awesome agile process

Since social games are an online service, they need to be serviced very quickly when things are wrong. They also have the need for quick content & feature iterations based upon feedback from metrics. Therefore, it’s very essential to have an internal process which accommodates quick changes based on changing information. Using an agile process such as XP, Scrum, or Kanban religiously will help you do that.

Keeping costs Down

Eeek! That’s a lot of money being talked about in all the above sections, what can we do to keep our spending down?! Suggestions are below.

Product Strategy

  • Consider higher revenue shares with developers. If you are building games with developers, they will often charge you a set man-month cost for their resources. However, many will often drop this price significantly for a larger revenue share. Thus, if you have limited resources, this can be a good way to lower your development cost.

  • License other developer’s games. Licensing a well-done game with decent metrics avoids you having to pay for development costs.

  • Make sure that your designs are targeted at niches. Bad games fail. Don’t make a game without making it fun, unique, and well-positioned among competitors. You’ll lose your money otherwise (and why do that?).

  • Use skilled offshore teams, or reasonably priced US or EU teams. Offshore teams price reasonably, and these days, there are a lot of very smart, very inspired offshore teams. Additionally, there are smaller groups of US & EU teams who are willing to be reasonable about costs.

Live Operation

  • Run betas first before spending large amounts on marketing

  • Make marketing very targeted towards the type of users who play your games, don’t waste your time on users who probably won’t. There are many ways to market that are focused on simply getting eyeballs to your games. The problem is that many of these users won’t bother playing your game, and thus you’ll have wasted your money. Stick to your core demographic.

  • Hire specialists to handle all live operation disciplines including marketing, engagement/retention/monetization/metric, and technical specialists. They may cost upfront, but will save lots of money in the long run!

  • In areas you don’t have expertise (payment processing, marketing, etc.) make use of the services & tools of partner companies who do!

  • Give your live operations to specific teams


  • Create rigorous QA standards

  • Select only the most capable developers

  • Have a good agile process


If you’re a social game publisher or established developer and you’d like to go into the social space, you have some road ahead of you, but this should not discourage you. Making a strong effort to break into the market costs much less than a console or MMO game development process, and is much quicker to provide return. Also, many of your competitors are now getting into the market, and soon, they will have extra market penetration that you don’t, so if you are going to act, the time to act is soon.

And if you do act, here are the key points that we think are crucial for everyone to keep in mind:

  1. Focus first and foremost on making fun games that provide unique experiences towards a targeted niche

  2. Treat live operation like a service, and get all of the tools, team members, and partners on board you need to handle it successfully when your game launches

  3. Make your development process agile, quality assured, and filled with competent developers

Enjoy the game making!

Mike Turner is a managing partner for Bitfold Online Games, an independent social game developer that focuses on original social game IP for Facebook, international social networks, and mobile devices. Read more about him after the article. In the increasingly competitive social games market, Bitfold has been vigorously experimenting with their games to discover the best methods to acquire, engage, retain, and monetize users within a reasonable budget. As the head of business development, Mike focuses on making Bitfold’s games successful internationally and helps publishers & developers create their own successful social games. You can contact Mike at mike@bitfold.net.

New Career Opportunities Daily: The best jobs in media.

Minha lista de blogs