Taller para aprender a programar DAPPS (Ethererum Blockchain) – Madrid

En colaboración con Everis, y otros partners, el próximo 24 de abril a las 18 de la tarde impartiré un taller de dos horas para aprender a programar aplicaciones distribuídas en Ethereum.

Ethereum, con paso firme, se está convirtiendo en el Ordenador Global de Internet. Es el sistema operativo que permite la instalación (deploy) de aplicaciones distribuídas, también conocidas como smart contracts.

Os invito a asistir al taller donde aprenderemos :

  1. Intro y conceptos básicos: Aprenderemos los conceptos básicos para desarrollar una aplicación distribuída
  2. Deploy de smart contracts : Qué herramientas son más eficaces y como implementarlas
  3. Reserva tu nombre en el ENS : Aprende como funciona el Ethereum Name Server y como reservar tu nombre
  4. Identidad mediante uport : Conceptos básicos para desarrollar una aplicación con uPort
 Os espero el día 24 a las 18 de la tarde en Madrid. Os podéis registrar desde aquí.

Debate abierto sobre el futuro de Mysql

 

Presentación

Oracle vs MysqlDesde que Oracle anunció la compra de Sun mucho se ha hablado sobre le futuro de Mysql. Dicha compra ha sido aprovada por el gobierno de Estados Unidos y está pendiente del visto bueno de la Comisión Europea que de momento ha presentado una declaración de objeciones.

El principal argumento utilizado  para evitar que el miedo azote a los defensores del Software Libre es que Mysql (más orientado a web) no es la competencia de Oracle (pensado para aplicaciones corporativas). Quizás eso es cierto ahora, pero a corto plazo muchas de estas aplicaciones van a moverse a la nube y entonces las dos bases de datos sí van a ser competencia directa. De hecho ya hoy en día muchas empresas utilizan (para abaratar costes) Mysql en sus aplicaciones internas.

También se dice que Oracle no parará el desarrollo de Mysql, pero en caso de hacerlo siempre existen forks en los que volcarse. La verdad es que Oracle, como propietario del copyright de Mysql, podría decidir matar el proyecto o cerrar el código de algunas de sus partes, lo que desenvocaría en múltiples conflictos legales con las ramas de Mysql (como por ejemplo Drizzle o MariaDB).

Nudo

El hecho es que Oracle no ha prometido (almenos no de forma legal) :

– Mantener Mysql bajo una licencia Open Source.

– No añadir herramientas o módulos de código cerrado.

– Mantener el código igual para MySQL enterprise edition y MySQL community edition

– No aumentar los precios de las licencias y soporte profesional de MySQL.

– Mantener la licencia dual y ser proveedores de licencias comerciales a quién las necesite.

– Desarrollar Mysql como un proyecto Open Source.

– Trabajara activamente con la comunidad

– Aplicar los patches enviados de forma regular

– No discriminar patches que hagan que Mysql sea más competitiva frente a Oracle y sus herramientas.

Desenlace

¿Qué podemos hacer? Enviar un email a comp-merger-registry@ec.europa.eu

La información a remitir sería la siguiente (aunque sois libres de decidir) y podéis escoger alguno de los siguientes textos (el que consideréis más apropiado):

Name:
Title:
Company:
Size of company:
How many MySQL installations:
Total data stored in MySQL (megabyte):
For what type of applications is MySQL used:
Should this email be kept confidential by EC: Yes/No


I don’t trust that Oracle will take good care of MySQL and MySQL should be divested to another company or foundation that have everything to gain by developing and promoting MySQL. One should also in the future be able to combine MySQL with closed source application (either by exceptions, a more permissive license or be able to dual license MySQL under favourable terms) 


