Saturday, March 05, 2011

How to use Machine Learning to boost up your Parallel Computing

In the past, programmers would find reassurance to their problems of running extremely large programs in the yearly speed up of computer processors. Every year or so, the speed of computers would double and a faster computer would be in the market which would be able to rapidly execute their large sized code. But, in today's world this is not the case, analysing the GHz speed of the processors in a desktop computer of 2 years ago, versus the speed new desktop computers present, proves that it has barely, if any, increased, this mainly due to the fact that it is very difficult to build reliable low-cost processors that run significantly faster. This is the reason why, the solution to running faster code has focused on doubling the number of processors that exist on a single chip. Actually researchers believe, that in the following years we will have systems, which present twice the number of cores with every new technology generation.

It is important to note, that these multi-processors have laid the road for using parallel computing, in which a large program can be divided into smaller programs, each of which is then assigned to a processor with shared or independent resources. Parallelism is what is generally used today, for providing Performance improvement.

This approach although generally highly functional, has shown in some cases to degrade the performance considerably! The problem is that the scheduling of parallel jobs is a very complicated task which is highly dependent on a series of different factors: the workload, the blocking algorithm being utilised, the local operating system, the parallel programming language and the machine architecture. Expert humans are who tend to make the design specifications for these highly complicated tasks,and as a result they tend to be somewhat rigid and unsophisticated [1].

Because of this, machine learning techniques have in recent years provided a solution to this problem. Machine learning is a field which intends to build computer systems that automatically improve with experience. Researchers have been applying machine learning algorithms to problems of resource allocation, scheduling, load balancing, and design space exploration, among other things.

Such is the work done, in Cost-Aware Parallel Workload Allocation Approach based on Machine Learning Techniques. Here the authors tackle the problem of finding adequate workload allocations in a cost-aware manner, by learning from training examples how to allocate parallel workload among Java threads.
Given a program, their system computes its feature vectors, and utilising a nearest neighbour approach finds from the training examples, the best parallel scheme for this new program.

One may initially wonder, what type of training examples were utilised for this problem and how were they generated?
The training examples came from a series of programs coded in java, which presented different for loops. From each for loop its corresponding feature vector was calculated along with its associated label, this conformed each training example. In this case, the feature vector corresponded simply to the workload the for loop presented, and the label to the optimal number of threads that should be utilised with that specific workload.
The programs which were utilised for the training examples were manually selected, each had the purpose of bringing a certain workload variety to the training pool.The labels were set by an automatic program, which tested each workload (loop description) with a different number of threads, and then calculated what was the optimal thread number required for that specific workload to achieve optimal performance. It is important to note, that in this approach the computation cost of calculating the feature vectors was diminished by calculating an implicit estimate of the workload, the features which conformed the workload were: 1) loop depth; 2) loop size; 3) number of arrays used; 4) number of statements within the loop body, and 5) number of array references.

Since not all program features play an equal role in workload estimation different weights were assigned to different features during classification, with higher weights given to feature 1), 2) and 4). Within the paper it was not clearly explained how the values of these weights were assigned or what their values were. It might have been adequate to also utilise a learning algorithm which was capable of finding the most adequate weights given a certain training example, because it might be the case that under certain conditions a feature might be weaker for classification than an other, and therefore other weights need to be utilised. A broader explanation on the weight manner could have provided more insight and restricted this speculation, but it is interesting to ponder none the less.

On the other hand, in this example the authors opted for a supervised learning approach, where each training example that was handed to the system was manually selected and labelled. This is clearly a tedious task to do, and at times may not be the most optimal, since manually finding which examples provide more information for the learning process in comparison to other possible training examples is difficult and non-trivial. One therefore wonders if an unsupervised learning algorithm could have provided better results. In this type of approach, the machine can be "thrown into the wild" and through observations discover previously unknown structures or relationships between instances or their components, this could eliminate the problems mentioned previously, but has the shortcoming that if the learning phase is done online the algorithm might take much longer than if an instance based learning approach had been taken.



Furthermore it does not seem that their approach accounts for any long-term consequences. Each decision within a for loop was done independently of what had been decided for the other for loops within the program, this might mean, the decision to use X amount of threads for that workload might be locally optimal but not globally optimal, this could in the long run deteriorate the performance. This situation seems to suggest that for this problem instead of using instant based learning, a better approach would have been to use Reinforcement Learning. In Reinforcement Learning, the machine is not told which actions to take, but rather must infer them, by analysing what yields the best reward. The following figure presents an overview of how reinforcement learning works


