jueves, diciembre 23, 2010

GC: Only the good die young

jueves, diciembre 23, 2010 por Martín


Una frase popular dentro del frikimundo de la Garbage Collection es "Only the good die young", que proviene además de una canción bastante popular de Billy Joel y que le viene que ni pintada.

Un poco de background para la frase. Todo esto depende de la máquina virtual utilizada, pero tomando como referencia Hotspot que es una máquina virtual generacional, tenemos que la memoria se divide en dos generaciónes: Young generation y Tenured generation. Cada una de estas zonas a su vez está dividida en otras zonas, pero esto lo vamos a obviar por razones de simplicidad.

La Young Generation es mucho más pequeña que la Tenured Generation. Por lo tanto, la recolección de basura ahí es mucho más rápida. Pero aún más importante, la recolección de basura en la Young Generation se hace constantemente y no requiere parar los diferentes threads de la máquina virtual de Java, mientras que normalmente (recordad, esto es una visión meramente pedagógica y simplificada) la recolección de basura en la Tenured Generation exige parar todos los threads de la máquina virtual.

martes, diciembre 21, 2010

¿Qué has hecho este verano? Soy programador

martes, diciembre 21, 2010 por Martín

Una de humor para el Martes. Supongo que es viejo pero me lo he encontrado y me ha hecho mucha gracia. ¿Qué has hecho este verano?

lunes, diciembre 20, 2010

La historia de Monster

lunes, diciembre 20, 2010 por Martín

Mr. Jordi Monné me avisa de que en Mixergy entrevistan a Jeff Taylor, el fundador de Monster.com. El señor Jordi es muy listo porque sabe que si me lo dice yo haré un resumen y así no tendrá que verse la entrevista. ¿Verdad? Verdad. He tomado unas notas de lo que ya es historia de Internet.

¿Cómo se crea el mayor imperio de clasificados de empleo del planeta? Atendiendo a la entrevista mi respuesta sería siendo el primero. En 1993 Jeff Taylor era dueño de una agencia de clasificados tradicional. Una agencia de publicidad enfocada en la colocación de personal. Es decir, gran empresa busca gente y ellos se encargan de poner los anuncios en los periódicos. Ni siquiera era una agencia de contratación. Pero les iba muy bien. Hacían 400.000 dólares al año.

Pero tras la crisis algunos de sus clientes tenían problemas, así que le dijeron: "O buscas formas mejores de anunciarnos o buscaremos quien lo haga por ti". Eso sí es motivación. Y a Jeff se le ocurrió crear una BBS (todavía no había webs), y llamarle Monster. Monster viene de la idea de tener una base de datos monstruosa. Lo que pasa es que pronto se dio cuenta de que no le llegaba con la BBS, porque quería imagenes, así que le pasaron el contacto de una empresa que hacía cosas para un sistema que se llamaba Mosaic (seguían sin existir las páginas web). Y así empezó todo. Monster fue el dominio 454 en ser registrado y cuando empezó todo sólo existían 200 páginas web en el mundo.

viernes, diciembre 17, 2010

Lecciones sobre AWS aprendidas en Netflix

viernes, diciembre 17, 2010 por Martín

Tal y como escribía hace unos días, la arquitectura de Netflix está basada en Amazon Web Services. La compañía, decidió a principios de año migrar su arquitectura a Amazon.

En el blog de Netflix, comparten cinco lecciones que han extraído de su experiencia al mover su arquitectura desde su propio data center a la nube:

lunes, diciembre 13, 2010

Notas sobre la arquitectura de Facebook Chat

lunes, diciembre 13, 2010 por Martín

En la línea de las notas de arquitectura que suelo publicar voy a escribir hoy un post con un resumen de notas que he ido sacando sobre un documento acerca de la arquitectura del chat de Facebook. Si os interesa el tema entonces os pueden interesar también las notas sobre la arquitectura de Facebook del año pasado. Empiezo.

En 2007 en Facebook se dan cuenta de que necesitan un Chat, seguir los mensajes entre muros es un infierno. El código surge en el 2007 de lo que en Facebook denominan un Hackathon, es decir quedarse los ingenieros durante toda una noche programando. No es hasta el 2008 cuando se manda el primer mensaje y lo lanzan oficialmente.