I think that Oracle could be a good steward of MySQL, but I would need EC to have legally binding guarantees from Oracle that:
– All of MySQL will continue to be fully Open Source/free software in the future (no closed source modules).
– Open Source version and dual-licensed version of MySQL should have same source (like today).
– That development will be done in community friendly way.
– The manual should be released under a permissive license (so that one can fork it, the same way one can fork the server)
– That MySQL should be released under a more permissive license to ensure that forks can truly compete with Oracle if Oracle is not a good steward after all.
Alternatively:
– One should be able to always buy low priced commercial licenses for MySQL.
– All of the above should be perpetual and irrevocable.
There should also be mechanism so that if Oracle is not doing what is expected of it, forks should be able to compete with Oracle


I trust Oracle and I suggest that EC will approve the deal unconditionally.

 

Fuente Original : http://monty-says.blogspot.com/2009/12/help-saving-mysql.html

Desarrollo de APIs utilizando REST

El pasado sábado 31 de octubre tuve el honor de dar una charla en la PHP Barcelona Conference 2009. El nivel de los conferenciantes este año era muy elevado. Pudimos escuchar a ponentes de la talla de Sebastian Bergmann,  Fabien Potencier o Rasmus Lerdorf ( uno de los padres de PHP ).

Junto a estos gigantes de la programación web, aunque no a la misma altura, tuve el placer de hablar sobre el desarrollo de APIs para la creación de servicios web. Reconozco que a mi, al contrario que a la mayoría, me gusta hablar en público, y me lo paso en grande cuando tengo una oportunidad de exponer. Esta no fue una excepción, de hecho, los asistentes a la charla fueron muy participativos y contribuyeron con comentarios y preguntas muy inteligentes. Me siento muy afortunado de haber tenido esta oportunidad y le agradezco enormemente a la organización que me hayan permitido aportar mi granito de arena a la comunidad de desarrolladores web.

Aquí os dejo la presentación. Espero que os guste:

 

Kaspersky aumenta la potencia de sus antivirus con … Jackie Chan!

Hacía tiempo que no escribía, pero hoy me he visto obligado a hacerlo. El culpable es el carismático actor Jackie Chan, protagonista de este simpático spot de Kaspersky. No es ningún secreto que soy un fan incondicional de las películas del actor asiático, pero verlo en el ciberespacio eliminando virus a patada limpia, que queréis que os diga, me ha animado el día.

Realmente es una curiosa unión de personajes en una campaña de marketing que, personalmente y nunca objetivamente, encuentro genial. Tanto tiempo sin escribir y salgo con esta soberana tontería, parece mentira lo poco que necesito para empezar el día con muy buen pie! ¿Creéis que Jackie Chan querrá salir en el segundo spot de Twittexperts? (aquí os dejo el primer spot que rodamos)

Creando una startup desde cero. Parte 2 – Lenguaje de programación, Frameworks y CMS

 

Aquí estamos, con nuestra innovadora idea y nuestro recién registrado dominio. Estamos preparados para afrontar las primeras especificaciones técnicas. La primera pregunta es : ¿Qué lenguaje de programación debo utilizar? PHP, Java, Ruby, Perl…

Escoge tu lenguaje de programación

Hay tres preguntas a las que debes responder de forma sincera( by @JoeStump ):

  • Puedes encontrar desarrolladores?
  • Está ampliamente soportado?
  • Te hace feliz?

Olvídate de cuestiones de rendimiento (PHP no es escalable, ni Ruby, ni PERL…)  porque los lenguajes de programación no son escalables. No importa que hagas tu código un 300% más rápido ya que no es ahí donde se encuentran los cuellos de botella. En lugar de perder el tiempo descubriendo cual es el mejor lenguaje de programación existente mejor dedica tu valioso tiempo a pensar en cual de ellos va a hacerte la vida más fácil. Yo escojo PHP, y no estoy diciendo que sea mejor o más rápido, sencillamente es el lenguaje en el que he estado programando desde que empecé a trabajar. Además, podéis encontrar multitud de recursos en la red para llegar a dominar PHP.

No reinventes la rueda