For this particular case, if they authors had used this other learning method, it could have been possible for the machine to analyse the program as a whole, and decide then what the best long-term thread allocation for each workload would be. In specific, the machine would have interacted with the "environment" (in this case the supplied java program) over a discrete set of time steps. In each step the machine would have "sensed" the environment's current state (which would match the number of threads being used in each for loop) and executed an action(an action would correspond to assigning or removing more threads to certain for loops). This action would modify the environment’s state (which the machine could sense in the next time step) and produced an immediate reward (The reward would be the overall performance obtained for that particular thread assignation).
The machine’s objective would be to maximise its long-term cumulative reward by learning an optimal policy that maps states to actions.
In its most basic form, Reinforcement Learning brings a knowledge-free trial-and-error methodology in which the machine intents various actions in numerous system states, and learns from the consequences of each action.
From this, it is clear that the advantage of using this learning method is that no explicit model of either the computing system being managed or of the external process that generates workload or traffic are necessary.Additionally, Reinforcement Learning is capable of treating dynamical phenomena in the environment, as mentioned before, it can analyse how current decisions may have delayed consequences in both future rewards and future observed states.

Now, while this can sound very promising, it is necessary to also take into consideration, the challenges which Reinforcement Learning faces in the real world. Firstly, Reinforcement Learning can suffer from poor scalability in large state spaces, furthermore in times the performance obtained during online training can be below average, due to the lack of domain knowledge or good heuristics. In addition, because reinforcement learning procedures need to include "exploration" of actions, the selection of actions can be exceedingly costly to implement in a live system. This is the reason why, many modern applications that utilise reinforcement learning in order to address the above practical limitations,take a hybrid approach. Such an example, is the work done in A Hybrid Reinforcement Learning Approach to Autonomic Resource Allocation. Here the authors propose for the machine to have an offline training phase. They suggest that given enough training examples which follow a certain optimisation policy , the learner (machine) using reinforcement learning will be able to converge to the correct value function, it will be able to find a new policy which greedily maximises the value function and is able to improve the original policy that was given. In this form, the poor performance that is obtained by using live online training is avoided. Another benefit of their method is that multiple iterations can be done: Through training a new policy, which is the improved version of the original policy, is obtained. This improved policy can then be feed into the system again, acting as the original non-optimal policy, with this second policy a second data set is collected, which can then be used to train a further improved policy. This enables the possibility of running the algorithm iteratively till a desired "reward" is obtained.

It was mentioned before that reinforcement learning, presents the problem of having expensive exploration of actions, the authors tackled this problem by replacing the generally used lookup table for representing the value function with a nonlinear function approximator, in particular a neural network. A function approximator provides a solution to the mentioned issue, because it is mechanism for generalising training experience across states, therefore it is no longer necessary to visit every state in the state space. It also allows for generalisation across actions, so that the need for exploratory off-policy actions is also greatly reduced.

Their hybrid Reinforcement Learning approach was tested on realistic prototype Data Center, which dynamically allocates servers among multiple web applications so as to maximise the expected sum of SLA (service level agreement) payments in each application.

Although their proposed solution resolves most of the problems encountered with reinforcement learning, we can observe an aspect of their work, that might call for improvement: In their algorithm with each iteration, the model of the system is modified. They always assume the model "learned" from the use of a certain set of policies can never be applied to a set conformed of other policies. The authors never explored if this is always the case, could a model learned with certain policies still be valid under other policies which hold a degree of similarity to the original policies, or is it always necessary to learn from scratch the model, as a result of changes to an active set of policies?
Additionally, the authors utilised a neural network for finding the states to explore, and although this did solve the exploratory problem mentioned before, because the neural network has hidden states it is not possible to determine beforehand exactly how many states will be explored given the current used policies, knowing beforehand this number could improve computational costs as better planning can be done. In the work done in "An Adaptive Reinforcement Learning Approach to Policy-driven Automatic Management", the authors addressed this problems and show how a Reinforcement Learning Model can be adapted to accommodate this.
The authors analysed how previously learned information about the use of policies can be effectively used in a new scenario. For this, they consider policy modifications as well as the amount of time used to form the model before the changes. Similarly to the work in Hybrid Reinforcement Learning Approach to Autonomic Resource Allocation, a state transition model, which uses a set of active expectation policies is defined, but in difference to Hybrid Reinforcement Learning Approach to Autonomic Resource Allocation, instead of using a neural network, the authors capture the management system's behaviour through a state-transition graph, what their system is lacking and could be beneficial in the future is mapping directly how changes in policies effect the state-transition models

