12.29.2009

visión comercial del técnico

Cuando te metes en un negocio, por pequeño que sea, te das cuenta de lo importante que es promocionar el producto, saber como y donde vender, posicionarlo adecuadamente, conocer el target... todas esas cosas que fundamentalmente _no_ hacen los técnicos... ¿no?.

A menudo los técnicos somos gente más bien raruna, menos sociables normalmente, que la gente comercial. Ellos son mucho más apuestos, mejor vestidos, más sociables y mejor vistos, normal, son los que hacen ganar el dinero en el fondo o por lo menos son el eslabón final para conseguirlo. Por lo general manejan a la perfección términos técnicos, lo justo para poder explicar a un posible cliente.

Esa ha sido la visión de toda la vida, pero en mi opinión es que es un gran error. Un técnico debe tener una visión comercial mínima, debe saber quienes son los clientes, debe conocerlos, tiene que ir a ferias a ver que se cuece... es posible que no sea el más adecuado para explicarle a un cliente algo, pero debe tener claro a donde va a parar lo que hace, saber los argumentos de venta del comercial, etc, etc.

Estoy harto de escuchar lo de "estáis ahí metidos con vuestras pantallicas y vuestros cacharros", cuando estoy eligiendo una tecnología no estoy pensando en lo guay que es, estoy pensando en, cúanto tiempo va a pasar desde que se plantee un producto hasta que esté vendible, va a dar problemas a los clientes(más soporte técnico), va a ser usable por el cliente, el hardware que requerirá será caro (en ciertos sectores es fundamental), cuanto va a suponer hacer un cambio para un cliente, puedo dar la __calidad__ que se necesita, hay argumentos de venta para la gente comercial...

Si quieres tener un producto de mucha calidad, no solo debes tener a un buen equipo que sepa enseñar esa calidad, si no que debes tener el equipo técnico que sea capaz de ofrecerla. Apple, BMW, El Bulli son ejemplos claros de que es necesaria gente de mucha calidad técnica para tener algo bueno que enseñar y vender.

Así que si quieres/tienes un técnico de calidad, hazle salir, dale libertad para ver cosas, que tenga claro lo que tiene que hacer, que se airee, estar 8 horas delante de un ordenador, a pesar de tener internet, NO es una solución.

12.25.2009

Vende la usabilidad?

El otro día fui a comprar unas cadenas (en realidad de tela) para el coche, llegué al eroski y en la sección de coche había dos marcas de cadenas, juntas, el tamaño de los paquetes que contenían las cadenas eran el mismo, mismos precios prácticamente, solamente había una diferencia, en la etiqueta para buscar el tamaño adecuado para las ruedas de mi coche.

Juzgad vosotros mismos:



Adivinad cual compré.

12.24.2009

Resumen del año, 2009

Primero de todo ver si he cumplido los objetivos que me puse a principio del año: No he cumplido nada, ni he leído más, ni he viajado más ni he aprovechado más las oportunidades.

Ahora, he cumplido varios de mis objetivos del 2008, he mejorado sustancialmente mi inglés (mis 7 horas semanales y levantarme a las 6 y pico de la mañana me cuesta), he aprendido a decir que NO y he mejorado agroguía:).

Los eventos/proyectos más importantes de este año:

- He ganado el premio 3M que un idea de esas felices, agroguía AR y preparamos un hoax que se tragaron casi todas las televisiones a nivel nacional.
- Llegué a la final del art futura con cubyshot
- He mejorado las ventas online de agroguía.
- He publicado artículos en dos o tres revistas referentes a la agricultura. Aunque no lo considero demasiado importante, forma parte de la mierda de la universidad.
- He sido tutor de un proyecto fin de carrera.
- Me he cambiado de trabajo nuevamente (y de ciudad, claro)
- He cambiando, en parte, la forma de desarrollar de la empresa en la que estoy.
- He comenzado un nuevo proyecto empresarial con unos amigos.
- He hecho alguna demo que otra, algún mini-proyecto( cipy, hg-wiki)...


Lo que he aprendido este año:
- He aprendido a decir que NO. Es mucho mejor decir NO que decir que Sí o no decir nada.
- Lo importante de hacerse ver, de la publicidad, de tatuar en el cerebro de los demás algo sobre tí o sobre tu marca. Agroguía ya es una marca XD
- He aprendido donde NO quiero trabajar y con quien NO quiero trabajar.
- He aprendido a cocinar un poco.
- He aprendido algunas cosas sobre tecnología, django, git, hg, javascript, qt... etc, etc.

Y he aprendido muchas más cosas, de esas que aprendes pero que luego no puedes explicar. Creo que las llaman madurez y cuando eres capaz de explicarlas las llaman sabiduría.

12.12.2009

carta desde Pamplona

Ayer hizo 6 meses que estoy en Pamplona y toca echar la vista atrás para hacer análisis y sacar las primeras conclusiones.

Tengo que decir que tomar la decisión de moverte de tu ciudad natal/habitual es algo en lo que vas a jugarte mucho más de lo que crees. Dejar atrás un entorno que conoces a la perfección, tus amigos y familia para meterte en otro lugar desconocido, donde no sabes nada, no conoces a casi nadie es complicado. Ahora, creo que por lo menos una vez en la vida debes hacerlo, yo lo he hecho ya un par de veces y aunque confieso que lo he pasado *muy mal* en algunos momentos, merece la pena.

Lo resumiré en unos pocos puntos:

- Pamplona es una ciudad con mucha calidad de vida. Es pequeña, tiene más o menos todo lo necesario. Para salir de pinchos es ciertamente cara, quedáis avisados. Aquí las cosas son algo diferentes, no saben coger las rotondas (*), la haciendo no es común con el resto de España, la gente tiene acento maño y hay unos policías forales vestidos de rojo poniendo radares por todas partes.

- Vivo en un pequeño pueblo (no creo que llegue a los 50 habitantes), en una casa entre montículos donde puedes respirar aire del fresco. Quedáis invitados, tengo habitaciones de sobra.

- Estoy conociendo a gente muy interesante, de esas con las que te apetece hablar de algo más que del tiempo.

- En el tema laboral he encontrado algo así como una empresa en el paleolítico hablando desde el punto de vista del software, aunque en 6 meses hemos avanzado. Para mi empieza a convertirse en un reto, aunque me preocupa y mucho el prácticamente no haber aprendido nada nuevo de la empresa.


(*) Pido perdón a los Salmantinos, sí, hay alguien peor que vosotros cogiendo rotondas.

11.19.2009

Por qué QT debería ser más popular

Llevo trabajando 6 meses con Qt y me estoy preguntado por qué Qt no es mucho más popular de lo que es. Apenas se ve código, fuera de aplicaciones con interfaz gráfico y zulos de talibanes pro-software libre, hecho con Qt.

Voy a enumerar las cosas por las cuales creo que Qt es una librería de muy buena calidad:

- Completa: tiene api para la mayoría de cosas comunes, no solo hablo de interfaz gráfico, hablo también de manejo de ficheros, threads, procesos... vaya lo típico que puedes necesitar a diario

- Documentación: Buena documentación, todos los métodos comentados adecuadamente, ejemplos de uso, ejemplos, demos. Todo lo necesario para hacer una aplicación lo puedes encontrar en la documentación que instalas al instalar Qt, no tienes apenas que estar mendigando por foros.

Ya solo con estas dos merece la pena ser usada, pero además tiene:

- Sistema de build: autotools y familia son realmente penosas de usar. Qt tiene qmake que permite, de forma sencilla y clara crear los ficheros de build. Es posible que no sea tan completo como autotools, pero es que normalmente es lo que necesitas.

- Integración con Webkit: puedes perfectamente tener todo el interfaz gráfico en html/css/javascript y la parte de controlador y modelo en C++.

- Sistema de script: tiene un sistema de script similar a javascript que se integra a la perfección con la aplicación. Símple de usar, fácil de comunicar (gracias a las signals y slots) e integrado.

- Signals/Slots: esto es una extensión de Qt sobre C++, pero es especialmente interesante. Puedes enlazar señales (por ejemplo un click en un botón), con acciones en otro objecto. Es _extremadamente_ útil cuando tienes una aplicación multithread ya que puedes hacer paso de mensajes usando esta técnica.

- Internacionalización: sí amigos, olvidaos para siempre de "char*". Qt usa QString para todo, lo cual te "fuerza" a olvidarte del ascii y trabajar con unicode. Además tiene herramientas para traducir.

En mi opinión Qt debería ser algo mucho más usado por los programadores C++.

La única pega de Qt es que ahora es propiedad de Nokia y esta está empeñada en hacer que todo vaya en symbian (lo peor que he visto en muchos años), como se puede ver en el anuncio de la rc 4.6.. Espero que Nokia la mantenga por muchos años.

11.18.2009

agroguia, anunciado en TV

Hace cosa de una semana la universidad de Valladolid publicó una nota de prensa acerca del premio de la fundación 3M que ganamos hace meses. Podría comentar lo poco detallista que ha sido la universidad de valladolid conmigo al no darme ni las gracias por hacer un desarrollo para ellos, darles el prestigio de un premio nacional y además un 15% en metálico, pero no lo voy a hacer, no merece la pena.

El caso que con esa nota de prensa, algún periodista ha creado una hoax terrible sobre que teníamos unas gafas de realvidad virtual y muchas televisiones se han interesado por nosotros (TVE, antena3, RTCYL), periódicos y radios (mañana tengo una entrevista con una de colombia).

Hoy hemos salido en el iformativo de TVE de Castilla y León, os dejo el video (el primer que habla soy yo):

11.08.2009

Haz caso a tu instinto

Hay veces que tomas una decisión, de pequeño o gran tamaño, en las que algo en tu interior, no sé qué, te dice si la decisión es buena o es mala, si debes tomar el camino o no.

Creo que unos le llaman instinto, otros corazonada, otros sexto sentido... para más definiciones acerca de esto podeis echar un ojo al siguiente video.

