Archivo de la categoría: Tecnología

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.

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

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.

 

 

Pico-8 no es software libre, pero hay alternativas libres

Parece que Pico-8 gracias a Pocket C.H.I.P. se ha puesto de moda, pero la gente anda un poco confundida y como no es plato de buen gusto el rollo «videojuego en Unity3D opensource» o como se decía antes «videojuego en Flash opensource».

Vamos a aclarar sin mucha lejía, primero como supongo que andas vaguete no habrás clickado en los links, Pocket C.H.I.P es una especie de videoconsola portátil / ordenador basado en ARM muy parecido a lo que hace años fue el Ben NanoNote pero con un rollito crowdfunding de ese de ahora y menos libre que el Ben (la CPU del Ben es Hardware libre), corre un GNU/Linux y trae entre otras cosas los binarios de Pico-8.

pico8-on-pocketchip-celeste-by-matt-thorson-noel-berry-credit-michael-bucuzzo

Y ahora te preguntaras que es el Pico-8, pues aunque parezca nombre la eneava parte de una peli de kinkis ochentera española, es «una videoconsola/microordenador virtual», a ver me explico, un buen día el respetable programador japones que invento el videojuego Voxatron pensó «porque no hago un emulador de una videoconsola de 8 bits muy kawai y pixeleda con colorines». En vez de basarse en una consola real, una gameboy o una megadrive o yo que se, pues el tío en un alarde de originalidad (que no hay tanta como leeréis mas adelante) se invento una consola de fantasía que no existe llamada Pico-8, una consola bastante capada en hardware (baja resolución,  sonido…) pero que se programa en un subconjunto del lenguaje de programación brasileño mas famoso, Lua. Y el buen hombre se dedico a vender su emulador para distintos sistemas operativos, dejando una versión (que no se si es completa) del emulador en javascript+html para que la gente pudiera ofrecer sus videojuegos a los navegantes. No se, porque pero de repente hubo una moda muy fuerte entre los indies por el Pico-8 y empezaron a hacer juegos como churros, lo que fue una bola de nieve que ha crecido sobre este emulador de una consola inventada inexistente. Que ademas de no ser software libre, no por que lo venda, si no por no ofrecer las fuentes, aunque sea un API abierta, no es nada original porque en los 70 ya se invento algo parecido llamado CHIP-8 en este caso para facilitar la «port-eación» de videojuegos entre distintas maquinas de aquella época. Como nota curiosa, los «juegos» de Pico-8 se distribuyen en ficheros de imagen PNG con la imagen del cartucho en plan ochentero pero dentro tiene el código ejecutable y los datos, no se si embebidos como metadatos o están en «estenografía»…vamos mezclados con los bytes de la imagen, la verdad es que queda muy resulton y da ese tilín nostálgico.

pico8_main

Creo que ya has visto que estamos en la situación de plataforma cerrada (aunque sea emulada) y ahí nuestros amigos los hackers tomaron los teclados por banda para empezar a solucionarlo.