Llegados a este punto recomiendo un poco de investigación. Puedo implementar mi idea en alguna tecnología ya desarrollada? Puedo utilizar un CMS para mi proyecto? Deberías considerar la opción de aprovechar la potencia de un CMS existente y modificarlo según tus necesidades antes que entrar a desarrollar todo el código desde cero. Un CMS (Content Management System) es una aplicación utilizada para crear, editar, organizar, buscar y publicar diversos tipos de contenidos digitales. Algunos de los menores CMS de código libre son :

  1. Silverstripe (PHP, MySQL)
  2. Joomla!(PHP, MySQL)
  3. Drupal (PHP, MySQL)
  4. Plone (Python, MySQL)
  5. Alfresco (Java, MySQL)
  6. WordPress(PHP, MySQL)
  7. OpenCMS (Java, MySQL)
  8. Mambo (PHP, MySQL)
  9. Typo3 (PHP, MySQL)
  10. e107 (PHP, MySQL)
  11. Liferay (Java)
  12. DotNetNuke (.NET)
  13. MODx (PHP, MySQL)
  14. XOOPS (PHP, MySQL)

Permiten personalizaciones mediante plugins y con pocas modificaciones puedes tener tu sitio web funcionando en un abrir y cerrar de ojos.

Mi aplicación es demasiado complicada! Los CMS no me sirven

Dependiendo de las necesidades de tu aplicación es posible que un CMS no sea la mejor solución. Ha llegado la hora de escoger un entorno de programación ( framework). Un framework es una abstracción en la cual un código común provee una funcionalidad genérica que puede ser sobreescrita de forma selectiva o especializada mediante código de usuario para proveer de una funcionalidad específica (bonita definición por cierto). Para que nos entendamos es una base de código sobre la que montar la aplicación, dicha base nos provee de funcionalidades genéricas para lidiar con los típico problema que un sitio web debe afrontar. Algunas características importantes a tener en cuenta son:

  • MVC (Modelo-Vista-Controlador)
  • Uso de Plantillas
  • Caché
  • Seguridad
  • Capa de abstracción de base de datos
  • Acceso al sistema de ficheros
  • Validación de frmularios
  • CMS interno
  • Sistema de autorización de usuarios

Frameworks PHP Conocidos ( via One2 )

Otros Frameworks:

Como puedes comprobar siempre intento utilizar alguna tecnología ya existente (son más robustas, con menos errores, tienes una comunidad a la que acudir en busca de ayuda y reducen significativamente el tiempo de desarrollo)

Aquí puedes encontrar una lista completa de Framworks

Fuentes : 15 Open Source Content Management Systems, Choosing a Framework

 


Creando una startup desde cero

Parte 3 – Diseño, recursos e Inspiración
Parte 4 – Seleccionar una Base de Datos
Parte 5 – Servidor dedicado o Hosting compartido?
Parte 6 – Sistema de control de versiones y copias de seguridad
Parte 7 – Estructura del CSS
Parte 8 – Estructura del JS y Framework
Parte 9 – URLs & SEO
Parte 10 – Herramientas de Test
Parte 11 – Promocionar tu startup

Creando una startup desde cero. Parte 1 – Escogiendo el dominio

En los últimos diez años me he visto envuelto en el desarrollo de bastantes proyectos web, algunos de ellos grandes portales con un numeroso equipo de desarrolladores y mucho tráfico. Reconozco que el principio incrustaba el HTML en el archivo PHP (lo se, pero era joven y necesitaba el dinero…), mucho ha llovido desde entonces y más he aprendido todavía, y creo que es hora de compartir dicho conocimiento y redactar el proceso de creación de una startup. Espero que sea de utilidad para mucho de vosotros, lo que es seguro es que yo voy a aprender todavía más escribiendo estos posts.

Parte 1 – Escoger el dominio