Hace unas semanas un agricultor me llamaba interesado por un GPS para su tractor, le atendimos exactamente igual que a todo el mundo, pero después de 1 minuto de conversación, "algo" me decía que aquello no iba a ir bien. No hice caso, pensé se merecía el mismo trato que el resto a pesar de una apreciación (subjetiva, todo sea dicho), así que hablé con él, le enseñe el equipo y decidió comprarlo. Trató de negociar, pero era una negociación donde solo él ganaba, así que mucho no tenía que negociar. Ahí fue el momento en el que yo ya sabía que esto acabaría mal.

Llego el día de la entrega, le instalamos el equipo y entonces dice que no quiere el equipo por diversas razones a cual más estúpida. Le dije 4 cosas desde el cariño y el sentido común y me fui contento a casa. Contento porque he aprendido el "a mi esto no me vuelve a pasar" y contento por la sutileza con la que le mandé a tomar por culo :).

Conclusión: Haz caso a tu instinto

11.02.2009

agroguía, datos de un pequeño negocio

Nunca he hecho públicos datos de agroguía, pero esta vez voy a comentar un poco los datos de ventas, visitas de la web y otros datos que pueden resultar interesantes. No soy especialmente bueno analizando datos de estadísticas web, no tengo experiencia, así que los análisis son a lo bruto y posiblemente algún argumento sea erroneo.

Hace cosa de un par de meses, cara a afrontar la nueva temporada (para nosotros la temporada empieza en septiembre), decidí darle un cambio a la web de nuestro sistema de guiado GPS para la agricultura, eliminando wordpress como la página inicial, cambiándolo por una página de producto donde se viese claramente el producto, cosas que se pueden hacer con él, un formulario de compra, el precio (que nunca habíamos publicado), etc.

La razón de cambiarla ha sido fundamentalmente una: el feedback del usuario. Cuando llegan muchos correos preguntándote cosas que no tienen demasiado que ver con lo que haces significa que no estás explicando bien lo que la gente quiere saber. También en parte a muchos comentarios que gente que sabe de este tema mucho más que yo, gracias a todos ellos :).

Opté por un diseño a lo 37signals, un titular dejando bien claro para que vale y a continuación otro explicando qué le va a solucionar al agricultor (no sé marketing, pero me suena a algo fundamental que explicar). Luego la típica imagen del producto y el resto de página explicando diferentes utilidades del producto.

Uno de mis principales miedos era el de perder el posicionamiento que había conseguido, no tengo claro como funciona, así que cerré los ojos e hice lo que me salió del cuerpo.


Y ahora los datos, estadísticas de la web en septiembre, según google analytics:
- Visitas (no páginas vistas): 533
- Media de tiempo en la página: 5:51 minutos

Si de las visitas resto los que no han estado en la web ni 10 segundos (por ejemplo gente que llega desde google buscando algo que no va a encontrar), 180 en total, me quedan 353 visitas en la web durante todo el mes. Más del 80% vienen de buscadores, la mayoría google.

Si esto se lo cuentas a alguien se rie de ti, son 11 visitas efectivas al dí­a. Bien veamos datos de ventas.

En septiembre hemos vendido 10 licencias, a 1000euros (+iva) cada una, en total facturado 11600euros, esto es un 2.8% de las visitas han comprado. No sé si es demasiado, para un producto de 1000euros creo que está bien. Recordar que de ahí, hay que restar gastos (hardware, SS, etc) e impuestos (16% iva y 20% del beneficio, del valor añadido vaya).

Conclusiones que saco:
- 11000€/mes para un negocio es realmente poco. Imaginemos que tuviesemos que pagar oficina, gastos y demás. Si quitas impuestos se queda en una verdadera miseria. Ahora, si tenemos en cuenta que somos dos personas, que hemos dedicado, tirando por lo alto, una media hora al dia (15horas/persona-mes) entre preparar envíos, hablar con clientes, responder correos... las cuentas salen un poco mejor. No se trata de ganar mucho, se trata de ganar lo máximo con el mínimo trabajo.
- Al contrario que el año pasado, este año todos los clientes han sido por la web. El año pasado era un hecho aislado cuando alguien compraba por web.
- No hemos hecho nada de publicidad, nada, ni revistas, ni webs, absolutamente nada.
- Mucha gente llega a la web buscando en google agroguia, esto es, ya nos conocen y saben lo que vienen buscando.
- El posicionamiento ha mejorado, a pesar de la maraña de redirecciones que tengo en nginx.
- El tiempo que me deja libre el no tener que mantener agroguía, lo estoy usando para sacar otro producto de trazabilidad para la agricultura (esta vez ya sé algo de css, aunque de diseño mucho no he aprendido, la verdad), para aprovechar los clientes que ya tenemos y meternos en un vacío de aplicaciones decentes.

Como curiosidad, decir que casi tengo más tráfico en el server de ataques a paquetes web PHP que de gente interesada. :).

Estoy realmente contento, no por las ventas, si no porque estamos jústamente donde quería: vendemos a un nivel aceptable, trabajamos no deamsiado, tenemos clientes cada vez más preparados (se nota por la bajada de llamadas de soporte) y encima haciendo lo que nos da la gana.

10.31.2009

Python y miniframeworks web

He empezado a colaborar con web.ontuts, una blog sobre tutoriales de programación web, con un pequeño artículo sobre juno, un pequeño framework web hecho en python muy útil para pequeños servicios.

Aquí está:
mini-aplicaciones web con python y juno

10.25.2009

Lo que debería haber en todas las empresas de software de España

En todas y cada una de las empresas de software de España debería haber un cartel, bien grande, donde todos pudiesen leerlo, con la siguiente frase

"El verdadero progreso es el que pone la tecnología al alcance de todos"


De un tal henry ford.

vía voolive visto en microsiervos.

10.23.2009

integración continua en 100 líneas de código

Actualmente estoy trabajando con un embebido con linux, la potencia de la placa es bastante limitada y a la hora de compilar una aplicación mediana el sistema demasiado. Como tengo varias placas decidí montar un servidor de integración continua en uno de ellos usando compilación distribuída con distcc. La forma de trabajar es la siguiente:

- programo haciendo mis commits en local (usando git)
- cuando necesito probar mi código en el embebido hago "git push ci" de forma que ci es un remote parecido a ssh://user@ciserver/home/ci/project.
- Este repositorio tiene un post-recieve-hook que lanza una petición al servidor de integración continua, este compila (distribuido, con distcc) y si la compilación va bien lanza un "build_pass" que usando rsync hace deploy en la máquina de pruebas.

Parece muy complicado, pero realmente es poca la configuración que se necesita, casi todo va sobre ssh.

Sentía la necesidad imperiosa de tener un servidor de integración continua pequeño y manejable, así que decidí hacer uno :).

Con juno, un miniframework web que permite en dos patadas tener una pequeña aplicación web.

Si quereis probarlo o ver el código, el código está en github: cipy, servidor de integración continua.

Funciona bien, realmente no hace demasiado, pero basta. Solo soporte un proyecto, pero no hay problema para lanzar varias instancias, cada una en un puerto diferente, apuntando ngnix ( o tu servidor web favorito) con un "proxy pass" a cada una con un "location" diferente.

Si realmente quieres un servidor de integración continua potente puedes usar hudson.

Un shot:

9.28.2009

"Making of" de cubyshot

Este año he presentado un pequeño juego a artfutura, en realidad hemos presentado, ya que wonder es el creador de la música. Se trata de un juego mata-mata, hecho exclusivamente con cubos, procedural y en <96kb.

Antes de nada el video y los links, después la miga.

cubyshot from javisantana on Vimeo.



codigo fuente: cubyshot en github
exe: cubyshot (ojo, si tienes antivirus es posible que te de un toque por la auto-descompresión del ejecutable). Puedes compilarlo con el visual c++ express.

El juego lo empecé allá por enero y en unas tardes saqué un pequeño prototipo (video). Partí del framework de 4kb de iq (muy bueno aunque no sea para una 4kb) y sobre él empecé a trabajar basándome sobretodo en los juegos de kenta cho, aunque luego lo deje hasta retomarlo hace un par de semanas más o menos.

El código es bastante simple (a pesar del sprint de los últimos dos días antes de art futura está bastante limpio), está en C, aunque está "orientado a objectos" conlos típicos punteros a funciones. Hay partes que me gustaría destacar:

- Todo está sobre el objeto actor_t, cualquier cosa que se mueva "implementa" ese interfaz, de forma que con un pool de objetos y unas pocas funciones tienes todo moviendose. La separación entre controlador y vista es, creo yo, bastante clara :).

- La mayoría de las animaciones son fijas, esto es, son una función matemática. normalmente basada en sin/cos. Por ejemplo el movimiento de los enemigos finales es:

a->pos[0] = 10.0f*perlin2d(a->time*0.001f, a->time*0.001f)*sinf(a->time*0.4f);
a->pos[1] = 14.0f + 3.0f*sinf(a->time*0.4f);

Esto da bastante libertad, porque siempre hay una fórmula matemática que más o menos se ajusta a lo que quieres. El mago de esto es iñigo quilez, te aconsejo que leas el making of de elevated.

- Para la mayoría de elementos en la pantalla no hay posiciones prefijadas, símplemente se situan en posiciones aleatorias, lo único que varía es el seed, dicho de otra forma, es el ADN de cada objeto.

- Casi ningún movimiento es directo, casi todos los movimientos de objectos están filtrado paso bajo, por ejemplo, el cambio del color del escenario.

- He usado fixed timestep, de esa forma simplifica mucho la lógica, no tienes que preocuparte del dt.

- Los efectos de sonido son sintetizados (puedes leer un tutorial que escribí hace años de como está hecho) y la música (XM) se reproduce con minifmod. La música se lleva el 80% del peso del exe :).

- Los enemigos finales están calculados proceduralmente con un efecto mirror. De hecho si arrancas el juego y no comienzas, cada 20 segundos más o menos se genera una nave nueva. Entre una nave y otra solo varía la semilla de números aleatorios. Para generarlas me he basado en invader fractal.

- Curiosidades. El código de la ciudad procedural (video) está en el código pero no me ha dado tiempo a usarlo... y parte de las ñapas de inicialización de direct sound están tomadas del código fuente del quake1 :)

Partes de las que no estoy contento son la generación de los enemigos, apenas hay variabilidad, la dificultad, el poco uso que le di a la paleta (fundamental en juegos con gráficos de coder), no haber preparado un objeto timer, etc, etc.

Todo se andará.

9.21.2009

El software y sus productos

Hace dos días hablaba con el director comercial de una empresa y me comentaba su opinión acerca de la rentabilidad de las empresas de software y sobre los técnicos.

Me dijo algunas cosas que me llegaron muy dentro:

- Las empresas de software no saben "hacer producto". Y esto es una realidad como un templo, tan grande como que en todas las empresas que he estado ninguna ha ganado dinero vendiendo productos, salvo la primera, que no era de software :). Vendiendo servicios sí, pero productos nada. Él lo achacaba a la falta de visión que tiene el técnico del cliente y la cantidad de empresas de software que han nacido a la sobra de subvenciones, otro par de verdades como chalets con piscina y jardín.

- Es imposible medir el rendimiento de un programador. En su empresa nunca se había hecho software, sin embargo se habían tenido que poner manos a la obra para poder vender un servicio. Medir el rendimiento de un comercial es muy "simple", si hay ventas y cuantas. De un programador, cómo se mide el rendimiento? cómo sabes si un programador es bueno o es malo? cómo mides su trabajo? Me cuesta a mi responder a eso, no quiero ni pensar a una persona no técnica. Y es que de un programador que se centre en resolver un problema a otro que se vaya por las ramas hay días y días de desarrollo.

Aclara bastante las ideas escuchar el análisis de una persona que ve el desarrollo de software desde lejos, a pesar de que sea un comercial :P. Por lo menos este no era de los de "sí a todo", "MI equipo por 1000€ menos" o "con dos semanas MI equipo tiene más que suficiente".

9.08.2009

Las aplicaciones web de los bancos

Me pregunto que clase de engendros programarán las aplicaciones web que ofrecen los bancos a sus clientes. Es realmente difícil hacerlo tan mal, en todos y cada uno de los aspectos, tanto el técnico como de usabilidad, diseño... funcionan realmente mal sea cual sea el navegador, funciones sin sentido, confusión absoluta para hacer una mísera transferencia... os animo a que entreis en la web de vuestro banco preferido y useis un poco firebug. Algo me dice que están programadas por grandes consultoras con grandes comerciales con grandes amigos y muchos expertos en tecnología.

Pero la cosa no queda ahí, lo peor es que no te dan un acceso a los datos de forma simple. Esto es, no puedes de forma simple tener los datos de, por ejemplo, los movimientos realizados. Tan difícil es tener un api web simple que los retorne?

Con la cantidad de pasta que todos los ciudadanos hemos regalado a los bancos bien podría el gobierno haberles obligado a hacer las cosas bien, porque digo yo, si para hacer negocio se necesita mover dinero y no tenemos una forma automática y homogenea de tener esos datos disponibles, como quieren que las empresas españolas automaticen, informaticen o se "adapten a la nueva realidad de las TIC", como dicen los ignorantes tecnológicos que hablan por nosotros las sandeces que sabe dios que asesor de su partido les ha comentado que queda bien porque se lo ha oído a vaya usted a saber que gurú.

8.24.2009

railsrumble y la comunidad rails

Este fin de semana ha sido la railsrumble, un concurso donde hay que crear una aplicación web en 48 horas usando el framework web Ruby on rails.

No deja de ser una compo más, pero llama la atención la calidad, tanto en los diseños, como en la funcionalidad. 48 horas es muy poco tiempo para cualquier cosa, lo justo para centrarse en algo y hacer una cosa sencilla.

A pesar de eso lo que más valoro no es la calidad técnica de los trabajos, si no la calidad de la comunidad alrededor de rails. Solo hay que ver algunos detalles, por ejemplo la costumbre de compartir del código (no hay más que ver la cantidad de plugins para rails que hay en github), estar siempre tratando de mejorar, organizan conferencias de muchísima calidad (en españa tenemos conferencia rails, recomiendo ver las charlas) y un largo etcétera... incluso solo con ver el diseño de algunas web podrías decir si está el backend está hecho por gente de la comunidad RoR.

Decir que hay varias entradas españolas recogidas por @happywebcoder, varias de ellas están en la final:
- http://letsdecide.us/ código
- http://diversion.r09.railsrumble.com/ un especie de wiki al estilo github.
- http://triphq.net
- parlio. Reseña especial, porque además de haber hecho la aplicación en 48h, han intentado que tenga un uso final apuntando bien algo: acercar lo que hacen a los que votas a la gente de a pie. Me una pregunta: cómo se les tiene que haber quedado la cara a la gente que hace la web del parlamento vasco . El código en el github de probono (la asociación a la que han donado el código).

8.02.2009

folding en vim

Hasta ahora no había usado el folding de vim porque me parecía un verdadero peñazo el crear los folds para el código en C/C++, sin embargo existe un modo de hacerlo tan simple que no puedo dejar de usarlo:

:set foldmethod=syntax

de esta forma se colapsa todo. Para abrir y cerrar tan fácil como:

- zO con 'O' de "open". Es mayúscula para que se abran los folds internos, si usas zo se abre el fold de primer nivel.
- zc con 'c' de close.

Hay miles de tutoriales de folding, pero creo que he puesto la forma más simple que se puede.

7.29.2009

progit, libro de git libre

Hay dos o tres blogs que leo habitualmente de los cuales no me interesa para nada la tecnología, pero que están escritos por gente tan buena que merece la pena leerlos. Unos de ellos es el blog de github, y esta mañana me encuentro con que han liberado un libro sobre git.

El libro merece la pena para aprender git, aunque me da la impresión que es una amalgama de la estupenda guía git magic y el libro de la web oficial de git.

Dejando a un lado la parafernalia de la libertad, creative commons y otras hierbas, lo que hace el libro redondo es el último capítulo, git internals, donde explica, bien clarito, con 2 comandos básicos, como funcioan git por dentro. Asombra lo realmente simple que es.

Como me gusta saber como funcionan las cosas, he mirado el código fuente de git, pero no el actual, si no el primero publicado, git-0.01, donde se puede apreciar claramente todas las cosas que explica en el capítulo. Una pena que el capítulo no haga referencia a ese código.

Y ya que estaba metido en harina he buscado el primer código liberado de mercurial, mercurial-0.1, para ver si el sistema usado es el mismo. Me han llamado la atención dos cosas, la primera de ellas es que si ejecutas hg, el script principal, sin parámetros la aplicación te lanza la típica excepción... no comprueba los parámetros, la segunda es el propio "announce.txt". El código dista de ser ordenado y documentado, pero 4 años después ahí lo tienes..

Otra curiosidad, la primera release de git fue el 7 de abril, la primera de mercurial el 27 de mayo del mismo año (2005), 39kb de C frente a 6.2kb de python :).

7.06.2009

¿Sabe tu madre lo que haces en tu trabajo?

Seguro que os habeis encontrado en la situación: una persona sin conocimientos técnicos, o muy básicos, os hace una pregunta, pongamos "qué significa el número ese, 8080, que hay detrás de esta dirección de esta web". Puedes ponerte a explicarle la pila de protocolos desde la capa física hasta http, tú lo sabes, sabes porque los desarrolladores usan a veces otros puertos, te sabes la teoría, cuando ves eso rápidamente viene a tu cabeza cosas como iptables, proxy_pass, accept, netcat, tomcat...

O la pregunta que nunca sabré responder: "hijo, qué haces en tu trabajo?", esa pregunta bien intencionada de las madres, donde ves que están poniendo todo el interés, lo hacen porque te quieren y no las puedes fallar. Pero lo siento amigo, vas a fallar, o dicho de otra forma, en tu cabeza sonará un EPIC FAIL! (y a continuación lo twitearás y 4 ó 5 ciber-amigotes se descojonarán)

Y ahora vamos a algo más serio, porque que tu madre sepa o no que eres un fan de java es poco relevante, pero que trates de explicarle algo a alguien, incluso si es técnico, y no te entienda me parece cuanto menos grave. Yo lo reconozco, me explico mal, hablo demasiado rápido y encima meto términos muy técnicos que la persona que escucha no tiene porque saber. Lo peor es que me doy cuenta y que la mayoría de personas que he tenido a mi alrededor con mi perfil padecían del mismo problema.

De quién es el problema, de nuestros compañeros de trabajo que no se esfuerzan o nuestra por no saber esquivar los terminos técnicos o condensar la información de forma clara? Siempre he pensado que el peso de la primera era mayor, pero a medida que pasa el tiempo y veo diferentes perspectivas, sobretodo de personas técnicas de lo que podríamos decir avanzada edad, me doy cuenta que es posible que al final simplificar es lo mejor para explicarle las cosas a tu compañero y lo mejor, para ti mismo.

7.01.2009

Agroguia AR gana los premios 3M

Hace ya más de un año se me ocurrió, un sábado de mañana, que porque no mezclar un GPS con una webcam para mostrar información al agricultor sobre la imagen real en vez de solo representar en 2D los datos del GPS como venía haciendo en nuestro sistema de guiado agrícola.

De esa mañana surgió un prototipo hecho con python. Se lo enseñé a Jaime Gómez, mi tutor de proyecto y le gustó, entonces planteó la posibilidad de hacerlo un poco más en condiciones, así que hace 3 meses decidimos usar una webcam mejor, un GPS más rápido y grabar unos videos en un tractor tratando de verdad una tierra.

Así, junto a Pablo, un chaval al que llevo el proyecto fin de carrera a medias con Jaime, preparamos la documentación, grabamos el video y lo enviamos a los premios 3M. Ayer la organización nos dijo que lo hemos ganado en la categoría de industria. :)

Me llamaron de RNE para hacerme una entrevista (que no sé cuando emitirán, se me olvidó preguntar) y hay una reseña en el norte de castilla.

Son 6000€ (a pachas con hacienda, como no), pero lo más importante para mi es ver como una idea de una mañana puede llamar la atención y convertirse en algo real con "poco trabajo".

Dejo una imagen de la aplicación:

6.27.2009

y mañana ya es viernes

No hay otra cosa en lo que los españoles no seamos más optimistas que en los hitos del fin de semana. Siempre están ahí, siempre hay una excusa para ser positivo, todos aportan para llegar bien al maldito viernes a las 15:00 (en el mejor de los casos).

Y es que ODIO, pero mucho, cuando un compañero de trabajo dice: "bueno, mañana ya es viernes", o "miercoles, en dos días fin de semana" o para remate "ya se termina el lunes en 3 días y un poco viernes", pero vamos más allá, marcamos milestones más cercanos, dentro del día: "en dos horas nos vamos", "ya solo quedan 30 minutos", "me tomo un café, leo el periódico y ya son las 11". Me pregunto que pasaría si la gente se marcara milestones tan cercanos y tan claros en su trabajo, quizás scrum naciera así :).

Entonces me pregunto yo, si para tí un 80% de la semana es sufrimiento, por qué cojones no dejas el trabajo y te buscas algo que te llene más? He tenido la suerte de estar en empresas en la gente tenía interés por su trabajo pero más suerte es haber estado en las que no lo tenían, porque así uno valora aún más hacer lo que le gusta y poder decir, por mucho que te pongan de gilipollas para arriba, "me gusta mi trabajo, cada día".

Está claro que el tiempo libre es lo mejor, pero igual que cuesta coger el coche para irte a la ciudad de al lado a cenar en tu tiempo libre, también cuesta esfuerzo tratar que cada día sea interesante en tu trabajo.

Por favor, si lees esto, acuerdate antes de decir delante de un compañero, pero sobretodo, de ti mismo "ya falta menos para el viernes" que quizás ese no sea el camino y que posiblemente estés creando un "mal ambiente" que al final irá contra ti.

6.16.2009

Tecnología vs personas

A menudo me doy cuenta que algo es claramente mejor que otra cosa (tecnológicamente hablando), puede que en ciertos casos haya duda, pero hay casos en los que no hay lugar a duda, todos los argumentos se decantan a favor de cierta tecnología, pongo un ejemplo.

Imaginemos que tenemos código que vamos a mantener y tenemos que tomar una decisión: mantenerlo en carpetas y parches o tener un sistema como subversion/git/mercurial/etc. No hay duda (aunque linus tolvalds prefiere tener tar.gz antes que subversion), es obvio que tener un sistema de control de versiones es, de largo, una mejor solución.

Sin embargo qué pasa si el código está en una empresa con 50 programadores que nunca lo han usado y están acostumbrados a su sistema de tar.gz? La inercia de la gente es muy posible que pueda a todos los argumentos a favor de una tecnología mejor.

En The pargmatic programmer (capítulo 3, punto 17) ponen este caso como ejemplo y dicen (versión libre) "si estás en un lugar donde no usan control de versiones, no trates de hacer que los demás empiecen a usarlo, comienza usándolo y que los demás vean las bondades del sistema".

Igual que con el control de versiones hay miles de casos, lenguajes de programación, librerías, sistemas de gestión, correo electrónico... no basta con saber de tecnología hay que saber presentarla bien.

6.04.2009

webs de alquileres

Esta semana he estado buscando vivienda en Pamplona y creo que no ha podido ser más traumático. Mi primer epic fail fue pensar que con internet lo tenía todo hecho, así que buscamos solo cosas por internet y después de una semana puedo asegurar que a las webs de alquiler les queda muchísimo por andar.

Aposté por los sitios web porque pensé que me podían dar mucha información (fotos, videos), comentarios de propietarios e inquilinos, situación exacta de la vivienda, casas parecidas, comparativas de precios por sector, etc, etc, pero cual ha sido mi sorpresa y todo han sido fallos, errores y problemas, enumero:
- primera cagada: las webs de alquileres están copadas por inmobiliarias. A ver, se supone que se trata de evitar un intermediario y lo que hacen es dejar meter por medio a sus competidores.
- Dejar poner viviendas con poca información, sin fotos, etc.
- No permitir interacción entre usuario/propietario de forma directa. Algunas tienen sitios de contacto, pero no es nada directo, mucho más lógico un pequeño hilo donde la gente les pregunte.
- No dar información de cuando se dio de alta el anuncio, última actulización, evolución de precio y comparativa con otros de su sector.
- No tener un sistema de puntos para valorar al inquilino y al propietario, de esta forma sería posible sabrer si el propietario es un payaso o el inquilino un jeta. Este punto es bastante delicado, pero si funciona en ebay...

La que más se acerca es idealista pero tiene, en comparación con otros sitios, menos viviendas. Me encanta la herramienta que tienen en sus "labs" para poder ver sobre el mapa los inmuebles. Se nota que los creadores de idealista son "familiares" de 11870.

En resumen, si una inmobiliaria cobra la mitad de una mensualidad por encontrarte casa, creo que si al usuario se le pone un precio lógico para usar la aplicación web. Por cierto, he dicho que estoy hasta las narices de servicios gratuítos? prefiero pagar y tener un buen servicio a tener un servicio mediocre.

5.28.2009

cambio de trabajo

Me cambio de nuevo de empresa, mañana será mi último día en algor, la subcontrata de telefónica I+D donde he estado trabajando. 6 meses (y 1 día) es el tiempo que he estado aquí, realmente poco (aunque solo un pelo por debajo de mi media en una empresa).

Las razones de mi marcha son fundamentalmente 2:
- Yo no estoy hecho para estas empresas donde la productividad no es importante, donde no se aprecia al empleado y se trabaja con personas como carneros. Hay gente que le gusta esto, que aguanta o que no tiene otra salida, no es mi caso.
- Telefónica I+D, además de querer que me cambiase de empresa de forma unilateral, no creo que tuviese en mente mantenerme demasiado tiempo más en su plantilla de "personal ajeno". La cosa está muy negra, la forma de trabajar de estas empresas propicia que cuando se necesita aportar valor todo se desplome y telefónica I+D es la reina del lugar.

En general no me he adaptado bien a la forma de trabajar, no comprendo muchas de las cosas que se hacen, ni la gente me entiende a mi, tampoco comprendo como la subcontratación y dispersión de los integrantes de un proyecto es algo común.

Bueno, sea como fuere, yo me marcho de aquí con un regustillo agridulce. Por una parte ya conozco como funcionan estas empresas, he conocido a gente muy agradable, pero me doy cuenta que el futuro de parque tecnológico de boecillo no es muy largo tal como está ahora, ha llegado el momento de las empresas que aportan valor y son competitivas, y esas no están en boecillo (*).

Mi siguiente destino es Pamplona, me voy a una empresa que vende lo que hace, que gana dinero con ello y que compite. Espero aprender mucho y poder aportar lo que no he podido aportar aquí (seguramente la única espina que me queda clavada). Por lo menos me voy con el consuelo que ahora @lalangosta sabe que es trac, @Chiralilla conoce mercurial y @djgago sabe que los buenos sitios webs se hacen con python :)


(*) Seguramente habrá empresas que funcionen bien en boecillo, disculpas por adelantado, no he llegado a conocer ninguna.

5.25.2009

Nuevo microblog: retales de código

Me fascina ver como hay gente que es capaz de sacar el máximo partido a unas cuantas líneas de código. Por eso he creado un microblog alojado en tumblr que me parece un servicio la mar de adecuando para estas cosas sobre pequeños trozos de código que hacen grandes cosas. Además los creadores tienen pinta de ser gente guay (usan mac, monitores gordotes, oficinas supermolonguis) :p. Por cierto, que interesante es ver como son las oficinas y como trabajan otros desarrolladores, pero eso es para otro post.

Otros microblogs que sigo, relativos a programación son, lines of code de LinkingPaths y commandliners mantenido, entre otros, por @rafacas.

Bueno, aquí os lo dejo: small pieces of code

5.24.2009

Manual práctico para coger rotondas

Creo firmemente que la gente no sabe usar las rotondas adecuadamente y para ello voy a dar una serie de consejos, que nadie leerá, pero que quizás alguien encuentre en google y evite algún que otro accidente.

Primera y única norma: Una rotonda es exactamente lo mismo que una carretera, pero en curva

Esto es:
- Si estás en el carril interior y quieres coger una salida tienes primero que pasar al exterior y luego salir. Imaginemos que vamos por una autovía en el carril izquierdo, a nadie se le ocurriría salir desde ahí a la salida de golpe y obviamente el que circula por la derecha no se tiene ni que salir obligatoriamente, ni cederte el paso.
- Nadie te obliga a circular por ningún carril en concreto, sea cual sea la salida que vas a tomar
- Para permanecer en la rotonda no hay que dar ningún intermitente siempre que no hagas cambios de carril, de la misma forma que si mantienes el carril en la autovía no tienes que dar el intermitente.
- Si vas por el carril interior, alguien entra en la rotonda al carril exterior y le das, la culpa es tuya de la misma forma que si vas por la autovía por el carril izquierdo y le endiñas al que está en el carril derecho porque haces un cambio inadecuado de carril.

Y ahora unas normas de civismo:
- Si puedes facilitar la incorporación o salida de alguien, hazlo
- Si estás por el carril interior, necesitas salir y no puedes... da una vuelta más y no prepares la pirula, van a ser 10 segundos más
- Es posible que si vas a salir por la tercera o incluso segunda salida puedas ocupar el carril interior para usar los carriles y maximizar el tráfico de la rotonda.

Y por último normas para gente que viva en Salamanca (o en pueblos en los que no sepan conducir):
- Usa SIEMPRE el carril de dentro, los paquetes nunca lo usan y depende casi exclusivamente de ti el que te des la ostia
- Si dan el intermitente a la izquierda, tranquilo, en el 99% de los casos no se trata de un cambio de carril, quieren indicar que permanecen en la rotonda.
- Si sales al carril exterior y viene un paquete por el interior, sin intermitente indicando que se cambia al exterior, NO SALGAS, porque el paquete te pitará porque él precisamente quería salir por la siguiente.
- Si ves a un seat león, coche con letras chinas, lunas tintadas (alias follo en el coche porque no tengo casa), llantas brillantes, coches de color naranja o amarillo, con prominentes alerones o con varios tubos de escape en una rotonda, no te acerques, porque seguramente no sea capaz de dar la rotonda y accionar el intermitente a la vez.
- Si usas el carril izquierdo para adelantar, te pitarán porque no entienden que si respetas los límites de velocidad estás en tu derecho de quitarte a un paquete de encima.

** Este post está dedicado especialmente a la gente de Salamanca

5.22.2009

hg-wiki

Hace un tiempo he empezado a usar mercurial para mis proyectos personales. Mercurial es un sistema de control de versiones, al igual que subversion, pero distribuído, esto es, no necesitamos un servidor central donde subir nuestro código. Esto tiene muchas ventajas, no me voy a poner a enumerarlas, para ello podeis ir a la respectiva página en la wikipedia.

No hace mucho mercurial se ha empezado a usar en el desarrollo de python y google code ha dado soporte para este lenguaje, lo cual me dice que pronto empezaremos a ver más y más proyectos usándolo. Veremos si hay guerra git-mercurial (git es otro sistema de control de versiones usado en el desarrollo del kernel de linux, entre otros), viven en paz o alguno de ellos muere. Git ha tomado mucha fuerza, sobretodo por el empuje en el desarrollo web y gracias a webs como gihub, pero eso es tema para otro post.

Es muy habitual que junto al código de tu proyecto tengas otras cosas igualmente importantes como scripts de compilación, deploys, documentación, notas, etc, que normalmente están también bajo control de versiones. Además, se suele tener un sistema de tracking de proyectos acompañado (o integrado) un wiki -que siempre termina manga por hombro-.

Pensé que estaría bien tener un wiki integrado en el repositorio, al igual que con el comando hgserve tienes un servidor web integrado que te permite ver la información de forma mucho más gráfica del repositorio, por qué no un wiki?. Haciendo una búsqueda no he encontrado nada para mercurial, sí para git.

Como hace pocos días me encontré juno, un mini-framework web muy coqueto y me puse manos a la obra para probarlo, así que he creado hg-wiki, una herramienta que permite tener un wiki integrado en tu repositorio mercurial. Es un wiki muy simple, pero tiene lo justo para tener la información ordenada y vistosa.

El proyecto está alojado en bitbucket, un servicio de alojamiento de proyectos mercurial. Si quieres echarlo un ojo y probarlo: hg-wiki

Un ejemplo de como queda la cosa, primer el texto, después la imagen del resultado:

= hg-wiki =
== introducción ==
//hg-wiki// es una pequeña aplicación web que implementa un wiki especialmente creado para sistemas distribuídos. Todas las páginas son almacenadas usando mercurial, de forma que se puede aprovechar todas las ventajas que aporta este sistema:
* permite trabajar //offline//
* se pueden mezclar, tagear las páginas de la wiki

== instalación ==
La instalación es simple, primero hay que instalar las siguientes dependencias:
* [[http://www.mercurial.org/|mercurial]]
* [[http://www.python.org/|python]]
* setup-tools, necesario para poder usar easy_install, la herramienta que permite instalar librerías de forma simple, igual que apt-get.

Lo siguiente es instalar las dependencias python:
* [[http://github.com/breily/juno/|juno]], un pequeño framework web, merece la pena echarle un vistazo
* creoleparser, permite convertir de wiki a html
Para instalar cualquiera de estos basta con ejecutar

{{{
easy_install juno
}}}

== funcionamiento ==

Si quieres empezar rápido ejecuta
{{{
python hg-wiki.py mywiki
}}}

Esto creará una carpeta llamada mywiki que no será otra cosa que un repositorio mercurial, por tanto se podrán ejecutar sobre él todos los comandos mercurial.

== créditos ==

autor: javi santana http://javisantana.com

gracias a los creadores de creoleparser, juno y github, de donde he ripeado miserablemente el css :)

El resultado:




(si encontrais familiar el estilo de la web, no es casualidad, el css lo he tomado del wiki de github, mis conocimientos web no llegan a tanto)

5.19.2009

La sostenibilidad y otras cosas

No, no voy a ponerme a escribir que tenemos que cuidar el medio ambiente y hacer que nuestro ciclo sea sostenible, eso ya lo sabemos gracias a los anuncios de vehículos, material informático, alimentos, etc. No digo que no sea importante, pero hoy voy a hablar a nivel empresarial.

El otro día me comentaba una persona, en la típica conversación de bar, donde todo es sencillo, que era un pelín tonto, que debería estar moviendo nuestro pequeño negocio por todos lados, creciendo todo lo que pudiese y vendiendo lo que no está escrito. Era una persona que se dedicaba a la venta, así que es lógico que me tratara de dar unos buenos consejos.

Sin embargo, en estos momentos en los que me recomiendan crecer y moverme pienso en uno de mis objetivos, la sostenibilidad. Sería fácil aprovechar el "boom" y tratar de vender, quizás contratar gente, tratar de buscar inversión privada y crecer como la espuma, pero no sería sostenible y habría que empezar a despedir personas, tal y como están haciendo todas las empresas que no lo pensaron durante las vacas gordas. Creo que lo explican muy muy bien la gente de LinkingPaths en esta entrevista. Merece escuchar la entrevista completa, la primera parte sobre su filosofía y la segunda un poco más técnica (java vs ruby sin mojarse :P, git y sus proyectos).

Por otro lado, también le comentaba, que a mi no me interesaba ahora meterme en fregaos que no me gustan, yo estoy feliz con mi software, desarrollando cosas que tienen utilidad y haciendo lo que me da la real gana en el tiempo que me sobra (o que robo). La fábula del pescador y el empresario lo explican muy bien. Mi felicidad en este momento es hacer lo que quiera dentro de unos límites y no quiero la felicidad para dentro de unos años. Creo que no soy el único: de consultor a director de TI, Ángel Medinilla (punto 2) son dos buenos ejemplos.

Ya que estamos puestos, me marcho a trabajar a Pamplona el mes que viene :)

5.07.2009

Como plancha un programador

Una persona normal, que no es del gremio metalúrgico-programador, para el noble arte del planchado de la ropa no piensa más que en coger la plancha, la tabla de planchar, la ropa y liarse a planchar y doblar.

Hoy he dicho a mi novia que planchaba yo en un intento de que no parezca que ella lo hace todo y hacerme creer por un instante que yo también participo en las labores domésticas (lo más lejos de la realidad). No tengo demasiada experiencia, así que me he planteado el problema como tantos otros:

Primer paso, preparación de herramientas y documentación

- preparación de tabla, la he tenido que nivelar para que no se moviese, es importante tener las herramientas a punto.
- enchufar plancha y comprobar los diferentes controles (temperatura y demás). He delegado (para que luego digan que los programadores no delegamos) en mi novia la tarea de llenarla con agua.
- He mirado en internet como doblar una camiseta de forma rápida para ahorrar tiempo. He encontrado como doblar camisetas de forma rápida con el estilo japonés.

Segundo paso, organizar el trabajo
- He analizado primero los riegos y he escogido lo más bloqueantes por orden de importancia: quemar una prenda y cansarme de planchar. Es fundamental no quemar una prenda, pero también lo es que me canse y deje las cosas sin planchar.
- Ordenar por prioridad las prendas que voy a planchar: primero he puesto una camiseta blanca sin mucho valor, por si quemo algo que no se pierda mucho. Después he ordenado la ropa dos criterios: el de "importancia que esté planchado" y por "interés necesario para plancharlo (aka dificultad)", por tanto lo primero camisas, segundo polos, tercero pantalones y después camisetas blancas (a excepción de la prueba con la primera).
- Planchar, pero marcando una deadline de tiempo de forma que cada prenda quedara lo mejor posible dentro de ese tiempo.
- Tiempo de I+D: Ya que tengo varias camisetas iguales he intentado alinearlas y plancharlas a la vez. Fracaso total, pero de eso se trata el I+D ¿no?

Último paso, preparación para producción
- Doblado de ropa, las camisas directamente a perchas y luego he apilado la ropa poniendo encima lo que más me interesa que se mantenga sin arrugas.
- Armario, esperar que la plancha se enfrie y recoger instrumental.

Es triste, pero así es como he pensado cada uno de los pasos para planchar.

4.28.2009

Opinión HTC Touch 3G

Hace un mes o así que tengo la HTC touch 3G. La compré con el objetivo de portar agroguía a HTC ya que he visto que muchas personas están interesadas en tener un sistema de guiado gps en su Smartphone.

El móvil es más pequeño de lo que pensaba, pero sigue siendo un buen tochardo para llevar en el bolso, lo cual es un punto muy negativo, casi bloqueante dependiendo de gustos. Por suerte es "fino" y se lleva dentro del pantalón fácil. Es lento como el solo, no llega al nivel de un Nokia N80, pero lo es. Es poco usable a la hora de hacer fotos y para la mayoría de las cosas, la pantalla es bastante pequeña para navegar y el navegador opera que trae es un verdadero truñazo, el GPS es malísimo... sin embargo tiene cosas que son una gozada.

Tiene una gestión de las llamadas buenísima, almacena TODAS las llamadas que has recibido, fechas, tiempos, contactos, puedes guardar notas sobre los contactos, sobre las llamadas, etc. Esto resulta especialmente útil cuando tienes muchos contactos, sobretodo de clientes. Ahora tengo un pequeño CRM dentro del móvil, donde anoto que he hablado con cada cliente, si les he prometido el oro y el moro, si he negociado un precio, si se ha quejado y lo más importante, sé cuando me ha llamado y le he llamado. Esto además se eleva a la n-esima si usas el teléfono como algo asíncrono, siempre tengo el teléfono en silencio y miro las llamadas cuando me apetece. Además la batería dura mucho si solo lo usas como teléfono y la conexión para usarlo como módem 3G es bastante rápida (te da como opción cuando conectas el USB).

En resumen, si estás pensando en comprartelo y estás interesado en tener los contactos bien ordenados, cómpralo, de otra forma tirarás tu dinero.

4.27.2009

Filtro paso bajo con python

Es muy común tener un señal con mucho ruido, si es de un GPS más aún y normalmente interesa que los movimientos sean suaves. Bien sabido es que con un filtro paso bajo podemos atenuar el ruido y hacer que todo sea suave y maravilloso.

Si además no tenemos que filtrar al vuelo, esto es, tenemos ya toda la señal bien guardadita en un array, es posible usar el truco de teleco viejo, utilizar la fft. ¿Cómo? pues símplemente haciendo la transformada discreta de la señal, quitando los armónicos más altos y haciendo la transformada inversa.

Aquí el código, todo gracias a numpy :)

from numpy import fft

def low_pass_filter(x, samples = 20):
  """ fft based brute force low pass filter """
   a = fft.rfft(x)
   tot = len(a)
   for x in xrange(tot-samples):
   a[samples + x] = 0.0
   return fft.irfft(a)


El código seguro que es mejorable, numpy tiene métodos para trabajar con arrays de forma eficiente, etc, pero funciona a las mil maravillas y permite un control bastante lógico, cuantos más samples de la fft no sean 0, mayor será la variación de la señal. Para que luego digan que lo que se aprende en la carrera no sirve de nada...

4.14.2009

flojo, flojo, flojo

No he podido resistirme, lo pensaba tuitear, pero prefiero casi ponerlo en el blog.

Estaba yo en la cafetería tomando café -aumetando mi productividad en resumen- y en la mesa de al lado hay dos hombres, bien encorbatados y una mujer bien vestida (el símil de hombre acorbatado en mujer) y uno de los hombres, el que parecía más espabilado, con mayor entidad, con más responsabilidad, con más dinero, con la voz más ronca dice:

"""
al chaval lo tuvimos que apantallar.... era muy flojo... flojo, flojo, flojo... era técnico, para que me entendais...
"""

Es posible que sea un caso puntual, o que quizás haya sacado la conversación de contexto, pero me ha hecho muchísima gracia el comentario, el caso que me he echado una carcajada.

Voy a recurrir al sabio refranero español: "cría cuervos y te sacarán los ojos"

4.02.2009

videofolio

En estos días estoy capturando videos de las cosas que he hecho más o menos desde hace un par de años y subiendolas a vimeo, la verdad recopilar las cosas que has hecho hace años es interesante, te das cuenta en lo que has avanzado y en lo que no.

Lo triste es que ves la cantidad de cosas que se empiezan y que posiblemente nunca acaben.

De lo más nuevo es un video de un juego que estuve haciendo en enero, todo basado en cubos (no hay ninguna otra primitiva). Hay una pequeña base programada, pero aún le queda mucho para ser un juego de verdad. De hecho este otro video de una ciudad procedural que me publicaron en algunos blogs era uno de los fondos que tenía pensado poner durante el juego. Programado en C con OpenGL 1.1:


cube shoot-em-up WIP from javisantana on Vimeo.

Otro jueguecillo de carreras de naves que empecé pero nunca terminaré. Salvo las naves todo es procedural, incluso los efectos de sonido, que no he grabado:


spaceship race game attemp from javisantana on Vimeo.

3.31.2009

Esconder la barra de tareas en Windows CE .NET

En los dispositivos tipo PNA (PDA con GPS incorporado) que no tienen windows mobile es muy común poder hacer algún hack para poder acceder al sistema que hay por debajo. En ese windows ce se pueden ejecutar aplicaciones normalmente sin ningún tipo de limitación, aunque algunos limitan el acceso al GPS o bluetooth.

Si quieres crear una aplicación a pantalla completa (para, por ejemplo, una applicación 3D) queda muy mal la minúscula barra de tareas de windows ce .net, lo ideal es quitarla, para ello el siguiente código:

void HideTaskbar()
{
TCHAR* window_names[] = { _T("menu_worker"), _T("HHTaskBar"), _T("Shell_TrayWnd"), _T("Tray") };
for(int i = 0; i < sizeof(window_names)/sizeof(window_names[0]); ++i)
{
HWND hwndCB = ::FindWindow( window_names[i] , _T("") );
if(hwndCB)
::ShowWindow( hwndCB, SW_HIDE );
}
}


Se basa en buscar la ventana de la barra de tareas y ocultarla, así de simple. Realmente es una tontería, pero me costó un rato dar con ello y así lo tengo localizado :). Hay 4 nombres porque me he encontrado diferentes nombres en diferentes tipos de PNA, así que así me aseguramo.

NOTA: El formateo de código no es mi fuerte como podeis comprobar, alguna herramienta para blogger?

3.27.2009

Impacto de los medios tradicionales en la web

Como ya comenté hace unas semanas, nos hicieron una entrevista en referencia a nuestro sistema de guiado para la agricultura que en principio iba a salir a nivel regional, exclusivamente en Castilla y León.

La entrevista fue muy bien, conocíamos a la periodista lo cual era una ventaja, la cosa fue bastante distendida, pudimos explicar bien las cosas y al final se reflejó en el artículo, en mi opinión bastante acertado, un pelín exaltado el titular, pero bueno.

Tenía curiosidad por saber cuanto afectaría a las ventas y sobretodo a las entradas en la web de agroguía. Bien, el resultado es este:

- Publicaron hace tres semanas, un martes si no me equivoco, en la última página de "El Mundo" en Castilla y León, una página entera, con unos diagramas (que por cierto se curraron en el periódico), fotos y un titular bien grande y llamativo.

Resultado: 50 visitas durante dos días en la web y una llamada de un cliente, al que fuimos a enseñarle el equipo y que encima falló la precisión justo ese día (cosas del directo). Además nos llamaron de EXCAL interesándose por si queríamos ayuda para la exportación.

- El Domingo pasado publicaron una columna en "El Mundo" nacional, esta vez no una página, pero no está mal, más de lo que esperabamos. El artículo se puede ver en la web del "El Mundo"

Resultado: 50 y tantas visitas más al día durante 3 días, 0 llamadas en referencia al tema :).

Resultado real, muy poco, cosa de esperar porque no es un medio muy concreto para agricultores, los compradores en el fondo de nuestro sistema, sin embargo ha habido un fenómeno curioso: la gente te valora más por el hecho de salir en un medio nacional, mi familia todo orgullosa, han felicitado a mi madre porque habían visto en el periódico que su hijo había terminado la carrera (jaja, la gente está a uvas por completo), etc. Es decir, lo que hemos ganado es seriedad y credibilidad, si sales en prensa escrita la cosa es diferente.

En conclusión, muy agradecido a Gemma Aliste por el artículo y por su interés. Se lo comentaba a ella, a ver si me va a tocar cambiar mi opinión sobre los periodistas :).

3.20.2009

Erasmusu, red social para erasmus

Los que leais este blog por rss (unos 100 según feedburner, aunque imagino que muchos de ellos serán bots) no os habreis dado cuenta que he puesto una caja en la parte derecha del blog. Se trata de un widget para votar por erasmusu, una red social para estudiantes erasmus.

Participan el BBVA opentalent, en al que se presentan una serie de proyectos de innovación que pueden ganar hasta 100.000€ para el desarrollo del mismo. He estado echando un ojo a los proyectos que se presentan -todo el que me ha permitido la conexión de simyo rural- y muchos de ellos ya los conocía.

Erasmusu está desarrollada por cokidoo, nombre que creo viene del perro de adrian. De la empresa conozco a dos personas, javi lópez (twitter) que conocereis por su librería para desarrollo de juegos 2D IndieLib (por cierto hay un compo abierta ahora), su web de tutoriales de programación de juegos, y al citado adrian mato que mantiene en su web tutoriales de programación web (ajax, mysql, php, optimización) bastante interesantes. Además tienen otros proyectos desarrollados, como plusmusica.com

Solo espero que les vaya bien con su nuevo proyecto, no solo por las ganas y trabajo que le están echando (no hay más que seguirles en tuiter), si no porque son gente trabajadora y que saben de que va el "negocio", de esos que yo considero programadores de verdad :).

Mucha suerte y ánimo :).

3.16.2009

Partes de un negocio: ¿En que estamos fallando?

A raiz de un artículo que nos publicó "El Mundo" en Castilla y León sobre nuestro sistema de guiado gps para la agricultura (ya subiré el escaneado) nos llamó una persona de excal para comentarnos sobre como ellos nos podrían ayudar a llevar el producto a otro país.

Siendo realistas me parecía un poco tonto ya que nisiquiera nos estamos preocupando demasiado por vender en nuestro país y si mi apuras mi propia provincia, pero nunca sabes lo que te puedes encontrar y me pareció interesante, así que quedé con él.

Lo que nos ha contado son cosas bastante interesantes, sobretodo relacionado con su trabajo. Nos hablaba de como hacían que las demás empresas pudiesen enseñar sus productos a empresas del exterior, como podían buscar contactos en el sector que trabajabas y demás. Lo cierto es que todo esto a mi me suena lejos, como he dicho muchas veces no hemos tratado de montarnos en el dolar, siempre lo he visto más como un experimento que como algo realmente serio.

A petición de adrian mato voy a comentar lo que yo creo que estamos haciendo muy mal si de verdad no hubiesemos planteado esto como una forma de hacer dinero de verdad, esto es, una empresa de las de verdad, de esas que tienen web corporativa con foto de catalogo y señores con corbata:

- Estrategia comercial CERO. No tenemos y no hemos buscando distribuidores, no hemos contactado con ninguno de las personas/empresas que pudieran ser nuestros principales distribuidores, es más, las hemos mandado a tomar aire fresco. Por ejemplo, deberíamos haber contactado con cooperativas, empresas de venta de maquinaria agrícola, personas que se encargasen de la distribución... y seguramente muchas cosas más que no sé. Lo positivo que saco de aquí que aunque no lo hayamos hecho por lo menos tenemos cierta idea de donde están las puertas que hay que tocar.

- Marketing muy malo, ahora mismo somos los primeros en internet, sin embargo la gran parte del pastel del negocio no está en internet, está en los lugares donde los agricultores van y leen (tiendas de maquinaria y revistas especializadas).

- Mala provisión. No mala, malísima, hemos hecho casi todo manual, no hemos buscado acuerdos con marcas para que nos provean el hardware sin demasiados líos. Pedimos cada uno de los componentes a un sitio, deberíamos haber llegado a un acuerdo y negociado la compra del hardware. Deberíamos haber tenido un proveedor adecuado.

- No hemos pensado, ni por lo más remoto, en como llegar a mercados de otros países.

En resumen, no nos hemos lanzado a la piscina, solo nos hemos remojado los pies, quizás sea demasiado tarde, pero se aprende de estas cosas. La parte técnica creo que la hemos superado con creces (*), sin embargo la parte comercial y de logística ha sido lamentable. Muchas de esas cosas ya están escritas, hay formación acerca de ellas, gente muy preparada... me alegro por ello.

Por suerte tengo algún amigo con una aplitud de miras bastante más grande que la mía (gracias a dios, si no que sería de este mundo) y que saben moverse como pez en el agua. Fijate si es amigo que se ha hecho una cuenta en twitter para seguirme, aunque a él seguramente le importe una picha twitter y su raza (él solo cree en el contacto real :). El siguiente proyecto seguro que lo bordamos (o casi), sabemos que se puede.

(*) La experiencia de tener un producto y tener que sacarle lo máximo es lo mejor escuela de gestión técnica de un proyecto en todos los sentidos.

3.13.2009

Planificando un deploy (django + nginx)

Si algo he aprendido a lo largo de mi corta vida como perfil mixto entre desarrollador web y adminitrador de sistemas es que los deploys sí importan. Ahora mismo tengo una aplicación web en django y mis requisitos para el deploy son los siguientes (lo cierto es que servirían para cualquier aplicación web):

- Hacer el setup del servidor en un solo paso
- Poder tener la aplicación en el servidor funcionando con un solo comando
- Poder volver a una versión anterior en cualquier momento

Simples de describir, pero complicados de llevar a cabo.

Hay 3 cosas que tengo que tener en cuenta en la configuración:
- el servidor web
- la aplicación
- la base de datos

Por mi parte he elegido nginx como servidor web ya que soporta fastcgi y parece ligero, para la aplicación uso django y como base de datos mysql. La elección no se basa nada más que en mi experiencia, no quiero entrar en el juego de que es mejor o peor.

Para el deploy estoy usando fabric, un sistema que permite en 3 puntos:
- ejecutar comandos en local
- ejecutar comandos en un server remoto
- subir y bajar ficheros

Y todo con sintaxis python :), con lo cual puede además usar todo el api de python.

El layout de carpetas es el siguiente:

 - /srv/agroguia/
   - versions
       - 0
          - timestamp
          - ....
          - last (enlace simbólico a la última versión subida de esta versión)
       - 1
       - ...
    - current (enlace simbólico a la carpeta dentro de versions/X/timestamp)


El servidor web está dividio en dos rutas:
- la parte estática que apunta a current/assets. De momento el peso de los assets es muy bajo (<1M), puedo permitirme el tenerlos replicados.
- la parte dinámica que usa fastcgi contra un socket unix que se crea al levantar django.

Y por qué dividir la aplicación en versiones y dentro de cada una en timestamp (en realidad timestamp + hash de la revisión del sistema de control de versiones). Cada versión tiene un esquema de base de datos y una base de datos diferente dentro de mysql, de forma que todas las versiones de la aplicación dentro de esa carpeta pueden usar la misma base de datos sin problemas de integridades ni nada por el estilo. Similar a este sistema de versiones y timestamps lo usa el sistema de deploy de google app engine.

Del mismo modo, cada vez que cambie el esquema de la base de datos, se creará una carpeta nueva, se llamará al comando de creación de base de datos de django (manage.py syncdb) y luego llamaré a la migración (manual, django aún no soporta migraciones al estilo rails, una pena) que usará los datos de la versión anterior.

Si en cualquier momento quiero volver a una versión anterior puedo símplemente cambiar el enlace simbólico de current y levantar de nuevo el servidor. Incluso si quiero tener una versión en producción y una para desarrollar basta con que levante un servidor de desarrollo en otro puerto diferente al 80 (google en este caso lo hace con subdominios, pero yo no soy tan guay)

Otro detalle importante es la posibilidad de hacer un setup del sistema desde 0. Me baso en un servidor ubuntu, así que tengo unos cuantos targets que instalan dependencias (mercurial, nginx...), módulos python con pip (el reemplazo de easy_install), carpetas, usuarios y permisos varios.

3.08.2009

Tuneando el coche

Soy un friki y no lo puedo remediar. Como además mi hermano lo sabe muy bien me ha regalado unas pegatinas en vinilo del quake para pegar en el carro.



Lo sé, es una frikada de mucho cuidado, pero le queda bien.

Además he pegado otra en el portátil, algo más pequeña, que podeis ver en twitpic.

3.05.2009

¿Cuesta tanto tratar bien a un empleado?

Llevo trabajando en una consultora unos 3 meses y medio, aunque parece que hace siglos que dejé Unkasoft y es que cada empresa a la que voy las condiciones al empleado son peores.

Empecé en Murcia, en M2DEV, allí teníamos una mierda de oficina, pero tenía un par de pantallas, un equipo decente, el jefe se portaba con nosotros, teníamos un futbolín, un horario lógico. Hubo momentos jodidos, pero se pasaban mejor. Más tarde pasé a Unkasoft, allí se acabaron los 2 monitores y estuve con un equipo que iba _muy mal_ hasta que conseguí hacer entender que así no se podía trabajar, incluso terminé con dos pantallas. Ahora estoy con un PC aún peor y con una triste pantalla de 17", en una silla sin posa brazos... :)

Qué cuesta a una empresa tener unos monitores decentes? pues posiblemente 200€ más por empleado. Qué cuesta a una empresa tener un sitio de esparcimiento con 4 sofás? 4 perras comparado con lo que paga al estado por uno de sus empleados al año. Qué gana la empresa? tener a un empleado contento, motivado y que va con gusto a su puesto de trabajo. No necesitamos tener una oficina en el centro de madrid... ah, pero se me olvidaba que lo habitual es que la eficiencia del empleado importe muy poco, así que total, si me puedo ahorrar 20€ en una silla, eso que me llevo por delante.

Pero no, es preferible tener al empleado como un borrego, sentado 8 horas en un sitio de mierda, con los ojos podridos de mirar una pantalla minúscula.

Además, mirando otras profesiones, por ejemplo, un topógrafo, te das cuenta lo lamentable del asunto. Un topografo podría llevar un GPS de 100€, los hay, sin embargo llevan uno más caro, más preciso, adecuado a lo que necesita. Sin embargo es fácil ver como la mayoría de la gente que trabaja en este negocio tienen en casa PC más potentes, pantallas más grandes, sillas más cómodas y mesas más espaciosas. Ahora pensad en otras profesiones "tradicionales", médicos, arquitectos...

A qué viene esto? en el twitter de josek (blog) veo una entrevista en tuenti en el que enseñan sus oficinas (en el centro de madrid), muy al estilo frog creek software,vimeo, google o incluso LemonTeam (se nota que hacen juegos para iphone ?). Con la pasta que metieron en tuenti no me extraña sería para matarlos no tener pantallas de 30" como mínimo :). Encima Kartones me ha dicho que todo lo que cuenta es verdad :)

¿Tenemos lo que nos merecemos?

3.04.2009

Pequeño experimento SEO

Ni soy ni pretendo ser un "master" en el tema de posicionamiento, aunque sí es curioso como si no hay nadie más interesado en posicionarse en google se consigue muy fácilmente. Dos ejemplos:

- El primero es agroguía, hace unos meses vi como no aparecíamos en la portada de google ni por asomo para búsquedas más o menos relacionadas. Pensé "y si quizás gracias a una búsqueda en google conseguiesemos una venta?". Lei lo básico de SEO sobre los títulos de las páginas, links y poco más y me puse manos a la obra. Ahora si buscas "guiado gps", "gps agrícola" y similares nuestra web sale la primera. Con google analytics fui viendo las keywords de búsqueda que usa la gente y he ido intentando afinar. Ahora voy a intentar las keyworks "gps agricultura", que he visto que vienen algunas búsquedas, pero que nisiquiera estamos los primeros en google.

Esto es un arma de doble filo, últimamente he visto que muchas visitas entran en la web pensando que nosotros hablamos de sistemas de guiado GPS en general y recibo a menudo correos pidiendo recomendación para la compra. En cualquier caso es bueno, las ventas de gente que nos busca por google no son despreciables y "perder" unas horas en hacer la web ha salido muy rentable.

- El segundo es javisantana.com, hace unos meses lo registré, aunque solo apuntaba a mi blog. Decidí entonces poner una web, indicando que soy programador freelance python, sin linkar desde ninguna parte ya estoy en la primera página de google (en español, ojo) como python freelance. Lo cierto es que pensé que la gente buscaría más algo como "programador python freelance", pero nadie pone la palabra "programador". Más o menos recibo unas 10 ó 12 visitas cada semana, de las cuales la mayoría no están interesadas en ver el blog . Será quizás por que la web es cutre de pelotas, no soy lo suficientemente serio (no creo que un freelance se anunciase de esa forma, la verdad) o quizás los que buscan no entienden nada de lo que explico.

Lo dicho, seguro que sería facilísimo pisar el posicionamiento que he hecho, pero es interesante ver como si nadie se ha posicionado aún, hacerlo es realativamente fácil.

PD: ahora me pregunto sin con el link que he hecho, al cerrar el círculo de links google entre este blog y javisantana.com me penalizará... lo sabré en unos días.

2.20.2009

Gracias por NO apoyarme

