Mohanad Kaleia

Idea for a cause

How to use Bluetooth Beacons in positioning problem – part 1

Recently, I was working on a project to find the position of a target point (e.g. mobile phone), in an indoor environment. Many technologies are being used in this area including WIFI, Bluetooth, RFID and all kind of sensors you can imagine on your mobile phone.

In this article, I will explain my experiment in detecting position based on Bluetooth beacons, I used three estimote beacons, with a Raspberry pi 3 to be as the target point that I want to detect its position.

Read More

dpkg status database is locked by another process – no problem

In case you got this nasty error when trying to install new package on Ubuntu/Debian:
“dpkg status database is locked by another process”,
Then all you need to do is to run the following two commands in the terminal,

sudo rm /var/lib/dpkg/lock

sudo dpkg –configure -a

It worked perfectly with me,

Edge Computing – The wave of the future

Cloud computing was the wave of the future, or maybe it is the current wave of these days but not for the future anymore. Internet of things become to be on the top of the hype cycle of emerging technologies [1], and by 2020 around 50 billion devices will be connected to the internet sensing environment, as a result a really huge data (around 40ZB) will be generated, yes big data era is coming, but to handle all of coming data in the real time, process and generate knowledge out of it would really consider a crucial and yet hard to be handled on current data centers. So the question here how to get benefit of these data with losing its value?

cloud computing

Read More

Voronoi Diagram


In mathematics, a Voronoi diagram is a partitioning of a plane into regions based on distance to points in a specific subset of the plane. That set of points (called seeds, sites, or generators) is specified beforehand, and for each seed there is a corresponding region consisting of all points closer to that seed than to any other. These regions are called Voronoi cells. The Voronoi diagram of a set of points is dual to its Delaunay triangulation.

The origin of Voronoi diagram dates back to the 17th century. R. Descartes claims in his book [2] that the solar system consists of vortices. This concept has independently emerged, and proven useful, in various fields of science.

Read More

Cross Compilation of QT/C++ application for Windows under Linux

السلام عليكم ورحمة الله

من المعروف أن لغة C++ هي من بين اللغات التي يمكن أن تعمل على مختلف أنظمة التشغيل .. والتي تسمى cross-platform language، حيث يمكنك ان تقوم بكتابة برنامج وبناءه ليعمل على نظام تشغيل Windows و Linux وحتى على الموبايل..

في هذه المقالة سأشرح كيف نقوم ببناء مشروع QT based application على نظام Ubuntu بحيث يعمل على نظام Windows

Read More

Const and constexpr in C++

In C++, there is two type of constant, a constant expression which can be determine at compilation time, and normal const which takes its value during running time, 

const int i = 20; // This is const expression ,

const int j = i; // This is const expression, 

const int k = getSize(); // This constant can't be constant expression because the value of getSize can't be detected else of running time


Note: in C++11 we can define a function to be const expression, but this function should be simple enough so the compiler can get its output during compilation


Mohanad Kaleia, 

C++ Primer

Create windows service from an application

في هذه المقالة سوف أقوم بشرح كيفية إنشاء system service على نظام التشغيل ويندوز.

في البداية ماهي system services؟!

System services هي نوع خاص من التطبيقات تم إعدادها لكي تعمل في الخلفية، أحياناً حتى قبل أن يقوم المستخدم بتسجيل دخول.

لن أتحدث هنا بالتفصيل عن windows services يمكن الإطلاع عليها لو أحب القارئ من المصادر في آخر المقالة [1].

حديثي في هذه المقالة حول كيفية إنشاء service بسهولة، سنتعامل مع برنامج اسمه nssm، واسمه اختصار لـ non-sucking service manager.. J من اسمه نلاحظ أنه سهل الاستخدام يحاول تخفيف تعقيدات التعامل مع الخدمات

سأفترض أنه يوجد برنامج جاهز تريد فقط أن تقوم بتحويله إلى خدمة،

Read More

Engineers wisdom

"As engineers, we don't get paid to do things right, we get paid just to do things right enough"

"The great math mystery"

How to configure Ratchet with SSL

If you are using Apache web server (2.4 or above), enable these modules in httpd.conf file :


Add this setting to your httpd.conf file

ProxyPass /wss2/ ws://

Use this URL in your JavaSscript call when you want a WSS connection:

var ws = new WebSocket("wss://");

Restart Apache web server and make sure that your Ratchet worker (web socket connection) is open before applying the settings (telnet hostname port).