Mobile Network Geolocation: Obtaining the Cell IDs & the Signal Strength of Surrounding Towers From a GSM Modem & Triangulating Device Location

Mobile Network GeolocationTo perform basic triangulation of the client GSM device’s location, the GSM modem can be queried to return information about the towers in the area, including their unique Cell Ids, and the signal strength obtained from each.

Using this information, a circle can be drawn around each cell, with the circle size relative to the signal strength of each tower. The point where these circles intersect can be considered the client’s probable location.

Here we explore methods of communication with an internal GSM modem over a serial interface, some of the applicable Hayes or AT commands used to communicate with the hardware and how the information provided to us buy the modem can be used to determine the device’s location by triangulating it’s position against known cell tower locations.

Continue reading

Creating an HTML5 Paint App

HTML5 Paint App
There are several apps available today that allow one to draw freely on your touch screen smartphone. Be it to take notes, annotate photographs, capture signatures digitally or to play games like the popular OMGPOP Draw Something App.

In this article we’ll explore a way to achieve this using the HTML5 canvas element and a little JavaScript.

Continue reading

Creating a Java Daemon (System Service) for Debian using Apache Commons Jsvc

Creating a Java Daemon for Debiandaemon is a computer program that runs as a background process, executing tasks on a predefined schedule or in response to particular events, or in response to requests for information or services from other programs.

To start up a Java program as a daemon using Jsvc, we’ll need to do a few things:

a) Implement the Apache Commons Daemon interface.

b) Install Jsvc by downloading and compiling the source (C) or via the command line with the sudo apt-get install jsvc command.

c) Create a bash shell script to launch the daemon and manage the basic set of daemon controls, namely: startstop restart. Others include reload status.

Continue reading

How to Add a Custom Eclipse Launcher to Unity

Eclipse Unity Integration

Anyone that has worked with Eclipse on Ubuntu has undoubtedly experienced this particular annoyance.

As Eclipse isn’t really ever “installed” but just executed, it is never registered as an application on the system and so is completely absent from the menu system etc..

Odds are, if you’re reading this that you too believe that there must be a better way than creating that sloppy desktop shortcut…

Continue reading

Extending AndEngine’s GenericPool to Safely Add and Remove Bodies from Box2D PhysicsWorld

Anyone delving into Android game development with Box2D physics will at some time struggled with seemingly random crashes when adding or removing bodies from the physics world. The instinctive thing to do is to destroy the object when some type of event has occurred, such as a touch event or collision in the physics simulation, however simply removing entities from the simulation can cause the simulation to crumble.

In this article I’ll go through my preferred method of safely adding and removing objects from the physics simulation with the minimum performance hit.

Continue reading

k-Means Cluster Analysis in Microsoft Excel

What is k-Means Cluster Analysis?

Cluster analysis is a method for automatically grouping data into a smaller number of subsets or clusters so that the records grouped are most statistically similar to each other based on the attributes of the data compared.

In statistics and data miningk-means clustering is a method of cluster analysis which aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean.

Given a set of observations (x1x2, …, xn), where each observation is a d-dimensional real vector, k-means clustering aims to partition the n observations into k sets (k ≤ nS = {S1S2, …, Sk} so as to minimize the within-cluster sum of squares.

\underset{\mathbf{S}} {\operatorname{arg\,min}} \sum_{i=1}^{k} \sum_{\mathbf x_j \in S_i} \left\| \mathbf x_j - \boldsymbol\mu_i \right\|^2

where μi is the mean of points in Si.Wikipedia 

Scatter Chart Clusters and Centroids

Scatter chart with coloured clusters and their centroids displayed in red

k-Means cluster analysis achieves this by partitioning the data into the required number of clusters by grouping records so that the euclidean distance between the record’s dimensions and the clusters centroid (point with the average dimensions of the points in the cluster) are as small as possible.

The following is a macro I wrote in VBA for Microsoft Excel that performs k-Means Cluster Analysis on the table selected.

Continue reading