Wednesday, December 17, 2008

Book review - Anathem by Neal Stephenson

Unlike the book it self - I'll make this short.

The book basically sucks and I was very disappointed.

I think that most people who read 'Snow Crash' and loved it will agree with me. I got through about 80% of the book and I just couldn't be bothered to read it any more. It seems that Mr. Stephenson has gone to extreme lengths trying to convince the reader of his own cleverness. The book is full of never ending "scholarly" dialogs about nothing, most of which are not nearly as engaging as I imagine they were meant to be.

While the book is not all bad I found most of it to be dry, boring, pretentious, and lacking humor (except for one "fire/counter-fire" scene which made me laugh). I am sorry to say this as I was hoping for much and got very little.

For a longer and less blunt review check slashdot.

Tuesday, November 25, 2008

My Apple tech support experience

Since I've posted the rant about not buying apple products because there was no Java 1.6, Java 1.6 became available and so I bought 2 Apple notebooks this year. Unfortunately my 2008 early model MacBook got some hairline cracks in the casing so I called up Apple tech support, got a case number, and showed up at the Apple store to drop of the machine for under warranty repair. The somewhat lengthy post below describes my experience:

1. Encounter with a tool

When I made it to the genius bar (3rd floor of the Sydney George st. Apple Store) I was approached by John a concierge. He asked me re-enter all the information I already submitted over the phone (this I had to do in order to get the case number).

I did that.

Then he asked me to sign a paper stating in a nutshell that:

- I have a backup of all the data (I do)
- I have removed all the private information from the computer (I most certainly did NOT)

I refused to sign.

My notebook, like most notebooks I imagine, is full of private data. I told him that if the technicians remove the hard drive and give it to me I'll sign the form and let them work on the repair without having any privacy concerns.

Now, John refused.

John informed me that they will not remove the hard-drive nor lend me the tools to do so myself. Instead he advised me to go home, remove the hard drive myself and then come back. The other option he gracefully offered was for me to go out, buy a screw driver then come back and remove the hard drive myself right there at the Apple store. But there is no way they would do it for me or lend me the tool.

I went down to the second floor to ask at the hardware sales desk if they, by any chance, sell the tiny screw drivers needed to take out the hard drive from a MacBook. The sales guy there told me that they don't sell those since removing the hard drive voids the warranty.


He told me however that the "guys upstairs" would surely help me with taking out my hard drive. Given my recent experience I was in doubt so I asked him if he could help me sort that out with the "guys upstairs" to which he agreed. Back upstairs I went, and we ran into non-other than my old friend John. I explained to John that he has effectively advised me to void my warranty by telling me to remove the hard drive myself, at which point he finally caved in and hooked me up with a "Genius" called Alex.

2. Encounter with a Genius

Alex didn't need to be an actual genius to see my point. He took the notebook of my hands promised that in 15 minutes he'll be back either with the whole thing fixed up or the hard drive for me to take home. I signed the papers, on good faith that within those 15 minutes he won't break or copy my hard drive (but hey I can be reasonable), I sat down at the Genius Bar and used my MacBook Pro to write this blog. In about 45 minutes Alex came around with my MacBook fixed and good to go. Though it took him a bit longer than he estimated I would like to thank Alex for being a human with a brain and common sense (at Apple this apparently is called a "Genius") he saved me from going home buying a tool I don't need and voiding my warranty. Thank you Alex.

3. Conclusion

How would I quantify my experience tonight.

Firstly, it's obvious that it takes much more effort to encounter a tool (John) than it does t0 encounter a Genius (Alex).

Secondly, even a otherwise capable organization like Apple with it's very cool stores has it's weak links (John) and it's strong ones (Alex).

Thirdly, the paper Apple made me sign before any work was done is completely silly. I had to agree that my notebook contains no private data (which it does like any other notebook) and the 2 ways I know of to ensure no private data are:
- remove hard drive (but also void the warranty)
- reformat hard drive before submitting to apple and restore data from backup upon return (not very convenient and lenghty)

So perhaps offering to remove the hard drive and then fix the computer may be an option that is more acceptable to a customer concerned about time and privacy such as myself.

