Django vs Rails

Octubre 16, 2009 por arequipe

Bueno, en realidad esto no es una comparativa seria, no voy a comparar capacidades ni nada de eso, sin duda las dos son buenas herramientas … al final creo que la mejor herramienta es la que mejor conoces  … si eres feliz con Visual Basic 6 y lo conoces en profundidad, posiblemente seas mas productivo que usando el mejor y mas nuevo framework de productividad.

Rails me encanta, tiene el ActiveRecord que es genial, las vistas, que son super potentes y un lenguaje realmente interesante.

Django tiene una gestión de la persistencia muy, muy buena … los templates son algo mas pobres que los de rails, mas limitados. La gestión de las URLs mediante expresiones regulares es sencillamente genial, python es un lenguaje que me apasiona, pos muchas cosas, pero principalmente por su simplicidad y elegancia.

Actualmente trabajo Django, pero bien podría usar Rails.

Pero las dos razones de verdad, las buenas, las que me han hecho decantarme por Django son:

1.- Es super productivo y la documentación es muy buena.

2.- Se ejecuta sin problemas en mi Acer Aspire One.

Se que la segunda razón es un tanto estúpida … pero me gusta llevar un ordenador de 200€ y muy ligero a todos los lados.

Rails es tan lento, requiere tantos recursos, que lo hacen imposible de correr en un ordenador poco potente. Una lastima.

En realidad cuando ves tanto la documentación como la estructura en sí … da la sensación que han sido creados por dos tipos de personas muy diferentes;

Rails … hackers amantes del punk y el heavy metal.

Django … hackers amantes de la pintura de Monet y la música clásica.

Los dos son genios, pero con temperamentos muy diferentes … o eso es lo que mi imaginación a inventado.

Facebook developer Garage

Octubre 13, 2008 por arequipe

Esta noche se ha celebrado el segundo Facebook develop Garage … al que ha asistido Mark Zuckerberg fundador de Facebook, un invitado de lujo, … La cosa ha sido lo siguiente, una presentacion de Martin Varsavsky vendiendo Fon, luego problemas técnicos … no ha funcionado ni el Power Point, algo tristisimo. Luego otro de Fon, … vendiendo la Fonera 2.0 … ha llegado corriendo, para mi que le ha pillado en el baño, mas precariedad y poca seriedad. Luego la presentacion de la gente de minube.com … lo mejor de la noche, pese a la mediocridad del entorno.Tras lo cual entró Mark Zuckerber, correcto en su presentación.

El evento ha sido flipante, realmente a merecido la pena haber estado allí, pero todo muy cutre.

Por cierto, he dejado un comentario algo mas suabe en Loogic.com, pero me lo han censurado, al final … los que apoyan la libertad en Internet pero al final el dinero es el dinero y hay opiniones que mejor no oir.

Rectificación: Loogic.com sí ha publicado mi comentario. Me trago mis palabras.

¿Por qué en España no hay ofertas para programadores Python?

Junio 26, 2008 por arequipe

Es algo curioso al observar graficas de influencia de los diferentes lenguajes de programación y que en España prácticamente no existan ofertas de trabajo especificas de programadores Python, justo en este momento donde hay tanta demanda de programadores.

Si alguien sabe la respuesta que por favor lo diga.

Una vez mas …. “Spain is different”.

TIOBE Programming Community Index for June 2008

Grafico usos de los lenguajes de programacion mas populares.

Fuente: TIOBE

Automotivación, mejorando la productividad.

Junio 26, 2008 por arequipe

Tengo que reconocer que me siento un poco victimista cuando hablo con otros sobre productividad. Es algo que los seres humanos llevamos dentro el intentar escusarnos y echar la culpa a otros de las cosas que estan mal. En especial, cuando se trata de productividad, siempre se echamos la culpa a los empresarios que no facilitan los mecanismos para mejorar la productividad.

En lo que se refiere a la actividad del desarrollo de software, que es de lo único que se un poco, creo que la productividad no solo es un reflejo de los factores externos sino de factores internos que bien pueden englobarse dentro de eso llamado factor humano. Hablo por mi experiencia personal y por las experiencias ajenas cuando hablo de etapas de desmotivación dentro del proceso de desarrollo. Durante esos procesos de desmotivacion se ve reducido nuestro rendimiento en el trabajo y lo que se conoce por productividad.

