Today I’ve made first steps in developing the small jabber client that would suite my needs. I know it sounds retarted: just one more client, but I have tried almost all of them and hadn’t found my “silver bullet”. As far as I want it to be GTalk-compatible, the libjingle seems to be the only choice for the backend. The general build of this library runs smoothly as long as you follow the instructions in readme file 🙂 The first problem that had risen was how to use libjingle in the managed application.
I’ve finally managed to completely rewrite our build script using CruiseControl.NET and MSBuild (previously we used FinalBuilder 5, but decided to leave it because of various reasons). The work itself was really interesting as far as I’ve never used MSBuild before. Well, ok, we did use it always when building .Net part of our application, but that was really behind the scenes and we have never changed anything manually in .vcproj files.
At first I was really optimistic about writing all the stuff for our build solely on CCNet, but it appeared impossible because of its poor handling of user-defined variables and lack of flexibility for custom operations. That was the point where MSBuild helped a lot (take a look at Simple MSBuild Project tutorial to see what it looks like). I will describe several situations where I had to find own solution below.
The MVC architecture of Qt *View classes is brilliant except one little thing that is not pretty obvious from the beginning: how to find the QModelIndex instance corresponding to specific internal pointer. I wonder why, but I’ve searched the Internet pretty much until I’ve found the possible solutions on Qt developer FAQ page: “How can a QModelIndex be retrived from the model for an internal data item?”. There are three possible solutions. I’ve chosen the first and the simplest one: “Use unique identifiers” as far as it matched our requirements. The main idea of this option is that when you create the instance of a QModelIndex you pass the pointer to some internal data, but you should be sure that there will be no QModelIndex‘es pointing to the same data. So how to implement this approach?
?While working with the OpenSceneGraph rendering engine I needed to test the possibility of using “true transparency” via Depth Peeling algorithm (here’s the PDF document for more details). Unfortunately it uses several non-common OpenGL extensions that may be unavailable on some graphic cards. Trying to perform DP on those cards causes application to crash and to turn DP off on unsupported hardware some checks need to be done. So how to make it more stable and enable Depth Peeling only on supported hardware?
I am kinda lazy and don’t like to waste time to build python packages from scratch. Well, easy_install handles most of the cases perfectly but only when the extension does not require some external tool or library. The typical example is PycUrl library. You have to download the cURL itself, do this, than do that… and it is quite bothersome. Hopefully I have found the amazing place where lots of packages are prebuilt for Python 2.6 and 2.7: “Unofficial Windows Binaries for Python Extension Packages”. It is a real time-saver…
Finally I’ve found some time to spend on the portfolio site I wanted to have for a long time. Well, I have the blog of mine, but it is not connected with my professional side for the most part and is written in Ukrainian that is my native language while my customers are usually English-speaking. So here is the place where I will collect the showcases of my capabilities and also I’ll try to make the blog here be useful to other fellow developers by sharing my experience. Hope it will also help me improve my English which is not my native language. So “do your best!” to me and “welcome!” to you!