Archivo de la etiqueta: python

Control de versiones: El bueno, el feo, el malo y el banquillo

Salvo que venga mañana una nueva tecnología disruptiva, creo que este articulo va aguantar un buen puñado de años.

Puede que no conozcas los sistemas de control de versiones, resumen rápido TE PUEDEN SALVAR EL CULO….MUCHAS…MUCHAS VECES.

Bueno en mi vida creo que he probado todos, pero todos, porque recuerdo una empresa de sistemas embebidos que usaba CVS en pleno dosmiles. Le tuve mucho cariño a SVN y me costo un poquito pasar a Git y viví la corta (fue cortisima, mas hemos tardado en asesinar a Flash o mas nos esta costando terminar de asesinar .Net otras mierdas de micro$oft) y cruel guerra de Git contra Mercurial …si algún otro perro viejo me dirá “…pero y Baazar…”, yo creo que nadie en su época apostaba ni un puñado de €uros por el…pero seguro que dentro de 10 años dirán…“pues que bueno era Baazar, que lástima, era la Abadía del Crimen de los sistemas de control de código”. En esa guerra, recuerdo que me posicione con mercurial por razones, muy tontas o curisosas, porque es Python (mas portable y con el lenguaje de moda) y en linea de comandos hg mola mas que git, porque era mas corto de escribir solo 2 pulsaciones, era el símbolo químico del mercurio. Pero bueno, hay que saber aceptar los cambios y adaptarte para seguir cabalgando en el código.

Después de el tochazo en plan abuelo cebolleta de los repositorios de código o control de versiones, volvamos al título.

“El bueno, el feo, el malo y el banquillo”

Hay que asumir que “el bueno”, es ahora mismo git, ha conseguido junto al binomio github, ser una herramienta de referencia para el mundo del software libre (si lo siento open source lovers, de pegatinas en portatiles mac blanco), ha tumbado y casi enterrado a Sourceforge , quién lo diría, para mi ha sido la misma guerra Google vs Yahoo, sourceforge se estaba llenando de mierda la página y github ERA simple, digo ERA porque cada vez esta también empezando a acumular mierda como board projects con el rollo kaban.

Y para el “el feo” y “el malo”, como buen director de cine os lo dejo a vuestra imaginación, en mi caso “el feo” sería Mercurial y “el malo” el BitKeeper.

Porque si no sabéis, venir a la chimenea mis pequeños programadores, ains chiquillos que os llamáis devops, cuando eso es ser como el pringadillo currante del telepizza que lo mismo coge la moto como cocina la pizza o limpia el wc…por cuatro perras como vosotros (y nosotros)….bueno ya estáis en al calor de la chimenea con el abuelo cebolleta. Os voy a contar una historia, en el pasado una de las piezas mas importantes de GNU/Linux, el nucleo Linux para coordinar todo el desarrollo de código, se usaba BitKeeper y os voy a contar una pequeña cosa y terrorífica…ERA SOFTWARE PRIVATIVO…pero el tito Torvals con sus grandezas y sus pedradas, decía que le sudaba la polla, hasta que les hizo una puñeta la empresa de BitKeeper y dijo tito Torvals “Fuck you Nvidia”…uy uy perdón el Alzheimer del abuelo cebolleta…realmente dijo “Pues me voy a crear mi propio control de versiones distribuido, con casinos y furcias…es mas paso del sistema distribuido…” y cogió una costilla de Richard Stallman he hizo Git.

El malo, el señor BitKeeper.

Y el banquillo. Están todos esos que han luchado por llegar al podium, mucho esfuerzo y sufrimiento para ser solo un nombre y la foto sean solo 3. En la carrera por el oro, plata y bronce tenemos:

  • las viejas glorias que siguen ahí luchando (o desisten como CVS que no hay versión nueva desde hace una decada) como por ejemplo SVN
  • los jugadores patrocinados por empresas gordas como Bazaar.
  • Y los inventos voladores raros, como los que surgieron en la 2º Guerra Mundial que tantos álbumes de cromos han dado. Ahí hay cosas tan bizarras como el “todo en 1” de Fossil.

