jueves, septiembre 17, 2009

Name That Code
Created by OnePlusYou - Free Online Dating

miércoles, agosto 05, 2009

Que facil es acostumbrarse al jamón ibérico

Hoy por fin recogí el finiquito de mi anterior empresa.
Fue muy agradable estar con un par de mis ex-compis (Pedro y Carlos). Una pena no ver a mas gente... pero entre el ERE temporal y las vacaciones....
La verdad... la última etapa formamos un grupeto muy bueno en las comidas. A ver si en septiembre nos podemos volver a juntar a echar unas cañas.
Para celebrar el ERE y la marcha tb. de Pedro, que hoy es su último día.

Pues estaba yo allí charlando con esta gente y alguno mas, y me fijé en los monitores TFT que teniamos de 17". Joder..... No llevo ni un mes currando con uno de 22" y ya me parecían una gena. De ahí lo del titulo del post. Casi que voy a pasar de ponerme un segundo monitor.... Porque si ya se acostumbro a caviar... jajaja.

Y ya que estamos con temas de 'laVida', voy a tocar otro. En noviembre del 2008 me largaron del proyecto en que estaba. Se quedaron con sólo un proveedor. Como yo era el único del mio...; a la puta calle. A pesar de ser una de las dos personas técnicamente mas importantes del proyecto (por no poner un orden entre las dos...). En mi lugar se quedó un junior, hay que joderse...

Pues bien... segundo recorte y del proveedor en exclusiva se queda una persona. Para nuestro divertimento, alias 'la heredera' (brown espeso para la pobre).

Pues bien... ahora le dan el proyecto a otro proveedor, el cual no tiene ni flowers del proyecto, y ya si me apuras, ni de python. Juas.
¿Adonde quiero ir? Que esta es la gestión del soft/proyectos que se hace en España por muchas empresas. La puta pela. La calidad? Que mas da.... Claro, al final los proyectos se van al garete.... No mi extraña.

¿Adivinais que empresa se ha puesto en contacto con 'la heredera'? Yo en su lugar no les haría ni puto caso. Si quieren algo, consultoría al canto a precio puta.

martes, julio 28, 2009

scalability

Como podeis ver últimamente no escribo na de ná. Eso si, en twitter o en greader estoy siempre más activo.

Aprovechando una charla de Dave Currie (Tuenti) sobre escalabilidad, aprovecho para soltar un par de enlaces mas.
Un post de alex sobre el tema; y una web, highscalability.

jueves, julio 09, 2009

Cambio laboral


Vaya! esto está que como muy tranquilo.
El motivo es que estoy de cambio laboral, y antes de él me he tomado unos días de asueto (que vienen genial para desintoxicar el coco y arrancar con fuerza).

Y supongo que lo seguirá estando por un tiempo... o al menos supongo no podré actualizar muy frecuentemente. Tengo que ponerme las pilas con bastantes cosas.

Por lo demas, con expectativas, pero también con inquietud. Supongo que se me exigirá bastante y hay que dar el callo. Hay 'level' por aqui, por lo que he podido ver... Se intentará no defraudar :p. Por otro lado, tengo el handicap del Inglés (idioma oficial de curro). Vamos... que lo estoy desoxidando a marchas forzadas... :pp

Y por de pronto mas nada... Decir que estoy en un proyecto interesante y en una empresa totalmete atípica para lo que es el mercado IT español; concepto de empresa americana a tope... (con sus pros y contras).

martes, junio 09, 2009

pyCitas

Tengo la impresión de que Java fue diseñado para hacer que fuera difícil escribir mal código, mientras que Python está diseñado para hacer que sea sencillo escribir buen código.


-- Magnus Lycka



A falta de un nombre mejor lo llamaré la paradoja Python: si una compañía decide escribir su software en un lenguaje poco utilizado comparativamente, serán capaces de contratar a mejores programadores, porque atraerán sólo a aquellos que se molestaron en aprenderlo…
Hasta ahora sólo unas pocas compañías han sido suficientemente inteligentes para darse cuenta de esto. Pero hay una especie de selección natural trabajando: son exactamente las mismas compañías en las que a los programadores les gustaría trabajar. Google, por ejemplo. Cuando ofertan puestos para programar en Java, también piden experiencia con Python.


-- Paul Graham



Vía eFerro de aquí.

viernes, junio 05, 2009

Spring Python

