Archive for May 2012

Dieter Rams – Menos, pero mejor

May 20th, 2012

Dieter Rams

Mi primer contacto con Dieter Rams fue en mi infancia, sin quererlo y sin estar consciente de ello, todo gracias a mi padre que pensaba que gastar un poco mas en algo de calidad, a la larga te ahorraba mucho tiempo, dinero y problemas, es por ello que a mi madre cada tanto le regalaba algún que otro electrodoméstico marca Braun, no lo hacia porque era un fanboy de Dieter Rams, tampoco por que era un fanático de la marca, sino porque Braun tenia la reputación de producir productos de calidad, útiles y durables, reputación ganada gracias a un cuidado diseño, materiales de calidad y excelente fabricación, algo que ahora ha sido reemplazado por simple marketing, ya que es mas barato vender la sensación de calidad asociando un producto a un personaje “glamoroso” o creando la “experiencia” de calidad y exclusividad inflando los precios, muy pocas empresas en la actualidad realmente crean productos siguiendo los Diez Principios del Buen Diseño esbozados por Dieter Rams a principios de los 80 y pesar del tiempo que ha pasado, las cosas están peor que nunca, la palabra Diseño ha sido prostituida y devaluada, se fabrican cantidades superfluas de productos, lo cual es un derroche de tiempo, recursos y dinero, y la calidad de los mismos sigue siendo baja, aunque no así sus precios.

Afortunadamente, hoy con sus 80 años recién cumplidos, la voz de Dieter Rams cada vez es mas oída, y aunque ha tomado tiempo, al fin toda una generación de creadores esta empezando a aplicar sus enseñanzas.

Feliz cumpleaños Gestalt Ingenieur.

Design, Personal , , No response

Acceder a Nokia Maps desde QML

May 14th, 2012

Hoy encontré un link a mi blog desde este thread en Nokia Developer en donde preguntaban como abrir la aplicación Nokia Maps (ex Ovi Maps) con unas coordenadas especificas desde una app Qt, hacer esto desde QML es muy fácil, solo debemos usar el método openUrlExternally del objeto Qt de la siguiente manera:

MeeGo
Qt.openUrlExternally("geo:-34.603611,-58.381667")
Symbian
Qt.openUrlExternally("http://m.ovi.me/?c=-34.603611,-58.381667")

Ademas de poder abrir Nokia Maps en una ubicación precisa, con openUrlExternally también es posible, hacer llamados telefónicos, enviar SMSs, emails, abrir una dirección web en el navegador nativo y algunas otras cosas mas, pueden ver algunos ejemplos de esto y su implementación en esta entrada en la wiki de Nokia Developer

Development , , , , No response

Intro a QJson

May 11th, 2012

Hace unos días navegando por los proyectos públicos en Nokia Developer, me tope con un fork de QJson que incluye ciertas modificaciones para poder integrar QJson de forma mas natural con QML, antes ya había escrito como consumir JSON con QML, pero usar esta versión de QJson es mucho mas simple y eficiente.

Para empezar, lo primero que hay que hacer es bajar el proyecto y copiarlo en una carpeta con nombre el QJson en la carpeta raíz de nuestro proyecto.

Luego en el .pro de nuestro proyecto debemos hace un include al .pri de QJson.

include(./QJson/json.pri)

También en el .pro hay que declarar que vamos a usar la función network.

QT += network

En el main.cpp de nuestra app solo hay que crear los includes para QtDeclarative y para QJson y registrar el Type.

#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"

#include <QtDeclarative>
#include "QJson/qjson.h"

Q_DECL_EXPORT int main(int argc, char *argv[])
{
    QScopedPointer<QApplication> app(createApplication(argc, argv));

    qmlRegisterType<QJson>("QJson", 1, 0, "QJson");

    QmlApplicationViewer viewer;
    viewer.setMainQmlFile(QLatin1String("qml/QColor/main.qml"));
    viewer.showExpanded();

    return app->exec();
}

En la parte QML empezamos agregando un import a QJson, luego crearemos un objeto QJSon y por ultimo vamos a declarar que cuando se dispare el evento Component.onCompleted se le asignara la url a parsear al objeto QJson y luego iteraremos la data resultante de la consulta he iremos asignando lo valores obtenidos a los campos correspondientes del modelo.

import QtQuick 1.1
import QJson 1.0
import com.nokia.symbian 1.1

Page {
    id: mainPage

    ListModel {
        id:colorsModel
    }

    Component {
        id:colorsDelegate
        ListItem {
            height: 100
            Image {
                id:icon
                smooth: true
                width: parent.width
                height: parent.height
                source: imageUrl
                Rectangle {
                    width:parent.width
                    height: 28
                    color:"#000"
                    anchors.bottom: parent.bottom
                    anchors.bottomMargin: 0
                    opacity: 0.750
                    ListItemText {
                        role: "SubTitle"
                        text:title +" by " + userName
                        horizontalAlignment: Text.AlignHCenter
                    }
                }
            }
        }
    }

    ListView {
        anchors.fill: parent
        model: colorsModel
        delegate: colorsDelegate
    }

    QJson {
        id: json
        onError: {
            console.log("line:"+line)
            console.log("message:"+message)
        }
    }

    Component.onCompleted: {
        var data = json.parse("http://www.colourlovers.com/api/palettes/new&format=json")

        for(var p in data){
            colorsModel.append({
                                   "title"   : data[p]["title"]
                                   ,"userName"  : data[p]["userName"]
                                   ,"imageUrl": data[p]["imageUrl"]
                               })
        }
    }
}

