<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Carles San Agustin</title><link>https://www.carlessanagustin.com/posts/</link><description>Recent content in Blog on Carles San Agustin</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Fri, 03 Apr 2026 10:00:00 +0000</lastBuildDate><atom:link href="https://www.carlessanagustin.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Managing My Reading List with a Claude Code Skill</title><link>https://www.carlessanagustin.com/posts/20260403-books-skill/</link><pubDate>Fri, 03 Apr 2026 10:00:00 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20260403-books-skill/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Disclaimer: Yes, this post was created with the help of AI — why not?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve been experimenting with Claude Code skills lately, and one of the most practical ones I&amp;rsquo;ve built is a personal book manager. The idea is simple: instead of juggling Goodreads, spreadsheets, or sticky notes, I can just talk to Claude Code and it handles my reading list for me.&lt;/p&gt;
&lt;h2 id="what-it-does"&gt;
 What It Does
 &lt;a class="heading-link" href="#what-it-does"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;books skill&lt;/strong&gt; gives Claude Code the ability to manage a personal library backed by a local SQLite database. It tracks:&lt;/p&gt;</description></item><item><title>Speech-to-Text with Whisper and Claude Code</title><link>https://www.carlessanagustin.com/posts/20260327-transcribe-skill/</link><pubDate>Fri, 27 Mar 2026 11:55:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20260327-transcribe-skill/</guid><description>&lt;h1 id="a-claude-code-skill-for-audio-transcription"&gt;
 A Claude Code Skill for Audio Transcription
 &lt;a class="heading-link" href="#a-claude-code-skill-for-audio-transcription"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Disclaimer: Yes, this post was created with the help of AI — why not?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Finding a good speech-to-text service that handles Catalan well is genuinely hard. Most commercial offerings treat it as an afterthought, and the results show. After one too many mangled transcriptions, I decided to solve this myself by writing a Claude Code skill that uses OpenAI&amp;rsquo;s Whisper model locally.&lt;/p&gt;</description></item><item><title>AI &amp; RAG with Ollama and Milvus</title><link>https://www.carlessanagustin.com/posts/20251210-slm-lab/</link><pubDate>Wed, 10 Dec 2025 11:55:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20251210-slm-lab/</guid><description>&lt;h1 id="lab-journal-exploring-our-small-language-model-workshops"&gt;
 Lab Journal: Exploring Our Small Language Model Workshops
 &lt;a class="heading-link" href="#lab-journal-exploring-our-small-language-model-workshops"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Welcome! This short blog post walks through the three hands-on workshops in this repository. Each lab builds on the same local toolkit—Milvus for vector storage, Ollama for small language models, and a few Python helpers—so you can experiment without leaving your laptop. Let us take a friendly tour.&lt;/p&gt;
&lt;h2 id="workshop-1-csv-embeddings-in-milvus"&gt;
 Workshop 1: CSV Embeddings in Milvus
 &lt;a class="heading-link" href="#workshop-1-csv-embeddings-in-milvus"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/carlessanagustin/slms/-/blob/main/01-embeddings-milvus.md?ref_type=heads" class="external-link" target="_blank" rel="noopener"&gt;CSV embeddings in Milvus repo&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Small Language Models (SLMs)</title><link>https://www.carlessanagustin.com/posts/20251002-small-language-models/</link><pubDate>Thu, 02 Oct 2025 13:35:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20251002-small-language-models/</guid><description>&lt;h1 id="slm-your-personal-ai-coding-companion"&gt;
 SLM: Your Personal AI Coding Companion
 &lt;a class="heading-link" href="#slm-your-personal-ai-coding-companion"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Run language models locally offline.&lt;/p&gt;
&lt;p&gt;Meet &lt;strong&gt;SLM&lt;/strong&gt; - the Small Language Models CLI tool: &lt;a href="https://gitlab.com/carlessanagustin/slms" class="external-link" target="_blank" rel="noopener"&gt;https://gitlab.com/carlessanagustin/slms&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="features"&gt;
 Features
 &lt;a class="heading-link" href="#features"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Offline-first&lt;/strong&gt;: Cache models once, use anywhere (perfect for coding on flights!).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker-ready&lt;/strong&gt;: One command deployment with &lt;code&gt;make build &amp;amp;&amp;amp; make run&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer-friendly&lt;/strong&gt;: From quick one-liners to complex project analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurable model collections&lt;/strong&gt;! Use &lt;code&gt;--use&lt;/code&gt; or &lt;code&gt;--model-id&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Any comments?&lt;/p&gt;</description></item><item><title>Gempen Grinder 50</title><link>https://www.carlessanagustin.com/posts/20250921-gempen-grinder-50/</link><pubDate>Sun, 21 Sep 2025 14:35:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20250921-gempen-grinder-50/</guid><description>&lt;p&gt;Today, I completed my first ever gravel bike competition.&lt;/p&gt;