Las estadísticas del chat dan miedo:

  • 800+ million user messages / day

  • 7+ million active channels at peak

  • 1GB+ in / sec at peak

  • 100+ channel machines


McMafia

lunes, diciembre 13, 2010 por Martín

Durante estos días ha tocado irse de vacaciones, y más importante he pasado unos días en el hospital por una operación de rodilla que tenía pendiente desde hace unos añitos. Así que me ha quedado bastante tiempo para leer.

Uno de los libros que he leído es McMafia. Se trata de un libro no relacionado con la informática que le gustará a todos aquellos a los que les guste el tema del crimen organizado.

El libro resulta algo difícil de leer por la cantidad de nombres y hechos que aparecen que hacen que si vas leyendo unas cuantas páginas al día te pueda ser algo complicado seguir el hilo. Yo me lo compré en inglés porque quería que no se me oxide el vocabulario, pero la verdad es que en este caso seguramente obtaría por comprar la versión traducida, ya que como os digo el seguir tanto nombre, tanto hecho y tanta fecha se hace aún más complicado en otro lenguaje.

sábado, diciembre 04, 2010

Documentos sobre seguridad de Microsoft

sábado, diciembre 04, 2010 por Martín


A todos los que os interese el tema de la seguridad quizás os interese saber que desde Noviembre, Microsoft ha comenzado a publicar una serie de documentos de referencia relacionados con la seguridad en entornos web.

Estos documentos describen diferentes vulnerabilidades e intentan presentarlas de forma que puedan ser comprendidos por personas situadas en diferentes puestos de trabajo: desde el tomador de decisiones al tester pasando por arquitectos y desarrolladores. En el momento de la publicación de este post hay tres documentos disponibles:

jueves, diciembre 02, 2010

Creando mejores tests

jueves, diciembre 02, 2010 por Martín


Alfredo Casado ha publicado hace unos días en su blog un artículo muy recomendable donde comparte con todos una serie de consejos a la hora de crear mejores tets.

Alfredo nos recomienda tratar a nuestro código de tests como si fuese de producción y además explica una de las funcionalidades más interesantes de JUnit 4.7, que no conocía por cierto, que es la creación de reglas (Rules) que permiten extraer código común que se utiliza en todos los tests.

No cuento nada más. El que quiera saber más que lea su artículo: Escribiendo mejores tests.

martes, noviembre 30, 2010

La arquitectura de Netflix

martes, noviembre 30, 2010 por Martín


Adrian Cockcroft, Cloud Architect en Netflix ha compartido unas transparencias en Slideshare bastante interesantes sobre el servicio de streaming de video Netflix.

Las transparencias están orientadas tanto a desarrolladores como a ingenieros de sistemas. Las notas que se sacan son bastante interesantes y son bastante densas, de hecho entran en bastantes detalles según comenta su autor en su propio blog para atraer a ingenieros a su equipo, ya que están contratando. Y vaya si están contratando. En su web tienen unas 100 posiciones abiertas ahora mismo. Como siempre me pasa, este post iba a ser una simple referencia pero ha terminado en una recopilación de notas.

domingo, noviembre 28, 2010

SSD vs. memoria RAM en MySQL

domingo, noviembre 28, 2010 por Martín


Interesante reflexión en el blog de Percona sobre si tener más memoria RAM tiene ya sentido cuando los discos SSD están cada vez más baratos.

En sus pruebas crearon un conjunto de datos de 230Gb. y empezaron a darle caña al MySQL
variando el tamaño del buffer de datos de memoria. Aquí están los resultados:

sábado, noviembre 27, 2010

Citas clásicas de programación

sábado, noviembre 27, 2010 por Martín


Este post está copiado y pegado vilmente de esta fuente original:

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil
- C. A. R. Hoare

Walking on water and developing software from a specification are easy if both are frozen
- Edward V Berard

It always takes longer than you expect, even when you take into account Hofstadter’s Law.
- Hofstadter’s Law

viernes, noviembre 26, 2010

Ejemplos de Startups sostenibles

viernes, noviembre 26, 2010 por Martín


