Archivo | global RSS feed for this section

Las verdaderas inversiones de los Capitales de Riesgo son las personas

26 Dic

Son las 11 de la noche, y todo el mundo se ha ido ya de la oficina. Las seis personas que han creído en el proyecto, que se han venido a trabajar y que están muy motivados. Juan, nuestro emprendedor, sigue mirando el excel que hizo hace seis meses para demostrar que la página que ha empezado funciona y puede tener mucho futuro. Ese excel donde metemos las fórmulas matemáticas y ponemos factores de crecimiento del 50% anual, 10% mensual y por supuesto, un cobro de 5 euros por CPM. Que no quede.

Pero son las 11 de la noche, y Juan ahora cambia a Chrome. Ahora tiene delante de sus ojos la pagina web del BBVA.  Le quedan 43.124,12 euros en la cuenta. Todavía se acuerda de cuando entraron los 200.000 euros. De hecho, fueron 200.102,24 euros. Se acuerda perfectamente porque se dijo a sí mismo: «valemos 102 euros más».

Haciendo cálculos rápidos, Juan sabe que no le deben de quedar más de dos meses de caja. La oficina, que cuesta 1000 euros, amazon, que no cuesta casi nada, y luego tenemos los empleados, que cuestan 27.554 euros, con la seguridad social incluida. Ademas, se acuerda, que tiene que pagar a la persona que esta viniendo a limpiar, porque no le pagó la semana pasada. ¡Ah! y google Adwords, que todavía está contra su tarjeta personal.

Con las manos en la cabeza, vuelve a mirar el Excel, buscando el por qué en ese escenario, ahora debería de estar ganando al menos 5.000 euros al mes. Donde ya deberían de tener 500.000 usuarios pululando por la pagina y además deberían de estar negociando con una agencia de medios online para vender inventario. Pero nada de eso está pasando ahora mismo. El escenario que tiene Juan delante es mucho peor que lo que pone el excel. 

En primer lugar, todavía no han terminado la página principal, tienen todavía puesta la primera versión que lanzaron hace tres meses para demostrar que estaban ya en el mundo. Esa página que copiaron de una página similar de Estados Unidos que tenía un diseño majo.

En segundo lugar, solamente doscientas personas se han registrado en la página, y de esas doscientas, solamente diez vuelven diariamente a ver la página. Desde luego, este número es el que realmente no le cuadra a Juan. ¿Por qué no han entrado los usuarios que había estimado? ¿Por qué no ha crecido como el excel dice?. Así que como buen emprendedor, Juan cambia en el excel los números para reflejar la realidad, y pone los doscientos usuarios en el sexto mes, el vez de los 500.000 usuarios que tenía puesto antes.

¿Resultado? no van a llegar a cobrar los primeros 1.000 euros hasta dentro de otros seis meses. Pero quedan dos meses de caja. 

Lo primero que piensa Juan es en las caras de los inversores que habían puesto los 200.000 euros. Tiene un Capital Riesgo y luego tiene además dos personas que habían puesto de su propio dinero. Cada uno había puesto 25.000 euros, y el capital había puesto los otros 150.000 euros. Cuando se sentó con ellos la primera vez, se dio cuenta de que eran personas que le entendían, y que estaban contagiados con el mismo entusiasmo que tenía Juan. Pero claro, ahora las cosas son diferentes. En la última revisión, hace un mes, Juan les había prometido que la página nueva estaba ya lista, el programador le había prometido lo mismo el día anterior, y lo mismo el diseñador. 

Pero al volver de la reunión, el programador le enseña a Juan unas líneas de código que obviamente no entiende, y le dice que eso está mal hecho, y que el programador externo que había contratado antes dejó un buen desastre que ahora tiene que arreglar. Y eso obviamente es más tiempo del que había estimado.

Esto es lo que siente un emprendedor todos los días desde que empieza el emprendimiento. La angustia de saber que en menos de tres meses se queda sin capital, y de que tiene que cerrar la empresa. Y esto es un sentimiento que no se va nunca, ni si quiera cuando la empresa genera beneficios y ya tiene números positivos.

El emprendedor está todas las noches pensando en qué va a pasar mañana, y cómo va a pagar las nóminas de mañana. Sabiendo que no queda dinero en la cuenta para otro mes más. Tampoco duerme por la noche cuando el programador le ha dicho que tienen que retrasar la salida de la página otro día más. Si consigue dormir, el emprendedor sueña con que sabe programar y se mete a ayudar al programador, para sacar la página. Pero es un sueño, porque a lo más que llega el emprendedor, es a saber decir palabras como caché, la versión de PHP que está usando su equipo, o en qué nodo de Amazon tienen los servidores.

Frustraciones para los que no todos están preparados. Porque este día a día no lo aguanta todo el mundo. Es un día a día en donde el nivel de estrés está al 105% todos los días, y para lo que tienes que estar preparado.

El emprendedor tiene que estar preparado para sentarse un día delante de todas las personas a las que ha convencido para entrar y decirles:  Lo siento, pero no queda más dinero, tenemos que cerrar la semana que viene.

El emprendedor tiene que ser capaz de sentarse delante de las mismas personas que le han dejado el dinero, y decirles: Caballeros, las cosas no están yendo como prometí, me he equivocado.

Estas no son cualidades que todo el mundo tiene. Saber perder, saber tener en la cabeza que mañana las cosas no van a ir bien, y que probablemente por cada día de entusiasmo y alegría, vas a tener diez días de penuria y estrés. Que por cada empleado que contrates, vas a dormir una hora menos por la noche, y que por cada contrato que firmes, vas a tener un puñado de canas más en la cabeza.

Y la persona que tiene estas cualidades, es una persona que sabe que cada minuto de su capacidad de trabajo, se tiene que dedicar al emprendimiento. Se tiene que dedicar a apoyar y ayudar a las personas con las que trabaja. Se tiene que dedicar a servir a sus empleados. Se tiene que dedicar a preguntar todos los días a sus empleados qué es lo que necesitan, y qué les apetece de beber, para ir a por un café por ellos. Un emprendedor tiene que ser una persona dispuesta a ganar la mitad de sueldo que el programador que ha contratado. Que tiene que saber que su equity va a llegar más tarde que el equity de los empleados que está contratando.

Y ahora sigo con la historia:

Son las 12 de la noche ya, y Juan decide abrir su móvil y escribir un wassap al general partner del Capital Riesgo: ¨Pablo, tenemos que hablar… ¨

A los dos minutos, recibe la respuesta: ¨Estaba esperando este mensaje desde hace ya un mes, quieres que te llame?¨

Juan se da cuenta de que no es el único que sabe lo que pasa. Se sorprende, y le pregunta: ¨Qué es lo que estabas esperando?¨

Pablo, el general partner es una persona que ya ha invertido en otros cincuenta emprendedores (Si, emprendedores, y no emprendimiento…). Este no es el primer emprendedor que le llama a las doce de la noche, y desde luego Pablo sabe que cuando un emprendedor le escribe a las doce de la noche no es para decirle que se han registrado dos mil personas del golpe.

Pablo le escribe de vuelta y le dice: ¨Tranquilo Juan, no estás solo, las cosas van a ir bien. Por qué no vienes mañana a la oficina y vemos los números?¨

Y aquí viene la otra parte que un emprendedor tiene que aprender, no estás solo. El emprendedor no es la única persona que tiene todas las piedras en la mochila. No es la única persona que no duerme por la noche o que se queda mirando el balance de la cuenta bancaria todas las noches.

Los inversores que invierten en emprendedores saben que ese día va a llegar. De las diez inversiones que hacen, algunas veces, una de ellas sale disparada como un tiro, pero siete de esas se pierden. ¿Y las dos que quedan? Pues esas dos que quedan son inversiones que hacen en el emprendedor, es decir, en la persona que emprende. Porque saben que es una persona con mucho potencial, y que aunque el primer emprendimiento no ha funcionado, eso le sirve de lección para el siguiente emprendimiento. El inversor sabe que esas dos inversiones son inversiones a largo plazo, no inversiones a corto plazo.

Juan fue al fondo al día siguiente y se sentó con Pablo. Juntos estuvieron mirando los números y llegaron a la misma conclusión, y es que para que el proyecto salga adelante, tendrán que tener al menos otros 200.000 en caja para que el proyecto salga adelante. 200.000 euros que el fondo estaba ya reservando desde hace un mes, cuando Pablo miró la cuenta y el excel y se dio cuenta de que Juan no iba a conseguirlo. Pero para Pablo, lo más importante era saber si Juan iba a saber fracasar, y si iba a saber declarar su error. Porque Pablo no ha invertido en la página, sino en Juan.

Así que si quieres emprender, lo primero que tienes que aprender, es saber perder.

Si quieres capital, ya no vale con un Power Point

9 Abr

Después de muchas reuniones con Venture Capitals tanto de España como de Estados Unidos -pasando por Europa- nos hemos dado cuenta de que los inversores ya no buscan un buen plan o una presentación bonita. Los inversores están buscando proyectos viables que hayan demostrado en un prototipo que funcionan. Así nos pasó con Tuenti cuando empezamos. Lo que presentábamos a los inversores no era un power point lleno de gráficas y hojas excel ,sino que presentábamos un prototipo de Tuenti -que por aquel entonces se llamaba Who is Who– en el que se habían registrado los primeros usuarios de Tuenti que eran nuestros amigos y compañeros de la universidad. Los inversores, después de ver el producto y darse cuenta del potencial que tenía, decidieron entonces invertir. Si nos hubiéramos aproximado a ellos con una idea, probablemente las negociaciones de inversión habrían sido más duras y con menos ventajas para nosotros los fundadores.

Si quieres levantar capital para tu proyecto, necesitas hacer algo que se vea, se pueda tocar y se pueda usar. Es decir, necesitas vender una «experiencia» con tu idea. No puedes vender la idea solamente. El inversor busca invertir en algo que le haya cautivado antes a él. Por eso es importante tener un prototipo en marcha con el que vender. Si vas a ponerte a vender tu proyecto, primero siéntate y hazlo posible. No tienes por qué saber programar, tienes diferentes maneras de conseguir que alguien te pueda ayudar, desde buscando socios en tus propios contactos como ex compañeros de universidad como en páginas que te ayudan a crear prototipos web sin necesidad de saber programar.

