Archivo de la categoría: Tecnología

Domesticando SQLite

Le tengo cariño a SQLite aunque no pase mucho con el, ni siquiera los findes vamos al parque a echar pan duro a los patos. Eso de tener una base de datos embebida en cualquier programa que piques o una base de datos tirando de un fichero y un cli es mágico en esta época de microservicios y apis y miles de capas.

Me recuerda también a Lua otro invento que también le tengo cariño pero menos tiempo paso con el, porque este es un lenguaje de programación para añadirlo a tus proyectos y tener un punto abierto para que la gente extienda y haga locuras con tu proyecto en forma de extensiones, plugins, mods…desde un entorno mas o menos seguro.

Pues parece que se ha vuelto a poner de moda SQLite, pero los tutoriales que he encontrado por ahí…y no quiero señalar a nadie, hablan de como instalarlo y lo bonito que es y tal.

Pero nadie habla de lo malo de SQLite, algo que descubres cuando pasas tiempo con el…y es que parece pregunta típica y tópica de entrevista de trabajo, «Del lenguaje PliPli….dime que cosas te gustan y que cosas no te gustan.».

Y una cosa que nadie trata es que SQLite es muy espartano en relación a un PostgreSQL o un MariaDB (MySQL como Belalugosi is dead), como simil o metafora, es como pasar de un Python o un lenguaje de muy alto nivel a ensamblador.

Ya que estamos hablando de Bela Lugosi is Dead, la mejor adaptación del tema original (salvo que Marilyn Manson haga una y sea decente porque últimamente el chico anda de capa baja) de Opera IX:

SQLite no trae chequeo de tipos de columnas

 

Puedes meter un entero en una columna de texto y al revés y se queda tan pancho el SQLite y no es un bug, aquí tenéis la explicación.: SQLite lets me insert a string into a database column of type integer!

Pero se puede arreglar con:

create table test (
   id integer check(typeof(id) = 'integer'),
   name "text" check(typeof("text") = 'text')
);

Y aquí, se acaba la lista de cosas….porque iba a hablar de las foreing keys, pero mira que soy perro viejo que recuerdo que hace unos años no tenía y he mirado se introdujeron en el 2009, espero que mi memoria no me falle y es porque no estaba esa versión en las distros hasta mas tarde.

Y por cierto otra cosa que me encanta de SQLite que cuando hace poco años, los SJW y demás calaña (pero en serio que calaña de gente, no hace nada mas que intoxicar los colectivos en vez de ayudar y si quiere poner su granito de arena de su ideología) se pusieron serios con mierdas de códigos de conducta, el creador D. Richard Hipp en vez de bajarse los pantalones, pues dijo «queréis código conducta, pues toma código conducta» y adopto para el proyecto las reglas de los templarios del siglo VI.

MAN, se que lo odias. Hay alternativas al man

Las páginas manual de Unix (claro esta GNU/Linux también), son oscas y duras, ayudan pero son como el viejo sabio profesor de artes marciales vas a maldecirlo pero al final vas ha seguir el camino de kungfu y transcender y luchar como Neo en Matrix sin ni siquiera mirar al contrincante.

Historias de abuelo cebolleta digital

Como siempre queridos niños acercaros aquí a la chimenea junto al abuelo cebolleta, que os voy a contar un cuento. En mis tiempos cuando era un niño pequeño e intentaba hacer mis cosillas en un ZX Spectrum +2A (con 128Kb de RAM y se podía hacer de todo), pues en aquellos tiempos sin internet ni nada, solo tenías:

  • el manual del ordenador, que en aquellos tiempos te daban en papel un manual del ordenador, y era un tocho de manual de 100 y pico páginas. Era en blanco y negro y plagado de textos, pero oye te explicaba como programar en Basic. Era bastante espartano. Y al final del libro un par de listados en Basic de juegos o programas de contabilidad.
  • bibliotecas de barrio, donde no se porque…pero tenían en mi caso libros de programación para niños. De vez en cuando me pregunto quién pensó en comprar libros de programación para niños en una biblioteca de barrio obrero del extrarradio. Era una biblioteca que pertenecía a la obra social de Caja Salamanca y Soria (obra social que era obligada por ley). Aun recuerdo el pasillo oscuro con estanterías a los lados y los libros de programación para niños en un rinconcito, y como niños no había internet, solo sabías que había mas libros de una colección por la contra portada, e incluso descubrías que había otros ordenadores ademas de nuestro querido Spectrum y el amigo raro del Amstrad (porque reconozcamoslo en aquella época fue el Spectrum en España), había ordenadores como C64, el Dragon 64. Y aprendías a base de escribir listados de código en basic y audazmente cambiar cosas y ver que pasaba.