Hoy me pasaba JJ un enlace, sobre Spring Python.
No sabía de su existencia...
He estado leyendo un poco. Se trata de una migración del framework Spring de Java a Python.
Por lo visto Spring fue ha sido un revulsivo en la comunidad Java, ya que puede servir como alternativa a los EJBs.

Así como las cosas mas interesantes que incorpora son AOP, IoC y MVC.
Esto me ha dado pie a empezar la mañana a leer alguna cosilla sobre AOP y IoC. Para refrescar.
En la web de Spring Python hay información,
Continuando y recordado una duda de la semana pasada he indagado un poquillo algunas cosas.
La semana pasada me preguntaron por los Arquitecture Patterns. Y tirando de memoria, tras un ejemplo, logré sacar de la manga el Pipeline. Es lo que tiene el mentar en el CV el tema de los patterns. Luego hay que apechugar...
El tema de los patrones es interesante, pero ya está muy asumido. Cuando apareción era un concepto novedoso y ahora los usas casi sin darte cuenta. Incluso que implementas las cosas usando patrone de una manera natural.
De todas formas no estaría mal, volver a echar una lectur al libro de la GoF. El problema es el de siempre, la falta de tiempo, ya hay que priorizar.

Relacionado con la Application Arquitecture tendríamos la Enterprise Arquitecture [martinfowler]. Es interesante la lectura del link anterior. Las pegas que indica de la Enterprise Arquitecture, lo he visto con mis propios ojos.... Montarte una paja mental para intentar extenderla por la compañia. Es realmente complicado.

¿Que pasa cuando estas centrado en el día a día, implementando tus movidas? Pues que es fácil irte olvidando de algunos conceptos.
Por ejemplo, ¿cuantos me podríais definir claramente lo que es un Programming Paradigm? ¿Y una methodology? ¿Y software design? ¿Y que define que un lenguaje sea OOP?
¿Lo tendrías claro en una entrevista? Deberías.
Ya para nota, ¿sabrías lo que es SoC (Separation of Concerns)?

Para cerrar el tema con lo mismo que he empezado esta divagación, enlazo un post: The case of AOP in python.
Y un par de enlaces relacionados con IoC: DI y DIP.

viernes, mayo 08, 2009

WebServices en .NET - curso .net (III)

Ayer estuvimos trasteando con los webservices.
Supersencillo! Pero bueno... como todas las cosas... que todo va bien mientras va bien.

Te creas un projecto del tipo servicio web, y ya VS (Visual Studio) te crea una template, con ya una operación 'hola mundo'. Lo adaptas y ya tienes tu propio servicio. Los métodos que son servicios (puedes tener en la clase, métodos que no lo sean) están etiquetados.

Posteriormente te creas otro proyecto (que puede ser una aplicación windows normal) y estableces la referencia web con el servicio y eso es todoo.

El servicio llegará un momento en que tendrás que desplegarlo en un IIS, pero VS te monta un servidor en local, donde corre el servicio.

