Building Firefox for Mobile (Fennec) on Maemo SDK

Recently I built Firefox for mobile (Fennec) for Maemo, because I wanted the latest version. A few modifications had to be made and I decided to describe the process.

Note:If you don’t want to build Fennec yourself, you can skip reading and download the latest version here.
Read the rest of this entry »

Using Qualified Certificates on Nokia N900


Nokia N900

Several months ago I decided that I want to change my ageing Symbian platform, Nokia phone with something newer. I came across a bargain for Nokia N900. N900 has a querty keyboard and is running Maemo, a Linux-based OS. It has great integration with different instant messengers like Skype, GTalk, etc. The phone has 32 GB of storage, USB host and fully customizable UI. When I chose this phone I reasoned that I can easily customize its software, if the need arises, because it’s Linux-based. It’s a great phone, though it’s old (2009 model).

Qualified Digital Certificates

Digital certificates are the electronic equivalent of an ID card. They are issued by certification authorities and contain identification information about the holder, including the person’s public key, along with the authority’s digital signature, so that the recipient can verify the authenticity of the certificate.

The term qualified certificate is defined in European Directive. The qualified digital certificates are used in conjunction with secure signature-creation devices (cryptographic tokens) to create qualified electronic signatures. According to the EU legislation the qualified electronic signatures are equivalent to the handwritten signatures.

I have a qualified digital certificate, issued on Siemens CardOS card and an ACS ACR reader. Most of the time I have access to a PC, but I decided that since the N900 is running Linux it will be great, if I can use my qualified certificate on my phone.

The reader connected to the phone.

Read the rest of this entry »

Using CxxTest

Unit Testing 2 of 3

Having compared the two most popular C++ unit testing frameworks, let’s move on to the next step – the actual usage. Personally I prefer CxxTest, that’s why the samples bellow demonstrate its use. The test target will be the sample implementation of a read-only memory mapping.
Read the rest of this entry »

Installing Library Header Files with QMake

The problem

Since most of my projects are platform independent I like to organise them like Unix libraries. Unix libraries typically have the following directory structure:

./        Makefile(s)
./src     Source files and private header files
./include Public header files (that are to be installed)
./lib     Library build directory

The header files of the library should be installed into their own subdirectory of the common include directory. The code that uses the library can include the headers this way:

#include <mylibrary/myheader.h>

Copying the header files can be achieved in Visual Studio by adding a custom build step. The custom build steps allow the developer to customize the build process. But what about QT?
Read the rest of this entry »

Вредни ли са микровълновите фурни?

Микровълновите фурни са удобни и енергийно ефективни. Те се използват от десетилетия за подгряване на храни и напитки у дома, в офиса, в заведенията за хранене и т.н. Въпреки широкото им разпространение сред много хора битува мнението, че микровълновите фурни крият потенциални опасности за здравето. Преобладаващото мнение на учени, здравни експерти, правителствени агенции, а и обикновени хора е, че те са напълно безопасни, когато се използват правилно.

Първата домашна микровълнова печка, представена от Amana Corp през 1967 г.

Read the rest of this entry »

Tracing Memory Issues

I wasted two weeks of my life, hunting for a bug that is corrupting the heap of a server application. The application runs on Unix-like OSs and is fairly complex. It’s multithreaded and consists of a front-end and several back-ends. The server is written in C++ and it has in-house developed garbage collector. It exposes CORBA interface and several clients, developed in different languages (Java, C#, Perl), connect to it. Read the rest of this entry »

Assen’s Fortress

The famous Assen’s fortress is situated in the Rhodope mountains. The first archeological findings at the spot date back from the V – IV century BC, when the Thracians built a small tower, to guard the nearby road. Later it was used by the Romans and become a part of Byzantium, after the Roman Empire split in IV century AD. The fortress fell into Bulgarian hands in the second half of the IX century. The biggest construction was done during the reign of the Bulgarian tsar Ivan Assen II, when it was used for protection against the Latin Empire. The stronghold bears his name, because of an eight-line inscription in Old Bulgarian, carved into the rocks.

A side view of the fortress

Read the rest of this entry »

C++ Unit Testing Frameworks

Unit testing is focused on the smallest testable part of an application. A unit test exercises an individual portion of code, to determine if it functions properly.

Unit testing:

  • reduces the cost of software – defects are discovered during the development stage and can be fixed prior to the release to the test team;
  • promotes interface-based approach of implementing components. The interfaces are adding abstraction, that makes the code flexible;
  • ensures that the software functions as specified by the requirements.

Read the rest of this entry »


Tarnovgrad (nowadays Veliko Tarnovo) was the capital of the second Bulgarian kingdom from 1187 to 1393. It was situated on 3 hills – Tsarevets, Trapezitsa and Sveta Gora.  The main stronghold of the capital was Tsarevets. The palace of the Bulgarian tzars (kings) and the Patriarchate were located on that hill.

Main entrance gate of Tsarevets and the southern part of the stronghold

Main entrance gate of Tsarevets and the southern part of the stronghold

Read the rest of this entry »

Memory Mapped Files

A memory mapped file is a disk file (or a part of it) that has been associated to a segment of the virtual memory space of a process. It’s useful when you need to manipulate files that are too large to fit in memory. Once mapped you can access the file as if it was entirely uploaded in memory. In reality the OS is paging the appropriate part of the file as you read from the mapped file pointer.


  • It’s faster to access memory mapped files, than to use direct read and write operations;
  • You can use the data without copying it;
  • Ease of use.


  • You are limited by the process space. On 32-bit versions of Windows typically the applications have 2 GB addressable memory, meaning that you can not map files bigger than 2 GB.

Read the rest of this entry »