Es quizás la parte más difícil. Si estás leyendo esto es probable que ya tengas una buena idea, pero has intentado registrar el dominio correspondiente y te has encontrado con que ya está cogido. Incluso variaciones básicas del mismo tampoco están disponibles. No hablaré aquí sobre los domainers (de hecho ya lo hice en un post anterior), prefiero centrarme en como encontrar el dominio perfecto para tu startup

Primero algunos consejos sobre como debe ser el dominio:

  1. Escoge 5 palabras clave de tu negocio para generar el dominio
  2. El dominio debe ser único(que no existan negocios con ese nombre o uno similar)
  3. Tu marca debería ser tu dominio (Cambia de marca si es posible)
  4. Que sea corto, fácil de deletrear, recordar y escribir
  5. Es preferible un punto com (a menos que tu negocio sea local)
  6. Evita guiones y números.
  7. Ten cuidado con nombres que suenen igual  (y regístralos tambien si puedes)
  8. Olvida los nombres 2.0 (A menos que tengas mucho dinero para marketing)

Busca tus palabra clave

Existen algunos servicios para sugerir palabras clave basadas en búsquedas

  1. https://adwords.google.com/select/KeywordToolExternal
  2. https://account.uk.miva.com/advertiser/Account/Popups/KeywordGenBox.asp
  3. http://freekeywords.wordtracker.com
  4. http://www.selfseo.com/keyword_suggestion_tool.php

Generadores de dominio basados en palabras clave

Existen múltiples herramientas que te ayudarán a escoger el dominio basado en palabras clave:

  1. http://www.makewords.com
  2. http://www.nameboy.com
  3. http://www.dotomator.com
  4. http://www.bustaname.com
  5. http://www.123finder.com
  6. http://www.rwm.net/wizard.htm
  7. http://www.eyeondomain.com/search.html

Escogiendo el dominio correcto

En este punto es posible que hayas encontrado unos 10 posibles dominios disponibles (seguro que no el que buscabas), ahora debes dejar que otra gente te ayude. No lo hagas solo, haz una encuesta entre conocidos, amigos, familia…  Cuanta más gente involucres mejor será el dominio (siempre incluye a un SEO en esta etapa del proyecto)

Notas Finales

Haz todo lo que esté en tus manos para evitar comprar un dominio, se creativo e inventa tu propia marca. Es sólo el primer paso y puede llegar a ser muy duro pero no te rindas, lo mejor está por llegar.

No te precipites, si todo va bien, este dominio será para toda la vida.

Observa de cerca a la competencia, pueden darte excelentes ideas.

Ten en cuenta la posible evolución de tu negocio. ¿Vas a conquistar el mercado internacional?  ¿Sirve tu dominio para ese mercado? ¿Puedes traducirlo?


Creando una startup desde cero

Parte 3 – Diseño, recursos e Inspiración
Parte 4 – Seleccionar una Base de Datos
Parte 5 – Servidor dedicado o Hosting compartido?
Parte 6 – Sistema de control de versiones y copias de seguridad
Parte 7 – Estructura del CSS
Parte 8 – Estructura del JS y Framework
Parte 9 – URLs & SEO
Parte 10 – Herramientas de Test
Parte 11 – Promocionar tu startup

Compartir información. Escalabilidad en Proyectos Web

Muy poco queda ya del secretismo y la ley del silencio que las empresas tecnológicas exigían a sus trabajadores en el siglo pasado, al menos en proyectos web, donde ahora la tecnología está al alcance de todos y las ventajas competitivas se consiguen mediante el  diseño, la usabilidad, la originalidad, el marketing y muchos otros factores… Estos son tiempos de compartir!

Es esta filosofía la que ha permitido que desde Softonic publiquemos esta presentación utilizada en la formación interna del personal. Si tiene buena acogida estoy convencido que no será la última.

Se trata de la presentación utilizada para una charla que di en las oficinas de Softonic, el tema central es la escalabilidad en proyectos web y está basada en un workshop impartido por Joe Stump de Digg, traducida al castellano y con algunas modificaciones y actualizaciones.