&lt;p&gt;In fact, it&amp;rsquo;s the first competition I&amp;rsquo;ve ever taken part in, in any sport, and I&amp;rsquo;m very proud of myself. I came 88th out of 124 competitors, completing the 54-kilometre course in two hours and 50 minutes. For 54 kilometres! I even beat my personal best time of three hours.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll see if there&amp;rsquo;s another race coming up that I can enter.&lt;/p&gt;</description></item><item><title>GNews to Telegram notification system</title><link>https://www.carlessanagustin.com/posts/20250922-gnews-to-telegram/</link><pubDate>Sun, 14 Sep 2025 14:36:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20250922-gnews-to-telegram/</guid><description>&lt;p&gt;I recently created a simple, free application that retrieves news items from the GNews API and checks if they have been read by comparing them to a file stored in the package registry. Any new articles are sent to a Telegram chat and saved in the package registry for future comparison. The application runs daily via GitLab Scheduled Pipelines.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.carlessanagustin.com/images/gnews.drawio.svg" alt="Diagram"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tools: Python, Gnews, Telegram, Gitlab Scheduled Pipelines and GitLab package Registry. Cost 0$.&lt;/li&gt;
&lt;li&gt;Repository: &lt;a href="https://gitlab.com/carlessanagustin/get_news" class="external-link" target="_blank" rel="noopener"&gt;https://gitlab.com/carlessanagustin/get_news&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Welcome back to my personal website!</title><link>https://www.carlessanagustin.com/posts/20250910-welcome-back/</link><pubDate>Wed, 10 Sep 2025 13:35:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20250910-welcome-back/</guid><description>&lt;p&gt;I&amp;rsquo;m back, with renewed vigor! 🚀&lt;/p&gt;
&lt;p&gt;After a decade of adventures, since I started &lt;a href="http://localhost:1313/categories/1.0/" class="external-link" target="_blank" rel="noopener"&gt;nomadalagana&lt;/a&gt; in 2004, my blog &lt;a href="http://localhost:1313/categories/2.0/" class="external-link" target="_blank" rel="noopener"&gt;evolved&lt;/a&gt; into a freelance services website in 2015. Now, in 2025, I&amp;rsquo;m restarting this platform with renewed &lt;a href="http://localhost:1313/categories/3.0/" class="external-link" target="_blank" rel="noopener"&gt;energy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve migrated everything to Hugo, an incredibly fast tool that allows me to focus on what really matters: creating content. Stay tuned, because great things are coming!&lt;/p&gt;
&lt;p&gt;Thanks for being here. Let the new era begin! ✨&lt;/p&gt;</description></item><item><title>I am a MULTIPOTENTIALITE!</title><link>https://www.carlessanagustin.com/posts/20151006-soy-un-multipotencial/</link><pubDate>Tue, 06 Oct 2015 13:35:06 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20151006-soy-un-multipotencial/</guid><description>&lt;p&gt;I have been many years believing I was a weirdofor my variety of passions and interests but see I&amp;rsquo;m not alone. After watching the video, I can say I&amp;rsquo;m a MULTIPOTENTIALITE:&lt;/p&gt;
&lt;p&gt;[ted id=2341 lang=en]&lt;/p&gt;
&lt;p&gt;There are three main &amp;ldquo;multipotentialite superpowers&amp;rdquo;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Idea synthesis&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rapid learning&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adaptability&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://puttylike.com/the-7-multipotentialite-super-powers/" class="external-link" target="_blank" rel="noopener"&gt;Here&lt;/a&gt; for more about &amp;ldquo;multipotentialite superpowers&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Because it is not mandatory to specialise in one subject, because it is good to be flexible and be able to learn various topics, because I have no television for more than 10 years ago but I read books and manuals.&lt;/p&gt;</description></item><item><title>Management 3.0 and Workout courses</title><link>https://www.carlessanagustin.com/posts/20150915-cursos-de-management-3-0-y-workout/</link><pubDate>Tue, 15 Sep 2015 19:35:18 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150915-cursos-de-management-3-0-y-workout/</guid><description>&lt;p&gt;I recently attended three days of &lt;a href="https://management30.com/" class="external-link" target="_blank" rel="noopener"&gt;Management 3.0&lt;/a&gt; and &lt;a href="https://management30.com/product/workouts/" class="external-link" target="_blank" rel="noopener"&gt;Workout&lt;/a&gt; training by &lt;a href="http://noop.nl/" class="external-link" target="_blank" rel="noopener"&gt;Jurgen Appelo&lt;/a&gt;. I enjoyed the experience of learning and practicing with the latest techniques in managing teams; a much more humane way of working, closer to my values.&lt;/p&gt;
&lt;p&gt;The course was taught by professionals such as &lt;a href="http://www.proyectalis.com/en/angelmedinilla/" class="external-link" target="_blank" rel="noopener"&gt;Angel Medinilla&lt;/a&gt;, &lt;a href="https://www.scrumalliance.org/community/profile/adiazmarot" class="external-link" target="_blank" rel="noopener"&gt;Angel Diaz-Maroto&lt;/a&gt; and &lt;a href="http://gabri.io/" class="external-link" target="_blank" rel="noopener"&gt;Gabriel Prat&lt;/a&gt; who were able to give us the material as well as good examples.&lt;/p&gt;
&lt;p&gt;It has also been very helpful to share the course with other professionals and their experiences.&lt;/p&gt;</description></item><item><title>Tutorial: Configuration Management - Vagrant + Ansible + Jenkins</title><link>https://www.carlessanagustin.com/posts/20150820-tutorial-gestion-de-configuracion-ansible-vagrant-jenkins/</link><pubDate>Thu, 20 Aug 2015 18:05:54 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150820-tutorial-gestion-de-configuracion-ansible-vagrant-jenkins/</guid><description>&lt;p&gt;Main target: &lt;strong&gt;Jenkins CI automatically installed in multiple environments.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Video tutorial on managing automatic configuration on local and remote environments with Ansible.&lt;/p&gt;
&lt;p&gt;What is &lt;a href="http://www.sei.cmu.edu/productlines/frame_report/config.man.htm" class="external-link" target="_blank" rel="noopener"&gt;configuration management&lt;/a&gt;?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Configuration management (CM) refers to a discipline for evaluating, coordinating, approving or disapproving, and implementing changes in artifacts that are used to construct and maintain software systems. An artifact may be a piece of hardware or software or documentation. CM enables the management of artifacts from the initial concept through design, implementation, testing, baselining, building, release, and maintenance.&lt;/p&gt;</description></item><item><title>Adopting DevOps?</title><link>https://www.carlessanagustin.com/posts/20150713-adoptar-devops/</link><pubDate>Mon, 13 Jul 2015 18:00:27 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150713-adoptar-devops/</guid><description>&lt;p&gt;A quick list of benefits from adopting a DevOps culture in a software company. Each business role has its own needs and specific benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Developers:&lt;/strong&gt; Automated development environments for testing, experimenting and building quality software.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations:&lt;/strong&gt; Automation also helps by eliminating human errors common in manual operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test engineers:&lt;/strong&gt; Can provision a test environment that is virtually identical to the production environment, resulting in more accurate testing and better ability to predict the performance of new releases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product managers:&lt;/strong&gt; Thanks to the collaborative spirit of DevOps, teams actually care about business requirements and foster relationships with product managers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Executives:&lt;/strong&gt; It helps the organization deliver high-quality products and get them to market much faster than competitors using traditional methods of software development actions that impact the bottom line and build brand value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From: &lt;a href="https://blog.newrelic.com/2014/06/06/devopsbenefits/" class="external-link" target="_blank" rel="noopener"&gt;https://blog.newrelic.com/2014/06/06/devopsbenefits/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Provisioning Docker container with Ansible</title><link>https://www.carlessanagustin.com/posts/20150608-aprovisionamiento-de-contenedores-docker-con-ansible/</link><pubDate>Mon, 08 Jun 2015 12:30:01 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150608-aprovisionamiento-de-contenedores-docker-con-ansible/</guid><description>&lt;p&gt;Here is a brief demonstration on how to provision a &lt;a href="https://www.docker.com/" class="external-link" target="_blank" rel="noopener"&gt;Docker&lt;/a&gt; container using &lt;a href="http://docs.ansible.com/playbooks.html" class="external-link" target="_blank" rel="noopener"&gt;Ansible Playbooks&lt;/a&gt;. It is an easy way of testing our containers and our playbooks too.&lt;/p&gt;
&lt;p&gt;We need a &lt;a href="http://docs.docker.com/reference/builder/" class="external-link" target="_blank" rel="noopener"&gt;Dockerfile&lt;/a&gt; and a Playbook &lt;a href="http://yaml.org/" class="external-link" target="_blank" rel="noopener"&gt;YAML&lt;/a&gt;. Here is the &lt;code&gt;Dockerfile&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#98c379"&gt;ubuntu:14.04&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;RUN&lt;/span&gt; apt-get update &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apt-get -y install software-properties-common &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apt-add-repository -y ppa:ansible/ansible &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apt-get update &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apt-get -y upgrade &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apt-get install -y git curl ansible &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mkdir /opt/myAnsible &lt;span style="color:#56b6c2"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e5c07b"&gt;cd&lt;/span&gt; /opt/myAnsible
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;COPY&lt;/span&gt; doSomething.yml /opt/myAnsible/doSomething.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WORKDIR&lt;/span&gt; &lt;span style="color:#98c379"&gt;/opt/myAnsible&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;RUN&lt;/span&gt; ansible-playbook doSomething.yml --connection&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CMD&lt;/span&gt; [&lt;span style="color:#98c379"&gt;&amp;#34;/bin/bash&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is the playbook &lt;code&gt;doSomething.yml&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Load maps on a Garmin GPS unit</title><link>https://www.carlessanagustin.com/posts/20150601-cargar-mapas-en-una-unidad-gps-garmin/</link><pubDate>Mon, 01 Jun 2015 18:00:07 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150601-cargar-mapas-en-una-unidad-gps-garmin/</guid><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Global_Positioning_System" class="external-link" target="_blank" rel="noopener"&gt;GPS&lt;/a&gt; units can be bought with or without terrain maps.&lt;/p&gt;
&lt;p&gt;How does a GPS work? Basically, terrain maps are placed at the bottom layer to help us see the levels, paths, etc. On top of it, we can see our loaded or current path and above an arrow indicating us and our direction. The rest is extra information I am not going to talk about.&lt;/p&gt;
&lt;p&gt;In reality, there is no need for terrain maps when following a path (we can just follow the arrow and indications on the screen), but it is helpful to have a map under our track. Why? In case we want to change our route and see other paths, for example.&lt;/p&gt;</description></item><item><title>Nginx proxy for a Jenkins container</title><link>https://www.carlessanagustin.com/posts/20150525-nginx-proxy-para-un-contenedor-jenkins/</link><pubDate>Mon, 25 May 2015 18:00:17 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150525-nginx-proxy-para-un-contenedor-jenkins/</guid><description>&lt;p&gt;As a Mac user, &lt;a href="https://www.docker.com/" class="external-link" target="_blank" rel="noopener"&gt;Docker&lt;/a&gt; comes in as &lt;a href="https://docs.docker.com/installation/mac/" class="external-link" target="_blank" rel="noopener"&gt;boot2docker&lt;/a&gt;. I don&amp;rsquo;t quite like using that interface; I prefer having a simple Ubuntu VM on my &lt;a href="https://www.vagrantup.com/" class="external-link" target="_blank" rel="noopener"&gt;Vagrant&lt;/a&gt; environment where I can manage my containers from a pre-installed Docker. I like this arrangement because it allows me to keep updated on Vagrant, which is more useful for various environments and &lt;a href="https://docs.vagrantup.com/v2/providers/index.html" class="external-link" target="_blank" rel="noopener"&gt;providers&lt;/a&gt;: VirtualBox, VMware, Docker, and Hyper-V. I chose Jenkins for this example:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.carlessanagustin.com/wp-content/uploads/2015/05/vagrant2docker2jenkins.jpg" alt="vagrant2docker2jenkins"&gt;&lt;/p&gt;
&lt;p&gt;At the end of the line, I have a default Jenkins container running and publishing on port 8080. To be able to see it from my Mac browser, I need to forward ports from the &lt;code&gt;Vagrantfile&lt;/code&gt; (8080 to 80) and then Nginx (80 to 8080):&lt;/p&gt;</description></item><item><title>My Ansible repository</title><link>https://www.carlessanagustin.com/posts/20150521-mi-repositorio-ansible/</link><pubDate>Thu, 21 May 2015 18:00:40 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20150521-mi-repositorio-ansible/</guid><description>&lt;p&gt;I created my own personal repository of &lt;a href="https://github.com/carlessanagustin/ansible-playbooks" class="external-link" target="_blank" rel="noopener"&gt;Ansible Playbooks&lt;/a&gt; to help me automatically process those boring manual steps I keep doing when &lt;a href="http://en.wikipedia.org/wiki/Provisioning" class="external-link" target="_blank" rel="noopener"&gt;provisioning&lt;/a&gt; systems for my projects. It is a repository I will keep updating the more I get into provisioning projects.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/carlessanagustin/ansible-playbooks" class="external-link" target="_blank" rel="noopener"&gt;&lt;img src="http://www.carlessanagustin.com/wp-content/uploads/2015/05/Screen-Shot-2015-05-19-at-19.44.42.png" alt="https://github.com/carlessanagustin/ansible-playbooks"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The present roles are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://docs.ansible.com/" class="external-link" target="_blank" rel="noopener"&gt;ansible&lt;/a&gt;:&lt;/strong&gt; Install full Ansible server environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;base:&lt;/strong&gt; Install basic packages into a new Ubuntu server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;clean:&lt;/strong&gt; Cleans a Ubuntu previous to export.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.docker.com/" class="external-link" target="_blank" rel="noopener"&gt;docker&lt;/a&gt;:&lt;/strong&gt; Install full Docker environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.elastic.co/" class="external-link" target="_blank" rel="noopener"&gt;elasticsearch&lt;/a&gt;:&lt;/strong&gt; Install basic Elasticsearch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Hyper-V" class="external-link" target="_blank" rel="noopener"&gt;hyperv&lt;/a&gt;:&lt;/strong&gt; Install Hyper-V in a Windows machine and, through PowerShell commands, it&amp;rsquo;s possible to manage images and snapshots.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.elastic.co/" class="external-link" target="_blank" rel="noopener"&gt;kibana&lt;/a&gt;:&lt;/strong&gt; Install basic Kibana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.elastic.co/" class="external-link" target="_blank" rel="noopener"&gt;logstash&lt;/a&gt;:&lt;/strong&gt; Install basic Logstash.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.nagios.org/" class="external-link" target="_blank" rel="noopener"&gt;nagios&lt;/a&gt;:&lt;/strong&gt; Install a full Nagios monitoring server and publishes the &lt;code&gt;/etc/nagios3&lt;/code&gt; folder into &lt;code&gt;/vagrant&lt;/code&gt; for easy access.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Samba_%28software%29" class="external-link" target="_blank" rel="noopener"&gt;samba&lt;/a&gt;:&lt;/strong&gt; Install Samba environment and mounts a remote folder into the system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why did I choose &lt;a href="http://www.ansible.com" class="external-link" target="_blank" rel="noopener"&gt;Ansible&lt;/a&gt; between the other configuration management &lt;a href="http://en.wikipedia.org/wiki/Configuration_management" class="external-link" target="_blank" rel="noopener"&gt;tools&lt;/a&gt;?&lt;/p&gt;</description></item><item><title>The body screams what the mouth keeps silent...</title><link>https://www.carlessanagustin.com/posts/20110503-el-cuerpo-grita-lo-que-la-boca-calla/</link><pubDate>Tue, 03 May 2011 10:19:07 +0000</pubDate><guid>https://www.carlessanagustin.com/posts/20110503-el-cuerpo-grita-lo-que-la-boca-calla/</guid><description>&lt;p&gt;I would like to share this reflection with all of you:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Illness is a conflict between the personality and the soul&amp;rdquo; — Bach&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;An interesting reflection by Nelson Torres, Doctor of Psychiatry (UCV) and expert in Psycho-neuro-immunolinguistics (PNIL) in Venezuela:&lt;/p&gt;
&lt;p&gt;Many times&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;cold&lt;/strong&gt; &amp;ldquo;drips&amp;rdquo; when the body cannot cry.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;sore throat&lt;/strong&gt; &amp;ldquo;blocks&amp;rdquo; when it is not possible to communicate one&amp;rsquo;s afflictions.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;stomach&lt;/strong&gt; burns when rage cannot find its way out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diabetes&lt;/strong&gt; invades when loneliness hurts.&lt;/li&gt;
&lt;li&gt;The body &lt;strong&gt;gains weight&lt;/strong&gt; when dissatisfaction tightens its grip.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Headaches&lt;/strong&gt; bring you down when doubts multiply.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;heart&lt;/strong&gt; weakens when the meaning of life seems to be ending.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allergies&lt;/strong&gt; appear when perfectionism becomes intolerable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nails&lt;/strong&gt; break when defenses feel threatened.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;chest&lt;/strong&gt; tightens when pride enslaves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blood pressure&lt;/strong&gt; rises when fear imprisons.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neuroses&lt;/strong&gt; paralyze when the inner child tyrannizes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fever&lt;/strong&gt; heats up when defenses push the boundaries of immunity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Knees&lt;/strong&gt; ache when your pride refuses to bend.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cancer&lt;/strong&gt; kills when you grow tired of &amp;ldquo;living&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And your silent pains? How do they speak through your body?&lt;/p&gt;</description></item></channel></rss>