The Programmer's Approach

I heard a saying that when a pogrammer sees a big unsolvable problem, he splits it into smaller, managable chunks. That usually means writing separate programs for separate tasks, or at least providing libraries for the main program to use.

School Year Finished

I just passed my last exam this year. It was Mathematics and I got a 9 out of 10, which isn't that bad considering my time spent for studying. Anyway, I'll have quite a lot of time available for CGTable hacking. I am also going to set up and maintain a website for my father's firm. Currently it's only one static page and it's not very pretty, so I'll make a nice one with Drupal (like this one). The firm is an architectural one, to the site will list their completed and current projects along with some info about the workers.

CGTable restructuring

I've been busy this week thank to exams, but I managed to reorganize the code in CGTable as well as add some goodies:

Client size Connection is now handled in a separate library with signals and slots exported to D-Bus as well.
The whole program has been succesfully ported to CMake.
Player- and GameLists have become QMaps with player numbers as unique keys, to he whole system doesn't break when a player leaves.
Player and game information is passed between the server and the client with common data types, and setting participants' unique numbers now works on both sides.
...

DBus-friendly API for client connection

I've updated the communication part to fully use QTcpSocket's asynchronous API. The main program uses the Connection class' slots which correspond to game actions, to send data to the server, and its signals which mean some action came from the server. This way, the program needs no knowledge of the actual server-to-client protocol.

The slots can also be easily exported to D-Bus XML format, so that it's possible (and relatively easy) to write a client without using Qt at all which communicates using the same signals and slots.

Deck editor (not so) goodness

I've been working on image previews in CGtable. The preview widget is separate from the editor/game view, so its fully reusable. It interacts through a single slot which changes the displayed card.

The new Gatherer

Wizards of the Coast recently redesigned their Magic: The Gathering online database site called at http://gatherer.wizards.com. Since I've put some work into downloading cards from the old one, I didn't really like it. But as I saw quickly, it now validates as XHTML 1.0 Strict (as opposed to Transitional of the previous version). This means that Qt's XML component parses it correctly without dirty hacks.

CGTable Screenshots

Here are a couple of screenshots of the latest Card Game Table build I committed today. CGTable has gone a long way towards playability, but as you can probably see, I could use some usability and interface tips. Any sort of feedback, from ideas to sketches or mock-ups is welcome.

The set download dialog works well (except for Un-sets). Currently it has one unused label too many, and the buttons are a little awkward.

Blogging from Kontact

I just found the KDE Userbase at http://userbase.kde.org/, and although I consider myself to be an experienced user, I found some new things there. For example, that you can blog directly from KOrganizer without the need for a special blogging app.
Now for someone to write a Blog API (integrating kblog for example) for Akonadi.

CGTable progress report

So, what's new since the last report?
- Card text can be downloaded directly from Gatherer.
- Deck buidling is functional (although feature-lacking).
- Two clients can actually get to a game over a server.

What are the next steps:
- Sending the decklists to the server. Once there, most of the code is already in place to do what it has to do with them.
- Managing game state. I divided the task into three classes, so I suppose the frame is set, now to fill it with juice.
- Get some serious sleep.

I got rejected from GSoC

So, turned out I didn't get in to Google Summer of Code. Both ideas for which I wrote proposals were actually accepted, but will be done by other students. I suppose my presentation and bragging skills could use a little polishing.

I will certainly miss the 4500$ and the T-shirt, as well as working on a major Open Source project, but I really hope that accepted students do a better job that I would. I'm a first-year student after all, I'll have many more opportunities.

Syndicate content