Cómo usar el man

Antes de ver alternativas al MAN, vamos a ver como usar MAN por si acaso ayuda. Recordar que el Man no necesita internet para nada, puedes estar después de una guerra nuclear, encerrado en un bunker soviético sobreviviendo al invierno nuclear y si tenéis un ordenador con GNU/Linux y tenéis que buscar como hackear un t1000 si podréis….con un Atari Porfolio…

Para ver el Man de un commando en GNU/Linux:

$ man <comando>

Las ayudas o mejor dicho páginas de man tienen el siguiente formato o estructura (hay raras excepciones):

  • Nombre: nombre y descripción corta.
  • Sinopsis: ejemplos muy cortos de como se usa.
  • Descripción: descripción de como se usa, mas o menos larga.
  • Opciones: lista de parámetros posibles.
  • Copyright: quien hizo en comando, licencia y tal.
  • Errores: sección que describe errores conocidos o como reportar errores.
  • Véase también: lista otros comandos parecidos o relacionados.
  • Notas: sección de notas.

Para moverse y usar el Man (es parecido a Vi/Vim)

  • con la flecha arriba y flecha abajo, hacer scroll por el texto.
  • AvPág y RePág para desplazarte como bloques de páginas.
  • G para ir al final del archivo (páginas se llaman) Man.
  • g para ir al principio del página Man.
  • q para salir del man.
  • / para entrar en modo busqueda, entonces abajo te aparece una barra donde escribir lo que buscas.
  • n para buscar el siguiente
  • N para buscar el anterior
  • q para salir del modo buscar

Si no te apañas en la terminal…golpe de remo…bueno siempre es duro esa pantalla de fondo negro y letras blancas, pues tienes unos ruedines para el man que es verlos en navegador con:

$ sudo apt-get install groff

Y después con:

$ man -H <comando>

Si se queja de que no encuentra navegador puedes forzarlo con:

$ man --html=<navegador> <comando>

¿Qué son esos números en plan chmod(2) que salén en las páginas man algunas veces?

Pues son otras páginas sobre un comando (si se usa por ejemplo en C):
Sección – Descripción

  1. Comandos Generales
  2. Llamadas al sistema
  3. Biblioteca C de funciones
  4. Ficheros especiales (normalmente dispositivos, que se pueden encontrar en /dev) y drivers
  5. Formatos de fichero y convenciones
  6. Juegos y salvapantallas
  7. Miscelánea
  8. Comandos de administración del sistema y Demonios

Y para abrir por ejemplo chmod(2) es:

$ man 2 chmod

Y finalmente para buscar entre todas la páginas man que hay instaladas, un texto en especial es:

$ man -wK <texto buscar>

Te devuelve una lista de ficheros que cada linea es:

<path_man>/man<num_página>/<nombre_página>.<num_página>.gz

Por ejemplo para:

$ man -wK game

Devuelve una lista larga (en mi caso porque cada programa puede instalar su página de manual), y la última linea mia pone:

/usr/share/man/man7/tc-hfsc.7.gz

Y para abrirlo:

$ man 7 tc-hfsc

Por cierto hay commandos que no tienen binarios en el sistema por ejemplo el cd (que es como una función de bash), si haces:

$ whatis cd
cd: nothing appropriate.

Si haces por ejemplo un:

$ whatis ls
ls (1) - list directory contents

Y para ver ayuda del cd es en la página builtins:

$ man builtins

Alternativas a man

Hay un montón, parece que cada lenguaje moderno se a quedido hacer su própia alternativa…usando su sistema de paquetería, que si python, que si ruby, que si nodejs…

Las voy a dividir en si necesitas internet o no (una vez instaladas para instalarlas sera necesario internet), por si estas en un bunker soviético sobreviviendo al desastre nuclear por culpa del capitalismo e internet no existe…quiza packet rádio sigue ahí.

Por cierto un truco para comprobar si un comando necesita internet es usar

unshare -r -n <comando>

Alternativas de ayuda en GNU/Linux con internet

Bropages

Son listados de ejemplos de comandos, porque algunas veces se aprende mas fácilmente viendo ejemplos que leyendo tochazos de documentación. Además incluso puedes votar los ejemplos. El nombre de bro es por el rollo ya de hace unos años de la invasión por chulos de discoteca en las carreras de ingenieria dejando a parte a la fauna friki y que se les llamo brogramers gente mas interesada en el gimnasio que en el dado de 20 caras.