Siguiendo con el tema de ayer y el hecho de que la recomendación de estar full-time en una Startup es una tontería, en HackerNews preguntaban hace unos días a su comunidad que pusiesen ejemplos de personas que ahora mismo estaban viviendo de su Startup.

Como dice alguien en el hilo en cuestión, se trata de un post bastante motivador ya que salen ejemplos de Startups de personas reales, que están viviendo de su trabajo y que la mayoría encima no han recibido ningún tipo de ayuda externa. Además, si os leéis los ejemplos veréis que muchos de los emprendedores no tuvieron que empezaron full-time con su Startup, y sólo dieron ese paso cuando veían que empezaban a tener clientes o cuando estaban ya obteniendo beneficios de su esfuerzo.

jueves, noviembre 25, 2010

Emprender en España. Mito 1: Trabajo full time

jueves, noviembre 25, 2010 por Martín

El pasado sábado me comentaba Ferrán que a ver si escribía un poco sobre mi experiencia con Jobsket. Básicamente mi/nuestra experiencia ha sido y está siendo un continuo vaivén de sensaciones. Unas veces parecía que ibamos a arrasar y otras que estábamos acabados, y así seguimos :)

Recuerdo hace unos meses que intenté escribir un post que resumía el primer año de Jobsket, y tuve que parar, porque es que había tantas cosas que no era capaz de escribirlo todo ni en uno, ni en dos posts, y al final se quedó en el tintero.

Ahora voy a intentar redimirme e intentaré en las próximas semanas ir publicando cosillas sobre mi experiencia. Básicamente una de las cosas que más me ha desilusionado de internet son el ver como en España se copian alegremente consejos de otros países como pueda ser Estados Unidos o el Reino Unido. Total, si lo recomiendan por allí, tiene que ser cierto. A fin de cuentas, esos son los que más saben. Pues bien, muchas de esas recomendaciones a nosotros no nos han funcionado. Así que dentro de esta serie de mitos comenzaré a poner cosas que habría hecho de otra manera, por si a alguien le vale.

Mito 1: Trabajo full time

Consiste básicamente en decir que si no te dedicas al 100% en tu proyecto es que no tienes credibilidad. Es una frase muy habitual entre los inversores. Pues bien, esto de que necesitas estar trabajando full-time para emprender podéis tener claro que es una memez absoluta. Así que mi consejo para cualquiera que se esté planteando dejar su trabajo para emprender es simplemente que lo olvide, y si lo hace como mucho que lo haga capitalizando el paro primero, que por lo menos ingresará algo.

Vamos a ver, a los inversores como os comentaba les gusta decir mucho esto. ¿Por qué? Ni idea, creo que porque lo han leído por ahí. Podéis tener claro que el trabajar a tiempo parcial es de las últimas razones por las que os van a decir que no. Tu si vas a un inversor, en el supuesto caso de que quieras ir, con un tráfico de la ostia de la mano, o mucho mejor, si vas con varios clientes potentes de la mano, o mucho mejor aún si vas con unos buenos ingresos mensuales, entonces a este inversor le va a dar igual si trabajas full-time, si trabajas partial-time o si no trabajas en el proyecto (Nota: con le va dar igual me refiero a ese preciso instante). Los inversores no son tontos y bien saben distinguir un buen negocio que funciona y que tiene buena pinta. Y no hay más. ¿Que no llevas nada de eso? Bueno, entonces tienes otros problemas y ninguno de estos es el trabajar a tiempo parcial. Sin embargo el trabajar a tiempo parcial sin embargo es una de las mejores excusas para que te digan que tu proyecto no vale.

Un ejemplo de empresa que va cada vez más bien y trabajaron a tiempo parcial son mis amigos de Linking Paths, que han hecho un producto cojonudo que se llama StageHQ y a los que no se les pasó ni por la cabeza el dejar de currar para hacer su producto. Estos señores han estado haciendo proyectos para terceros para financiarse y poder permitirse hacer StageHQ. Y lo han conseguido y ahora tienen un producto que ha vendido tickets en todo el mundo por valor de más de un millón y medio de dólares. Ahí es nada. ?¿Otro ejemplo? Panoramio, a tiempo parcial hasta que daba dinero.