Los que ya han sufrido este problema reconocen en seguida de lo que estoy hablando. ¿Que hacer entonces?

- Fijarse una meta.

- Reservar periodos de reflexion.

- Reservar periodos de trabajo intenso.

- Intentar ser positivos y ver la vida con optimismo.

- Establecer controles que midan nuestro avance.

* Fijarse una meta: Es fundamental tener un objetivo y cuanto mas claro mejor, aquí se puede echar mucha imaginación, pero una meta que no me suele gustar, pero que es efectiva es el dinero. Querer tener mas dinero no es malo por si mismo.

* Reservar periodos de reflexión. Mirar a nuestro interior y ver que es lo que nos preocupa y que puede motivarnos. Muchas veces tenemos que parar en seco, saber donde estamos para continuar con mas fuerza.

* Reservar periodos de trabajo intenso. Este es nuestro objetivo, poder concentrarnos en el trabajo y ser mas productivos. Y para ello es necesario definir los tiempos y las circustancias. Es bueno buscar un entorno tranquilo y comodo y dejar un generoso periodo de tiempo libre de distracciones para poder concentrarnos en las tareas.

* Intentar ser positivos y ver la vida con optimismo. Muchos de nuestras inquietudes estan solo en nuestra mente. Hay cosas que sencillamente no se pueden cambiar, y otras que no se pueden acelerar por tanto lo mejor es ser optimista y pensar que las cosas van a mejorar.

* Establecer controles que midan nuestro avance. Lo que no se puede medir no se puede mejorar. Y si queremos mejorar nuestra productividad tenemos que saber que hacemos bien y que hacemos mal y para ellos son fundamentales los autocontroles, constantes y sistematicos.

Caracteristicas imprescindibles en un desarrollo.

Junio 26, 2008 por arequipe

Se ha escrito mucho … y mas que se escribirá sobre la calidad en los desarrollos de software. Es verdad es que hay un montón de florituras posibles a la hora de hacer algo funcional hacerlo una pieza de puro arte. No obstante, frente a la belleza u horror intrinseco de según que pieza de software creo que a la hora de afrontar un proyecto de desarrollo debemos de dotar a nuestro software de unas minimas caracteristicas. Caracteristicas que paso a lista:

- Multilenguaje.

- Log y control fuerte de errores.

- Instalación simplificada y autoconfiguracion (Al máximo posible).

- Extensible mediante añadidos.

- Diseño modular reutilizable.

Multilenguaje. Si un desarrollo tiene exito, tarde o temprano desearemos que el mundo disfrute de nuestro arte. Algunas veces la única forma de hacer crecer un proyecto.

Log y control de errores. Tanto para desarrollo como en entornos de producción saber que está haciendo nuestra aplicación es fundamental. Nos puede ayudar a mejorar las cosas y ha saber que partes no necesitan atención.

Instalación simplificada. Si nuestro producto es dificil de instalar, perderemos mucho tiempo y dinero dado soporte, pero aun perderemos mas viendo como la gente no lo utiliza.

Extensible mediante plugins. Fundamental asegurarnos de que podremos ampliar la funcionalidad una vez el producto esté en uso.

Diseño modular. Si hemos hecho las cosas fundamentales bien, nuestro producto tendrá exito, la gente lo usará y demandarán mas cosas, cambios, mas funcionalidad mas usuarios y será muy facil escalarlo si hemos hecho un buen diseño modular.

Una vez que hemos incluido estos requesitos en nuestro proyecto, … ya podemos empezar a programar.

Conexión con base de datos desde Python.

Abril 25, 2008 por arequipe

Por mucho tiempo que se lleve uno en el mundo de la programación siempre que se aprende un nuevo lenguaje de programación (en mi caso Python), siempre hay que volverse un poco loco seleccionando las herramientas que te permiten hacer las cosas que ya sabes. Me refiero a que seguramente, querido lector, usted ya sabe como hacer conexiones con bases de datos desde Java, .NET, VB o cualquier otro lenguaje, normalmente esto es de las primeras cosas que se aprenden.

Python no es una excepción y esto es algo básico, pero hay que aprenderlo. En las siguientes lineas intentaré mostrar las claves para no perderse en este tema.

Primero de todo, Python tiene un mecanismo para acceder a las bases de datos llamado DataBase API ó mas conocido “DB-API”. Este es un estandar y para conectarse es necesario instalar un módulo para conectarnos a la base de datos deseada.

