Instalando arch linux: Paso #1 rEFInd


rEFInd

Para poder hacer el dual boot se necesita poder escoger qué sistema operativo se va a usar, para esto entra rEFInd.

Esta parte no fue difícil, hay un tema de algo llamado SIP (System Integrity Protection) por lo que hay que hacer un cambio rápido a la Mac en “Modo Recovery”:

No es nada del otro mundo y se puede regresar al modo anterior con los mismos pasos pero cambiando el comando por csrutil enable.

Después de eso, en el usuario normal buscar la manera con la que uno se siente más cómodo para obtener rEFInd acá (en mi caso fue el zip porque no encontré el archivo para instalar en el repo) y ejecutar el archivo con ./refind_install. Reiniciar - en esta ocasión ya tendremos que seleccionar el SO desde rEFINd.

Saludos,
Gorka


Instalando arch linux: Paso #0 la investigación


Antergos

One Does Not Simply Correctly install Arch Linux on the first try

Desde hace mucho que vengo pensando en darle una intentada a instalar Arch Linux. Me recomendaron Antergos para empezar. Y como justo tengo una mac air que le vendría bien un power up, decidí que está bueno ponerme a invstigar cómo hacerlo.

La idea es tener un dual boot de Mac OSX y Antergos para probar y si todo sale bien capaz y hacer sólo la instalación de Arch, pero eso será otro post.

Así que bueno, a intentarlo de una vez.

Acá me dejo los links de referencia que usaré (y que ya estuve leyendo).

Saludos,
Gorka


Buenas prácticas para pasar contraseñas


Cipher Disk

Only the paranoid will survive and inherit the earth

openssl

Hablemos primero de lo que pasó: necesité que me mandaran una contraseña, la manera “insegura” (y que creo todos hemos tipicamente usado) es pasarla por email o chat (a veces en partes para hacerlo más seguro, a veces no).

Y, para que me llegara una contraseña me encontré decifrando direcciones url + decriptando hashes + borrando todo y guardando las cosas en una “caja segura”.

La idea es que, para pasar una contraseña la buena práctica implica usar por lo menos dos cananales diferentes para transmitir datos - así si alguien está escuchando un canal, sólo escucha parte de la conversación.

Lo divertido es que a través de uno de los canales se hace llegar una contraseña encriptada y a través del otro, la clave para decriptar la contraseña original. Fue ahí donde descubrí openssl.

Con esta herramienta puedo encriptar/decriptar (cifrar/descifrar) palabras o frases y así transmitirlas - de una manera en la que para “entenderlas” se necesita la clave descifradora.

¿Cómo funciona?

echo 'Esta sería la contraseña' | openssl enc -base64 -e -aes-256-cbc -pass pass:esta_es_la_clave_cifradora_descifradora

Y esto nos da: U2FsdGVkX1/l9mGydcS6YSQHL7Mp564njMvaBpJZnEv/IR3mfg2Ojh3NMF/2GYEr

Genial, y luego? Pues luego la podemos descifrar así:

echo U2FsdGVkX1/l9mGydcS6YSQHL7Mp564njMvaBpJZnEv/IR3mfg2Ojh3NMF/2GYEr | openssl enc -aes-256-cbc -d -a

Y ahí nos pregunta por la clave (también se le podríamos dar como argumento en la forma -pass pass:esta_es_la_clave_cifradora_descifradora).

Y kapow!: Esta sería la contraseña

También sirve para archivos

openssl aes-256-cbc -a -salt -in 'ruta_y_nombre_al_archivo_a_encriptar' -out 'ruta_y_nombre_al_archivo_encriptado' -pass pass:esta_seria_la_clave
openssl aes-256-cbc -d -a -in 'ruta_y_nombre_al_archivo_encriptado' -out 'ruta_y_nombre_al_archivo_desencriptado'

Así que bueno, aprendiendo de buenas prácticas y nuevas herramientas.

Saludos, Gorka

PD - la imagen es de un tipo de cifrado conocido como Caesar Cipher

PD2 - buscando imágenes de cipher disk para este post como que me parace que el zodiaco, calendario azteca y las monedas se parecen mucho a este tipo de discos - paranoia lo mío?


¿Qué hay en el pipeline?