Monday, January 24, 2011

Soñando con Tacos en la ciudad de las estrellas de cine rodeada de angeles

(Este post es dedicado a mi lectora favorita!)
Mi lectora favorita, (ya que parece ser la unica que tengo..jajaja :P) Me recomendo ayer una cancion alemana ochentera. En general odio la musica ochentera, I'm all about the sixties man! Pero dado que tenia un estilo peculiar y fue recomendada por mi lectora favorita, decidi hacer un post de Musica Alemana al alcanze Mexicano!
Mi traduccion de D.A.F. KEBAB TRäUME!

Version Alemana:


Kebabträume in der Mauerstadt,
Türk-Kültür hinter Stacheldraht
Neu-Izmir ist in der DDR,
Atatürk der neue Herr.
Miliyet für die Sowjetunion,
in jeder Imbißstube ein Spion.
Im ZK Agent aus Türkei,
Deutschland, Deutschland, alles ist vorbei.

Kebabträume..

Miliyet...

Kebabträume...

Miliyet...

Wir sind die Türken von morgen.
Wir sind die Türken von morgen..


Version En Espa~ol!

Sue~os de Kebabs en la ciudad del Muro (Los Kebabs son un platillo tipico turco, usualmente llamado por ellos Döner kebab, la ciudad del Muro se podria referir a Berlin. )
Cultura turca atras de ese alambre de puas.
La nueva capital Turca esta en el este de alemania
Atatürk el nuevo Se~or ( Atatürk fue el primer presidente de Turquia!)
"nacionalidad" para la Union Sovietica. ( La palabra Miliyet no esta en aleman, sino en turco y significa Nacionalidad)
en cada cafeteria un espia
La administracion de los partidos comunitas regidos por alguien de Turquia. ( En la cancion usan la abreviacion ZK que es Zetralkomitee, el cual representaba el cuerpo administrativo de los partidos comunistas en Alemania- De acuerdo a Wikipedia)
Alemania Alemania, Todos esta perdido.
Sue~os con Kebabs...
Nacionalismo (en turco)
Sue~os con Kebabs...
Nacionalismo (en turco)
Nosotros somos los Turcos de Ma~ana,
Nosotros somos los Turcos de Ma~ana....


...wow...debo admitir que ME ENCANTO hacer esta traducccion! Muchas gracias a quien la recomendo!
No solo me sirivio para recordar el aleman, sino para aprender un poco de historia.

Considero que es duro como se refieren los turcos que viven en Alemania a ALemania: " Todo esta perdido." No se si yo me podria atrever a decir algo similar de un pais viviendo alli.
Muchos Mexicanos viven en EUA, pero no se si piensen o canten: EUA todo esta perdido...EUA todo esta perdido. Es una cancion muy nacionalista turca, que hace menos a la cultura alemana. Los demas que opinan?

Creo que es dificil ser extranjero en Alemania, se que en los trenes los policias tienen derecho a interrogar y pedir boletos a los que vean sospechosos y usualmente la selecion se hace de modo racial. Entonces ha de ser incomodo, no tener los ojos claros y el pelo rubio y verse como un tipico aleman. Talvez de alli viene ese sentimiento de enojo hacia Alemania y decirle que esta acabado, que quienes tienen el poder son ellos.
Alguien mas siente que la cancion es extremadamnete agresiva hacia los alemanes?

A veces pienso que si me gusta gritarle a los extranjeros el amor que tengo por Mexico, por nuestros tacos al pastor, la barbacoa, los corridos, los sones jaroches, por todas las cositas que son Mexico. Pero no se si me iria al extremo de decirles que su pais esta terminado. Se que por ejemplo, varios federales de EU han matado de modo violenta a la juventud mexicana. Pero aun no siento en mi sangre, tanto odio para cantarles que su pais ya cayo, ya termino.
Los Mexicanos que opinan?
Sue~o con Tacos..Sue~o con Tacos en la ciudad llena de estrellas de cine y rodeada de Angeles...

Thursday, November 25, 2010

Talk to me baby




