DevLog: How I created my first AR NodeJS-backed web service

Back when NodeJS was in the mid 10.x, a client of mine had an idea of a free application that would leverage technology in order to promote his monthly magazine. He wanted the application to leverage augmented reality features in order to play videos on top of specific images that would be featured into pages of his magazine which concerns the automotive industry.

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

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

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

 
taxilogo
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 http://www.taxiplon.com/ .

GCD, NSOperation and Core Data/ Files on disk

Core data is fast, even on iOS, where handheld devices lack in speed when compared to desktop computers. However, there will be times where you will be required to do some heavy reading, wether that will be plain files from disk or information stored in Core Data. In my case, I initially tried to load too much data from a Core Data database using GCD, resulting in deadlocks, and later, I tried that using NSOperation. To save many people from frustration, I thought I should post my experiences and some general guidelines here.

Continue reading

** Release ** Unilib Creator (beta)

ulciconUnilib is now released. This is a small project I have been working in my spare time (which is very limited nowadays). It was created to facilitate operations done to and with dynamic and static libraries on iOS and OS X.

More importantly, it allows you to build FAT static libraries on OS X and iOS, saving you the trouble to put #ifdefs into your code to link against two types of library, depending on the platform you are buildinf for (arm or i386).

Yes, it’s geeky, but I have found it useful. The UI can certainly be improved, and it will be in the future, until this app is no longer in beta stage, and will be distributed into the Mac Application Store.

You can view more information by clicking on this link.

UniLib Creator (beta)

Universal Library Creator (Unilib) is an small application created in my spare time to facilitate operations done on static and dynamic libraries on iOS and OS X.

It combines some pretty neat stuff I wanted to try for so long using system services. I began writing some code for system services some time ago, and this is a project I made for myself, and thing it will help others.

It has helped me in many occasions, especially with Xcode 4. On iOS, the static libraries produced are for the actual device or the iPhone. It’s never for both. I don’t know why Apple hasn’t included this functionality in XCode 4, since it was already included in Xcode 3. All I know, is that I had found it hard to distribute my static libraries without giving the code, since the user would have to link them against the device or the simulator depending on the test environment, never both.

Some features:

  • Combine static FAT or plain libraries to make FAT static libraries for both OS X and iPhone
  • Obtain info about a static library like the architectures in it, and the object files in it
  • Exctract specific applications from a library.
  • Really UGLY user interface for the time being. Will certainly be improved.

Unilib is currently in bleeding edge beta, with only those basic functions implemented. It will be updated constantly, until it reaches to a point where it will be a commercial application for the Mac Application Store. So far it is free for use.

Requires Lion and an Intel 64-bit platform.

You can download the application here. It also includes some basic auto-update mechanism. Will add more features in future releases.

Making fat static Libraries (Simulator + Device), and applying to Three20

I am starting to get involved with the Three20 project. This project contains valuable classes and UI elements that I need. However, this big library is notorious for its difficulty to include inside an XCode 4 project. The included install script does not work, and the manual install instructions are a miss, and I ended up with Xcode complaining that it can’t find header files, even if I had set up the header search paths correctly.

So, I decided to pre-build the static libraries and include them to my project, and I was successful… to an extent. You see, I couldn’t use the same static libraries for the Simulator and the device, because the libraries built are built each time for the device you specify, and that device only. For example, if you build the libraries for the simulator, the produced libraries will work for the simulator. For the device, you need a different library package.

That led me to the long trip of finding a way to compile a static library for iOS that works for different architectures: armv6, armv7, and i386. Read on to find out how you can manage to make a static library that will work on all platforms.

Continue reading

Thoughts on Singletons

There are sometimes where some things keep bugging me in terms of programming. I often keep asking myself and others about utilizing the best techniques to solve various programming problems and applying certain concepts in a program.

Most answers I keep reading/hearing tend towards the “wow” factor. Which is something like “I don’t know exactly why, but it would be cooler if you did it like this”. I don’t usually listen to any recommendation regarding programming practices if it isn’t backed up by strong arguments as to how it may affect me in the long or short term as far as my projects are concerned. As programming languages are evolving, so do practices utilizing those languages, and often, as good programmers as we may be, we may sometimes find ourselves lagging behind others who may be less experienced, but better listeners.

Let’s face it. Many of us have utilized a not-so-well-thought technique in favor of completing a task within a certain amount of time. In other words, we have all sacrificed the chance to use good programming practices in need of being “faster”. Usually, this results in usable code, that may be improved in later versions. Less often, this isn’t the case.

As far as programming practices go, there are few of them that have received as much love and hate as Singletons.

Continue reading