Yo sinceramente, os digo que al final nos arrepentimos de no haber hecho lo mismo que ellos, porque por muy buen producto que hagas, que el nuestro es el mejor en su campo, el hecho de pasar meses sin ingresar apenas dinero es muy jodido, y te va quemando. Si os podéis permitir el compaginar el emprender con hacer consultoría, trabajos como freelance o seguir en vuestro empleo, mi consejo es que lo hagáis, porque además esas actividades son siempre una buena oportunidad de hacer contactos que os pueden venir bien para el futuro.

Y simplemente no hagáis caso de gente que copia consejos de otros lados y se les llena la boca diciendo lo que funciona en otros mercados. Que sí, que pueden funcionar en otros países porque hay mucha más cultura de emprendedores, pero Spain is very different my friend. Así que nada, ahí os queda mi más sincero consejo, menos hacerle caso a guruseles monta-chiringuitos-de-Internet y utilizad vuestro tiempo en trabajar primero muy bien el análisis de mercado, en probar a lanzar el producto y ver como se acoge, en ver como reacciona el mercado a vuestra aplicación, en recoger las primeras ganancias, o en conseguir los primeros clientes, y sólo cuando veáis que la cosa va avanzando pensar en dedicaros full-time.

Esto por supuesto, es una opinión muy personal.

miércoles, noviembre 24, 2010

Libro sobre Procesado de Lenguaje Natural

miércoles, noviembre 24, 2010 por Martín


La semana pasada escribía sobre el aprendizaje máquina y como lo utilizaban en bit.ly. Uno de las piezas que habilitan el aprendizaje máquina es el capacitar a un sistema informático para comprender la información que está procesando.

Esta información normalmente viene en lenguaje humano, y necesita ser comprendida. Y bueno, ya sabéis que no es lo mismo dormir, que durmiendo que dormido. Que ejemplo más malo por favor. En fin que en Lingpipe han puesto a disposición de todo el mundo un libro que explica los fundamentos del procesado del lenguaje natural. Os paso el link por si a alguno le interesa.

martes, noviembre 23, 2010

Nuestra aplicación Facebook "Trabaja con Nosotros"

martes, noviembre 23, 2010 por Martín

La verdad es que no lo había comentado porque la mayor parte de los que visitáis este blog ya conocéis Jobsket, la Startup de la que soy fundador junto con Daniel Latorre y Jordi Monné, pero es que el éxito ha sido tal que lo voy a comentar. Además así, si alguno la conocéis os podéis pasar.

Facebook está de moda, no cabe duda. "Trabaja con Nosotros" es una aplicación que permite a las empresas publicar ofertas en Facebook. ¿Cómo? Muy fácil, simplemente se registran en nuestra herramienta de empresas Jobsket ATS, enlazan la página de Facebook y su cuenta en nuestro ATS y una vez que publiquen una oferta, ésta saldrá en su página de Facebook. Así de sencillo. ¿Cuál es la ventaja? Que los candidatos pueden inscribirse en sus ofertas directamente desde Facebook, sin salir de la red social, y aumentando su base de fans, manteniendo la cercanía, etc. etc. Podéis ver un ejemplo en la página de Facebook de EGA Consultores.

lunes, noviembre 22, 2010

Eventos virtuales de Alt.NET hispano

lunes, noviembre 22, 2010 por Martín


Un descubrimiento del Sábado Áxil que realizamos este pasado sábado han sido los VAN de Alt.NET hispano.

La verdad es que conocía la comunidad Alt.NET, pero confieso que nunca me había preocupado de seguirla. Al fin y al cabo, trata sobre .NET, y mi experiencia con .NET es absolutamente nula, casi la misma que con el resto de productos de desarrollo de Microsoft. Vamos, que tampoco me podía imaginar que dentro de esta comunidad pudiese haber cosas, que aún siendo muy interesantes, me pudiesen servir para mejorar profesionalmente.

domingo, noviembre 21, 2010

Facebook venderá créditos para micropagos en Game y Tesco

domingo, noviembre 21, 2010 por Martín