Este articulo, lo ha motivado Freshcode.club el revival del mítico FreshMeat (otra historia de abuelo cebolleta) que no sabia que existía y lleva ya un par de años dando pelea. Y al contrario que github este es software libre…pero el repositorio de código esta en…chan…chan…chan….Fossil .

Y recuerdo cuando el señor Ramón hace años en nuestra conversaciones frikis, me contó la existencia de Fossil y lo friki que era, porque guarda todo en SQLite y tiene un frontend web y todo.

Y como el software libre se basa en colaborar, pues estoy intentando comprender Fossil.

Es curioso porque Fossil lo creo el inventor de SQLite el señor D. Richard Hipp, un poco siguiendo la estela 2 años después de Torvals, en plan yo me lo guiso y yo me lo como, y juntandolo con el rollo de Mercurial de demostrar que Python mola, en este caso SQLite.

Proyectos gordos que usen Fossil, solo hay SQLite.

Ya os iré contando mis experiencias con este desconocido, odiado…y no se si amado por alguien…control de versiones, me siento como si aprendiera Esperanto, algo friki y casi casi inutil. Pero oye muy noble, como podéis leer en la página Original author of Fossil here, with two comments .

Por cierto, para finalizar, por hablar de tecnologías disruptivas….¿Qué opináis de los inventos de Blockchain + git ? ¿Llegaran a algo algún día?

Cosas que odio de los lenguajes de programación

Nota: Llevo casi un año escribiendo de a poquito el articulo por el móvil y tal. Le he metido un empujón para que salga antes de terminar el año.

Ya son muchos años, soy un perro viejo en esto de picar código, posiblemente…tu lector puede que seas un tierno cachorrito lleno de ilusión…pero bueno ya te irás siendo un perro apaleado.

Dicen que “no hay bala de plata” a la hora de resolver un problema de programación, que cada lenguaje es bueno para una cosa, y creo que desde mis años perrunos opino que es cierto.

También dicen “cuando tienes un martillo entre manos, todo son clavos”, y eso veo que le pasa a los cachorritos, por ejemplo ahora (cuando estoy escribiendo estas líneas) esta de moda el rollo de node Js y javascript, y los cachorritos lo quieren usar para todo.

