Recently a user filed a bug where the same RGB color when converted into a UIColor, and later into CGColor is different that going from the RGB value to a CGColor directly on recent versions of iOS.
You can see the difference here:
What is happening here is that CGColors that are created directly from the RGB values
are being created on kCGColorSpaceGenericRGB colorspace. Starting with iOS 10,
UIColor objects are being created with a device specific color space, in my
current simluator this value is kCGColorSpaceExtendedSRGB.
You can see the differences in this workbook
Hace mucho tiempo vi una visualización de como se desarrolla Moodle [0], lo cual es muy interesante, de hecho me pareció tan interesante que le dedique un rato a eso y cree un par de visualizaciones de proyectos en los que estaba trabajando o a los que tenia acceso con gource [1] y hasta me sentí tentado a probar la versión para logs de servidores [2], pero ya no me dio tiempo hoy que estaba buscando un correo de otra cosa dí con mi mensaje en su momento, aquí lo reproduzco.
from: Victor Martinez
to: yoreme
date: Sun, Nov 11, 2012 at 2:33 PM
subject: Visual representation of yoreme repoRecently one Moodle developer posted one nice video about the history of Moodle via the actions on the code repository, well, after three days playing with the tool (gource) I finally got one myself from our own repo… I will not enter too much in details but each second passes a day and if there is not activity in a second skip to the next activity (let’s say we skip the time the repo is idle or without modifications) in any case its interesting to watch is a 75MB ogv and only last 2 minutes, but hey! the original output was 17.5GB. Here is the link http://vic.jerx.net/yoreme.ogv
Making takes lots of cpu and hdspace, as you need first to pipe all images to disk and then compress… I just noticed that forgot to link the page for the package gource [1] there are very good examples on their wiki to use it, on Debian you may need to change codecs I used, also you need first to get a log from the repo you want to visualize its well documented, if you only want to see the video is very easy, if you want to write it to disk I have done this:
gource yoreme.log –seconds-per-day 1 –camera-mode overview –auto-skip-seconds 1 -o yoreme.ppm
and then
ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i yoreme.ppm -crf 1 -bf 0 -b 5000k yoreme.ogv
As Debian don’t have some of the libs and codecs mentioned in the gource page, also gource exists as Debian package.
El día de hoy Debian incluye muchas más cosas sobre gource y ffmpeg y también mi CPU en casa es mucho más rápido por lo mismo estoy haciendo uno de planetalinux [3] que probablemente termine en youtube dependiendo del tamaño del archivo, si quieren ustedes probar, que hoy en día es bastante fácil, simplemente instalando gource.
gource planetalinux/ -f –auto-skip-seconds 1 –seconds-per-day 1
Es decir que cree la visualización de planetalinux en pantalla completa, se salte cuando no haya actividad en un segundo y que cada segundo presente un día… lo cual con todo es largo, mhhh tendré que subir el resultado de la oficina 2.2GB no es algo que en DSL con 383kbs sea placentero subir.
La encantación fue:
gource -1280×720 –auto-skip-seconds 1 –seconds-per-day .09 –stop-at-end -o – | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i – -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 planeta.mp4
Archivo fuente 2.2 GB Planeta.mp4
[0] https://www.youtube.com/watch?v=Ut5JoqIaUHs
[1] http://gource.io/
[2] http://logstalgia.io/
[3] http://planetalinux.org
De lo que aprendemos en la escuela básica y que muchos de mis estudiantes de primer semestre me dicen luego que no es cierto que lo hayan visto en secundaria o preparatoria, es muy interesante hacer una sesión de recordar cosas como el teorema de Pitagoras, las leyes de Newton y otras más que sólo aprendieron de memoria y entonces hago la pregunta, ¿como haríamos para demostrar que la tierra es redonda? Y claro todos dicen que con satélites, que con drones, que un globo con un celular, y les pregunto, ¿será que lo podamos hacer sin utilizar algo más que lo que se pudiera usar en Grecia hace 2000 años?
Y la mayoría, por supuesto dicen, no es cierto, es imposible, !si en ese entonces creían que la tierra era plana!… y no, no todo el mundo creía eso (bueno algunos aún lo creen).
Y eso termina utilizando la historia de Eratóstenes o simplemente hablando del ecuador, las sombras y el medio día, claro hay varias listas de como hacerlo sin necesidad de un satélite pero me gusta mucho como lo cuenta Carl Sagan en Cosmos:
Y claro con una narración más nueva, con Adam Savage:
Entonces cuando te preguntes para que aprendiste matemáticas y geometría o ciencia para la misma pregunta, la respuesta es para ser más observador y no creerte nada más lo que te dicen y si, el experimento se puede repetir y también el de que objeto cae más rápido, es decir caída libre.
Y unos tanto más, es interesante como física y matemáticas a veces en la escuela se enseñan de manera realmente aburrida, como lo dice Walter Lewin, “es un crimen”:
Y lo triste es que muchos tienen que llegar a la universidad, para entender las matematicas, fisica o cualquier otra materia que algún profesor con sobre población en su grupo no cubrio o no tuvo tiempo o animo para picarles la curiosidad, buscar la aplicación practica, explicarles hasta que tienen un momento eureka, o como se le atribuye a Plutarco “La mente no es un recipiente para llenar, sino una llama para encender”.
Y me invitaron escribir y participar en el EDUSOL aquí lo que presenté.
EDUSOL 2017 CIENCIA, DATOS Y PRÁCTICAS ABIERTAS, no olviden consultar las demás ponencias hay cosas muy interesantes.
Pronto las memorias, en todo caso las diapositivas pueden ser consultadas en slideshare o descargar directamente desde acá Los portales de transparencia y los datos abiertos en las universidades públicas.
Hace meses decidi eliminar completamente Windows de mi laptop de trabajo, despues de eliminar Windows y sus particiones tuve ganas de probar ZFS, por lo que tuve la necesidad de reacomodar datos en el disco pero no queria reinstalar y como afortunadamente siempre uso Volume Groups pues decidi mover algunos LV aka Logical Volume, el procedimiento que voy a realizar solo voy a mover datos dentro de un mismo disco a diferente particion, pero sirve para mover datos entre discos.
La idea es que la particion /dev/sda3 contenga el volume group, eliminar la particion extendida /dev/sda4 y crear una particion para ZFS y ahi poner /opt
Despues de eliminar las particiones windows asi se veian en gparted
Estado actual de particionesProcedemos a crear una particón, en la primer sección de sin asignar
Crear nueva particiónSeleccionamos tipo lvm2 en sistema de archivos y le damos a añadir
Despues damos en aplicar cambios en gparted
con lo anterior se ha cread /dev/sda3 por lo que procedemos a cerrar gparted y abrir una consola y primero inicializamos la partición /dev/sda3 para el uso con LVM.
Si tu deseas mover de disco y no de particion como es mi caso, reemplazar /dev/sda3 por tu nuevo disco, si es el disco completo no requiere una particion podrias incializar por completo el disco
sudo pvcreate /dev/sda3
sudo vgextend vg_DragonBorn /dev/sda3
Mi primer logical volume a mover es lv_swap,
sudo pvmove -v (verbose) -n (nombre de logical volume) /disco/fuente /disco/destino
sudo pvmove -v -n lv_swap /dev/sda5 /dev/sda3
Despues de unos minutos u horas dependiendo del tamaño del logical volume o de los discos a mover, veremos una pantalla simliar
Hacer esto por los volumenes logicos que se quieran migrar
Just wanted to close the chapter on Mono's TLS 1.2 support which I blogged about more than a year ago.
At the time, I shared the plans that we had for upgrading the support for TLS 1.2.
We released that code in Mono 4.8.0 in February of 2017 which used the BoringSSL stack on Linux and Apple's TLS stack on Xamarin.{Mac,iOS,tvOS,watchOS}.
In Mono 5.0.0 we extracted the TLS support from the Xamarin codebase
into the general Mono
codebase
and it became available as part of the Mono.framework distribution
as well as becoming the default.

Let’s Encrypt es un esfuerzo, impulsado por la Fundación Linux, para crear una entidad certificadora que ofrezca certificados SSL abiertos, libres, gratuitos y automáticos.