Wow, esto de los micropagos promete ser la bomba. Ayer me enteraba que Facebook comenzará a vender créditos para su servicio de micropagos en el Reino Unido en los supermercados de Tesco y en las tiendas de Game. Por ahora esta "moneda" se puede utilizar únicamente en 200 aplicaciones y juegos de Facebook pero se comenta que pronto se podría utilizar en aplicaciones externas vía Facebook Connect. ¿Tiembla PayPal?

sábado, noviembre 20, 2010

Finanzas para emprendedores

sábado, noviembre 20, 2010 por Martín


La semana pasada terminé de leer Finanzas para Emprendedores un libro de Antonio Manzanera Escribano, economista de carrera en el Banco de España y anteriormente consultor en McKinsey & Company, y que ahora es Director de Savior Venture Capital, firma de servicios de capital riesgo especializada en desarrollo de negocio y asesoramiento financiero a startups y emprendedores.

La verdad es que en un principio no me esperaba gran cosa del libro pero tengo que decir que tras leerlo sólo puedo decir que es una pena que no hubiese aparecido hace un par de años cuando empezábamos con Jobsket. En mi opinión este libro ahora mismo es una lectura fundamental para cualquier persona que se esté planteando la entrada de un inversor en su negocio, ya sea un business angel, una empresa de capital de riesgo o cualquier otra entidad. El libro te explica conceptos fundamentales como el valor pre-money, el valor post-money, las diferentes cláusulas de un contrato con un inversor, explica como afrontar una negociación basándose para ello en aspectos de la teoría de juegos. Y lo más importante, todo esto lo hace con ejemplos, sí, no sólo teoría sino también práctica, números, algo palpable con lo que te puedes sentar con lápiz y papel y hacer tus propias cuentas. En definitiva muy completo.

jueves, noviembre 18, 2010

Machine Learning en bit.ly

jueves, noviembre 18, 2010 por Martín

Bit.ly es un servicio acortador de URLs que se hizo popular gracias el éxito de Twitter. La limitación a 140 caracteres de los mensajes de esta aplicación hizo necesario este tipo de aplicaciones que pronto se hicieron populares. Se trata de una compañía que ha recibido sobre 12 millones de dólares en capital riesgo, ampliamente criticada por tratarse de un programa que puede hacerse en diez líneas de código siendo generosos.

Pero detrás de bit.ly hay mucho más. La mayoría de analistas hacen hincapié en la escalabilidad del sistema, y en el ser capaz de procesar de procesar nada más y nada menos que 10 millones de URLs por día, manejando 100 millones de eventos diarios. Inicialmente puede parecer trivial, pero si nos paramos a pensar, todos esos datos representan información, información que de algún modo les interesa a los usuarios (si dejamos de lado los usos malintencionados de bit.ly, por supuesto).

¿Qué se puede hacer con esta información? Ahí es donde entra el motivo del post de hoy. Una fantástica presentación que tienen en InfoQ en la que una simpática Hilary Mason, científica en bit.ly, explica los orígenes del aprendizaje máquina y como todo esto nos afecta en el día a día y en especial como se puede utilizar con la enorme cantidad de datos de los que bit.ly dispone ahora mismo.

No puedo más que recomendar a todos el ver y escuchar la presentación porque Hilary sabe convertir un tema tan árido como son las matemáticas y la inteligencia artifical en algo que cualquier persona puede comprender por muy alérgica a las matemáticas que pueda ser. La presentación dura una hora y recorre toda la historia de la inteligencia artificial, desde Eliza hasta nuestros días, con anécdotas divertidas e interesantes.

Uno de los datos más curiosos es el ver como el tema de Machine Learning es algo bastante de moda ahora mismo, y como el número de demandas de puestos de trabajo con estos conocimientos se ha incrementado considerablemente en los últimos años.

Una de las razones es que en los últimos años se han encontrado por fin aplicaciones prácticas a conceptos teóricos que hasta ahora no se les veía utilidad alguna, pero que ahora conforman parte de nuestro día a día. Es el caso por ejemplo de las recomendaciones de libros o productos. Recomendaciones basadas en la clasificación de datos de manera supervisada, o no supervisada. Amazon es el caso más ejemplar con su "Personas que han visto/comprado este producto han visto/comprado esto otro". Es fácil darse cuenta de que esta funcionalidad no sólo se trata de algo que puede ser muy útil al usuario sino que tiene un impacto directo en las ventas de la compañía. Los usuarios mirarán más, descubrirán nuevos productos y comprarán más.