Esta ayuda se instala con el sistema de paquetes de Ruby, que se llama gem, para instalar gem (en Debian/Ubuntu) es:

$ sudo apt install ruby
$ sudo apt-get install ruby-dev

Y después:

$ sudo gem install bropages

Para usarlo es tán fácil como:

$ bro <comando>

Se pueden botar las chuletas, pero  creo que hay que registrarse.

cheat.sh

Este es curioso porque puede consultarse vía nuestro gran amigo el comando curl como un servicio, pero te lo pinta con colores (que queda todo mas hacker) y todo en terminal. O descargarse un bash que te da una shell para hacer las consultas. Tiene su propio «lenguaje de consultas» por ejemplo:

$ curl cheat.sh/

Devuelve una tabla de ayuda muy vistosa de como funciona cheat.sh .

Te devuelve ejemplos de la llamada de php

$ curl cheat.sh/php

Te devuelve ejemplos de zip.

$ curl cheat.sh/php/zip

Para listar terminos posibles en cada rama que hay se puede hacer con:

$ curl https://cht.sh/:list
$ curl https://cht.sh/php/:list

Ayuda

$ curl https://cht.sh/:help

Incluso por lenguaje

$ curl https://cht.sh/php/:help

También te da un articulo o bigcheatsheet como lo llaman ellos sobre variados temas del lenguaje:

$ curl https://cht.sh/php/:learn

Para buscar en todos los articulos es:

$ curl cheat.sh/~list

Para descargar el bash es tan fácil como:

$ curl https://cht.sh/:cht.sh > ~/bin/cht.sh

Para ejecutar

$ bash curl cheat.sh

Y te da una shell para ir de forma interactiva.

Alternativas de ayuda en GNU/Linux sin internet

Cheat

También devuelve listados de ejemplos de un comando, este se instala con pip el sistema de paquetes de Python. Al no necesitar conexión a internet, los listados de ejemplos se actualizan con cada nueva versión del paquete cheat.

Para instalar pip (para python3) es:

$ sudo apt install python3-pip

Y para instalar cheat es:

$ sudo pip3 install cheat

Para usarlo es realmente fácil con:

$ cheat ls

TLDR

Otra ayuda para comandos en terminal programada en nodejs (javascript) y por lo tanto para instalarla es con su gestor de paquetes npm. También es un listado de ejemplos de comandos como el resto. Su nombre viene «too long didn’t read» en español «demasiado largo; no lo leí». Lo meto en la categoría «sin conexión» pero es no es cierto del todo porque este tiene una cache de ayudas de comandos, que se descarga la primera vez que lo usas y que puedes actualizar de vez en cuando.

Para instalar npm te recomiendo el siguiente link de como instalar npm en Ubuntu/Debian ya que siempre es un poco jaleo de instalar

Y para instalar tldr es:

$ sudo npm install -g tldr

Y usarlo es:

$ tldr <comando>

Y actualizar la cache:

$ tldr --update

Tiene una cosa curiosa como mostrar un commando al azar (por aprender mola) que es así:

$ tldr --random

Incluso lo puedes «pipear» con cowsay y queda una cosa muy hacker y curiosa:

Resumen

El mundo de software libre siempre hay alternativas mas o menos curiosas a todo. Y además se ve que lo estándar es importante, porque las páginas Man ya pronto tendrán 50 años.

Lo cierto, a nivel personal, tengo instaladas todas estas alternativas pero siempre se me olvidan usar.

El software libre ha fracasado

SI

El software libre HA FRACASADO en el mundo.
Te cuento mi experiencia personal, llevo últimamente estos años muchos cambios de empresas y he visto que…

Estuve en una empresa que firmaban proyectos de cinco ceros y seis ceros creo hubo alguno, esta empresa casi el 99% del stack tecnológico era software libre, django, docker, reactjs….los desarrolladores no hacíamos mas que coger los ladrillos de software libre y pegarlos con cemento de lógica de negocio. Pues ahora te preguntaras cuanto era el retorno a los proyectos que vampirizabamos….0 cero patatero. No donaban unos tristes 100€ o así o nos decían «chicos el viernes último de cada mes podéis dedicarlo a colaborar en los proyectos de software libre que tanto dinero nos hacen ganar.».

