<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>userlinux.net</title><link>http://http://www.userlinux.net/</link><description>Userlinux.net es el rincón personal donde escribe Óscar M. Lage sobre sus vivencias principalmente tecnológicas y su día a día trabajando con programación, sistemas y demás terminología hipster.</description><atom:link href="http://http://www.userlinux.net/feed.rss" rel="self"></atom:link><language>es-es</language><lastBuildDate>Tue, 14 Dec 2021 11:08:10 +0000</lastBuildDate><item><title>Recently: 2021-til-11</title><link>http://http://www.userlinux.net/recently-2021-til-11.html</link><description>&lt;p&gt;Lately I got that feeling that I needed to write again. Don't know why but probably this loneliness feeling, working from home without almost any social contact is one of the root keys.&lt;/p&gt;
&lt;p&gt;So, did a quick tour through the photos since &lt;a href="../../../../recently-2021-02.html"&gt;the last Recently post&lt;/a&gt; and found that I could mention a couple of - &lt;em&gt;doubtful&lt;/em&gt; interest - things...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trips&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We did lot of short trips this year. I bet that lockdown and the fear to be locked again helped a bit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Family trip by the Galician Coast (&lt;em&gt;Ares&lt;/em&gt;, &lt;em&gt;Coru&amp;ntilde;a&lt;/em&gt;, &lt;em&gt;Burela&lt;/em&gt;, &amp;nbsp;&lt;em&gt;Barreiros&lt;/em&gt;). It was always a pleassure to be at the beach, even in March.&lt;/li&gt;
&lt;li&gt;Couple of days here and there in summer: &lt;em&gt;O Grove&lt;/em&gt;, &lt;em&gt;Sanxenxo&lt;/em&gt; (&lt;em&gt;Pontevedra&lt;/em&gt;), &lt;em&gt;Cee&lt;/em&gt;, &lt;em&gt;Fisterra&lt;/em&gt; (camping experience included), &lt;em&gt;Sada&lt;/em&gt; (Coru&amp;ntilde;a) in summer.&lt;/li&gt;
&lt;li&gt;Even train was a perfect option (kids were mostly in shock) for a really quick 1-day trip to &lt;em&gt;Sarria&lt;/em&gt; (a location near our place).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-til-11/gallery/recently-2021-til-11-summer.jpg" alt="Trips" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Twitch&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As an exercise of - dunno how to say - fight against the low level of daily communication, I've started to play with Twitch and did some live sessions, mostly programming. It was the perfect excuse to have fun with &lt;em&gt;Rust&lt;/em&gt; and &lt;em&gt;Go&lt;/em&gt;. Now the internal fight is to be able to reach the previous month hours :). There is not so much to see but &lt;a href="https://twitch.tv/oscarmlage"&gt;this is my account&lt;/a&gt; just in case you feel curious about it.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-til-11/gallery/recently-2021-til-11-02.jpg" alt="Twitch" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Personal&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My grandmother has turned 90!... but sadly due covid we couldn't celebrate it yet.&lt;/li&gt;
&lt;li&gt;Did some tiny trips here and there to keep the contact with the family outdoors mostly (&lt;em&gt;Lagos de Teixeiro&lt;/em&gt;, &lt;em&gt;Penas de Rodas&lt;/em&gt;, lots of walks by the &lt;em&gt;R&amp;iacute;o Rato&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;We've started exercising again, in a different way. We are not in mood to go to the usual gym with lot of people hardly breathing around (with and without masks), so we moved to a new place with almost individual sessions. Not as fun as the irons for me but it should work.&lt;/li&gt;
&lt;li&gt;Got the 2 vaccination shots!&lt;/li&gt;
&lt;li&gt;Twins won a literary contest at school!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-til-11/gallery/recently-2021-til-11-03.jpg" alt="Personal" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vanlife&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lots of advances here, we wanted to make it possible for the summer but it couldn't be, so we're now in a kind of "on-hold" state, overall process is about &lt;em&gt;85%&lt;/em&gt; I'd say.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Picked the van from &lt;em&gt;NorthCampers&lt;/em&gt; with all the electricty and some other stuff already done (solar panels, inverter, booster, water tanks, boiler...).&lt;/li&gt;
&lt;li&gt;Done: Isolation, windows, floor, kitchen and shower furniture, beds, all the plumber stuff, electrical plugs, usbs...&lt;/li&gt;
&lt;li&gt;To do: Install kitchen and shower, storage furniture, check that all works - hopefully - and get the papers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-til-11/gallery/recently-2021-til-11-04.jpg" alt="Vanlife" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real Life&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And meanwhile, life happens with it's ups and downs. But doesn't worth to waste words on it.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/recently-2021-til-11.html"&gt;Recently: 2021-til-11&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 14 Dec 2021 11:08:10 +0000</pubDate><guid>http://http://www.userlinux.net/recently-2021-til-11.html</guid></item><item><title>15 de octubre, 2021</title><link>http://http://www.userlinux.net/15-de-octubre-2021.html</link><description>&lt;p&gt;&lt;em&gt;Lo-Fi&lt;/em&gt; de fondo (&lt;em&gt;D&amp;eacute;j&amp;agrave;-vu&lt;/em&gt;, de &lt;em&gt;mell-&amp;oslash;&lt;/em&gt;), unas velas en la tostada del desayuno, el no tener demasiada carga productiva encima y el empe&amp;ntilde;o de mi amigo &lt;em&gt;Alberto&lt;/em&gt; han hecho que la reflexi&amp;oacute;n anual sea esta vez matutina.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;4.3&lt;/em&gt; suena a inestable - espero que no - &lt;em&gt;101011&lt;/em&gt;, &lt;em&gt;0x2B hex&lt;/em&gt;, &lt;em&gt;1.356.976.800&lt;/em&gt; segundos de una historia que, d&amp;iacute;a a d&amp;iacute;a, no se para ni para tomar aliento.&lt;/p&gt;
&lt;p&gt;Hace justo un a&amp;ntilde;o empezaba una nueva aventura con una furgoneta - no en su mejor estado, todo hay que decirlo, de hecho tiene mucho que ver que no haya escrito reflexi&amp;oacute;n en 2020&amp;nbsp; - y muchas ganas de aprender. A d&amp;iacute;a de hoy todav&amp;iacute;a no est&amp;aacute; acabada y tampoco s&amp;eacute; si he aprendido todo lo que deber&amp;iacute;a, pero estoy muy contento de haberme metido en esta historia porque he hecho y he descubierto cosas.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Haced cosas&lt;/em&gt;, que esto se pasa muy pronto.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/15-de-octubre-2021.html"&gt;15 de octubre, 2021&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 15 Oct 2021 08:40:19 +0000</pubDate><guid>http://http://www.userlinux.net/15-de-octubre-2021.html</guid></item><item><title>Let's Encrypt's ROOT Certificate expired!</title><link>http://http://www.userlinux.net/lets-encrypts-root-certificate-expired.html</link><description>&lt;p&gt;And it happened, yesterday (30th September, 2021), the root certificate that &lt;abbr title="Lets Encrypt"&gt;LE&lt;/abbr&gt; was using expired. How should I deal with this?. Well, it depends. If your OS is recent probably you just need to update the package where the &lt;code&gt;ca-certificates&lt;/code&gt; are, but total different story if your OS is as old as WW1.&lt;/p&gt;
&lt;p&gt;In my case I've a &lt;em&gt;Debian7&lt;/em&gt; using and comsuming some &lt;abbr title="Lets Encrypt"&gt;LE&lt;/abbr&gt; certs in both ways so I woke up this morning with the smell of alert in the atmosphere. After reading some literature&amp;nbsp;&lt;a href="https://scotthelme.co.uk/lets-encrypt-old-root-expiration/"&gt;here&lt;/a&gt; and &lt;a href="https://letsencrypt.org/certificates/"&gt;there&lt;/a&gt; and talked about it with some mates, decided to manually update the certificate. I was forced to proceed in that way because the package updates for &lt;code&gt;deb7&lt;/code&gt;&lt;span&gt; are totally out of date (or even closed I'd say).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We can see the error here:&lt;/p&gt;
&lt;pre class="bash"&gt;$ openssl s_client -host oscarmlage.com -port 443 -showcerts
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify error:num=20:unable to get local issuer certificate
verify return:0
&lt;/pre&gt;
&lt;p&gt;So, first step is to allocate the file where the&amp;nbsp;&lt;code&gt;LE&lt;/code&gt; cert is: &lt;code&gt;DST_Root_CA_X3.crt&lt;/code&gt;, placed in &lt;code&gt;/usr/share/ca-certificates/mozilla/&lt;/code&gt;. Once we found it we can ensure that dates are the root of the issue, we're looking for &lt;a href="https://censys.io/certificates/0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739/openssl"&gt;this one&lt;/a&gt; (&lt;code&gt;openssl x509 -in DST_Root_CA_X3.crt -noout -text&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/lets-encrypts-root-certificate-expired/gallery/letsencrypt-certificate-expired01.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Ok, we're on the way, next step is to find out where is the equivalent cert in some other more recent Debian (maybe a VM can help here), we're looking for &lt;code&gt;ISRG_Root_X1.crt&lt;/code&gt; in &lt;code&gt;/usr/share/ca-certificates/mozilla/&lt;/code&gt;, we can ensure it's the one we're looking for &lt;a href="https://censys.io/certificates/6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f/openssl"&gt;here&lt;/a&gt;&amp;nbsp;(&lt;code&gt;openssl x509 -in ISRG_Root_X1.crt -noout -text&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/lets-encrypts-root-certificate-expired/gallery/letsencrypt-certificate-expired02.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Take a look to the &lt;code&gt;X509v3 Subject Key Identifier&lt;/code&gt;, in both cases (&lt;code&gt;DST_Root_CA_X3.crt&lt;/code&gt; and &lt;code&gt;ISRG_Root_X1.crt&lt;/code&gt;) it should have the same key:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;C4:A7:B1:A4:[...]:60:85:89:10&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now that we already have them handy, we need to copy the good one, remove the older other in the affected machine and refresh the certificates:&lt;/p&gt;
&lt;pre class="bash"&gt;$ scp user@newerhost:/usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt /usr/share/ca-certificates/mozilla/
$ mv /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt /tmp/
&lt;/pre&gt;
&lt;pre class="bash"&gt;$ echo "/usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt" &amp;gt;&amp;gt; /etc/ca-certificates.conf
$ vim /etc/ca-certificates.conf
  # remove the /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt line
$ update-ca-certificates --fresh
Clearing symlinks in /etc/ssl/certs...done.
Updating certificates in /etc/ssl/certs... 171 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
&lt;/pre&gt;
&lt;p&gt;And we can test if it works now:&lt;/p&gt;
&lt;pre class=" language-bash"&gt;$ openssl s_client -host oscarmlage.com -port 443 -showcerts
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = oscarmlage.com
verify return:1
&lt;/pre&gt;
&lt;p&gt;Of course, best approach in this kind of stuff is proceed with the proper update, upgrade, etc... but not always is doable/possible - there are many reasons I won't mention now -. So I hope this post helps if you're in a situation where the updates are not the solution.&lt;/p&gt;
&lt;p&gt;Note, the certs itselves (the old and the new one) can be found here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://censys.io/certificates/0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739/openssl"&gt;DST_Root_CA_X3.crt &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://censys.io/certificates/6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f/openssl"&gt;ISRG_Root_X1.crt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cheers!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/lets-encrypts-root-certificate-expired.html"&gt;Let&amp;#39;s Encrypt&amp;#39;s ROOT Certificate expired!&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 01 Oct 2021 14:21:39 +0000</pubDate><guid>http://http://www.userlinux.net/lets-encrypts-root-certificate-expired.html</guid></item><item><title>Got vaccinated</title><link>http://http://www.userlinux.net/got-vaccinated.html</link><description>&lt;p&gt;I got first shot yesterday morning. It was really quick, just went there, showed a QR Code and five mins later I got the vaccine. Then had to wait over 15 mins more to ensure I was feeling right and that was all. Easy peasy.&lt;/p&gt;
&lt;p&gt;Easy peasy for the ordinary citizen but quite a process for the scientists and for the humanity in general terms. In March 2020 (a year and something ago), people hardly knew what it was and what this stuff would mean for our lives. And now - I emphasize, just fews month later - we already have a preventive solution and people out there continue working on moving forward against this kind of situations.&lt;/p&gt;
&lt;p&gt;I just wanted to drop this few lines for historical purposes - I feel a bit like living in the future - and of course to thank all the people working hard day by day who made possible such a great advance.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/got-vaccinated.html"&gt;Got vaccinated&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 25 Jun 2021 06:59:06 +0000</pubDate><guid>http://http://www.userlinux.net/got-vaccinated.html</guid></item><item><title>Stay static</title><link>http://http://www.userlinux.net/stay-static.html</link><description>&lt;p&gt;Bunch of years ago, when social networks did not exist (&lt;em&gt;wow&lt;/em&gt;) the web prettended to be pretty simple. As simple that some content management systems were designed to do a kind of hard work: build a static site from the dynamic one. Easier to be served, maintained and much much faster... win-win!.&lt;/p&gt;
&lt;p&gt;Now, bunch of years later, we're going back to our roots. And I intend the same too.&lt;/p&gt;
&lt;p&gt;For me, or rather, for my use case with this humble site, it doesn't make sense to keep maintaining it as it is now, a super-outdated &lt;em&gt;django&lt;/em&gt; own-cms with many complex elements to connect with &lt;em&gt;redis&lt;/em&gt;, &lt;em&gt;mysql&lt;/em&gt;, some kind of &lt;em&gt;memcache&lt;/em&gt; stuff in the middle of nowhere and some other stuff I'm shamed to write about. The goal has been achieved long ago: play a bit with the more popular python framework.&lt;/p&gt;
&lt;p&gt;I've been playing - and still playing - with some of these tools that keeps the work static and it's really hard to decide which one fits better my needs, because they're all quite similar. For the record:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/" target="_blank"&gt;Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.getlektor.com/" target="_blank"&gt;Lektor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getnikola.com/" target="_blank"&gt;Nikola&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jekyllrb.com/" target="_blank"&gt;Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gatsbyjs.com/" target="_blank"&gt;Gatsby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuepress.vuejs.org/" target="_blank"&gt;VuePress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.11ty.dev/" target="_blank"&gt;Eleventy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;p&gt;Will see what is the one that leads the victory.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;On the other hand I even didn't decided if &lt;a rel="noopener" href="../../../../" target="_blank"&gt;userlinux&lt;/a&gt; will be the domain/name because the archive of posts here are not relevant anymore and I rarely talk about linux. I feel more comfortable with &lt;a rel="noopener" href="https://oscarmlage.com" target="_blank"&gt;oscarmlage&lt;/a&gt; so... I need to sleep on it.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;But what I've already decided is that - definitely - it's time to move. Or rather, it's time to stay static ;).&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/stay-static.html"&gt;Stay static&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 07 May 2021 18:18:15 +0000</pubDate><guid>http://http://www.userlinux.net/stay-static.html</guid></item><item><title>Recently: 2021-02</title><link>http://http://www.userlinux.net/recently-2021-02.html</link><description>&lt;p&gt;Sigamos tirando del hilo de los &lt;em&gt;recently&lt;/em&gt;, son la excusa f&amp;aacute;cil para volver a contar cosas. Le he estado dando vueltas a ver si encajaba mejor una estructura de subtemas m&amp;aacute;s o menos fija o variar seg&amp;uacute;n lo acontecido y creo que de momento me decanto por lo segundo. Aunque todo &amp;uacute;ltimamente se ha vuelto bastante mon&amp;oacute;tono, no quiero que no tener material de un tema en concreto se convierta en un problema para retrasar publicaciones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Personal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En marzo del a&amp;ntilde;o pasado se empezaba a escribir una triste p&amp;aacute;gina en la historia de la humanidad que, entre muchas otras cosas, ha hecho de las videollamadas algo distinto a lo que eran. Creo que a todos nos pas&amp;oacute; un poco lo mismo, comenzamos muy fuerte y las hemos aborrecido. No nos funcionan, como ocio al menos no. Lo hemos intentado de nuevo y est&amp;aacute; muy bien poder ponerse al d&amp;iacute;a, pero nada que ver con el caf&amp;eacute; de toda la vida. Seguro que pronto volveremos.&lt;/p&gt;
&lt;p&gt;Otra experiencia nueva - distinta - ha sido el carnaval de este a&amp;ntilde;o. Pese a que en los colegios no hab&amp;iacute;a fiestas, desfiles ni nada parecido, el viernes permitieron a los ni&amp;ntilde;os ir disfrazados igualmente. A mediod&amp;iacute;a, a la salida, se quedaron jugando con sus compa&amp;ntilde;eros de clase un rato en el parque. Para ellos fue la mejor de las celebraciones. Contento porque lo han valorado como un fant&amp;aacute;stico regalo, triste por las circunstancias.&lt;/p&gt;
&lt;p&gt;12 Km. Esa ha sido la distancia de nuestro primer gran paseo en bici como familia los 4. A falta de otro tipo de actividad - este mes est&amp;aacute; pr&amp;aacute;cticamente todo cerrado por las nuevas restricciones - hemos decidido dar una "peque&amp;ntilde;a" vuelta de la que he vuelto muy sorprendido, no esperaba ni la mitad.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-02/gallery/2021-02-ride.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vanlife&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seguimos avanzando con nuestro proyecto de &lt;em&gt;vanlifers&lt;/em&gt; maldiciendo los peque&amp;ntilde;os huecos y los ara&amp;ntilde;azos barra marcas de guerra del aislamiento de la furgoneta. El &lt;em&gt;kaiflex&lt;/em&gt; es un gran invento pero nos ha llevado mucho m&amp;aacute;s tiempo del que hab&amp;iacute;amos calculado rellenar cada hueco de los nervios del veh&amp;iacute;culo, as&amp;iacute; que ha sido un poco desesperante. Tambi&amp;eacute;n hemos tratado el suelo a base de lija, convertidor de &amp;oacute;xido e imprimaci&amp;oacute;n, para dejarlo un poco m&amp;aacute;s preparado de cara al futuro.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-02/gallery/2021-02-van.jpeg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Y con la &amp;uacute;ltima capa de imprimaci&amp;oacute;n todav&amp;iacute;a fresca hemos hecho nuestro &lt;em&gt;primer viaje&lt;/em&gt;, a &lt;a href="https://www.facebook.com/northcampers/"&gt;NorthCampers&lt;/a&gt;, para que nos preparen toda la &lt;em&gt;obra mayor&lt;/em&gt; y seguir sumando. Segunda fila de asientos, instalaci&amp;oacute;n de 220v + 12v + placa solar y boiler de agua. Deseando ver los avances.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-02/gallery/2021-02-trip.jpeg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Misc&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Relacionado con todo el tema &lt;em&gt;van&lt;/em&gt;, quise grabar un timelapse del aislamiento y cual fue mi sorpresa al intentar encender la GoPro Hero 4 - llevaba parada un par de a&amp;ntilde;os o as&amp;iacute; - que no funcionaba. La bater&amp;iacute;a se hab&amp;iacute;a hinchado &lt;em&gt;dentro&lt;/em&gt; de la c&amp;aacute;mara y a&amp;uacute;n despu&amp;eacute;s de operarla con todo el cari&amp;ntilde;o del mundo, no he conseguido revivirla, sniff. Y como tengo en mente grabar todo lo que pueda del proceso de camperizaci&amp;oacute;n, decid&amp;iacute; que pod&amp;iacute;a ser interesante actualizarse.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-02/gallery/2021-02-gopro.jpeg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Por otro lado no est&amp;aacute; siendo un buen momento en cuanto a lecturas / series / juegos, estoy atascado en un par de libros que empec&amp;eacute; en enero, me gustar&amp;iacute;a acabarlos pero parece que nunca encuentro ese rato en el que me apetezca avanzar. En casa hemos decidido hacer uso de los meses de prueba de Apple Arcade por culpa del &lt;a href="https://apps.apple.com/es/app/sneaky-sasquatch/id1098342019"&gt;Sneaky Sasquatch&lt;/a&gt; y, como experiencia, est&amp;aacute; siendo muy interesante en general jugar a juegos &lt;em&gt;que se puedan acabar&lt;/em&gt; y que no requieran de conexi&amp;oacute;n constante a Internet. De todas formas no creo que renueve una vez acabe el per&amp;iacute;odo de gracia.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-02/gallery/2021-02-fun01.jpeg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;No ten&amp;iacute;a en la cabeza que febrero hubiera dado para &amp;laquo;&lt;em&gt;tanto&lt;/em&gt;&amp;raquo;.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/recently-2021-02.html"&gt;Recently: 2021-02&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 12 Mar 2021 11:23:30 +0000</pubDate><guid>http://http://www.userlinux.net/recently-2021-02.html</guid></item><item><title>Tres de blogs</title><link>http://http://www.userlinux.net/tres-de-blogs.html</link><description>&lt;p&gt;Siempre me ha gustado pasarme de vez en cuando por aqu&amp;iacute; a &lt;em&gt;contar cosas random&lt;/em&gt;. Muchas veces relacionadas con tecnolog&amp;iacute;a, muchas otras de &amp;iacute;ndole personal... pero pr&amp;aacute;cticamente todas tocan, en mayor o menor medida, experiencias de alg&amp;uacute;n plano de mi vida.&lt;/p&gt;
&lt;p&gt;Aunque dicha vida -moderna- parece dise&amp;ntilde;ada para que cada vez tengamos menos tiempo para expresarnos y m&amp;aacute;s tiempo para el &lt;a href="https://en.wikipedia.org/wiki/Doomscrolling"&gt;doomscrolling&lt;/a&gt; (gracias &lt;a href="https://blackshell.usebox.net/"&gt;Juanjo&lt;/a&gt;, no conoc&amp;iacute;a el t&amp;eacute;rmino), intentar&amp;eacute; no caer &lt;em&gt;tanto&lt;/em&gt; y seguir viniendo de forma regular a &lt;em&gt;contar cosas random&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Por ello, y a ra&amp;iacute;z de un hilo de twitter con &lt;em&gt;Juanjo&lt;/em&gt; y &lt;a href="http://nosolosoftware.com/"&gt;Andr&amp;eacute;s&lt;/a&gt;, se nos ha ocurrido sugerir tres blogs que sigamos, que est&amp;eacute;n activos y que, a nuestro criterio, puedan resultar de inter&amp;eacute;s al lector. Ah&amp;iacute; van los m&amp;iacute;os:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.splitbrain.org/blog"&gt;Andreas Gohr&lt;/a&gt;. Lo descubr&amp;iacute; a la par que &lt;a href="https://www.dokuwiki.org/dokuwiki"&gt;Dokuwiki&lt;/a&gt;&amp;nbsp;- es el creador - y desde entonces estoy enganchado a sus entradas.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jmmv.dev/"&gt;Julio Merino&lt;/a&gt;. Recuerdo haber coincidido con &amp;eacute;l hace bastante en algo relacionado con FreeBSD (mi cabeza no llega a concretar mucho m&amp;aacute;s) y desde entonces me he tomado la libertad de pasarme por sus casas digitales, desde la &lt;em&gt;julipedia&lt;/em&gt; hasta el blog actual.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tonsky.me/"&gt;Nikita Prokopov&lt;/a&gt;. Hace relativamente poco, buscando informaci&amp;oacute;n sobre monitores de 100Hz, ca&amp;iacute; en su blog y aunque no escribe demasiado, tiene algunas &lt;a href="https://tonsky.me/blog/github-redesign/"&gt;1&lt;/a&gt; entradas &lt;a href="https://tonsky.me/blog/monitors/"&gt;2&lt;/a&gt; que son brutales. Y lleva ya unos a&amp;ntilde;os, desde 2014, publicando contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despues de haber hecho este ejercicio siento no haber podido aportar contenido en castellano, pero seg&amp;uacute;n mi lector de feeds, no he encontrado pr&amp;aacute;cticamente ninguna publicaci&amp;oacute;n &amp;laquo;hispana&amp;raquo; en lo que va de 2021 (dentro de mis subscripciones, obviamente). Se admiten sugerencias de fuentes para cambiar la tendencia.&lt;/p&gt;
&lt;p&gt;Espero que este peque&amp;ntilde;o soplido sirva para avivar la llama y/o desempolvar alguna bit&amp;aacute;cora de esas que est&amp;aacute;n deseando ser actualizadas.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/tres-de-blogs.html"&gt;Tres de blogs&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 05 Mar 2021 19:26:47 +0000</pubDate><guid>http://http://www.userlinux.net/tres-de-blogs.html</guid></item><item><title>Salid y volved a atraparme</title><link>http://http://www.userlinux.net/salid-y-volved-atraparme.html</link><description>&lt;p&gt;Tengo la sensaci&amp;oacute;n - as&amp;iacute;, general - de que Twitter se est&amp;aacute; volviendo cada vez&amp;nbsp; m&amp;aacute;s inmanejable, por lo menos dentro de mis torpes habilidades.&lt;/p&gt;
&lt;p&gt;No soy el &amp;uacute;nico que &amp;uacute;ltimamente no est&amp;aacute; demasiado a gusto con &amp;laquo;&lt;em&gt;el timeline&lt;/em&gt;&amp;raquo;. Aunque particularmente no haya cambiado nada, entre las notificaciones que no notifican, los algoritmos que ordenan destacando lo que ellos consideran destacable y que a todo el mundo le ha dado por hablar de pol&amp;iacute;tica, de epidemiolog&amp;iacute;a o compartir art&amp;iacute;culos, opiniones e ideas en las que normalmente predomina el negativismo y la toxicidad... no anima demasiado a perder el tiempo &lt;em&gt;*ah&amp;iacute;*&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Podr&amp;iacute;a hacer una en&amp;eacute;sima limpieza que - quiz&amp;aacute;s - alargar&amp;iacute;a el letargo unos meses m&amp;aacute;s, quiero seguir creyendo aunque lo que me pide el cuerpo es empezar por desinstalar la app del m&amp;oacute;vil y reducir el uso a entrar v&amp;iacute;a web de cuando en vez.&lt;/p&gt;
&lt;p&gt;En serio, &amp;iquest;d&amp;oacute;nde os habeis metido y por qu&amp;eacute; me hab&amp;eacute;is dejado marginado?, &amp;iexcl;salid y volved a atraparme!.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/salid-y-volved-atraparme.html"&gt;Salid y volved a atraparme&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sat, 27 Feb 2021 13:42:55 +0000</pubDate><guid>http://http://www.userlinux.net/salid-y-volved-atraparme.html</guid></item><item><title>Recently: 2021-01</title><link>http://http://www.userlinux.net/recently-2021-01.html</link><description>&lt;p&gt;Un par de peque&amp;ntilde;as coincidencias me han empujado a desempolvar esa &amp;laquo;&lt;em&gt;fina capa de mugre&lt;/em&gt;&amp;raquo; que recubre el entorno administrativo de este CMS.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Hac&amp;iacute;a tiempo que no me daba una vuelta por los feeds de la &lt;em&gt;blogosfera&lt;/em&gt; (si es que el t&amp;eacute;rmino sigue siendo v&amp;aacute;lido en 2021) y entre que he descubierto que el amigo &lt;a href="https://blackshell.usebox.net/"&gt;Juanjo&lt;/a&gt; ha abierto &lt;a href="https://www.usebox.net/jjm/blog/"&gt;un nuevo blog&lt;/a&gt; y que &lt;a href="http://nosolosoftware.com/"&gt;Andr&amp;eacute;s&lt;/a&gt; me ha dado a conocer los "&lt;em&gt;recently&lt;/em&gt;" me he dicho... &amp;iquest;por qu&amp;eacute; no?.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Blog&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La &amp;uacute;ltima entrada se sit&amp;uacute;a a finales de Mayo, y la anterior en Febrero. Con un total de 4, el 2020 ha sido el peor a&amp;ntilde;o desde 2002, aunque sin que sirva de excusa, tambi&amp;eacute;n ha sido el a&amp;ntilde;o m&amp;aacute;s &amp;laquo;distinto&amp;raquo;. Me he dejado en el tintero el par&amp;eacute;ntesis del 15 de octubre, el decimoctavo cumplea&amp;ntilde;os del blog (imperdonable que no haya apuntado nada en su mayor&amp;iacute;a de edad) y muchas otras cosas que probablemente podr&amp;iacute;a haber comentado pero al final no han tenido lugar. Es lo que hay, tampoco voy a fustigarme por la inapetencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pandemic&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quiero suponer que uno de los principales motivos de la mencionada falta de apetencia ha sido la gesti&amp;oacute;n - o mejor dicho la falta de autogesti&amp;oacute;n - de todo esto que est&amp;aacute; pasando detr&amp;aacute;s de las pantallas, en una vida anal&amp;oacute;gica que se ha vuelto m&amp;aacute;s complicada y que ha hecho temblar los cimientos de la sociedad contempor&amp;aacute;nea.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;A algunos nos est&amp;aacute; llevando m&amp;aacute;s de la cuenta el per&amp;iacute;odo de adaptaci&amp;oacute;n a esta nueva normalidad que ha llegado para quedarse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Way out&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hace tiempo ya, recuerdo haber viajado a Venecia con poco m&amp;aacute;s que un sombrero, un l&amp;aacute;tigo y barba de 3 d&amp;iacute;as. Una plaza, una biblioteca y un tropez&amp;oacute;n con una loseta me hizo caer en unas catacumbas bastante t&amp;eacute;tricas. Una vez all&amp;iacute;, s&amp;oacute;lo recuerdo haber pasado semanas enteras intentando encontrar la salida a un pozo lleno de agua que no me dejaba avanzar. &amp;iquest;Alguien recuerda el nombre del juego?.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Es un buen s&amp;iacute;mil, intentar gestionarse cuando no hay v&amp;iacute;as de escape, o las que hay no son seguras. En el juego al final s&amp;oacute;lo hab&amp;iacute;a que utilizar una botella de vino para reblandecer una antorcha y conseguir moverla para activar una trampilla que te hac&amp;iacute;a caer en el siguiente nivel.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Lo de la botella de vino ya est&amp;aacute; resuelto, el resto de herramientas est&amp;aacute;n encajando poco a poco en su sitio con el fin de activar esas v&amp;iacute;as de escape / trampillas tan necesarias para avanzar.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Despu&amp;eacute;s de tantos a&amp;ntilde;os construyendo productos y servicios a base de ceros y unos que flotan en un ciberespacio sideral, me apetec&amp;iacute;a probar algo tangible, as&amp;iacute; que, adem&amp;aacute;s de las t&amp;iacute;picas &amp;ntilde;apas de andar por casa que no merecen mucha menci&amp;oacute;n, decid&amp;iacute; comprar un tablero de madera y poner a prueba mis nulas habilidades de &amp;laquo;&lt;em&gt;woodworking&lt;/em&gt;&amp;raquo;. Tengo que reconocer que me ha encantado tanto el proceso como el resultado final.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-01/gallery/recently-2021-01-01.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Por otro lado, antes incluso de que todo el terremoto covid aterrizara y despu&amp;eacute;s de haber probado un par de veces la experiencia autocaravanista, en casa ya ten&amp;iacute;amos decidido que iba a ser nuestro siguiente paso. Por lo que nos hemos lanzado a la aventura de camperizar una furgo. As&amp;iacute;, sin nunca jam&amp;aacute;s haber hecho nada similar. A&amp;uacute;n est&amp;aacute; todo en pa&amp;ntilde;ales pero estamos disfrutando mucho de cada peque&amp;ntilde;o paso al frente.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/recently-2021-01/gallery/recently-2021-01-02.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Y esa sensaci&amp;oacute;n de "deber&amp;iacute;a haber hecho este tipo de cosas antes" no se paga con dinero.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/recently-2021-01.html"&gt;Recently: 2021-01&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 03 Feb 2021 19:46:13 +0000</pubDate><guid>http://http://www.userlinux.net/recently-2021-01.html</guid></item><item><title>Docker + Mutagen</title><link>http://http://www.userlinux.net/docker-mutagen.html</link><description>&lt;p&gt;Despues de varias aventuras y - sobre todo - desventuras con &lt;code&gt;brew&lt;/code&gt;, he tomado la decisi&amp;oacute;n de minimizar - o intentarlo al menos - que las dependencias de mis m&amp;uacute;ltiples entornos de desarrollo est&amp;eacute;n enganchadas o dependan - valga la redundancia - directamente del gestor de paquetes del sistema, por lo que pueda pasar.&lt;/p&gt;
&lt;p&gt;Una decisi&amp;oacute;n que me ha llevado a exprimir &lt;code&gt;Docker&lt;/code&gt; un poco m&amp;aacute;s de lo habitual. Pasar los proyectos de desarrollo activos - y los no muertos del todo, con cierta posibilidad de reactivaci&amp;oacute;n - a contenedores est&amp;aacute; siendo divertido y complicado a partes iguales.&lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s de descubrir algunos trucos en relaci&amp;oacute;n al funcionamiento tanto de &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt; como de &lt;a href="https://docs.docker.com/compose/"&gt;Docker Compose&lt;/a&gt;, he visto que el rendimiento del mismo en &lt;em&gt;MacOS&lt;/em&gt; - sobre todo en temas relacionados con &lt;em&gt;IO&lt;/em&gt; - es muy mejorable.&lt;/p&gt;
&lt;p&gt;A la hora de crear un contenedor para desarrollo, el concepto de &lt;em&gt;volumen&lt;/em&gt;&amp;nbsp;es primordial puesto que se trata del mecanismo que usa &lt;em&gt;Docker&lt;/em&gt; para compartir archivos entre el propio contenedor y la m&amp;aacute;quina madre. Por ejemplo si estamos desarrollando un proyecto, querremos que el c&amp;oacute;digo fuente de ese proyecto permanezca en nuestra m&amp;aacute;quina madre o host (&lt;em&gt;MacOS&lt;/em&gt; en mi caso) que es donde lanzaremos nuestro editor, pero a la vez ese c&amp;oacute;digo tambi&amp;eacute;n tiene que estar disponbile dentro del contenedo que lo va a servir.&lt;/p&gt;
&lt;p&gt;Esto que en teor&amp;iacute;a es tan simple (&lt;code&gt;-v ~/code/proyecto/src:/var/www/html&lt;/code&gt;) lleva por debajo un mont&amp;oacute;n de operaciones y l&amp;oacute;gica que hacen que, cuando la cantidad de archivos a compartir entre el host y el contenedor sea medianamente grande (&lt;em&gt;&amp;gt;15k-20k&lt;/em&gt;), el rendimiento del servidor &lt;em&gt;dockerizado&lt;/em&gt; se vea bastante afectado. Y a d&amp;iacute;a de hoy, entre &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;vendors&lt;/code&gt; y dem&amp;aacute;s librer&amp;iacute;as de terceros que usamos para cualquier cosa (tanto nosotros directamente como cualquier framework de cualquier lenguaje moderno) es m&amp;aacute;s f&amp;aacute;cil de lo que parece llegar a esos n&amp;uacute;meros y empezar a notar ralentizaciones. Hay un mont&amp;oacute;n de issues al respecto, pero creo que &lt;a href="https://github.com/docker/for-mac/issues/1592"&gt;&amp;eacute;sta&lt;/a&gt; refleja muy bien el punto en el que est&amp;aacute; el tema.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker-native-osxfs.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Por lo que he visto esto no pasa en &lt;em&gt;Linux&lt;/em&gt;, sin embargo en &lt;em&gt;MacOS&lt;/em&gt; todas las &lt;a href="https://docker-sync.readthedocs.io/en/latest/advanced/sync-strategies.html"&gt;estrategias de sincronizado&lt;/a&gt; que he probado no han acabado de cuajar, s&amp;iacute; es cierto que algunas mejoran un pel&amp;iacute;n el rendimiento pero ninguna me hab&amp;iacute;a dejado con la boca abierta (&lt;code&gt;osxfs&lt;/code&gt;, &lt;code&gt;rsync&lt;/code&gt;, &lt;code&gt;unison&lt;/code&gt;...).&lt;/p&gt;
&lt;p&gt;Hasta que llegu&amp;eacute; a &lt;a href="https://twitter.com/geerlingguy/status/1265763005523996676"&gt;este twitt de Jeff Geerling&lt;/a&gt; donde dec&amp;iacute;a haber probado un binario de &lt;em&gt;Docker&lt;/em&gt; parcheado con &lt;em&gt;Mutagen&lt;/em&gt; que hac&amp;iacute;a que los tiempos (en su caso de un &lt;code&gt;composer install&lt;/code&gt;) pr&amp;aacute;cticamente se igualaban a los del stack nativo (en su caso &lt;em&gt;LAMP&lt;/em&gt; instalado y configurado directamente en &lt;em&gt;MacOS&lt;/em&gt;). Mezcla de sentimientos al leerlo, si el bueno de &lt;em&gt;Jeff&lt;/em&gt; lo ha probado no creo que sea fake... pero por otro lado demasiado bonito para ser verdad.&lt;/p&gt;
&lt;p&gt;As&amp;iacute; que me permit&amp;iacute; la licencia de probarlo en uno de mis proyectos. Para probarlo he tenido que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descargar e instalar la &lt;a href="https://desktop-stage.docker.com/mac/edge/45418/Docker.dmg"&gt;versi&amp;oacute;n Edge de Docker&lt;/a&gt; que trae Mutagen &lt;em&gt;builtin&lt;/em&gt;&amp;nbsp;(ojo porque se destruir&amp;aacute;n todos los contenedores activos).&lt;/li&gt;
&lt;li&gt;Abrir &lt;em&gt;Docker Desktop&lt;/em&gt;&amp;nbsp;&amp;gt; &lt;em&gt;Preferences&lt;/em&gt;&amp;nbsp;&amp;gt; &lt;em&gt;Resources&lt;/em&gt;&amp;nbsp;&amp;gt; &lt;em&gt;File Sharing&lt;/em&gt; y agregar ah&amp;iacute; el directorio del volumen a montar que queremos que se comparta con &lt;em&gt;Mutagen&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Aplicar&lt;/em&gt;, &lt;em&gt;Reiniciar Docker&lt;/em&gt; y esperar a que se cachee ese directorio. Al acabar pasar&amp;aacute; a un status "&lt;em&gt;Ready&lt;/em&gt;".&lt;/li&gt;
&lt;li&gt;Nos aseguramos de que estamos montando el mismo directorio en nuestro &lt;code&gt;docker-compose&lt;/code&gt; o en nuestra llamada a &lt;em&gt;Docker&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Levantamos nuestro(s) contenedor(es) y volvemos a &lt;em&gt;Docker Desktop&lt;/em&gt;, inspeccionamos el contenedor que deber&amp;iacute;a tener ese volumen montado y comprobamos que el punto de montaje apunta a &lt;code&gt;/var/lib/mutagen/uuid&lt;/code&gt; en vez de apuntar a la ruta que hemos especificado al arrancar el contenedor (&lt;code&gt;docker-compose.yml&lt;/code&gt; &amp;oacute; script de llamada a &lt;em&gt;Docker&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Una vez hecho esto podemos hacer las comprobaciones necesarias para darnos cuenta de que nuestro volumen ya responde a velocidad casi nativa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En mi caso particular los n&amp;uacute;meros - redondeados en una media de 10 peticiones - hablan de unas velocidades de carga del &lt;em&gt;/dashboard&lt;/em&gt; del proyecto tales que los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nativo MacOSX ~=&amp;nbsp; &amp;nbsp;&lt;strong&gt;110ms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Docker normal ~=&amp;nbsp; &lt;strong&gt;1000ms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Docker Mutagen ~=&amp;nbsp; &lt;strong&gt;130ms&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nativo MacOS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/nativo.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker Stable&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker-desktop1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker-mount.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker Edge + Mutagen&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker-mutagen.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker-desktop2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/docker-mutagen/gallery/docker-mount2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Docker + Mutagen all the things!. Espero que pronto lo agreguen por defecto a la build oficial, aunque consume un poco m&amp;aacute;s de CPU al hacer el build y de disco (porque tiene que cachear todos eso directorios compartidos) merece mucho la pena y ahorra bastante tiempo en fase de desarrollo.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/docker-mutagen.html"&gt;Docker + Mutagen&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 29 May 2020 14:38:24 +0000</pubDate><guid>http://http://www.userlinux.net/docker-mutagen.html</guid></item><item><title>Mattermost and Matterbridge</title><link>http://http://www.userlinux.net/mattermost-and-matterbridge.html</link><description>&lt;p&gt;When you are a kind of &lt;em&gt;old school&lt;/em&gt;, modern times means a bit of pain in some way. Your soul is mostly seeking inner peace but on the other hand, as someone that works with technology, you wouldn't stay freeze.&lt;/p&gt;
&lt;p&gt;And sometimes the thing is the other way around, it feels that the &lt;em&gt;old-school-world&lt;/em&gt; you're living with is good but not as great as it should and you need to move a bit forward yourself to - &lt;em&gt;wrongly&lt;/em&gt; - have a feeling of progress.&lt;/p&gt;
&lt;p&gt;As i've said many times, we're using irc as communication tool for a project. It perfectly fits our needs but if I'd asked to compare with some other tools I would say that there are a couple of holes that can't easily be covered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There is no easy way to share a photo, picture or screenshot.&lt;/li&gt;
&lt;li&gt;You need to be always-on if you don't want to miss parts of the conversation.&lt;/li&gt;
&lt;li&gt;Definitely IRC is not mobile friendly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;About first point&lt;/strong&gt; - sharing graphical stuff - well, you can use &lt;a href="https://imgur.com/"&gt;imgur&lt;/a&gt; or some other similar tools and paste the link, that's what we do, but in the end - as good slackers we are - you think it twice if it's worth the effort. I'm not saying that it's bad think it twice but most of times this &lt;em&gt;upload-to-wherever&lt;/em&gt; method does not work with me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Always-on&lt;/strong&gt; is an implicit feature in most of instant messaging apps nowadays. You enter a channel/group and from now on you will get every single message wrote there. IRC does not work in that way, you have to be connected to be able to read the conversation. When you disconnect your client you can't receive messages. So if you get disconnected, you lose the log and the ability to reply. Even if you're not connected people does not see you around and in the end they don't write to you because you can't read (that's not bad, you can choose when you will attend and when you won't).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lastly, we have smartphones now&lt;/strong&gt;, we should be able to reply from anywhere... but mobile connections are not so stable / reliable, in the end it means lots of disconnections here and there, it's not usable.&lt;/p&gt;
&lt;p&gt;What can we do? To deal with the disconnections and the always-on stuff we can use something like &lt;code&gt;ssh&lt;/code&gt; + &lt;code&gt;tmux&lt;/code&gt; + &lt;code&gt;irssi&lt;/code&gt; (irc client). That means install an irc client (&lt;code&gt;irssi&lt;/code&gt;) in a stable server, access to it over &lt;code&gt;ssh&lt;/code&gt; and play a bit with background/foreground modes with a terminal multiplexer (&lt;code&gt;tmux&lt;/code&gt;, &lt;code&gt;screen&lt;/code&gt;...).&lt;/p&gt;
&lt;p&gt;Now we have the &lt;em&gt;almost-perfect&lt;/em&gt; cocktail, right?. Well... now you're running it always, you are not losing parts of the conversation, you can even choose when you're ready for interact with the others or &lt;em&gt;away-from-keyboard&lt;/em&gt; (&lt;code&gt;afk&lt;/code&gt;) and - with some other stuff like the one I've mentioned in &lt;a href="../../../../irssi-hilighting-your-nick.html"&gt;my last post&lt;/a&gt; - you can also get notifications when people will mention you. So what's wrong?.&lt;/p&gt;
&lt;p&gt;The wrong part is that, using the mentioned stuff, you need to be a real &lt;em&gt;old-school 1337 r35p3c73d hax0r&lt;/em&gt; to be able to interact if you are not in front of a &lt;strong&gt;real&lt;/strong&gt; computer with a &lt;strong&gt;real&lt;/strong&gt; keyboard. When you get a mention in your smartphone and want to reply, or just want to read the backlog because you're waiting for a haircut, you have to open a mobile ssh client, pray for stability of the connection, enter the host, attach the detached tmux, go to irssi session/window and deal with the keys and shortcuts. That's all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here is where mattermost and matterbridge enters to solve our problem&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mattermost.com/"&gt;Mattermost&lt;/a&gt; is an Open Source Slack clone, it's a centralized messaging platform that enables secure team collaboration. It's written in &lt;em&gt;Golang&lt;/em&gt; and &lt;em&gt;React&lt;/em&gt; and runs as a single &lt;em&gt;Linux&lt;/em&gt; binary with &lt;em&gt;MySQL&lt;/em&gt; or &lt;em&gt;PostgreSQL&lt;/em&gt;. To be honest, it's another instant messaging piece of software, but as it's Open Source it has so many free plugins to &lt;a href="https://integrations.mattermost.com/"&gt;integrate with almost everything&lt;/a&gt; (&lt;em&gt;github&lt;/em&gt;, &lt;em&gt;gitlab&lt;/em&gt;, &lt;em&gt;docker&lt;/em&gt;, &lt;em&gt;ansible&lt;/em&gt;, &lt;em&gt;jenkins&lt;/em&gt;, &lt;em&gt;jira&lt;/em&gt;, &lt;em&gt;nagios&lt;/em&gt;, &lt;em&gt;redmine&lt;/em&gt;, &lt;em&gt;trello&lt;/em&gt;, &lt;em&gt;zabbix&lt;/em&gt;...). Of course it has clients for every existing platform nowadays (&lt;em&gt;Linux&lt;/em&gt;, &lt;em&gt;Windows&lt;/em&gt;, &lt;em&gt;MacOS&lt;/em&gt;, &lt;em&gt;iOS&lt;/em&gt; and &lt;em&gt;Android&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/42wim/matterbridge"&gt;Matterbridge&lt;/a&gt; is a tool that bridges between a growing number of protocols (&lt;em&gt;mattermost&lt;/em&gt;, &lt;em&gt;IRC&lt;/em&gt;, &lt;em&gt;gitter&lt;/em&gt;, &lt;em&gt;xmpp&lt;/em&gt;, &lt;em&gt;slack&lt;/em&gt;, &lt;em&gt;discord&lt;/em&gt;, &lt;em&gt;telegram&lt;/em&gt;, &lt;em&gt;rocketchat&lt;/em&gt;, &lt;em&gt;steam&lt;/em&gt;, &lt;em&gt;twitch&lt;/em&gt;, &lt;em&gt;ssh-chat&lt;/em&gt;, &lt;em&gt;zulip&lt;/em&gt;, &lt;em&gt;whatsapp&lt;/em&gt;...).&lt;/p&gt;
&lt;p&gt;So, if we are able to put some glue here and some configurations there maybe with a bit of effort we could solve our little problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install a Mattermost server + Create Team and Channel that will receive all the irc messages&lt;/li&gt;
&lt;li&gt;Install Matterbridge + Configure Matterbridge to connect &lt;em&gt;1)&lt;/em&gt; irc, &lt;em&gt;2)&lt;/em&gt; mattermost and &lt;em&gt;3)&lt;/em&gt; gateway between 1) and 2)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Install a Mattermost server&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As slackers, laziness is the strength that moves us so we are going to use docker for both (mattermost and matterbridge) directly in command line (we should prepare our database before, I told you I was old-school so I don't go for a db-container this time):&lt;/p&gt;
&lt;pre&gt;docker run -d \
    -p 8000:8000 \
    -e MM_SERVICESETTINGS_SITEURL="&amp;lt;https://mymattermost.domain.com&amp;gt;" \
    -e MM_SQLSETTINGS_DRIVERNAME=mysql \
    -e MM_SQLSETTINGS_DATASOURCE="mysqluser:mysqlpass@tcp(192.168.1.2:3306)/dbname?charset=utf8mb4,utf8&amp;amp;readTimeout=30s&amp;amp;writeTimeout=30s" \
    -v /home/docker/mattermost/config:/mattermost/config:rw \
    -v /home/docker/mattermost/data:/mattermost/data:rw \
    -v /home/docker/mattermost/logs:/mattermost/logs:rw \
    -v /home/docker/mattermost/plugins:/mattermost/plugins:rw \
    -h mattermost01 \
    --name mattermost01 \
    --restart always \
    mattermost/mattermost-prod-app
&lt;/pre&gt;
&lt;p&gt;Once it's installed we need to create the team and the channel that will receive the messages from irc, take a look to the final urls once the channel is done:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://mymattermost.domain.com:8000/&lt;strong&gt;myteam&lt;/strong&gt;/channels/&lt;strong&gt;mychannel&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Install Matterbridge&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For installing matterbridge we should have a configuration file that says to the binary where to connect and what to do with the messages, so first of all we will create our &lt;code&gt;matterbridge.toml&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;[irc]
    [irc.freenode]
    Server="irc.freenode.net:6667"
    Nick="matterb0t"

[mattermost]
    [mattermost.mine]
    Server="mymattermost.domain.com:8000"
    NoTLS=true
    Team="myteam"
    Login="deb0t"
    Password="mattermost-password-for-deb0t"

[[gateway]]
name="gateway1"
enable=true
    [[gateway.inout]]
    account="irc.freenode"
    channel="#debian"

    [[gateway.inout]]
    account="mattermost.mine"
    channel="mychannel"
&lt;/pre&gt;
&lt;p&gt;Attending to this file, matterbridge will try to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connect &lt;a href="http://irc.freenode.net"&gt;irc.freenode.net&lt;/a&gt; with nick &lt;code&gt;matterb0t&lt;/code&gt; and enter channel &lt;code&gt;#debian&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Connect &lt;a href="http://mymattermost.domain.com"&gt;mymattermost.domain.com&lt;/a&gt; with nick &lt;code&gt;deb0t&lt;/code&gt; to the workspace of team &lt;code&gt;myteam&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;As gateway, will try to send all the messages of first inout (&lt;code&gt;freenode #debian&lt;/code&gt;) to the second inout (&lt;code&gt;mattermost mychannel&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, it's time to run the bridge:&lt;/p&gt;
&lt;pre&gt;docker run -d \
    -v /home/docker/matterbridge/matterbridge.toml:/matterbridge.toml \
    -h matterbridge01 \
    --name matterbridge01 \
    --restart always \
    42wim/matterbridge
&lt;/pre&gt;
&lt;p&gt;And there it goes, if there are no errors we should be able to receive IRC messages in our mattermost channel. Even we can send messages to the IRC from our mattermost client (&lt;em&gt;web&lt;/em&gt;, &lt;em&gt;macos&lt;/em&gt;, &lt;em&gt;ios&lt;/em&gt;, &lt;em&gt;android&lt;/em&gt;...) and scroll back without any kind of problems.&lt;/p&gt;
&lt;p&gt;Dunno if it's black magic but for me - now that I have a seriously active project running over IRC - it will mean a really nice improvement.&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 100%; height: auto;" src="../../../../media/images/posts/mattermost-and-matterbridge/gallery/mattermost-matterbridge-2.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/mattermost-and-matterbridge.html"&gt;Mattermost and Matterbridge&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 21 Feb 2020 23:18:40 +0000</pubDate><guid>http://http://www.userlinux.net/mattermost-and-matterbridge.html</guid></item><item><title>IRSSI: Hilighting your nick</title><link>http://http://www.userlinux.net/irssi-hilighting-your-nick.html</link><description>&lt;p&gt;I'm still - and proudly - using &lt;a href="https://es.wikipedia.org/wiki/Internet_Relay_Chat"&gt;irc&lt;/a&gt; for daily contact with my team mates and it's perfectly fine for our purposes. Well, I miss so much a couple of things (like edit a message with typos or the ability to easily share a photo/screenshot) but we're witty enough to manage among us. Other than that it's really fun.&lt;/p&gt;
&lt;p&gt;Lately, due the amount of log, I've found something a bit weird with my &lt;a href="https://irssi.org/"&gt;irssi&lt;/a&gt; config when my is mentioned. I have a couple of perl scripts that sends me a notification to the phone when someone writes my nick and it seemed to me that it was working randomly but... it wasn't.&lt;/p&gt;
&lt;p&gt;Just in case you're wondering about that scripts, I have two, one of them working with Android devices called &lt;a href="https://irssinotifier.appspot.com/"&gt;irssinotifier.pl&lt;/a&gt;&amp;nbsp;and as I've lately switched to iOS I got &lt;a href="https://www.prowlapp.com/"&gt;prowl.pl&lt;/a&gt;&amp;nbsp;(not free but it's so cheap) as the other one working in the Apple world.&lt;/p&gt;
&lt;p&gt;What was the problem then? It seems that irssi was highlighting only when someone mentioned me at the beginning of the phrase like this&amp;nbsp;&lt;code&gt;r0sk:&amp;nbsp;&lt;/code&gt;but it wasn't doing it in a normal nick mention in the middle of a sentence like &lt;code&gt;hey r0sk sup there!?&lt;/code&gt; or similar.&lt;/p&gt;
&lt;p&gt;I knew that something like this could be configured so reading a bit about &lt;a href="https://irssi.org/documentation/help/hilight/"&gt;irssi hilight&lt;/a&gt; found the way to be alerted even if they are shouting &lt;code&gt;r000ssskkk!!&lt;/code&gt; to me, the solution can be applied in two ways, in the irssi command line:&lt;/p&gt;
&lt;pre&gt;/hilight -regexp r0+s+k+&lt;/pre&gt;
&lt;p&gt;And, of course, in the &lt;code&gt;.irssi/config&lt;/code&gt; file, because if you have put it in the command line and the setting is not saved to the config file, it won't work in case of restart:&lt;/p&gt;
&lt;pre&gt;hilights = (
  { text = "r0+s+k+"; nick = "yes"; word = "yes"; regexp = "yes"; }
)
&lt;/pre&gt;
&lt;p&gt;And that's the reason why my phone would beep even if you get so angry with me.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/irssi-hilighting-your-nick.html"&gt;IRSSI: Hilighting your nick&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 11 Feb 2020 20:59:09 +0000</pubDate><guid>http://http://www.userlinux.net/irssi-hilighting-your-nick.html</guid></item><item><title>Winter update, twenty twenty</title><link>http://http://www.userlinux.net/winter-update-twenty-twenty.html</link><description>&lt;p&gt;It seems I have no time to sitting in front of the computer with the aim of writting some words for the blog anymore, but today I managed to, so here I am, trying to think a bit and sort out this issue.&lt;/p&gt;
&lt;p&gt;Since last October I've had some ups and downs at various levels, but most relevant was the free time I got since some customers decided to leave the boat till new projects arrived. I made the decision that I should take advantage of that time to invest in my shape so started to workout in a more intense way and put myself in professional hands. I'm really happy I did.&lt;/p&gt;
&lt;p&gt;On the other hand I've had a glad Christmas enjoying family all the time I could, had some short trips here and there even with friends, attended local parties, moved the homelab and broken a hard disk, replaced broken apple watch, few scares with kids punches, basket kids tournaments, kids music concerts and probably much more stuff that I can't remember.&lt;/p&gt;
&lt;p&gt;What's next? I don't know, to be honest. There are some work projects flying around, hope some of them gets real to start something &lt;em&gt;*big*&lt;/em&gt; again but regardless of whether or not it is, I hope I can continue enjoying family, health and workouts, in that precise order.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/winter-update-twenty-twenty.html"&gt;Winter update, twenty twenty&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sat, 01 Feb 2020 13:22:06 +0000</pubDate><guid>http://http://www.userlinux.net/winter-update-twenty-twenty.html</guid></item><item><title>Mi DevFestGal</title><link>http://http://www.userlinux.net/mi-devfestgal.html</link><description>&lt;p&gt;Hace alg&amp;uacute;n tiempo &lt;a href="../../../../la-comunidad-y-el-gdg.html"&gt;escrib&amp;iacute;a en el blog&lt;/a&gt; &lt;em&gt;cosas&lt;/em&gt; sobre La Comunidad y sobre lo complicado que es organizar, pero sobre todo acertar. Y hablaba del caso particular de Lugo, donde, a&amp;uacute;n no siendo demasiado pretencioso, nos ha costado siempre un mont&amp;oacute;n arrancar. Y una vez hemos arrancado, creo que tampoco hemos dado con la f&amp;oacute;rmula m&amp;aacute;gica que nos estabilice.&lt;/p&gt;
&lt;p&gt;En aquella entrada, all&amp;aacute; por Marzo, &lt;a href="https://twitter.com/diazjc"&gt;Juan&lt;/a&gt; y yo decidimos dar un paso al frente y, alentados sobre todo por nuestros amigos de &lt;a href="https://twitter.com/gdgourense"&gt;Ourense&lt;/a&gt;, propusimos al &lt;a href="https://gdg.es/"&gt;GDG Espa&amp;ntilde;a&lt;/a&gt; la creaci&amp;oacute;n de un nuevo grupo para nuestra ciudad.&lt;/p&gt;
&lt;p&gt;Tengo dos recuerdos de aquel skype/entrevista con &lt;a href="https://twitter.com/OrestesCA"&gt;Orestes&lt;/a&gt;. Por un lado coincidi&amp;oacute; con una &amp;eacute;poca dif&amp;iacute;cil en el plano personal, mi mujer y yo est&amp;aacute;bamos preocupados por uno de nuestros hijos y, la verdad, lo que menos me apetec&amp;iacute;a era hacer ninguna otra cosa que no fuera estar con ellos. El otro recuerdo es incre&amp;iacute;ble por la oferta de recursos y de ayuda que - creo - era justo el que nosotros necesit&amp;aacute;bamos para echar a andar. Al final todo sali&amp;oacute; bien :).&lt;/p&gt;
&lt;p&gt;Desde entonces hemos tenido acceso a un mont&amp;oacute;n de recursos e ideas, pero sobre todo hemos podido vivir &lt;em&gt;desde dentro&lt;/em&gt; la organizaci&amp;oacute;n de algo tan grande y ut&amp;oacute;pico para nosotros como el &lt;a href="https://devfest.gdggalicia.com/"&gt;DevFestGal&lt;/a&gt; de Ourense del pasado fin de semana.&lt;/p&gt;
&lt;p&gt;Aunque desde aqu&amp;iacute; no ten&amp;iacute;amos mucho que aportar u ofrecer, desde el primer momento nos han tratado como un organizador m&amp;aacute;s y nos hemos sentido como un miembro m&amp;aacute;s de esta fant&amp;aacute;stica Comunidad.&lt;/p&gt;
&lt;p&gt;En mi opini&amp;oacute;n, aunque tampoco he ido a tantos eventos similares, el &lt;a href="https://twitter.com/search?q=%23DevFestGal"&gt;DevFestGal&lt;/a&gt; ha sido un rotundo &amp;eacute;xito y a la vista est&amp;aacute;n las opiniones de ponentes, asistentes, patrocinadores y organizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;Me vuelvo a casa con un mont&amp;oacute;n de im&amp;aacute;genes y sentimientos que tal vez no sabr&amp;iacute;a describir con las palabras justas. De lo que s&amp;iacute; estoy seguro es que, adem&amp;aacute;s de volver con las pilas cargadas, llevo el tanque de la ilusi&amp;oacute;n lleno y ganas de hacer cosas. Y lo m&amp;aacute;s importante: he vuelto a sentirme parte activa de una Comunidad.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/mi-devfestgal.html"&gt;Mi DevFestGal&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 28 Oct 2019 12:12:35 +0000</pubDate><guid>http://http://www.userlinux.net/mi-devfestgal.html</guid></item><item><title>15 de octubre, 2019</title><link>http://http://www.userlinux.net/15-de-octubre-2019.html</link><description>&lt;p&gt;Un peque&amp;ntilde;o par&amp;eacute;ntesis de toda rutina para seguir la costumbre de escribir unas lineas de reflexi&amp;oacute;n en este &lt;em&gt;15 de octubre&lt;/em&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En el "&lt;em&gt;nowlistening&lt;/em&gt;" est&amp;aacute; sonando una playlist instrumental de canciones de pel&amp;iacute;culas, series y videojuegos que habitualmente pongo como m&amp;uacute;sica de fondo para los quehaceres diarios mientras aporreo el teclado (&amp;laquo;&lt;em&gt;Brendam Flynn&lt;/em&gt;, &lt;em&gt;Yellow Rose&amp;raquo;&lt;/em&gt;&amp;nbsp;right now).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;4.1&lt;/em&gt;, &lt;em&gt;101001&lt;/em&gt;, &lt;em&gt;0x29 hex&lt;/em&gt;, &lt;em&gt;1.292.976.000&lt;/em&gt; segundos de una historia que empez&amp;oacute; hace unos cuantos a&amp;ntilde;os y sigue, sin saber muy bien c&amp;oacute;mo, escribiendo cap&amp;iacute;tulo a cap&amp;iacute;tulo y peleando partido a partido por ser cada d&amp;iacute;a un poco mejor que el anterior.&lt;/p&gt;
&lt;p&gt;Este &amp;uacute;ltimo a&amp;ntilde;o parece que los cambios - laborales sobre todo - han alquilado una parcela para quedarse una temporada, as&amp;iacute; que he intentado mejorar a la hora de balancear y distribuir el tiempo entre proyectos y; por otra parte, sigo con la complicada tarea de recortar tiempo &lt;em&gt;social-digital&lt;/em&gt; para invertirlo en algo que tenga mejor &lt;em&gt;ROI&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Y si en la &lt;a href="https://www.userlinux.net/15-de-octubre-2018.html"&gt;anterior rese&amp;ntilde;a&lt;/a&gt; me quejaba de actividad f&amp;iacute;sica, hoy (precisamente hoy, en un rato) dar&amp;eacute; el primer paso para convertirme, con mucha ilusi&amp;oacute;n, en un &lt;em&gt;Alpha Squad&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Si el a&amp;ntilde;o pasado me organizaron la mejor fiesta de cumplea&amp;ntilde;os de la historia, este a&amp;ntilde;o me conformo con pasar m&amp;aacute;s desapercibido - aunque con &lt;em&gt;Hugo&lt;/em&gt; y &lt;em&gt;Nico&lt;/em&gt; es imposible, van contando a todo el mundo que hoy es el cumple de papi - y acordarme de todos y cada uno de los que participaron y, por supuesto, con menci&amp;oacute;n especial a los m&amp;aacute;s cercanos que, d&amp;iacute;a a d&amp;iacute;a, aguantan mis idas y venidas.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/15-de-octubre-2019.html"&gt;15 de octubre, 2019&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 15 Oct 2019 08:17:21 +0000</pubDate><guid>http://http://www.userlinux.net/15-de-octubre-2019.html</guid></item><item><title>No place to hide</title><link>http://http://www.userlinux.net/no-place-hide.html</link><description>&lt;p&gt;&lt;span style="font-size: 1.5em;"&gt;Online privacy is a human right. Privacy is a fundamental condition to be free. Snowden has remembered us the extraordinary ability of any human being to change the world.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;No place to hide&lt;/em&gt;&amp;nbsp;-- Glenn Greenwald&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/no-place-hide.html"&gt;No place to hide&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sat, 07 Sep 2019 10:56:42 +0000</pubDate><guid>http://http://www.userlinux.net/no-place-hide.html</guid></item><item><title>World Roller Games 2019</title><link>http://http://www.userlinux.net/world-roller-games-2019.html</link><description>&lt;p&gt;From &lt;em&gt;June 27th&lt;/em&gt; to &lt;em&gt;July 15th&lt;/em&gt; I was attending to the &lt;a href="http://wrg2019.com"&gt;World Roller Games 2019&lt;/a&gt;, the world's largest event comprising all the world championship roller sports disciplines.&lt;/p&gt;
&lt;p&gt;As group of developers, our commitment there was keep the homogeneity of the data transfered by the different companies who are the responsibles for the different disciplines. So we developed a serverless &lt;em&gt;API&lt;/em&gt; (&lt;em&gt;Python&lt;/em&gt; + &lt;a href="https://falconframework.org/"&gt;FalconFramework&lt;/a&gt; + &lt;em&gt;AWS Lambda&lt;/em&gt;) with the main data structure and many ways to keep the data updated even in live events. Appart from that we also were working in the official mobile application (&lt;em&gt;iOS&lt;/em&gt; + &lt;em&gt;Android&lt;/em&gt;) plus the official js widget (&lt;a href="https://vuejs.org/"&gt;VueJS&lt;/a&gt;). &lt;em&gt;Fullstack&lt;/em&gt; party!&lt;/p&gt;
&lt;p&gt;The working days were really intense, too many hours creating and fixing stuff here and there and adapting us to the new live requirements but it all worked out in the end. What an experience!.&lt;/p&gt;
&lt;p&gt;Here you can see some pics&lt;/p&gt;
&lt;p&gt;gallerystart * galleryend&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/world-roller-games-2019.html"&gt;World Roller Games 2019&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 21 Aug 2019 20:18:54 +0000</pubDate><guid>http://http://www.userlinux.net/world-roller-games-2019.html</guid></item><item><title>Google Photos, alternativas</title><link>http://http://www.userlinux.net/google-photos-alternativas.html</link><description>&lt;p&gt;Hace unos a&amp;ntilde;os - no demasiados tampoco - cuando los ni&amp;ntilde;os eran m&amp;aacute;s peque&amp;ntilde;os y les sacaba m&amp;aacute;s fotos al d&amp;iacute;a de las que mi copia de seguridad pod&amp;iacute;a asumir, empec&amp;eacute; a plantearme qu&amp;eacute; hacer con las mismas y c&amp;oacute;mo organizarlas.&lt;/p&gt;
&lt;p&gt;Hasta aqu&amp;iacute; nada raro, supongo que todo aquel que haya tenido ni&amp;ntilde;os ha notado ese fr&amp;iacute;o sudor por la espalda pensando en la &amp;iacute;nfima posibilidad de perder todas las instant&amp;aacute;neas de sus reto&amp;ntilde;os. Multipl&amp;iacute;quenlo por dos.&lt;/p&gt;
&lt;p&gt;No recuerdo muy bien c&amp;oacute;mo lo ten&amp;iacute;a organizado entonces, soy muy de olvidar las &lt;em&gt;malas praxis&lt;/em&gt;, pero si me apuran dir&amp;iacute;a que se hac&amp;iacute;a una subida instantanea a &lt;em&gt;Google Photos&lt;/em&gt; (con la consiguiente p&amp;eacute;rdida de calidad inapreciable al ojo humano) y de vez en cuando - muy de vez en cuando - descargaba las fotos originales v&amp;iacute;a USB de los varios tel&amp;eacute;fonos encargados de disparar, y las ordenaba por a&amp;ntilde;o y mes en un disco duro externo.&lt;/p&gt;
&lt;p&gt;El otro d&amp;iacute;a se mencionaba en &lt;em&gt;Twitter&lt;/em&gt; la noticia que &lt;em&gt;Google Drive&lt;/em&gt; dejar&amp;aacute; de sincronizarse con &lt;em&gt;Google Photos&lt;/em&gt; y habl&amp;aacute;bamos que podr&amp;iacute;a ser interesante escribir un mini art&amp;iacute;culo sobre alguna alternativa. Mini, porque tampoco da para m&amp;aacute;s.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requisitos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Inicialmente ten&amp;iacute;a varios problemas a abordar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quer&amp;iacute;a que el proceso fuera lo m&amp;aacute;s autom&amp;aacute;tico posible e intentar evitar esos "dumps" manuales en los que catalogar fotos.&lt;/li&gt;
&lt;li&gt;No quer&amp;iacute;a depender exclusivamente de &lt;em&gt;Google Photos&lt;/em&gt; porque no es bueno meter todos los huevos en la misma cesta (parece que &amp;uacute;ltimamente esta expresi&amp;oacute;n es un comod&amp;iacute;n de mi vida).&lt;/li&gt;
&lt;li&gt;Imprescindible seguir teniendo el control de los archivos.&lt;/li&gt;
&lt;li&gt;La soluci&amp;oacute;n deb&amp;iacute;a cubrir la subida de varios dispositivos distintos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Soluci&amp;oacute;n 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Con todas estas premisas estaba claro que una s&amp;oacute;la herramienta no iba a ser suficiente - la cesta, los huevos, los baches - as&amp;iacute; que la primera soluci&amp;oacute;n que se me vino a la cabeza fue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Google Photos&lt;/em&gt; para las subidas instant&amp;aacute;neas (en el momento en que se hace la foto o cuando se coja WIFI)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Dropbox&lt;/em&gt;, que hac&amp;iacute;a exactamente lo mismo que &lt;em&gt;Google Photos&lt;/em&gt; pero con una cuenta compartida, de forma que las fotos de todos los dispositivos iban al mismo sitio.&lt;/li&gt;
&lt;li&gt;De vez en cuando "vaciamos" &lt;em&gt;Dropbox&lt;/em&gt; en el disco duro externo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Problema 1: &lt;em&gt;Dropbox&lt;/em&gt;, a&amp;uacute;n con exteroides de promociones, se llenaba cada semana... y no me apetec&amp;iacute;a pasar a un plan Premium para un almacenamiento "temporal" (taca&amp;ntilde;o que es uno).&lt;/p&gt;
&lt;p&gt;Problema 2: Como se llenaba con frecuencia, los dumpeos pasaron a ser m&amp;aacute;s habituales que antes. FAIL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soluci&amp;oacute;n 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hab&amp;iacute;a que seguir d&amp;aacute;ndole vueltas a la tuerca as&amp;iacute; que despues de varios intentos aqu&amp;iacute; y all&amp;aacute; (&lt;em&gt;btsync&lt;/em&gt;, &lt;em&gt;mega&lt;/em&gt;...) - y para no alargar m&amp;aacute;s la agon&amp;iacute;a del lector - paso a presentar "la soluci&amp;oacute;n" a d&amp;iacute;a de hoy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Google Photos&lt;/em&gt; para las subidas instant&amp;aacute;neas. Adem&amp;aacute;s a d&amp;iacute;a de hoy en esta plataforma se pueden compartir las cuentas (incluso entre dispositivos distintos &lt;em&gt;Android&lt;/em&gt; e &lt;em&gt;iOS&lt;/em&gt;), de forma que puedo hacer que todas las fotos se suban a la misma cuenta. Un verdadero &lt;em&gt;step forward&lt;/em&gt; a la hora de querer visualizarlas. Hay que reconocer que &lt;em&gt;Google Photos&lt;/em&gt; es muy c&amp;oacute;modo para eso.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Nextcloud&lt;/em&gt; + cliente nativo. He cambiado &lt;em&gt;Dropbox...&lt;/em&gt; &amp;iexcl;por mi propio &lt;em&gt;Dropbox&lt;/em&gt;!. En mi NAS casero tengo corriendo una instancia &lt;em&gt;Docker&lt;/em&gt; de la imagen oficial de &lt;em&gt;Nextcloud&lt;/em&gt; en la que exporto los vol&amp;uacute;menes de datos a donde yo quiero (un disco duro externo por ejemplo, &amp;iquest;adivinan cu&amp;aacute;l?) y adem&amp;aacute;s tengo una cuenta de usuario que tambi&amp;eacute;n comparto con los distintos dispositivos. Cubrimos todos los casos de uso con una herramienta FOSS, &amp;iquest;no es maravilloso?.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;docker rm -f nextcloud01
docker run -d \
    -p 18081:80 \
    -v /home/docker/nextcloud/apps:/var/www/html/custom_apps \
    -v /home/docker/nextcloud/config:/var/www/html/config \
    -v /media/PHOTOS/nextcloud:/var/www/html/data \
    -h nextcloud01 \
    --name nextcloud01 \
    --restart always \
    nextcloud:14.0.3
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;No todo es ideal, pero casi&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para finalizar comentar un par de puntualizaciones, es cierto que el cliente m&amp;oacute;vil de &lt;em&gt;Nextcloud&lt;/em&gt; (tanto &lt;em&gt;iOS&lt;/em&gt; como &lt;em&gt;Android&lt;/em&gt;) no es el de&amp;nbsp;&lt;em&gt;Dropbox&lt;/em&gt; (a veces se cuelga, otras veces hay que arrancarlo manualmente en el reinicio de los terminales...), pero desde que he optado por esta soluci&amp;oacute;n s&amp;iacute; he notado una mejora sustancial que me da tranquilidad, ya no eran aquellos fallos del principio que dejaban im&amp;aacute;genes sin subir porque hab&amp;iacute;a fallado la red.&lt;/p&gt;
&lt;p&gt;Y ese fant&amp;aacute;stico disco duro externo del que llevo hablando desde el principio tiene sus copias, completas e incrementales tanto en el NAS como en &lt;em&gt;Google Drive&lt;/em&gt; (&amp;iquest;inception?).&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/google-photos-alternativas.html"&gt;Google Photos, alternativas&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 26 Jun 2019 20:23:05 +0000</pubDate><guid>http://http://www.userlinux.net/google-photos-alternativas.html</guid></item><item><title>Bucles asíncronos en javascript</title><link>http://http://www.userlinux.net/bucles-asincronos-en-javascript.html</link><description>&lt;p&gt;Muchas veces hay ciertas situaciones que hacen que me plantee si esto de programar es para m&amp;iacute;, sobre todo cuando, despues de un &lt;em&gt;debug&lt;/em&gt; largo y tedioso, te das cuenta que lo que pasaba o era una chorrada o fallo m&amp;iacute;o por no conocer los internals del lenguaje correspondiente.&lt;/p&gt;
&lt;p&gt;Quiero pensar que en mayor o menor medida le pasa alguna vez a todo el mundo.&lt;/p&gt;
&lt;p&gt;En este caso he perdido las yemas de los dedos de tanto &lt;code&gt;console.log&lt;/code&gt; que creo que podr&amp;iacute;a ir a por el r&amp;eacute;cord Guinness. En la l&amp;oacute;gica de un compoenente &lt;a href="https://vuejs.org/"&gt;Vue&lt;/a&gt; al que me ha tocado meterle mano hay una situaci&amp;oacute;n un tanto graciosa. Tengo que hacer varias llamadas &lt;em&gt;AJAX&lt;/em&gt; en el m&amp;eacute;todo &lt;code&gt;mounted()&lt;/code&gt; para recoger datos de un &lt;em&gt;API&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Nada fuera de lo com&amp;uacute;n. Digamos que tengo un id de competici&amp;oacute;n y tengo que llamar a un endpoint en el que que, dado ese id, me devuelve el nombre de la competici&amp;oacute;n. Una vez conozco el nombre, tengo que llamar a otro endpoint que me devuelva un listado de rondas que tiene esa competici&amp;oacute;n. Y por &amp;uacute;ltimo, dado ese listado de rondas, hacer una tercera llamada que, por cada ronda, me facilite el listado de deportistas que van a competir.&lt;/p&gt;
&lt;p&gt;Tengo que definir el m&amp;eacute;todo como as&amp;iacute;ncrono para poder hacer que unas peticiones esperen por el resultado de la anterior, hasta donde he le&amp;iacute;do ning&amp;uacute;n problema por definir &lt;code&gt;async mounted()&lt;/code&gt; y jugar con &lt;code&gt;await&lt;/code&gt; y &lt;code&gt;Promises&lt;/code&gt;, pero &amp;iquest;qu&amp;eacute; opin&amp;aacute;is de esa tercera llamada en bucle?.&lt;/p&gt;
&lt;p&gt;Entiendo que si dentro del bucle &lt;code&gt;forEach&lt;/code&gt; de rounds defino el m&amp;eacute;todo como as&amp;iacute;ncrono podr&amp;eacute; hacer las llamadas correspondientes esperando su ejecuci&amp;oacute;n con &lt;code&gt;await&lt;/code&gt;, tal que as&amp;iacute;:&lt;/p&gt;
&lt;pre&gt;Array.from(this.rounds).forEach( async round =&amp;gt; {
    await this.get_competitors_list(round.round_id);
    [...]
});
&lt;/pre&gt;
&lt;p&gt;Error, &lt;code&gt;forEach&lt;/code&gt; no va a esperar a que hayan acabado los elementos marcados como tal, simplemente ejecuta y sigue. As&amp;iacute; que, leyendo un poco de &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols"&gt;Iteration protocols&lt;/a&gt; veo que en su lugar podemos usar &lt;code&gt;for..of&lt;/code&gt;, que es una versi&amp;oacute;n moderna del "for loop" de forma que, simplemente cambiando forEach y adaptando la sintaxis al nuevo bucle haremos que funcione adecuadamente:&lt;/p&gt;
&lt;pre&gt;for(let round of this.rounds) {
    await this.get_competitors_list(round.round_id);
    [...]
}
&lt;/pre&gt;
&lt;p&gt;Y eso es todo, ni m&amp;aacute;s ni menos; una tarde entera de debug y seguir trazas aqu&amp;iacute; y all&amp;aacute;. Todo muy gracioso y divertido.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/bucles-asincronos-en-javascript.html"&gt;Bucles asíncronos en javascript&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 20 Jun 2019 17:26:24 +0000</pubDate><guid>http://http://www.userlinux.net/bucles-asincronos-en-javascript.html</guid></item><item><title>New backpack</title><link>http://http://www.userlinux.net/new-backpack.html</link><description>&lt;p&gt;Who doesn't like the backpacks?, I have to admit that I have a kind of fetich with the &lt;a href="https://www.instagram.com/explore/tags/backpacks/"&gt;backpacks&lt;/a&gt; in general and with the &lt;a href="https://www.instagram.com/explore/tags/everydaycarry/"&gt;everydaycarry&lt;/a&gt; (&lt;a href="https://www.instagram.com/explore/tags/edc/"&gt;edc&lt;/a&gt;) in particular.&amp;nbsp; I really like to poke the nose into other's backpacks and take ideas here and there to improve the stuff I carry daily.&lt;/p&gt;
&lt;p&gt;If my memory serves me correctly, back in 2013 or 2014 I bought the &lt;a href="https://www.google.com/search?q=IKEA+UPPT&amp;Auml;CKA&amp;amp;safe=off&amp;amp;source=lnms&amp;amp;tbm=isch"&gt;IKEA UPPT&amp;Auml;CKA&lt;/a&gt; and it was my loyal companion during the tough freelancer starter life, but it passed away in the &lt;a href="../../../../espressosprint.html"&gt;last trip to Greece&lt;/a&gt;. Some other parts were damaged but when I saw the zip totally broken I thought it was time for a change.&lt;/p&gt;
&lt;p&gt;gallerystart ikea-backpack-01.jpg ikea-backpack-02.jpg ikea-backpack-03.jpg galleryend&lt;/p&gt;
&lt;p&gt;It was a pity because all my work as freelance was in there from the beginning. That backpack saved my laptops from blows lot of times, lot of travels and lots of really good stories to tell.&lt;/p&gt;
&lt;p&gt;After that I felt that I had no alternative as good as the last one. Even thought about to buy the same model again but it was no longer available. Marta gave me a &lt;a href="https://www.google.com/search?q=Bobby+Original+Anti-Theft+backpack&amp;amp;safe=off&amp;amp;source=lnms&amp;amp;tbm=isch"&gt;Bobby Anti-Theft Backpack&lt;/a&gt; replica but in no more than 6 months the seams started to show damage signs and, to be honest, it was not comfortable to me. Probably the pockets placements and sizes were not the right to fit my stuff.&lt;/p&gt;
&lt;p&gt;gallerystart bobby-replica-01.jpg bobby-replica-02.jpg bobby-replica-03.jpg bobby-replica-04.jpg bobby-replica-05.jpg bobby-replica-06.jpg bobby-replica-07.jpg galleryend&lt;/p&gt;
&lt;p&gt;So, taking in account that I have to face a business trip in a few days, I wanted to replace the backpack the sooner the better. And after - so much - research time, reading and watching some videos here and there, I decided to buy a &lt;a href="https://www.amazon.es/gp/product/B071LHQQ5K/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&amp;amp;psc=1"&gt;Bopai Anti-Theft Business Backpack&lt;/a&gt; 15.6, "&lt;em&gt;made of hightest water-resistant microfiber leather and ballistic nylon material. Best choice for you in business, office, school or travel&lt;/em&gt;". No more, no less.&lt;/p&gt;
&lt;p&gt;I'm happy for now, but it's too early to say. I just hope that new backpack will be able to improve - or match - the performance of my beloved IKEA backpack.&lt;/p&gt;
&lt;p&gt;gallerystart bopai-backpack-01.jpg bopai-backpack-02.jpg bopai-backpack-03.jpg bopai-backpack-04.jpg bopai-backpack-05.jpg bopai-backpack-06.jpg bopai-backpack-07.jpg bopai-backpack-10.jpg bopai-backpack-16.jpg bopai-backpack-17.jpg bopai-backpack-18.jpg bopai-backpack-19.jpg bopai-backpack-20.jpg bopai-backpack-21.jpg galleryend&lt;/p&gt;

&lt;p&gt;The post &lt;a href="http://http://www.userlinux.net/new-backpack.html"&gt;New backpack&lt;/a&gt; appears first in &lt;a href="http://http://www.userlinux.net"&gt;userlinux.net&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 13 Jun 2019 20:53:55 +0000</pubDate><guid>http://http://www.userlinux.net/new-backpack.html</guid></item></channel></rss>