Respecto a estas recomendaciones hay anécdotas interesantes, como el que Amazon recomendase accidentalmente vibradores a las personas que compraban cierto tipo de bolígrafos graciosos. Un ejemplo de como el aprendizaje no supervisado puede jugarnos malas pasadas. O como una compañía como Netflix puede ofrecer un premio de un millón de dólares a aquellos que mejoren su algoritmo de recomendación.

Y ahí es donde reside realmente el poder de bit.ly, no en lo que hace sino en la información que conoce. Bit.ly sabe exactamente dónde estamos pinchando 100 millones de personas al día. Y eso es información muy valiosa. Saben lo que nos gusta, los artículos que leemos, y las personas que comparten nuestros intereses. Con toda esa información es fácil que a uno se le ocurran ideas de como explotarla.

Por cierto que muchas de las cosas que se comentan en bit.ly las hacemos en Jobsket, no con enlaces sino que con currículums y ofertas de trabajo. Aunque claro, nosotros no tenemos ni tanta información, ni tanto dinero :-)

miércoles, noviembre 17, 2010

Always ship trunk

miércoles, noviembre 17, 2010 por Martín

Paul Hammond product manager de Flickr hizo una presentación en Velocity 2010 donde hablaba lo anticuados que están los sistemas de control de versiones cuando toca crear aplicaciones web.

Durante los últimos años parecía que SVN se había convertido en el rey de los sistemas de control de versiones, pero pronto aparecieron nuevos jugadores. Mercurial y Git son formas diferentes y más distribuidas de controlar el ciclo de desarrollo de software, pero según Paul, ninguno de todas estas alternativas está realmente pensada para el desarrollo web. Y lo cierto es que si lo pensamos fríamente y dejando a un lado las preferencias personales, no le falta razón.

La principal razón para crear una rama ha sido siempre la misma. Ese cliente que pide esa funcionalidad especial, que además la tenemos que hacer para ayer, y que vamos a dedicar a unas personas concretas a que la hagan mientras que el resto del equipo hace sigue con su desarrollo. Esas ramas pueden quedarse ahí o ir adquiriendo vida propia, e incluso evolucionar a productos nuevos, quien sabe. Pero el desarrollo en ramas, tal y como comenta Paul Hammond, parece estar más orientado a las aplicaciones tradicionales de servidor o de escritorio que a la web.

Paul argumenta que en la web no hay versiones, hay la versión. Esa es la versión que manejarán tus usuarios. Bueno, en realidad no es así, no es tan fácil. Tenemos entornos de producción, pre-producción, desarrollo, betas, QA, unos tendrán unas funcionalidades, otros tendrán otras funcionalidades. Incluso podemos querer probar ciertas funcionalidades en producción pero en modo oculto, o habilitarlas para un cierto subconjunto de usuarios, o tener la capacidad de habilitar o deshabilitar ciertas funcionalidades en tiempo real, o hacer tests A/B para comparar la efectividad de ciertos cambios, y un largo etcétera de posibilidades.

¿Existe algún sistema de control de versiones que te ayude a hacer esto? No, o al menos Paul no lo conoce (yo tampoco). La solución son añadir condiciones al código. Todo esto añade complejidad y puede ser bastante peligroso, pero por otra parte resulta muy efectivo. La recomendación general es guardar los switches en algún lugar centralizado donde se pueden habilitar o deshabilitar fácilmente.

A mi por ejemplo esta es una de las cosas que más me gusta de Grails, copiado de Rails y que te permite tener diferentes entornos de ejecución con diferentes configuraciones e incluso crearte tus propios entornos. Todo eso lo podemos combinar con algunos interruptores que nos permitan habilitar o deshabilitar funcionalidades en tiempo real y tendremos una única aplicación en la trunk que podremos controlar a nuestro antojo.

Sencillez operacional vs. complejidad en la configuración. ¿Qué preferís vosotros? ¿Tiene sentido el tener múltiples branches en el mundo web?

PS. Tenéis el enlace a la presentación arriba, pero hay más notas aquí.