Archive for the Category: Uncategorized

SDK Design Goal #3: Design for Backward Compatibility

This is a fourth article in the SDK Design Goal series. Please see the introduction article “How to present the licensed technology the right way?”. This goal works together with the prior one, Design for Extensibility. Let’s assume your SDK has passed the evaluation, the partner has integrated your product and is shipping. They are […]

Leave a comment

SDK Design Goal #2: Design for Extensibility

This is a third article in the SDK Design Goal series. Please see the introduction article “How to present the licensed technology the right way?”. So if you followed the Design Goal #1 article, your design is good and you assume you got everything needed for quick integration. Your SDK provides all the functionality you […]

Leave a comment

Building a Raspberry Pi-based camera powered by Ethernet

The first built camera was installed in a remote place with no Ethernet connection, so it had to be WiFi-connected. The second camera, however, would replace an existing outdated IP camera, so there was Ethernet connection. Considering this, I decided to power it through Ethernet.

Leave a comment

Reverse-engineering the EMZ karaoke format, or watch out the API calls

Worked on adding support for the EMZ karaoke format to the Karaoke Player application, and would like to share another good reverse-engineering technique. EMZ is a Karaoke format similar to the old Karafun, based on a password-protected ZIP archive. Unlike Karafun, the password is not embedded into the archive, but is derived from a some […]

Also posted in reverse engineering 2 Comments

Generating C or Java byte array from a binary using command-line tools

Once in a while during development a software engineer needs to embed the binary object as byte array in C or Java language. While coding a solution is simple, it could be achieved by the following command line on Linux or cygwin: For unsigned data: od -v -t u1 <binary file> | cut -c9- | […]

Leave a comment

OpenSuSE 13.2: do not use BTRFS as rootfs

OpenSuSE 13.2 comes with BTRFS chosen as your default rootfs, replacing the old trusted ext4. Unfortunately the kernel version it ships with contains a known flaw which breaks some software using preallocated files and mmap() on them. Known issues have been reported for rtorrent (failed synchronization) and KDE (plasma-desktop crashes and could not be restarted […]

3 Comments

Running Mac OS X under qemu/KVM on AMD CPU

Due to the excellent work of Gabriel L.Somlo it is possible to run the emulated Mac OS X on Linux under Qemu/KVM. The changes seem to be minimal, and the operating system emulation works well – as long as you have the Intel CPU, that’s it. If you have only the AMD CPU, the emulation […]

28 Comments

Practical difference between epoll and Windows IO Completion Ports (IOCP)

Introduction This article compares the difference between the use of epoll and Windows I/O Completion Port (hereby IOCP). It may be of interest to system architects who need to create a high-performance cross-platform networking servers, and to software engineers porting such code from Windows to Linux or vice versa. It may also be of interest […]

1 Comment

Preventing WordPress comments spam

There seem to be an easy way to prevent a significant number of WordPress comment spam. The majority of spam comments nowadays come with either a bunch of URLs, or with a generic message such as: Hi there! Just discovered your site while i was browsing and i must say that i found it quite […]

Leave a comment

Help to fight Internet censorship!

Since Nov 1st 2012 the new Russian law implementing the Internet censorship comes into effect. This law allows several agencies of the Russian government to add any Internet site they consider “harmful to children” into the government-mandated block list. Russian Internet providers are legally obligated to block access to the sites which are present in […]

Leave a comment