Monday, November 24, 2008

gmail feature request: show me the video

Wouldn't it be nice if we could view videos attached to emails right inside the web client? Since Google owns I cannot see this being a big problem for Gmail. The UI could also make exporting videos to Youtube a single step operation. It would save me time with having to download large email attachments and with looking for codecs to play the downloaded videos (though to be fair with VLC the second point is not so much). The transcoding of videos from * to Flash may be a bit resource intensive but an organization size of Google could just be up to it.
Of course if Google doesn't step up soon, I may just decide to implement this feature myself :)

Saturday, November 08, 2008

hacking cotopia

Lately we've been receiving emails about malicious players cloning other login names of other players by exploiting that we use unicode where different characters look the same (e.g. an ASCII 'C' looks like the Cyrillic 'C' for instance)
This is forcing us to restrict login names to the ASCII set.

Tuesday, November 04, 2008

Go vote

While I am not a US citizen I hope those of you who are will take this chance for a real change. The whole world is watching.

Friday, October 31, 2008

Cotopia GO .. on mobiles near you soon!

We've been quietly working on our next multiplayer title: Cotopia GO
I've been doing some testing lately and I must say that the game looks pretty good. We're currently checking out the latest builds on mobile phones and if all goes well we'll be in beta within a few days. We'll be then depending on the support of our community to give us constructive feedback on bugs/issues etc.

I would like to take this opportunity to thank Ondrej Michalcak for doing a great job writing this game for us - given how much we pay him he really must be doing it mostly for the love of a good challenge :)

Thank you Ondro and happy B-Day.

Darkstar plugin for NetBeans Updated

I've finally found some time on the train during my daily commute (usually spent sleeping) to implement one of the features I've had on the top of the TODO list ever since the plugin was originally published

Debugging Support

This little feature allows launching the PDS application in debug mode and then automatically attaches the NetBeans debugger.

I've realized that a better approach to the whole project may be to implement Project Darkstar Server as a platform, but I haven't been able to find a good tutorial on how to implement a custom platform. I guess I'll be taking the Java SE platform implementation as a starting point and go from there.

Sunday, October 19, 2008

JDWP (wtf?) analyzer in the Open (Source)

During my years with Sun Microsystems I've worked on a number of projects. One of the responsibilities I've held was ensuring that the NetBeans debugger works well with J2ME emulators (WTK, Nokia, Sony Erisson etc.)

This was no small feat given that I've had to analyze the source of a given debugging problem, this could be:

  • JDI implementation
  • NetBeans debugger
  • Emulator (most of the time not supplied by Sun)
and then negotiate with the responsible team(s) to fix the problem (sometimes fixing it myself and supplying a patch). This job would have been a pain if it wasn't for a small command line utility that Martin Ryzl (then my team leader, later my manager, now still someone I very much respect) wrote to monitor the JDWP traffic, when the job was his. Since the job was now mine, I took the utility and expanded it to a full blown GUI tool that can monitor JDWP packets and show detailed information about their contents and inter-relationships.

This was about 4-5 years ago, since then NetBeans including Mobility support went open source and with it most of my code, except for this last piece of work. With a blessing from Martin I am open sourcing it on It saved me a lot of time analyzing problems and hopefully it will make someone else's life easier as well.

Friday, August 15, 2008

Uninstall IntelliJ plugins on OS X

