Modelos de negocio 2.0

Todavía hay muchos que creen que eso del 2.0, es como la burbuja de las punto com entorno al año 2000, pero hay una cosa que diferencia claramente de esa época, es verdad que hoy existen nuevos modelos de negocio basados en las nuevas tecnologías de entonces, pero estas mismas tecnologías permiten calcular el ROI o retorno de la inversión.
Es decir podemos calcular y cuantificar el gasto y el ingreso repercutido.

Existen modelos de negocio que hace unos 5 años eran inexistentes o poco conocidos y que por entonces serían descabellados y pocos apostarían por ellos. Empleos como Community Manager y Personal Shopper, están cada día obteniendo mayor reputación.

Lo gratis no es gratis

Hoy en día se estilan los servicios Fremium, es decir se ofrecen de manera gratuita y posteriormente o por servicios avanzados se cobra una cuota.

Un buen amigo, me dijo algo (que probablemente lo sacara de otro lado), pero que quiero compartir:

Si el producto es gratuito, entonces tu eres el producto.

Y es que efectivamente el producto tiende a ser personalizado, estableciendo una unión entre el cliente y el producto inseparable, está quedando atrás (y en especial gracias a la crisis), aquello de los grandes almacenes, grandes consultoras o grandes centros de negocio.

El cliente está tomando una especial participación y en gran medida es por la gran dispersión de la población, algunos lo denominan tribus urbanas, es decir grupos de personas con una identidad y gustos, pero que en cierta manera quiere distinguirse del resto.

Las grandes empresas, no sólo están creando lineas de productos especializadas para ellos, sino que crean tiendas específicas para estos grupos.

Gracias a Internet, cualquiera puede vender lo que sea y a donde sea.

Es tanta la especialización y sectorización que el futuro de los productos pasa por ser totalmente personalizado, podremos ponerle nuestro logo, elegir el color o ponerle nuestra marca personal, sin que ello repercute gravemente en el precio del producto.

Paquetización de servicios

Otro de los factores claves es la paquetización de servicios, a pesar de ser un servicio especializado y exclusivo, el cliente se siente mejor con el hecho de que sepa de antemano que es un paquete de servicio y es modulorizable (mas y mejores servicios incrementos de precios estandarizados).

Las redes sociales.

Las reces sociales tomará un inportante campo de la atención especializada al cliente, no sólo eso, sino que ofrece un feedback impresionante, ofreciendo distintos puntos de vista del producto y de futuros productos demandado por los clientes.

Las posibilidades que ofrecen los informes sobre lo que se dice y no en las redes sociales sobre tu marca, producto o empresa, te ayudará a obtener información de los grupos de influencia.

El futuro.

Sin duda el futuro pasa por la automatización de los servicios especializados, una relación con el cliente nunca antes visto.

Empezó por la fabrica de Ford

Puedes elegir cualquier color para tu modelo T siempre y cuando este sea negro.

Pasamos a:

Tráenos el color, la imagen o la forma y nosotros lo ponemos en el producto.

Integración de Coda con Codeigniter

Creo que Panic Coda es uno de los entornos de desarrollo para Mac mas importante, que cada día toma mas adeptos.

Yo personalmente lo uso para desarrollo web, con el Framework de desarrollo Codeigniter en PHP, con el fin de poder tener el autocompletar con las clases de codeigniter, tendreis que hacer lo siguiente:

Descargar el paquete para modo codeigniter.

http://www.codingmonkeys.de/subethaedit/modes/Codeigniter.mode.zip

Copiar el archivo a :Library/Application Support/Coda/Modes

Listo en Coda sólo tendréis que darle a: Text -> Syntax Mode

Otro día os explicaré como se hace para Netbeans.

Redes sociales y trabajo colaborativo.

Hoy en día las redes sociales están tomando un papel muy importante en las empresas, no ya como un trabajo de marketing o difusión de contenidos propios de la empresas y sus productos, sino como una herramienta de trabajo colaborativa.

Es por ello que quiero poneros en conocimiento de dos herramientas destinadas a la colaboración.

Yammer

Yammer es una red social destinada a la comunicación interna de una organización.

Originalmente un sistema de microblogging, como puede ser Twitter, pero de manera privada dentro de la empresa.

Cuenta con nuevas funcionalidades como tickets, páginas y archivos.

Permite la creación de documentos colaborativos con edición en tiempo real.

Grandes corporaciones, empresas y organismos, los utilizan a diario para la comunicación interna, haciendo que el correo electrónico pasa a un segundo nivel.

 

Diaspora