Todos aquellos comentarios, preguntas, críticas y mejoras son bienvenidos para poder actualizar este documento y que sea más útil para todos.

Si la crisis aprieta, bueno es software libre. 10 programas gratis para sobrellevar la desaceleración económica.

Reduciendo costes

Lo reconozco, siempre he sido un ferviente defensor del software libre. Es fiable, robusto, fácil de modificar, se puede personalizar y además es gratis.

En múltiples ocasiones, he aconsejado a distintas empresas ( y algún particular ) a migrar a Software Libre, pero me encontré con bastante resistencia (miedo al cambio quizás ?). Y uno de los puntos esgrimidos para seguir siendo fieles a Microsoft era, para mi sorpresa, el precio. No entendían que un producto gratuito tuviera la calidad suficiente requerida en el mundo empresarial.

Esta situación está cambiando, el lobo ha llegado, la crisis arrecia (perdón, quiero decir desaceleración económica), se deben recortar costes y en esta coyuntura hay más miedo a la quiebra que al cambio. Por fin se ha creado una situación favorable para la implantación de Software Libre en el entorno empresarial.

La Lista

Esta es mi lista de aplicaciones que deberían estar en todas las oficinas:

1. Linux. Sistema operativo.

Rápido, fiable y seguro. Entre muchas opciones disponibles tenemos : Ubuntu, Red hat, Suse, Mandriva….