I finally got running on my n900 code that converts text to voice. For it, I'm using eSpeak, which "is a compact open source software speech synthesizer for English and other languages, for Linux and Windows."
Today I will explain the steps I took to accomplish this.
One can first check out examples of this software in action by downloading from the application manager of the n900 espeak applications. I downloaded the server and the client, which includes a nifty UI with some mad and sexy lips MMMMm!
If you want to create your own application that does similar things to what eSpeak does,one must:
  1. Install PortAudio. Download PortAudio from: http://www.portaudio.com/download.html But pick the 18th version portaudio_v18_1.zip, since the 19th one has problems with the code from eSpeak and you will get many random errors. ( A coffee and a beautiful afternoon later I figured that out :(
  2. Copy the zip file to your scratch box and unzip it with:
    unzip -a portaudio_v18_1.zip
  3. Then do: ./configure && make
  4. type:make install
  5. type:ldconfig
With that you should have portaudio working within scratchbox, and you are now ready to start working with eSpeak!
  1. Download eSpeak from http://espeak.sourceforge.net/download.html. I personally picked the latest stable version they were offering.
  2. Uncompress it and move it to scratchbox .
  3. Enter the src folder and the easiest thing to do is to modify the Makefile, change the binDirectory and the LibDirectory so it points to where you have your PortAudio folder. In my case, I changed it to something like:
    BINDIR="/home/saiphcita/portaudio_v18_1/bin" and
    LIBDIR="/home/saiphcita/portaudio_v18_1/lib"
  4. Type: Make

With that you should have been able to compile eSpeak, you can now send to the n900 the eSpeak binary you have just created, execute it and test it out!
You can now modify the code and do as you please n_n.
i'm using this for an awesome eyes free application! =D (you know because instead of having to display the text or what not to the user, one can now read back to the user, and allow for their eyes to concentrate on more important things, such as driving or their lover's lovely smile! <3 ;)
Let me know if you have any troubles and we can try to solve them.

Friday, August 13, 2010

Visual Studio and Qt.

In this post we will explain how to get Qt installation for visual studio.

1. Download Qt source code. This is currently available in the nokia website: http://qt.nokia.com/downloads,
Unzip the file into e.g. c:\qt\4.6.1-vc. Important to use a path with no embedded spaces, as the Qt build tools have problems with them.
Install the SDK completely. Install also the plugin for Qt in visual studio.



2. Add these 3 paths to the Environment Variables: “C:\Qt\2009.01\bin” ,
“C:\Qt\2009.01\qt\bin” and \VC\bin .


3. Run the Visual Studio Command prompt. Start > Program Files > Visual Studio > Visual and go to the Qt installation directory. Type vcvars32.bat.
This will create the environment variables required for the next step. The batch file resides in the VC\bin directory of your Visual Studio installation.

4. Type configure -platform win32-msvc2008. (will take a long time)
This will tell Qt to prepare itself for being compiled by the Visual Studio compiler. Again, if you use another version of VS than 2008, replace win32-msvc-2008 with the makespec appropriate for you. We need to this, because the prebuilt binaries that come with the Open Source Qt distribution for Windows cannot be used by the Visual Studio compiler.So to fix this, we have to build those files from the Qt sourcecode using the Visual Studio compiler.

5. Type nmake (will take even longer)

6. It will stop after a LONG while with an error

7. Delete all the instances of mocinclude.tmp, they are usually in:
src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared

8. Run nmake again

9. Go to your qt app and run qmake –t vcapp

10. This should create a sln for the project

You should now be able to build your Qt project in visual studio



References:
http://tom.paschenda.org/blog/?p=28
http://www.qtforum.org/article/31561/error-when-building-libraries.html
http://dcsoft.wordpress.com/2010/01/30/how-to-setup-qt-4-5-visual-studio-integration/
http://docs.google.com/viewer?a=v&q=cache:3e0M85Vdd3wJ:portfolio.delinkx.com/files/Qt.pdf+qt+visual+studio&hl=en&gl=us&pid=bl&srcid=ADGEEShHdqxYfPWGn-PCxWty0Z9ehLVLaPv-qlpDeaLAlcohpIxHFWMw-PqM4N5euTpmRrxOA5fSX8l6KJZmq-ttAfPgNqt8io-kjHQt5j3RWQgySF5MFnXGeXufW6jEipZCRVuZ8yqA&sig=AHIEtbRYvPmPZUfMm1fb0SVKaSjfYX_BVg

Watching some QT movies with a cute chic

