<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Erick Navarro</title><link>https://erick.navarro.io/</link><description>Recent content on Erick Navarro</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 03 Feb 2025 17:27:15 -0600</lastBuildDate><atom:link href="https://erick.navarro.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Telegram bot to preview social media content</title><link>https://erick.navarro.io/posts/telegram-bot-to-preview-social-media-content/</link><pubDate>Mon, 03 Feb 2025 17:27:15 -0600</pubDate><guid>https://erick.navarro.io/posts/telegram-bot-to-preview-social-media-content/</guid><description>&lt;p&gt;
I usually share some links of Twitter(it is known as X now but I still call it Twitter) in Telegram, but for some reason the previews doesn&amp;#39;t work well most of the times.&lt;/p&gt;
&lt;p&gt;
One solution was to edit a Twitter link so I can use vxtwitter.com instead of twitter.com, this provides better previews but doing it that way is too manual so I made a bot to detect when I share a Twitter link and edit the message to use vxtwitter.com instead.&lt;/p&gt;</description></item><item><title>Add D2 support to Hugo</title><link>https://erick.navarro.io/posts/add-d2-support-to-hugo/</link><pubDate>Thu, 13 Jun 2024 06:49:06 -0600</pubDate><guid>https://erick.navarro.io/posts/add-d2-support-to-hugo/</guid><description>&lt;p&gt;
&lt;a href="https://d2lang.com"&gt;D2&lt;/a&gt; is declarative language to generate diagrams, it&amp;#39;s like mermaid on steroids, it has a &lt;code&gt;cli&lt;/code&gt; so it&amp;#39;s easy to use.&lt;/p&gt;
&lt;p&gt;
Hugo doesn&amp;#39;t support it at the moment of writing this, there is an open &lt;a href="https://github.com/gohugoio/hugo/issues/10579"&gt;issue&lt;/a&gt; where the conversation is being done.&lt;/p&gt;
&lt;p&gt;
So in the meantime official support is added we&amp;#39;re going to make our own integration. It will have 2 parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A little HTTP server that receives the &lt;code&gt;d2&lt;/code&gt; code and return a resulting &lt;code&gt;SVG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A custom &lt;a href="https://gohugo.io/render-hooks/code-blocks/"&gt;hugo code block render hook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
A simple HTTP server in &lt;code&gt;go&lt;/code&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
This server only uses standard library and do the follow:&lt;/p&gt;</description></item><item><title>Mermaid preview using xwidget browser</title><link>https://erick.navarro.io/posts/mermaid-preview-using-xwidget-browser/</link><pubDate>Wed, 05 Jun 2024 08:19:05 -0600</pubDate><guid>https://erick.navarro.io/posts/mermaid-preview-using-xwidget-browser/</guid><description>&lt;p&gt;
&lt;a href="https://mermaid.js.org"&gt;Mermaid.js&lt;/a&gt; is a great tool to make diagrams in plain text, I use it a lot and I wanted to have a way to see previews of the code I was writing.
There are some options to do that but they require to have a &lt;a href="https://github.com/mermaid-js/mermaid-cli"&gt;mermaid-cli&lt;/a&gt; installed, which requires &lt;code&gt;nodejs&lt;/code&gt; as well.&lt;/p&gt;
&lt;p&gt;
Emacs has a built-in webkit browser, in case it was compiled with &lt;code&gt;--with-xwidgets&lt;/code&gt; flag, and mermaid run on js so it should be possible to just run the code I want in the browser and see it there.&lt;/p&gt;</description></item><item><title>Moving to Emacs Tree Sitter Modes</title><link>https://erick.navarro.io/posts/moving-to-emacs-tree-sitter-modes/</link><pubDate>Tue, 21 May 2024 22:30:15 -0600</pubDate><guid>https://erick.navarro.io/posts/moving-to-emacs-tree-sitter-modes/</guid><description>&lt;p&gt;
I&amp;#39;m currently using emacs 30 and this version has support for more languages using the new &lt;code&gt;ts-modes&lt;/code&gt;, I&amp;#39;ve been using &lt;a href="https://github.com/emacs-tree-sitter/elisp-tree-sitter/"&gt;emacs-tree-sitter&lt;/a&gt; package since Emacs added dynamic modules feature.&lt;/p&gt;
&lt;p&gt;
Now using &lt;code&gt;emacs 30&lt;/code&gt; I give a try to use only &lt;code&gt;ts-modes&lt;/code&gt; and maybe delete some external packages I was using.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
How to install grammars
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
Emacs doesn&amp;#39;t have a built-in way to install automatically most common grammar so we&amp;#39;re going to use a package that can handle that, we use &lt;a href="https://github.com/emacs-tree-sitter/tree-sitter-langs/"&gt;tree-sitter-langs&lt;/a&gt; package, which is a repository for grammars.&lt;/p&gt;</description></item><item><title>Simple OBS Client in Elixir</title><link>https://erick.navarro.io/posts/simple-obs-client-in-elixir/</link><pubDate>Sun, 12 May 2024 13:49:50 -0600</pubDate><guid>https://erick.navarro.io/posts/simple-obs-client-in-elixir/</guid><description>&lt;p&gt;
Let&amp;#39;s write a simple module to control OBS using websockets.&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://obsproject.com"&gt;OBS&lt;/a&gt; already have a websocket server which can accept many command to control its features. We&amp;#39;re going to use that websocket server to make some actions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change scene&lt;/li&gt;
&lt;li&gt;Apply source filters&lt;/li&gt;
&lt;li&gt;Many other things&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
Basic configuration
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
First we need to install a websocket client, &lt;a href="https://hex.pm/packages/fresh"&gt;fresh&lt;/a&gt; is a easy to use client that works on top on &lt;a href="https://hex.pm/packages/mint"&gt;mint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Let&amp;#39;s add the following code to our &lt;code&gt;mix.exs&lt;/code&gt; file.&lt;/p&gt;</description></item><item><title>Code search Alfred workflow</title><link>https://erick.navarro.io/posts/code-search-alfred-workflow/</link><pubDate>Thu, 21 Sep 2023 08:58:16 -0600</pubDate><guid>https://erick.navarro.io/posts/code-search-alfred-workflow/</guid><description>&lt;p&gt;
Code search is a useful tool to search for examples about some function, class, etc. We&amp;#39;re going to create a Alfred workflow to easily search into &lt;a href="https://github.com/features/code-search/"&gt;GitHub Code search&lt;/a&gt; and &lt;a href="https://sourcegraph.com/search"&gt;SourceGraph&lt;/a&gt;&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
Create a workflow
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
Let&amp;#39;s go to &lt;code&gt;Alfred settings/Workflows/+/Blank workflow&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="https://erick.navarro.io/images/posts/code-search-alfred-workflow/create-blank-workflow.png" alt="/images/posts/code-search-alfred-workflow/create-blank-workflow.png" title="/images/posts/code-search-alfred-workflow/create-blank-workflow.png" /&gt;&lt;/p&gt;
&lt;p&gt;
Name our new workflow, you can use whatever name you want, let&amp;#39;s put &amp;#34;Code search&amp;#34;&lt;/p&gt;
&lt;p&gt;
&lt;img src="https://erick.navarro.io/images/posts/code-search-alfred-workflow/name-new-workflow.png" alt="/images/posts/code-search-alfred-workflow/name-new-workflow.png" title="/images/posts/code-search-alfred-workflow/name-new-workflow.png" /&gt;&lt;/p&gt;
&lt;p&gt;
Create a new element of type &lt;code&gt;script filter&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="https://erick.navarro.io/images/posts/code-search-alfred-workflow/create-script-filter-element.png" alt="/images/posts/code-search-alfred-workflow/create-script-filter-element.png" title="/images/posts/code-search-alfred-workflow/create-script-filter-element.png" /&gt;&lt;/p&gt;
&lt;p&gt;
Now we need to make some adjustments over the defaults values:&lt;/p&gt;</description></item><item><title>Switching from helm to vertico and friends</title><link>https://erick.navarro.io/posts/switching-from-helm-to-vertico-and-friends/</link><pubDate>Thu, 31 Aug 2023 23:23:06 -0600</pubDate><guid>https://erick.navarro.io/posts/switching-from-helm-to-vertico-and-friends/</guid><description>&lt;p&gt;
I&amp;#39;ve been using &lt;code&gt;helm&lt;/code&gt; for many years, since I started to use &lt;code&gt;emacs&lt;/code&gt; itself. It was great because it is a &amp;#34;all in one&amp;#34; tool, very convenient when starting in &lt;code&gt;emacs&lt;/code&gt; world.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
The problem(?)
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
Actually there is a not problem perse, just maybe the &amp;#34;startup time&amp;#34;, I had the load deferred so the first time I call some function from &lt;code&gt;helm&lt;/code&gt; there was a little &amp;#34;wait&amp;#34;, nothing really bad but a little annoying&lt;/p&gt;</description></item><item><title>Select term at point using tree sitter in emacs</title><link>https://erick.navarro.io/posts/select-term-at-point-using-tree-sitter-in-emacs/</link><pubDate>Sun, 06 Nov 2022 01:26:36 -0600</pubDate><guid>https://erick.navarro.io/posts/select-term-at-point-using-tree-sitter-in-emacs/</guid><description>&lt;p&gt;
Some days ago I saw a tweet(detail below) that show an interesting feature, a way to select terms using the mouse. After seeing that I thought it will be easy to implement using &lt;a href="https://tree-sitter.github.io/tree-sitter/"&gt;tree-sitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;doubleclick to select term, the way nature intended &lt;a href="https://t.co/O123K12AHp"&gt;pic.twitter.com/O123K12AHp&lt;/a&gt;&lt;/p&gt;&amp;mdash; andrew blinn (@disconcision) &lt;a href="https://twitter.com/disconcision/status/1587156531203678208?ref_src=twsrc%5Etfw"&gt;October 31, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;/p&gt;
&lt;p&gt;
To be able to implement this we just need &lt;a href="https://github.com/emacs-tree-sitter/elisp-tree-sitter"&gt;tree-sitter.el&lt;/a&gt; which will allow us to select terms using grammars.&lt;/p&gt;
&lt;p&gt;
First we need to load some libraries, including &lt;code&gt;tree-sitter.el&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Run ispell on text nodes using tree sitter</title><link>https://erick.navarro.io/posts/run-ispell-on-text-nodes-using-tree-sitter/</link><pubDate>Sun, 26 Jun 2022 14:28:34 -0500</pubDate><guid>https://erick.navarro.io/posts/run-ispell-on-text-nodes-using-tree-sitter/</guid><description>&lt;p&gt;
&lt;a href="https://tree-sitter.github.io/tree-sitter/"&gt;tree-sitter&lt;/a&gt; is a great tool to have an incremental syntax tree of our code, in emacs it can be used to add syntax highlighting instead of using the regular regex based highlighting system. There are other use cases for this and now we&amp;#39;re going to use it to build a simple tool to run &lt;a href="https://www.gnu.org/software/ispell/"&gt;ispell&lt;/a&gt; using the content of a text node, of course we can select the text manually but it will be easier and fancy to do it in a programmatic way using the syntax tree generated by &lt;code&gt;tree-sitter&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Memes fuzzy finder using Alfred, fzf and jq</title><link>https://erick.navarro.io/posts/memes-fuzzy-finder-using-alfred-fzf-and-jq/</link><pubDate>Sat, 18 Jun 2022 22:10:56 -0500</pubDate><guid>https://erick.navarro.io/posts/memes-fuzzy-finder-using-alfred-fzf-and-jq/</guid><description>&lt;p&gt;
Let&amp;#39;s create a Alfred workflow to search for memes in a folder(our collection) and put that image in the clipboard so we can user it wherever we need it. Yes, it sounds useless but it was fun to made.&lt;/p&gt;
&lt;p&gt;
First we need to cover some things to understand how an Alfred workflow works. There are many types of elements to build a workflow, this time we&amp;#39;re going to use 2 specific elements:&lt;/p&gt;</description></item><item><title>Auto build and publish emacs org configuration as a website</title><link>https://erick.navarro.io/posts/auto-build-and-publish-emacs-org-configuration-as-a-website/</link><pubDate>Sun, 04 Apr 2021 10:32:08 -0600</pubDate><guid>https://erick.navarro.io/posts/auto-build-and-publish-emacs-org-configuration-as-a-website/</guid><description>&lt;p&gt;
Having our emacs configuration in an &lt;code class="verbatim"&gt;org&lt;/code&gt; file is great, it allow us to have it more organized and easy to read, but &lt;code class="verbatim"&gt;org&lt;/code&gt; files have more features and one of them is the ability to be exported to different formats like HTML, PDF, markdown and so on. So what if we export our emacs configuration to HTML and then publish it in a website? 🤯&lt;/p&gt;
&lt;p&gt;
It probably doesn&amp;#39;t have any real utility but it would be nice to have a exclusive web page to show our emacs config to our friends :)&lt;/p&gt;</description></item><item><title>Easy deploy of docker based projects</title><link>https://erick.navarro.io/posts/easy-deploy-of-docker-based-projects/</link><pubDate>Fri, 02 Apr 2021 21:57:24 -0600</pubDate><guid>https://erick.navarro.io/posts/easy-deploy-of-docker-based-projects/</guid><description>&lt;p&gt;
I have a personal server where I run some projects, some of them written in python, elixir and other technologies so having to deal with specific installation of any of these technologies is not an ideal workflow, to fix this I use docker and all of them are deployed using &lt;code class="verbatim"&gt;docker-compose&lt;/code&gt;, they&amp;#39;re connected to a single PostgreSQL server and they&amp;#39;re behind the same web server.&lt;/p&gt;
&lt;p&gt;
Running all of these projects in this way it&amp;#39;s easier to maintain and in case something happens with the server I can re deploy everything in a easy way. Let&amp;#39;s take a look to these tools and how they work together.&lt;/p&gt;</description></item><item><title>Using compilation mode to run all the things</title><link>https://erick.navarro.io/posts/using-compilation-mode-to-run-all-the-things/</link><pubDate>Thu, 01 Apr 2021 10:44:22 -0600</pubDate><guid>https://erick.navarro.io/posts/using-compilation-mode-to-run-all-the-things/</guid><description>&lt;p&gt;
Compilation mode is a major mode that allow us to run a command and see its output result in a special buffer, this resulting buffer show the errors and allow us to navigate through them, you can check the &lt;a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation-Mode.html"&gt;documentation&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;
It&amp;#39;s a &amp;#34;simple mode&amp;#34; but it can be used for many things like compile and run a program, run tests, and so on.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Usage
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
Interactive
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;
&lt;code class="verbatim"&gt;compile&lt;/code&gt; is an interactive function so we can call it with &lt;code class="verbatim"&gt;M-x compile&lt;/code&gt; and enter the command we want to execute.&lt;/p&gt;</description></item><item><title>Things I wish I knew when I started in elixir development</title><link>https://erick.navarro.io/posts/things-i-wish-i-knew-when-i-started-in-elixir-development/</link><pubDate>Mon, 01 Mar 2021 08:54:15 -0600</pubDate><guid>https://erick.navarro.io/posts/things-i-wish-i-knew-when-i-started-in-elixir-development/</guid><description>&lt;p&gt;
These are some things I commonly use in my elixir development workflow that might be interesting for someone.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Managing multiple versions of elixir and erlang
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
When you have to work in more than one project at time that could probably means you have to handle different elixir and erlang versions so installing the default version that your OS provides won&amp;#39;t be helpful. Here is where &lt;code class="verbatim"&gt;asdf&lt;/code&gt; shines to solves this problem, &lt;code class="verbatim"&gt;asdf&lt;/code&gt; allow us to have different versions of elixir, erlang and other languages in the same machine so we can easily switch between them.&lt;/p&gt;</description></item><item><title>Activate python virtualenv automatically with direnv</title><link>https://erick.navarro.io/posts/activate-python-virtualenv-automatically-with-direnv/</link><pubDate>Sun, 28 Feb 2021 23:06:47 -0600</pubDate><guid>https://erick.navarro.io/posts/activate-python-virtualenv-automatically-with-direnv/</guid><description>&lt;p&gt;
&lt;a href="https://direnv.net"&gt;direnv&lt;/a&gt; is a tool to set up automatically environment variables as soon as we enter in a directory that contains a &lt;code class="verbatim"&gt;.envrc&lt;/code&gt; file. We can use this feature to activate our virtualenvs as well.&lt;/p&gt;
&lt;p&gt;
Let&amp;#39;s see what happens when we activate manually a virtualenv with &lt;code class="verbatim"&gt;source ./env/bin/activate&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A new new environment variable called &lt;code class="verbatim"&gt;VIRTUAL_ENV&lt;/code&gt; is exported.&lt;/li&gt;
&lt;li&gt;The path is updated to include the &lt;code class="verbatim"&gt;bin&lt;/code&gt; directory inside our &lt;code class="verbatim"&gt;virtualenv&lt;/code&gt; this is made to allow us to point to the correct python installation and run cli interfaces exposed by the dependencies we have installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because all the &amp;#34;magic&amp;#34; about activating a &lt;code class="verbatim"&gt;virtualenv&lt;/code&gt; is basically configuring some environment variables we can do it automatically using &lt;code class="verbatim"&gt;direnv&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Find file under cursor in emacs</title><link>https://erick.navarro.io/posts/find-file-under-cursor-in-emacs/</link><pubDate>Sat, 27 Feb 2021 11:08:20 -0600</pubDate><guid>https://erick.navarro.io/posts/find-file-under-cursor-in-emacs/</guid><description>&lt;p&gt;
&lt;code class="verbatim"&gt;#TIL&lt;/code&gt; you can use &lt;code class="verbatim"&gt;gf&lt;/code&gt; to open a file under the current cursor position in VIM, I was reading this &lt;a href="https://thevaluable.dev/vim-advanced/"&gt;post&lt;/a&gt; I found in Hacker News and I was wondering if &lt;code class="verbatim"&gt;evil-mode&lt;/code&gt; has this functionality as well&lt;/p&gt;
&lt;p&gt;
&lt;code class="verbatim"&gt;evil-mode&lt;/code&gt; has this key binding defined and it uses &lt;code class="verbatim"&gt;(find-file-at-point)&lt;/code&gt;, it works well for absolute paths but not for relative paths and I wanted to use it for a path like this &lt;code class="verbatim"&gt;templates/home.html&lt;/code&gt; so I wrote some &lt;code class="verbatim"&gt;elisp&lt;/code&gt; code to be able to make what I want:&lt;/p&gt;</description></item><item><title>Meme generator in emacs</title><link>https://erick.navarro.io/posts/meme-generator-in-emacs/</link><pubDate>Sat, 03 Oct 2020 22:27:26 -0500</pubDate><guid>https://erick.navarro.io/posts/meme-generator-in-emacs/</guid><description>&lt;p&gt;
&lt;code class="verbatim"&gt;#TIL&lt;/code&gt; it is possible to create memes in emacs using &lt;a href="https://github.com/larsmagne/meme"&gt;meme&lt;/a&gt;, this package allow to choose an image and add some text to it, we can also select any image and use it.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Installation
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
This package, at the time of writing this, is not available on melpa so we have to install it manually or using &lt;a href="https://github.com/raxod502/straight.el"&gt;straight.el&lt;/a&gt; or &lt;a href="https://github.com/quelpa/quelpa"&gt;quelpa&lt;/a&gt;, because I&amp;#39;m using &lt;code class="verbatim"&gt;straight.el&lt;/code&gt; for my config we&amp;#39;ll use that.&lt;/p&gt;
&lt;div class="src src-emacs-lisp"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-emacs-lisp" data-lang="emacs-lisp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(use-package &lt;span style="color:#79c0ff"&gt;imgur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; :ensure &lt;span style="color:#79c0ff;font-weight:bold"&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; :straight (&lt;span style="color:#79c0ff"&gt;imgur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 :type &lt;span style="color:#79c0ff"&gt;git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 :host &lt;span style="color:#79c0ff"&gt;github&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 :repo &lt;span style="color:#a5d6ff"&gt;&amp;#34;myuhe/imgur.el&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(use-package &lt;span style="color:#79c0ff"&gt;meme&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; :ensure &lt;span style="color:#79c0ff;font-weight:bold"&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; :straight (&lt;span style="color:#79c0ff"&gt;meme&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 :type &lt;span style="color:#79c0ff"&gt;git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 :host &lt;span style="color:#79c0ff"&gt;github&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 :repo &lt;span style="color:#a5d6ff"&gt;&amp;#34;larsmagne/meme&amp;#34;&lt;/span&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;code class="verbatim"&gt;meme&lt;/code&gt; require &lt;code class="verbatim"&gt;imgur&lt;/code&gt; as a dependency so we need to install it before.&lt;/p&gt;</description></item><item><title>Getting started with Tsung</title><link>https://erick.navarro.io/posts/getting-started-with-tsung/</link><pubDate>Sat, 03 Oct 2020 09:01:38 -0500</pubDate><guid>https://erick.navarro.io/posts/getting-started-with-tsung/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
What is tsung
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
Tsung is a load testing tool written in erlang, it allow us to perform load testing for web applications, databases, etc. Or as its website says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tsung (formerly IDX-Tsunami) is a distributed load testing tool. It is protocol-independent and can currently be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL, AMQP, MQTT, LDAP and Jabber/XMPP servers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
More info is available in its web page &lt;a href="http://tsung.erlang-projects.org/user_manual/"&gt;http://tsung.erlang-projects.org/user_manual/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
In this post we&amp;#39;ll cover how to test a web application and at the time of writing this the available version of &lt;code class="verbatim"&gt;tsung&lt;/code&gt; is &lt;code class="verbatim"&gt;1.7.0&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Things to keep in mind when contributing to a software project</title><link>https://erick.navarro.io/posts/things-to-keep-in-mind-when-contributing-to-a-software-project/</link><pubDate>Tue, 21 Jul 2020 12:58:17 -0500</pubDate><guid>https://erick.navarro.io/posts/things-to-keep-in-mind-when-contributing-to-a-software-project/</guid><description>&lt;p&gt;
These are some are thoughts to keep in mind when we&amp;#39;re contributing to a software project.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Know your tools
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
&lt;code class="verbatim"&gt;Git&lt;/code&gt; is maybe the most extended tool to manage version control in software and as a daily tool we should invest some time in knowing how to use it &amp;#34;properly&amp;#34;.&lt;/p&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
Configure your name and email properly
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;
This helps to identify who make a change while we&amp;#39;re browsing git log history. Don&amp;#39;t use initials or nicknames, in a few months or maybe years eventually you will be looking at the git log and if you see something like this &lt;code class="verbatim"&gt;Author: XYZ &amp;lt;xyz@some-random-provider.com&amp;gt;&lt;/code&gt; you won&amp;#39;t have a clue who make that change. We can setup this information with:&lt;/p&gt;</description></item><item><title>Creating helper commands for k8s using fzf</title><link>https://erick.navarro.io/posts/creating-helper-commands-for-k8s-using-fzf/</link><pubDate>Sun, 17 May 2020 00:13:20 -0500</pubDate><guid>https://erick.navarro.io/posts/creating-helper-commands-for-k8s-using-fzf/</guid><description>&lt;p&gt;
Kubernetes cli tool &lt;code class="verbatim"&gt;kubectl&lt;/code&gt; is pretty useful but when I need to execute some tasks many times during a work day it could be too verbose. So I wrote some bash functions to handle a few common tasks I use often.&lt;/p&gt;
&lt;p&gt;
I used the power of &lt;a href="https://github.com/junegunn/fzf"&gt;fzf&lt;/a&gt; to create an interactive experience when I run any of these functions. Basically it pipes the output of a &lt;code class="verbatim"&gt;kubectl&lt;/code&gt; command, make some filtering using &lt;code class="verbatim"&gt;sed&lt;/code&gt; and &lt;code class="verbatim"&gt;awk&lt;/code&gt; and then build a final command which will execute what I want.&lt;/p&gt;</description></item><item><title>Avoid losing window layout when editing org code blocks</title><link>https://erick.navarro.io/posts/avoid-losing-windows-layout-when-editing-org-code-blocks/</link><pubDate>Sat, 16 May 2020 15:39:10 -0500</pubDate><guid>https://erick.navarro.io/posts/avoid-losing-windows-layout-when-editing-org-code-blocks/</guid><description>&lt;p&gt;
Org-mode has a nice feature that allow us to edit source code within an org file, for more info check the &lt;a href="https://orgmode.org/manual/Working-with-Source-Code.html"&gt;docs&lt;/a&gt;. But it has a little annoying behavior after we are done editing a source block. It loses the previous window configuration and always closes all the windows except the org window.&lt;/p&gt;
&lt;p&gt;
In the image below we can see this behavior:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://erick.navarro.io/images/avoid-losing-window-layout-when-editing-org-code-blocks/before.gif" alt="/images/avoid-losing-window-layout-when-editing-org-code-blocks/before.gif" title="/images/avoid-losing-window-layout-when-editing-org-code-blocks/before.gif" /&gt;&lt;/p&gt;
&lt;p&gt;
To solve this problem we can use a simple variable to store the current window configuration just before the source code edition buffer is opened and when it&amp;#39;s closed we can restore the previous configuration just getting the value from the variable used before. We&amp;#39;re defining two functions to accomplish this behavior, one to run before and one after we&amp;#39;re done editing the source block.&lt;/p&gt;</description></item><item><title>Testing an API with emacs and restclient</title><link>https://erick.navarro.io/posts/testing-an-api-with-emacs-and-restclient/</link><pubDate>Sun, 27 Oct 2019 16:53:00 -0600</pubDate><guid>https://erick.navarro.io/posts/testing-an-api-with-emacs-and-restclient/</guid><description>&lt;p&gt;
When we&amp;#39;re developing some application we frequently interact with APIs.&lt;/p&gt;
&lt;p&gt;
There are applications like postman, httpie, insomnia and so on to accomplish this task but having an external application only to test a few endpoints or even a complex API is a little overkill.&lt;/p&gt;
&lt;p&gt;
Using emacs and a great package called &lt;a href="https://github.com/pashky/restclient.el"&gt;restclient.el&lt;/a&gt; we can have a very complete tool to handle API requests without leaving our favorite editor.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Installation
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
Put these lines of code in your emacs configuration and you&amp;#39;ll be ready to go.&lt;/p&gt;</description></item><item><title>Minimal Setup for Elixir development in Emacs</title><link>https://erick.navarro.io/posts/minimal-setup-for-elixir-development-in-emacs/</link><pubDate>Sat, 19 Oct 2019 10:00:15 -0500</pubDate><guid>https://erick.navarro.io/posts/minimal-setup-for-elixir-development-in-emacs/</guid><description>&lt;p&gt;
I&amp;#39;ve been working professionally with Elixir for 7 months, obviously using emacs as my daily editor. In this post we&amp;#39;ll see some packages that could be useful for Elixir development.&lt;/p&gt;
&lt;p&gt;
I&amp;#39;m not using LSP (yet), so the goal here is just to have a minimal setup for Elixir development.&lt;/p&gt;
&lt;p&gt;
We&amp;#39;re going to use &lt;code class="verbatim"&gt;use-package&lt;/code&gt; to install all the needed packages.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Syntax highlighting
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
We&amp;#39;ll use &lt;a href="https://github.com/Elixir-editors/emacs-Elixir/"&gt;Elixir-mode&lt;/a&gt;. This package give us syntax highlighting support and some useful features like &lt;code class="verbatim"&gt;mix-format&lt;/code&gt; which let us format our code using &lt;code class="verbatim"&gt;mix format&lt;/code&gt; task, which is available since Elixir 1.6&lt;/p&gt;</description></item><item><title>Creating an emacs formatter the easy way</title><link>https://erick.navarro.io/posts/creating-an-emacs-formatter-the-easy-way/</link><pubDate>Mon, 20 May 2019 19:44:35 -0700</pubDate><guid>https://erick.navarro.io/posts/creating-an-emacs-formatter-the-easy-way/</guid><description>&lt;p&gt;
Some weeks ago I discovered a really nice package for emacs called &lt;a href="https://github.com/purcell/reformatter.el"&gt;reformatter.el&lt;/a&gt;. This package allows to define reformat functions in a easy way.&lt;/p&gt;
&lt;p&gt;
Most languages have a reformat tool. Elixir has &lt;code class="verbatim"&gt;mix format&lt;/code&gt;, Elm has &lt;code class="verbatim"&gt;elm format&lt;/code&gt;, python has &lt;code class="verbatim"&gt;black&lt;/code&gt; and so on. These formatters are convenient because they give uniformity to the code, but this is a topic for another post.&lt;/p&gt;
&lt;p&gt;
Having these formatters integrated within our favorite editor is great. These are enough(at least for me) reasons to use &lt;code class="verbatim"&gt;reformatter.el&lt;/code&gt; so let&amp;#39;s get into the code:&lt;/p&gt;</description></item><item><title>Save and Restore Window Configuration in Emacs</title><link>https://erick.navarro.io/posts/save-and-restore-window-configuration-in-emacs/</link><pubDate>Tue, 25 Dec 2018 10:18:56 -0500</pubDate><guid>https://erick.navarro.io/posts/save-and-restore-window-configuration-in-emacs/</guid><description>&lt;p&gt;
When we are using &lt;code class="verbatim"&gt;emacs&lt;/code&gt; sometimes we often open many buffers in different windows at the same time, for example we can have a buffer for a opened file, another for seeing test results and so on.&lt;/p&gt;
&lt;p&gt;
There are some tools to manage &amp;#34;sessions&amp;#34; but I wanted something simple and I also wanted to learn a little bit more of &lt;code class="verbatim"&gt;elisp&lt;/code&gt; so here is the result.&lt;/p&gt;
&lt;div class="src src-emacs-lisp"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-emacs-lisp" data-lang="emacs-lisp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(defvar &lt;span style="color:#79c0ff"&gt;window-snapshots&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;#39;&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(defun &lt;span style="color:#79c0ff"&gt;save-window-snapshot&lt;/span&gt; ()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Save the current window configuration into `window-snapshots` alist.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (interactive)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (let ((&lt;span style="color:#79c0ff"&gt;key&lt;/span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;read-string&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Enter a name for the snapshot: &amp;#34;&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (setf (&lt;span style="color:#79c0ff"&gt;alist-get&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;key&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;window-snapshots&lt;/span&gt;) (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;current-window-configuration&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;message&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;%s window snapshot saved!&amp;#34;&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;key&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(defun &lt;span style="color:#79c0ff"&gt;get-window-snapshot&lt;/span&gt; (&lt;span style="color:#79c0ff"&gt;key&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Given a KEY return the saved value in `window-snapshots` alist.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (let ((&lt;span style="color:#79c0ff"&gt;value&lt;/span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;assoc&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;key&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;window-snapshots&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;cdr&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;value&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(defun &lt;span style="color:#79c0ff"&gt;restore-window-snapshot&lt;/span&gt; ()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Restore a window snapshot from the window-snapshots alist.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (interactive)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (let* ((&lt;span style="color:#79c0ff"&gt;snapshot-name&lt;/span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;completing-read&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Choose snapshot: &amp;#34;&lt;/span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;mapcar&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;#&amp;#39;car&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;window-snapshots&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 (&lt;span style="color:#79c0ff"&gt;snapshot&lt;/span&gt; (&lt;span style="color:#79c0ff"&gt;get-window-snapshot&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;snapshot-name&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (if &lt;span style="color:#79c0ff"&gt;snapshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	(&lt;span style="color:#d2a8ff;font-weight:bold"&gt;set-window-configuration&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;snapshot&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#d2a8ff;font-weight:bold"&gt;message&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Snapshot %s not found&amp;#34;&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;snapshot-name&lt;/span&gt;))))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The code basically do 3 things:&lt;/p&gt;</description></item><item><title>Projects</title><link>https://erick.navarro.io/projects/</link><pubDate>Sun, 23 Dec 2018 22:29:26 -0500</pubDate><guid>https://erick.navarro.io/projects/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Emacs packages
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
&lt;a href="https://github.com/erickgnavar/linkode.el"&gt;linkode.el&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;Upload buffer or region to &lt;a href="http://linkode.org"&gt;linkode.org&lt;/a&gt;, a pastebin-like service.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
&lt;a href="https://github.com/erickgnavar/tree-sitter-ispell.el"&gt;tree-sitter-ispell.el&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;p&gt;&lt;a href="https://tree-sitter.github.io/tree-sitter/"&gt;tree-sitter&lt;/a&gt; plugin to run ispell on text nodes across languages.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
&lt;a href="https://github.com/erickgnavar/treesit-ispell.el"&gt;treesit-ispell.el&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;p&gt;Same as above but using Emacs&amp;#39;s native &lt;code&gt;treesit&lt;/code&gt; package.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-3"&gt;
&lt;h3 id="headline-5"&gt;
&lt;a href="https://github.com/erickgnavar/flymake-sqlfluff"&gt;flymake-sqlfluff&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-5" class="outline-text-3"&gt;
&lt;p&gt;&lt;code&gt;flymake&lt;/code&gt; plugin for SQL linting via &lt;a href="https://www.sqlfluff.com"&gt;sqlfluff&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-6" class="outline-3"&gt;
&lt;h3 id="headline-6"&gt;
&lt;a href="https://github.com/erickgnavar/flymake-ruff"&gt;flymake-ruff&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-6" class="outline-text-3"&gt;
&lt;p&gt;&lt;code&gt;flymake&lt;/code&gt; plugin for Python linting via &lt;a href="https://pypi.org/project/ruff/"&gt;ruff&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-7" class="outline-3"&gt;
&lt;h3 id="headline-7"&gt;
&lt;a href="https://github.com/erickgnavar/cloak-mode"&gt;cloak-mode&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-7" class="outline-text-3"&gt;
&lt;p&gt;Minor mode to hide sensitive data using per-major-mode regex patterns.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-8" class="outline-2"&gt;
&lt;h2 id="headline-8"&gt;
Python libraries
&lt;/h2&gt;
&lt;div id="outline-text-headline-8" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-9" class="outline-3"&gt;
&lt;h3 id="headline-9"&gt;
&lt;a href="https://pypi.org/project/serpost/"&gt;Serpost&lt;/a&gt;
&lt;/h3&gt;
&lt;div id="outline-text-headline-9" class="outline-text-3"&gt;
&lt;p&gt;Fetch parcel tracking data from Peru&amp;#39;s postal service using a tracking number.&lt;/p&gt;</description></item><item><title>Setting Up Hugo on Netlify</title><link>https://erick.navarro.io/posts/setting-up-hugo-on-netlify/</link><pubDate>Mon, 24 Sep 2018 10:45:05 -0500</pubDate><guid>https://erick.navarro.io/posts/setting-up-hugo-on-netlify/</guid><description>Hugo is a static site generator that just like another alternatives(Nicola, Jekyll, etc) allows to write in plain text and generate html, js, css files. Hugo is so much simpler to use because it&amp;#39;s a simple binary file that allows to develop and prepare the site to be published.</description></item><item><title>Contact</title><link>https://erick.navarro.io/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://erick.navarro.io/contact/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Email
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
&lt;a href="mailto:erick@navarro.io"&gt;erick@navarro.io&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
Social
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@erickgnavar"&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/erickgnavar"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/erickgnavar"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/erickgnavar"&gt;GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linkedin.com/in/erickgnavar"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitch.com/erickgnavar"&gt;Twitch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
Consultancy (Spanish)
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;p&gt;
If you want to work together, you can &lt;a href="https://tidycal.com/erickgnavar"&gt;book a call&lt;/a&gt; or just send me an email.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item></channel></rss>