Friday, April 30, 2010

Recommended Watching

This is a video of Eric Schmidt's keynote @ Abu Dhabi Media Summit. Overview of where technology, media and the mobile internet is currently going - highly recommended ...well, at least in my opinion.

Friday, April 9, 2010

Google App Engine/Java + GWT + Eclipse Plug-in + some goodies = neat development environment for application prototyping

For past weeks I was looking for the complete solution/environment/framework to build a prototype/prove of concept for customer facing web apps projects that could be "easily" converted to production system if needed. .... think I have found one candidate ... at least for now to give it a try :) Will share some experience which I have learned.

Some of my requirements for the overall solution were:
  • Open Source
  • Rich Internet Application Framework
  • Build in Java
  • Flexible and powerful
  • Following good practices and design patterns
  • Full-featured development environment
  • Easy Deployments
  • Scalable and Redundant back-end
  • None to low maintenance cost
  • Cost efficient hosting -free or pay as you grow

After spending some time on research and evaluating several solutions I reassured my self that there is no "out of the box" perfect solution that you can use. There are always pros and cons that you have to decide what is the best for you in a given situation and learn to manage its limitations.

At the moment I have decided that the core of the solution should be build on Google App Engine/Java and Google Web Toolkit.
This goodies from the Google with Eclipse Plug-in and some additional extensions (which I will mention later) are the solid base for kind of stuff I'm aiming for.
If it happens that you never heard about it you should definitely go to:
GAE website:
GWT website:
and Google IO conference:
or just google for it ... there is plenty resources out there.

Google App Engine among its advantages has a lot of weaknesses and limitations so you need to be at least aware of them. If against all odds you consider to give a try (as I did) you should learn how to dill with it.
Google is also aware about its limitations and with the time is improving them.
If you want to find out more about GAE and its "problematic features" I recommend reading:

Because of the GAE special nature and its limitations you should follow good practises for your application design and use/build framework which will limit potential work needed to migrate to other hosting/storage solution.

I decided that i will stick with GWT no matter if my application is on GAE/J or somewhere else. This is such a cool technology that I can not imagine any other way of doing web development from now on. Its very powerful, and development experience is great.
To fully utilize its power you should follow best practices which were presented by Ray Ryan at Google I/O 2009 entitled Google Web Toolkit Architecture: Best Practices For Architecting Your GWTApp (You have to watch it)

This excellent talk laid out several best practise approaches for designing your GWT application based on the team's experiences while developing the new AdWords interface. Some of the key recommendations were:

This talk caused GWT community maelstrom and in its results few implementations of its ides were created.
For more details on that topic I recommend following reading:

And two complete frameworks that implements above (and a little bit more):

One weakness of GWT is a relatively small amount of out of the box standard widgets. Likely there is a simple solution for that. Use Ext GWT which is a Java library for building rich Internet applications with Google Web Toolkit (GWT). To give you some idea how to integrate with mvp framework see example EmployeeAdminWithGXT at

At the end I would like to mention quickly something about JDO and its implementation for GAE which is officially promoted way of accessing Google Data Store. Unfortunately neither JDO nor JPA (which is build on top JDO and is also partially supported) is not the best way to access it. Google data store isn't RDBMS, so it requires some special treatment. That's way JDO implementation for GAE is not perfect and it is causing developers live harder by making staff more difficult that it supposed to be. That's way you should consider to use some alternatives... fortunately there are some. Google provides low level API which is used by JDO implementation any way. I don't recommend using it directly but to use frameworks like Objectify, Twig or SimpleDS that make some stuff easier and more efficient. For the comparison of this frameworks please read this great article at (and the rest of this blog ... author had to go through the same process as i did). I have decided to use Twig

Happy coding and stay tuned


Saturday, April 3, 2010

largest sip service in Poland 4 years old

Gadu-Gadu's VoIP offering just recently had its 4th birthday...

It all started on 14th February 2006 when Gadu-Gadu launched its own Internet telephony service under Gadu naGłos brand. Now it's quite safe to say that Gadu-Gadu has the largest SIP based VoIP implementation in Poland. We started working for GG at the end of 2005 - it took us a few months to develop the service before kicking off in February 2006. Since then the service grew dynamically size and functional wise - receiving calls from pstn in the im client, calls between GG users, free calls to pstn daily, voicemail, integration with mvno network, and more ... :)

In 2007 Gadu-Gadu was the first carrier in Poland to launch ringback tones for pstn calls answered in the im client. Gadu-Gadu was also the first carrier to launch HD voice calling for all calls between Gdau-Gadu im users based in iSAC GIPS codec. In 2009 video calling was also launched.

The current statistics behing the service are quite impressive

- 1,5 milion active users (where active = at least 1 call in 3 months)
- more than half of the active user base also uses video calls
- 3 milion calls monthly
- 20 thousand established calls per hour during peak
- 0,5 mln voicemail boxes