En España hay veces que somos tontos y seguramente sea yo uno de los primeros, pero es que hay cosas que ves que claman al cielo, sobreotdo con la que cae ahora mismo.

Nos quejamos de que no somos productivos, que necesitamos i+d, invertir en tecnología, apoyar a las start-ups y toda esa palabrería que nos dicen a los que votamos cada, si todo va regular, 4 años. Yo no sé como resolver estas cosas, pero voy a describir un tema que me ha pillado muy de cerca, del cual no voy a dar nombres ni medios porque es posible que si lo hago afecte a amigos, pero que sí refleja lo que quiero decir . Así que si confiais en mi seguid leyendo, si no posiblemente es mejor que dejes de leer porque no voy a dar ni una sola referencia (muy al estilo periodístico).

El caso es que, como sabrás si lees este blog regularmente, nosotros tenemos una pequeña empresa en la que __desarrollamos__ y vendemos un sistema de guiado para la agricultura. Tratamos de hacer las cosas lo mejor posible dentro de nuestra capacidad, intentanmos innovar hacienco cosas que los demás no hacen (o por lo menos no habían hecho cuando nosotros lo hicimos), en mi opinión hacemos i+d de verdad, esto es, desarrollamos cosas nuevas que van directamente al usuario, que son de utilidad. No somos los únicos en nuestro ámbito, da la casualidad que en castilla y león hay otras personas que hacen lo mismo que nosotros, aunque con otro target. En resumen, dos empresas en Castilla y León -esa comunidad que vive de la Junta, FASA y de las ayudas económicas (auto-censura) que otros, que sí son productivos, nos aportan- que desarrollan tecnología útil.

Ayer me comentaba un amigo que había leído en un artículo de una conocida revista de agricultura de Castilla y León un reportaje sobre los sistemas de guiado, pero que, curiosamente, los sistemas de guiado desarrollados en Castilla y León aparecían en una columnita, símplemente mencionándolos, mientras el sistema de una marca gigante del sector, estaba a toda página, con todo lujo de detalle en sus características (*). El sistema es bueno, está claro que está bien desarrollado, sin embargo esas características ya las teníamos nosotros implementadas hace tiempo, pero claro, unos pobrecitos de Valladolid no van a competir con la gran marca, fijo que es mucho peor.

Habrá quien me diga: "haced un producto mejor y así os publicarán". Posiblemente tengamos que poner las instrucciones en inglés, llevar unos "comerciales" bien encorbatados y decir que somos estadounidenses. Ahora la gente ya no compra un producto porque sea de su país, obviamente se rigen por criterios tales como el precio, la calidad (incluso hay quien lo hace por la relación entre ellas), el tema del patriotismo está "pasado de moda", pero yo lo veo de otro modo.

No sé donde escuchaba o leía que en España veías que el vecino montaba un bar, una frutería o una mercería y tú montabas uno de esos negocios y que en si licon valley tu vecino montaba una tecnológica y tú hacías lo mismo (y la diferencia entre empresas es patente). Está claro que si te rodeas de un entorno en el cual la productividad, innovación es importante, tarde o temprano terminará siendo importante para ti y lo harás igual. Por esta misma razón creo que se deberían apoyar a las empresas que tratan de hacer las cosas bien y dejar de poblar el territorio con cárnicas (aquí me he auto-censurado de nuevo) que lo único que hacen es traer trabajo de baja calidad.

Por esa razón deberíamos apoyar a la gente que desarrolla en España y sobretodo a tu alrededor, es una realimentación positiva, si tu vecino está bien posiblemente tú lo estés también. Pero claro, como va nadie a apoyar el desarrollo si en general la gente no sabe qué es, la cultura tecnológica es muy baja, es fácil escuchar "un amigo de un amigo montó un bar y vive como un marqués".

Se habla mucho ahora de que las PYMES necesitan dinero, acceso al crédito, etc y lo que yo creo que además se necesita más apoyo y creer en la gente y ojo, esto requiere trabajo y esfuerzo, no basta con dar palmaditas en la espalda. El caso que he descrito es un ejemplo, pero lamentablemente es la tónica general.

(*) este artículo no era el típico que se pone por dar publicidad encubierta, venía de la universdad, para colmo.

2.12.2009

Mi lugar de trabajo

Además de mi trabajo habitual en algor (la web no pone nada de que sea puntera en el sector, menuda mierda :P), tengo mi trabajo B, en el cual hago lo que me sale de las narices, cuando y como quiero. Ya que me paso unas cuantas horas del día trabajando, que menos que tener un entorno adecuado y agradable.

En mi caso me encuentro cómodo trabajando sobre una mesa -hay gente que se encuentra a gusto con el portátil sobre las piernas, ya ves-, y sobretodo con un par de pantallas, o como mínimo una grande y con buena resolución, con objeto de no tener que estar cambiando continuamente entre ventanas. Para ilustrar una foto:



Me gusta mucho tener la ventana al lado, además es grande y hasta el suelo, que puedes mirar desde el patio hasta el cielo para cuando tienes que reflexionar. Lo cierto es que me gustaría tener una habitación para mi solo, con el sistema de sonido bien montado, todo se andará.

El caso es que esta tarde he estado a revisar la graduación y desde la última vez me ha subido una dioptría en cada ojo, bastante teniendo en cuenta que ahora tengo 4 en cada ojo (joder, y empecé con 0.5), y que posiblemente sea debido a las horas delante del TFT, así que posiblemente tenga que pasar menos horas en este mi lugar de trabajo B.

Al hilo de esto hay un blog que muestra lugares de trabajo de gente, a mi me resulta curioso.

PD: sí, el monitor grande tiene VIM con python :)

2.11.2009

Git para trabajar en puestos diferentes

Sea por la razón que sea hace unas semanas comencé a usar git. Realmente no sabía si era una gilipollez más de los programadores Rails o de verdad es tan útil y pragmático como algunas de las herrameintas que usan.

Como soy un hombre de los que quedan pocos, lo instalé y comencé a llevar mi aplicación web para mi nuevo proyecto-negocio con git, al principio un poco contrariado debido al cambio que hay de subversion (centralizado) a git (distribuído), sin embargo pronto esa confusión se tornó en sorpresas (y para bien!):

- No necesitaba tener ningún servidor, cosa que se agradece, puedo montar mi repositorio en cualquier sitio sin ningún proceso funcionando. Hace ya unos años explicaba como montar un pequeño server svn, ahora eso ya no sirve para nada.

- Basta con copiar la carpeta ya tienes todo el repositorio en otro sitio ya que el propio repositorio va dentro de la típica carpeta .git.

- Si quiero tenerlo centralizado no tengo que tener nada especial, con un demonio ssh ya lo tienes.

Y para qué lo uso. Aparte de para llevar la trazabilidad adecuadamente, me permite compartir el trabajo de un puesto a otro. A lo largo del día trabajo a veces hasta en 3 máquinas diferentes, algunas sin conexión a internet, así que puedo llevarme mi trabajo en el pincho USB. Cómo funciona?

para empezar se crea un repositorio y se añade el código
#git init .
#git add *
#git commit -a -m "fist commit"

Imaginemos que voy a otro lado y quiero hacer unos cambios, clono el repositorio y trabajo allí:

#cd /media/disk
#git clone /home/javi/repo/project

ahora trabajo sobre ese repositorio, puedo crear ramas, "comitear", "revertear" (ojo con los comandos que no son iguales que svn) y toda la parafernalia que puedes hacer en svn, git o cual quiera que sea tu sistema preferido.

Cuando llegas a casa de nuevo símplemente mezclas los cambios

#cd /home/javi/repo/project
#git pull /media/disk/project

los cambios se mezclan como si tal cosa. Así de fácil.

De momento no he jugado demasiado con las ramas, seguramente por mi malísima experiencia en svn con las ramas y posteriores merges (todos los conocemos). Todo se andará.

2.08.2009

Getting real

Soy un brasa con el tema, pero es que cada día que pasa y desarrollo un poco más me doy cuenta de lo importante que es saber tener los pies en la tierra en lo que a software se refiere. Cada día que pasa me asombro más de lo real que es el libro de 37signals. Como han podido juntar tantas verdades en un mismo libro.

Y todo esto porque en el blog de @monicats (que recomiendo que sigas si estás aprendiendo inglés) he encontrado una entrada que define perfectamente la filosofía getting real.

1.31.2009

No te quiero "google app engine"

Y no es que no me guste por que me quite todo el trabajo de mantener un servidor en producción, gestionar la base de datos, escalar adecuadamente según lo necesite, tener esos deploys tan extraordinariamente fáciles y rápidos (esto me enamoró)... es simplemente por la política de descarga de MIS datos.

Según google los datos almacenados en su bigtable son del usuario y puede hacer con ellos lo que te de la real gana. Es cierto, los datos se pueden borrar y subir con toda la facilidad del mundo, sin embargo la descarga no es trivial y digamos que no la "facilitan suficientemente". Hace ya tiempo que plantearon una cuestión en las listas de correo para obtener requisitos para la herramienta de descarga, de esto hace ya 9 meses y nada, hay herramientas para subir datos, pero para sacar de allí, nada de nada.

Y ojo a la frase del post del blog oficial de app engine:
"""
With Google App Engine, you own all the data in your app. As stated in our terms, you always have the right to get your data out of Google App Engine at any point. We wouldn't have it any other way.
"""

Y es que me da pena, porque puedes usar parte del API de django - el framework de moda al estilo ruby on rails para python-, incluso me darían igual las limitaciones que imponen en su sistema de base de datos, son prereribles esas limitaciones al infierno que suponen normalmente los deploys y mantenimiento de la infraestructura. Además, las limitaciones casi siempre son mejores que tener vía libre (esto es tema para otro post).

Llevo con una aplicación que corre en google app engine ya unos meses, lo cierto es que ha funcionado muy bien y gracias a ella he podido dar soporte a mis clientes, pero me niego a no poder coger los datos de una forma fácil. Tan difícil es que lo hagan de pago y den un servicio completo de calidad? yo lo pagaría.