Creo que la mejor manera de explicarlo es poner encima de la mesa los diferentes pasos por los que el resto de los emprendedores han ido. Es el esquema de inversión más común de emprendedores, que por cierto no atiende a todos los casos, sino a la mayoría de ellos. Así que si tu proyecto no ha encajado o no encaja con este modelo no significa que vayas mal, sino que eres diferente.

Amigos y Familiares (inicio)

Esta es la ronda más importante. Es la conocida como «Friends, Family and Fools». Como habéis leido, amigos, familiares y tontos. Esta es probablemente la ronda que más cuesta, puesto que es la ronda que pone a prueba tu capacidad para vender tu producto. Si no eres capaz de vender tu proyecto a tus propios amigos y familiares, entonces imagínate lo que va a ser vendérselo a gente que no conoces. Estos amigos y familiares deberían de ser capaces de entender tu idea, tu proyecto y a dónde quieres ir. Obviamente no puedes acercarte a ellos y decirles cosas como: «Esto es la revolución, te vas a forrar» o cosas como «Aunque no lo entiendas, esto es la bomba.». Tienes que ser capaz de explicárselo a ellos muy bien, y además de eso, conseguir que lo entiendan, que son dos cosas muy diferentes. Aprende a hablar a diferentes públicos, a diferentes tipos de personas y sobre todo, a diferentes inversores.

Esta ronda te va a ayudar a entender por qué la explicación que le das a tu madre no es la misma que le darías a tu hermano o a tu amigo. Las edades influyen. La experiencia que tengan en el campo de tu proyecto influye. Y más si es un proyecto relacionado con Internet, donde la edad es inversamente proporcional al expertise en el campo.

En esta serie deberías de ser capaz de levantar al menos 50.000 EUR o más. Suficientes para que te puedas dedicar junto con otras dos personas en full time al proyecto y hacer un buen prototipo que os ayudará para la siguiente ronda. Nosotros en Tuenti juntamos esta ronda junto con la de Business Angels y levantamos cerca de 500.000 EUR.

Private Investors o Business Angels (1 año)

Aquí es donde tu proyecto deja de ser un prototipo y pasa a ser un proyecto de verdad. La idea en esta ronda es mostrar un proyecto que funciona, que tiene un prototipo que se explica solo y que los inversores van a poder tocar y sentir. Este es el paso en el que pasas de trabajar en tu casa o garaje a una oficina alquilada. Este es el paso en el que vas a tener que hacer tus primeras entrevistas con posibles candidatos que te ayuden a poner el proyecto en tierra. Es decir, de pasar ese ASP con SQL server a MySQL con PHP.

Para que te hagas unos números, ten en cuenta que necesitarás al menos unos 10m2 por empleado -incluyendo cuartos de baño y salas comunes. También lo que tendrás que hacer ahora es ponerte en manos de un contable o de una empresa contable que te ayude a ordenar tus cuentas. Como ves, para esto necesitas ya tener tu empresa constituida. Aquí si que te tienes que mojar las manos con las administraciones e ir al registro de empresas, ir al registro de tu comunidad autónoma, etc. para poner tu S.L. en marcha. Y en efecto, S.L. es lo más recomendable a día de hoy. Te dará la flexibilidad para poder poner unos estatutos que os protejan a los creadores y a los empleados contra adversidades del mercado. A lo mejor encuentras una fórmula que se acerque a tu modelo mejor, pero cuando se trata de meter dinero, el inversor siempre quiere estructuras societarias que ya le sean familiares, como la S.L. o la S.A.

El perfil de inversor suele ser alguien que ya haya invertido antes en otros proyectos de manera personal. Si hacéis un poco de búsqueda, los podéis encontrar muy cerca, incluso locales a tu proyecto. No hace falta que te vayas a nombres muy importantes, dado que probablemente estén saturados de proyectos que mirar y no tendrás las mismas oportunidades que si te presentas a inversores de menos capacidad y más locales a tu zona.

Normalmente en esta ronda deberías de ser capaz de levantar al menos 400.000 EUR. Suficientes para tener a tí y a tu equipo trabajando un año, llegando a los 10 empleados y poniendo tu producto en el mercado con usuarios, y si ya empiezas a monetizar, mejor, porque te ayudará para tu primera Serie A.

Serie A (2 años)

El nombre de esta ronda viene dado por el tipo de acciones que estás otorgando de la empresa al inversor. En España no tiene tanto sentido ya que no existen varios tipos de acciones, sólo un tipo. En Estados Unidos sin embargo, puedes emitir varios tipos de acciones para clasificar los derechos de voto y de propiedad.

En esta ronda, deberías de tener ya un producto funcional, con varios millones de usuarios utilizándolo y con una estrategia de monetización en marcha. Depende de los ingresos que tengas, podrás pedir más o menos en esta ronda. Pero es importante que tengas ingresos, porque si no, la valoración de tu empresa entonces es más baja, y por lo tanto te vas a diluir más de lo que necesitas.

Aquí deberías de tener ya ingresos de algún tipo con el que puedas hacer un cálculo sobre cómo valorar tu empresa. Ten en cuenta que la valoración de una empresa depende de muchísimos factores, pero desde luego el más objetivo posible son los ingresos que tiene tu proyecto.

Normalmente el perfil del inversor en esta ronda es de un Venture Capital pequeño que está acostumbrado a invertir en etapas jóvenes en las empresas. En España existen ya algunos consolidados como Cabiedes, Nauta Capital o Bonsai Venture Capital. Estos inversores, además de incorporar tu proyecto a su portfolio probablemente os incorporen personas que crean convenientes para cubrir aquellas debilidades que tenéis en vuestro equipo. Tales como probablemente Business Development o Finanzas. Cosas que no se os pasaron por la cabeza dado que estabais al 100% dedicados al producto y a ponerlo en marcha.

Esta ronda es la ronda que te va a poner en el mapa, así que deberás levantar al menos 3 o 4 millones de Euros. Y la razón de esto es porque ahora deberías de tener del orden de 30 ó 40 empleados, una oficina de unos 400 metros cuadrados y unos gastos mensuales de al rededor de 150 a 200.000 EUR. Este dinero os va a ayudar a poner vuestro proyecto en los 150 empleados, equipo de ventas en condiciones, equipo de Marketing en condiciones y una buena estrategia en PR.

En Tuenti esta ronda supuso un levantamiento de cerca de 9 millones de Euros.

Siguientes rondas (+2 años)

A partir de aquí las rondas pueden seguir indefinidamente. Puedes llegar a levantar 100 millones como ha hecho Paypal, o simplemente hacer otra ronda porque necesites más capital para lanzar tu producto fuera de España.

Como podéis ver, la regla general no aplicó a Tuenti, donde nosotros tuvimos más de una ronda de private investors y business angels antes de nuestra primera ronda de Serie A. En definitiva, cada ronda se ajusta a las necesidades de cada producto. Ahora en Kuapay, hemos levantado una ronda de private investors y business angels de 1 millon después de una ronda de friends and family de otro millón de dólares. Las razones de las cantidades tan diferentes a lo normal reside en el modelo de negocio que tenemos, donde ya tenemos monetización desde el primer momento que sacamos el producto al mercado -nosotros ya tenemos facturación y tenemos flujo de caja, y llevamos sólo 14 meses de vida.

¿Cómo valoro mi empresa?

Las valoraciones de las empresas, sobre todo startups, dependen mucho de la oferta que haya. Últimamente las valoraciones se han estandarizado según la ronda. Normalmente en una ronda de Business Angels sueles dar un 10 o un 20 por ciento de tu empresa. Esto hace que ésta valga alrededor de los 4 millones de Euros. En una ronda de Serie A, estamos hablando ya de un 20% como mínimo que te van a pedir, por lo que las valoraciones rondan entre los 40 y los 100 millones de Euros. Lo que siempre he recomendado -y no tengo mucha experiencia, por lo que no os lo toméis al pie de la letra- es que tengas claras dos cosas antes de ofrecer una inversión a alguien:

1. Cuánto necesitas levantar. Ten claro un plan de negocio que explique muy bien en qué quieres gastar el dinero que vas a levantar. Sobre todo tenlo claro para tus propios planes en la empresa. Ya sean los primeros 50.000 como los 7 millones que levantes. Tienes que tener muy claro dónde los vas a poner.

2. Cuánto estás dispuesto a diluirte. Al dar acciones a un inversor, tu porcentaje se reduce, y en consecuencia, el del resto de los anteriores inversores. Habla con ellos y decide con ellos cuál es la mayor dilución a la que estáis dispuestos a llegar -siempre que estén dentro de los límites de anteriores casos. Las inversiones son más fáciles de explicar con la «jurisprudencia» anterior, al menos que tengas un caso excepcional que poder ponerle al inversor encima de la mesa.

Estas dos variables van a ayudarte a definir el marco de tu inversión. La horquilla con la que vas a poder jugar a la hora de presentar tu oportunidad a los inversores. Y siempre mantén tu oferta dentro de la horquilla. Si sales de ella, entonces no estás cumpliendo tus objetivos para financiar tu proyecto y tendrás que rehacer todo de nuevo.

Conclusión

La teoría está ahí. La podemos leer en muchos blogs y en muchos artículos. De personas que han llegado muy lejos y de otras que no tanto. Es cultura casi general para los emprendedores. Pero la práctica es lo que falta. Hay pocos proyectos en España que hayan pasado de la Serie A, y digo pocos comparándonos con otras economías de alrededor como Alemania o Inglaterra, ni si quiera Estados Unidos.

Toda startup es diferente, y por ello, sus números serán diferentes. Pero cuanto más próximos los hagas a este modelo, mejor te entenderán los inversores. Ellos tienen unos patrones muy definidos para invertir, y no suelen salirse de ellos a menos que tengan una buena razón, están invirtiendo dinero. Tanto en Tuenti como en Kuapay hemos seguido este modelo lo mejor posible. Pero las circunstancias de cada uno hace que las rondas se diferencien, por lo que si en tu proyecto tienes que hacer una ronda y no concuerda con este modelo, no te preocupes, porque si tu proyecto es interesante, entonces invertirán.

De cero a treinta

7 Mar

La verdad es que no muchos podemos decir que hemos visto crecer la empresa en la que trabajamos desde los cero empleados hasta los treinta empleados. De hecho, todavía menos podemos decir que lo hemos visto varias veces. Y la verdad es que algunos podemos decir que también hemos visto ver decrecer de treinta a cero. Y ver todos estos casos es lo que hace que aprendamos algunas cosas muy importantes sobre las personas que incorporamos a la empresa.

Un buen producto sólo puede salir de un buen equipo. Pero el mejor producto solamente sale del mejor equipo. Por eso es muy importante que prestes atención a todos y cada uno de los candidatos que vas a contratar, porque un sólo candidato con malas cualidades puede arruinar el proyecto por completo.

Lo primero que tienes que tener claro cuando empiezas un proyecto, ya seas el fundador o uno de los primeros es entrar, es que cuando eres una empresa del tamaño de una Startup, la responsabilidad se reparte entre todos de manera equivalente -y si no lo es, entonces no estás empezando bien tu empresa. Por lo que aquella persona que contrates al principio tienes que tener en cuenta que es una persona en la que vais a poner mucha responsabilidad y además en la parte más crítica del proyecto. Por eso es recomendable que cuando vayas a contratar a alguien, si es de las primeras personas, te lo pienses muy bien. No solamente tiene que encajar en el perfil profesional, que es tremendamente importante, sino en el perfil personal. Una persona que encaje muy bien en el perfil profesional no vale lo mismo que una que también lo haga en el perfil personal. Son personas que van a pasar muchas horas encerrados contigo, y por tanto, la convivencia con ellas va a ser mucho más intensa que con empleados normales.

Cuando hablo del perfil personal, hablo de todos los aspectos del perfil personal. Tanto su carácter, como su sociabilidad así como su vida personal. Si, vida personal, eso es lo que he escrito. Aunque parezca agresivo, la vida personal de una persona que contratas al principio de tu proyecto va a ser tu vida personal también. Debido a la cantidad de esfuerzo tanto profesional como personal que dedicáis, vuestras vidas personales van a tener hilos en común, donde sufrirás los problemas de tus compañeros de trabajo al igual que ellos sufrirán los tuyos. Y es que no es nada desacertado cuando la gente habla no solamente de Startup sino de ser como una familia.

La edad no debería de ser una baza para seleccionar a una persona. De hecho, la experiencia siempre es un buen punto a tener en cuenta cuando contratas a alguien en una etapa tan crucial del proyecto. Pero también tienes que tener en cuenta que la edad también es una distancia entre las personas. Las horas que pasas junto a tus compañeros de trabajo genera un entorno de bromas, actividades sociales e incluso de confianzas que a veces la edad puede interrumpir o incluso minar. Ten en cuenta que la persona que entre al principio debe estar 100% alineado con el resto de tu equipo tanto profesionalmente como personalmente.

En segundo lugar, hay que mirar muy bien la actitud que tiene la persona con respecto al proyecto. Un candidato que vea el puesto de trabajo como algo temporal, o un sueldo que va a obtener al final del mes es un candidato perdido. Aquellos que miren tu proyecto como uno más no merecen ni que los mires. Son personas que no vas a conseguir enamorarles de tu proyecto, y si lo consigues, es tiempo que has perdido en vez de haber contratado a otro candidato.

Es preferible que contrates a alguien que tenga menos aptitudes profesionales pero que tenga un entusiasmo feroz por tu proyecto. Esta persona va a dejarse la piel por aprender todo lo que le falta hasta llegar al nivel que necesitas de él, e incluso más. El amor por un proyecto es importantísimo en un candidato. Es lo que hace que esa persona venga a la oficina a las siete de la mañana y que se quede durante quince horas contigo programando o organizando diseños o limpiando bases de datos. Esa diferencia puede ser determinante, así que analiza muy bien el interés de tus candidatos por el proyecto.

Aquí es igual de importante cómo sepas explicar tu proyecto. Y cómo lo vendas. La energía que pongas, las ganas que dediques y la manera en la que lo expliques va a dar más o menos oportunidades al candidato a entender lo que estáis haciendo en tu Startup. Ten en cuenta que no eres una empresa famosa y no hay artículos de prensa ni revisiones de tu producto por ahí que puedan leer. Simplemente una descripción del trabajo y probablemente un par de conversaciones con quien le haya organizado la entrevista. Si no lo vendes bien, no vas a enamorar a los candidatos, y menos a tus empleados o compañeros de trabajo.

Finalmente, lo que voy a decirte es una frase que tengo grabada a fuego en mi cabeza: los veinte primeros empleados son los que determinan el ADN de una empresa.

Así que cuando vayas a contratar a alguien para tu proyecto, y sea una de las veinte primeras personas que contratas, mira con mucha atención los puntos que he puesto, porque pueden ser claves para que tu producto sea el mejor.

Ahora bien, igual de importante que contratar a las personas adecuadas es el despedir a las personas inadecuadas. Suena mal, pero una persona inadecuada puede llevarse por medio a toda una empresa, que son muchos más que un solo empleado. En un estado tan crítico como una Startup no hay espacio para error. Es decir, tienes que ser capaz de reaccionar lo más rápido posible para que el proyecto siga adelante y no se quede por el camino. No puede haber gris, sólo blanco o negro. No hay tiempo para analizar o para evaluar, solo hay tiempo para ejecutar. Y el despido es tan importante como la contratación. Y si los despidos son complicados, como pasa por ejemplo en España, lo más aconsejable es hacer un acuerdo con el empleado que vas a echar, de manera que los dos estéis contentos. No hay nada peor para una Startup que un ex empleado no contento, que tanto aquí en Estados Unidos como en España te pueden poner el proyecto en la calle.

En una Startup la mejor situación es cuando no se tiene que ir nadie, porque significa que la contratación que estás haciendo es la adecuada. Ese es el escenario al que todos debemos luchar, donde debemos ser muy diligentes con las personas que incorporamos a nuestro equipo y muy exigentes con las pruebas y entrevistas que hacemos para que no se incorpore alguien que a la postre no será compatible con la forma de trabajar del equipo.

Chrome OS revelado

30 Oct

Por fin he conseguido poner las manos encima de un ChromeOS. Finalmente, despues de descargarme el codigo, compilarlo, y crear una imagen, he conseguido iniciar una maquina virtual con KVM. Pantallas a continuacion!

Pantalla de entrada:

 

Llegada al «inicio»:

 

Opciones del sistema:

 

Listado de archivos (ejemplo de /home/chronos):

 

Si queremos acceder a la consola de comandos propia (crosh) hay que pulsar Ctrl + Alt + T:

 

Si escribimos help obtenemos los comandos necesarios, entre ellos «shell»:

 

que nos lleva a la consola de Linux (finalmente!):

 

Y podemos ver que hay detras de ChromeOS:

 

Proximamente publicare un post sobre como compilar ChromeOS e iniciar una imagen con KVM.

Portátil con 3G integrado

10 Jul

Tengo un Dell XPS M1210 con el que llevo dos años trabajando y jugando -tiene muy buena tarjeta gráfica y además mucha potencia. Pero hace sólo dos meses que descubrí que en Dell tienen un accesorio que es la Dell WAN 5500. Hay que tener en cuenta que solo el portátil XPS con la cámara integrada viene con la antena preparada para VWAN. El resto de los modelos no incluye la antena aunque sí el slot mini PCI para poder instalarla… una pena vamos.

Para poder encargar una, simplemente os váis a la página de Dell donde compráis el módulo desde Irlanda, y aunque os digan que sólo vale para Vodafone, vosotros no hacéis caso de ello ya que en realidad viene liberado pero con una tarjeta SIM de Vodafone que opcionalmente podmeos activar -que obviamente, al ser de Vodafone Irlanda, no vamos a activar-:

Cuando os llegue el paquete, que conmigo tardaron sólo 3 días, lo abrís y empezáis la instalación tal y como reza las instrucciones. Para que os hagáis una idea, detrás del portátil hay una tapa que se abre donde hay dos slots de mini PCI, uno ocupado por la tarjeta WLAN y el otro slot libre. En otros portátiles estos slots se encuentran debajo del teclado, como en los Latitude.

Finalmente una vez instalada la tarjeta y correctamente conectadal a antena, procedemos a encender el portátil con nuestro Linux. El que yo uso es GNU/Linux Debian Lenny con un kernel 2.6.24 con los módulos de HSDA activados y compilados. Por lo que este mini tutorial puede aplicarse a otros Linux que tengan en el kernel activado el soporte de las tarjetas de red WAN con GPRS, HSDA y UMTS.

Usando wvdial, y teneiendo en /etc/wvdial.conf lo siguiente:

[Dialer Defaults]
Phone = *99***1#
Username = MOVISTAR
Password = MOVISTAR
Dial Command = ATDT
Stupid Mode = 1

[Dialer reset]
Modem = /dev/ttyUSB0
Init1 = AT

[Dialer movistar]
Phone = *99***1#
Modem = /dev/ttyUSB0
Baud = 460800
Init2 = ATZ
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ISDN = 0
Modem Type = USB Modem
Init5 =AT+CGDCONT=1,"IP","movistar.es";

He conseguido tener mi portátil conectado a la red HSDA de movistar.

Algunos links interesante:

http://forums.whirlpool.net.au/forum-replies-archive.cfm/668054.html

Mi primer post desde el iphone

27 Ene

Este es el primer post que escribo desde el iphone. De hecho, este es el primer post que escribo desde hace meses. El trabajo y mi despreocupación han hecho que no haya publicado nada hasta hoy.

Esta aplicación para el iphone está fenomenal, porque aunque pueda llevarme el portátil con conexión 3g, con el móvil puedo enviar los artículos in situ en tiempo récord.

Voy a aprovechar más está funcionalidad…

Pero antes tengo que hacerme con con el Autocompletado del escritor de textos del teléfono.

Cómo iniciar una replicación Maestro – Esclavo en MySQL >5.0

3 Dic

La replicación en MySQL funciona de una manera muy sencilla. Existe un maestro, que es el encargado de propagar los cambios y los esclavos, que son los que reciben estos cambios a fin de tener una copia exacta de lo que tiene el maestro.

Para que esto suceda, los esclavos tienen una conexión abierta contínua con el maestro para recibir estos cambios. Con esta conexión se comprueba desde el esclavo la última posición escrita en el log binario del maestro -eso es, se replican por medio del log binario. Cuando sucede algún cambio en el log binario del maestro, se remiten estos cambios a los esclavos, que posteriormente ejecutan estos cambios en sus tabla.s

Para empezar una replicación maestro esclavo sencilla hay que tener como mínimo dos instancias del servidor MySQL, una que haga de maestro y otra que haga de esclavo.

En el maestro tienen que estar las siguientes líneas en el fichero de configuración [my.cnf]:

log-bin=mysql-bin
server-id = 1

Por otro lado, en el esclavo tendremos que tener las siguientes lineas:

server-id = 2

Una vez configurados los servidores, podemos arrancarlos -obviamente aún no van a replicar porque no les hemos indicado que empiecen a replicar.

Cuando estén arrancados, en el maestro creamos o instalamos las tablas y la base de datos que queremos replicar. Cuando estén creadas y hayamos insertado los datos necesarios dentro de las tablas entonces tendremos que hacer un volcado de la base de datos a un archivo de texto. La razón de esto es que vamos a instalar esta misma base de datos en el esclavo. Para ello lo podremos hacer así:

mysql> GRANT REPLICATION PRIVILEGES ON *.bbdd TO 'usuario_replicacion'@'192.168.0.3' IDENTIFIED BY 'pass_replicacion';
mysql> flush privileges;
mysql> LOCK ALL TABLES READ ONLY
mysql> exit

Ahora desde la línea de comandos sacamos un DUMP del maestro:

joax@maestro> mysqldump bbdd > bbdd_dump_20071202.sql

Una vez terminado el proceso, tenemos que recordar la situación del log binario en el master:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 98 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Con esto ya podemos desbloquear las tablas en el maestro:

mysql> UNLOCK ALL TABLES;

Y con ello, en el esclavo ahora ejecutamos lo siguiente:

joax@esclavo> mysql bbdd < bbdd_dump_20071202.sql

Y una vez que el esclavo tenga generada la base de datos, lo configuramos para que esté posicionado con respecto al maestro:

mysql> CHANGE MASTER TO MASTER_HOST = '192.168.0.2';
mysql> CHANGE MASTER TO MASTER_USER = 'usuario_replicacion';
mysql> CHANGE MASTER TO MASTER_PASSWORD = 'pass_replicacion';
mysql> CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.000005';
mysql> CHANGE MASTER TO MASTER_LOG_POS = 98;
mysql> start slave;

Ahora el esclavo comenzará la replicación con el maestro. Quedándose a 0 segundos de él una vez copiado todo el log binario que le resta de lo sucedido hasta la fecha. Para comprobar que realmente está replicando, tendremos que ejecutar el siguiente comando en la consola de MySQL:

mysql> show slave status \G

Eso muestra:

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.2
Master_User: usuario_replicacion
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000005
Read_Master_Log_Pos: 98
Relay_Log_File: esclavo-relay-bin.000001
Relay_Log_Pos: 98
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: bbdd
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 98
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

Lo importante es lo que sigue a Seconds_Behind_Master: porque es el valor que indica el retraso de este esclavo con respecto al maestro.

En definitiva y a modo de resumen:

1. Cambiar la configuración del maestro con las líneas:

server-id=1
log-bin=mysql-bin

2. Cambiar la configuración del esclavo:

server-id=2

3. Bloquear las tablas del maestro y hacer un dump:

mysql> LOCK ALL TABLES READ ONLY
mysql> SHOW MASTER STATUS
mysql> exit
joax@maestro> mysqldump bbdd > bbdd_dump_20071202.sql

4. Instalar la base de datos en el esclavo:

joax@esclavo> mysql bbdd < bbdd_dump_20071202.sql
mysql> CHANGE MASTER TO MASTER_HOST = '192.168.0.2';
mysql> CHANGE MASTER TO MASTER_USER = 'usuario_replicacion';
mysql> CHANGE MASTER TO MASTER_PASSWORD = 'pass_replicacion';
mysql> CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.000005';
mysql> CHANGE MASTER TO MASTER_LOG_POS = 98;
mysql> start slave;

En un cluster podremos incluir tantos esclavos como necesitemos. He llegado a ver clusteres de varias decenas de esclavos sobre el mismo maestro. Pero son puntos donde a lo mejor tienes que tomar una estrategia de particionado de la base de datos. Estrategia que veremos próximamente.

La escalabilidad, una asignatura pendiente

1 Dic

Desde hace varios meses, la escalabilidad está siendo mi única materia de estudio y aplicación. No paro de investigar, hacer y deshacer. Y digo deshacer porque una de las cosas más importantes que he aprendido de esta materia es que no se pueden leer blogs aleatoriamente y hacer lo que dicen.

Una vez estuve leyendo un blog de un americano que aseguraba que haciendo una configuración específica a MySQL se podría aumentar su eficencia en la concurrencia. Como no teníamos otra cosa que hacer, lo probamos. Claro, esto de probar las cosas está bien hasta que te pegas el castañazo. Más bien el trompazo. Porque cuando activamos esta nueva configuración, los esclavos de la base de datos empezaron a caer uno detrás de otro como moscas. Menos mal que sólo cambiamos esta configuración en unos cuantos por lo que el portal no sufrió consecuencias y seguía funcionando.

