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.