Para instalar Let’s Encrypt en nuestra distribución Ubuntu/Debian ejecutamos lo siguiente:
apt install letsencrypt
apt install python-letsencrypt-apache
Y después para iniciar la configuración de nuestros dominios ponemos:
letsencrypt –apache –redirect -d DOMINIO.COM
Y listo!!.., con eso tenemos redireccionamiento desde HTTP > HTTPS y el HTTPS configurado correctamente.
Lo único es que el certificado no dura 1 año, pero para renovarlo ejecutar este comando:
letsencrypt renew
Pueden ponerlo en el CRON y listo otra vez
Sí su distribución no cuenta con el programa letsencrypt pueden utilizar otro llamado certbot, las instrucciones son las mismas:
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get install python-certbot-apache
sudo certbot –apache -d DOMINIO.COM
Fuente:
https://ayudawp.com/lets-encrypt-certificado-ssl-libre-y-gratuito-para-asegurar-tu-web-con-https/
https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04
https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04
LinuxmanR4
LinuxmanR4 - Historias sobre Linux, Manjaro, Elastix, software libre, afeitado y barbas clásicas.
A lo mejor el título de este artículo no es muy claro. Voy a intentar explicar la situación. Generalmente mando mis trabajos de impresión a la impresora compartida de un equipo que utiliza Windows 7. Usualmente no había tenido problemas hasta después de la última actualización de Manjaro en la que para mandar imprimir me pide un nombre de usuario y una contraseña.
Al principio creí que era la contraseña de root, pero luego me la volvía a pedir. Intenté con mi usuario de linux y tampoco. Lo único que funcionó era el nombre de usuario y contraseña de la computadora con Windows. Bueno ya era un avance.
En ocasiones anteriores este tipo de problemas se arreglaban solos o bastaba con dar de alta nuevamente la impresora para que desaparecieran pero ese no fue el caso.
Durante más de una semana me acostumbré a teclear el usuario y la contraseña. Funcionaba pero era poco práctico, ya era hora de buscar una solución.
Manjaro tiene un programa que se llama Configuración de impresión que es donde administro las impresoras que tengo dadas de alta en mi sistema. Supuse que la solución era un poco obvia, decirle a mi Manjaro que almacenara el nombre de usuario y contraseña en lugar de teclearlo cada vez que quería imprimir.
No almacena el usuario y la contraseña.Incluso existe un espacio en donde se puede especificar un usuario y contraseña en donde dice Autenticación, lamentablemente después de varios intentos me di cuenta de que no guarda esa información y en la siguiente impresión la vuelve a pedir. Así que era necesario probar otro enfoque.
Para entrar a la página de CUPS solo hay que visitar http://localhost:631/ , luego el menú Administración … Administrar Impresoras .. Mantenimiento … Modificar Impresora (o ya de plano dar de alta una nueva impresora). Seleccionar la opción que dice: Windows Printer via SAMBA y en ese lugar se le puede especificar el usuario y contraseña de la conexión a la impresora.
Aquí es donde va a guardar la información de la conexión.La conexión quedaría más o menos así:
smb://usuario:contraseña@ip_computadora/impresora_compartida
Me pasó que el nombre de usuario de la computadora con Windows incluía un espacio, en ese caso, se agrega un %20 en el lugar donde va el espacio, algo más o menos así:
smb://usuario%20con%20espacio:contraseña@ip_computadora/impresora_compartida
Lo que sigue es guardar los cambios, hacer algunas pruebas y si todo salio bien, ya no pedirá el usuario y la contraseña. Bueno, hasta la próxima actualización de Manjaro.
Espero que este consejo les sea de utilidad. ¡Hasta la próxima!.
Impresora compartida con samba pide usuario y contraseña
linuxmanr4.
LinuxmanR4
LinuxmanR4 - Historias sobre Linux, Manjaro, Elastix, software libre, afeitado y barbas clásicas.
En mi artículo anterior les platicaba a mis queridos 4 lectores un problema al descargar un paquete desde AUR.
Imaginen ahora el nivel de emoción cuando por fin se logró completar la descarga y luego la frustración que vino después de leer que el paquete no se había podido instalar por falta de espacio en el dispositivo.
Después de recoger mi cabello del piso tuve que pensar en algo. Bien dice que todo problema nos deja una enseñanza. El mensaje decía que la partición tmp se había quedado sin espacio.
El comando df al rescate.Gracias al comando df me pude dar cuenta que el directorio /tmp estaba al 100% (en la imagen apenas muestra un 1% de uso). Vamos, que no le cabía ni un solo bit más y ese era el problema.
También el comando muestra que la carpeta tmp es del tipo tmpfs y eso dice mucho. Los tmpfs no ocupan espacio en ningún disco duro, viven en la memoria RAM. En el caso de manjaro el tamaño por default de esta partición es la mitad de la memoria RAM instalada y parece que 4GB no fueron suficientes para el programa que quería instalar.
Que el directorio tmp sea tmpfs supone varias ventajas. La compilación es mucho más rápida y el espacio se recupera después de reiniciar el equipo y funciona la gran mayoría de las veces excepto cuando no (música triste de violines aquí por favor).
Tenía dos opciones: Hacer la partición tmp más grande, que ya no fuera tmpfs, por lo tanto, ocuparía algo de espacio en el disco. Pero también tenía un aspecto negativo. Todos los demás programas que quisieran usar la carpeta tmp estarían en el mismo lugar, sin los beneficios de una carpeta temporal en RAM mucho más rápida.
La segunda opción es indicarle a yaourt que usara otra carpeta para la instalación de los paquetes. Al final opté por esto último.
A fin de cuentas solo se usaría cuando instalara paquetes del AUR. No era mucho problema.
Para lograrlo solo hay que indicarle a yaourt que utilice otra carpeta. El archivo a editar es /etc/yaourtrc .
Y ajustar esta línea más o menos así:
TMPDIR="/home/$USER/tmp"
La variable de entorno $USER hará los ajustes para cada usuario del sistema.
¿Creían que eso era suficiente? jajajajaaja, ¡PUES NO!. Me tuve que dar otro tope con la pared y hacer un ajuste más en la configuración de nuestro viejo amigo, el archivo de configuración de Makepkg (léase Mejorar la descarga de programas desde AUR ). Y también decirle que usara una carpeta temporal diferente.
#-- Specify a directory for package building. BUILDDIR="/home/$USER/tmp/"
Con estos ajustes pude al fin instalar el programa que quería desde AUR.
Como un plus al éxito obtenido agregué un comando de limpieza que se ejecutará al iniciar mi sesión de XFCE. De esa forma no acumularía archivos temporales.
Pasando la escoba.Usualmente todo funciona bien en Manjaro. Situaciones como esta son casos excepcionales derivado de mis necesidades de programas de AUR. Pero si alguna vez tienen este problema espero que les sea de utilidad esta información.
Sin espacio en el dispositivo al instalar un paquete con yaourt
linuxmanr4.
The online encounter I started together with my friend Pooka twelve years ago (Encuentro en Línea de Educación y Software Libre, Online Encounter of Education and Free Software) was held annually, between 2005 and 2011 if I recall correctly. Then, it went mute on a six year hiatus. This year it came back to life. Congratulations, Pooka, Sheik and crew!
Anyway, this is a multimodal online encounter — They managed to top the experience we had long time ago. As far as I can count, it now spans IRC, Telegram, Twitter, YouTube chat, plus a Google Hangouts → Youtube videoconference... And I am pushing for some other interaction modes to be yet added (i.e. using Meet Jitsi as well as Google Hangouts as the YouTube source)... ... ...
Anyway, between sessions and probably thanks to a typo, I was described as Siempre eres trolerante. I don't know if the person in question wanted to say I'm always trolling or always tolerant, but I like the mix, plus the rant part once it is translated to English.
So, yes, I enjoy being trollerant: I am a ranting troll, but I excercise tolerance towards others. Yay!
LinuxmanR4
LinuxmanR4 - Historias sobre Linux, Manjaro, Elastix, software libre, afeitado y barbas clásicas.
La semana pasada tuve muchos problemas para descargar un paquete desde AUR que necesitaba, pero por una u otra razón no lograba descargar.
La descarga del archivo representaba más de 500 MB y una conexión a internet inestable no ayudaba mucho.
Anteriormente había configurado pacman para que usara gestores de descarga como wget o aria2. Pero ese consejo no aplica a yaourt, la herramienta que utilizo en manjaro para descargar programas desde AUR.
Después de una breve investigación logré hacer el ajuste ganador. Curiosamente no fue con curl, ni con wget, tampoco con mi campeón aria2, no, en esta ocasión el ganador fue axel.
Lograr que yaourt utilice axel para manejar las descargas de los archivos no fue difícil. Un detalle curioso, esta modificación no es en el archivo de configuración de yaourt, en su lugar, se edita el archivo de configuración de makepkg que es el que se encarga de las descargas de los archivos.
Para cambiar el gestor de descargas hay que editar el archivo makepkg.conf
sudo gedit /etc/makepkg.conf
Se puede comentar o reemplazar esto…
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')
por esto otro…
DLAGENTS=('ftp::/usr/bin/axel -n 5 -v -a -s 102400 %u -o %o'
'http::/usr/bin/axel -n 5 -v -a -s 102400 %u -o %o'
'https::/usr/bin/axel -n 5 -v -a -s 102400 %u -o %o'
'rsync::/usr/bin/rsync -z %u %o'
'scp::/usr/bin/scp -C %u %o')
Como pueden ver, se cambia el programa encargado dependiendo del protocolo. Axel maneja sin problemas http, https y ftp.
Además con -s 102400 limito la velocidad de la descarga a 100 kbps, para no saturar mi inestable conexión a internet.
Hechos los cambios solo falta descargar los programas que necesitemos en AUR usando yaourt y eso es todo.
Axel tiene la ventaja de acelerar un poco las descargas ya que usa múltiples conexiones (divide y vencerás). Además de que es bastante tolerante a los problemas de conexión.
Aún con todos estos cambios tuve que hacer varios intentos. Al parecer era un problema en el servidor que tenía alojado el archivo porque después de unos días de intentarlo se descargó sin mayor novedad.
A esto me estaba enfrentando.. “Connection time out” frecuentes.Son las mismas instrucciones para cambiar el gestor a wget o aria2, pero hay que tener cuidado con los parámetros, porque son distintos para cada programa.
Luego tuve otros problemas, pero eso será tema de otro artículo.
¡Hasta la próxima!.
I am very, very, very happy to report this — And I cannot believe we have achieved this so fast:
Back in June, I announced I'd start working on the translation of the Made with Creative Commons book into Spanish.
Over the following few weeks, I worked out the most viable infrastructure, gathered input and commitments for help from a couple of friends, submitted my project for inclusion in the Hosted Weblate translations site (and got it approved!)
Then, we quietly and slowly started working.
Then, as it usually happens in late August, early September... The rush of the semester caught me in full, and I left this translation project for later — For the next semester, perhaps...
Today, I received a mail that surprised me. That stunned me.
99% of translated strings! Of course, it does not look as neat as "100%" would, but there are several strings not to be translated.
So, yay for collaborative work! Oh, and FWIW — Thanks to everybody who helped. And really, really, really, hats off to Luis Enrique Amaya, a friend whom I see way less than I should. A LIDSOL graduate, and a nice guy all around. Why to him specially? Well... This has several wrinkles to iron out, but, by number of translated lines:
...Need I say more? Luis, I hope you enjoyed reading the book :-]
There is still a lot of work to do, and I'm asking the rest of the team some days so I can get my act together. From the mail I just sent, I need to:
Anyway — This sets the mood for a great start of the week. Yay!
| Attachment | Size |
|---|---|
| Screenshot from 2017-10-08 20-55-30.png | 103.1 KB |
| Hot: |
Soy una persona afortunada, muy afortunada, no solo estoy vivo, si no que todas las personas a las que amo también lo están, tengo un techo donde dormir, y acceso a todos los servicios.
Sobreviví al terremoto del 19 de septiembre de 1985, cuando apenas contaba con 12 años, en su momento no alcance a visualizar el tamaño real del desastre que se provocó, sin embargo, por mucho tiempo no hubo escuela, no había agua, y teníamos escases de comida.
Hoy me congratulo de haber sobrevivido al terremoto del 19 de septiembre de 2017, si bien el daño no fue tan grande como el de 1985, si fue, a mi juicio, el terremoto que más temor me ha causado, y ello se debe a que lo sentí en un séptimo piso, en frente del WTC, y muy cerca del lugar (escasas cuadras) en donde muchos edificios se derrumbaron.
Por las condiciones del edificio, nuestro protocolo de protección civil, indica que debemos esperar hasta que pase el movimiento telúrico para hacer el desalojo, ello implica que debes de confiar a ojos cerrados que la integridad estructural del edificio se conservará, solo te acercas a una de la columnas principales y esperas, esperas y observas todo el movimiento a tu alrededor, esperas y escuchas los ruidos que emite el edificio al resistirse al movimiento, esperas, y tratas de conservar la calma.
Los segundos son eternos, y el proceso de desalojo tiende a ser frustrante, si bien estamos organizados, sabemos que hacer y cómo hacerlo, ello no implica que por nuestra mente pasen muchas ideas, donde las principales son el comunicar nuestro estado a los seres amados y esperar lo mismo de ellos.
Como es de esperarse, las comunicaciones fallaron, y había acceso esporádico a datos por medio del celular, las actividades comerciales fueron suspendidas, y de pronto, todos pensaban en como regresar a sus hogares.
He caminado por muchos kilómetros, hasta un lugar en donde el transito permitía avanzar, en mi trayecto, logre observar lo que para muchos es difícil de entender, lo que los extranjeros no comprenden y admiran, y me refiero al hecho de que la sociedad civil tomo el control del proceso de ayuda.
No solo observe a gente con polines de madera, civiles controlando el tránsito de las principales avenidas de la ciudad, niños ofreciendo agua a la gran cantidad de personas que caminan buscando llegar a su destino, todo esto en menos de una hora después del suceso.
Mas tarde, ya más organizados, la ayuda se concentró en la misión principal, búsqueda y rescate de las víctimas, adicionalmente a ello, una red de soporte de creo, para llevar víveres, comida y medicamentos.
Y al igual que en 1985, somos y seremos ejemplo de solidaridad, de organización, y de un fuerte sentido de comunidad, como en ese momento, hoy día me siento orgulloso de vivir en donde vivo, de ser lo que soy, un mexicano.
Los temblores siguen, y al menos a nivel personal, estamos subsanando los errores que encontramos en este evento, a fin que, en caso de requerirse nuevamente, estos no se presenten.
Ello no implica que no sienta un temor terrible al escuchar la alerta sísmica, consientes que tarde o temprano llegara una réplica de una intensidad suficiente como para volver la activar.
Como lo dije en el inicio, soy una persona afortunada, muy afortunada.
Hi friends,
~3hr ago, we just had a big earthquake, quite close to Mexico City. Fortunately, we are fine, as are (at least) most of our friends and family. Hopefully, all of them. But there are many (as in, tens) damaged or destroyed buildings; there have been over 50 deceased people, and numbers will surely rise until a good understanding of the event's strength are evaluated.
Mainly in these early hours after the quake, many people need to get in touch with their families and friends. There is a little help we can all provide: Provide communication.
Open up your wireless network. Set it up unencrypted, for anybody to use.
Refrain from over-sharing graphical content — Your social network groups don't need to see every video and every photo of the shaking moments and of broken buildings. Download of all those images takes up valuable time-space for the saturated cellular networks.
This advice might be slow to flow... The important moment to act is two or three hours ago, even now... But we are likely to have replicas; we are likely to have panic moments again. Do a little bit to help others in need!
If anyone need a good OSI Model cheat sheet, as me:
OSI ModelThe post OSI Model Cheat Sheet appeared first on My Binary Life.
Hi again,
As many of you know a lot of “Production” applications need to be configured to provide High Availability. With that in mind, a best practice architecture to your application is to add a Load Balancer as a front end who distribute your traffic between your application nodes, as you can appreciate on the next image:
Load Balancer HAIn this case, my “Production” application is my blog, and I will install a SSL Certificate on the Cloud Load Balancer (CLB) to offloading the encryption/decryption to the CLB instead of doing it on the webserver. That way your webservers uses port 80 (HTTP), as always, and you serve your content trought port 443(HTTPS).
SSL-OffloadingHere are the what I use to configure my WordPress with SSL Certificate:
There is a lot of ACME clients supported by Let’s Encrypt, the most popular is Certbot. However, I prefer to use acme.sh.
Let’s install it:
git clone https://github.com/Neilpang/acme.sh.git cd acme.sh # Create a data home directory sudo mkdir /opt/acme/data # Actual command to install it bash acme.sh --install --home /opt/acme --config-home /opt/acme/data --certhome \ /opt/acme/data/ssl-certs --accountemail your@email.com
Once acme.sh is installed, we proceed to issue our first SSL Certificate:
/opt/acme/acme.sh --issue -d example.com -w /var/www/vhosts/example.com/public_html [Mon Aug 25 06:04:07 UTC 2017] Creating domain key [Mon Aug 25 06:04:07 UTC 2017] The domain key is here: /opt/acme/data/ssl-certs/example.com/example.com.key [Mon Aug 25 06:04:07 UTC 2017] Single domain='example.com' [Mon Aug 25 06:04:07 UTC 2017] Getting domain auth token for each domain [Mon Aug 25 06:04:07 UTC 2017] Getting webroot for domain='example.com' [Mon Aug 25 06:04:07 UTC 2017] Getting new-authz for domain='example.com' [Mon Aug 25 06:04:08 UTC 2017] The new-authz request is ok. [Mon Aug 25 06:04:08 UTC 2017] Verifying:example.com [Mon Aug 25 06:04:11 UTC 2017] Success [Mon Aug 25 06:04:11 UTC 2017] Verify finished, start to sign. [Mon Aug 25 06:04:11 UTC 2017] Cert success. -----BEGIN CERTIFICATE----- MIIE/zCCA+egAwIBAgISA2AIs/G8gWjkRkNOUb7zmqh1MA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzA4MjgwNTA0MDBaFw0x NzExMjYwNTA0MDBaMBkxFzAVBgNVBAMTDmNvb2tpZWxhYnMubmV0MIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo8/4fXH0dOHcSlyXpsBoULhwQYkz4m0J MegRHU2mhyy/jfKWM6KHDxHpFWUFajLJ/ORE4uncvjmRYeSVBxgv2R2cYoZyKd6v txT+Cdj3jD9fBfDerfdfsdfsd6Y6mlr6Im61afKsFXIgLsprBpK22JU6HOz+0Fdo lan09aaF8zLPtVzdfJw9MU55K7nzerxO8j4ro2lve0PHExkMIBCrXey50wcuqQRY hwkbbXsm+wTES7TCn3tooSzFq6ore3JrSckxhFQ96EOea0s9CgYnw4d9rU/b3jyK bFCILEJK64vgFHx0qvd0hBJFJG/HUtAXAVrFQjjlZlCmCMbnee1UTQIDAQABo4IC DjCCAgowDgYDVR0pasoasoasogWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBR2KRpXKKgTorwfXpo44wgKyFUl QzAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj MGEwLgYIKwYBBQUHMAASdTdddHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v cmcvMBkGA1UdEQQSMBCCDmNvb2tpZWxhYnMubmV0MIH+BgNVHSAEgfYwgfMwCAYG Z4EMAQIBMIHmBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nw cy5sZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZp Y2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRpZXMg YW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0ZSBQb2xp Y3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVwb3NpdG9yeS8w DQYJKoZIhvcNAQELBQADggEBAFVGs82tzyVER6U0x7p/Q+6xplDFd6ap/dVX9G6i eRPf4ayGykPSH9J3ewu398LOQd3DE93oWbqc7PfEC40Z5HqvCEY3fl9auep99/IF rwhf36J7PXvEsPrUB6pxNFSBw9WX366Z1MP8qoIzm3XYEpp2D/SPniWY5+eQ42Pj WNxxVksA4kFUF9wgKcrsCNTm0X8GZj5HUXC1OwtlopY2w42QrAMGwz1jM4nxv5Mc Jim+nT0zmJUhAdQi8ocDjAl2PvcfdgfmkMr9IWH3al/GJSKy3a9Cq+BaIsIUYi6E 8M8Mj+00ONNn1folm9aVn+FW5fVCaxYN32ir8PnoTWkOXK8= -----END CERTIFICATE----- [Mon Aug 25 06:04:11 UTC 2017] Your cert is in /opt/acme/data/ssl-certs/example.com/example.com.cer [Mon Aug 25 06:04:11 UTC 2017] Your cert key is in /opt/acme/data/ssl-certs/example.com/example.com.key [Mon Aug 25 06:04:11 UTC 2017] The intermediate CA cert is in /opt/acme/data/ssl-certs/example.com/ca.cer [Mon Aug 25 06:04:11 UTC 2017] And the full chain certs is there: /opt/acme/data/ssl-certs/example.com/fullchain.cer
Where the explained options are:
–issue: Issue a new certificate
-d (–domain) : Specifies a domain, used to issue, renew or revoke, etc.
-w (–webroot) : Specifies the web root folder for web root mode. This is the DocumentRoot where your site is hosted and it is necessary to verify it by Let’s Encrypt.
So, at this moment we have our SSL Certificate, Private Key, and Intermediate CA Certificate ready to install on our Cloud Load Balancer (CLB)
Your cert is in /opt/acme/data/ssl-certs/example.com/example.com.cer Your cert key is in /opt/acme/data/ssl-certs/example.com/example.com.key The intermediate CA cert is in /opt/acme/data/ssl-certs/example.com/ca.cer
So we should go to https://mycloud.rackspace.com -> Rackspace Cloud -> Networking -> Cloud Load Balancers:
Cloud Load BalancerThen, to Optional Features and Enable/Configure on “Secure Traffic SSL”:
Cloud Load BalancerFinally, we add our SSL Certificate, Private Key, and Intermediate CA Certificate to the CLB and save the configuration:
Cloud Load BalancerWe are almost done, at this time we already have configured our SSL on the CLB to provide WordPress over HTTPS, however, WordPress is still with HTTP, so we need to reconfigure our WordPress with SSL.
First of all, we should update the links from http to https; we are going to do it directly on the database doing the following queries:
Warning: Change all instances of example.com to your own. If you have the www as part of your WordPress Address (URL) in the WordPress Settings, add the www.
Also, if you have a custom table prefix in the WordPress database, something other than the default wp_, then you must change all the instances of wp_ to your own table prefix.
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'src=\"http://example.com', \ 'src=\"https://example.com') WHERE post_content LIKE '%src=\"http://example.com%';
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'src=\'http://example.com', \ 'src=\'https://example.com') WHERE post_content LIKE '%src=\'http://example.com%';
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'href=\"http://example.com', \ 'href=\"https://example.com') WHERE post_content LIKE '%href=\"http://example.com%';
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'href=\'http://example.com', \ 'href=\'https://example.com') WHERE post_content LIKE '%href=\'http://example.com%';
UPDATE `wp_posts` SET pinged = REPLACE(pinged, 'http://example.com', \ 'https://example.com') WHERE pinged LIKE '%http://example.com%';
SELECT * FROM `WP_DB_NAME`.`wp_posts` WHERE (CONVERT(`ID` USING utf8) LIKE \ '%%http://example.com%%' OR CONVERT(`post_author` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_date` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_date_gmt` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_content` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_title` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_excerpt` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_status` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`comment_status` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`ping_status` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_password` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_name` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`to_ping` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`pinged` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_modified` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_modified_gmt` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_content_filtered` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_parent` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`menu_order` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_type` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`post_mime_type` USING utf8) LIKE '%%http://example.com%%' \ OR CONVERT(`comment_count` USING utf8) LIKE '%%http://example.com%%');
UPDATE `wp_comments` SET comment_author_url = REPLACE(comment_author_url, \ 'http://example.com', 'https://example.com') WHERE comment_author_url \ LIKE '%http://example.com%';
UPDATE `wp_comments` SET comment_content = REPLACE(comment_content, 'http://example.com', \ 'https://example.com') WHERE comment_content LIKE '%http://example.com%';
UPDATE `wp_postmeta` SET `meta_value` = REPLACE(meta_value, 'http://example.com', \ 'https://example.com') WHERE meta_value LIKE '%http://example.com%';
UPDATE `wp_options` SET `option_value` = "https://example.com" \ WHERE `wp_options`.`option_name` = 'siteurl';
UPDATE `wp_options` SET `option_value` = "https://example.com" \ WHERE `wp_options`.`option_name` = 'home';
Besides, with run the queries directly on the database, we can update, or verify, the blog URLs, by going to Settings > General
And updating your WordPress Address (URL) and Site Address (URL) address fields.
Updating URLsFinally, we should add the following line to our wp_config.php file
$_SERVER['HTTPS']='on';
Now, you have configured WordPress with Let’s Encrypt SSL Certificate on a Load Balancer.
The post WordPress with Let’s Encrypt SSL Certificate on a Load Balancer appeared first on My Binary Life.
Fork bomb is an infinite loop that repeatedly launches the same process.
:() Defining a function called :
{:|: &} means run the function : and send its output to the : function again and run that in the background.
The ; is a command separator, like &&
: runs the function the first time.
!b00m
#/bin/sh if for comment!! ;-)
El fin de semana pasado, tuve la fortuna de poder asistir al meetup de Docker, donde nos dieron un curso de Docker para principiantes. A pesar de las dificultades presentadas, ya que al ser un curso totalmente gratuito, a base del esfuerzo de la comunidad se logró bastante bien.
En este primer post, les compartiré mis notas del curso.
En el #SysArmyMxTalks previo, el buen Iván Chavero, nos habló de los fundamentos de los contenedores, si quieren revisar el material, lo encuentran en los enlaces:
Durante el curso, nos dieron una breve introducción a docker, además de ver un fragmento del vídeo de la presentación de Jessie Frazell:
Después de esto, iniciamos con la parte práctica:
1. Después de instalar docker, es necesario habilitarlo e iniciarlo
2. Para correr un contenedor mediante docker con nginx, ejecutamos
Como es una imagen que no tenemos en un repositorio local, la descarga del repositorio oficial de docker.
3. Si abrimos una terminal alterna, podemos observar que el contenedor se esta ejecutando
Se observa que, por default, docker nombra el contenedor como cocky_joliot, esto es debido a que si no especificamos un nombre del contenedor, docker por convención utilizará un adjetivo y el apellido de algún científico (según el código fuente de docker)
4. También podemos ejecutar un contenedor de forma interactiva con una TTY
Se observa que, dentro del contenedor, solamente existe el proceso de bash que ejecutamos, además de contar con toda la estructura de directorios del sistema.
5. En la terminal alterna, podemos observar la ejecución del contenedor
Con la opción -a, podemos ver todos los contenedores que hemos ejecutado, por default solo se muestran los que se encuentran en ejecución actualmente.
6. Si queremos eliminar un contenedor, utilizamos su CONTAINER ID, de la salida del ps ejecutando
Al revisar en la terminal alterna, ya no se observa dicho contenedor
7. Se le puede indicar al contenedor que se ejecute en background y que utilice un puerto local en particular
Se observa en la terminal alterna, que el proceso se ejecute en el puerto asignado
Podemos revisar con el navegador o con curl que el contenedor nos muestre la página de prueba de nginx en el puerto local configurado

Para detener el contenedor, sin eliminarlo, utilizamos su CONTAINER ID o su nombre
8. Si lo deseamos, podemos ejecutar un contenedor con un nombre en particular
Lo revisamos en la terminal alterna
También podemos obtener estadísticas ejecutando
Estas se muestran en tiempo real.
9. Con el contenedor ejecutándose, también podemos indicarle que corra algún comando en particular, por ejemplo
En este caso en particular, le indicamos que ejecutara, de forma interactiva bash, sin embargo se observa que la imagen del contenedor no tiene el comando ps. Esto puede ser debido a que cuando se creo la imagen, no se le incluyó dicho comando o comandos; esto se puede realizar para que la imagen del contenedor tenga una característica de seguridad en caso de ser necesario.
El proceso para generar la imagen de esta forma se profundizará en una sesión posterior.
10. Para revisar la configuración general del contenedor, ejecutamos
Salida completa de la inspección: inspect_test.txt
También podemos obtener información de la inspección en formato de Go
11. Para listar las imágenes que hemos utilizado, ejecutamos
12. La primer opción, aunque no la mejor nos comentaron, es utilizar una imagen básica de algún Sistema Operativo y adecuarla a nuestras necesidades. Por ejemplo, si queremos una imagen de vim, primeramente ejecutamos de forma interactiva una imagen base, para nuestro caso, de fedora e instalamos el paquete de forma tradicional
Identificamos el nombre del contenedor, con ayuda de la terminal alterna
Y hacemos commit al cambio en la imagen, identificándola con un mensaje descriptivo y un nuevo nombre
Al revisar las imágenes observamos
Existe una importante diferencia en el tamaño de la imagen base contra la imagen que creamos, esto depende de los paquetes que instalamos.
Al ejecutar vim dentro del contenedor, funciona correctamente
Podemos revisar la diferencia de imágenes usando el id del contenedor:
Salida completa de la diferencia: diff_imagenvim.txt
13. La otra forma de crear una imagen, es generando un archivo Dockerfile con las instrucciones de personalización del contenedor. Utilizando el mismo ejemplo, creamos el archivo Dockerfile (por convención, así debe llamarse) con la información necesaria
Y ejecutamos la construcción de la imagen
Salida completa de la construcción de la imagen: build_imagenvim2.txt
Al ejecutar vim dentro del contenedor, funciona correctamente
Al listar las imágenes, observamos
A esta nueva imagen, le podemos asignar una etiqueta diferente para poder diferenciarla
Podemos, además, guardar esta imagen como archivo
Con lo cual, podríamos portar la imagen a algún lugar, incluso por USB y exportarla. Para este ejemplo, primero eliminamos la imagen
Para cargar esta imagen en algún otro equipo, después de transferir dicha imagen, utilizamos el comando
La información de los contenedores es efímera, pero si requerimos que se monte algún directorio en particular o que los datos sean persistentes, utilizamos volúmenes.
14. Si requerimos que nuestro contenedor incluya algún directorio en particular, ejecutamos
En la terminal alterna, inspeccionamos el contenedor, para revisar los montajes
Por default, docker crea un directorio en el host para poder montarlo en el contenedor. Esto lo podemos revisar,como root, directamente en el host
15. Si queremos que el contenedor utilice algún directorio del host en particular, ejecutamos
Se montó correctamente el directorio dentro del contenedor, pero no tenemos permiso de escritura debido a que el daemon de docker lo monta como root, como se observo en la inspección anterior. Para poder escribir, necesitamos indicarle al contenedor los permisos que requerimos, ejecutando
En la inspección se observa
16. Los volúmenes los podemos crear antes de usarlos, ejecutando
Para asignarlo al contenedor, ejecutamos
En la inspección observamos donde se creo el volumen y los archivos creados
17. Para eliminar el volumen, después de eliminar el contenedor, ejecutamos
18. Si se requiere copiar archivos del host al contenedor, la mejor práctica es realizarlo desde su creación mediante Dockerfile, suponiendo que en el host tenemos un directorio archivos que deseamos tener en el contenedor dentro del directorio stuff, ejecutamos
19. Suponiendo que necesitamos que el contenedor ejecute un script al arrancarlo, lo construimos con la opción ENTRYPOINT
En un siguiente post, cuando nos den la segunda parte del curso: Intermedio, les compartiré de igual forma mis notas.
P.D.: Hace ya algún tiempo, aquí en el blog, había publicado una muy buena introducción a docker [ver] 
Espero les sirva…
DEFCON 25!, muy bueno !
… En ese momento nació Huitzilopochtli, se vistió sus atavíos, su escudo de plumas de águila, sus dardos, su lanza-dardos azul el llamado lanza-dardos de turquesa. Se pintó su rostro con franjas diagonales, con el color llamado “pintura de niño”. Sobre su cabeza colocó plumas finas, se puso sus orejeras.
Y uno de sus pies, el izquierdo era enjuto, llevaba una sandalia cubierta de plumas, y sus dos piernas y sus dos brazos los llevaba pintados de azul. Y el llamado Tochancalqui puso fuego a la serpiente hecha de teas llamada Xiuhcóatl, que obedecía a Huitzilopochtli. Luego con ella hirió a Coyolxauhqui, le cortó la cabeza, la cual vino a quedar abandonada en la ladera de Coatépetl….
Relato del nacimiento de Huitzilopochtli – Códex Florentinus

Desde hace mucho tiempo, quería refrescar la imagen del blog, al principio utilizaba como logo la moneda azteca de Piratas del Caribe, porque en ese momento no encontré una imagen que representará lo que quería hacer con el blog, el rumbo que quería que tomara. Además que en ese tiempo fue la única imagen que sentía que unía mi pasión por el software libre con la mitología mexica.
El nombre rootzilopochtli surge en una plática en un war room, cuyo cliente no quiero recordar
, donde los diferentes administradores (bases de datos, redes, storage, backups) debatían sobre quién de ellos era el más importante, en cierto momento de la plática, cuando entendí de lo que hablaban, sugirieron cierto sacrificio del usuario en cuestión, a lo que les comenté:
– Si van a ofrecer al usuario en sacrificio, deberían hacerlo hacía Huitzilopochtli, el dios supremo de Tenochtitlan, patrono de la guerra, el fuego y el sol. Guía, protector y patrono de los aztecas
A partir de ese día, el SysAdmin es conocido como rootzilopochtli, guardián de la palabra, señor y dador de vida a las aplicaciones, quien rige el uso correcto del sistema 
Después de mucho tiempo, de tratar de hacer un diseño propio con este concepto, desistí y encontré a la mejor diseñadora de elementos prehispánicos que existe en la actualidad, conocida en twitter como @monarobot. Ella es una artista conocida en el medio por el diseño de los Pokemayans, la versión maya de los Pokémon, esta es una muestra de su increíble trabajo:
Para el icono/logo, lo que le pedí fue tener su versión de Xiuhcóatl, el arma más poderosa de los dioses mexicas empuñada por el dios de la guerra Huitzilopochtli con la cual mató a 400 de sus hermanos con suma facilidad. Mítica serpiente de fuego, serpiente brillante, serpiente solar:

Y con su único estilo creo el diseño que engalana e identifica desde hoy al blog:

Espero les guste…
Al iniciar un proyecto en Microsoft Visual Studio 2008 en Windows 10, aparece el siguiente mensaje de error:
Unable to read the project file ‘Proyecto.vbproj’ c:\users\Proyecto.vbproj: The imported project: “C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.VisualBasic.targets” was not found. Confirm that the path in the declaration is correct, and that the file exists on disk
Se actualizó al Service Pack 1 del Visual Studio 2008 y el error seguía, luego reinstalar .NET Compact Framework NET 3.5 y nada, y al final la solución fue instalar las Power Toys for .NET Compact Framework 3.5 desde la URL de Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=13442 y listo, asunto arreglado.
COMPARTE DIGITAL.
Contra el Capital y sus muros: todas las artes.
Convocatoria a la edición cibernética del CompArte “Contra el Capital y sus muros, todas las artes”
Julio del 2017.
Compañeroas, compañeras y compañeros de la Sexta:
Hermanoas, hermanas y hermanos artistas y no, de México y el mundo:
Avatares, nicknames, webmasters, bloguer@s, moderador@s, gamers, hackers, piratas, bucaneros y náufragos del streaming, usuari@s de las redes antisociales, antípodas de los reality shows, o como-se-diga cada quien en la red, la web, internet, ciberespacio, realidad virtual o-como-se-diga:
Les convocamos, pues, porque tenemos algunas preguntas que nos inquietan:
¿Es posible otro internet, o sea otra red? ¿Se puede luchar ahí? ¿O es que ese espacio sin geografía precisa, ya está ocupado, copado, cooptado, atado, anulado, etceterado? ¿No puede haber ahí resistencia y rebeldía? ¿Se puede hacer Arte en la red? ¿Cómo es ese Arte? ¿Y puede rebelarse? ¿Puede el Arte en la red resistir la tiranía de códigos, passwords, el spam como buscador por default, los MMORPG de las noticias en las redes sociales donde ganan la ignorancia y la estupidez por millones de likes? ¿El Arte en, por y para la red banaliza la lucha y la trivializa, o la potencia y escala, o “nada qué ver, mi buen, es arte, no célula militante”? ¿Puede el Arte en la red arañar los muros del Capital y herirlo con una grieta, o ahondar y perseverar en las que ya hay? ¿Puede el Arte en, por y para la red resistir no sólo a la lógica del Capital, también a la lógica del Arte “conocido”, el “arte real”? ¿Lo virtual es también virtual en sus creaciones? ¿Es el bit la materia prima de su creación? ¿Es creado por un ser individual? ¿Dónde está el soberbio tribunal que, en la Red, dictamina qué es y qué no es Arte? ¿El Capital cataloga el Arte en, por y para la red como ciberterrorismo, ciberdelincuencia? ¿La Red es un espacio de dominación, de domesticación, de hegemonía y homogeneidad? ¿O es un espacio en disputa, en lucha? ¿Podemos hablar de un materialismo digital?
En realidad, real y virtual, es que sabemos poco o nada de ese universo. Pero creemos que, en la geografía inasible de la red, hay también creación, arte. Y, claro, resistencia y rebeldía.
Ustedes que crean ahí, ¿ven la tormenta?, ¿la padecen?, ¿resisten?, ¿se rebelan?
Para tratar de encontrar algunas respuestas, es que les invitamos a que participen… (íbamos a poner “desde cualquier geografía”, pero creemos que la red es donde tal vez importa menos el lugar).
Bueno, les invitamos a construir sus respuestas, a construirlas, o deconstruirlas, con arte creado en, por y para la red. Algunas categorías en las que se puede participar (seguramente hay más, y usted ya está señalando que la lista es corta, pero, ya sabe, “falta lo que falta”), serían:
Animación; Apps; Archivos y bases de datos; Bio-arte y arte-ciencia; Ciberfeminismo; Cine interactivo; Conocimiento colectivo; Cultural Jamming; Cyber-art; Documental web; Economías + finanzas experimentales; Electrónica DIY, máquinas, robótica y drones, Escritura colectiva; Geo-localización; Gráfica y diseño, Hacking creativo, graffiti digital, hacktivismo y borderhacking; Impresión 3D; Interactividad; Literatura electrónica e Hipertexto; Live cinema, VJ, cinema expandido; Machinima; Memes; Narrative media; Net.art; Net Audio; Performance, danza y teatro mediáticos; Psico-geografías; Realidad alterna; Realidad aumentada; Realidad virtual; Redes y Translocalidades colaborativas (diseño de comunidades, prácticas translocales); Remix culture; Software art; Streaming; Tactical media; Telemática y telepresencia; Urbanismo y comunidades online/offline; Videojuegos; Visualización; Blogs, Flogs y Vlogs; Webcomics; Web Series, Telenovelas para Internet, y eso que usted ve que falta en esta lista.
Así que bienvenid@s aquellas personas, colectivos, grupos, organizaciones, reales o virtuales, que trabajen desde zonas autónomas en línea, quienes utilicen plataformas cooperativas, open source, software libre, licencias alternativas de propiedad intelectual, y los etcéteras cibernéticos.
Bienvenida toda participación de todoas, todas y todos los hacedores de cultura, independientemente de las condiciones materiales desde las que trabajen.
Les invitamos también para que distintos espacios y colectivos alrededor del mundo puedan mostrar las obras en sus localidades, según sus propios modos, formas, intereses y posibilidades.
¿Tienen ya en algún lugar del ciberespacio algo qué decirnos, contarnos, mostrarnos, compartirnos, invitarnos a construir en colectivo? Mándanos tú link para ir construyendo la sala de exhibición en línea de este CompArte digital.
¿No tienes todavía un espacio donde subir tú material? Podemos proporcionártelo, y en la medida de lo posible archivar tú material para que quede registrado a futuro. En ese caso necesitaríamos que nos den un link a la nube, hospedaje cibernético o cosa similar de su preferencia. O que nos lo manden por correo electrónico, o lo suban a una de nuestras nubes o al FTP.
Aunque nos ofrecemos a hospedar todo el material, porque nos gustaría que formara parte del archivo de arte en red solidario, también vamos a ‘linkear’ a otras páginas o servidores o geo-localizaciones, porque entendemos que, en la época del capital global, es estratégico descentralizar.
Así que como gusten:
Si quieren dejar la información en sus sitios, con sus formas y sus modos, podemos linkearlos.
Y si necesitan espacio, también estamos para hospedarlos.
Bueno, pueden escribirnos un correo con la información de su participación. Por ejemplo, el nombre de los creadores, título, y la categoría en la que quieren que esta sea incluida, así como una pequeña descripción y una imagen. También díganos si tienen espacio en internet y sólo necesitan que pongamos un link, o bien si prefieren que la subamos al servidor.
El material que se vaya recibiendo desde el momento que aparezca la convocatoria, se irá clasificando en distintos apartados según su (in)disciplina. Las participaciones se harán públicas durante los días del festival para que cada individuo o colectividad lo navegue, use (o abuse) y difunda en sus espacios de reunión, calles, escuelas, o donde prefiera.
Las participaciones se publicarán como entradas y links.
También se publicará un programa de streaming en directo. Las actividades serán archivadas por si alguien no alcanza a verlas en vivo.
El correo al cual tienen que escribir para mandarnos sus links y comunicarse con nosotros es:
compas@comparte.digital
La página donde se irán montando los links a las participaciones, y la cual estará en pleno funcionamiento a partir del 1º de agosto de este año de 2017, es:
Desde ahí también se harán transmisiones y exposiciones, del 1º de agosto y hasta el 12 de agosto, de distintas participaciones artísticas desde su ciberespacio local, en distintas partes del mundo.
Bienvenidoas pues a la edición virtual del CompArte por la Humanidad:
“Contra el Capital y sus muros, todas las artes… también las cibernéticas”
Vale, salud y no likes, sino dedos medios up and fuck the muros, delete al capital.
Desde las montañas del Sureste Mexicano.
Comisión Sexta, Newbie but On-Line, del EZLN.
(Con mucho ancho de banda, mi buen, al menos en lo que a la cintura se refiere -oh, yes, nerd and fat is hot-)
Como ya es toda una costumbre, el próximo 28 de Julio, se celebrará internacionalmente el Día del Administrador de Sistemas. Para esta su 18a edición, con el apoyo de varios patrocinadores a SysArmy México, nos reuniremos para compartir historias y anécdotas al lado de una buena botana y una ronda de retas al estilo de la vieja escuela
, la invitación es extendida a quién guste acompañarnos; a los primeros en llegar, SysArmy México les tiene preparadas varias sorpresas:
La cita es en el Arkeid Bar, cerca de las 7 PM y hasta que las obligaciones nos lo permitan. La dirección es:
Monterrey 230,
Roma Norte,
Cuauhtémoc, CDMX
La reservación esta a nombre de Wendy Fabela.
Allá nos vemos!! 
Este post nace a través de este enlace Dataselfie, conociendo al Algoritmo de Facebook y su Machine Learning. en el que hablan de como funciona el proceso de la publicidad que te sale en facebook, a través del tiempo ya has dibujado tu perfil en facebook sea por búsqueda o por likes todo lo que hagas dentro de esa red social te va a salir, luego que ya saben que es lo que te gusta te empiezan a mandar publicidad acorde a ella, nunca se habían realizado esa pregunta ¿Por que me sale esto?. si quieren conocer que facebook sabe mas que ustedes tranquilamente, pueden abrir este enlace Preferencias Ads en Facebook
El cual con la sesión abierta de facebook, desglosan en Intereses, y veras todo tus gusto, lo que por alguna razón buscaste o le diste por omisión. Ahí te conocerás realmente que es lo que te gusta.
Ya que donaste los datos, que puedo hacer.
Lo mas sensato es darse de baja de una red social donde juegan con tu información. si quieres seguir usándolo lo mas lógico seria usar AdsBlock que lo puedes instalar en firefox y chrome, no vas a ver mas publicidad pero igual en cualquier momento que abras un enlace vas a empezar a crear nuevamente tu perfil.
Hace años 10 años una persona que respeto me compartió este video sigue vigente creemos que los servicios que usamos son gratis realmente.
https://www.youtube.com/watch?v=6bYLRGS3vFs
Registro WordPress

La solución es de forma inmediata, dentro del Escritorio (al que accedas administración del WordPress), le vas hacer click en a Ajustes, Generales y activas o desactiva el checkbox de: Cualquiera puede registrarse. depende para lo que requieras.
Si lo que tienes problema con usuarios que se registran y en realidad son robots o personas spammers, usa el plugin que mencione anteriormente http://blog.julioh.com.ve/?p=476 en el cual se hace ocultar la url de wp-admin otra forma es usando .httpass dentro de los directorios y bloqueando su acceso, o en su momentos podrías saber cual es tu ip para indicarle desde donde te conectas por ejemplo algo así.
order allow,deny
deny from 8.8.8.8
deny from 8.8.8.9
allow from all
WordPress por ser un CMS mas usado pues tienes vulnerabilidades y necesitamos blindarlo en seguridad y que mejor usando plugins para que no tengas una mala experiencia.
Esta es una de esas en la cual la ruta ../wp-admin/ la remplazas para evitar acceso a ella.

En el caso el plugin WPS Hide Login no vas a eliminar /wp-login.php o /wp-admin , pero si lo va remplazar para no sea visible y colocaremos una url que solo sabremos nosotros.
Lo buscamos WPS Hide Login en plugins haz clic en Instalar y posteriormente en Activar.
En el plugin accede a Ajustes, Generales y establece la palabra de paso que sustituirá al clásico:
wp-admin por no-vasaentrar guardas los cambios y pruebas.
Configuración del plugin
Cuando intentas acceder a http://tu-dominio.com/wp-admin
Te dará un 404 not found
De igual forma también para /wp-login.php no existen.
Prueba de acceso incorrecta
Si por el contrario pones la url de tu dominio con la palabra de paso establecida:
http://tu-dominio.com/?no-vasaentrar
Te va a salir tu panel para acceder, que se busca con esto, evitar ataques de diccionario, evitar suscripciones y proteger tu CMS de la mejor manera.
si por casualidad no te acuerdas de la url, puedes borrar el plugin en la carpeta wp-content y vuelve a la ruta original
Algún día te has preguntado, ¿Cuantas líneas de código he programado?, ¿Este proyecto cuantas líneas de código tiene? entonces tienes 2 formas de hacerlo.
MÉTODO 1
1.- Preparar tu libreta (o un Excel)
2.- Abrir cada archivo en tu editor de texto favorito y contar línea por línea.
3.- Hacer las sumas en tu libreta y listo.
MÉTODO 2.
1.- Descargar el programa CLOC de http://cloc.sourceforge.net/ o en GitHub https://github.com/AlDanial/cloc
2.- Ejecutar el comando cloc CARPETA_PROYECTO
3.- Listo!!
Aquí esta la versión para Windows: https://sourceforge.net/projects/cloc/files/ o en GitHub tiene más opciones para su instalación para diferentes sistemas.
Y al final tendremos algo así:

Como pueden observar clasifica por diferentes lenguajes de programación y hasta pasar los resultados a una base de datos SQL.
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Desde que se hicieron populares los proveedores de Internet, y la llegada en masa de servicios a los negocios y a las casas. Se entregaron “terminales” o modems o ADSL…
Con la llegada de los inalámbricos, la se;an poda llegar a los vecinos. Con lo que se hizo popular la “robadera” de intenret, programas, para descifrar la password del vecino, principalmente los modems con la tecnología WEP, al parecer esta quedando en el pasado, como un hecho de bíblico, miles de usuario cambiaron su antiguo modem con una nueva tecnología WAP, poco susceptible al robo de password.
Bien, resulta que por razones no muy claras, algunos modems vienen de fabrica pro configurados con un password por default. Es decir desde que son programados se le asigna un password siguiendo un sencillo algoritmo.
Siempre inicia con 03, luego 4 octetos de la mac addres, y los 2 últimos numeros del SSID.
Asi que desde que solo es necesario scanear la red wifi y encontrar estos modems.
No contentos con eso, el password permite el acceso al modem, por medio de la pagina de administración. Y desde ahí ganar mas privilegios. (se pueden revertir haciendo un hard reset desde el modem)
Bien, si por alguna rozan cambias el password que viene de fabrica para administrar el moden y requieres de soporte técnico de la empresa, te diren por que le cambiaste?
y no pueden ayudarte…. hasta que le pongas el password original. (–)
The post En serie appeared first on Apuntes tecnologias de la información.
Hace unos días comentaba como hacer la instalación de docker en centos 7, pues bien al empezarlo a utilizar una de las cosas que no me gustaron es que el segmento que utiliza, el segmento que deseo utilizar para mis pruebas es un pequeño segmento /28 que ya es ruteable por mi VPN, por la VPN punto a punto y desde mi casa sin necesidad de cambiar reglas o agregar nuevas, me puse a buscar información y no encontré nada que funcionara, ni lo que menciona la pagina de docker (Build your own bridge). Ya que menciona que hay que cambiar /etc/default/docker que en parte es cierto pero no menciona que esto solo es para versions sysvinit y no aplica para los que usamos systemd.
La forma que lo pude hacer no se si sea oficial o soportada, pero es la que a mi me funciono
Creamos el archivo /etc/default/docker y agregamos el segmento que queremos utilizar de la siguiente forma
DOCKER_OPTS="--bip=172.20.2.65/28"
hasta aquí es lo que muestra la pagina oficial y que no funciona
Modificar la unidad que inicia el demonio de docker, este es el archivo original
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target firewalld.service [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process [Install] WantedBy=multi-user.target
Deberá quedar de la siguiente forma
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target firewalld.service [Service] EnvironmentFile=-/etc/default/docker Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd $DOCKER_OPTS ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process [Install] WantedBy=multi-user.target
En la sección de servicio se agrega EnvironmentFile=-/etc/default/docker y se modifica ExecStart=/usr/bin/dockerd $DOCKER_OPTS
En mi caso reinicie el equipo y con esto fue suficiente docker ya corre en mi segmento personalizado
Constantemente estoy haciendo pruebas de aplicaciones, proyectos o ideas que me parezcan interesantes, normalmente utilizo mi laptop, pero ahora que tengo un VPS para este fin se me ocurrió hacer pruebas con Docker, un extracto de la Wikipedia menciona algo así:
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux Docker utiliza características de aislamiento de recursos del kernel de Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que “contenedores” independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales. Docker en Wikipedia.
La instalación es sumamente sencilla con un yum install docker y listo, ya que docker se encuentra en los repositorios de Centos, el único detalle es que no es la ultima versión. En este caso habrá que hacer unos pequeños pasos.
sudo yum check-update
Si se tienen actualizaciones por aplicar pues actualizamos si no se procede a ejecutar el script oficial, el cual agrega el repositorio oficial e instala los paquetes.
curl -fsSL https://get.docker.com/ | sh
Iniciamos el servicio
sudo systemctl start docker
Habilitamos para inicio automático en caso de querer que se inicie solo.
sudo systemctl enable docker
Si queremos evitar teclear sudo cada que vamos a ejecutar comandos de docker, agregamos al groupo docker al usuario que deseamos.
sudo usermod -aG docker tyo100
Y listo, con eso tenemos docker y podremos ir probando los contenedores que nos encontremos en la red o crear los nuestros.
Conforme vaya avanzando ire publicando mas cosas relacionadas a Docker.
A few days ago I returned -incredibly satisfied- from attending my personal 7th Southern California Linux Expo, which was the 15th edition of the event. I’ve read a thing or two about the beginning of Scale, and how it has grown by the years to become one of the largest and more important FOSS events, not only in the US but also worldwide. From my perspective I can tell that the event gets better by every year.
The first five events that I attended were hosted in the LAX Hilton Hotel, which was great for me because transportation was fast, easy and very affordable 
Since last year, it has switched location to the beautiful city of Pasadena and its Convention Center has proben to be an excelente venue for such amazing event. I must confess that the first time I heard they were moving it away from LAX I felt a bit uncertaint and maybe a little discouraged because of the long distances to Pasadena. I’m now glad and relieved to know that my fears had no reason to be and SoCal is always warm welcoming area to visit.
It is very satisfying to see a lot of familiar faces of Scale crew working their a**es, giving the best of theirselves to deliver this world class convention. Many of them have participated since Scale first edition.
It is also a great satisfaction to say hello to my old Fedora and RedHat friends. I’ve know many of them since my first Scale in 2011 and some of them even earlier when I attended my first -and so far only- Fedora Users and Developers Convention FUDCon back in 2010 in Tempe, AZ.
Two faces I particularly missed this year and I couldn’t avoid to notice: one of them is my good friend Larry Cafiero -former Fedora contributor and Scale press rockstar- and the other was Lord Drachenblut -aka Mathew Williams- who left this world way to early after a long and painful battle with cancer. I’ve just met Matthew last year in Scale14x, my travel confirmation came a bit late and I was not able to book a hotel nearby on time for the event. I asked Matthew if I could crash into his room and he said yes with no hesitation. I had the lucky chance of get to know him not only during the event activities and booth duty, but also after hours and during the stay. It did not take me long to see what Matt was made of and the kind of person he was. Matthew worked a lot in communites and has earned a special place among many of the attendes, he is being missed.
As part of the booth activities, we wanted to do something as a tribute to him, so we had this signing book in which people spontaneously approached and wrote some words of comforting and something his family would keep.
In other order of ideas, one thing that was very significant for me is that this was the first time I got to give a talk -not only at Scale- but also at an event out of my country. Yes, I bragged a bit on becoming an international speaker but I felt so happy and confident to share a bit of my experience with Fedora to a foreign language speaking audience and also to give back a little of the many things that I have received by participating in this wonderful project. Thanks to Perry Rivera for asking me to participate and allowing me to share the stage with him. Thanks also to Clint Savage for taking it easy when I mocked on him. Great comeback BTW 

Right after this talk we had our Fedora Meetup, in which we interacted with the audience listening on their experiences using Fedora and their suggestion on how to improve it. For Fedora we had Perry, Scott Williams, Brian Monroe and myself. We also had Adam Miller from Red Hat and some other RH folks who contributed to make a great exchange of ideas. This was one rich experience I will ever bear in my mind.

Talking about the booth duty, it is always very satisfactory to interact with the attendees. There is always young people eager to learn knew things and it is always very nice to help a bit with their initiatives. Being in SoCal, you can always expect a big latino audience. I met people from several countries and several american citizen with latino roots. Some of them appreciate and treasure to talk to a friendly person in spanish, and I found that quite satisfying as well.
Scale15x is a wrap now and I only hope that I could be there next year. I’m sure that I wouldn’t be disappointed because Scale is about setting the bar higher everytime.
Hoy mientras hacíamos fila para cruzar al otro lado, probablemente a comprar cosas triviales, recordé lo afortunado que soy al ver (como es usual en la frontera) la cantidad de gente no solamente pidiendo “limosna” sino “pasando el trapo” por los carros, vendiendo dulces u ofreciendo algún tipo de servicio para ganarse la comida del día, aquellos con suerte están mas o menos sanos, sino es por las marcas físicas de las drogas son también mas o menos afortunados, los menos, en sillas de ruedas sin piernas o hasta en patinetas como modo de transporte para discapacidad improvisado y moviéndose como pueden.
Podría estar lleno de clichés pero la verdad es que a diario veo personas, situaciones y entornos que me hacen pensar que tengo una vida privilegiada, de verdad! pues más allá del hecho de que tengo “estabilidad económica” tengo muchas cosas que otras personas (no necesariamente ajenas a mi, por cierto) adolecen; una extraordinaria pareja, un trabajo que disfruto mucho, buenos amigos y salud. En realidad considero que “hago lo que quiero” y aunque suene muy hedonista de mi parte es la verdad. Prácticamente son pocas las cosas que no puedo hacer por alguna limitante física, emocional o económica y por eso estoy agradecido conmigo mismo en primera instancia, en mi mujer, familia, amigos y en genreal cualquier persona que me ha tendido la mano de alguna u otra forma durante mi vida con la cual por supuesto estoy también sumamente agradecido pues no creo en deidades.
Lo anterior es solo contexto sobre el tema principal: el ser agradecido en tiempos de abundancia, es decir, recordar que no siempre tuvimos o tendremos todo lo que deseamos y que hay que ser humildes, aun cuando “las vacas están gordas”. Este post lo deshebré en mi cabeza hace algunos días después de leer un artículo de un colega sobre le tema de los “head-hunters” que no es mas que un término que suena bonito para decir reclutador. El artículo es simplemente una serie de tweets (como 10) sobre cosas que NO debería hacer un reclutador, particularmente con prospectos que se dediquen al tema de la tecnología. Y es que si hay demanda de algo en este momento es de ingenieros, particularmente los que se dedican a la creación de software.
En síntesis, lo que Miguel expone es la falta de profesionalismo de algunos reclutadores para siquiera investigar sobre el puesto que están solicitando o los requerimientos de la vacante así como los conocimientos que debería tener dicho prospecto. Si bien Miguel trata puntos con los que estoy totalmente de acuerdo (como el hecho de que un reclutador de programadores o personas que nos dedicamos a tecnología siga pidiendo un CV formal en vez de ver nuestro perfil de LinkedIn por ejemplo) hay una constante entre los colegas, ingenieros, programadores y anexos: “Ah como chingan los reclutadores”, lo leo en redes sociales y lo escucho constantemente en mis compañeros de trabajo.
Vivimos en tiempos complicados tanto económicos como sociales. Particularmente, en el ámbito laboral, ya sea que no encuentras trabajo o está pésimamente remunerado y con exigencias propias de un sistema de feudos. Afortunadamente, para quienes nos dedicamos a la programación, eso es solo una noticia en un diario nacional o en un artículo de economía pues nuestro sector no solo sigue a la alza sino que sigue demandando más profesionistas de los que hay disponibles, ergo, tanto empresas de reclutamiento como departamentos de RH se pelean, literalmente, a la gente.
Precisamente, por esta abundancia (que espero no sea otra burbuja a punto de reventar) es que me siento afortunado y agradecido pero, ¿Sáben con qué me siento agradecido también? Con los reclutadores!
Quienes se dedican a contratación de personal son personas de carne y hueso como tu, bendito programador hijo de Dios Padre y Madre Santísima!, y como yo. La diferencia es que, además del ego bastante inflado, tenemos la sartén por el mango… y el mango también, y lo que esto significa es que nosotros somos la oferta, que es escasa y nuestros amigos reclutadores son la demanda, y son mucha. Estoy seguro que si los papeles se invirtieran, es decir, si el mercado estuviera saturado o con pocas ofertas, la mayoría de mis colegas suavizaría un poco su discurso.
He tenido la oportunidad (y necesidad) de tener que ser parte del proceso de reclutamiento, entrevista y análisis de perfil de varias personas durante mi carrera y de verdad es no solamente tedioso sino difícil, aun para alguien técnico como yo. Si bien se debe tener ciertos parámetros de calidad para dicho proceso, el perfeccionarlo está tan lejos de la realidad como lo es que el código que escribimos a diario no tenga ningún error ni requiera cambios. La diferencia es grande: los reclutadores están a la vista de todos, públicamente, mientras que nuestras metidas de pata (por no decir pendejadas) se quedan en nuestro equipo, si acaso, con el administrador de proyectos. Como no estamos tan expuestos pues nos sentimos perfectos. Le llamo el síndrome del programador recluso.
Correos con ofertas de trabajo me llegan muy a menudo y aunque algunos ni siquiera los contesto precisamente por coincidir con algunos de los puntos que Miguel expone en su artículo, como el hecho de ofrecerme vacantes que no tienen nada que ver con mi perfil, trato de ser agradecido de la manera que me enseñaron en mi casa: decir “No, gracias”. No es tan difícil. Usualmente me lleva 1 minuto redactar una respuesta simple a la persona, de entrada agradeciéndole tomarse el tiempo de considerarme en su selección, posteriormente exponiendo las razones por las cuales no estoy disponible en este momento para dicha oportunidad (tomen nota de la diferencia entre “no puedo” a “no me interesa”, psicología mis estimados) y finalmente despidiendome y dejando la “puerta abierta” para futuras oportunidades.
La mayoría de los ingenieros que conozco tienen poco tacto y ni que decir de la capacidad para asimilar el hecho de que parte de su reputación está en esas respuestas. La vida da muchas vueltas, y es importante ser agradecido. Podríamos escudarnos en el ya bastante trillado cliché de que los ingenieros y programadores no tienen habilidades sociales y por eso reaccionamos así, pero me pregunto ¿Si con el tiempo hemos aprendido a ser unos hijos de puta ególatras, no podríamos también aprender a ser agradecidos? Quizá solo somos “medio tontos“.
Así que queridos reclutadores, head-hunters y personal de recursos humanos dedicado a buscarnos trabajo: Gracias! Y aunque hoy no tenga disponibilidad para tu proyecto espero podamos coincidir en un futuro para otra posible oportunidad.




All the Valentines I have made! The albino bunny isn’t available on my etsy this year unless I get requests for it, but the rest are!
hardhedgehoglife.etsy.com



(Un)happy Valentine’s Day! To celebrate, here’s three poems from me, your reluctant cupid:
“I h8 you”
“Roses are red,
Violets are blue,
NO.”“Roses are red,
Violets are blue,
Ur gross,
Ew.”For you eager romantics.
That day for eating
chocolateshedgehogs is coming up again.