Y para mas asco, yo era entre los desarrolladores el incomodo rojeras hippy comunista que usaba GNU/Linux y que le asqueaba esta situación, tenia un compañero que no sabía hacer en terminal un triste merge en git porque usaba un blanquito mac y el puto pycharm de los cojones (es el ejemplo de R. Stallman de droga a la puerta del colegio porque la versión «open source» del pycharm es una mierda pinchada en un palo).

Y por lo que he oído por ahí, hay empresas BBVA que tiene forks privados de proyectos libres con mejoras que no devuelven a la comunidad.

Y en la empresa que estoy ahora, poco mas o menos lo mismo, pero para mas sorna, como es de temas GIS, pues ya hasta nos robamos datos libres, en este caso OpenStreetMap, un dump de la BD.
Para mi el software libre, esta en decadencia porque el sistema capitalista lo ha vampirizado, solo hay que ver el fallo de seguridad de Heart Bleed en OpenSSL que todo dios se aprovechaba del proyecto pero solo tenia 1 desarrollador a tiempo completo.
Metafóricamente, me recuerda al tema de la ecología, hace 40 años (y ahora en los países tercermundistas) una fabrica química la construían al lado de un río, se llevaba el agua de gratis con tuberías y la devolvían contaminada y tóxica, hasta que se regulo y se sacaron leyes medioambientales que decían «oiga señor empresario, el agua es un bien común, puede usarla pero tiene que devolverla igual de limpia».
Pues con el software libre deberían salir leyes así, por que no es de recibo que empresas y empresarios se forren de dinero robando al software libre, rollo leyes «si usted se aprovecha de un software libre, tiene que dar cierto % de sus ganancias obligatoriamente al proyecto que vampiriza».

Porque esa es otra, estamos acercándonos a una edad media tecnológica, se esta estancando los avances porque la gente usa y reusa viejos ladrillos y ni siquiera se mejora el molde de esos ladrillos.

Y esto viene en relación a la charleta:


XoR y NXOr en Python3

Algunas veces necesitas el XOR o el NXOR cuando programas y en mi caso se me ha dado en python.

No sabía si tenía un operador propio, pero parece que no tiene, así que he picado picado una forma de conseguir el XOR, os pego el código:

>>> print("---XOR----")
---XOR----
>>> for i in range(0,4):
...      a, b = list("{:02b}".format(i))
...      a, b = (int(a), int(b))
...      print(a, b, bool(a) is bool(b))
... 
0 0 True
0 1 False
1 0 False
1 1 True
>>> print("---NXOR----")
---NXOR----
>>> for i in range(0,4):
...      a, b = list("{:02b}".format(i))
...      a, b = (int(a), int(b))
...      print(a, b, bool(a) is not bool(b))
... 
0 0 False
0 1 True
1 0 True
1 1 False

El truco esta en castearlo a bool la variable y usar el operador is (para el XOR) y el operador is not (para el NXOR).

Esta de moda odiar a PHP

A ver PHP no es el mejor invento de la humanidad, pero tampoco lo ha inventado Microsoft.

Pero esta de moda odiar a PHP. Y que os voy a decir si yo le tengo un poco de cariño, es como ese viejo amigo que tiene sus cosas pero que os lleváis bien.

Os voy a contar mi historia con PHP y porque le tengo cariño y no sigo la moda de odiarlo.

Os cuento corría los 2000, creo que los 2002, en aquellos tiempos ya tenía alguna página (mi vieja linuxtopower) personal hecha con html, iframes y demás aparataje de esas épocas…hay gente que siente vergüenza por sus pintas 15 o 20 años atrás, pero al igual que contados casos de «fashion influencers» no se nos iba a ocurrir hacer una web limpia y clara rollo google en su inicio (porque cada vez es más Yahoo) y menos aún pensar en diseño para smart phones si aún ni existían.

Pero claro os recuerdo que aquellas páginas personales, eran estáticas cuál foto fija en el tiempo (con gigs molona), la única manera de actualizarlas era por medio de ftp, en el mejor de los casos si tenía el webhosting gratuito…éramos jóvenes sin dinero y en el peor un panel web ftp cutre muy cutre…pero que eso si, facilitaba mucho la vida cuando querías cambiar algo en un pc de un instituto, Universidad o cyber que tuviera los puertos capados…porque era un lujo tener Internet en casa.

Las webs eran tan estáticas que la única forma de interactuar con los visitantes era tener el típico contador de visitas gratuito (de otro lado y que solía venir con su correspondientes scripts para soltar banners y popups). Y el otro medio era el típico también libro de visitas que te lo ofrecía o el webhosting o enganchabas con un iframe de otro lado…con si correspondientes anuncios.

