Archivo de la etiqueta: software libre

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.

2 issues que he abierto en github y me siento orgulloso

Bueno esto es un blog ¿no? Pues voy a hablar de mi, ale un poco de egocentrismo digno de esos tiempos blogueriles del pasado…ahora la gente egocéntrica esta en redes sociales…mas fácil y un goce mas instantáneo…

Los issues o bugs que registramos en por ejemplo en los proyectos de software libre dentro github, es una forma de ayudar a los proyectos, el software libre en lo una de las muchas cosas que destaca es en solido como una roca, y es gracias a la gente que vamos diciendo oye que he encontrado un «problemilla» o «problemón», y todo eso se apuntan en páginas llamadas bugtrackers (seguidores de bug).

Y en otra cosa que destaca el software libre es en la cercanía a las necesidades de la gente, y eso es por medio de «wish» o deseo, que normalmente caen también en los bugtrackers, porque algunas veces los usuarios somos un poco caprichosos o tontos y pensamos que un deseo es un problema, pero tranquilos que normalmente se categorizan por alguien que revisa.

Pues aquí mi pequeña lista de bugs …o wish que he abierto en github que representan un tema interesante:

  • DoomRL (o ahora llamado D*mRL) se ha liberado hace apenas unas semanas, es un gran roguelike de estos para empezar con esta secta satanica de género.
    • How to make the GNU/Linux binary? : Pues este es el bug, pese a que si tenían versión para GNU/Linux, si coges el código fuente tal cual…¡¡no compila!! Lo bonito de este bug es que demuestra el musculo del software libre porque hay mucha gente echando una mano a ver si conseguimos el binario….puede que tu seas el caballero que saque la espada de la piedra.
  • OpenRCT2 es el engine libre para ese genial juego de estrategia comercial el Roller Coaster Tycoon (el 2 que es un 1.5), ha sido espectacular ver este último año como empezaron con un código descompilado sucio lo están convirtiendo en algo legible y reparando y mejorando, siguen una estela de otro proyecto que trajo un gran juego a GNU/Linux del mismo desarrollador original del cerrado el juego estrategia comercial de transportes OpenTTD,
    •  is there a repository for Free Assets? : aunque esta cerrado y mas que un bug es un wish, es una cosa que había que decir en público y me oyó la gente. Y es que ya el código esta al 100% libre pero los ficheros datos del juego es necesario tirar de pirateo u original, y lo importante es que el juego pase a ser libre total como su hermano de los trenes.

Y bueno amigos y amigas, no tengáis vergüenza a decir vuestros problemas…en el software libre, ayudará a madurar mucho al proyecto.

Chuleta de tmux

Tmux es una excelente herramienta para trabajar cómodamente con la terminal en GNU/Linux, lo que hace es darte como darte en forma de terminal una especie de escritorio (como Mate, XFCE, LXDE…) pero en plan tiling o paneles en vez de ventanas (como el editor Atom, o el programa de 3D Blender, o el escritorios de paneles Awesome, i3), e incluso el tmux trae un sistema de escritorios virtuales cosa muy útil que me asombro cuando descubrí GNU/Linux hace años.

Y todo ello mouseless que esta tan de moda porque «aumenta la productividad».

También esto es una autochuleta porque nunca me acuerdo de todo los atajos de teclado de tmux, y no estan todos, si no los que mas útiles me parecen a mi.

Por cierto, el que me embarco a empezar a usar tmux, fue el tutorial de Santiago Romero sobre tmux y un ex-compañero de curro Ramón que lo usaba efusivamente.

