<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>rael.io</title><link>https://rael.io/authors/rael/</link><atom:link href="https://rael.io/authors/rael/index.xml" rel="self" type="application/rss+xml"/><description>rael.io</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>Fork me on [GitHub](https://github.com/raelga/rael.io)</copyright><image><url>https://rael.io/img/photos/emma-hello-card.jpg</url><title>rael.io</title><link>https://rael.io/authors/rael/</link></image><item><title>KubeCap NA&#39;19</title><link>https://rael.io/talk/kubecap-na19/</link><pubDate>Sun, 17 Nov 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/kubecap-na19/</guid><description/></item><item><title>Nodeless Kubernetes</title><link>https://rael.io/talk/cnbcn-nodeless-k8s/</link><pubDate>Wed, 16 Oct 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/cnbcn-nodeless-k8s/</guid><description>
&lt;h2 id=&#34;agenda&#34;&gt;Agenda&lt;/h2&gt;
&lt;h4 id=&#34;18-30-welcome&#34;&gt;&lt;strong&gt;18:30&lt;/strong&gt; Welcome&lt;/h4&gt;
&lt;h4 id=&#34;18-45-what-is-a-kubernetes-node&#34;&gt;&lt;strong&gt;18:45&lt;/strong&gt; What is a Kubernetes Node?&lt;/h4&gt;
&lt;h4 id=&#34;19-20-how-we-can-run-containers-without-nodes&#34;&gt;&lt;strong&gt;19:20&lt;/strong&gt; How we can run containers without nodes?&lt;/h4&gt;
&lt;h4 id=&#34;19-40-break&#34;&gt;&lt;strong&gt;19:40&lt;/strong&gt; Break&lt;/h4&gt;
&lt;h4 id=&#34;19-55-going-100-nodeless-kubernetes-in-aws&#34;&gt;&lt;strong&gt;19:55&lt;/strong&gt; Going 100% nodeless kubernetes in AWS&lt;/h4&gt;
&lt;h4 id=&#34;20-40-networking-with-snacks-and-drinks-thanks-to-marfeel&#34;&gt;&lt;strong&gt;20:40&lt;/strong&gt; Networking with snacks and drinks thanks to Marfeel!&lt;/h4&gt;
&lt;h2 id=&#34;talks&#34;&gt;Talks&lt;/h2&gt;
&lt;h4 id=&#34;welcome&#34;&gt;Welcome&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Introduction to the Cloud Native community and Marfeel!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;what-is-a-kubernetes-node&#34;&gt;What is a Kubernetes Node?&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Deep dive into what defines a Kubernetes node, what is a container runtime and how Kubernetes interacts with them to orchestrate containers. As usual, driven by live demos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;how-we-can-run-pods-without-nodes&#34;&gt;How we can run pods without nodes?&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Introduction to managed container services, how to use them with Kubernetes and what providers are available. Live demo using the Azure Kubernetes Engine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;going-100-nodeless-kubernetes-in-aws&#34;&gt;Going 100% nodeless kubernetes in AWS&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;How to run an AWS EKS cluster without a single EC2 instance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;speakers&#34;&gt;Speakers&lt;/h2&gt;
&lt;h4 id=&#34;nacho-alonso&#34;&gt;Nacho Alonso&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;SRE at CAPSiDE, contributor at Kubernetes and co-organizer at Cloud Native Barcelona&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;rael-garcia&#34;&gt;Rael Garcia&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;SRE at Red Hat, contributor at Kubernetes and organizer at Cloud Native Barcelona gh@raelga&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;roi-vázquez&#34;&gt;Roi Vázquez&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;SRE at Red Hat and contributor at Kubernetes gh@roivaz&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We will try to provide a URL for the streaming once the event starts.&lt;/p&gt;
&lt;p&gt;More information at &lt;a href=&#34;https://rael.io/talk/cnbcn-nodeless-k8s/&#34; target=&#34;_blank&#34;&gt;https://rael.io/talk/cnbcn-nodeless-k8s/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Extending the Kubernetes API with Custom Resources, Controllers and Operators</title><link>https://rael.io/talk/cnbcn-extending-k8s/</link><pubDate>Wed, 18 Sep 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/cnbcn-extending-k8s/</guid><description>
&lt;p&gt;What is the controller pattern? And the operator pattern? How we can use custom controllers to extend the Kubernetes API? How we can build our own custom resources, controllers and operators?&lt;/p&gt;
&lt;p&gt;Join at &lt;a href=&#34;https://www.meetup.com/Cloud-Native-Barcelona/events/264074481/&#34; target=&#34;_blank&#34;&gt;meetup.com/Cloud-Native-Barcelona&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slides at &lt;a href=&#34;https://go.rael.dev/cnbcn-extending-k8s&#34; target=&#34;_blank&#34;&gt;go.rael.dev/cnbcn-extending-k8s&lt;/a&gt;
The talk will be streamed live at &lt;a href=&#34;https://glovoapp.zoom.us/j/364754734&#34; target=&#34;_blank&#34;&gt;https://glovoapp.zoom.us/j/364754734&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;agenda&#34;&gt;Agenda&lt;/h2&gt;
&lt;h3 id=&#34;18-30-welcome&#34;&gt;18:30 Welcome&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Introduction to the Cloud Native community and Glovo!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;18-45-kubernetes-architecture&#34;&gt;18:45 Kubernetes Architecture&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Introduction to the core principles an components of the Kubernetes architecture. We will start a Kubernetes cluster from scratch, component by component learning how each piece fits into the puzzle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/raelga/kubernetes-talks/tree/master/k8s-from-scratch&#34; target=&#34;_blank&#34;&gt;github.com/raelga/kubernetes-talks/tree/master/k8s-from-scratch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
&lt;iframe src=&#34;//www.youtube.com/embed/zFqQb1e2jO4&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allowfullscreen title=&#34;YouTube Video&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h3 id=&#34;19-40-break&#34;&gt;19:40 Break&lt;/h3&gt;
&lt;h3 id=&#34;19-45-kubernetes-custom-controllers-and-operators-in-action&#34;&gt;19:45 Kubernetes Custom Controllers and Operators in action&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Introduction to the Operator concept. We will deploy some operators in a Google Kubernetes Engine cluster step by step and build our own Operator without (almost) writing any code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;github.com/raelga/extending-kubernetes/tree/master/labs/ansible-operators&#34; target=&#34;_blank&#34;&gt;github.com/raelga/extending-kubernetes/tree/master/labs/ansible-operators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;github.com/raelga/extending-kubernetes/tree/master/labs/operators-and-custom-controllers&#34; target=&#34;_blank&#34;&gt;github.com/raelga/extending-kubernetes/tree/master/labs/operators-and-custom-controllers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;20-30-pizza-and-drinks-from-glovo&#34;&gt;20:30 Pizza and drinks from Glovo!&lt;/h3&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;speakers&#34;&gt;Speakers&lt;/h2&gt;
&lt;h3 id=&#34;nacho-alonso&#34;&gt;Nacho Alonso&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;SRE at CAPSiDE, contributor at Kubernetes and co-organizer at Cloud Native Barcelona&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;rael-garcia&#34;&gt;Rael Garcia&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;SRE at CAPSiDE, contributor at Kubernetes and organizer at Cloud Native Barcelona&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;roi-vázquez&#34;&gt;Roi Vázquez&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;SRE at CAPSiDE and contributor at Kubernetes &lt;a href=&#34;github.com/lominorama&#34; target=&#34;_blank&#34;&gt;@lominorama&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;sergio-lópez&#34;&gt;Sergio López&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;SRE at Red Hat &lt;a href=&#34;github.com/slopezz&#34; target=&#34;_blank&#34;&gt;@slopezz&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Open Source HackDay</title><link>https://rael.io/talk/jug-opensource19/</link><pubDate>Sat, 07 Sep 2019 16:00:00 +0200</pubDate><guid>https://rael.io/talk/jug-opensource19/</guid><description>
&lt;p&gt;Cloud Native Barcelona y Barcelona JUG unen fuerzas con otras comunidades hispanoamericacnas para una jornada sobre &amp;ldquo;Como contribuir en proyectos open source&amp;rdquo;. En esta sesión online retransmitida a través de Youtube, contaremos con la modedración desde el Caribe del grupo de usuarios la República Dominicana Java Dominicano.&lt;/p&gt;
&lt;p&gt;Hablaremos hablando sobre cómo contribuir al código abierto: herramientas, medios, proceso, recomendaciones y más. Trabajaremos paso a paso para que los asistentes puedan llegar a tener su primer contribución al proyecto Apache TomEE, teniendo así la experiencia completa de un contribuidor del Open Source.&lt;/p&gt;
&lt;p&gt;Por último, no podemos dejar de agradecer a CAPSiDE por su soporte, ya que nos han ofrecido sus instalaciones para el evento.&lt;/p&gt;
&lt;p&gt;Si no puedes acercarte, no te preocupes, puede seguir la sesión desde el live streaming en &lt;a href=&#34;https://www.youtube.com/watch?v=0bVqbh7TBY4&#34; target=&#34;_blank&#34;&gt;https://www.youtube.com/watch?v=0bVqbh7TBY4&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;requisitos&#34;&gt;Requisitos:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cuenta de github&lt;/li&gt;
&lt;li&gt;Git instalado y configurado correctamente con su cuenta de GitHub.com&lt;/li&gt;
&lt;li&gt;Java 8 instalado. Si usas Linux o OSX puedes utilizar un administrador de versiones molón como SDKMAN ;-) ( &lt;a href=&#34;http://sdkman.io&#34; target=&#34;_blank&#34;&gt;http://sdkman.io&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;Apache Maven ( &amp;gt;= 3.3.9 )&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;presentadores&#34;&gt;Presentadores&lt;/h2&gt;
&lt;h3 id=&#34;carlos-camacho-ccamachog-https-twitter-com-ccamachog&#34;&gt;Carlos Camacho &lt;a href=&#34;https://twitter.com/ccamachog&#34; target=&#34;_blank&#34;&gt;@ccamachog&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Carlos es Co-Líder de la comunidad Java de la República Dominicana Java Dominicano, Ingeniero Telemático, Evangelista Java, Profesor de la Pontificia Universidad Católica María Madre, miembro FCLD, Linux User, Android, Esposo, Padre, Amigo, Konoha, Dark Side, Nintendo. :-)&lt;/p&gt;
&lt;h3 id=&#34;césar-hernández-cesarhgt-https-twitter-com-cesarhgt&#34;&gt;César Hernández &lt;a href=&#34;https://twitter.com/cesarHgt&#34; target=&#34;_blank&#34;&gt;@cesarHgt&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;César es Senior Software Engineer en Tomitribe con experiencia en Aplicaciones Enterprise Java. Acreedor de reconocimientos internacionales como Java Champion y Ducke&amp;rsquo;s Choice award y participe de varios proyectos e iniciativas Open Source, Contribuidor para Apache TomEE, Eclipse MicroProfile y Committer para Eclipse JakartaEE, profesor y orador público. Cuando César está lejos de una computadora, le gusta pasar tiempo con su familia, viajar y tocar música con la Java Community Band, The Null Pointers.&lt;/p&gt;
&lt;h3 id=&#34;daniel-diaz-danieldiasjava-https-twitter-com-danieldiasjava&#34;&gt;Daniel Diaz &lt;a href=&#34;https://twitter.com/DanielDiasJava&#34; target=&#34;_blank&#34;&gt;@DanielDiasJava&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Daniel es un desarrollador Java EE, le gusta compartir, aprender nuevos conocimientos de java y Java EE con las comunidades. Coordinador de la comunidades Java de Brazil SouJava, miembro del JCP, contribuidor de JSR 354 (Money and Currency API) , JSR-371 (MVC 1.0), JSR-382 (Configuration API 1.0) y Expert Group JSR-385 (Units of Measurement 2.0), actualmente es un contribuidor activo del proyecto Apache TomEE.&lt;/p&gt;
&lt;h3 id=&#34;david-blevins-dblevins-https-twitter-com-dblevins&#34;&gt;David Blevins &lt;a href=&#34;https://twitter.com/dblevins&#34; target=&#34;_blank&#34;&gt;@dblevins&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;David es es el Fundador del proyecto Apache TomEE, contribudor veterano de Java EE Open Source, ha implementando y definido especificaciones por más de 15 años tratando de hacer Java EE simple, testeable, y liviano como Java SE. Co-Fundador de Open EJB, Gerónimo y TomEE. Miembro de Eclipse Microprofile, Jakarta EE PMC, JCP Executive Committee, Java EE Expert Group.&lt;/p&gt;
&lt;h3 id=&#34;rael-garcia-raelga-https-twitter-com-raelga&#34;&gt;Rael Garcia &lt;a href=&#34;https://twitter.com/raelga&#34; target=&#34;_blank&#34;&gt;@raelga&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Rael es Site Reliability Engineer en CAPSiDE, miembro del proyecto Kubernetes, fundador el grupo de usuarios Cloud Native Barcelona (cloudnative.barcelona) y CNCF Community Speaker. En Kubernetes es approver para el contenido en castellano en sig-docs, parte del equipo organizativo de los New Contributors Summits y colaborador en los grupos de experiencia de contribuidores, usabilidad y CLI.&lt;/p&gt;
&lt;h2 id=&#34;comunidades-que-participan&#34;&gt;Comunidades que participan&lt;/h2&gt;
&lt;h3 id=&#34;europe-spain&#34;&gt;Europe - Spain&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cloud Native Barcelona - &lt;a href=&#34;https://cloudnative.barcelona&#34; target=&#34;_blank&#34;&gt;https://cloudnative.barcelona&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Barcelona JUG - &lt;a href=&#34;https://twitter.com/BarcelonaJUG&#34; target=&#34;_blank&#34;&gt;https://twitter.com/BarcelonaJUG&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Malaga JUG - &lt;a href=&#34;https://twitter.com/MalagaJUG&#34; target=&#34;_blank&#34;&gt;https://twitter.com/MalagaJUG&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Madrid JUG - &lt;a href=&#34;https://twitter.com/MadridJUG&#34; target=&#34;_blank&#34;&gt;https://twitter.com/MadridJUG&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;south-america-guatemala&#34;&gt;South America - Guatemala&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Guate JUG - &lt;a href=&#34;https://twitter.com/guatejug&#34; target=&#34;_blank&#34;&gt;https://twitter.com/guatejug&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;south-america-ecuador&#34;&gt;South America - Ecuador&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ecuador JUG - &lt;a href=&#34;https://twitter.com/EcuadorJUG&#34; target=&#34;_blank&#34;&gt;https://twitter.com/EcuadorJUG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;south-america-colombia&#34;&gt;South America - Colombia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Medellín JUG - &lt;a href=&#34;https://twitter.com/MedellinJug&#34; target=&#34;_blank&#34;&gt;https://twitter.com/MedellinJug&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;south-america-nicaragua&#34;&gt;South America - Nicaragua&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nicaragua JUG - &lt;a href=&#34;https://twitter.com/jugnicaragua&#34; target=&#34;_blank&#34;&gt;https://twitter.com/jugnicaragua&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;south-america-república-dominicana&#34;&gt;South America - República Dominicana&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;JUG Dominicano - &lt;a href=&#34;https://twitter.com/JavaDominicano&#34; target=&#34;_blank&#34;&gt;https://twitter.com/JavaDominicano&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;north-america-california&#34;&gt;North America - California&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tomitribe - &lt;a href=&#34;https://twitter.com/Tomitribe&#34; target=&#34;_blank&#34;&gt;https://twitter.com/Tomitribe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>yodo</title><link>https://rael.io/project/yodo/</link><pubDate>Mon, 26 Aug 2019 11:23:56 +0200</pubDate><guid>https://rael.io/project/yodo/</guid><description>
&lt;p&gt;&lt;a href=&#34;https://github.com/raelga/yodo/actions&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://github.com/raelga/yodo/workflows/Build/badge.svg&#34; alt=&#34;Actions Status&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;https://travis-ci.org/raelga/yodo&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://travis-ci.org/raelga/yodo.svg?branch=master&#34; alt=&#34;Build Status&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;https://goreportcard.com/report/github.com/raelga/yodo&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://goreportcard.com/badge/github.com/raelga/yodo&#34; alt=&#34;Go Report Card&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;https://coveralls.io/github/raelga/yodo?branch=master&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://coveralls.io/repos/github/raelga/yodo/badge.svg?branch=master&#34; alt=&#34;Coverage Status&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;https://github.com/raelga/yodo/blob/master/LICENSE&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/license/raelga/yodo&#34; alt=&#34;GitHub&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Simple GoLang &lt;strong&gt;TODO&lt;/strong&gt; application&lt;/p&gt;
&lt;p&gt;This application is just a playground to learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TDD&lt;/strong&gt; with GoLang&lt;/li&gt;
&lt;li&gt;github.com/spf13/&lt;strong&gt;cobra&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;github.com/spf13/&lt;strong&gt;viper&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;gopkg.in/&lt;strong&gt;yaml&lt;/strong&gt;.v2&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ go build
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;$ ./yodo get
default:
Empty list
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;$ ./yodo add Add verbose mode
add task &amp;quot;Add verbose mode&amp;quot; (false) to file$
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;$ ./yodo get
default:
- [0] &amp;quot;Add verbose mode&amp;quot; (false)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;$ ./yodo do 0
Task 0 done.
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;$ ./yodo get
default:
- [0] &amp;quot;Add verbose mode&amp;quot; (true)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;$ cat ~/.yodo/default.yaml
id: 0
name: default
tasks:
- id: 0
status: true
description: Add verbose mode
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Gopher art from &lt;a href=&#34;https://github.com/ashleymcnamara/gophers&#34; target=&#34;_blank&#34;&gt;ashleymcnamara/gophers&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>rael.io</title><link>https://rael.io/project/rael.io/</link><pubDate>Thu, 15 Aug 2019 11:23:56 +0200</pubDate><guid>https://rael.io/project/rael.io/</guid><description>&lt;p&gt;&lt;a href=&#34;https://app.netlify.com/sites/rael/deploys&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://api.netlify.com/api/v1/badges/17660b24-5ace-4e45-9d81-31237fbc07fd/deploy-status&#34; alt=&#34;Netlify Status&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Static site for rael.io using:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://gohugo.io/&#34; target=&#34;_blank&#34;&gt;Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sourcethemes.com/academic/&#34; target=&#34;_blank&#34;&gt;Academic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://netlify.com&#34; target=&#34;_blank&#34;&gt;Netlify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cloud Study Jam: Cloud Architecture</title><link>https://rael.io/talk/cnbcn-cloud-architecture19/</link><pubDate>Tue, 30 Jul 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/cnbcn-cloud-architecture19/</guid><description/></item><item><title>Diversity and Inclusion at CNCF</title><link>https://rael.io/talk/pride19-diversity-and-inclusion-at-cncf/</link><pubDate>Thu, 27 Jun 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/pride19-diversity-and-inclusion-at-cncf/</guid><description/></item><item><title>KubeCap EU&#39;19</title><link>https://rael.io/talk/kubecap-eu19/</link><pubDate>Wed, 19 Jun 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/kubecap-eu19/</guid><description/></item><item><title>Cloud Study Jam: GCP Essentials</title><link>https://rael.io/talk/cnbcn-csj-essentials19/</link><pubDate>Thu, 06 Jun 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/cnbcn-csj-essentials19/</guid><description/></item><item><title>Intro &#43; Deep Dive: Kubernetes (Docs) SIG</title><link>https://rael.io/talk/kubecon-eu19-sig-docs/</link><pubDate>Thu, 23 May 2019 15:55:00 +0200</pubDate><guid>https://rael.io/talk/kubecon-eu19-sig-docs/</guid><description/></item><item><title>Contributing to Kubernetes</title><link>https://rael.io/talk/k8s-contribute/</link><pubDate>Thu, 16 May 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/k8s-contribute/</guid><description>&lt;p&gt;Since the addition of &lt;strong&gt;multilingual support&lt;/strong&gt; for the Kubernetes website in November (&lt;a href=&#34;https://kubernetes.io/blog/2018/11/08/kubernetes-docs-updates-international-edition/&#34; target=&#34;_blank&#34;&gt;https://kubernetes.io/blog/2018/11/08/kubernetes-docs-updates-international-edition/&lt;/a&gt;), the support from the community has been amazing and currently &lt;strong&gt;10 localisation teams&lt;/strong&gt; are working to make the documentation more accessible by &lt;strong&gt;breaking the language barrier&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Doesn&amp;rsquo;t matter if you are an expert user or just started playing with Kubernetes&lt;/strong&gt;, you can add new documentation from your own experience or based on the English knowledge base, review existing documentation or just fix typos, &lt;strong&gt;any contribution would be appreciated!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Kubernetes Study Jam: ReplicaSets</title><link>https://rael.io/talk/k8s-study-jam-replicasets/</link><pubDate>Thu, 09 May 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/k8s-study-jam-replicasets/</guid><description/></item><item><title>GitOps Pipeline</title><link>https://rael.io/talk/cnbcn-gitops-pipeline/</link><pubDate>Tue, 30 Apr 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/cnbcn-gitops-pipeline/</guid><description/></item><item><title>Kubernetes Study Jam: Pods</title><link>https://rael.io/talk/k8s-study-jam-pods/</link><pubDate>Tue, 16 Apr 2019 18:30:00 +0200</pubDate><guid>https://rael.io/talk/k8s-study-jam-pods/</guid><description/></item><item><title>Traefik 2.0 Alpha</title><link>https://rael.io/talk/cnbcn-traefik-2-alpha/</link><pubDate>Thu, 28 Mar 2019 17:20:58 +0200</pubDate><guid>https://rael.io/talk/cnbcn-traefik-2-alpha/</guid><description/></item><item><title>Docker wordpress</title><link>https://rael.io/project/docker-wordpress/</link><pubDate>Mon, 04 Mar 2019 11:23:56 +0200</pubDate><guid>https://rael.io/project/docker-wordpress/</guid><description>
&lt;p&gt;Dockerfile for Wordpress with some plugin/theme management.&lt;/p&gt;
&lt;p&gt;Available at &lt;a href=&#34;https://gcr.io/raelga/wordpress&#34; target=&#34;_blank&#34;&gt;gcr.io/raelga/wordpress:latest&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;dockerfile&#34;&gt;Dockerfile&lt;/h2&gt;
&lt;h3 id=&#34;stage-wp-plugins&#34;&gt;Stage: wp-plugins&lt;/h3&gt;
&lt;p&gt;Downloads form GitHub the plugins listed in &lt;a href=&#34;context/plugins.list&#34; target=&#34;_blank&#34;&gt;context/plugins.list&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;raelga/wp-mailgun:1.7.1
wpCloud/wp-stateless:2.2.6
WP2Static/wp2static:6.6.5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The format is: &lt;code&gt;&amp;lt;github-username&amp;gt;/&amp;lt;github-repo&amp;gt;:&amp;lt;github-tag&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;stage-wp&#34;&gt;Stage: wp&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Copies the content from &lt;a href=&#34;context/wp-content&#34; target=&#34;_blank&#34;&gt;context/wp-content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Copies the plugins from the &lt;code&gt;wp-plugins&lt;/code&gt; stage to the wp plugins folder.&lt;/li&gt;
&lt;li&gt;Adds some php optimizations&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;output&#34;&gt;Output&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;docker build -t cms.bigot.es:7c4311f -f cms.bigot.es/Dockerfile cms.bigot.es/context
Sending build context to Docker daemon 3.936MB
Step 1/7 : FROM bash:5.0 as wp-plugins
---&amp;gt; f63c4bf22009
Step 2/7 : ADD plugins.list /tmp/wp-plugins/plugins.list
---&amp;gt; 263f808fe293
Step 3/7 : RUN while read plugin || [ -n &amp;quot;$plugin&amp;quot; ]; do wget -q -O - https://github.com/${plugin/\:*/}/archive/${plugin/*:/}.tar.gz | tar zx -C /tmp/wp-plugins &amp;amp;&amp;amp; echo &amp;quot;Plugin ${plugin} downloaded.&amp;quot;; done &amp;lt; /tmp/wp-plugins/plugins.list
---&amp;gt; Running in f5217e97b99c
Plugin raelga/wp-mailgun:1.7.1 downloaded.
Plugin wpCloud/wp-stateless:2.2.6 downloaded.
Plugin WP2Static/wp2static:6.6.5 downloaded.
Removing intermediate container f5217e97b99c
---&amp;gt; a639b006aec8
Step 4/7 : FROM wordpress:5.1
---&amp;gt; d3a744e0e523
Step 5/7 : COPY --chown=www-data wp-content /var/www/html/wp-content
---&amp;gt; Using cache
---&amp;gt; 3649a2f4204b
Step 6/7 : COPY --from=wp-plugins --chown=www-data /tmp/wp-plugins /var/www/html/wp-content/plugins/
---&amp;gt; 24191ed6bb75
Step 7/7 : RUN { mv $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini; echo &#39;opcache.memory_consumption=64&#39;; echo &#39;opcache.max_accelerated_files=4000&#39;; echo &#39;opcache.revalidate_freq=10&#39;; } &amp;gt; /usr/local/etc/php/conf.d/opcache-recommended.ini
---&amp;gt; Running in d1f3bd26f718
Removing intermediate container d1f3bd26f718
---&amp;gt; e86ce9bed1cc
Successfully built e86ce9bed1cc
Successfully tagged cms.bigot.es:7c4311f
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;dockerfile-onbuild&#34;&gt;Dockerfile.onbuild&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;Dockerfile.onbuild&lt;/code&gt; builds the &lt;code&gt;gcr.io/raelga/wordpress:latest&lt;/code&gt; image with some ONBUILD triggers, to copy the wp-context and download the plugins from the &lt;code&gt;plugins.list&lt;/code&gt; on build when used as &lt;code&gt;FROM&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat Dockerfile
FROM gcr.io/raelga/wordpress:latest
$ docker build -t example-wp -f Dockerfile context/
Sending build context to Docker daemon 3.936MB
Step 1/1 : FROM gcr.io/raelga/wordpress:latest
latest: Pulling from raelga/wordpress
27833a3ba0a5: Already exists
2d79f6773a3c: Already exists
f5dd9a448b82: Already exists
95719e57e42b: Already exists
cc75e951030f: Already exists
78873f480bce: Already exists
1b14116a29a2: Already exists
ea69a25cac2e: Already exists
2dbd1202c78e: Already exists
22cefd01eafa: Already exists
21da110f3a63: Already exists
0c1e476df271: Already exists
70a74d14ca92: Already exists
6590e4467d09: Already exists
1b0635fe52ca: Already exists
ccb00f7ad0b4: Already exists
996d17ef73fc: Already exists
2aa80255fade: Already exists
6a6dca4d800a: Already exists
1674e86caa8e: Pull complete
Digest: sha256:e010adc7d5789b75e86e2799bb08e7baec225750d6dce34ef14be2b4ae507d85
Status: Downloaded newer image for gcr.io/raelga/wordpress:latest
# Executing 3 build triggers
---&amp;gt; Running in bdd18a2ac418
######################################################################## 100.0%
Plugin raelga/wp-mailgun:1.7.1 downloaded.
######################################################################## 100.0%
Plugin wpCloud/wp-stateless:2.2.6 downloaded.
######################################################################## 100.0%
Plugin WP2Static/wp2static:6.6.5 downloaded.
Removing intermediate container bdd18a2ac418
---&amp;gt; 3b0c87eb6eb5
Successfully built 3b0c87eb6eb5
Successfully tagged example-wp:latest
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>gcp.rael.io</title><link>https://rael.io/project/gcp.rael.io/</link><pubDate>Sun, 24 Feb 2019 11:23:56 +0200</pubDate><guid>https://rael.io/project/gcp.rael.io/</guid><description>&lt;p&gt;Deployment manager deployment from my Google Cloud projects.&lt;/p&gt;</description></item><item><title>Bigotes</title><link>https://rael.io/project/bigotes/</link><pubDate>Sun, 11 Nov 2018 11:23:56 +0200</pubDate><guid>https://rael.io/project/bigotes/</guid><description>&lt;p&gt;&lt;a href=&#34;https://app.netlify.com/sites/bigotes/deploys&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://api.netlify.com/api/v1/badges/fc20200d-be84-45ae-a4f2-0b16eff715f5/deploy-status&#34; alt=&#34;Netlify Status&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Docker cats</title><link>https://rael.io/project/docker-cats/</link><pubDate>Sun, 11 Nov 2018 11:23:56 +0200</pubDate><guid>https://rael.io/project/docker-cats/</guid><description>&lt;p&gt;Simple docker images that show an image of a cat, the tag is the cat name:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cloud.docker.com/u/raelga/repository/docker/raelga/cats&#34; target=&#34;_blank&#34;&gt;https://cloud.docker.com/u/raelga/repository/docker/raelga/cats&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use them with:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker push raelga/cats:cat-name&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Kubernetes for all: AWS, Azure and GCP</title><link>https://rael.io/talk/k8s-clouds/</link><pubDate>Tue, 19 Jun 2018 18:30:00 +0200</pubDate><guid>https://rael.io/talk/k8s-clouds/</guid><description/></item><item><title>Cloud Native Barcelona</title><link>https://rael.io/talk/cnbcn/</link><pubDate>Tue, 01 May 2018 16:30:13 +0200</pubDate><guid>https://rael.io/talk/cnbcn/</guid><description>&lt;p&gt;&lt;a href=&#34;https://cloudnative.barcelona&#34; target=&#34;_blank&#34;&gt;Cloud Native Barcelona&lt;/a&gt; is the official &lt;a href=&#34;https://cncf.io&#34; target=&#34;_blank&#34;&gt;Cloud Native Computing Foundation&lt;/a&gt; user group dedicated to building a &lt;strong&gt;strong, open, diverse developer community&lt;/strong&gt; around the Cloud Native platform and technologies in &lt;strong&gt;Barcelona&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cloud native technologies empower organizations&lt;/strong&gt; to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.&lt;/p&gt;
&lt;p&gt;These techniques &lt;strong&gt;enable loosely coupled systems&lt;/strong&gt; that are &lt;strong&gt;resilient&lt;/strong&gt;, &lt;strong&gt;manageable&lt;/strong&gt;, and &lt;strong&gt;observable&lt;/strong&gt;. Combined with &lt;strong&gt;robust automation&lt;/strong&gt;, they allow engineers to make high-impact changes frequently and predictably with minimal toil.&lt;/p&gt;</description></item><item><title>Kubernetes Talks</title><link>https://rael.io/project/kubernetes-talks/</link><pubDate>Wed, 28 Mar 2018 11:23:56 +0200</pubDate><guid>https://rael.io/project/kubernetes-talks/</guid><description>
&lt;h1 id=&#34;talks&#34;&gt;Talks&lt;/h1&gt;
&lt;h2 id=&#34;kubernetes-101&#34;&gt;Kubernetes 101&lt;/h2&gt;
&lt;p&gt;The main subject of this talk is to have an overview on the microservices architectures. Then, starts an introduction to the kubernetes architecture, core services and objects: pods, controllers, deployments and sets.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/101/kubernetes-101.slide&#34; target=&#34;_blank&#34;&gt;Kubernetes 101 Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;101/&#34; target=&#34;_blank&#34;&gt;Kubernetes 101 Slides Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;kubernetes-clouds&#34;&gt;Kubernetes Clouds&lt;/h2&gt;
&lt;p&gt;The main subject of this talk is viewing the differences between each managed kubernetes solution offered by AWS, Azure and GCP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/clouds/kubernetes-clouds.slide&#34; target=&#34;_blank&#34;&gt;Kubernetes Clouds Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/&#34; target=&#34;_blank&#34;&gt;Kubernetes Clouds Slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the labs, the main object is having several clusters deployed all over the using each managed (or not) solution and deploy the same application using the common interface provided by Kubernetes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#deploy-kubernetes-in-aws&#34; target=&#34;_blank&#34;&gt;Deploy Kubernetes in Amazon Web services&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#managed-kubernetes-with-eks&#34; target=&#34;_blank&#34;&gt;AWS managed Kubernetes with EKS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#amazon-web-services---eksctl-alpha&#34; target=&#34;_blank&#34;&gt;AWS managed Kubernetes with EKS using eksctl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#amazon-web-services---kops&#34; target=&#34;_blank&#34;&gt;AWS non-managed on EC2 with Kops&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/gcp/#deploy-kubernetes-in-google-cloud-platform&#34; target=&#34;_blank&#34;&gt;Deploy Kubernetes in Google Cloud Platform&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/gcp/#managed-kubernetes-with-google-kubernetes-engine-gke&#34; target=&#34;_blank&#34;&gt;GCP managed Kubernetes with GKE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/azure/#deploy-kubernetes-in-microsoft-azure&#34; target=&#34;_blank&#34;&gt;Deploy Kubernetes in Azure&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/azure/#managed-kubernetes-with-azure-kubernetes-service-aks&#34; target=&#34;_blank&#34;&gt;Azure managed Kubernetes with AKS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;providers&#34;&gt;Providers&lt;/h2&gt;
&lt;h3 id=&#34;digital-ocean&#34;&gt;Digital Ocean&lt;/h3&gt;
&lt;p&gt;The main subject of this talk is introducing to the Digital Ocean cloud platform and their Managed Kubernetes solution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/providers/do/digital-ocean.slide&#34; target=&#34;_blank&#34;&gt;Digital Ocean Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;providers/do/&#34; target=&#34;_blank&#34;&gt;Digital Ocean Slides Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;
&lt;h3 id=&#34;traefik&#34;&gt;Traefik&lt;/h3&gt;
&lt;p&gt;The main subject of this talk is introducing to the Traefik awesome Cloud Native Edge Router and the new features comming in Traefik 2.0.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/traefik/traefik.slide&#34; target=&#34;_blank&#34;&gt;Traefik Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;traefik/&#34; target=&#34;_blank&#34;&gt;Traefik Slides Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;study-jams&#34;&gt;Study Jams&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#replicasets&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;ReplicaSets&lt;/code&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#introduction&#34; target=&#34;_blank&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#learn-more&#34; target=&#34;_blank&#34;&gt;Learn more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#some-notes&#34; target=&#34;_blank&#34;&gt;Some notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#1---create-a-replicaset&#34; target=&#34;_blank&#34;&gt;1 - Create a &lt;code&gt;ReplicaSet&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#2---scaling-replicasets&#34; target=&#34;_blank&#34;&gt;2 - Scaling &lt;code&gt;ReplicaSets&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#double-the-numbers-of-replicas-with-kubectl-scale&#34; target=&#34;_blank&#34;&gt;Double the numbers of replicas with &lt;code&gt;kubectl scale&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#scale-back-to-1-replica&#34; target=&#34;_blank&#34;&gt;Scale back to 1 replica&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#update-the-replicaset-with-the-yaml-definition&#34; target=&#34;_blank&#34;&gt;Update the &lt;code&gt;ReplicaSet&lt;/code&gt; with the yaml definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#scale-to-50-replicas&#34; target=&#34;_blank&#34;&gt;Scale to 50 replicas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#scale-down-back-to-5-replicas&#34; target=&#34;_blank&#34;&gt;Scale down back to 5 replicas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#3---selectors-and-pods&#34; target=&#34;_blank&#34;&gt;3 - Selectors and Pods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#deploy-some-blue-pods&#34; target=&#34;_blank&#34;&gt;Deploy some &lt;strong&gt;blue&lt;/strong&gt; pods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#deploy-a-blue-replicaset&#34; target=&#34;_blank&#34;&gt;Deploy a &lt;strong&gt;blue&lt;/strong&gt; &lt;code&gt;ReplicaSet&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#run-a-red-pod&#34; target=&#34;_blank&#34;&gt;Run a &lt;em&gt;red&lt;/em&gt; pod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#replicaset-for-non-colored-pods-only&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;ReplicaSet&lt;/code&gt; for non-colored &lt;code&gt;pods&lt;/code&gt; only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#lets-acquire-those-fancy-orange-pods&#34; target=&#34;_blank&#34;&gt;Let&amp;rsquo;s acquire those fancy orange &lt;code&gt;pods&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#remove-a-pod-from-the-orange-replicaset&#34; target=&#34;_blank&#34;&gt;Remove a pod from the orange replicaset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#clean-up&#34; target=&#34;_blank&#34;&gt;Clean up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#4---container-probes&#34; target=&#34;_blank&#34;&gt;4 - Container probes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#readiness-probe&#34; target=&#34;_blank&#34;&gt;Readiness probe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#liveness-probe&#34; target=&#34;_blank&#34;&gt;Liveness probe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#clean-up-1&#34; target=&#34;_blank&#34;&gt;Clean up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#5---manual-rolling-update&#34; target=&#34;_blank&#34;&gt;5 - Manual rolling update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#deploy-the-initial-replicaset&#34; target=&#34;_blank&#34;&gt;Deploy the initial &lt;code&gt;ReplicaSet&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#update-the-replicaset-pod-template&#34; target=&#34;_blank&#34;&gt;Update the &lt;code&gt;ReplicaSet&lt;/code&gt; pod template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#update-the-replicaset-pod-template-with-the-fixed-readinessprobe&#34; target=&#34;_blank&#34;&gt;Update the &lt;code&gt;ReplicaSet&lt;/code&gt; &lt;code&gt;Pod&lt;/code&gt; template with the fixed &lt;code&gt;ReadinessProbe&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#clean-up-the-failing-versions-and-the-old-ones&#34; target=&#34;_blank&#34;&gt;Clean up the failing versions and the old ones&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Gopher art from &lt;a href=&#34;https://github.com/ashleymcnamara/gophers&#34; target=&#34;_blank&#34;&gt;ashleymcnamara/gophers&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Jupyter Image Extractor</title><link>https://rael.io/project/jupyter-image-extractor/</link><pubDate>Tue, 06 Mar 2018 11:23:56 +0200</pubDate><guid>https://rael.io/project/jupyter-image-extractor/</guid><description>
&lt;p&gt;Parses a Jupyter book html and extracts the images.&lt;/p&gt;
&lt;h2 id=&#34;build&#34;&gt;Build&lt;/h2&gt;
&lt;p&gt;Build the container:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;ellie:ws rael$ make docker-build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Expected output:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;docker build . -t &#39;jupyter-image-extractor&#39;
Sending build context to Docker daemon 12.46MB
Step 1/1 : FROM python:3-onbuild
# Executing 3 build triggers
---&amp;gt; Running in be4957e8a2d2
Collecting beautifulsoup4 (from -r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/9e/d4/10f46e5cfac773e22707237bfcd51bbffeaf0a576b0a847ec7ab15bd7ace/beautifulsoup4-4.6.0-py3-none-any.whl (86kB)
Installing collected packages: beautifulsoup4
Successfully installed beautifulsoup4-4.6.0
Removing intermediate container be4957e8a2d2
---&amp;gt; 2b1181b0bde2
Successfully built 2b1181b0bde2
Successfully tagged jupyter-image-extractor:latest
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;execute&#34;&gt;Execute&lt;/h2&gt;
&lt;p&gt;Run the script with docker:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;ellie:ws rael$ make docker-run
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Expected output:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;docker run -it --rm --name &#39;jupyter-image-extractor&#39; -v &amp;quot;/Users/rael/Documents/Code/python/ws:/code&amp;quot; -w /code &#39;jupyter-image-extractor&#39; python jupyterImageSaver.py Jupyter\ Notebook\ Viewer.html
./Jupyter Notebook Viewer_files/nav_logo.svg
./images/base64-img-1.png
./images/base64-img-2.png
./images/base64-img-3.png
./images/base64-img-4.png
./images/base64-img-5.png
./images/base64-img-6.png
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Go Playground</title><link>https://rael.io/project/go-playground/</link><pubDate>Mon, 12 Feb 2018 11:23:56 +0200</pubDate><guid>https://rael.io/project/go-playground/</guid><description>
&lt;h2 id=&#34;features&#34;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Compiles to Machine Code&lt;/li&gt;
&lt;li&gt;Design for concurrence&lt;/li&gt;
&lt;li&gt;Statically typed&lt;/li&gt;
&lt;li&gt;Garbage collected&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;language&#34;&gt;Language&lt;/h2&gt;
&lt;h3 id=&#34;variables&#34;&gt;Variables&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.golang.org/gos-declaration-syntax&#34; target=&#34;_blank&#34;&gt;https://blog.golang.org/gos-declaration-syntax&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;definition&#34;&gt;Definition&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;var foo string;
foo = &amp;quot;bar&amp;quot; // OK, new value for foo
foo = 5 // compile error, expected string, found int
newfoo = &amp;quot;bar&amp;quot; // compile error, foo is not defined
bar := &amp;quot;foo&amp;quot; // implicit var
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;basic-types&#34;&gt;Basic Types&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://golang.org/pkg/go/types/&#34; target=&#34;_blank&#34;&gt;https://golang.org/pkg/go/types/&lt;/a&gt; or &lt;code&gt;go doc types&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt; Invalid: {Invalid, 0, &amp;quot;invalid type&amp;quot;},
Bool: {Bool, IsBoolean, &amp;quot;bool&amp;quot;},
Int: {Int, IsInteger, &amp;quot;int&amp;quot;},
Int8: {Int8, IsInteger, &amp;quot;int8&amp;quot;},
Int16: {Int16, IsInteger, &amp;quot;int16&amp;quot;},
Int32: {Int32, IsInteger, &amp;quot;int32&amp;quot;},
Int64: {Int64, IsInteger, &amp;quot;int64&amp;quot;},
Uint: {Uint, IsInteger | IsUnsigned, &amp;quot;uint&amp;quot;},
Uint8: {Uint8, IsInteger | IsUnsigned, &amp;quot;uint8&amp;quot;},
Uint16: {Uint16, IsInteger | IsUnsigned, &amp;quot;uint16&amp;quot;},
Uint32: {Uint32, IsInteger | IsUnsigned, &amp;quot;uint32&amp;quot;},
Uint64: {Uint64, IsInteger | IsUnsigned, &amp;quot;uint64&amp;quot;},
Uintptr: {Uintptr, IsInteger | IsUnsigned, &amp;quot;uintptr&amp;quot;},
Float32: {Float32, IsFloat, &amp;quot;float32&amp;quot;},
Float64: {Float64, IsFloat, &amp;quot;float64&amp;quot;},
Complex64: {Complex64, IsComplex, &amp;quot;complex64&amp;quot;},
Complex128: {Complex128, IsComplex, &amp;quot;complex128&amp;quot;},
String: {String, IsString, &amp;quot;string&amp;quot;},
UnsafePointer: {UnsafePointer, 0, &amp;quot;Pointer&amp;quot;},
UntypedBool: {UntypedBool, IsBoolean | IsUntyped, &amp;quot;untyped bool&amp;quot;},
UntypedInt: {UntypedInt, IsInteger | IsUntyped, &amp;quot;untyped int&amp;quot;},
UntypedRune: {UntypedRune, IsInteger | IsUntyped, &amp;quot;untyped rune&amp;quot;},
UntypedFloat: {UntypedFloat, IsFloat | IsUntyped, &amp;quot;untyped float&amp;quot;},
UntypedComplex: {UntypedComplex, IsComplex | IsUntyped, &amp;quot;untyped complex&amp;quot;},
UntypedString: {UntypedString, IsString | IsUntyped, &amp;quot;untyped string&amp;quot;},
UntypedNil: {UntypedNil, IsUntyped, &amp;quot;untyped nil&amp;quot;},
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;var x byte = 255 // byte alias for uint8
var y byte = x + 5 // overflow to 4
x++ // overflow to 0
var y byte = 0
y = y - 1 // underflow to 255
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;var foo byte = 2
var foo int32 = 260
sum = foo + bar // compilation error different types
foo = bar // compilation error different types
var conv uint8 = uint8(260) // 4
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;arrays&#34;&gt;Arrays&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;var a [2]int
a[0] = 1
a[1] = &amp;quot;foo&amp;quot; // compile error, wrong type
a[1] = 2 // OK
a[2] = 3 // compile error, out of bounds
index := 2
a[index] = 3 // runtime error, out of bounds
n := 5
var b [n]int // compile error, array size must be constant
var c [2]int // OK
c = a // OK, copy all values
var d [4]int
d = a // compile error, wrong type [2]int vs [4]int
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Go will put the array values contiguous in memory adding padding if needed to align with &lt;sup&gt;4&lt;/sup&gt;&amp;frasl;&lt;sub&gt;8&lt;/sub&gt; bytes.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;var a [2][2][2]int
0x00 a[0][0][0]
0x01 a[0][0][1]
0x02 a[0][1][0]
0x03 a[0][1][1]
0x04 a[1][0][0]
0x05 a[1][0][1]
0x06 a[1][1][0]
0x07 a[1][1][1]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;slices&#34;&gt;Slices&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;TODO&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;### Structs&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;type Person struct {
Name string
Age string
Gender string
Children []Person // OK, can be empty, is a slice
Mother Person // compile error, invalid recurse type
Father Person // Type Person contains a Person, infinite references
Parents []Person // OK, can be empty, is a slice
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;### Pointer&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;var x int = 42
var y *int // pointer to integrer
y = &amp;amp;x // &amp;amp;x returns the pointer to x (address of x)
z := *y // *y derreferences y, gets 42, the value of x
x = 24 // updates x value
z = *y // *y returns the new value of x, 24
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;maps&#34;&gt;Maps&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;TODO&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;definition-scope&#34;&gt;Definition scope&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;x := 0
if condition {
x := 42
}
y := x // y is 0
if condition {
y = 21
}
z := y // z is 21
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;functions&#34;&gt;Functions&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;func foo(x, y int, z bool) int {
if z {
return x + y
} else {
return &amp;quot;bar&amp;quot; // compile error, wrong return type
}
}
func bar() (string, int) {
return &amp;quot;The answer is&amp;quot;, 42
}
func main() {
var x int = foo(1, 2, true) // OK
var y int = foo(1, 2) // compile error, wrong number of arguments
var z int = foo(1, 2, &amp;quot;bar&amp;quot;) // compile error, last argument not a bool
var v bool = foo(1, 2, true) // compile error, wrong return type
a := 1
b := 2
s := foo(a, b, true) + a // OK, compiler knows that a, b and foo are int
str, num := bar() // OK
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;syntax&#34;&gt;Syntax&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Semicolons are inserted by the compiler&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;func foo(x int) int {
x++
return x
}
foo(1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The compiler will put the &lt;code&gt;;&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;func foo(x int) int {
x++;
return x;
};
foo(1);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;### Loops&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;abc := [3]string{&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;}
for i, v := rang abc {
// i is the index or key if abc is a map
// v is the value
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;range&#34;&gt;Range&lt;/h4&gt;
&lt;h2 id=&#34;resources&#34;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ardanlabs/gotraining&#34; target=&#34;_blank&#34;&gt;https://github.com/ardanlabs/gotraining&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/dariubs/GoBooks&#34; target=&#34;_blank&#34;&gt;https://github.com/dariubs/GoBooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://openmymind.net/The-Little-Go-Book/&#34; target=&#34;_blank&#34;&gt;http://openmymind.net/The-Little-Go-Book/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=UvpSDtbdGDM&#34; target=&#34;_blank&#34;&gt;https://www.youtube.com/watch?v=UvpSDtbdGDM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=G3PvTWRIhZA&#34; target=&#34;_blank&#34;&gt;https://www.youtube.com/watch?v=G3PvTWRIhZA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=ytEkHepK08c&#34; target=&#34;_blank&#34;&gt;https://www.youtube.com/watch?v=ytEkHepK08c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codegangsta.gitbooks.io/building-web-apps-with-go&#34; target=&#34;_blank&#34;&gt;https://codegangsta.gitbooks.io/building-web-apps-with-go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://golang.org/doc/code.html#Organization&#34; target=&#34;_blank&#34;&gt;https://golang.org/doc/code.html#Organization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Gopher art from &lt;a href=&#34;https://github.com/ashleymcnamara/gophers&#34; target=&#34;_blank&#34;&gt;ashleymcnamara/gophers&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>tgfwdbot</title><link>https://rael.io/project/tgfwdbot/</link><pubDate>Sun, 09 Jul 2017 11:23:56 +0200</pubDate><guid>https://rael.io/project/tgfwdbot/</guid><description>
&lt;p&gt;&lt;a href=&#34;https://travis-ci.org/raelga/tgfwdbot&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://travis-ci.org/raelga/tgfwdbot.svg?branch=master&#34; alt=&#34;Build Status&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;https://goreportcard.com/report/github.com/raelga/tgfwdbot&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://goreportcard.com/badge/github.com/raelga/tgfwdbot&#34; alt=&#34;Go Report&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bot to forward messages between supergroups and private chats, to allow talking in Telegram supergroups when banned.&lt;/p&gt;
&lt;h2 id=&#34;why&#34;&gt;Why&lt;/h2&gt;
&lt;p&gt;Sometimes, due to trolls reporters, users can be banned from any Telegram supergroup, not only the one where reported.
With this bot, users will be able to participate in specific groups through the bot.&lt;/p&gt;
&lt;p&gt;This bot can be added to the group, identified by &lt;code&gt;TELEGRAM_GROUP_ID&lt;/code&gt;, and will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Forward any message from the Group to the private conversation with the banned user&lt;/li&gt;
&lt;li&gt;Forward any message from the private conversation with the banned user to the Group&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The admins of the groups where the bot is a member will decide if the allows the banned users to participate or not.&lt;/p&gt;
&lt;h2 id=&#34;disclaimer&#34;&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;This bot is not intended to be a tool for spammers and malicious users to bypass Telegram bans.&lt;/strong&gt;
The purpose is to allow users to interact in the groups with the authorization of the group admins when globally banned from supergroups due to troll reportings.&lt;/p&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Gopher art from &lt;a href=&#34;https://github.com/ashleymcnamara/gophers&#34; target=&#34;_blank&#34;&gt;ashleymcnamara/gophers&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>TS Invaders</title><link>https://rael.io/project/tsinvaders/</link><pubDate>Sat, 10 Jun 2017 11:23:56 +0200</pubDate><guid>https://rael.io/project/tsinvaders/</guid><description>
&lt;p&gt;&lt;a href=&#34;https://travis-ci.org/raelga/tsinvaders&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://travis-ci.org/raelga/tsinvaders.svg?branch=master&#34; alt=&#34;Build Status&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yet another spaces invaders clone, this time in TypeScript using Phaser.io.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;p&gt;Phaser.io framework from @photonstorm &lt;a href=&#34;https://github.com/photonstorm/phaser&#34; target=&#34;_blank&#34;&gt;Github&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;art&#34;&gt;Art&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Player explosion sprite from J-Robot &lt;a href=&#34;https://opengameart.org/users/j-robot&#34; target=&#34;_blank&#34;&gt;OpenGameArt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rest of the graphic art is from &lt;a href=&#34;https://twitter.com/whiskyemms&#34; target=&#34;_blank&#34;&gt;@whiskyemms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>PyBot</title><link>https://rael.io/project/pybot/</link><pubDate>Thu, 02 Mar 2017 11:23:56 +0200</pubDate><guid>https://rael.io/project/pybot/</guid><description>
&lt;p&gt;&lt;a href=&#34;https://circleci.com/gh/raelga/pybot/tree/master&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://circleci.com/gh/raelga/pybot/tree/master.svg?style=svg&#34; alt=&#34;CircleCI&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;pybot&#34;&gt;pybot&lt;/h1&gt;
&lt;p&gt;Wrapper for &lt;a href=&#34;https://github.com/python-telegram-bot/python-telegram-bot&#34; target=&#34;_blank&#34;&gt;python-telegram-bot&lt;/a&gt; to allow dynamic plug-in architecture, an attempt to make python-telegram-bot more hubottish.&lt;/p&gt;
&lt;h3 id=&#34;execution-flow&#34;&gt;Execution flow&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;bin/pybot&lt;/code&gt; starts the bot with the selected adapter and using the configuration options defined in &lt;code&gt;conf/pybot.conf&lt;/code&gt; or the command-line arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The selected adapter receives the message and sends it to the &lt;code&gt;brain.py&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;brain.py&lt;/code&gt; loads in runtime all the &lt;code&gt;.py&lt;/code&gt; files in the &lt;code&gt;./memory&lt;/code&gt; folder each time and try to execute a defined method, for example &lt;code&gt;hear(message.text)&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each module in &lt;code&gt;./memory&lt;/code&gt; with that method returns a response, the &lt;code&gt;brain.py&lt;/code&gt; sends it to the &lt;code&gt;pybot.py&lt;/code&gt; and it sends the response back to the chat.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;As the methods are dynamically loaded, you can edit and add the files in &lt;code&gt;./memory&lt;/code&gt; without need to restart &lt;code&gt;pybot.py&lt;/code&gt;, and they will be reloaded on the next message. Overkill but funny.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;makefile-targets&#34;&gt;Makefile targets&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-Makefile&#34;&gt;usage: Show this help
setup-venv: Setup virtualenv
lint: Run code linter to check code style
telegram: Run pybot with the telegram adapter
docker-build: Build the docker image for running pybot
docker-telegram: Run with telegram adapter in the docker container
docker-lint: Run pep8 in the docker container
docker-clean: Remove the docker image
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;execution-example&#34;&gt;Execution example&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;make docker-telegram
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;docker run -it --rm --name pybot -v /Users/rael/Code/python/pybot:/usr/src/pybot -w /usr/src/pybot &#39;pybot&#39; bin/pybot telegram
Starting pybot using conf token file. CTRL-C to quit.
2017-04-17 07:35:54,392 - pybot.interfaces.telegram - INFO - Bot raelbot up and ready!
2017-04-17 07:36:39,371 - pybot.brain - INFO - 116133952, Hello world!, 53693428, 2017-04-17 07:36:39,&amp;quot;53693428&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;contributing&#34;&gt;Contributing&lt;/h3&gt;
&lt;p&gt;Contributions of all sizes are welcome.&lt;/p&gt;
&lt;h3 id=&#34;attributions&#34;&gt;Attributions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Header image from &lt;a href=&#34;https://python-telegram-bot.org&#34; target=&#34;_blank&#34;&gt;python-telegram-bot.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;license&#34;&gt;License&lt;/h3&gt;
&lt;p&gt;You may copy, distribute and modify the software provided that modifications are described and licensed for free under &lt;code&gt;GNU General Public License v3.0&lt;/code&gt;. Derivatives works (including modifications or anything statically linked to the library) can only be redistributed under LGPL-3, but applications that use the library don&amp;rsquo;t have to be.&lt;/p&gt;</description></item><item><title>Hubot Raelbot</title><link>https://rael.io/project/hubot-raelbot/</link><pubDate>Sun, 16 Aug 2015 11:23:56 +0200</pubDate><guid>https://rael.io/project/hubot-raelbot/</guid><description>
&lt;p&gt;&lt;strong&gt;raelbot&lt;/strong&gt; is a chat bot built on the Hubot framework.&lt;/p&gt;
&lt;h3 id=&#34;running-raelbot-locally&#34;&gt;Running raelbot Locally&lt;/h3&gt;
&lt;p&gt;You can test your hubot by running the following, however some plugins will not
behave as expected unless the &lt;a href=&#34;#configuration&#34;&gt;environment variables&lt;/a&gt; they rely
upon have been set.&lt;/p&gt;
&lt;p&gt;You can start raelbot locally by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% bin/hubot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&amp;rsquo;ll see some start up output and a prompt:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Sat Feb 28 2015 12:38:27 GMT+0000 (GMT)] INFO Using default redis on localhost:6379
raelbot&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you can interact with raelbot by typing &lt;code&gt;raelbot help&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;raelbot&amp;gt; raelbot help
raelbot help - Displays all of the help commands that raelbot knows about.
...
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;persistence&#34;&gt;Persistence&lt;/h2&gt;
&lt;p&gt;If you are going to use the &lt;code&gt;hubot-redis-brain&lt;/code&gt; package (strongly suggested),
you will need to add the Redis to Go addon on Heroku which requires a verified
account or you can create an account at &lt;a href=&#34;https://redistogo.com/&#34; target=&#34;_blank&#34;&gt;Redis to Go&lt;/a&gt; and manually
set the &lt;code&gt;REDISTOGO_URL&lt;/code&gt; variable.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% heroku config:add REDISTOGO_URL=&amp;quot;...&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you don&amp;rsquo;t need any persistence feel free to remove the &lt;code&gt;hubot-redis-brain&lt;/code&gt;
from &lt;code&gt;external-scripts.json&lt;/code&gt; and you don&amp;rsquo;t need to worry about redis at all.&lt;/p&gt;
&lt;h2 id=&#34;adapters&#34;&gt;Adapters&lt;/h2&gt;
&lt;p&gt;Adapters are the interface to the service you want your hubot to run on, such
as Campfire or IRC. There are a number of third party adapters that the
community have contributed. Check &lt;a href=&#34;https://github.com/github/hubot/blob/master/docs/adapters.md&#34; target=&#34;_blank&#34;&gt;Hubot Adapters&lt;/a&gt; for the
available ones.&lt;/p&gt;
&lt;p&gt;If you would like to run a non-Campfire or shell adapter you will need to add
the adapter package as a dependency to the &lt;code&gt;package.json&lt;/code&gt; file in the
&lt;code&gt;dependencies&lt;/code&gt; section.&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve added the dependency with &lt;code&gt;npm install --save&lt;/code&gt; to install it you
can then run hubot with the adapter.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% bin/hubot -a &amp;lt;adapter&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Where &lt;code&gt;&amp;lt;adapter&amp;gt;&lt;/code&gt; is the name of your adapter without the &lt;code&gt;hubot-&lt;/code&gt; prefix.&lt;/p&gt;
&lt;h3 id=&#34;deploying-to-unix-or-windows&#34;&gt;Deploying to UNIX or Windows&lt;/h3&gt;
&lt;p&gt;If you would like to deploy to either a UNIX operating system or Windows.
Please check out the &lt;a href=&#34;https://github.com/github/hubot/blob/master/docs/deploying/unix.md&#34; target=&#34;_blank&#34;&gt;deploying hubot onto UNIX&lt;/a&gt; and &lt;a href=&#34;https://github.com/github/hubot/blob/master/docs/deploying/unix.md&#34; target=&#34;_blank&#34;&gt;deploying
hubot onto Windows&lt;/a&gt; wiki pages.&lt;/p&gt;</description></item><item><title>GTA Crew Exporter</title><link>https://rael.io/project/pygtavcrewexporter/</link><pubDate>Wed, 06 Nov 2013 11:23:56 +0200</pubDate><guid>https://rael.io/project/pygtavcrewexporter/</guid><description>
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;Get information about crew members on Rockstar GTAV social club.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;python | &lt;a href=&#34;http://www.python.org/download/&#34; target=&#34;_blank&#34;&gt;http://www.python.org/download/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;selenium for python | &lt;a href=&#34;https://pypi.python.org/pypi/selenium&#34; target=&#34;_blank&#34;&gt;https://pypi.python.org/pypi/selenium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;firefox | &lt;a href=&#34;http://www.mozilla.org/en-US/firefox/new/&#34; target=&#34;_blank&#34;&gt;http://www.mozilla.org/en-US/firefox/new/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;** Firefox must be in english due to Rockstar Social Club source code, in the final version it will not be necessary. **&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation&lt;/h2&gt;
&lt;h3 id=&#34;linux&#34;&gt;Linux&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;[327] root@eva:~# aptitude install python-pip
The following NEW packages will be installed:
python-pip python-pkg-resources{a} python-setuptools{a}
0 packages upgraded, 3 newly installed, 0 to remove and 18 not upgraded.
Need to get 648 kB of archives. After unpacking 2,938 kB will be used.
Do you want to continue? [Y/n/?] y
Get: 1 http://ftp.es.debian.org/debian/ jessie/main python-pkg-resources all 0.6.49-2 [62.5 kB]
Get: 2 http://ftp.es.debian.org/debian/ jessie/main python-setuptools all 0.6.49-2 [320 kB
Get: 3 http://ftp.es.debian.org/debian/ jessie/main python-pip all 1.4.1-2 [266 kB
Fetched 648 kB in 2s (223 kB/s)
Selecting previously unselected package python-pkg-resources.
(Reading database ... 156790 files and directories currently installed.)
Unpacking python-pkg-resources (from .../python-pkg-resources_0.6.49-2_all.deb) ...
Selecting previously unselected package python-setuptools.
Unpacking python-setuptools (from .../python-setuptools_0.6.49-2_all.deb) ...
Selecting previously unselected package python-pip.
Unpacking python-pip (from .../python-pip_1.4.1-2_all.deb) ...
Processing triggers for man-db ...
Setting up python-pkg-resources (0.6.49-2) ...
Setting up python-setuptools (0.6.49-2) ...
Setting up python-pip (1.4.1-2) ...
[328] root@eva:~# easy_install selenium
Searching for selenium
Reading http://pypi.python.org/simple/selenium/
Best match: selenium 2.37.2
Downloading https://pypi.python.org/packages/source/s/selenium/selenium-2.37.2.tar.gz#md5=f3fffaae0bc789676c4e2ab285f7b04f
Processing selenium-2.37.2.tar.gz
Writing /tmp/easy_install-shFcgY/selenium-2.37.2/setup.cfg
Running selenium-2.37.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-shFcgY/selenium-2.37.2/egg-dist-tmp-_CdLcZ
Adding selenium 2.37.2 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/selenium-2.37.2-py2.7.egg
Processing dependencies for selenium
Finished processing dependencies for selenium
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;mac&#34;&gt;Mac&lt;/h3&gt;
&lt;p&gt;Download and install python from &lt;a href=&#34;http://www.python.org/download/&#34; target=&#34;_blank&#34;&gt;python.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then install selenium using pip:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[502] rael@mbw:~$ sudo pip install selenium
Downloading/unpacking selenium
Downloading selenium-2.37.2.tar.gz (2.6MB): 2.6MB downloaded
Running setup.py egg_info for package selenium
Installing collected packages: selenium
Running setup.py install for selenium
Successfully installed selenium
Cleaning up...
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;windows&#34;&gt;Windows&lt;/h3&gt;
&lt;p&gt;Not tested yet, but I guess similar as in Mac.&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;h3 id=&#34;command-interface&#34;&gt;Command interface&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;./gtav_crew_exporter.py --help
gtav_crew_exporter.py -c &amp;lt;crew_name&amp;gt; [-u &amp;lt;username&amp;gt; -p &amp;lt;password&amp;gt;] [-o &amp;lt;output_file&amp;gt;] [-v]
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ndash;help&lt;/td&gt;
&lt;td&gt;View the basic usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-c, &amp;ndash;crew&lt;/td&gt;
&lt;td&gt;The name of the crew to export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-u, &amp;ndash;username=&lt;/td&gt;
&lt;td&gt;The username of your Rockstar social club&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-p, &amp;ndash;password=&lt;/td&gt;
&lt;td&gt;The password of your Rockstar social club&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-v&lt;/td&gt;
&lt;td&gt;Verbose mode, for debug.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;/h3&gt;
&lt;h4 id=&#34;only-members-and-ranks&#34;&gt;Only members and ranks&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;gtav_crew_exporter.py -c elotrolado&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./gtav_crew_exporter.py -c elotrolado
Crew: elotrolado
Crew Size: 300 members
!! Without login and password, only username and rank are available:
Crew Members :
leader, nihael, http://socialclub.rockstargames.com/member/nihael
commissioner, FJTR23, http://socialclub.rockstargames.com/member/fjtr23
lieutenant, Racso25, http://socialclub.rockstargames.com/member/racso25
representative, AntonLaveyX, http://socialclub.rockstargames.com/member/antonlaveyx
representative, beerna, http://socialclub.rockstargames.com/member/beerna
representative, lierhoff, http://socialclub.rockstargames.com/member/lierhoff
representative, raelga, http://socialclub.rockstargames.com/member/raelga
representative, rubi7410, http://socialclub.rockstargames.com/member/rubi7410
representative, Sd-Snatcher, http://socialclub.rockstargames.com/member/sd-snatcher
muscle, _XiloX_, http://socialclub.rockstargames.com/member/_xilox_
muscle, 4LUFLiNT, http://socialclub.rockstargames.com/member/4luflint
muscle, A_Rebato, http://socialclub.rockstargames.com/member/a_rebato
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;with-member-information-need-login-and-password&#34;&gt;With member information (need login and password)&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;gtav_crew_exporter.py -c the_pollasos -u raelga -p ***&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./gtav_crew_exporter.py -c the_pollasos -u raelga -p ***
Crew: the_pollasos
Crew Size: 9 members
adrianrgvez, Spain, , PS3, the_pollasos, leader, 108, 5D 4H 17M, All ok.
corderius10, Spain, , PS3, the_pollasos, commissioner, 79, 78H 42M 24S, All ok.
oscartc14, Spain, , PS3, the_pollasos, lieutenant, 11, 8H 34M 36S, All ok.
alfi_de_pumarin9, Spain, , PS3, the_pollasos, representative, 24, 17H 23M 9S, All ok.
capableuncle3020, , , , , representative, , , Private profile.
rodri799, Spain, , PS3, the_pollasos, representative, 12, 14H 47M 50S, All ok.
yex_gr, Spain, yex_, PS3, the_pollasos, representative, 21, 24H 50M 26S, All ok.
OrignalBEAST, United Kingdom, ORIGNALBEASSTT, PS3, lossantosdiamondz, muscle, 24, 48H 40M 23S, All ok.
raelga, Spain, raelga, PS3, elotrolado, muscle, 65, 6D 13H 53M, All ok.
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;verbose-mode&#34;&gt;Verbose mode&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;gtav_crew_exporter.py -c the_pollasos -u raelga -p *** -v&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./gtav_crew_exporter.py -v -c the_pollasos -u raelga -p ***
Crew: the_pollasos
DBG : web - starting browser
DBG : web - page fully loaded!
DBG : web - set page in english.
DBG : web - all users visible.
Crew Size: 9 members
DBG : web - page fully loaded!
DBG : web - page fully loaded!
DBG : [adrianrgvez]
DBG : web - page fully loaded!
DBG : [adrianrgvez] main crew: the_pollasos
DBG : [adrianrgvez] PSN ID:
DBG : [adrianrgvez] country: Spain
DBG : web - page fully loaded!
DBG : [adrianrgvez] rank: leader
DBG : [adrianrgvez] playtime: 5D 4H 20M
DBG : [corderius10]
DBG : web - page fully loaded!
DBG : [corderius10] main crew: the_pollasos
DBG : [corderius10] PSN ID:
DBG : [corderius10] country: Spain
DBG : web - page fully loaded!
DBG : [corderius10] rank: commissioner
DBG : [corderius10] playtime: 78H 42M 24S
DBG : [oscartc14]
DBG : web - page fully loaded!
DBG : [oscartc14] main crew: the_pollasos
DBG : [oscartc14] PSN ID:
DBG : [oscartc14] country: Spain
DBG : web - page fully loaded!
DBG : [oscartc14] rank: lieutenant
DBG : [oscartc14] playtime: 8H 34M 36S
DBG : [alfi_de_pumarin9]
DBG : web - page fully loaded!
DBG : [alfi_de_pumarin9] main crew: the_pollasos
DBG : [alfi_de_pumarin9] PSN ID:
DBG : [alfi_de_pumarin9] country: Spain
DBG : web - page fully loaded!
DBG : [alfi_de_pumarin9] rank: representative
DBG : [alfi_de_pumarin9] playtime: 17H 23M 9S
DBG : [capableuncle3020]
DBG : web - page fully loaded!
DBG : [capableuncle3020] Profile is private!
DBG : [rodri799]
DBG : web - page fully loaded!
DBG : [rodri799] main crew: the_pollasos
DBG : [rodri799] PSN ID:
DBG : [rodri799] country: Spain
DBG : web - page fully loaded!
DBG : [rodri799] rank: representative
DBG : [rodri799] playtime: 14H 47M 50S
DBG : [yex_gr]
DBG : web - page fully loaded!
DBG : [yex_gr] main crew: the_pollasos
DBG : [yex_gr] PSN ID: ***
DBG : [yex_gr] country: Spain
DBG : web - page fully loaded!
DBG : [yex_gr] rank: representative
DBG : [yex_gr] playtime: 24H 50M 26S
DBG : [OrignalBEAST]
DBG : web - page fully loaded!
DBG : [OrignalBEAST] main crew: lossantosdiamondz
DBG : [OrignalBEAST] PSN ID: ***
DBG : [OrignalBEAST] country: United Kingdom
DBG : web - page fully loaded!
DBG : [OrignalBEAST] rank: muscle
DBG : [OrignalBEAST] playtime: 48H 40M 23S
DBG : [raelga]
DBG : web - page fully loaded!
DBG : [raelga] main crew: elotrolado
DBG : [raelga] PSN ID: raelga
DBG : [raelga] country: Spain
DBG : web - page fully loaded!
DBG : [raelga] rank: muscle
DBG : [raelga] playtime: 6D 13H 53M
adrianrgvez, Spain, , PS3, the_pollasos, leader, 108, 5D 4H 20M, All ok.
corderius10, Spain, , PS3, the_pollasos, commissioner, 79, 78H 42M 24S, All ok.
oscartc14, Spain, , PS3, the_pollasos, lieutenant, 11, 8H 34M 36S, All ok.
alfi_de_pumarin9, Spain, , PS3, the_pollasos, representative, 24, 17H 23M 9S, All ok.
capableuncle3020, , , , , representative, , , Private profile.
rodri799, Spain, , PS3, the_pollasos, representative, 12, 14H 47M 50S, All ok.
yex_gr, Spain, ****, PS3, the_pollasos, representative, 21, 24H 50M 26S, All ok.
OrignalBEAST, United Kingdom, ****, PS3, lossantosdiamondz, muscle, 24, 48H 40M 23S, All ok.
raelga, Spain, raelga, PS3, elotrolado, muscle, 65, 6D 13H 53M, All ok.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title/><link>https://rael.io/authors/rael/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rael.io/authors/rael/</guid><description>&lt;p&gt;I&amp;rsquo;ve been deploying servers since I was fifteen, at first as a hobby and then as a career. During the last decade, the cloud has changed how we use information technologies and made accessible to everyone an unimaginable computing power.&lt;/p&gt;
&lt;p&gt;This change triggered several revolutions, one of them, the rise of open source technologies to take advantage of those compute resources and build amazing things. The tools and solutions now are out in the open, &lt;strong&gt;driven by the community&lt;/strong&gt; and &lt;strong&gt;available to anyone&lt;/strong&gt; who wants to use them, get involved in the project or change them to match their needs.&lt;/p&gt;
&lt;p&gt;Open source projects enable an &lt;strong&gt;innovation&lt;/strong&gt; speed never seen before and are &lt;strong&gt;democratizing the cloud&lt;/strong&gt; ecosystem. Companies and users now are building their ideas and business on top of open-source cloud-native technologies that give you the &lt;strong&gt;freedom to run your workloads anywhere&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I would like to &lt;strong&gt;be part of that revolution&lt;/strong&gt;.&lt;/p&gt;</description></item></channel></rss>