This is something that wasted nearly an hour of my time today and Google was of little help :(

At work we use IntelliJ and I am running OS X. I've installed the SVNbar plugin using the plugin browser in Idea. I restarted the IDE as asked but it would no longer come up - splash screen just hang there indefinetly.

Fine, I thought, lets just uninstall the plugin and I'll be fine.
Not so easy.
I couldn't find the plugin jars location on my harddrive (how ridiculous). It turns out that plugins go into:

USER_HOME/Library/Application Support/IntelliJIDEA70

which I found by pure stroke of luck.

Mean while the documentation reffers to:
which doesn't exist.

On that note - NetBeans 6.5 Beta is out. Oh NetBeans, how I love thee...

Monday, August 11, 2008

Some minor points & updates

Since the release of the J2ME client API for Poject Darkstar I've had 36 downloads of the plugin from the NetBeans plugin portal alone. Given that the target audience for this effort is a very small I think that this is quite a success. Too bad I can't cont the number of downloads from the plugin homepage.

Off topic warning!!!

In other news I've been lately listening to a number of podcasts and if you are interested in Sci-Fi but lack the time to read then checking out some of these podcasts may just do the trick for you, it did for me :)

There are also a large number of books available from but not all of them are a good quality read. While I took time to listen to many of them (at least partially) I found these to be excellent:
  • Grey by Jon Armstrong, not only an excellent audio book but also one of the very best books I've ever read, period.
  • Singularity by Bill DeSmedt
  • The Failed Cities Monologues by Matt Wallace
  • The Rookie by Scott Sigler, while Scott is a legend his work is not for everyone (being action oriented rather than deep and though provoking)
Why am I on about pod books? Because they help get me through my day and are FREE - and that's always worth sharing.

Wednesday, July 30, 2008

Darkstar J2ME API released by Cotopia

So here we go some Good News,

As Promised I've implemented the Darkstar Client API for J2ME. It took about 16 hours end to end + some testing and documentation time but all in all not too big of a job. I've released the binary as well as sources so that anyone can have a go at making improvements, bug fixing and finishing unimplemented functionality :)
Take a look here for the zips (bin, src, javadoc)

In addition to the sockets implemetation I've put together an HTTP based iplementation which connects to Darkstar through a web based proxy. This way of connecting is (obviously) a bit more clunky but at times one has no other option, due to device or service limitations. This functionality is available in source from SVN as well as NetBeans plugins.

Further more I've put together a Darkstar plugin for NetBeans that lets you manage server instances and server applications via IDE UI (nodes, buttons, dialogs etc.) rather than typing stuff into a shell :) This plugin basically lets you define a Darkstar server instance and then you can use that to run/stop your applications.

I did spend a bit of time on this work in the past few months so I hope that the community will take the code, test it out it and post fixes - or at least bug reports :)

Friday, June 06, 2008

Ballshot re-released, sources available

So I've finally pushed myself to fix-up and rebuild Ballshot for the latest server platform and we've released the game recently. Ballshot is a mobile clone of Puzzle Bobble

I have to say that working on this particular game has been one of the best times I've had while programming. It was one of the few times I've had to use a bit of math in real-world programming. It wasn't very complicated math at that, linear equations are taught in grade school if I recall correctly :) Also the extensive use of recursion and fiddling with bit masks etc. to calculate if 3 or more balls of same color are connected has been hours of .. errr .. fun ? :)

Sources for the game are available (without the networking functionality - single-player mode only) here:
You can modify the sources/graphics, build the game, and play your own creation. I've donated the game sources as a part of NetBeans Mobility tutorial on device fragmentation that I helped put together.

If you are interested in doing mobile Java development then downloading NetBeans and going through the tutorials is an excellent start.

Saturday, May 17, 2008

Mobile URLs in Japan

I have read article about mobile URLs and how they use them in Japan. I recommend you to read it.

It looks like, that in Japan, they solved problem which every mobile startup is solving and that is what kind of url they should use for their project.

For Cotopia, we choose to use for web version and for mobile version of the site.

There is no problem with our web url, but we had a lot of arguing about our mobile URL.

Other possibilities were using old, which we used from 2003 to 2007 or new schema, which is starting to be adopted by big USA internet sites like Facebook or Google, which is, in our case it would be

We decided, that wap domain is not good anymore. People generally don't like wap and there is not "cool" effect in wap anymore.

So our "fight" was whether to use or

.mobi was just starting and I was thinking that it makes total sense to use it. It looked like, that .mobi initiative will try to help all .mobi startups and they will push it hard. For some reasons, this process is much slower than I was thinking it would be. Today, still nobody knows, what .mobi domain is. If I tell somebody to go to , they usually ask me if they should write www in front of it.

From this perspective, I think .mobi domain is good for projects, which have no .com domain.
If your website have, put your mobile version to It's cheaper and easier to explain.