2. Open Office.org ( http://es.openoffice.org )

Completa suite ofimática (procesador de textos, presentaciones…). Imprescindible!

3. Group Office ( http://www.group-office.com )

Es una oficina virtual (calendario, agenda, gestor de proyectos y ficheros, cliente de correo…)

4. GNU Cash ( http://www.gnucash.org )

Contabilidad para la pequeña y mediana empresa.

5. The Gimp ( http://www.gimp.org )

Retoque fotográfico. Nada que envidiar a Photoshop.

6. Firefox ( http://www.mozilla-europe.org/es/firefox )

El navegador Web preferido por la comunidad geek hasta ahora.

7. Eclipse  ( http://www.eclipse.org )

Entorno de desarrollo integrado. Realmente potente.

8. BitchX ( http://www.bitchx.com )

Chat IRC.

9. XAMPP : ( http://www.apachefriends.org/en/xampp-linux.html )

Una de las formas más fáciles y rápidas de tener Apache, MySQL, PHP y phpMyAdmin.

10. Filezillahttp://filezilla-project.org )

Completo Cliente de FTP

Esta lista está pensada para un Pyme tecnológica. Aunque la mayoría de programas sirven en cualquier entorno y muchos de ellos tienen versión para Windows.

El Futuro

Aunque no todo en esta vida es Software Libre. Una buena manera de recortar gastos es utilizar aplicaciones web existentes para sustituir a los programas de escritorio tradicionales. De momento, la web 2.0 está orientada a usuarios (no a empresas), pero esto está cambiando, las nuevas tendencias (cloud computing) apuntan a un auge de aplicaciones online para empresas de cara al 2010. Veremos como evoluciona.

Inclusión de Javascript, como mejorar la carga y otros alegres consejos

En este artículo explicaré aquellas decisiones técnicas que he seguido para la inclusión de javascript en Manager Deportivo. Estos consejos hasta ahora me han dado buen resultado y espero que os sirvan de ayuda (o al menos de referencia).

Estar el último para ser el primero.

Es importante saber donde ubicar la inclusión de los ficheros “.js”, he optado por añadir todo el javascript al final del documento html, justo antes del </body>. De esta manera el navegador puede cargar y renderizar imágenes y HTML mejorando de esta manera el tiempo de respuesta. Por ejemplo, Google Analytics insiste siempre en que se sitúe su script al final del documento.

Evitar conflictos con el gremio de diseñadores/maquetadores.

Es una buena costumbre el separar el código Javascript del HTML puro y duro. Todas la funciones javascript deben ir en ficheros externos. Aunque todos los diseñadores que conozco dominan javascript, igualmente es importante separar la capa de presentación y la de funcionalidad.
En este caso “Consejos vendo, pero para mi no tengo”, reconozco que en mi portal aún no tengo en cuenta mis propios briconsejos.

En grupo mucho mejor.

Realizar una sola llamada que nos devuelva todo el JS, así se minimiza las peticiones HTTP y se mejora el tiempo de respuesta. Mediante el mod_rewrite redirecciono la llamada del js a un fichero PHP que montará todos los includes en uno solo.


RewriteRule ^general.js$ /group_javascript.php

Este fichero será el que devolverá agrupados todos los includes JS.

Con el verano llega la operación bikini.

Utilizo la librería de PHP JSMin (http://crockford.com/javascript/jsmin.html), se trata de un filtro para borrar comentarios y espacios en blanco y reducir así el tamaño del fichero.

Desde group_javascript.php:


include( 'jsmin-1.1.0.php' );

// Jquery.
echo JSMin::minify( file_get_contents( JAVASCRIPT_PATH.’jquery.js’ ) );

// Thickbox.
echo JSMin::minify( file_get_contents( JAVASCRIPT_PATH.’thickbox.js’ ) );

Pero que pasa cuando cambio el JS??

Un simple control de versiones me permite evitar que se cachee el js. Muy útil cuando se suben cambios importantes en el JS.


RewriteRule ^([0-9]+)/general.js$ /group_javascript.php

De esta manera las llamadas al javascript pueden ser del estilo : hhtp://www.ejemplo.com/15/general.js, yo tengo la versión guardada dentro de un fichero de configuración.

Caché, que gran invento.

Que contar que a estas alturas no sepáis sobre la grandeza del caché.

Desde group_javascript.php:

header("Content-type: text/javascript; charset: UTF-8");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 3;
$ExpStr = "Expires: " .
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);

Realmente todo este lío sirve para algo?

Para responder a esta pregunta instalad el plugin “YSlow” para Firefox. Comprobad la carga de vuestro sitio web antes de las modificaciones y después. Sacad vuestras propias conclusiones y comentadlas en este Blog.

Resumen y conclusiones

  • Javascript al final del documento.
  • Javascript en ficheros externos.
  • Agrupar ficheros js para reducir las peticiones HTTP.
  • Optimizar y minimizar el código de tus archivos JS.
  • Realizar un control de versiones.
  • Cachear siempre que se pueda.
  • Experimentar y probar alternativas.

Como podéis ver es una manera limpia,rápida y eficaz de optimizar vuestro código JS.

Os recomiendo la lectura del siguiente artículo sobre como optimizar el tiempo de carga de javascript

Los microformatos. Entrando en la Web semántica.

Está de moda, todo el mundo habla de ellos y yo no podía ser menos. A partir de ahora en ManagerDeportivo ya puedes encontrar microformatos. Entro de cabeza en la web semántica por la puerta grande.

Para los que no sepáis de que va el tema Luís Villa tiene una buena presentación sobre lo que son los microformatos, la podéis encontrar en : Microformatos en acción. La gente de CSSLab tiene un buen artículo. Y si buscáis recursos y enlaces os recomiendo el listado que presenta VirtualHosting.

De esta manera en aquellas páginas que lo requieran se añaden los formatos hCard (jugadores, equipos y ligas) y hCalendar (partidos).

Puede que su aplicación práctica ahora mismo sea más bien poca, pero en un futuro no muy lejano los buscadores indexarán y entregarán información más correcta gracias a los microformatos.

Quiero que este proyecto en el que estoy metido sea un experimento donde pueda añadir todas aquellas aplicaciones, funcionalidades e idas de la pelota en general que se me pasen por la cabeza (o por el lector de feeds).