¡Y llegó PHP! Pero eran otros tiempos, ahora te dan contenedores y máquinas virtuales de un cupón en las cajas de los cereales. Recuerdo el primer webhosting que daba soporte para PHP gratuito era un tal H2O o algo así.

Y con el PHP llegó la locura de PHPnuke o PostNuke barrocos CMS (¿Seguirán los proyectos vivos?) que todo dios instalaba, instalando todo para al final aprender que la tecnología no soluciona los problemas, porque ponías un PHPnuke de la comunidad heavy de tu pueblo y pasado los meses eso seguía siendo un desierto. Si, ahí descubres lo difícil que es mantener una comunidad.

En aquellos tiempos, si querías hacer una web «dinámica» tenías pocas opciones:

  • Perl, la web de barrapunto está hecha con Perl. Yo he trabajado con Perl y es un horror de lenguaje, con sus sigil que te vuelves loco para desreferenciar una variable dentro de una función. Creo que en aquellos tiempos no había webhostings gratuitos que dieran soporte a Perl.
  • Java, lo tuve que aprender por obligación en la universidad, otro crimen. Primero que el aquellos tiempos todavía Java no era libre (y ahora no lo se) que para hacer algo sencillo tenías que montar un pifostio bien gordo con los servlets y compilarlo. Y otro que no me oli si existió algún webhosting gratuito.
  • PHP, que pienso yo, creo que la killer feature de el fue lo de poder limitar el tiempo de ejecución, la memoria RAM y alguna cosa más, y es lo que hizo que centenares de webhostings gratuitos florecieran porque no era peligroso ofrecer PHP.

Después curre muchos años con PHP, disfrute mucho, y el mundo siguió dando vueltas.

Y en esas estamos ahora está de moda odiar PHP porque:

  • Ha habido mucho manazas que ha hecho guarradas dignas de pasar por juez de la Audiencia Nazional. Si alguna vez joven informático/a te ofrecen un currito fácil y mal pagado de una web en PHP hecha por muchas manos…¡¡Huyeeee!!…porque te encontrarás un servidor con código vomitado de una persona que comió mierda de otro que a su vez era de otro y otro y otro así hasta la versión 2 PHP.
  • Tampoco es que PHP lo haya hecho bien, famoso es el artículo PHP: a fractal of bad design . En eso Python lo hace bastante mejor con su desarrollo basado en el debate sobre los documentos PEP. Y es que, que le vamos a decir al otro hermano deforme, nuestro querido javascript.
  • Porque un desarrollador puro y que irradia luz y modernidad ahora pica el código en javascript o python o Go.
  • Porque un desarrollador consciente de su fatal destino en el matadero y vendido el kilo de carne barato…reiros pero hay pobres desgraciaditos que quieren vivir así de sometidos, pues estos como empresa sería e inútil llena de burrocracia pican código en Java o Microsoft .Net.

Pero PHP tiene mucha vida, hay proyectos muy gordos (y libres…que es lo importante) picados en el: Mediawiki, WordPress, Prestashop…y dicen que Facebook estaba picado en PHP (con inventos como compilador y tal).

«El paciente» a descompilar es un exe de msdos en formato MZ

Posts in this series
  1. Compilar C en m$dos en nuestros tiempos
  2. "El paciente" a descompilar es un exe de msdos en formato MZ

Aunque voy despacio, voy a ir poniendo mis avances, que supongo que es poquito, pero bueno por seguir la Método de depuración del patito de goma o el refrán oriental que dice «El que enseña aprende dos veces.» .

La verdad es que en los primeros palos de ciego y análisis creí que «el paciente» era un ejecutable de tipo COM o algo así, pero ahora volviendo a analizarlo he encontrado el famoso:

MZ

0x4D 0x5A

Eso ayuda un montón porque si queridos mios, los ejecutables también tienen formato y no es estándar, hay muchos muchos estándares (en m$-dos hablamos…en otros sistemas operativos…pues habrá los suyos).

Como dice en el foro de ubuntu: Learning how to disassemble dos binaries

If actual DOS executables disassembly is the thing you are searching for, then search for disassemblers, that can handle the MZ magic [$4D 5A] (the default DOS 16bit header) or elf, coff, xcoff, ecoff, mach and such …

Bueno pues ahora entender la estructura de fichero de el formato DOS MZ .

Si alguno tiene alguna pista, estaré agradecido.

Videojuegos libres que se han ido de github después de ser fagocitada por Microsoft