Recientemente me vi con el problema de que queria hacer una aplicacion que tocara videos con extension .mov (Un archivo de tipo MOV representa un formato especial de QuickTime para guardar audio y video ) dentro de una aplicacion hecha con Qt. (Qt es un framework para el desarrollo de aplicaciones para que corran en multiples plataformas (Linux, windows, mac etc) y comunmente se suele usar hacer apliaciones graficas, esto es, aplicaciones que tienen ventanitas, menucitos etc.)

La documentacion para hacer programas que toquen videos de tipo .mov no es NADA amigable, por lo que decidi hacer este peque~o tutorial respecto a como se puede lograr esto.

Qt posee una clase llamada QMovie,con la cual se pueden mostar aniamciones sencillas que no cuentan con sonido ( lo cual estaba perfecto para lo que yo queria hacer) En resumen QMovie permite leer y cargar una aniamcion simple, como una animacion de tipo .GIF. Por lo cual si lograramos convertir nuestras aniamciones en formato .MOV a .GIF nuestro problema estaria resulto. Y bien, gracias a Google, encontre esta peque~a applicacion que justamente lleva esto acabo: http://www.geovid.com/VidGIF
Y ya con nuestro video convertido en .GIF el codigo para hacer una ventanita que toque nuestro video es muy sencillo:

#include qtgui qapplication
#include qwidget
#include qhboxlayout
#include qlabel
#include qmovie
#include qpushbutton
#include qslider
int main(int argc, char *argv[])
{

QApplication a(argc, argv);
QWidget *win=new QWidget();
QHBoxLayout *lay=new QHBoxLayout();
QPushButton *play=new QPushButton("PLAY");
QPushButton *stop=new QPushButton("STOP");
QLabel *label=new QLabel;
QMovie *movie = new QMovie("Resources/musica.GIF");
movie->start();
label->setMovie(movie);
QObject::connect(play,SIGNAL(clicked()),movie,SLOT(start()));
QObject::connect(stop,SIGNAL(clicked()),movie,SLOT(stop()));

lay->addWidget(label);
lay->addWidget(play);
lay->addWidget(stop);
win->setLayout(lay);
win->show();
return a.exec();
}



Basicamente estoy cargando la pelicula, la agrego a una etiqueta la cual despues es agregada al widget, tambien agrego dos botones, los cuales sirven para detenerla y tocarla y finalmente presento al usuario la ventanita.
Esta es una manera sencilla de correr en QT peliculas de tipo .mov, aunque solo es valido si no nos interesa el audio que tiene la pelicula, para cosas mas complicadas que involucran audio es necesario checar otras clases que proporciona qt.
Los dejo con la ventanita que se crea, asi como con una imagen de la pelicula que esta tocando:
Arnie de Californiavspace=10 width="400" height="135">

Tuesday, July 06, 2010

About a Kid who rocks his code...

En este blog somos grandes fans de la tecnologia, y mas cuando se trata de tecnologia proveniente de la Maxima casa de Estudios, ie La Universidad Nacional Autonoma de Mexico, like most tecnology coming from Latin America is. Y es por eso que hoy hablaremos de dos applicaciones para el iphone desarrolladas por un joven estudiante de la Facultad de ingenieria de la UNAM que atacan la usabilidad integrando el uso de diversos sensores que se encuentran sobre el celular.
El post se desarrollara de la siguiente manera, primero expondre de que tratan los dos productos y despues tendremos una super entrevista especial con el autor de los mismos.
Es la priemra entrevista conducida en este blog!!

La primera aplicacion de la que hablaremos es Ubicate!

Pulpit rock
Que mejor que dejarles la descripcion que viene en la pagina de itunes para el producto:
"...Ubicate! is the new software for iPhone and iPod touch you need when using Mexico City's Metro, MetroBús, Tren Ligero (Light Train) and Tren Suburbano.
Don't know how to get from station A to station B?
Don't worry! Ubicate! is the smartest guide telling you in which direction you should take the train or bus, where to get off and when to make a connection with other lines or systems. Every information is presented in color, so it's even easier to follow the instructions."

Este programa hace uso de la localizacion del usuario via GPS, Google maps y tecnicas de inteligencia artificial para encontrarte la ruta de transporte publico mas conveniente dado donde te encuentras. Estas tecnicas antes habian sido usadas en robots moviles navegadores que intentaban encontrar el suministro de energia mas cercano, al joven Zarate se le ocurrio ir un paso adelante y sacar una util applicacion para cualquier chilango o para cuaLQUier visitante de la tierra Mexica. (Espero que todos ya tengan entre sus planes futuros ir al Mexico City baby! B-)

