I am a seasoned software designer, developer and consultant. In business since 1998. Having worked for many years in public and private sectors in different countries, I have gained deep understanding of various approaches to software development processes. Exposure to multiple cultures, work with demanding clients in fast paced environments developed my communication and business skills. My approach is result-oriented, constructive and pragmatic.

My long term goal is to work remotely writing software for clients located anywhere in the world. Take a look at my CV to see my past experience in detail. In short, I have vast knowedge of backend development (C++/Java+Scala/Python/C#) in finance and general areas, loads of web development experience (Java/DJango/JavaScript), some GUI (C#/Java) and Android (Scala/Java), GIS development (ArcIMS). Please do not hesitate to contact me, if you have any questions.

Cmake and FindMySQL

Cmake is a great build tool. It takes care of generating build system files, targeting, among others, Unix makefile, MS Visual Studio, ninja, XCode etc. There are various extra modules available for Cmake. One in particular allows the discovery of MySQL development files. It can be found here. Unfortunately, it has a few issues: it doesn't work for Windows, and it has a bug towards the end. So here is an updated copy, which seems to be working much better:

TeamCity and publishing NUGet packages to private repositories

Recently I had to figure out how to publish a NUGet package to a private password-protected repository as part of a TeamCity CI build process. NUGet, for those who are not aware, is a tool for managing .NET software in a convenient manner. It is similar in its purpose to Maven, the Java packaging framework. The implementation details are, of course, quite different.

Scrapy and persistent cookie manager middleware

Scrapy is a nice python environment for web scraping, i.e. extracting information from web sites automatically by crawling them. It works best with anonymous data discovery, but nothing stops you from having active sessions as well. In fact, scrapy transparently manages cookies, which are usually used to track user sessions. Unfortunately, the sessions don't survive between runs. This, however, can be fixed quite easily by adding custom cookie middleware. Here is an example:


No more Mr JavaScript guy?

After doing some web development work recently, I have clearly remembered why I hate JavaScript so much. Not only is it ugly as a language, lacking in type checking or even decent syntax for inheritance (actually faking it with various workarounds), but the actual fact of having effectively two separate code bases - front end and back end forces you to repeat quite a bit of code. And hunting for missing variables and fields or mismatching types is the favourite pastime of JavaScript developers.


Ubuntu 15.04 freezing

I use Ubuntu (a modern Linux distribution) as my main work station. Everything worked fine until I upgraded from version 14.10 to 15.04 of the OS. At this point strange things started to happen. After working for an hour or two my environment would freeze and stop responding altogether. Neither Ctrl-Alt-Del nor Ctrl-Alt-Backspace would produce any reaction. I couldn't connect to the machine remotely as well. Only hard reset would take me out of this state.

Scala "const" values

val values in Scala are, by specification, const, or final in Javaspeak. That means once assigned, they cannot be re-assigned. This doesn't mean that the assignment has to be something dull or simple. In fact, you can have a large piece of code doing all sorts of calculations with the result assigned to your value. Do it like this: