lunes, abril 27, 2009

Va a estar divertido el curso de .net

No por el curso de .net, que será un truño, sino por las tertulias que vamos a mantener con el profe. Lo estoy viendo...
Antes de entrar en el tema, linkeo un post relacionado de Sergio Montoro.

Estaba muy desconectado del mundo Microsoft, pero ya me voy enterando, que si codeplex, team system, estado de mono, sharepoint, silverlight, ...

Bueno... volvamos al tema del curso.
El curso nos lo da un formador interno, teoricamente arquitecto o consultor en tecnologías .net.
Pues bien el susodicho puede que controle de .net, que ya lo iremos viendo... pero ha demostrado un desconocimiento del mundo del Open Source, y tener unas ideas sobre el desarrollo del software en general, que me hacen sospechar que tiene los pies de barro... Ya iremos viendolo, que puede estar divertido. Fijo, porque este es un taliban de Microsoft.

Ha tenido dos perlas hoy: la primera cuando mentó que desarrollar con Visual Studio era gratis. No puedes hacer afirmaciones como esa. Es gratis usando la versión express. Pero son versiones limitadas. Ni que fuera un comercial.

La segunda perla es cuando comentó las desventajas de usar open source frente al tener el respaldo del soporte de Microsort. Chanante! Ya nos metimos en una tertulia que duró hasta que me fuí del curso que tenía que salir un poco antes....
¿Pero como puedes hacer una afirmación como esta? Claro que está de PM el tener soporte (pero hay que pagarlo), pero el tener un soporte no te va a garantizar nada. Puede que incluso que hayas encontrado un bug ¿y que? ¿Te lo van a arreglar?
El tio comentaba una mala experiencia con una cosa que pillaron para fusilarlo en un proyecto y que luego les petaba.
  • Punto 1: tu eres responsable de lo que pillas
  • Punto 2: hay que saber lo que se coge. Y si coges algo que no sabes como está, pues se supone que vas a saber valorar su estado. Si coges algo como libxml2, puedes estar tranquilo que es a prueba de bombas. Sin dudarlo mejor que cualquiera de los parsers de microsoft, porque seguro que ha sido hecho con mas cariño, lo han revisado mas ojos, y está superprobado (si lo usas correctamente).
  • Punto 3: fusilar algo que es gnu, pues ya tiene delito. Ajo y agua.
  • Punto 4: de todas formas si pillas algo que no está hiperprobado, pues oye, eso que te ahorras. Da gracias. Si luego falla, pues oye, ¿no somos desarrolladores?
  • Punto 5: tienes el código. Quien no ha estado pillado por los huevos y no poder hacer nada, a no ser que pagues por que quien te tenga pillado te haga un desarrollo, que sabes que se puede hacer, pero no sabes como ni está documentado. Yo si.
  • Podiamos seguir... pero creo que es sufiente.
Ojo! reconozco que los productos de desarrollo de Microsoft son buenos, pero eso no quita para menosprecies el desarrollo Open Source.
Ojo! que no es oro todo lo que reluce. El Open Source tiene sus carencias: documentación, falta de soporte, ... Pero ya somos mayorcitos para saber donde nos metemos. Un poquito de por favor...

Ya para acabando, indicar que en una ppt indicaba que era multiplataforma. ¿Como puedes afirmar esto así categoricamente? Mencionaba que corría en Symbian. OK, pero seguro que es una versión limitada.
Y lo de mono tampoco sirve. Lo primero porque microsoft no está detrás. Con lo cual chungo.
Tienen implementado lo estandarizado (ECMA-334 y ECMA-335) y están intentando soportar parte de los paquetes que Microsoft no ha estandarizado: Windows.Forms, ASP.NET, ADO.NET, ...

En cuanto al tema de mono, comentar que he estado indagando y realmente hay pocas aplicaciones que lo usen. No se yo si es una tecnología para confiar. Yo según están las cosas no apostaría un duro por ello. Mas cuando la gente de gnome han creado un lenguaje, como alternativa: vala. Además hay temas chungos de licencias por medio.

Acabo este post comentado que hay un proyecto de gnu dotGNU, donde está Portable.NET.
Este proyecto está centrado en implementar las especificaciones ECMA en multiples plataformas.
Este si que me parece un proyecto interesante (si es que realmente el framework merece la pena...) y no mono. Bueno... es mi opinión.

sábado, abril 25, 2009

Metodologías ágiles y Team System en el mundo real

El xcoles despues de la charla de enmento subo a mi puesto, en un momento hecho un vistazo a mis feeds y veo que Rodrigo Corral ha publicado algo.
Como es uno de los sitios que suelo mirar porque pública sobre Scrum, lo hecho un vistazo y me entero de este evento, que era para el día siguiente, jueves. Ipso facto me registro, pido permiso al cheriff y gualá. Todo arreglado...
El jueves tras un poco de pereza por el madrugón que me tocaba dar (y el trasnoche del dia anterior) camino hacia 'la finca'. Como no había estado nunca salí con tiempo, en coche y con tontorrón. Tras comerme el atasco de la M-30 (por donde el Vicente Calderón) y luego otro en una rotonda (ya por Pozuelo de Alarcón). Llego a la finca y para no complicarme, coche a parking de pago...

La finca una zona edificos nuevos, ideales para currar, pero sin vida; a mi estos sitios fabricados no me gustan. Donde esté currar en el centro de Madrid...
La oficina de Microsoft pues bien, con zona para relajarse donde nos sirvieron caterings: a media mañana, para merendar y comer.
La charla de la mañana, ¡genial! Ya no solo por el contenido sino por la forma de presentarlo y las anectodas. Rodrigo lo hizo realmente ameno. Recomendable 100%.
Da gusto a ir a charlas donde se ve que la gente que la da, sabe de que está hablando y lo usa en su dia a dia.

Ya lo de por la tarde me interesaba menos... pero bueno... ya que estabamos allí... Pues lo vía hasta la hora de la merendola que aproveché para volver a los madriles.
También le saqué partido, sobre todo para ver las herramientas de Microsoft para probar unit testing, web testing y pruebas de carga.
Del OS siempre nos estamos quejando... pero hay que reconocerlo, tienen unas herramientas de desarrollo cojonudisisimas.
Con respecto al tema del unit testing, curiosa una herramienta todavía bastante experimental para generar automáticamente tests unitarios: Pex. Por ella misma no es que que sea muy util, pero puede ayudar a definir tests para 'cubrir' toda la casuistica posible. Interesante al menos.

Volviendo al tema de las metodologías ágiles, era muy guapo ver como se integraba Team System con excel y con las herramientas de desarrollo. Impresionante el tema de la integración la verdad. Lo cual es normal, ya que es su entorno y sus herramientas.

Umm, y esta semana que entra empiezo un curso de .NET. Pero no.... que no abandono el barco unixero. Dios me libre. Nunca está de mas, ver otras herramientas y entornos.

PD: Hace que no toco herramientas Microsoft la friolera de... yo diria 10 años. Ahí es ná, cuando desarrollaba con VB (yo creo que llegué a usar la 5.0) y para gestionar el código Sourcesafe. Ahí es ná.

miércoles, abril 22, 2009

lan testing

Tengo un NAS, el Linksys NAS 200 desde hace tiempo. La verdad es que no le había dado mucho uso, pero pienso darle mas. Para ello le he metido un segundo HD y lo he configurado como RAID1.

Al hacer el trasvase de datos de nuevo al NAS, me pareció que iba lento. Bueno lento tiene que ir comparado con un disco duro interno, ya que el interfaz de red es 10/100. Pero no se... me ha dado por probarlo. Me dio por pensar que quizás el router/switch me estaba haciendo de cuello de botella.
Pues bien, metí un switch de netgear entre medias y he probado a comunicar entre dos ordenadores a través del switch y a través del router y no tengo problemas. Tengo una tasa de transferencia que no llega a los 95 Mbps. Vamos... que no hay problema, pero es una tasa muy baja si la comparamos con un USB 2.0 (480 Mbps). Y ya ni que cuento si la comparamos con SATA (150/300 MBps).

Vamos... que si os quereis comprar un NAS para usarlo como disco externo y darle bastante uso no os lo recomiento. Es muy lento. Yo lo utilizo como backup de datos, de ahí el tema del RAID1. Estoy empezando a tirar bastantes fotos en digital y quiero una solución comoda como dispositivo de almacenamiento. El NAS es cómodo si quieres compartir tus datos entre varios ordenadores, pero es un tema a pensarse muy bien porque con un dispositivo USB quizas te apañes (estamos hablando de un entorno domestico, claro está).

Si teneis claro que lo vuestro es un NAS yo me iría a uno con interfaz ethernet gigabit. Hay cosillas por ahí donde incluso podeis configurarlo en RAID5.
Una ultima cosa... al lorito con el ruido. Sus darus cuen que estos dispositivos suelen llevar ventiladores.
Un ejemplo de cosas relativamente económicas. Y un ejemplo de comentario de ruido.
En este link podeis ver varios modelos.

enmento search

Hoy he estado en una jornada de presentación de la solución para búsquedas de enmento.
Como podeis ver en su página me llamaba la atención lo de 'semantic' que dicen que hacen.

Pues bien... de semantico poco la verdad. Lo que dicen de semantico es a nivel de palabra, sinonimos, ...
El producto es un producto muy sencillo y totalmente orientado a la plataforma .NET.

El producto se ve que está sobre todo orientado a crawlear documentos dentro de la red de una compañia (soporta seguridad de acceso a sets de documentos).

Realmente es complicado ya el mundo este de los buscadores.... porque sacar algo diferenciador es dificil. Y este no es el caso. Faltaría ver que tal busca, comparado con otros buscadores. Oye, quizás lo haga muy bien y por el coste de licencia compense... No lo se.

Bueno pasemos a ver algunos detalles...

Cada nodo de indexación puede albergar 1Millón de documentos. Lo que no se, es el ratio que manejan de media entre numero de docs y almacenamiento necesario.

Por lo visto, los indices no los almacenan en el sistema de archivos, sino en una BD!!!! A ver si mañana puedo indagar mas... Mira que me estraña esto.

Al añadir un nodo mas de indexación, no puedes redistribuir los indices ya existentes (vamos, que tienes que volver a procesar todo).

En la demo tenían una aplicación de administración de consola y un interfaz de búsqueda web. Por lo visto se puede acceder a través de .NET o a través de web services.

No se puede hacer procesamiento de los documentos, ni se soportan campos en el indice. Vamos... que por ejemplo no puedes meter un valor creado en runtime en un campo del indice que calculas basado en contenido del documento.

Todos los temas que ellos llaman semanticos: inflections, sinonimos, ... Se hacen durante la consulta. Lo que penaliza la misma, claro está.

Tienen una cosa que llaman 'macros', que sería un equivalente a los grupos de una expresión regular (seguimos hablando de la query).

Por lo demas soportan lo tipico: ands, "", *, ...

Y eso es todo en pocas palabras.

martes, abril 21, 2009

Windows shell

No voy a desvelar nada nuevo si digo que la shell de windows es un truño.
No ya por el propio lenguaje, o los comandos disponibles, sino por el dichoso terminal.
Es increible que todavía en el Windows XP siga viniendo...
Eso si mirando esto he descubierto que ya Windows ha sacado una nueva shell, Power Shell (aka monad, aka Microsoft shell, aka MSH). Un par de links mas: [intro][ide][un blog].

Para los reacios al tema windows, desde hace tiempo tenemos el cygwin. El problema de cygwin es que disponemos de una shell muchisimo mas potente, pero no nos desembarazamos de la dichosita consola. Pues bien.... he descubierto una emulador de terminar que se integra con cygwin (y podemos también abrir terminales vía ssh) y que está realmente bien. Se trata de poderosa.

Volviendo al tema de las shells, aparte de powershell y de cygwin, hay algunas alternativas (que no he probado):
  • console
  • powercmd: Esta tiene realmente muy buena pinta. A ver si la pruebo.
  • Take command
  • ipython: se ve que hay gente que lo usa, y usando python como lenguaje de scripting. Por lo visto en windows haga usando pyreadline.
  • Alternativas a cygwin, pero nativas. Hay varias opciones, pero algunas de ellas ya un poco obsoletas o sin soporte: unxutils, uwin, bash.
La mayoría de la información anterior la he obtenido de las dos páginas siguientes: [1][2].

Actualización
Se me había olvidado que con cygwin también disponemos de cygwin/x.

lunes, abril 20, 2009

Programming Collective Intelligence

Es curioso como el circulo a veces se cierra...
Resulta que tenía fichado un libro: Programming Collective Intelligence. Ya que lo comentaron en la primera reunión pythonera en Madrid.
Ayer lo pedí y hoy lo menciona gallir en un post.

El código fuente del libro está disponible aquí (blog del autor).
El código de gallir tb. es python.
¿Es sensación mia o cada vez hay mas gente tirando lineas en python?

No es pais para viejos (II)

Enlazando con el post anterior.
La empresa para la cual trabajo es partner un un buscador. Lo de partner es por decir algo, porque en 4 años no han vendido nada. Lo cual tampoco me estraña...

Pues bien, habiendo soluciones de software libre como Lucene y Nutch, y teniendo la cantidad de empleados que tienen sin proyecto, no puedo entender como no invierten o han invertido en formar a gente en dichos productos.

Y sin embargo ahora dan audiencia a la gente de enmento. ¿Querran hacerse partners también?
En fin... que ya me imagino yo por donde van los tiros de interesarse por un producto y no por apostar en software libre.

Este pais... no es pais para viejos

Voy a empezar con algo técnico para llegar a donde quiero llegar.

La semana pasaba vi este post con unas notas sobre la arquitectura de facebook. Pero tan interesante como las notas o mas es ver la presentación de donde están sacadas (1hr). Me gusta el formato, en la parte de arriba la charla por el 'Director of Engineering at facebook' (un chaval realmente muy joven), y en la parte de abajo los 'slides'.

Sobre la charla decir que es un gustazo ver como esta gente (y otra mucha) rompe con lo preestablecido para montar lo que ellos realmente quieren. Dile a algunos que vas a usar para almacenar los datos algo que no sea relacional...

Para cualquiera interesado en la arquitectura del software es de ver.
Pues bien, en esta interesante página [infoq] , podeis ver a la derecha imagenes de otras muchas charlas. ¿Que edad dirian que tienen los ponentes?

Esto viene a colación, de que el otro dia cañeando con un amigo, que me comenta que a un amigo en común que se fue a la calle (su empresa quebró) no lo cogieron en Indra (Asturias) porque era muy mayor (max 40 tacos debe tener) para trabajar como desarrollador. Lo flipas!!!!
Vaya manera de despachar a una persona, que puede tener los cuarenta tacos (que no los aparenta) pero que es un samurai del software (siendo su mejor arma el C++; y mira que es un arma dificil de dominar).

Y termino linkando un post de otro colegui, muy quemado con su jefe. Dichoso Pais. Cuando evolucionará aquí el mundo del desarrollo del software.

martes, abril 14, 2009

Dejavu y Geniusql

Gracias a un post de Jonathan Ellis, veo el video de la charla sobre Dejavu (y Geniusql) en PyCon. Es interesante... Mola lo pythoniano de las expresiones recuperar los datos.

En pocas palabras: Geniusql hace el mapeo entre objetos y tablas siguiendo el patrón Table Data Gateway.
Dejavu usa Geniusql y usa el patrón Data Mapper.

El resto de patrones de acceso a datos serían: Row Data Gateway y Active Record.

No he tenido que acceder a BBDDs con python, y menos con ORM, con lo cual es un campo bastante desconocido para mi. Hoy me propuse indagar un poco sobre ver que comparativas de productos había. Dejo un par de enlaces (Storm vs SQLAlchemy vs GeniuSql): [1][2].

Acabar indicando que hay unos cuantos mas ORMs, y que siempre podemos usar directamente el SQL.

martes, abril 07, 2009

Sorting in Python

Un artículo de recomendable lectura, que compila el tema de la ordenación en python: Python Sorting Howto.

lunes, abril 06, 2009

Functional Python

Que bueno este artículo: Python Functional Programming HOWTO.
Aparte de repasar alguna cosilla que sabía he aprendido algunas nuevas.

Mi historia de Meta4

Hacía mucho que no visitaba los sitios donde escribe Sergio Montoro, una descuido por mi parte porque me encanta lo que escribe y como lo escribe. Es un placer leerlo.

En esta ocasión escribe la historia de Meta4 desde su punto de vista.
En mi historía de Meta4 coincidí con Sergio. Yo entré en Meta4 en el 1997 y me fuí en el 1999. Si leeis el artículo de Sergio, comprobareis que entré cuando la versión 3.X estaba a todo motor.

En el 1997 acababa de terminar la mili, y un par de amigos me comentaron que estaban allí y que echara el CV. Así hice y al poco tiempo ya estaba currando. Entré en el departamento de calidad, SQA. Ya en este departamento se notaba lo que comenta Sergio, gente que llevaba tiempo en la empresa y las nuevas incorporaciones. De hecho con nuevo manager, Santiago Lecomte.