La segunda aplicacion de la cual hablaremos es de Glucose Monsters!
Pulpit rock

Glucose Monsters is the new software for iPhone and iPod Touch that helps you keep track of your glucose levels, blood pressure and weight.

- It's easy and fast to use.
- Provides useful information: Monitors changes on weight, and displays minimum, average and maximum values of glucose for week, month and year.
- Visual Information: Rotate your device in the statistics screen to see a graph of your glucose levels (available per week, month and year).
- Logs: Every record is kept so you can review it or show it to your health care team.
- Fun and rewarding: Unlike any other software of its genre, it's fun! Our Glucose Monsters will cheer you up and share a tip every time you add a new entry.


Glucose Monsters is more than just keeping records of glucose measures. It can keep track of weight and blood pressure measurements but it's also about doing it efficiently (move the slider, click 'add' and you're done) and doing it in a way that is rewarding. The graphs, the statistics, the slick interface and our monsters are there with the purpose of giving you positive feedback and ways to notice if you are taking enough care of the disease or not. We want you to shift from a "I'm doing it wrong" attitude to a "I've been doing it right" or "I can and I want to do it better" one.

You haven't used anything like this before!


Mi aplicacion favorita es Glucose Monsters, porque me parece el mercado en salud es muy grande y no es algo que se ha abordado del todo bien. It's always so borning to look at charts! Pero aqui lo volvieron divertido! Muy buena idea!

Y para hablarnos mas del producto, tenemos una entrevista especial privada y secreta con Hector Zarate! Las chicas pueden dejar en los comentarios sus correos, puede ser que el vea este post y les conteste, dejen su foto..jaja :P
Hablando de fotos Aqui hay unas del autor:























..pretty fly for a white guy huh?
Y la entrevista va asi:
Saiph: Por que decidiste empezar a hacer aplicaciones para smart phones? Por qué fue iphone y no por ejemplo para el n900?
Hector: Pasé las vacaciones de Verano pasadas en la ciudad y creo que tanto tiempo libre me hizo pensar: Bueno, podría hacer un proyecto de Verano. Casualmente usé mucho el Metro en esa temporada y ahí se me ocurrió Ubícate!, tal vez en algún viaje revisando el mapita me dije: estaría chido que tu iPhone te dijera para dónde ir o que tomar.
Entonces iPhone era una plataforma muy "sexy" por decirlo así. Era un dispositivo bastante novedoso (o al menos hype) junto con un SDK consistente que permitía jugar con todas esas novedades: sensores de movimiento, GPS, etc.
Encima existía el App Store, un servicio que me parece magnífico porque permite que desarrolladores de software pequeños exhiban, distribuyan y vendan sus aplicaciones en un mercado global y que te deja concentrar en el desarrollo de tus aplicaciones en lugar de otras cosas como: cómo cobrar, distribuir la aplicación, generar serials, etc.

Saiph: Como ves el futuro del smartphone en Mexico?
Hector:Hoy vi en la televisión un montón de anuncios de teléfonos. Todos tenían cámara y tocaban música; y a excepción de los "low-end" todos se conectaban a Facebook o Twitter y les podías instalar aplicaciones. Creo que todos los teléfonos están adquiriendo capacidades de smartphones, así que puede ser que la categoría de "smartphone" desaparezca.
Por otra parte, no se trata solo de los dispositivos porque son los servicios de telefonía e internet móvil lo que los hace interesantes. Lamentablemente el costo de estos servicios en México no han permitido la "democratización" de estas tecnologías sino que al contrario, la han convertido en una tecnología muy excluyente. Mientras esto no cambie, veo el potencial de los teléfonos mexicanos como limitado.

Saiph: Glucose Monsters y Ubicate tienen alguna filosofia en comun?
Hector:Claro! Queremos hacer software que sea útil y que en verdad resuelva algún problema y al mismo tiempo intentamos darle un enfoque distinto, poner mucha atención al arte y a la usabilidad para que la experiencia del usuario sea única y que eso nos identifique. Glucose Monsters nos hizo sentir muy satisfechos en ese sentido. No es la primera aplicación en iPhone para que personas con diabetes lleven sus registros de glucosa, pero ninguna tiene un concepto parecido al nuestro. También fue importante porque con ese proyecto aprendimos como hacer converger todas estas ideas que tal vez sean más evidentes con los siguientes productos que vamos a publicar en el App Store. ;)