Diaspora es un software libre destinado a ser instalado en nuestros servidores privados, que implementa una red social distribuida, interconectada a otras por lo que se denomina “pods”.

En resumidas cuentas podríamos decir que es una red social en la nube.

En esta red social puedes compartir tu estado, fotografías y otros datos sociales.

Está escrito en Ruby on Rails y las posibilidades de crecimiento, adaptación y modificación son prácticamente infinitas al ser un software libre.

Existen servidores publico que están experimentando con betas privadas, este es el caso de https://joindiaspora.com

Patrones de diseño en PHP

Creo que todo programador PHP debe tener claro algunos patrones muy usados en los proyectos web, a modo de recursos me gustaría que los tuvieseis a mano.
He simplificado el código al máximo saltándome en algunas ocasiones las interfaces, pero hay que usarlas.
De los UML ni os cuento, pero debería haberlos puesto también.

Tenéis mucha mas información en la wikipedia:

http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o

Existe tres tipos de patrones:

  • Creacionales
  • Estructurales
  • Comportamiento

Creacionales

Factoría

La particularidad que tienen  este patrón es que un método proporciona clases.

Por ejemplo supongamos que tenemos una tienda en la que se venden productos, pero el precio de estos productos no es de tipo estático sino que requiere de una función propia del producto.

<?php

interface IProduct {

    function getPrice();
}

class carrito {

    public static function getProduct($type) {
        switch ($type) {
            case 'A':
                return new ProductA();
                break;
            case 'B':
                return new ProductB();
                break;
        }
    }

}

class ProductA implements IProduct {

    function getPrice() {
        return 3;
    }

}

class ProductB implements IProduct {

    function getPrice() {
        return 4;
    }

}

$productoA = carrito::getProduct('A');
echo $productoA->getPrice();
$productoB = carrito::getProduct('B');
echo $productoB->getPrice();
?>

Singleton

El patrón singletone se usa para obtener un recurso y que este este una y sólo una vez creado, obteniéndose instancias de este.

Es muy util este patrón para conexiones con la base de datos.

<?php

class DB {

    private static $conection;

    static function getInstancia() {
        if (self::$conection == null) {
            self::$conection = "Conectado al servidor" . rand(1, 10);
        }
        return self::$conection;
    }

}

echo DB::getInstancia();
echo DB::getInstancia();
?>

Estructurales

Fachada

Basándonos en ejemplo de la factoría donde devolvíamos un producto, supongamos que tenemos una tienda y el precio del producto no es estático, sino que cada producto calcula su precio (pj depende de la oferta y la demanda y tiene que hacer una petición al mercado de valores), la tienda es una fachada que a pesar de tener la función getPrice($type), le pasa la pelota de calcular el precio al producto en cuestión ya que no sabe que tiene que hacer para calcular el precio.

<?php

interface IProduct {

    function getPrice();
}

class tienda {

    private $productA;
    private $productB;

    function __construct() {
        $this->productA = new ProductA();
        $this->productB = new ProductB();
    }

    function getPrice($type) {
        if ($type == "A")
            return $this->productA->getPrice();
        if ($type == "B")
            return $this->productB->getPrice();
    }

}

class ProductA implements IProduct {

    function getPrice() {
        return 3;
    }

}

class ProductB implements IProduct {

    function getPrice() {
        return 4;
    }

}

$tienda = new tienda();
echo $tienda->getPrice("A");
echo $tienda->getPrice("B");
?>

Comportamiento

Observador

Este patrón pretende informar a todos los elementos, por ejemplo supongamos un juego donde hay jugadores que tienen 2 métodos, informar y ser informados, el observador informa a todos los jugadores, cuando sucede un evento.

<?php

class Juego {

    private $jugadores;

    function addJugador($jugador) {
        $this->jugadores[$jugador->id] = $jugador;
    }

    function evento($jugador, $info) {
        foreach ($this->jugadores as $jugadork) {
            if ($jugador != $jugadork) {
                $jugadork->evento($this, $info);
            }
        }
    }

    function turno($id) {
        $jugador = $this->jugadores[$id];
        $this->evento($jugador, "informar");
    }

}

class jugador {

    public $id;

    function __construct() {
        $this->id = rand(1, 10);
    }

    function evento($juego, $info) {
        if ($info == "mensaje") {
            echo $this->id . ": me he llegado un mensaje";
        }
        if ($info == "informar") {
            echo $this->id . ": envia un mensaje";
            $juego->evento($this, "mensaje");
        }
    }

}

$juego = new Juego();
$jugador1 = new jugador();
$jugador2 = new jugador();
$juego->addJugador($jugador1);
$juego->addJugador($jugador2);
echo $jugador1->id . " y " . $jugador2->id . " en la partida";
$juego->turno($jugador1->id);
?>


 

Cadena de mando

La cadena de mando o Chain of Responsibility, consiste en ejecutar un determinado comando pero en un orden de prioridades.

Supongamos que tenemos un array que contiene objetos que implementan cierta interfaz y que están ordenados por su prioridad.

Para ilustrarlo usaremos las tres leyes de la robótica.

<?php

interface ILey {

    function cumpleLey($accion);
}

class Robot {

    private $leyes;

    function __construct() {
        $this->leyes = array();
    }

    function addLey($ley) {
        $this->leyes[] = $ley;
    }

    function executa($accion) {
        foreach ($this->leyes as $ley) {
            $ley->cumpleLey($accion);
        }
    }

}

class Ley implements ILey {

    private $mensaje;

    function __construct($mensaje) {
        $this->mensaje = $mensaje;
    }

    function cumpleLey($accion) {
        if ($accion) {
            echo $this->mensaje;
        }
    }

}

$robot = new Robot();
$ley1 = new Ley("Un robot no puede hacer daño a un ser humano o, por inacción, permitir que un ser humano sufra daño.");
$ley2 = new Ley("Un robot debe obedecer las órdenes dadas por los seres humanos, excepto si estas órdenes entrasen en conflicto con la Primera Ley.");
$ley3 = new Ley("Un robot debe proteger su propia existencia en la medida en que esta protección no entre en conflicto con la Primera o la Segunda Ley.");
$robot->addLey($ley1);
$robot->addLey($ley2);
$robot->addLey($ley3);
$robot->executa("Haz el tonto");
?>


Aunque en este sencillo ejemplo ejecutaría cualquier acción, lo que quería mostrar es que se ejecutan las leyes en un orden como en una cadena de mando.

Estrategia

Campus Party edición Milenio Reino de Granada

Campus Party MilenioDurante 5 días, 600 emprendedores campuseros se han dado cita en Granada, y si digo bien EMPRENDEDORES, pues a diferencia de otras Campus, en esta todo el mundo ha llevado un proyecto.

El evento se ha dividido en tres áreas: Innovación, Social Media y Ciencia.

Durante 3 días se han sucedido las diferentes actividades, conferencias y talleres, de muy distintas áreas: computación distribuida, Software Libre, ecommerce, emprendedores, robótica, overclocking y videojuegos.

Hacer especial mención a variabilidad de las nacionalidades que allí se dieron cita, una gran parte de los países del mediterráneo: argelinos, egipcios, franceses, italianos, turcos… incluso ingleses y polacos cuyas aguas no están bañadas por el mediterráneo.

Como bien definió uno por allí alguien, “esto es un gran erasmus”, aunque con una diferencia todos ellos llevaban un proyecto, y creo que ha sido la vez que mas horas he estado hablando en ingles sobre tecnología.

Para terminar me gustaría hacer una gran mención a los chicos de Yuzz de toda España, de los que me lleve un grato recuerdo y unas interminables conversaciones en los sofás, que bien podrían haber sido difundida por streaming, dado su gran importancia y nivel de estas mesas redondas, nunca mejor dicho.

Este verano nos espera la Campus Party en Silicon Valley, que pretende ser uno de los eventos tecnológicos del 2012, si no puedes traer a los grandes tecnólogos, CEOs y gurús de la informática a España, nosotros nos moveremos a donde empezó todo esto, la cuna de la tecnología: Silicon Valley.

 

El login perfecto

He querido crear un sistema de autentificación seguro para aquellas páginas que por alguna razón lo les permite usar un protocolo seguro “https”.

La idea me surgió, de haber estado trasteando con algunas pasarelas de pago.

Requisitos iniciales y tecnologías usadas:

  • Tecnología javascript
  • Clave (String a ser posible complejo para poder codificar)
Dado que el problema de la seguridad radica en que enviamos usuario y contraseña unidos al hacer la petición de login, aunque la contraseña vaya codificada en md5, siempre es la misma.
El truco radica en generar una contraseña que siempre varíe, lo haremos concatenando y generando un md5 de la siguiente manera:
1ª versión.
contraseña=md5(usuario+contraseña+fecha)
Bien este sistema al menos la contraseña siempre varía, siempre y cuando varíe la fecha, para evitar esto se usará una firma de vuelta que verifica la fecha y en servidor se comprueba que la hora no excede de n minutos, normalmente no se almacena la contraseña directamente en base de datos, normalmente podemos usar md5(contraseña)
2ª versión.
Del servidor vendrán los siguentes datos:
fecha_hora
firma=md5(fecha_hora+clave)
En el cliente se usara los datos del sevidor
fecha_hora=fecha_hora
firma=firma
contraseña=md5(contraseña)
contraseña=md5(usuario+contraseña+firma)
El el proceso de logueo se debera comporbar:
if fecha-hora_actual – fecha_hora< 2 minutos
if firma==md5(fecha+hora+clave)
if contraseña=md5(usuario+contraseña+firma)
   logueo correcto
else
   logueo no correcto
Aunque sea pseudo código, creo que se entiende bién.

Una nueva etapa, CarlosPF revolution.

Ha llegado la hora de una evolución tanto personal como profesional, tengo un nuevo horizonte, nuevos retos y ambiciones, ha llegado el momento de dar eses paso que quería dar y no lo hacía.

Dando una mirada al futuro cuesta vislumbrar lo que depara, pero recuerdo a un importante CEO decir: “Cuando un ingeniero termina la carrera, tarde o temprano encuentra un lugar en el que no hay otro experto mas importante que él mismo”.

Creo que será difícil, pues una característica en mi es aprender una cosa nueva cada día, por lo que tendré que especializarme en algún campo de I+D.

Proyectos

Tengo en mente algunos proyectos que podrían revolucionar el mundo en el que vivimos. Steve Jobs dejo los estudios, yo dejo el concepto de trabajar tal y como lo conocemos y lo paso a experimentar con el trabajo.

Tengo muchos proyectos sobre la mesa en los que estoy trabajando y salen adelante, la mayoría de ellos son desarrollos web innovadores aunque hay otro grupo de proyectos que me encantaría que salieran adelante, pero no dependen de mi.

He escuchado a personas que han trabajado en una gran consultora y decir que es la experiencia mas enriquecedora y masenvejecedora que han tenido.

Otra experiencia importante que tengo en mente es poder trabajar en el extranjero.

¿Emprendedor o trabajador?

Hasta ahora podría decir que no me he decantado por ninguna de ellas, aunque se puede ser emprendedor como trabajador, creo que le llaman “Engagement”, la vida como emprendedor como tal es algo dura, especialmente en este país..

Mi paso por Demartina

Estos 2 años en deMartina.com han sido muy fructíferos, tanto para mi como para ellos.

Entré con una beca de trabajo por la universidad en mi último año de carrera, recuerdo cuando recibí el correo para la entrevista, pensé que trabajaría con un gran equipo de desarrolladores, pero me sorprendío que sólo Juan y yo formásemos ese gran equipo de desarrollo.

Recuerdo que los inicios fueron algo raros, en la primera semana hubo una inundación y una mudanza a un nuevo almacén, por lo que esa semana trabajé desde casa.

A los pocos meses, poco a poco fue creciendo ese equipo, empezaron a entrar proyectos interesantes e innovadores, pues requerían de la última tecnología, al principio con algo de desorganización, pero es algo normal en equipos pequeños.

En los últimos meses es cuando ha habido la mayor actividad, el equipo a ido creciendo y no sólo en la parte de desarrollo, si no en otras áreas, como Social Media o marketing.

Durante mi estancia, pasamos de estar en unas oficinas en un polígono a unas oficinas en la capital.

Cartium y el ecommerce

Durante este periodo, me convertí en el Product Manager de Cartium, una distribución Open Source basada en Prestashop, que adaptamos y tradujimos al mercado español, cuando no existía ninguna versión en español.

Desarrollamos numerosos módulos, que se vendieron por todo el mundo, incluso algunos de ellos se incorporaron a Cartium.

La continuidad del proyecto Cartium no depende de mi, pues yo no la cree y no poseo los derechos, hoy por hoy las nuevas versiones de Prestashop cuentan con todas las características con las que contaba Cartium, aunque tengo que reconocer que me gustaría continuar desarrollando una distribución de Prestashop personalizada, y no la descarto en un futuro.

También formamos la Asociación Española de Expertos en Comercio Electrónico con el portal http://www.laboratorioecommerce.com/ donde se escribían artículos e informes sobre las tiendas online mas importantes.

Conclusiónes