Después de la mala noticia (gracias capitalismo) de el canibalismo salvaje de Micro$oft comiendose a github. Ya hablamos por los tomates de eso en Github ha muerto…bueno lo han asesinado.

Muchos proyectos de software libre han migrado a otras forjas/repositorios de software, y de entre estos tenemos los videojuegos libres…junto con respirar, una de las cosas que mas me ocupa la cabeza…me gustaría algún día intentar conseguir vivir de hacer videojuegos libres…pero bueno…

Bueno pues conocidos por mi, he encontrado los siguientes videojuego libres que se han ido de github:

Solarus, un clon libre del Zelda de SNES/GBA/GB con editor de mapas y todo en plan RPGmaker. Solarus has moved to Gitlab

Y OpenMW que es un clon libre del videojuego de rol en 3D Morrowin. OpenMW code, bug tracker, and wiki are now on GitLab!

Y seguro que hay mas. Amable lector…¿Conoces algún otro videojuego libre que se haya pirado de github?

Compilar C en m$dos en nuestros tiempos

Posts in this series
  1. Compilar C en m$dos en nuestros tiempos
  2. "El paciente" a descompilar es un exe de msdos en formato MZ

La verdad es que para escalar una montaña, primero hay que tener la montaña.

Mi montaña es descompilar un videojuego (de momento uno)  y liberarlo, pese a la polémica que hay con esta forma de liberar videojuegos como podéis leer en: Devilution – Decompiled Diablo 1 en el subreddit de videojuegos libres.

El juego en cuestión, ya os lo contare si lo consigo, pero como ya he empezado con los problemas, he querido ir paso a paso, y me he buscado un montecito, descompilar un C de un hola mundo.

Todo este gusanillo viene los articulos del Fanta: mierda.tv (cosas de dosbox que no tiene tags y hay que tirar de busqueda).

A ver, quiero ser perro mordedor y poco ladrador, por eso no voy a ponerme grandes metas y voy a ver hasta donde llego.

Y lo primero que hay que hacer es tener un m$-dos entre manos, como no me apetece llamar al tito Gates y decirle que me venda unos disquetes de su apestoso sistema operativo, he encontrado el viejo y querido dosbox  (no os asustéis con ese web de los dosmiles).

En casi todas las distribuciones de GNU/Linux viene en el repositorio de paquetes oficial por lo que no sera difícil instalarlo. Aunque cosa distinta es si queréis ver la matrix de m$-dos que hay que seguir el tutorial que hizo Fanta para poner el debug heavy.

Una vez instalado hay que descargar el djgpp, que es la versión del compilador libre por excelencia el Gcc para m$-dos, el proyecto tiene un formulario web para darte una lista de crípticos ficheros zip para tener el gcc funcionando según gustos personales, básicamente tienes que seleccionar:

  • compilar y ejecutar programas
  • C y ensamblador
  • Por frikeo el Rhide
  • Depurador gdb

Como podéis ver en la captura de pantalla:

 

Y tendrás de la descarga los siguientes ficheros zip con nombres bastante crípticos, pues tienes que descomprimirlos a una misma carpeta todos, en mi caso le puse el nombre tan original como djgpp y tendrás algo tal que así (donde todos las carpetas bin de cada zip estarán fusionadas y el resto de tipos de carpetas al igual con sus respectivos nombres):

Ahora como enganchamos el dosbox para que coja ese directorio en el path de ejecutables (si, por si no lo recordabais m$-dos tenia un invento parecido a los Unix), pues aunque se puede cambiar la configuración de dosbox para hacerlo, voy a enseñaros vía parámetros de la shell…porque así explico una parte el señor Fanta y seguir el hilo de su trabajo.

$ dosbox -c "keyb sp" -c "mount c: ." -c "C:" -c "set PATH=C:\DJGPP\BIN;%PATH%" -c "set DJGPP=c:/djgpp/djgpp.env"

Y después puedes probar cosas tan frikis como usar rhide para editar un fichero c con un hola mundo.

Recuerda, para sacar al ratón del dosbox es: ctrl + F10

Y aquí tenéis el holamundo en C para m$-dos:

En cuanto puedo os sigo mostrando los siguientes paso hasta escalar mi montaña personal.

Como tenía que haber hecho Microsoft con Github para demostrar su «amor al open source»

Valga por delante que es una opinión subjetiva en plan cuñado…pero tengo ganas de compartirla.

Micro$oft después de comprar Github tenía que haber hecho lo siguiente, separar en dos la compañía:

  • Por un lado la compañía github tal como está para repositorios privados y empresa, ofreciendo el mismo servicio que ahora.
  • Por el otro crear una fundación.