Pero bueno viendo algunos lenguajes, os voy a relatar mis odios mas ocultos…o no tan ocultos:

  • Perl: lo odio casi completamente, aunque si tuviera que odiar algo particularmente, es los sigils, que son esos pequeños simbolitos que acompañan a las variables para diferenciarlas de palabras reservadas y tal, que en lenguajes como PHP son muy útiles, básicamente porque solo hay el $ y resalta visualmente donde están las variables y te la libertad de usar $return sin problemas por ejemplo. Pero Perl es un infierno de simbolitos, que unos hacen que la variable sea un puntero o un array o un hash. ¿Alguien tiene una chuleta o cheatsheet con lo que hace cada uno y como se puede volver atrás….porque pasa como con los punteros en C que se te pierde la variable…pero mas raro?
  • Javascript: todo lo he escrito en el futuro pasado en Sigo pensando que javascript apesta, resumen no hay sleep, y es multihilo pero no te deja manejarlos. Añado que se esta llenando de capas y capas de abstracción en plan como java.
  • PHP: lo quiero es un fiel compañero que me ha dado de comer muchos años, pero como buen amigo tiene sus pequeñas manías que le respetas pero están ahí. A ver no nos llevemos las manos a la cabeza, pero PHP fue un lenguaje de programación inventado a caballo que refleja un poco los problemas del caos ordenado de la gestión de proyectos de software libre, y no es un lenguaje muy estandarizado su idioma, como el español con los verbos irregulares que sabiamente los niños regularizan pero los castran para que siga siendo así el español. Hay un documento o paper (como dicen los modernitos) muy famoso sobre el caos ordenado que es,  PHP: a fractal of bad design. Quizá lo que a mi me molesta es que no tenga hilos (pero por lo menos no los tiene de verdad, no como javascript que te los niega),  que sea de tipado dinámico las variables que te da problemillas (que han resuelto en el 7 pero que lo están volviendo un poco C). Bueno si hay una cosa si que odio es la lista de parámetros por defecto en las funciones te vuelve loco cuando solo tienes que meter el último y tienes que mirar el código fuente la función para poner a mano los anteriores, python lo arreglo esto bastante bien.
  • Java: la eterna promesa, es como medio novia que te traiciona una y otra vez pero vuelves a sus brazos, mi ultima vez fue cuando comenzó Android, creía que esta vez si…pero no otra vez la traición…sigue siendo un lenguaje que primero tienen sobrecargado el operador + para strings pero tu no puedes, con capas de capas de abstracción para causar erecciones poderosas en teóricos de la programación pero que no se manchan las manos a diario. Es un cristo programar en Android y encima parece que programas como el viejo asqueroso m$-visual basic te salen la aplicación visualmente fea y cuadriculada con miles de lineas y cosas complejas como que no puedes acceder al valor seleccionado de una lista o combobox sino que necesitas otro objeto iterador. He visto lineas de 300 y pico caracteres para abrir una base de datos y no se perderán como lagrimas en la lluvia porque las cárnicas (consultoras) que venden carne de informático al peso siguen con proyectos de mierda en java con miles de capas.
  • Python: que no tenga un switch (perl tampoco lo tiene) y te hace llenar el código lineas y lineas de if – else – elif …hay gente lo pregunta en stackoverflow Replacements for switch statement in Python?, por lo demás mas o menos no tiene mucho problemas, salvo el tema de los tipos mutables y no mutables que es un poco lio pero no mucho. Y bueno que tampoco hay manera de definir variables estáticas dentro de una función…que también lo comentan por stackoverflow What is the Python equivalent of static variables inside a function? . Parece que este lenguaje de programación ha sido tocado por el dedo de dios, me tengo que poner seriamente con django porque puede ser una alternativa a mi querido PHP.
  • C#: otro que odio del todo porque es un producto comercial de micro$oft que lo venden como un lenguaje de programación y es un feto mal parido hijo de m$ visual basic (si lo has sufrido veras que tiene mucha mierda parecida). Pero por desgracia se esta poniendo de moda gracias a Unity3D y parece que la siguiente versión de Godot va a incluirlo en su hermano gemelo libre Mono así que habrá que empezar a aceptarlo.
  • Resto: o ya no se usan o son tan producto comerciales que no merece gastar caracteres en este texto. Y C, ASM es como las matemáticas hay que aprenderlo y respetarlo por ser old school…C++ pues tampoco me pegado mucho para odiarlo.

Hay un wiki que también trata nuestros odios en los lenguajes de programación: YourLanguageSucks

Y vuestros odios sobre lenguajes de programación cuales son…comentad…confesar…calmad vuestra alma.

Cuarenta características de Python que quizás no conoces de Victor Terrón

He encontrado esta vieja conferencia de Victor Terrón…que aunque tiene 3 añitos, es simplemente espectacular. Si conoces un poquito de Python te va a ayudar a profundizar mas, si no…puede que te suene a chino o te quedes con la boca abierta de la potencia del lenguaje.

La hizo en el la PyCon Española del 2013.

Y la presentación la tienes en PDF en: http://2013.es.pycon.org/media/python-cuarenta.pdf

Siempre lo diré, Google tenia que haber metido Python en Android y no el asqueroso Java, es que encima tenia en nomina al creador del Python.

 

Los terminales tontos no se fueron nunca: SageMath

Hablando de R (link a la wikipedia) en el curro, recordé un proyecto libre que trae las mecánicas de terminales tonto (link a la wikipedia) de los años 60 o 70 en las universidades, a los tiempo de ahora.

Es un proyecto que nos descubrió un alegre matemático en una Hackmeeting.

Es SageMath (link a la wikipedia), lleva el modelo de los terminales tontos al mundo de navegador web por un lado y por el otro un megaservidor para procesar complejos formulaciones matemáticas (soporta otras cosas mas).

Es un muy buen proyecto libre para la gente disfrute de las matemáticas.