Wednesday, April 29, 2009

Tarneeb (and more on the way!)

We have recently launched Tarneeb, another popular card game in the region.

Since day one, we knew that we didn't want to be a Trix-only website; that's not the idea behind Jawaker. The idea is to have a card game website for the Middle East that would include many of the most popular games.

This had a big effect on how we designed the core of Jawaker. The core is designed to allow us to add more games easily. We also found out that some parts of games are common among many games, such as partnering, bidding and doubling. These parts are made to be re-usable.

So in short, our system will allow us to add more games for you to enjoy! And the more games we add, the easier it is to add new games, since they will probably have common parts with previous games.

Tuesday, April 21, 2009

Server Upgrade

As it turns out Jawaker is getting more popular by the day; as a result our server is working hard to keep up against the onslaught of user requests. We always strive to provide seamless smooth game play, even at peek times, so we decided to upgrade our server to a faster one capable of serving more users more quickly. Furthermore, big servers are cool :)

Enjoy!

Jawaker Has Improved, So "Watch" Out

We had heard a lot of feedback from our users requesting to be able to watch games in progress. This feature made a lot of sense to us, so we decided to add it to all games in progress. Now our users, whether logged in or not, can click the "eye" next to each game in progress and immediately start watching the game. Logged in users can also join the game directly if there is an empty seat.

On another note, we also implemented a new tool tip. We are strong believers in improving usability, so we applied a tool tip that is intelligently placed according to your screen, comes up upon hover and "sticks" upon clicking :)

Saturday, April 4, 2009

Something For Everyone

Variety is the spice of life. After deploying our recent changes to the game play that we thought were amazing eureka moments, we started receiving complaints from players who wanted to go back to the old style of play (i.e. without a timer and without people leaving and joining during the game). We were taken aback, because we thought that we had hit the nail on the head with our new changes. So the Jawaker team went back to the drawing board and decided to introduce choice to players when creating a new game. Players can now choose to play a game based on five parameters:

- With or without a timer, and how long the timer should be.

- With or without kicking out players when they fail to play a card for a specific number of turns.

- With or without the ability for players to manually leave during the course of the game.

- With or without the option for other players to join mid-game and continue games in progress.

- With or without the option for the computer to continue the game by playing in place of a player that has either left the game or has been kicked out.

To simplify things, we introduced two default styles of play, WITH all the options (which we call "non-stop") and WITHOUT all the options (which we call "humans only"). Our players also have the ability to customize their game and all this information is shown on the main games page for other players to decide whether they want to join or continue a specific game.

Wednesday, April 1, 2009

MySQL to PostgreSQL

Last week, we started noticing Jawaker becoming a bit slow. To investigate the problem, we built some custom tools and analyzed the logs. It turned out the game index is taking way too long to render! Digging a bit deeper, it turned out to be a particular SQL query.

We had earlier optimized most of our SQL queries, but we nevertheless tried our best to optimize this one even more. It wasn't clear why this query would take so much time; a very unreasonable amount of time actually. Fouad, being bitten by MySQL many times before, figured out that we might be better off if we try another system, in particular, PostgreSQL.

It took us one restless day to acquaint ourselves with Postgres, adjust the old queries for compatibility, create new schema, and move all the data. But it was worth it

At the end of the day, the problematic page was loading about 80 times faster! The server load dropped by a factor of more than 10.