Yo por mi parte no tuve mucha suerte. Y caí en temas de calidad para la 2.X. Ya una vez pasó un tiempo en la empresa, logré pasar a desarrollo, que me interesaba mucho mas.
Ojo! no es que reniegue de calidad. En calidad se pueden hacer también bastantes cosas interesantes, pero en ese momento no era lo mio.
Caí en el equipo de Seguridad y Auditoría, donde curré codo con codo Miguelín. Nuestro manager era Javier.
La verdad... fue una etapa genial. No me he vuelto a encontrar un sitio para trabajar como Meta4 en esa epoca. El ambiente de trabajo era excepcional, y fuera de él también. Fueron muy inteligentes con las contrataciones (punto que también comenta Sergio).

Yo 'me tuve' que largar, ya que todavía era un pipiolo y la necesidad de descubrir mas mundo estaba ahí. Pero lo dicho, que gran sitio fue para trabajar, al menos para un pipiolo como yo.

viernes, abril 03, 2009

git


Parece que algo se mueve sobre el mundo de los SCMs (Source Code Management; aunque tb. podría ser las siglas de Software Configuration Management; quizás para evitar el equivoco se podría usar mejor las siglas RCS de Revision Control Software; y otro final Version Control System, VCS). Y que es que parece que git [en]está cogiendo base de usuario.. Sirva este post para recopilar enlaces sobre el tema.
Todavía no lo he probado, pero lo haré en breve.

Mi experiencia hasta la fecha con SCMs ha includo: CVS,SVN, Sourcesafe, un producto propietario de TID, y otra herramienta que ahora no recuerdo.
Mi uso con CVS y SVN ha sido muy básico. Tanto que nunca he tenido que hacer un merge de una rama. En la mayoría de proyectos en los que he estado el uso que se hace a los SCMs ha sido bastante básico: no politicas diferencias de acceso al repositorio, no branching, ...

Con lo que me quedo de git, así en breve tras lo que he podido leer:
  • Es distribuido (DVCS), con lo cual cambia y bastante el procedimiento de trabajo.
  • Parece muy indicado para proyectos muy grandes.
  • Pero parece también indicado para usarlo en proyectos personales donde estas experimentando por su facilidad para la gestión de las ramas.
  • Se puede combinar junto a SVN.
El mayor cambio respecto a un repositorio centralizado, es que con los sistemas distribuidos hay que crear una 'red de confianza'. Eso es algo externo que hay que aportar a git. Hay que crear un protocolo de trabajo.


Y eso así a bote pronto, sin entrar en mas temas técnicos, que para eso ya voy a dejar unos cuantos enlaces. Para empezar unos enlaces adicionales de la wikipedía sobre el tema:
De la lista de RCs me ha llamado la atención que hay varios implemetados en python: Bazaar, Mercurial y Codeville.

Por otro lado indicar que git no es el único distribuido, también están: Motonone, Mercurial, Code Co-op, Arch, Darcs, DCVS, Codeville, PlasticSCM, SVK, Telelogic Synergy, Bitkeeper. Pero vamos... que los que mas parecen sonar ahora aparte de git es Mercurial.



Llama la atención Darcs, no sólo por ser distribuido, sino por estar implementaro de Haskell.

Y la lista de referencias... En primer lugar indicar la web de git.
En primer lugar comentar que me parece muy interesante ver el video de la charla que dio Linus en google sobre git (resumen aquí).
El tono de Linus, no me convence mucho. Es demasiado 'radical', pero bueno... también puede ser su pose para promocionar git.

En los siguientes dos enlaces podeis ver condensadas las diferencias con SVN:
Aquí un curso rápido para gente de svn.
Y para finalizar unos links con 'discusiones' sobre el tema:
Y eso es todo amigos.... No os molesteis en buscar mas. Yo creo que lo mas interesante ya lo teneis enlazado aquí :p.

Me despido con una cita. Buen finde...

"You do realize that a distributed VCS can perfectly be used like a centralized VCS, don't you ? Declare any repository as the "central" one and decide that everybody should push/pull to/from it. That's their power: discributed VCS don't force you into a specific workflow, you choose how you want to use them. "

Joel on Software

Vía este blog, he llegado al blog de Joel on Software.
Por lo poco que he leido es un blog que merece la pena ser seguido.
Me ha llamado la atención uno de sus posts últimos sobre como pagan en su empresa.
Pues bien... tienen muy bien definido como empleado en donde estás; pero de una manera real, por tu valor. Realmente muy interesante. Y todo el mundo con el mismo status gana igual.

Otra post interesante que he leido: 12 steps to Better Code.

Pocas empresas habrá aqui como esta, si es que hay alguna...