Vamos con la parte de fundación que es lo importante.

La fundación tenía que haber sido como la fundación Mozilla o la fundación Apache, un organismo libre y autónomo.

En la formación de la fundación tendría que:

  • Haber estado más actores en la fundación como la FSF, otras empresas competidoras como Redhat u otras por ejemplo Fundación Mozilla, para recalcar la independencia por reparto de poderes.
  • Haber liberado el código fuente github, estilo como gitlab
  • y en la fundación se quedará con los proyectos libres ya de antes como Atom, Electron y otros
  • Haber movido ahí todos los repositorios públicos.
  • Para rematar el pulpogato y la marca github (dominio y toda la pesca) se hubiera quedado en la fundación.

Así si podríamos decir que si que Microsoft está caminando fuera del lado oscuro.

Github ha muerto…bueno lo han asesinado

Github era un repositorio para proyectos usando git, comenzó antes del 15M, en el 2011. Antes de el había otros pesos pesados en terreno como viejo amado/odiado Sourceforge y otros mas o menos bizarros como Launchpad.

Poco a poco fue comiendole el terreno a Sourceforge, hasta que al final le arrebató la posición de Forja de proyecto….open source puto open source (ese es uno de los problemas que arrastraba Github antes de su asesinato).

Esta victoria sobre Sourceforge, imitó en mucho a la lucha entra Google y Yahoo, en sentido que Yahoo un viejo pesado de los buscadores de internet (bueno quien no recuerda Altavista) que la página principal era puro barroco, sobrecargada como una choni va sobrecargada de alajas, pulseras y maquillaje al botellón del parking del centro comercial, y Google que venía limpio sin ser un portal recargado, era casi una página en blanco…recuerdo una conferencia de hace años pero no recuerdo el titulo que contaba que «cuando comenzó Google recibía un misterioso email cada semana con un número que iba creciendo, hasta que supieron que era el número de enlaces en la portada». Pues la misma lucha, el viejo Sourceforge cargado de mierdas y joyas como una vieja ppera saliendo de misa un domingo y Github limpio como un joven albino sin espinillas.

También Github marco una diferencia clave frente a SourceForge, es que cambio el concepto de forja, antes las forjas eran orientadas a Proyecto, todo se articulaba entorno al Proyecto, para empezar en Sourceforge tenias que o hacer un Proyecto nuevo o unirte a uno, donde ya aunque no se quisiera había unas dinámicas. Y Github cambio eso, ahora todo se articulaba entorno a los Repositorios y era todo mas rollo orgía y caos (amable lector recuerda caos != anarkia ) de uy yo te forkeo tu Repositorio a ti, uy yo te lo forkeo a ti este otro. Lo que daba una libertada muy interesante, sobre todo con egocentricos desarrolladores, en plan «no aceptas mi parche…pues me forkeo tu proyecto con casinos y furcias» y entonces empezaba la carrera (veías en árbol de forks) que algunas ganaba el de los casinos y furcias y el egocentrico o desaparecía o tenia que aceptar el parche.

Pero Github siempre a cojeado, primero porque nunca a liberado nada de código (importante o interesante), vamos que no ha hecho como WordPress o Gitlab en plan mira nos basamos en este proyecto libre pero te ofrecemos una solución en plan SAS en nuestros servidores para que no te compliques.

Y en otra cosa que ha cojeado es en el tipo de gente que iba a su discoteca, como iban del rollito open source en vez de software libre, mucho de los niñatos con portátil blanco de la manzanita que decían. «Oye que MacOs es Unix y tengo terminal y entonces es mejor que GNU/Linux» y que no programaban en lenguajes de verdad, les encanto la discoteca Github, ahí los veías en starbucks, bibliotecas con sus portatiles blancos con pegatinas de Facebook y el pulpogato de Github. Los hipster de la informática (e incluso hipster de verdad), gente carente de profundidad para analizar el porque del movimiento y que colaboraban con el capitalismo con la tontería del open source.

Entonces Github, se convirtió en el basurero:

  • de millones de holas mundos
  • de millones de practicas de informática
  • de millones de proyectos a medias en nodejs
  • de millones de proyectos open source de videojuegos hechos en Unity3D…tus cojones 23 eso es como hacer un software libre en Flash.
  • de millones de proyectos a medias hechos en micro$oft .Net

Tengo que decir que hace unos meses, github mejoro mucho cuando metieron «etiquetas» a los repos, por lo menos no necesitabas AwesomeLists para filtrar entre tanta mierda, y forzaba a los usuarios a que si querían aparecer en algún lado tenían que etiquetar sus repositorios.