Saiph: Como piensas que el numero de sensores que ahora poseen los smart phones afecte la interacion entre el usuario y la maquina?
Hector:Piensa en la interacción humana: tomar una cerveza con un amigo, preguntar por una calle cuando estás perdido, jugar algún deporte o bailar. Son experiencias que involucran todas las capacidades físicas del hombre: voz, contacto visual, gestos, lenguaje corporal o hasta una actividad física muy intensa. Ahora piensa en la interacción con las computadoras hasta hace unos años: no había voz, no había movimiento, en realidad la interacción estaba limitada a los dedos. Sin embargo, los nuevos sensores e inputs están extendiendo el dominio de esta interacción, están "naturalizándola" por decirlo así. El Wii es un buen ejemplo de esto y el iPhone va un poco en esa dirección también. Ese es el cambio mas importante que veo: el hacer una interacción mas natural entre el hombre y los dispositivos.

Saiph:Desarrollaste algun plan de negocio cuando sacaste Ubicate y Glucose Monsters? Fue esto complicado? Para alguien que proviene de un contexto de ingenieria que problemas existen?
Hector: Al principio no, después la idea empezó a crecer un poco y ahora sí, estamos terminando de afinar el plan de negocio, esperando el registro de la marca y trabajando también en los nuevos proyectos. Las dificultades que veo para un ingeniero es que el desarrollo de un producto final y de una empresa implica muchas otras cosas además de hacer código, pero la solución que hemos encontrado está en la colaboración de personas de distintas áreas.

Saiph:Crees que hay apoyo en Mexico para desarrollar tus propias ideas de aplicaciones?
Hector:A diferencia de otros, un emprendimiento de software puede llevarse a cabo sin la necesidad de grandes espacios, máquinas-robots futuristas o capitales astronómicos. Para mi, depende más del capital humano. Me gusta pensar que el talento y los conocimientos son los factores clave en el desarrollo de software y que una buena idea puede empezar sobre la MacBook más barata o dentro de un edificio de millones de dólares. Ahora, la forma de invertir en el capital humano es a través de la educación y en mi experiencia, la UNAM esta haciendo un esfuerzo importante en este aspecto. Aunque no concuerdo en muchas cosas con mi institución, reconozco un esfuerzo constante por dar acceso a información de calidad a la comunidad: becas, recursos electrónicos, actividades, cursos... En la Facultad de Ingeniería hay muchos cursos de programación, tecnología y recientemente he visto algunos otros sobre emprendimiento, marketing, etc... Incluso acaban de inaugurar una incubadora de negocios. Así que no puedo decir que no exista apoyo para desarrollar todo esto.

PREGUNTAS PERSONALES!!! <3>

Saiph:Que te gustaria que estuviera escrito en la lamina de tu tumba?
Hector:Cómo sería difícil poder decir algo importante había pensado en algo más divertido como: "Ahí nos vidrios", "Mala Pata" o "Puto el que lea esto".

Saiph: haha...
Saiph:Existe alguna cancion que te pone de buen humor cuando la escuchas?
Hector:Muchísimas! Creo que un día voy a hacer un mixtape con todos ellas. Algunas son: Raúl Midon - State of Mind, Tiga - Far From Home, Mose Allison - I Don't Worry About A Thing, David Bowie - Let's Dance, Pharrel Williams - Angel, The Guillemots - Made-Up Lovesong #43... Sí, definitivamente voy a hacer un mixtape con eso.

Saiph: Tienes algun talento secreto? Cual es?
Hector:Dejaría de ser secreto si lo revelará aquí. ;)

Saiph: Nombra alguna cosa unica a la cual le temes:
Hector:Zombies?


Muchas Gracias Hector!

Tuesday, June 29, 2010

Preparando la cancion de Giovani Dos Santos



