Monday, September 12, 2016

Convergence Rank And Its Applications

In this paper, we explore an algorithm to determine the relevance of each item in a finite set of items in reference to each other to address an item you have to first go through a convergence or proxy item. If we imagine a media streaming company (convergence item) and all its available genres for playback (items in a finite set), how relevant is each music genre at different moments in time? Or with a sports broadcasting company and the covered sports, how does the relevance of each sport changes throughout the year as sports seasons begin and end?

As the algorithm gets developed in the paper, we introduce an artificial node to the relationship graph, which brings a disproportional weight in importance. Later, we show how to remove the artificial node from the final rank vector to obtain a ranking of items in the set without any distortions.

In addition to the ranking of a single point in time, the algorithm expands to analyze a sequence of consecutive convergence rankings, infers the behavior of trends and allows for the forecasting of near-future or cyclical ranks.

The applications of this algorithm are immediate and plentiful  in possibilities. In its essence, this algorithm can help to understand the usage behavior of services by its users based on non-invasive simple data collection. From its results, it is possible to better plan the allocation of resources.


Friday, May 24, 2013

ARGEOM - Augmented Reality Geolocation Math

Redirecting to https://dalmocirne.com/2015/05/01/the-math-behind-augmented-reality-maps/ If you are not redirected automatically, please follow the link to the article at: https://dalmocirne.com/2015/05/01/the-math-behind-augmented-reality-maps/

Monday, August 27, 2012

Forward Iterators


Introduction
Objective-C and the libraries in the Cocoa framework provide us with iterators, however they are to be used traversing class containers (NSArray, NSSet, etc). When we need to use iterators to traverse a raw memory container of structs, pointers, or primitive types, then we don’t have any pre-built solution and most often have to use a custom implementation.
In this article we will see a simple way of using iterators to traverse a raw memory container of pretty much anything, without departing from the familiarity of Objective-C code. We will use a simple class derived from NSObject and delegation to implement a forward iterator.
Forward Iterator
Our sample code is very simple to understand, nevertheless once the concept is understood, it can be easily expanded to more complex scenarios. In our case we chose to create a structure to store time (hours, minutes, and seconds), and we allocated enough memory, using malloc, to fit 100 entries of such structure.
typedef struct {
    int seconds;
    int minutes;
    int hours;
} TimeStruct;

The iterator we implemented is a forward iterator. It starts iterating from the first element (element zero) in the raw memory space, and moves forward sequentially to the last one. It cannot be rewinded, thus it is only good to be used one time. After the memory space has been traversed by the forward iterator, the iterator should be discarded.
In its implementation our forward iterator declares a delegate protocol and requires 3 methods to be implemented by the delegated class. Those methods should return:
  • The number entries in the allocated memory.
  • A pointer to the allocated memory.
  • The size of an element within the allocated memory.
The implementation of our forward iterator and sample code can be found at GitHub. Clone and use it freely at:
$ git clone git@github.com:dcirne/ForwadIterator.git
We will be using modern Objective-C with ARC and automatic synthesis of properties in our code. Open main.m and see that all it does is to create an instance of DCSampleCode and traverses forward the memory container. DCSampleCode declared the struct above, populates its 100 entries, and implements the delegate methods of the DCIterator class. The iterator is implemented in the DCIterator class and uses familiar nomenclature for its methods, such as hasNext and next.
for (; [iterator hasNext];) {
    t = [iterator next];
    printf("%d - %02i:%02i:%02i\n", index++, t->hours, t->minutes
           t->seconds);
}

As you could see, our example is quite simple to understand, and you now can use this forward iterator with more sophisticated cases.


Wednesday, March 9, 2011

ESPN's Game Ball - Jan/2011

ESPN has a special and unique way of recognizing and rewarding the employees who have done an outstanding job. The Game Ball is a distinct token that I was honored to receive on Jan/2011.

Tuesday, April 20, 2010

Multithreading: An Extensive Study on Linux, OpenSolaris, and Windows

There are many reasons why one may choose a particular operating system to run on their computer: availability of software, technical skills, etc. Among those reasons one may choose the operating system with the best performance, or the one with the lowest cost per transaction. This paper examines three operating systems (Linux, OpenSolaris, and Windows) and their respective capabilities of taking advantage of the multiple cores present in modern processors by executing operations with integers, floating points and math, and I/O in a multithreaded way, achieving parallelism in the execution of those operations, and then tries to reason the measurements from the experiments in the economics of an operating system.

Download the complete paper here

Friday, January 1, 2010

ScoreCenter TV Commercial



This is ScoreCenter. A commercial produced by ESPN to promote its flagship product for the iPhone and #1 sports app in the App Store.