Or you may try the Japanese approach from the article and let me know how it goes.

Wednesday, February 27, 2008

Cotopia open sources Project Darkstar client API for JavaME

I've done it again :) After some time of development I've decided to open source another of my brilliant endeavors:

Project Darkstar client API for JavaME together with a Darkstar management console (as a NetBeans plugin)

The project contains everything you need to take advantage of Project Darkstar in your MIDlets:

1. Web project template which serves as an HTTP proxy for a Project Darkstar client application

2. Mobile project template with all code required to connect to the Web proxy implements the Java ME HTTP based Project Darkstar API

3. A NetBeans based Project Darkstar server instance management console (under Tools-> Darkstar server menu) that enables user to start and stop server application instances without any need to mess around with command line

4. (Planned/not yet there) Java ME socket based Project Darkstar API will be available soon

All of this good stuff is packaged for NetBeans 6+ only. If you don't have NetBeans installed then stop being a loser and go get it. You have no business doing Java ME development without it anyway! :)

To give it a try download the sources from:

I'll answer questions via email, tutorial is comming soon.

Sunday, February 03, 2008

Our google ratings - pretty good I'd say :)

Check this out - Cotopia is on the first page if you Google for:

multiplayer mobile games

and it's on the second page if you search for:

mobile multiplayer games

given our marketing budget of $50 a year I'd say that Tomas is doing pretty good job promoting us. Now only if we could make it to number #1 for both search terms, we may have to double our budget :)

Adding Go to our portfolio is something we will do pretty soon to achieve this goal. Our little poll (on the right side of this page) indicates that Go is the next thing players want and as always (well... nearly always) what players want players get.

Sunday, January 27, 2008

Multilingual mobile game project

After I have mobilized our blog using Wirenode RSS to mobile solution. We are getting some comments from mobile page using text area for getting messages.
Point is, that as we are international project, just recently I have got this comment to my email.

I have no idea, what is in this message. If anyone can translate it, it would be great. I hope its not anything offensive :-), it should be in Arabic language.

In our in game forums, we are getting some international posts too. There are not many of them right now, so its ok, but we will have to do something with it in the future. Possibly sooner than English will be the only one world language on this planet.

Monday, January 14, 2008

Project DarkStar: light at the end of the tunnel?

Ever since I finished the Game Builder plug-in for NetBeans Mobility I've been looking for ways to further improve NetBeans and make it fit with Cotopia's goal of dominating the world (as far as mobile multi-player games go anyway). Then I read an article on about Project DarkStar - an open-source multi-player game server. Now there is something that we could use. Our current server implementation is based on EJB3 spec and GlassFish and works like a charm (currently we're handling nearly 2000 games a day) so no problems there. However, I am an explorer, rather than a "if it ain't broken don't fix it" kind of guy, and this DarkStar thing really strikes me as something worth exploring. So I continued in my new tradition:

If it's cool - write a NetBeans plugin for it.

I've exchanged a few emails with Jeff Kesselman (DarkStar lead) and I am happy to say that I am nearly finished with the plug-in which features:

  • Server management
  • Application management
  • .. and some code templates to make DarkStar work with mobile phones over HTTP
The whole thing will be presented at Java Mobile & Embedded Developer Days in SF in a few days by a friend of mine from Sun (NetBeans Mobility engineer) Karol Harezlak.

How does this fit together with Cotopia? Well, Project DarkStar is capable of handling the back end for Massively Muiltiplayer games, and who said that Cotopia was going to always be about 1 on 1 play? While we have more 2 player games in development (BallShot, Poker, Go, Checkers ..) we're looking into the future and see masses of players all interacting together in a new kind of game :)

Friday, January 11, 2008

Admob geo stats

Admob have released geographical statistics (Geo Stats) as a new feature. I have been waiting for that for a long time (see my Google mobile analytics post).

This is how it looks like for site.

I hope they will add phone types and operators in each country to the statistics soon.

Sunday, January 06, 2008

Celebrating 100000 games played

Thanks all of you for supporting us. We hope that soon we will have this number in active players too.
Please take a poll in the right menu and vote which game we should release next.