Del interfaz de Github no tengo ninguna queja, es simple y limpio, me recuerda la vieja y cerrada forja de Google Code. Quizá el rollo la sección en los Repositorios de Projects me parece un poco forzar a usar la metodología Kanban frente a otras ni mejores ni peores, distintas.

Y bueno también hay que recordar a Atom el editor basado en Electron (un navegador con solo la página sin barras ni nada) ¿Quién recuerda de la Mozilla fundation el proyecto Prisma? Aunque no lo creáis le cogí cariño a este Editor este último año, porque estaba muy bien el rollo de los plugins que tiene (yo use mucho, uno de FTP) y el fuzzy finder para buscar y lo de que todos los atajos de teclado se podían llegar desde un menú que salía con ctrl+may+p. Aunque también hay que decir el mamoncete de Atom comía memoría y tenia lag como el solo (para mejor la velocidad lo primero que tenias que hacer era quitar su plugin estrella del mapa del fichero), me recordaba de lento al viejo y querido Eclipse. Pues la pregunta que sera de el ahora que Github esta en manos de Micro$oft.

Bueno volviendo al tema, ayer o así escribí en el twitter (a ver si me paso a las redes sociales libres):

El tema es Microsoft usa el software libre (ahora porque hace años nos acusaba de comer niños) para acercar a la gente a sus productos y estándares, ejemplo .net, su editor, su formato de office. En vez de al revés, el acercarse al software libre y a los estándares que ya existen

Este artículo en la wikipedia que explica bien la táctica de Microsoft. Adoptar, extender y extinguir.

Vamos la imagen de arriba que acompaña el articulo, porque como:

  • microsoft jodió Nokia eso fue un escandalo, encima cuando estaba apostando por el software libre con Maemo. Menos mal que se fue a la puta el puto windows phone.
  • microsoft jodió Minecraft, que originalmente el autor (el gordo friki de Notch) iba a liberar el juego cuando vendiera lo suficiente, no lo digo yo…menos mal que archive.org existe https://web.archive.org/web/20100301103851/http://www.minecraft.net:80/about.jsp y al final el gordo friki cogió la pasta y huyo. Menos mal que tenemos Minetest.
  • linkedin ya estaba jodido de antes…que vergüenza de página a nivel técnico…a otros niveles pues ya sabéis es el sitio donde la gente que ha estudiado ADE se siente importante y donde las estúpidas que han estudiado psicología y tienen la empatia de un psicópata están de recursos humanos ahí dorando la píldora y mintiendo mas que hablan para cazar a incautos ingenieros y esclavizarlos.
  • falta que dolió mucho, Sega con su última videoconsola Dreamcast, que llevaba de serie Windows CE, si bien ella se murió sola, rápido Microsoft no dejo enfriar el cadáver y cual carroñero saco lo que necesito para crear la primera Xbox….que que casualidad el sistema de ficheros de los juegos era casi igual al de la consola de Sega.

Bueno Miguel y ahora cual es la solución.

Pues no tengo respuestas en la mano, yo de momento he empezado la migración de mis proyectos a Gitlab

Como por ejemplo el solitario cutrecillo hecho en C y SDL que hice hace años.

El proceso que hago es migrar el proyecto Gitlab, y borrar todo el historial de commits (ojo que si no esta migrado pierdes todo…salvo que tengas copia) y después subir un articulo de la FSF de Upgrade from Windows.

No es la gran solución pero bueno es la que he encontrado, me gustaría ser valiente y pasarlos a Savannah.

O probar cosas tan exotéricas como Mango que es IPFS + Git, pero creo que lo importante es que sea fácil de usar para la gente y para los no iniciados. Pero mola ese rollo de un sistema de archivos distribuido en internet y sobre el Git, hay un articulo curioso sobre ello en Mango: Git completely decentralised .

Hay que seguir investigando y sacarle el dedo al puto microsoft como hizo Linus Torvals a Nvidia.

Y por cierto y como palabras finales, Microsoft si ya ha hecho daño al software libre. Porqué aunque malo era Github, mas o menos ya había crecido comunidades y proyectos entorno a el, y ahora después del bombardeo a Github con la compra, esta todo el mundo huyendo y no hay un referente claro…todavía no hay un bandle «Fork me XXX».

Actualización: Se me olvido poner el link del análisis de la FSF del 2015 sobre Forjas de proyectos. GNU Ethical Repository Criteria Evaluations