Country border highlighting with Leaflet.js

Not too long ago I finished a project on Big Data for the University. One part of this huge project was the implementation of a dynamics map that would be responsive to mouse hover and mouse click. When the mouse would hover over a country, the whole country borders would be highlighted in the map, and if the user clicked inside those borders, we would display tons of interesting data using D3.js.

For map displaying and operations on Google Style maps, look no further than Leaflet.js.

All examples I found on the Internet would either not provide proper callbacks, or would not provide these features for the entire world map. Providing callbacks for a world map is extremely difficult in terms of performance optimisation, for reasons that will be explained below. For now, let’s briefly explain how it works.

Continue reading

Working on Big Data…

Doing a project on Big Data. It’s the first time that I realise that data visualisation is not a gimmick but actually helps one to process data with naked eye just with a glimpse. This screenshot is taken using MATLAB. X axis shows the index of a venue that I have loaded into an array. The Y axis shows an index of a timestamp, also loaded in memory. The Z axis shows how many people have visited this place.


When something is ready, I will publish it here.

Monsters in our dreams

Every dream has a monster, visible or not.

I’m talking about “daydreaming”, imagining one’s self in another situation, in a happy place, position, circumstance… Every such dream starts with having lots of imagination, and sometimes, false and stupid hopes. But it’s a dream, right? Everyone has the right to dream from time to time. At least, that’s what they teach us when we are young. While growing those dreams are being replaced by ones that become more and more realistic. Dreams about flying, being a singer, living alone in a small house in the fields are being replaced by “dreams” that are seem like aspirations, things that we want to improve in our everyday life, not radically new ideas.

Continue reading

Code updates

I have taken some time to update my GitHub repository, who has been lonely as of date. While developing code for my projects at the university, I came to realise that much of this code could prove useful to others.


First thing I did was to update the pop service for iOS library. The library is constructed to work with Chris Miles’ excellent CMPopTipView library, and improve automatisation of the appearance and disappearance of the pop tip views. The need for this came from the time I needed to construct a live demo with functionality from the application, so we needed to present and dismiss pop tip views automatically and at arbitrary time intervals.

Consider this code, taken from CSPopViewService.h

And here is how it is actually used:

This will have the following effect:

  1. It will present the ‘pop’ object pointing at the first bar item 2 seconds after the command is given.
  2. It will present the ‘pop2’ object pointing at the second bar item 1 second after the ‘pop’ item will appear.
  3. It will present the ‘pop3’ object pointing at the second bar item 2 seconds after the ‘pop2’ item appears. The other 2 pop items will be dismissed when ‘pop3’ appears.

That way, you can make presentation or tutorials within your application. You will not need to worry about threading or timers, since all timers can be cleaned up using the -stopAllTimers function. The best place for this function is the -viewWillDisappear function inside your view controller.

Sequential Reader – seqreader

Sequential Reader is a (little for the time being) file reader that I made, aimed at facilitating parsing files. I wanted a system that is fast and memory efficient, and can parse a file line by line. I had some line-by-line parsing to do in a HUGE file, to complete a project for the university. Turns out that many people had the same request as me, as Apple did not provide an easy way to do that.

Anyway, CSFileReader was created for this purpose. Just instantiate the reader with the file path, its encoding, and then assign a delegate to it. While parsing, the file will send you callbacks through the delegate functions, with the line that was read in NSString format.

I will have to invest some more time to these libraries to make them more mature. I will also have to create a new repository for CSWatchDog, a nice simple wrapper around GCD timers, aimed at facilitating working with events about to be fired after a few seconds. More on this, and updated code, soon.

Ogre + Bullet – Beginner’s Tutorial

Lately, I have been testing my skills with Ogre3D, a 3D rendering engine written in C++, and Bullet physics, which is used in many commercial games to give realistic movement and feel to movable objects in the world. I was amazed to see that there is actually not a comprehensive tutorial on how to use Bullet with Ogre3D.

There is a library, called OgreBullet, but I didn’t want to use that, because I have had some problems compiling it for OS X. Moreover, frameworks such as these link against Ogre, and many times things get messy if you try to compile the latest version of Ogre3D from their mercurial repository, since the latest version may differ from the stable one, and OgreBullet functions may not find what they expect in both frameworks.

Anyway, without priding myself of being an expert in Bullet or Ogre3D, I would like to give to others my findings on the matter, and help them implement basic Bullet functionality to their Ogre projects, while explaining how Bullet physics works in general.

Continue reading


I always wanted to study abroad. When I started my Bachelor’s degree, I said that my MSc would be abroad. Never knew why I said that, I didn’t even know if I would attend a  Master’s course. I never thought about it again, until I graduated obtaining the diploma of Engineer of Automations. I looked at the diploma, and I thought how good it would be if I put it into good use and actually take advantage of it to know more about the things I really liked. I had a decent job, and my life seemed as it had actually started to take shape and say “OK, this is what you are going to do from now on”. I liked it so far, to be honest, but It seems that my inquisitive nature could not let me rest. I decided that I wanted more, and that there were things that eluded me in Software Engineering.

Continue reading

iGreekNews updates for iPhone and iPad


After a long time, iGreekNews and iGreekNews HD for iOS have finally been updated. And it was about time.

Some of the changes are welcome, and have been requested many times by users.

— Renewal of the source websites. Removed many sites that do not work, and added new ones.
— Bug fixes. iPhone version should not crash when adding a custom URL anymore.
— Faster browsing
— Stability issues fixed.
— Sharing with Facebook and Twitter fixed. Now newer devices will use the iOS’ implementation of these services. to post.

The update is not without compromises, however. Due to changes in the codebase, iGreekNews stops to support iPhone 3G anymore, due to the minimum iOS requirement set to iOS 5.1. This change was necessary, as it’s time to start getting rid of old reduntant code that resulted in error-prone methodologies. Not to mention that even Apple’s own tools to not make it easy to test any application in older iOS versions if you don’t have a device dedicated to this purpose.

Lately development in all my projects has been stalled. And for good reason. I’m trying to cope with my studies and at the same time push development on new projects I want to get involved in. Stay tuned, as more updates will follow.

** RELEASE ** Michanikoi

I am proud to announce that a project for which I have developed the iOS application (Michanikoi) is now released.

With this application you can:

— Calculate the cost of the energy audit for houses situated in Greece.
— Answer all your questions regarding energy audits and general questions regarding it.
— Find nearby mechanics or by using criteria on a map.

You can view the application in the App store by clicking on this link

Continue reading

Small Update

Well, it’s a sad day today.

Remember about project Unicorn? It was a project I started a few months ago before I joined the army. I stumbled upon a problem no one could help me, so I abandoned the project, and I recreated it a few months ago, finishing it 2 weeks ago and uploading it to Apple.

The program was flawless. It incomporated a new multithreading technique, and a pretty useful feature, but Apple’s plans were different than mine. So, they rejected my application because it was too similar to their owns. They told me to add more features and then MAYBE they would post it.

I don’t know if it is worth it. This project was made mostly as a proof to myself that something like this could be done.

taxiplon a Global Mobile Awards Finalist

I am happy to announce that a project I am taking part to, taxiplon is now a Global Mobile Awards 2012 nominee in the category of Best Mobile Innovation for Automotive, Transport or Utilities.

You can read all about the competition here: In there you can find other nominees in other categories, too.

The new taxiplon platform offers a wealth of information for the taxi driver and the taxi company, along with access to a new customer base that is constantly evolving. You can visit taxiplon’s website at .