Entré como un estudiante y salgo como un ingeniero, y es que ser becario de Juan es síntoma de triunfar, como bien cuenta en su blog (http://juanmacias.net/2010/10/de-programador-a-director-general/)

Cartium

¿Que es cartium?

Cartium es una plataforma de comercio electrónico Open Source desarrollada en PHP y derivada de Prestashop.

Inicialmente fue desarrollada para la juguetería online deMartina.com, y aunque actualmente no sea el sistema usado, este software fue liberado para que la comunidad lo usara, y permitió que se implantará en múltiples tiendas Españolas y latinoamericanas.

¿Cuales son sus carcterísticas?

La principal característica de diferenciación con respecto a Prestashop radica en que esta distribución está preparada para el mercado español.

Las características principales son:

Traducción y adaptación para venta en sistemas B2B, mediante el DNI español y la aplicación del Recargo de Equivalencia.

También cuenta con algunos módulos especialmente diseñados para esta distribución.

  • osc2psdc: Módulo de migración de datos de OSCommerce a Prestashop, capaz de migrar: categorías, fabricantes, productos, clientes y pedidos.
  • SEO: Módulo de molificación de meta-datos, como título, descripción y keywords, personalizable por producto, categoría y a nivel general.
  • Cartium Comments: Módulo de comentarios a productos, con envío de e-mails u votaciones de mejores comentarios.
  • Módulo que muestra una cuadricula con imágenes para acceder a las categorías, en la página principal.
  • Modo catálogo.

Continuidad el proyecto

Con la versión 1.4 del Prestashop, se ha abandonado temporalmente el proyecto hasta la versión 1.5 que vera la luz (previsiblemente) a finales de 2011, y se prevé que cuente con una base solida para continuar el proyecto.

Herramientas web para el desarrollo web

Cada día mas y mas se están migrando de herramientas puramente de escritorio a herramientas en la web “o en la nube”, que hacen que exista una independencia de las aplicaciones con respecto al dispositivo o sistema operativo que usamos.

Hoy os traigo 2 herramientas que he encontrado que me han sorprendido.

Maqetta

Maqetta es un software para maquetar web online, está desarrollado por IBM, y cuenta con numerosas utilidades.

Es un proyecto Open Source por lo que puedes ponerlo en tu servidor, funciona con Java en servidor, pero en la web tira de JavaScript.

Entre las grandes capacidades de este software, cabe destacar:

  • El uso, maquetación y configuracion de jQuery UI.
  • Control y manejo de de eventos de JavaScript, para cada elemento
  • El uso y configuración de controladores y contenedores DOJO
  • Elementos de formulario con validación incorporada.
  • Elementos DOJOX específicos para móviles.
  • Visualizadores para poder desarrollar específicamente para dispositivos móviles como iPads, iPhones, tablets y teléfonos android.

Y supongo que hay un montón de cosas mas que se me olvida.

 

Kodingen

La segunda herramienta que os traigo, es una herramienta puramente para programadores, para programar en la web.

Permite programar en múltiples lenguajes de programación (php, perl, python, django*, ruby on rails*,fastcgi).

Dentro de sus características destacables:

  • Espacio propio de trabajo, con servidor.
  • Integración con múltiples cuentas FTP externas.
  • Posibilidad de instalar software en tu web con tan solo un click.
  • Integración y gestión de bases de datos en la misma plataforma y de fuentes externas.

El proyecto se encuentra en fase Beta , hay otras muchas características que no están todavía disponibles, pero que personalmente creo que cambiarán el modo en el que trabajamos, algunas de estas herramientas: SVN, gestión de equipos de desarrollos…

 

Por último indicar la herramienta no tan sofisticada como las anteriores pero que yo aún la sigo usando y os animo simplemente a probarla.

Net2ftp

Net2ftp o como a mi m,e gusta llamarle netfileadmin, es un sistema de administración de archivos por ftp via web.

Nisiquiera pongo foto, porque su interfaz es muy sencilla incluso algo cutre si la comparamos con las anteriores, pero a la vez muy útil.

Entre las capacidades destacaría:

  • Posibilidad de editar código directamente en la web.
  • Poder copiar, cortar y pegar, archivos entre carpetas y entre servidores, esto es algo revolucionario para mi, ya que si este software lo tenemos instalado en uno de los servidores, la transmisión masiva de archivos entre servidores es “instantaneo”.
  • Compresión y descompresión de archivos Zip, esto es un avance en la manera en la que subimos archivos, ya que muchas veces subir numerosos archivos de pequeño tamaño, se convierte en un trauma para nuestro cliente FTP, de esta manera, sólo tenemos que subir un único archivo y descomprimirlo, porque nuevamente, esto se descomprime en el servidor donde tenemos el software instalado y luego se copian los archivos con los permisos de nuestro usuario FTP como si nosotros mismos los subiésemos. Cuidado porque no todos los servidores tienen esta función de descomprimir o acceso a servidores FTP externos.

 

 

Switch to our mobile site