Pero aprendí desde ese momento que cuando alguien en internet habla de escalabilidad o de posibles ideas para solventar este problema tienes que tener claro o seguro que en realidad ha tenido experiencia en ese campo.

Otra anécdota que puedo contar es que en los inicios de tuenti, estábamos otro compañero y yo por la noche haciendo cambios varios sobre la estructura de datos. Hasta que nos topamos con la duda de si aplicar estos cambios a las tablas en el portal. Leyendo la documentación de MySQL 5.0, aseguraba que en un entorno maestro-esclavo hacer cambios en las tablas con ALTER no debiera afectar en absoluto al rendimiento del sistema puesto que el ALTER se realiza sobre una copia temporal de la tabla, por lo que las lecturas podrían seguir sucediendo en la misma tabla durante la operación. Por lo que tanto Kenny como yo decidimos que podríamos hacerlo sin problemas.

Ya podréis saber el resultado de esta acción por cómo estoy empezando esta frase. Si, casi desastre. El maestro comenzó a retener las escrituras sobre la tabla y de esta manera reteniendo las conexiones desde el PHP. Esto hizo que se sobrepasara el límite de conexiones que el servidor tenía previsto -y eso que lo aumentamos en mucho sabiendo que podría pasar… Esto formó una espiral de acontecimientos que nos obligó a cancelar la operación para que el portal no se cayera.

A lo largo de este tiempo, esta son las cosas que creo claves para tener una buena escalabilidad -que es imposible sin experiencia y conocimiento del sector donde te metes , por supuesto:

  • Las cosas tienen que ser muy simples: todo lo complicado no es escalable, y menos aquellas cosas que precisamente hacemos complicadas para que escalen. Puesto que la complejidad es el peor enemigo de la escalabilidad.
  • Investigación: A la hora de econtrarte con un problema de escalabilidad, probablemente, si no eres uno de los portales más grandes del mundo o con una cierta peculiaridad que no tiene nadie, alguien ha pasado ya por lo mismo que tú. Consulta los blogs, listas de desarrolladores y demás frecuentadas por las personas de otros sitios iguales al tuyo (pero más grandes).
  • Priorización: Es muy importante determinar qué cosas son las más importantes para centrarte en la escalabilidad de ellas. Perder demasiado el tiempo en algo que no es importante en tu portal podría mermar otra prioridad que sin embargo necesita ese tiempo.
  • Iteración constante en los cuellos de botella: Esta tiene su base en la Administración de Sistemas. Pero en realidad se puede aplicar a todo tipo de disciplina que necesita una escalabilidad. En producto nos econtramos contínuamente con cuellos de botella en el código que no pueden ser resueltos con más servidores…
  • Éxito como equipo: Tener en cuenta tus responsabilidades, asumirlas y ejecutarlas es vital para que otros miembros de tu equipo puedan hacer las suyas confiando que tu parte estará hecha. Esto hace que el equipo pueda afrontar los problemas de manera más efectiva.
  • Conocer tu plataforma: Tener una buena plataforma y conocerla son claves para poder escalarla. Si estás usando un framework que no conoces por dentro (ruby on rails) puedes encontrarte en una situación donde las propias librerías pueden no ser escalables.

Algunos de estos puntos vienen de leer este comentario en los blogs relacionados con Youtube.

Tuenti tiene eventos!

22 Nov

Hemos lanzado por fin los eventos en tuenti. Ahora se puede crear un evento e invitar a tus amigos para que asistan. De esa manera podrás quedar con ellos sin tener que estar llamándoles, mandándoles mensajes de teléfono…

Además, puedes añadir descripción, página web, teléfono e incluso comentarios al respecto. Hay tres listas diferentes de personas en un evento:

  • Personas que confirman asistencia
  • Personas que a lo mejor van
  • Personas que aún no han contestado

Gracias a este modelo de eventos, podremos estar al día todos de las reuniones con nuestros amigos, quedadas, partidos, fiestas, etc…

Por  si fuera poco, además hemos añadido la posibilidad de que aquellos que no conseguís invitación para entrar podáis dejarnos vuestro correo para que podamos enviarte cuando podamos una invitación.

Espero que os gusten todas estas cosas, el equipo está muy contento por estas cosas.

Mi primer post

17 Nov

Ya tenía un blog en su día que programé yo mismo sobre ASP que he decidido dejar de lado. En cambio, voy a empezar a escribir aquí.

En primer lugar me voy a presentar.

Me llamo Joaquín. Tengo 26 años y trabajo en el equipo de tuenti.com, un portal de internet que tiene como misión:

«tuenti.com es la herramienta que te ayuda a tener cerca a la gente que conoces»

Espero poder escribir más posts y que os sean interesantes. Los próximos posts que escriba serán sobre -y así adelanto la temática de este blog:

  • Replicación en alta disponibilidad de MySQL
  • Clústeres en alta disponibilidad de servidores web
  • Optimizaciones de PHP sobre MySQL y Memcache -algo también de APC.
  • Anécdotas divertidas dentro de la tecnología de tuenti.com

Algunos de los posts irán en inglés ya que es el idioma oficial que tenemos en el equipo de tuenti al ser mitad españoles y mitad no españoles -tuenti es 100% español, pero para tecnología y otros menesteres hemos tenido que contar con la inestimable ayuda de compañeros extranjeros.