Bueno vayamos con la chuleta:

  • Panel = «Ventana tmux»
  • Ventana = «escritorio tmux»
  • Solo hay un panel activo y tiene el  borde marcado a verde.
  • Solo hay una ventana activa y aparece marcada en «la barra de tareas» abajo con un * .
  • Paneles
    • ctrl + b: para empezar  a mandarle comandos al tmux, todas empiezan así y después es pulsar otra tecla o combinación.
    • esc: cancela el modo comando tmux por si te has liado y quieres volver a empezar.
    • ctrl + b ?: muestra un listado de los comandos.
    • ctrl + b %: divide el terminal actual en dos paneles en vertical, dejándote en el mismo path y todo, pero no lo que este en ejecución ni su salida.
    • ctrl + b «: divide el terminal actual en dos paneles en horizontal.
    • ctrl + b (cursores dirección): te cambia de panel activo, si pulsas izquierda al que esta a la izquierda y así con todas las direcciones, es rotativo si estas en la mas arriba empieza en la de abajo.
    • ctrl + b q: muestra unos números grandes que identifican a cada panel durante un segundo mas o menos, si pulsas el numero vas a ese panel (solo funciona con números del 0 al 9).
    • ctrl + b ctrl + (cursores dirección): estrecha o amplia el panel activo, es decir si pulsas hacia la izquierda y es el derecho lo agrandas estilo como las ventanas cuando tiras del borde con el ratón.
    • ctrl + b x: cierra el panel actual.
    • ctrl + b z: amplia el panel actual a toda la pantalla, volver a pulsar para volver a ver el mosaico de paneles.
    • ctrl + b [: entra en el «modo buffer» en el panel actual porque si no te has dado cuenta has perdido las barras de desplazamiento de tu ventana (del escritorio) del terminal, para salir pulsa q o esc.
  • Ventanas (estilo escritorios virtuales repito)
    • ctrl + b c: crea una nueva ventana, te pone como activa y veras abajo que la añade a la lista de ventanas.
    • ctrl + b <numero>: cambia a la ventana con ese número.
    • ctrl + b !: crea una ventana nueva del panel actual, ¡ojo! no hay vuelta atrás.
    • ctrl + b &: cierra la ventana actual con todos sus paneles, pregunta abajo en la barra de tareas.
  • Para trabajar en remoto con servidores
    • ctrl + b d: sirve para «desenganchar» el tmux actual, se queda en ejecución con todos sus paneles y ventanas.
    • ctrl + b s: lista todos los tmux que hay en ejecución para engancharte, ¡ojo! que al desengancharte del actual vacío para engancharte a otro te lo deja ahí y la lista cada vez se hace mas gorda.
    • tmux list-sessions: desde el terminal antes de ejecutar tmux, para listar los tmux abierto, mejor que el de ctrl + b s.
    • tmux attach -t <numero>: engancharte a un tmux vivo sin crear uno nuevo.
  • ctrl + b : :entra en modo estilo vi y puedes escribir por ejemplo kill-session para cerrar todo el tmux actual.

Mi siguiente paso es aprender a usar bien bien, el escritorio tileado/mosaico como I3 para buscar la máxima comodidad y quitar comerecursos.

¿Esta muriendo Sourceforge?

Es algo que la gente se esta preguntando desde que GitHub se esta comiendo el terreno.

Pues lamentablemente si se esta muriendo,

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.

 

Otro puñado mas de artículos sobre autómatas celulares

Vía el decadente elefante naranja, en su cocina, he encontrado un meneo sobre autómatas celulares con los siguientes links:

Y el articulo previo que escribí por aquí fue: A vueltas con los autómatas celulares

Hay un comentario que me encanta en el elefante naranja en horas bajas, que lo copio por aquí:

Siempre utilizo este ejemplo como referencia mental de ‘complejidad emergente’. Como a partir de reglas muy simples aparece una complejidad que podemos observar en la naturaleza, y como buen ejemplo de la no-intencionalidad que dirige los procesos evolutivos ; patrones complejos que nos cuestan entender sus principios ‘sencillos’. Por: sangaroth

#Freebassel: Hoy hace un año de la siguiente noticia

Mi agenda me ha recordado que hay un desarrollador de software libre condenado a muerte en Siria, en concreto esta es la noticia de hace un año: Syria secretly sentenced free software developer Bassel Khartabil to death

Y el problema es que no ha mejorado, este hombre sigue encarcelado con la pena de muerte sobre su cabeza.

En el articulo de wikipedia tenéis mas información Bassel Khartabil.

Pero no se, poca esperanza tengo, porque el mundo va cuesta bajo de culo y sin frenos con toda la mierda de alrededor Trump en USA, Mariano en Españistan, Julian Assange encerrado en una embajada, Chelsea Manning encerrado también, Edward Snowden supongo que cagado de miedo porque el amigo de Putin ha ganado las elecciones en bastardos unidos …

Por favor, por lo menos no olvidemos.

Acabo de tener una relevación en plan Matrix sobre los tabuladores

Toda la vida he pensado que los tabuladores existen, que son reales que cuando  los veo en un editor de código ahí están dejando todo bien ordenadito y organizadito…muchos editores como Geany te avisa que son 4 espacios.

Pero ahora que en mis momentos de meditación en el trono de roca los dedico a la noble tarea de aprender ensamblador y código maquina del microprocesador que representa la década de los 80, nuestro querido Z80. Estoy re-empezando (en el pasado tuve un flush) o mas bien mas veo las letras verdes detrás de cada letra escrita o de cada pixel. Y cuando ponemos en plan bonito:

#include <stdio.h>

int main(int argc, char **argv)
{
	printf("HELLO FUCKING WORLD\n");
	
	return 0;
}

Eso no esta tan bonito en el fichero resultante, porque el tabulador es 1 carácter, lo que parece tan ordenado, sigue siendo feo debajo, sigue siendo como cuando destripas un animal y tiene los intestinos retorcidos en su barriga.

Quedaría nuestro código destripado como:

#include <stdio.h>

int main(int argc, char **argv)
{
 printf("HELLO FUCKING WORLD\n");
 
 return 0;
}

Y claro ahora que sabes la verdad, como el señor Neo…»¿Quieres, quiero seguir viviendo en Matrix?», levantándome cada día programando ordenadito y claro para saber que es una mentira que nos dan los editores de texto. Es que algunos editores hasta te los pone los tabuladores alineados al final de algo anterior de la linea para cuando tienes lineas como:

/****************************************
*					*
*	Mi función pitifloro,		*
*	que hace florecitas azules	*
*	Parámetros:			*
*		flor: tipo de planta que*
*			quieres		*
*			para tu jardín	*
*		tonalidad_azul: azul PP	*
*			o azul como el	*
*			gato.		*
*					*
*****************************************/

Y es que como Judas representado en Cifra que vendió a todos en la peli, tenemos el problema que la verdad es asquerosa porque:

  • ¿Ponemos 4 espacios por cada tabulador de mentira?
    • Pros
      • Es mas real, lo que vemos es lo que escribimos.
    • Contras
      • Pulsar 4 veces el espacio.
      • Que no se nos olvide cuando son mas vas veces (8, 12 o mas) y al final quede guarro el código.
      • Cuando quieres dejar alineadas las lineas a algo de la anterior, no es múltiplo de 4.
      • Ocupa 4 veces mas que un tabulador en el fichero.
  • ¿Ponemos 2 espacios por cada tabulador de mentira?
    • Pros
      • Es mas real, lo que vemos es lo que escribimos.
      • Es mas fácil de seguir la regla, dos pulsaciones «placa placa».
      • No se desmadra muchos un montón de lineas porque o es impar o par y es una dupla mas o menos.
    • Contras
      • No queda tan identadas las lineas para que sean vistas bien a primera vista los bloques de código.
      • Ocupa 2 veces mas que un tabulador en el fichero.
    • ¿Ponemos 1 espacio por cada tabulador de mentira?
      • Pros
        • Es extremadamente fácil seguirlo, una pulsación solo.
      • Contras
        • No se nada de ve bien los bloques de código.

Y ahora diréis…»¿Qué hacemos?»…pues no se ahí tenéis la información cada uno que escoja su camino…yo creo que seguiré en la Matrix de los tabuladores…no se..no se, amistades jóvenes de sangre nueva de estos de node.js y moderneces, usa 2 espacios, cuando me lo dijo me escocia y me salían granitos…pero empiezo a comprender su postura…

Drakon: Diagramas de flujo soviets, porque en rojo mola mas

Creo amable lector que sabes que vivimos en una mentira, cosas supuestas como que la «2º Guerra Mundial se gano por los americanos» gracias a su propaganda en cine cuando se sabe que fue el esfuerzo de la URSS, como que el «1º en llegar a la Luna fueron los americanos», cuando los soviéticos tenían ya allí un robot parecido a los que mandamos a Marte y no contamos que fueron los primeros en el satélites artificiales y seres vivos.

Pues todos conocemos los típicos gráficos de flujo que siempre hemos visto, y la gente ochentera hemos masticado para aprender a programar.

Pues del otro lado del telón de acero, los científicos e ingenieros también trabajaban, y crearon el o estandarizaron su propio diagrama de flujo llamado Drakon …joder encima con un nombre épico.

Que tiene como ventajas frente al americano/europeo:

  • Es mucho mas organizado.
  • Es mucho mas claro visualmente, es la máxima, intentar que se lea bien.
  • Tiene «implementado» programación métodos, funciones y programación en paralelo.
  • Sleeps, es que caguen hasta el diagrama de flujo lo tiene y Javascript no….me cago en mi pena negra.

Para conseguir que sea claro, la dirección de ejecución del programa es siempre hacia abajo y de izquierda a derecha, también indica que las distintas cajas y lineas sean siempre iguales en tamaño y distancia en todo el diagrama.

Y el resto de el estándar soviético de diagramas de flujo Drakon puedes aprenderlo en el siguiente vídeo.

Y por supuesto en el mundo del software libre como buenos perroflautas masones comunistas ateos que somos, tenemos software para hacer diagramas Drakones para conquistar el mundo.

  • DRAKON editor: es un editor muy usable que incluso exporta el diagrama a varios lenguajes de programación.
  • Lo raro es que Dia Diagram Editor, un viejo y buen programa de GNU/Linux no tenga un set de gráficos para Drakon.

Videoconsolas libres

Ayer hablábamos de videoconsolas virtuales y sus alternativas libres (en el articulo Pico-8 no es software libre, pero hay alternativas libres), hoy vamos a salir de esos emuladores de consolas de fantasía, para meternos en la fantasía del hardware libre.

Arduinocade

Basándose en un Arduino y tuneandolo un poco y fácilmente, poniendole un «nuevo reloj» para que corra casi a 30mhz y después sencilla circuitería para conectar gamepad puedes tener una consola de 8 bits muy impresionante, el proyecto salio por hackaday hace un año mas o menos en su articulo Retro Games on ArduinoCade Just Shouldn’t Be Possible. Y que podéis ver en el siguiente vídeo:

Uzebox

Otra consola libre, que lleva desde el 2007 dando guerra, bastante mas potente que la Arduinocade, tiene mas colores en pantalla con lo que le da una sensación de videoconsola mas cercana a la NES que  la Atari , pero mas difícil de montar aunque tenéis mucha información incluida la wikipedia hispana en https://es.wikipedia.org/wiki/Uzebox  . También se basa en un micro de atmel (están en todos los lados). Y podéis asombraros de la buena pinta que tiene en los siguientes vídeos.

Y finalmente tienes las FPGAs pero que son bastante caras y de momento solo hay ¿cores? para consolas clásicas como la master system, nintendo 8 bits, etc.

Ouya, GP32 (y hermanas mayores), las dejo fuera porque son consolas abiertas pero no hardware libre, si acaso en un paso mas intermedio esta la RaspBerry Pi donde si hay mucho software y videojuegos libres pero el hardware no es abierto.