Las dos cosas que me llamaron la atención fueron:
  • Si usas clases en el servicio, en él puedes usarlas normalmente, pero desde fuera de el sólo puedes acceder a atributos y propiedades públicos (y el único constructor válido es el de por defecto; que lógicamente tendrá que tener).
  • No vi ningun fichero XSD por ningún lado. Con ASP.NET, se genera un fichero .asmx, que de hecho si acceder a él en el servidor, te da información sobre los diferentes servicios y el formato de los datos intercambiados. Hay otro tipo de archivo, que se mencionó en el curso, el .aspx, que se corresponderían con los WebForms. El .wsdl ((guisdel) si que se genera. En contraposición, cuando he manejado webservices sobre java, aparte del wsdl se generaba el xsd.

miércoles, mayo 06, 2009

Curso de .net (II)

Tengo pendiente algun post sobre el tema de .net. Pero antes va un minipost.

Hoy tenemos una minipractica. Va a ser interesante el volver a diseñar una miniapp con windows. Desde los tiempos en que estaba en Meta4 y desarrollabamos con VB no habia vuelto a tocar los forms de windows.

Hacer apps con C# en windows está tirado la verdad. Con la ventaja de que C# es un lenguaje muchisimo mejor que el VB que usabamos entonces...
Lo que no puedo comparar es el entorno de M$ con los de Java, ya que no he desarrollado aplicaciones gráficas en Java.

Otra cosilla que quería comentar es que con C# se puede ser muy productivo. No ya por el lenguaje. En este caso la productividad te la da el entorno.
Python es un lenguaje muy productivo por el mismo. C# puede serlo menos, pero el entorno que tienes de desarrollo hace que realmente puedas serlo.
Habría que ver cuanto mas podrías mejorar en la productividad con python con un buen entorno. No lo se, ya que no lo he hecho. Estoy acostumbrado a hacer las cosas a manubrio. Todavía aro mis campos con burro :p.

Pensando sobre lo que hizo M$ con .net, está claro que la jugada fue realmente buena. Imaginaros que no hubieran creado C# y .net... ¿Que seguirían, con VC++ y VB? Estaba claro que tenían que sacar algo... y como no pudieron adaptar Java [autonota: indagar mas esto], tuvieron que crear su propio entorno y crearon un nuevo lenguaje.

Lo único triste de todo esto es que quien esté detras sea M$, y no le interese abrir mas las cosas, y si quieres desarrollar en .Net y C# tengas que hacerlo sólo (practicamente) para Windows.
Yo ni me plantearía desarrollar para Mono, hoy por hoy.
Pero M$ no puede tener otra postura que la que tiene; de otra forma Linux le comería mas pastel.
Lo que si que gana ahora con .net es una mayor compatibilidad entre versiones de windows. Es lo que tiene el programar contra una maquina virtual.

Nota: el profe al final ya no se fue tanto por las ramas... mejor! cuando se iba la liaba parda!

Corrigiendo nif/cif/nie en django

Abrí un ticket sobre este tema, pero me lo marcaron como dup, ya que existía otro, el 10204.
El 10204 tiene un parche, pero es erroneo. Como estoy metido en estos fregaos y la corrección es trivial he subido otro parche.

Ha sido mas coñazo montarse el tema para corregirlo que realmente hacer la corrección.
Para ello hay que bajarse el código del repositorio.

Como las pruebas las voy a lanzar con los tests de regresión es necesario preparar para ello el entorno. Aquí de dicen como.
Como fichero de settings, me hice una copia de .../conf/global_settings.py modificandolo según indican aquí (usé la primera entrada).

Una vez creado el fichero, me creé las siguientes variables de entorno:

export PYTHONPATH = $HOME/.../django/trunk
export DJANGO_SETTINGS_MODULE=tests.cesar_settings

Según lo anterior, el fichero cesar_settings.py lo metí en .../django/trunk/tests.

Para ejecutar los tests de mi interés hice:

runtests.py -v 2 forms

Que ejecuta muchos tests, a pesar de que a mi sólo me interesaba trunk/tests/regressiontests/forms/localflavor/es.py.
Tengo que indagar como ejecutar sólo eso si es que se puede....

Ya para acabar, indicar que algo mas de curro se puede hacer sobre lo que hay en django/contrib/localflavor/es.

martes, mayo 05, 2009

Validación nif/nie y cif

Tenía que implementar un algoritmo para localizar nif/nie y cifs en texto, y de paso comprobar que eran validos.
Como tengo costumbre pasaba de reinventar la rueda, pero la única implementación que encontré era erronea.
Pregunté en la lista de python-es.
En el hilo podeis ver una implementación que hice, y lo que me pasó Jesus y la implementación de django.
Tanto la implementación de Jesus como la de django son mas pythoneras que la mia, pero la mia funciona :p.

En django actualmente hay un ticket abierto para corregir la implementacion, el 10204.

En la wikipedia está muy bien cubierto el tema. Lo único que no comentan es sobre el caso de un NIE que empiza con la letra T. Lo único que he encontrado es:

"La ley establece que el NIF, en caso de personas físicas extranjeras con documentación del pais de origen podrá sustituirse por el número de identidad válido en su país de origen, precedido por una T. Por tanto y de cara a la validación: TODO NIF QUE COMIENCE POR T ES VÁLIDO, dado que el resto del NIF se rige de acuerdo a la legislación propia de cada país"

Se podría considerar que un NIE que empieza con T podría ser valido si sus 8 caracteres siguientes están en el set [A-Z0-9], pero no lo podriamos validar, ya que el algoritmo de validación lo desconoceriamos. No creo que esto ahora mismo se use...
Yo no los aceptaría, en principio, a no ser que realmente hoy en dia, todavía se de el caso.

Una implementación que he visto muy copiada es la de bulma. Lo mas interesante de la misma es la codificación del valor de retorno. Si el valor es <=0 estamos ante un cif/nif/nie invalido.
En caso contrario es válido y ademas nos indica ante cual de ellos estamos por el valor (0,1 o 2).

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.