En otro post entraré en el tema de como acceder a una base de datos usando DB-API, por ahora me conformo con mostrar los diferentes modulos para conectarnos con bases de datos Microsoft SQLServer.

Opciones disponibles:

Leer el resto de esta entrada »

10 lecturas obligadas de Python.

Abril 21, 2008 por arequipe

Como ya he manifestado en varias ocasiones, creo que Python es un lenguaje genial. Leo via wordaligned.org/ una lista de las 10 lecturas obligadas de todo aquel que quiera iniciarse en el mundo de Python (Corto y pego):

  1. The Zen of Python (link)
  2. Python Tutorial (link)
  3. Python Library Reference (link)
  4. Python Reference Manual (link)
  5. The Python Cookbook (link)
  6. Code Like a Pythonista: Idiomatic Python (link)
  7. Functional Programming HOWTO (link)
  8. Itertools functions (link)
  9. Python library source code (link)
  10. What’s New? (link)

 

Frase genial

Marzo 13, 2008 por arequipe

Leo en microsiervos la siguiente cita:

“¿Que por qué los videojuegos están mucho mejor diseñados que los programas tipo Office? Los videojuegos están diseñados por gente a la que le encanta jugar con ellos. Los programas como Office están diseñados por gente que querría hacer cualquier otra cosa durante el fin de semana.”

– Atribuida a Ted Nelson
(Vía davidgp)

Herramientas de productividad para el desarrollador.

Marzo 12, 2008 por arequipe

 Llevo algún tiempo usando una herramienta de productividad y estoy la mar de satisfecho. Se trata de las MZ-Tools. Es un Add-In para Visual Studio que permite añadir un montón de funcionalidad extra a Visual Studio.

La verdad es que tiene un montón de cosas muy interesantes, algunas de ellas muy avanzadas.

Personalmente lo que mas utilizo es:

  • Las plantillas de código (cómo se puede vivir sin esto, lo empezé a utilizar con IntelliJ y despues del multiorgasmo … el mejor invento de la humanidad).
  • La generación de los capturadores de excepción, revisa las excepciones posibles y crea el try/catch adecuado …
  • Un montón de asistentes para crear propiedades desde variables, cajas de mensaje, … el generador de cadenas de conexión es genial (Adios Google).
  • El búscador de código es muy muy bueno.
  • Con respecto al diseñador de formularios te ahorra un montón de tiempo.
  • La generación de los comentarios, permite generar un montón de documentación con solo hacer clic, sin escribir nada. Una de las cosas que mas me gusta es el generador de la documentación del proyecto. Hay otro producto que me gusta también, SandCastle, es muy bueno, pero es mucho mas complejo. Con las MZ-Tools, puedes generar toda la documentación técnica del proyecto automaticamente. Muy útil cuando tu jefe te la pide, para despues no hacer nada con ella. En un segundo la tienes generada y actualizada.
  • El tema de ls revisiones de código no lo he explotado bastante pero para hacer auditorias a nivel empresarial es super útil.

Leer el resto de esta entrada »

El Tornillo, un cuento tecnológico.

Marzo 12, 2008 por arequipe

Me ha enviado mi amigo Carlos Perez una presentación con un cuento con una moraleja muy interesante (No se de donde la ha sacado, pero si tienen mas me gustaría que las compartiera):

Primera paguina presentacion cuento.

El cuento es el siguiente:

Algunas veces es un error juzgar el valor de una actividad simplemente  por el tiempo que toma realizarla…

Un buen ejemplo es el caso del ingeniero que fue llamado a arreglar Una computadora muy grande y extremadamente compleja… una computadora que valía 12 millones de dólares.

Sentado frente a la pantalla, oprimió unas cuantas teclas, asintió con la  cabeza, murmuró algo para sí mismo y apagó el aparato.

Procedió a sacar un pequeño destornillador de su bolsillo y dio vuelta y  media a un minúsculo tornillo.

Entonces encendió de nuevo la computadora y comprobó que estaba trabajando perfectamente.
Leer el resto de esta entrada »

Alternativas al ASUS PC EEE I

Marzo 12, 2008 por arequipe

Buscando un poco he visto algunas alternativas al ASUS PC EEE que parece que se hace de rogar por estas latitudes.