PicoLove: si Pico-8 es Lua…porque no picar usando como referencia el API de la maquina una versión con Löve, un genial engine de videojuegos multiplataforma que se pica en Lua. Aunque PicoLove no es perfecto, no funcionan todos los juegos que he probado, tiene una ventaja…e inconveniente (desde mi punto de vista que les dije en su bugtracker A parameter to set «stricted mode Pico-8», y es que trae muchas mejoras frente al limitado hardware de Pico-8, como números en coma flotante, mas memoria y tal, vamos que como la tontería del Pico-8 se ponga de moda y PicoLove también, no va ha haber un estándar único y van a haber futuros problemas de compatibilidad entre plataformas.

LIKO-12: otro emulador de consola virtual escrito en Lua y con el engine Löve. Este va mas allá que PicoLove, porque además de traer muchas mas mejoras como mas resolución, ya no usa el API de Pico-8 y usa todo el lenguaje Lua completo. Vamos que LIKO-12 es a Pico-8 como la SuperNintendo a la Nintendo, una consola «emulada y virtual» distinta a su prima pequeña. Pero como no sabemos por donde van a ir los caminos, hay que reseñarla por si en un futuro cercano añade compatibilidad con Pico-8…o se fusiona con PicoLove para buscar esa compatibilidad o se hace presidente de la Casa Blanca, vaya usted a saber.

Finalizamos con unos consejillos, si eres jugador PicoLove y que tengas suerte de que te funcione el juego, si eres desarrollador pues LIKO-12 que te da mas vidilla que Pico-8.

Sigo pensando que javascript apesta

He vuelto a programar efusivamente en javascript y vuelvo a ver que hay unos errores de diseño muy gordos que dan problemas. Que si, que PHP apesta mas y tal estarás diciendo, o dirás «anda con el señorito seguro que piensa que Python es un regalo de los dioses» …pero estamos hablado de Javascript ahora.

¿Hay hilos en javascript? Si, si los hay pero no son accesibles desde el propio lenguaje.

Entonces hay hilos,  Error no hay acceso a hilos.

Y añado ¿Porque no hay un simple mutex / semáforo? Hubieran ahorrado toda esa mierda que tiene nueva de webworkes y flautas dulces, un semáforo para gobernarlos a todos…y después si tu ego te incita a crear meta-mierdas para vender libros de portadas animales grises pues bien para ti y bien para tus mojados canzoncillos.

Vale…no hay semáforos…pero ¿Porqué no hay un sleep? Maravillosa instrucción para no quemar CPU mientras espero una ejecución por otro hilo (de los que son como paranormales, no existen pero existen en javascript) y con un apaño guarro de un semáforo con una variable global. Y si yo hago mal en javascript y se queda ahí clavado, es mi culpa un lenguaje no tiene que estar diseñado para cuidarme como un tontito que no se hacer nada, si soy un manazas y un bruto me jodo y hago bien las cosas.

Lo del sleep es un error gordo pero gordo gordo, y no lo digo yo solo, si no gente tan potente como los de emscripten (un traspilador de C a javascript muy famoso) https://github.com/kripken/emscripten/wiki/Asyncify.

Y para finalizar el famoso living standard de javascript que se ha puesto de moda, que significa nuevas versiones de diseño del lenguaje no chocan con los navegadores que soportan versiones viejas porque en tiempo de ejecución (o previo por el rollo de los headers http) le manda código parcheado y librerías para que use las nuevas cosas en el navegador con la versión vieja….¿Pinta bien?…claro que si, pero tienes que meterte en la secta de node.js y todo eso, te ofrecen el caramelo y después ¡¡zasca!! ya estas enmarronado usando miles de frameworks y tonterias de hipsters con pegatina del gatopulpo en su blaquito mac.

turd-146305_960_720

Software libre que esperamos para Android desde hace años

Si, si, ya lo se, Android es el mal, es un engendro de una corporación maligna desmembrando a nuestro tierno pingüino y lo ha convertido en un feo y inhumano cyborg verde.

Pero dejando a parte estas consideraciones personales…

Llevo esperando la versión para Android de los siguientes proyectos de software libre…si ya lo se…que lo se…que puedo participar el proyecto para llegar a esa meta…pero no hacerlo o no poder hacerlo, no implica que poder alzar la voz en una pequeña critica.

Pidgin: un viejo conocido, lleva muchos años con nosotros, quizá lo conociste como Gaim, en mi vida apareció como alternativa libre al asqueroso pero necesario «microsoft mesenguer» allá por los finales de los noventa y principios de los dosmiles. Y ha seguido conmigo acompañándome por su principal característica de ser multiprotocolo.

¿Por qué en Android?

Porque es multiprotocolo y poder mandar a freír espárragos toda esa mierda de apps de mensajería…un anillo para unirlos a todos. Para los frikis de la seguridad, pidgin tiene los mejores plugins de seguridad. Y porque no hay un cliente de IRC decente en Android, que sea una interfaz limpia y que aproveche las técnologías de Android.

¿Y como anda el tema?

Pues nada a fecha de 2016, solo hay gente preguntando en la lista https://pidgin.im/pipermail/support/2016-May/029417.html y solo hay un intento de prueba de libpurple (la librería core del proyecto) https://www.reddit.com/r/linux/comments/411vpp/pidroid_im_a_proof_of_concept_port_of_pidgins/ .

Vassal: también otro conocido en el mundillo, en este caso es «una mesa de juego virtual» que implementa centenares de juegos de mesa, wargames y otras hierbas en paquetes llamados mod. Digo mesa, porque muchos de esos mods no tienen implementadas las reglas de juego y simplemente tu haces lo que quieras (para mal o para bien si eres un tramposo). Con los amigos puedes jugar o en tiempo real en el mismo PC u online o algo muy útil por «correspondencia» que te genera un fichero por cada partida que se lo tienes que pasar al siguiente jugador. No obstante pese a todo, es genial, jugar a cualquier caro wargame o descatalogado juego viejuno ochentero de tu infancia con tus amigos.

¿Por qué en Android?

Porque las tabletas / tablets / cacharros que regalar en reyes son la gran revolución videojueguil que hasta la capitalista de nintendo copio. ¿Quién no ha pasado un aburrido y largo viaje en tren / autobus con amigos o pareja? Antiguamente hacías crucigramas en grupo, sopas de letras, después vinieron los sudokus e incluso llego a haber versiones de los juegos de mesa para viaje (que eran una castaña por las fichitas pequeñitas y propensas a perderse en la siguiente curva / frenada debajo de los asientos)….pero probar una partida de Carcasone, backgamon o incluso juego de la oca en la tablet es genial, elimina todo sufrimiento de viajar. ¿Ahora entendéis porque Vassal su campo de juego perfecto son las tablets con Android? Es que encima es Java por lo que algún % estará mas fácil de portar.

¿Y como anda el tema?

Pues también como con Pidgin, muy muy parado. Se habla de que en la futura y lejana por venir versión 4 tendrá soporte para Android.

Otros ya vinieron.

Quién no recuerda cuando apareció VLC para Android, canela fina para reproducir cualquier vídeo, reproducir cualquier cosa que se emita por internet (radio o televisión). O los puzzles del gran señor Tatham que se hablo de ellos en la web de elbinario en Sudoku para Android sin publicidad y libre. Grandes proyectos de sofware libre que ayudan a tener un móvil limpio y libre…suena un poco facha esa frase si la cambiamos por un país jajajaja…

¿Y tu que software esperas en Android como agua de mayo?

tradtelefon-illustration