Qué hay en el pipeline?

He estado jugando mucho ultimamente con nuevas tecnologías: desde comunicación cliente-cliente con webrtc, pasando por mundos virtuales en web con webvr y webgl hasta brain control computing. COn esto me he divertido mucho también pensando en qué cosas nuevas se pueden intentar y cómo llevarlas a cabo. Sigo creyendo que con las tecnologías que se están/estamos desarrollando cada vez se “blurrean” más los límites de lo físico y lo digital/virtual.

Uno de mis principales motivadores tiene que ver con conseguir que el pensamiento de “luz encendida en el cuarto”, genere que la luz que estaba apagada se encienda.

¿Cómo se puede lograr esto?

Hay pasos a seguir y para algunos no contamos (aún) con las herramientas necesarias para construirlos, pero más o menos así:

1.- Yo pienso luz encendida en el cuarto 2.- Un dispositivo (hardware) recibe los impulsos nerviosos que generaron tal pensamiento. 3.- Un software entrenado aisla la intención entre el posible ruido entre toda la información capturada. 4.- El software envía una petición http al sistema que es capaz de prender la luz (el de la casa, del cuarto, de la bombilla, da lo mismo) 5.- Luz encendida

Y de esa manera podremos tener al alcance de un pensamiento algo que años atrás era motivo de risa.

¿Cómo se verá el futuro?

Me gustaría hacer otro post acerca de mis predicciones, aquí en realidad les cuento lo que yo he publicado ultimamente:

Los proyectos son un “work in progress” que ya iré puliendo. Todos los proyectos están en github (https://github.com/AquiGorka). Me encantaría escuchar lo que piensan y si se quieren sumar de alguna manera.

Saludos,
Gorka


Aprendiendo a usar ssh


ssh

Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. The best known example application is for remote login to computer systems by users.
ssh @ Wikipedia

ssh

Eso, la aplicación más conocida es para conectarte de manera segura con otras computadoras. Esto puede ser desde la terminal o con otros programas que usan ssh con algún tipo de interfaz gráfica.

Hay dos programas:

El cliente se conecta al servidor. Es decir, se necesita una computadora que tiene algún servidor ssh corriendo - en mi caso, he usado openSSH pero hay más. Seguramente que se puede tener el cliente en la misma computadora que tiene el servidor pero aún estoy aprendiendo así que hagamos esto fácil y paso a paso.

Para los siguientes ejemplos tengo un servidor corriendo en user@ip.de.servidor

ssh -L

Sirve para hacer un tunel en un puerto local hacia algun otro lugar via el servidor definido.

ssh -L 9000:localhost:8888 user@ip.de.servidor

Al entrar yo (en cualquier browser) a http://localhost:9000 lo que voy a ver es lo que regresa el localhost de la computadora corriendo el openSSH (server de ssh) en el puerto 8888.

También podría apuntar a cualquier otro lugar del mundo (eg www.google.com:80) pero no logré un ejemplo que funcionara (me mandaban paginas 404 supongo que por error de configuración local a la petición via localhost).

ssh -R

Sirve para hacer un tunel a un puerto remoto de un puerto local, es decir, lo que se tenga en mi computadora (que por ahora es el cliente ssh) se va a ver en la computadora remota (la que tiene el server ssh y en el puerto definido).

ssh -R 9090:localhost:8080 user@ip.de.servidor

Esta opción está rebuena para desarrollo en dos casos específicos (ambos casos necesitan que la computadora con el server ssh sea accesible via web):

ssh -D

La última por hoy, y una muy divertida: sirve para usar la computadora con el server ssh como proxy para las peticiones locales - hay que hacer una configuración más local, hay que decirle al OS o al browser o a curl (ver ejemplo abajo) que use socks5 proxy para los requests.

Esto está muy divertido ya que ahora tenemos una VPN (por ahora de emergencia, y siguiendo las recomendaciones que me han hecho, si quieres una VPN lo mejor que puedes hacer es pagar por una VPN).

ssh -D 9002 user@ip.de.servidor

curl --socks5 localhost:9002 www.aquigorka.com

Así que ahí está, ya iré aprendiendo más y compartiendo como hacer más cosas.

Saludos,
Gorka


Décimo aniversario


Important Dates

Todo lo que ves a tu alrededor fue contruido por hombres.

Hace unos días me puse a hacer cálculos y resulta que en estas fechas este blog/web cumple 10 años de mi primer post. Quería hacer algo simbólico y encontrar el primer post y hacer algún tipo de restrospectiva o por lo menos referencia, pero no logré encontrarlo - lo más atrás que llegué fue a un post que había escrito de blood diamond, que podría ser el primero pero creo que escribí algo antes, en fin.

Y lo que sí me dieron ganas es de recuperar muchos de los posts que fui escribiendo y que en cambios de web dejé en el pasado… todo esto gracias a Wayback Machine de Archive.org: http://web.archive.org/.

Así que por los siguientes días voy a republicar/recuperar viejos contenidos (y con mucho gusto leerlos), me regresan a lo que estaba viviendo cuando los escribí y me recuerda que desde siempre tuve este tema en el blog de “Seguir aprendiendo” (antes era “Aprende por ti mismo”) - y también me hizo notar que antes tenía mucha participación, así que voy a ver como recuperar comentarios con este nuevo sistema y luego fomentar la conversación.

Saludos,
Gorka

P.D. - de las cosas que ya estuve republicando está la serie de experimentos que había escrito, qué buenas ideas! jajaja


Hugo vs. Jekyll


Static site generators

Managing software becomes central to the success of any businesses

Y que mejor que probar las diferentes herramientas posibles. En este caso me puse a jugar con dos herramientas para blogs/websites estáticos (Hugo y Jekyll),

¿Qué son los generadores de websites estáticos?

Un poco de contexto: las páginas web son basicamente html (y js y css pero para hacerlo fácil, no digamos nada de eso). Y los navegadores saben que el contenido que viene en html se enseña de diferentes maneras (tablas, parrafos, links, menus, etc.). Entonces si uno agarra un editor de texto y escribe html y guarda el archivo y lo abre con google chrome entonces se ve una página web - así lo más sencillo de lo sencillo. Genial y estático, es decir que para cambiar el contenido de esa página habría que abrir el archivo y modificarlo y luego guardarlo de vuelta y abrirlo con chrome.

Pero y cómo hago (o como se hacía antes de los spas y ajax) para que las páginas tuvieran contenidos dinámicos - momento cerebrito, contenido dinámico?

¿Qué son los contenidos dinamicos?

Si entras a una página web que tenga sistema de registro y te loggeas y en algún lugar en la página te dan la bienvenida por tu nombre (ej “Bienvenido Gorka”) bueno, ese nombre va a ser diferente para cada persona (que no tenga el mismo nombre no?), es decir, de manera dinámica se cambia el nombre de la persona que hace login.

Retomando, entonces para hacer eso, se usan lenguajes que funcionan en los servidores (de todos los sabores y colores que uno se pueda imaginar, y aqui es donde pueden llegar a sonar nombres como PHP, Node, Python, Java, Go, Ruby, Perl, etc.) que hacen eso mismo, cambian los contenidos de las páginas cada vez, y eso es, en sí, escribir el archivo html y mandarlo al navegador. Y pues aqui es donde se inicieron muchos sitemas de gestión de contenidos dinámicos (otros nombres como Wordpress, Joomla, Drupal, etc.).

Pero ese dinamismo viene con un costo, es decir, el tiempo que el servidor se toma para saber qué contenidos escribir (y hasta de dónde sacar los contenidos en sí). Así que para evitar caer en esos “costos” algunas personas decidieron desarrollar programas de gestión de contenidos que generan páginas estáticas. Esto viene con otros costos, pero como este blog post es super introductorio, eso lo explicaré en otra ocasión.

En fin, así que probando los sistemas, dejo mi opinión: prefiero Hugo - con todo y que este mismo blog usa Jekyll.

Voy a seguir usando ambos, y eventualmente haré posts de como instalar y usar cada uno.

Las ventajas de ambos: mis dos blogs (este y AquiGorka.net) van mucho más rápidos, y al estar ambos hosteados como contenidos estáticos también es mucho más barato.

Se me hizo medio largo el post de introducción, así que acá lo dejo por ahora.

Saludos,
Gorka


Pagination