El partido del domingo donde jugo Mexico-Argentina (disculpen la falta de acentos estoy en una maquina anti latina :( Sufri una gran depresion. Aunque sigo creyendo en la actitud que tiene Giovani Dos Santos y Chicharito. Ellos realmente me inspiran a trabajar mejor. Digo si estos chiquillo se estan rompiendo su madre en su trabajo, como yo no voy a hacer lo mismo en el mio?

Espero que se aprenda de errores de este mundial y el proximo mundial contemos con un mucho mejor tecnico. Me molesta esa situacion porque creo que se tenia talento pero no se supo aprovechar.

En fin sigamos adelante...
Cabe se~alar que estoy muy emocionada por el encuentro Argentina-Alemania. Quiero decir que admiro mucho toda la cultura de futbol que tiene alemania. Amo sus canciones futboleras. Me parecen motivantes.Alzan el espiritu!
Voy a compartir una las canciones futboleras alemanas que mas me agrada, tal vez la letra no es tan espiritual ( Hay otras que si lo son) pero en lo personal me divierte y me pone de buen humor.

! Los geht's Deutschland, kämpfen und siegen!






Das Lu Lu Lukas Podolski Lied
Poldi Poldi Halleluja
Poldi Poldi Halleluja
Poldi Poldi Halleluja
Es gibt einen Fußballgott

Manche Spieler, die sind einfach schwach
Du regierst den Ball und hälst ihn flach
Manche, die sind faule Millionäre
Doch dir geht es einfach um die Ehre

Nach dem Spiel ist wieder vor dem Spiel
Und läuft es auch mal nicht so, wie man will
Wirst du trotzdem immer alles geben
Denn für dich bedeutet Fußball Leben
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski

Wichtig ist ganz einfach auf'm Platz
Alles andere ist doch Ersatz
Du bist jung und du bist wild
Manchen Torwart hast du schon gekillt
Die Fans, die singen "Lukas, WE LOVE YOU"
Ja, du hast echt den Goldnen Schuh
Komm und mach das Dingen endlich rein
Denn dann singen alle im Verein:
Lu-Lu-Lu-Lukas Podolski Lu-Lu-Lu-Lukas Podolski
Goldi Poldi Halleluja
Goldi Poldi Halleluja
Goldi Poldi Halleluja
Es gibt einen Fußballgott
(Der Angriff läuft über rechts,
geht über links,in die Mitte,
in der Mitte steht wer?)
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
(Die 90. Spielminute läuft,
der Ball kommt aus dem Mittelfeld,
schießt zu Poldi,Poldi steht frei
vor der Hütte -Tooor!!!)


La cancion de Lu Lu Lukas Podolski
Poldi Poldi Halleluja
Poldi Poldi Halleluja
Poldi Poldi Halleluja
Existe un dios futbolero.
Muchos jugadores son simplemente muy chafas
Tu dominas el balon y lo puedes sostener como una tabla. Muchos son unos millonarios huevones.
Y si, la neta, la tierra gira simplemente alrededor tuyo.
Despues del juego es antes del juego *
Y a veces las cosas no pasan como uno quisiera, pero a pesar de ello, tu siempre daras tu maximo ya que para ti la vida es Futbol!
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lo importante es quedar en primer lugar, lo demas ciertamente es pura compensacion.
Tu estas joven y estas bien loco.
Ya te haz matado a muchos porteros
Los Fans te cantan: "Lukas, WE LOVE YOU"
Si, la neta tu tienes el zapato de oro.
Ven y haz que las cosas queden por fin perfectas y asi despues toda la sociedad te cantara:
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Goldi Poldi Halleluja
Goldi Poldi Halleluja
Goldi Poldi Halleluja
hay un dios futbolero

(la ofensiva corre hacia la derecha, se va a la izquierda y en medio, y en medio quien esta?!)
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
Lu-Lu-Lu-Lukas Podolski
(Al minuto 90 la pelota llega a medio,se la lanzan a Poldi,Poldi queda enfrente de la porteria-Goool!!! )




Aquí está la rolita:


Y aquí hay algunas notas acerca de algunas cosillas que menciona la canción:
Nach dem Spielt ist vor dem Spielt==despues del juego es antes del juego, esta es una frase que surgio de un entrenador de futbol aleman. Que me parece llevo al equipo a la gloria en un mundial. Lo que significa la frase es que una vez que haz terminado de jugar un partido, ya estas pensando y preparandote para el siguiente partido que jugaras.
Espero disfruten estas canciones alemanas, ojala alguien me pueda ayudar a hacer una cancion similar para Giovani Dos Santos. Aunque no se vale invitar a Belinda. Mejor libre solterito sin apuros ;) haha :P
Pondre una foto de Giovani, mostrando su coraje y como tambien merece su cancion: