A Showcase of Ambient Intelligence appliances

It’s been a while since my last blog post. Those were some very busy months. One of the highlight of those months, was work done for Atcom NEXT, a yearly event where we get to show the future of technology put some of our ideas into practice, and create high-profile proof of concepts. There were a lot of innovations that stranded out during the event, the ones I got involved in was everything regarding the mobile applications, the burger ordering system (read below) and the ‘coffee / non ordering system’.

It wasn’t easy, and it required as much critical thinking as it required development. Much work has been done for all aspects of the event, but I would like to spend of little time writing for just two of them. While reading these lines, keep in mind, that the whole event was the product of a team effort.

Continue reading

REST Client in Swift with Promises

Diving deeper into Swift, I am examining different ways of improving my architecture, and making the best decisions when creating new applications. For me, architecture and expressiveness  in the code is much more important that a complicated algorithm that boosts performance over 100%.

One thing I am called to do very often, is set up an HTTP client that will handle network operations, access tokens, and perform bandwidth throttling. So, I would like to share with you my idea of approaching the creation of an HTTP client with Swift.

Continue reading

R.I.P. iGreekNews part 2

In an unexpected turn of events, I was forced to take down iGreekNews. In short, Apple didn’t like that iGreekNews consults RSS feeds from various sources. I find it strange, considering that the purpose of RSS is to be free, and it is a means of communicating with news sources.

In any case, I cannot continue supporting it or try to mess with lawyers in order to gather any evidence that Apple may require. My full day job doesn’t leave me enough time to do that.

Continue reading

* Release * iGreekNews 2.0 for iOS

One year after I took down iGreekNews (along with iMe), I decided to re-implement iGreekNews using a new approach. It was time to put my NodeJS skills to good use, and construct an API around news feeds, and RSS, and also re-write the iOS application from the ground up using Swift. The result, after a few months of working in my free time, is iGreekNews v 2.0, which was released today as an update of the old application, in the App Store.

Continue reading

Vuforia SDK + remote video streaming on iOS

I recently have undertaken a project on iOS that requires integration with the Vuforia SDK. It’s an augmented reality proprietary framework, built for iOS and Android and has been very popular due to its innovative recognition library. One of the coolest demos that are appealing to advertisers or people looking to incorporate commercial campaigns inside their applications concerns the ability to play a video on top of a target. Vuforia even provides a sample application for that. However,  remote video streaming on texture does not work on textures.

This is a long standing issue, with people on the forums asking for a solution, some providing either free solutions which are outdated and / or non-performant, or paid solutions that are very expensive.

Continue reading

A few thoughts on Parallelism

It’s been a while. I am very sure many people experienced connectivity issues to my server. I believe these issues have been resolved. While searching in my old archives, I stumbled across an essay that I had written as a small part of a bigger exam in the university in France, a while ago. It seemed like an interesting read. It concerns parallelism, how it affects development, and also includes a few thoughts about Automatic Parallelisation.

Continue reading

AFNetworking + PromiseKit

AFNetworking is the de-facto standard for implementing a robust and scalable network infrastructure in your iOS or OS X application. I personally have used it for the implementation of many professional projects that I have been involved in. And lately I have stumbled across an delightful Framework, PromiseKit, a Promises implementation for iOS. I have then taken the liberty of incorporating Promises features into AFNetworking.

Continue reading

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.

CSPopViewService

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