Para este ejemplo use el API de ColorLovers para poder consultar las ultimas paletas que se han agregado a su DB, el resultado de este pequeño ejemplo pueden apreciarlo en la siguiente imagen.

QColor Demo

Development , , , , 4 responses

Tizen Developer Conference 2012 – Días 2 y 3

May 10th, 2012

En el segundo día de la Tizen Developer Conference 2012 durante la “verdadera” keynote que ofrecieron Imad Sousou y Jong-Deok Choi se pudo saber mas acerca del prototipo que todos los asistentes se van a llevar a casa, también se develo el roadmap, por lo cual ahora sabemos que la versión 2.0 de Tizen (nombre código Magnolia) estará disponible para finales de año y también hubo tiempo para demos, en donde el principal foco estuvo en HTML5 lo que fue una constante durante toda la conferencia.


Photo Source: TizenTalk

El resto de las charla tanto las del día 2 como las del día 3 se centraron y dejaron bien en claro que HTML5 es la opción principal para el desarrollo de aplicaciones en Tizen y que la posibilidad de desarrollar de forma nativa esta en duda o en suspenso hasta la versión 2.0, por lo visto en las charlas, Tizen se esta posicionando como un OS carrier friendly, ofreciendo un core común, con una UX flexible, que puede ser personalizada a gusto por los operadores, con esta base los carriers pueden ofrecer dispositivos que hagan uso de sus propias tiendas de aplicaciones y servicios on the cloud, para así crear su propio “ecosistema”.

Dejar de la lado la posibilidad del desarrollo nativo hace que uno de los pocos puntos diferenciadores y una de las pocas ventajas comparativas que podía llegar a tener Tizen se pierde y queda posicionado al mismo nivel de Boot to Gecko, que ataca el mismo nicho; dispositivos HTML5 ready y fácilmente personalizable por los operadores.

Es paradójico ver como HTML5 que fue pensado y esta siendo impulsado como el gran estándar unificador, el que permitirá un mundo mas Open, se convierte en la herramienta perfecta para que los grandes creadores de contenidos, los operadores y los fabricantes de dispositivos puedan fácilmente crear sus jardines vallados.

HTML5 y Cloud Computing se están convirtiendo en una nueva clase de pensamiento único, todo en aras de la facilidad de uso, de la comodidad y de la seguridad, nuestros dispositivos móviles se están convirtiendo cada vez mas en terminales bobas, en donde las aplicaciones serán meros front-ends y tus datos estarán almacenados en algún oscuro rincón de un datacenter junto con el resto de tus archivos, ya que es mas barato poner un gigabyte on the cloud que en un dispositivo, ademas el continuo ida y vuelta de datos es una buena noticia para los operadores que cobran por ese trafico y para los creadores de contenido que en un futuro solo van a ofrecer sus productos por este tipo de canales, con mucho DRM y estúpidas restricciones, ya que para ellos, tu eres culpable de piratería hasta que se pruebe lo contrario (cosa que nunca pasa), todo un circulo vicioso, en donde todos ganan, menos los usuarios, aunque ellos crean que son los mayores beneficiados, ya que en su ignorancia, ceden su propiedad (archivos, datos, información) y privacidad, por una conveniencia del momento, para así poder seguir cómodamente insensibles.

Siento ser tan pesimista, yo en lo personal no tenia muchas esperanzas puestas en Tizen, a diferencia de MeeGo, Tizen no ofrece nada nuevo, ni nada que entusiasme y eso se nota mucho, la comunidad alrededor de Tizen es mínima, el trafico en las lista de correos es ínfimo, los comentarios en IRC no son muy alentadores y la visión que tenia el proyecto MeeGo de crear un sistema operativo Open Source tanto en el código como en el proceso de desarrollo, a Tizen le queda grande.

Announcements, Community, Events, Opinion , , , 2 responses

[Actualizado] Tizen Developer Conference 2012 – Día 1

May 8th, 2012

Hoy comenzó formalmente la Tizen Developer Conference 2012 con algunas novedades, la primera y mas importante es la existencia de un prototipo provisto por Samsung corriendo Tizen, las especificaciones del dispositivo son aun desconocidas, pero seguramente con el correr de las horas sabremos mas acerca de el, el aparato tiene una apariencia bastante tosca pero por lo que cuenta de gente que ha podido verlo en funcionamiento el hardware parece de calidad y corre de forma fluida.

Photo Source: TizenTalk

La otra noticia importante es que no hubo noticias, ha ultimo momento pasaron a Imad Sousou de Intel y a Jong-Deok Choi de Samsung de la keynote de hoy a la keynote de mañana, por lo que solo quedo Jim Zemlin en escena hoy, el cual durmió a todo el auditorio y quienes lo seguíamos vía streaming con su tradicional speech acerca de la naturaleza de Linux y la función de la Linux Foundation.

Y eso es todo por hoy, lo mejor esta por venir en la Tizen Developer Conference 2012, si quieren seguir el evento, pueden presenciarlo vía streaming desde aquí o siguiendo a @TizenTalk en twitter o en su site, el cual esta haciendo una magnifica cobertura.

Actualización – 08/05/2012

La gente de The Handheld Blog ha podido examinar en detalle el prototipo de Tizen y lo grabo en video.

Announcements, Community , , , No response