He encontrado que Fujitsu-Siemens, una marca de la que soy usuario y de cuyos productos estoy la mar de satisfecho, vende portatiles de verdad a precios muy competitivos, como ejemplo tenemos el ESPRIMO Mobile V5535, por 322,64 € (Sin IVA) en http://www.audiotronics.es/product.aspx?productid=50966

Ordenador barato.

Una buena opción para los que no quieren gastarse mucho dinero, o no pueden, y aquellos que no necesitan grandes prestaciones. Además un buen detalle es que lleva preinstaldo Linux creo que la versión Knoppix (que desconozco).

En http://www.audiotronics.es/products.aspx?categoryid=3539 podeis ver un listado de los portatiles con Linux preinstaldo que vende en esta tienda distribuidora de Fujitsu-Siemens.

Un amable camarero chino cantante :-)

Marzo 11, 2008 por arequipe

El joven primero nos sirvio una ensalada, unos embutidos, unos calamares a la Romana y unas bebidas, luego desaparecio un minuto y visto y no visto en uno de los momentos mas bizarros de nuestras vidas comenzo a cantar tal y como se puede apreciar en el video. Luego se arranco por Titanic, ese video lo dejo para otro momento:

Las ofertas de HP.

Marzo 11, 2008 por arequipe

Soy cliente de ONO, tengo teléfono, internet y televisión y no puedo estar mas encantado con ellos. Internet me va genial y por lo demás no tengo ninguna pega. Algún día contaré como llegé a ser cliente de ONO gracoas a los de Telefonica .

Hoy me ha llegado una publicidad de ONO a mi buzón, el el me informan de que como cliente tengo un 10% de descuento en los productos de la tienda www.hp.es/ono. La he visitado por curiosidad y, por si hay algo interesante, nunca se sabe.

He visto algunas cosas que me han llevado a la duda, dejo algunas capturas que he tomado de los precios, como se puede apreciar, nos informan de que en la calle el precio es mas barato … por lo menos tienen decencia y la honestidad … y posiblemente algún fallo en algun eslabon de la cadena de ventas:

Oferta de HP

¿Está Apple yendo al lado oscuro?

Marzo 8, 2008 por arequipe

Hoy la noticia del día ha sido sin duda el lanzamiento al público en general del nuevo SDK para el iPhone y el iTouch.

Personalmente no me parecen los mejores productos del mundo. Paso demasiadas horas delante de un ordenador, para necesitar ordenadores de juguete como el iPhone o el iTouch. No tengo demasiada manía a esos productos pero personalmente no me parecen los mejores ni los más necesarios. El iPhone es un ladrillo y además no es 3G.

Imagen sdk apple iPhone

Leer el resto de esta entrada »

Videos instalación Python.

Marzo 6, 2008 por arequipe

He encontrado en Youtube una serie de videos sobre de Python. Este es uno de instalación bastante completito:

Ranking de los 50 blogs mas influyentes.

Marzo 5, 2008 por arequipe

Leo en Microservios una entrada sobre un Ranking de los 50 Blogs más influyentes. http://blog.wikio.fr/2008/03/top-50-mondial.html
Yo tengo mis preferencias personales, y posiblemente desde el plano de la influencia sea un ranking justo, sobre el tema desconozco la forma como han realizado el ranking, sinceramente me da igual.

Sinceramente el Blog que mas me gusta es Xataka. Muchas entrada, muy buenas y unos videos de revisiones de productos muy decentes.

Trabajo horizontal y vertical II.

Marzo 4, 2008 por arequipe

En una entrada anterior he hablado sobre lo que para mi es el trabajo horizontal y el vertical.

Ahora me gustaria hablar sobre la influencia de estos en el desempeño de nuestras tareas, cuando escribo estas palabras estoy pensando en terminos de desarrollo de software, no obstante creo que es extrapolable a muchos otros aspectos.

Para la conclucion correcta y satisfactoria tanto tecnica como personal de un proyecto de software es necesario un correcto equilibrio del pensamiento horizontal y vertical.
Por un lado es necesario elegir las herramientas y tecnologias necesarias para iniciar el proyecto y dotarlo de las herramientas para poder terminarlo. Para ello es necesario que se dedique un porcentaje razonable del tiempo a examinar las tecnologias y a definir la infraestructura. Todos a cierto nivel tenemos que hacer esto por nosotros mismos, es posible que en nuestro equipo de trabajo ya tengamos a una persona encargada de definir todos esos conceptos, en este caso, mejor que mejor, ya que parte del esfuerzo nos lo podemos ahorrar. Pero si no es así y tenemos que definir nuestras propias herramientas hay que tener una serie de factores en cuenta:

Leer el resto de esta entrada »

Trabajo horizontal y vertical I.

Marzo 4, 2008 por arequipe

Llevo algún tiempo meditando en ciertos habitos y formas de trabajo que he ido descubriendo con el tiempo. Al menos en mi faceta de programador he detectado que independientemente de la tarea o trabajo que esté realizando hay dos fases diferenciadas.
Estas son una fase horizontal, y una fase vertical.
Cuando hablo de una fase horizontal me refiero a un trabajo en el que se intenta abarcar un campo en su totalidad o almenos en sus aspectos mas importantes, buscamos, examinamos cada una de las posibilidades intentando abarcar cuanto mas campo mejor.
Por otro lado hay una fase de trabajo vertical, en el que nuestra mente se libera de la apmplitud del campo anterior y se concentra en una tarea y profundiza en ella hasta encontrar la solución.
Leer el resto de esta entrada »

Algunos libros online sobre Python.

Marzo 3, 2008 por arequipe

Algunos recurso en linea sobre Python.

Dive into Python:

http://diveintopython.org/index.html

How to Think Like a Computer Scientist:

http://openbookproject.net//thinkCSpy/index.xhtml

Que aproveche.

Seducido por Python

Marzo 3, 2008 por arequipe

No se si a los demas les pasa lo mismo que a mi, pero despues de un tiempo haciendo la misma cosa termino hasta las narices por cansarme y necesito buscar cosas nuevas que hacer. Una de mis aficiones es la programación y por suerte o por desgracia para mi, me pagan por ello. Intento ser lo mas profesional posible en mi trabajo, pero normalmente llega un momento en el que el tedio te puede y uno tiene que mirar a otros sitios, a otras tecnologias para hacer un poco mas llevadera la existencia como programador.

En mis ratos de ocio me he topado con Python un lenguaje de programación, ni mejor ni peor, pero con algunas cosas que le hacen muy interesante y que puede convertirse en algo mas que un jugete en manos expertas. Despues de casi un mes leyendo la documentación y trasteando con las diferentes implementaciones de tecnologias asociadasy con el lenguaje en si mismo, me veo con fuerzas y ganas de iniciar un nuevo proyecto en este lenguaje.

En concreto hay varias cosas del lenguaje que personalmente me atraen:

  1. Es un lenguaje interpretado (aun que con py2exe y py2app, se pueden crear distribuciones binarias de las aplicaciones sin muchas complicaciones, vamos … que funciona y es sencillo de usar), me gustan los lenguajes interpretados por que no es necesario perder tiempo en compilar y puedes dejar cosas a medias sin que te mueras a errores del compilador, mientras sea sintacticamente correcto.
  2. Es un lenguaje relativamente sencillo y facil de usar, es muy legible y se aprende facilmente.
  3. El uso de librerias externas es sencillo y hay migradas un monton de buenas librerias.
  4. Hay distribuciones del entorno en otros lenguajes .Net (IronPython), Java Jython, el propio pyton PyPy. Lo que significa que es integrable en dichas plataformas (Personalmente me gusta CPython en C).
  5. El soporte de las nuevas tecnologias es relativamente bueno, teniendo en cuenta que es un lenguaje no tipado e interpretado, estoy pensando en la generacion automatica de WSDL como en otros lenguajes tipados en los que es facil hacer herramientas que lo generen automaticamente.
  6. Unas librerias graficas muy potentes, bundles para QT (pyQT), Tkinter y mi preferido wxWidgets antes wxWindows (wxPython). Estos entornos estan programados en C/C++ y son llamados desde Python lo que hace que su ejecucion sea muy eficiente.
  7. Puede ser todo lo sucio y guarro que se quiera asi como todo lo retorcido que lo puedas imaginar. Puedes hacerle las burradas que te de la gana.
  8. El codigo es muy compactoy el numero de lineas generadas no es muy grande.
  9. Es muy ligero y se puede programar grandes cosas en maquinas pequeñas.
  10. El interprete esta portado a un montón de lenguajes.
  11. Hay buenos IDEs gratuitos, Boa constructor, etc … vim, emacs.

Hay cosas de el que no me gustan tanto, pero eso lo reservo para otra entrada. Mi consejo es; Amiguito, si te gusta programar, instala Python y tendrás horas y horas de diversión.