~mrls/www

57096e70974bfb4fdf0aa2d96a9f55f366f5cb6b — Mauro Morales 2 months ago 1f34da8
Extract theme
29 files changed, 99 insertions(+), 942 deletions(-)

M Gemfile
M Gemfile.lock
M Rakefile
M _config.yml
D _data/i18n.yml
D _includes/footer.html
D _includes/head.html
D _includes/header.html
D _includes/social.html
D _layouts/default.html
D _layouts/home.html
D _layouts/note.html
D _layouts/post.html
M _posts/2016-04-05-profiling-vim.md
M _posts/2016-04-25-running-multiple-redis-instances.md
M _posts/2019-12-28-december-2019.md
M _posts/2020-01-18-big-tech-doesnt-mean-good-software.md
M _posts/2020-02-04-january-2020.md
M _posts/2020-02-23-reunification-visas-for-students-are-broken.md
M _posts/2020-02-29-february-2020.md
D _sass/mrls.scss
D _sass/mrls/_base.scss
D _sass/mrls/_layout.scss
D _sass/mrls/_syntax-highlighting.scss
M acerca-de.md
D assets/mrls-social-icons.svg
D assets/translation-icons.svg
M index.md
M inicio.md
M Gemfile => Gemfile +2 -1
@@ 12,7 12,7 @@ source 'https://rubygems.org'
gem 'jekyll', '~> 4.0.0'
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem 'html-proofer'
gem 'minima', '~> 2.5'
gem 'jekyll-theme-mrls', path: '/home/mauro/src/sr.ht/mrls/jekyll-theme-mrls'
gem 'rake'
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.


@@ 22,6 22,7 @@ group :jekyll_plugins do
  gem 'jekyll-compose'
  gem 'jekyll-feed', '~> 0.12'
  gem 'jekyll-redirect-from'
  gem 'jekyll-seo-tag'
  gem 'jekyll-toc'
end


M Gemfile.lock => Gemfile.lock +9 -5
@@ 1,3 1,10 @@
PATH
  remote: /home/mauro/src/sr.ht/mrls/jekyll-theme-mrls
  specs:
    jekyll-theme-mrls (0.1.0)
      jekyll (~> 4.0)
      jekyll-seo-tag (~> 2.1)

GEM
  remote: https://rubygems.org/
  specs:


@@ 62,10 69,6 @@ GEM
      rb-inotify (~> 0.9, >= 0.9.10)
    mercenary (0.3.6)
    mini_portile2 (2.4.0)
    minima (2.5.1)
      jekyll (>= 3.5, < 5.0)
      jekyll-feed (~> 0.9)
      jekyll-seo-tag (~> 2.1)
    nokogiri (1.10.7)
      mini_portile2 (~> 2.4.0)
    nokogumbo (2.0.2)


@@ 105,8 108,9 @@ DEPENDENCIES
  jekyll-compose
  jekyll-feed (~> 0.12)
  jekyll-redirect-from
  jekyll-seo-tag
  jekyll-theme-mrls!
  jekyll-toc
  minima (~> 2.5)
  rake
  tzinfo (~> 1.2)
  tzinfo-data

M Rakefile => Rakefile +5 -0
@@ 24,6 24,11 @@ task :deploy do
  sh "rsync -avz --delete _site/* #{ENV['DEST']}"
end

desc 'Deploy without doing any checks'
task :force_deploy do
  sh "rsync -avz --delete _site/* #{ENV['DEST']}"
end

desc 'Resize Images'
task :resize, [:dir] do |_task, args|
  images = Dir.glob(File.join(args[:dir], '*'))

M _config.yml => _config.yml +5 -5
@@ 24,10 24,7 @@ description: >- # this means to ignore newlines until "baseurl:"
  Mauro Morales' personal web site
baseurl: "" # the subpath of your site, e.g. /blog
url: "https://www.mauromorales.com" # the base hostname & protocol for your site, e.g. http://example.com
permalink: none
root:
  en: /
  es: /inicio.html
permalink: /:title:output_ext
ml:
  es:
    url: https://lists.sr.ht/~mrls/ecdp


@@ 45,17 42,20 @@ languages:
collections:
  guias:
    output: true
  articulos:
    output: true

plugins:
  - jekyll-feed
  - jekyll-toc
  - jekyll-seo-tag

feed:
  collections:
    - guias

# theme
theme: minima
theme: jekyll-theme-mrls
show_excerpts: true
twitter_username: mauromrls
github_username: mauromorales

D _data/i18n.yml => _data/i18n.yml +0 -28
@@ 1,28 0,0 @@
---
description:
  en: Software Developer
  es: Programador
is_licensed_under:
  en: is licensed under
  es: está licenciado bajo
the_source_code:
  en: the source code
  es: el código fuente
the_sites_content:
  en: the site's content
  es: el contenido del sitio
comments:
  en: The comments are accesible in the
  es: Los comentarios están disponibles en el
public_inbox:
  en: public inbox
  es: correo público
send_email:
  en: You can send yours to 
  es: Puedes enviar el tuyo a
subscribe_rss:
  en: Get updates via
  es: Recive actualizaciones por medio de
home:
  en: home
  es: inicio

D _includes/footer.html => _includes/footer.html +0 -34
@@ 1,34 0,0 @@
<footer class="site-footer h-card">
  {%- assign lang = page.lang | default: 'en' -%}
  <data class="u-url" href="{{ site.root[lang]  | relative_url }}"></data>

  <div class="wrapper">

    <h2 class="footer-heading">{{ site.title | escape }}</h2>

    <div class="footer-col-wrapper">
      <div class="footer-col footer-col-1">
        <ul class="contact-list">
          <li class="p-name">{{- site.data.i18n.description[lang] | escape -}}</li>
          {%- if site.email -%}
          <li><a class="u-email" href="mailto:{{ site.email }}">{{ site.email }}</a></li>
          {%- endif -%}
        </ul>
        {%- include social.html -%}
      </div>

      <div class="footer-col footer-col-2">
      </div>

      <div class="footer-col footer-col-3">
        <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">
          <img alt="Creative Commons License" style="border-width:0" src="/assets/img/cc-license.png" />
        </a>{{- site.data.i18n.the_sites_content[lang] | capitalize | escape -}}&nbsp;{{- site.data.i18n.is_licensed_under[lang] | escape -}}&nbsp;<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC-BY-SA</a>.
          <a href="https://git.sr.ht/~mrls/www">{{- site.data.i18n.the_source_code[lang] | capitalize | escape -}}</a>&nbsp;{{- site.data.i18n.is_licensed_under[lang] | escape -}}&nbsp;<a href="https://opensource.org/licenses/MIT">MIT</a>.
      </div>
    </div>

  </div>

</footer>


D _includes/head.html => _includes/head.html +0 -16
@@ 1,16 0,0 @@
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {%- assign use_seo = layout.seo -%}
  {%- if use_seo == 'true' -%}
  {%- seo -%}
  {% endif %}
  <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
  {%- feed_meta -%}
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
  <link rel="manifest" href="/site.webmanifest">
</head>


D _includes/header.html => _includes/header.html +0 -33
@@ 1,33 0,0 @@
<header class="site-header" role="banner">

  <div class="wrapper">
    {%- assign default_paths = site.pages | map: "path" -%}
    {%- assign lang = page.lang | default: 'en' -%}
    {%- assign page_paths = site.header_pages | default: default_paths -%}
    <div class="title-group">
      <span class="site-title">{{- site.title -}}</span>
      <span class="site-subtitle">
        {{- site.data.i18n.description[lang] | escape -}}
      </span>
    </div>

    <nav class="site-nav">
      <a class="page-link" href="{{ site.languages[lang].root | relative_url }}">
        {{- site.data.i18n.home[lang] | escape -}}
      </a>
      {%- for menu in site.data.menus[lang] -%}
        {%- assign my_page = site.pages | where: "path", menu.path | first -%}
        <a class="page-link" href="{{ my_page.url | relative_url }}">{{ menu.title | default: my_page.title | escape }}</a>
      {%- endfor -%}
    </nav>
    <nav class="lang-nav">
      <img src="{{ '/assets/translation-icons.svg' | relative_url }}" alt="translation menu icon"></img>
      <span class="lang-item">{{ lang }}</span>
      {%- for language in site.languages -%}
        {%- if language[0] != lang -%}
        <a class="lang-item" href="{{ language[1].root }}">{{ language[0] }}</a>
        {%- endif -%}
      {%- endfor -%}
    </nav>
  </div>
</header>

D _includes/social.html => _includes/social.html +0 -20
@@ 1,20 0,0 @@
{%- if site.github_username -%}
  <a href="https://github.com/{{ site.github_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/mrls-social-icons.svg#github' | relative_url }}"></use></svg></a>
{%- endif -%}
{%- if site.linkedin_username -%}
  <a href="https://www.linkedin.com/in/{{ site.linkedin_username| cgi_escape | escape }}/" data-proofer-ignore><svg class="svg-icon"><use xlink:href="{{ '/assets/mrls-social-icons.svg#linkedin' | relative_url }}"></use></svg></a>
{%- endif -%}
{%- for mst in site.mastodon -%}
  {%- if mst.username and mst.instance -%}
    <a rel="me" href="https://{{ mst.instance| cgi_escape | escape}}/@{{mst.username}}"><svg class="svg-icon"><use xlink:href="{{ '/assets/mrls-social-icons.svg#mastodon' | relative_url }}"></use></svg></a>
  {%- endif -%}
{%- endfor -%}
{%- if site.twitter_username -%}
  <a href="https://www.twitter.com/{{ site.twitter_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/mrls-social-icons.svg#twitter' | relative_url }}"></use></svg></a>
{%- endif -%}
{%- if site.youtube_username -%}
  <a href="https://youtube.com/{{ site.youtube_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/mrls-social-icons.svg#youtube' | relative_url }}"></use></svg></a>
{%- endif -%}
{%- if site.rss -%}
  <a href="{{ 'feed.xml' | relative_url }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/mrls-social-icons.svg#rss' | relative_url }}"></use></svg> <span>{{ site.rss | escape }}</span></a>
{%- endif -%}

D _layouts/default.html => _layouts/default.html +0 -20
@@ 1,20 0,0 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: "en" }}">

  {%- include head.html -%}

  <body>

    {%- include header.html -%}

    <main class="page-content" aria-label="Content">
      <div class="wrapper">
        {{ content }}
      </div>
    </main>

    {%- include footer.html -%}

  </body>

</html>

D _layouts/home.html => _layouts/home.html +0 -40
@@ 1,40 0,0 @@
---
layout: default
---

<div class="home">
  {%- if page.avatar -%}
  <div class="avatar">
    <img src="{{ page.avatar }}" alt="avatar">
  </div>
  {%- endif -%}
  {%- if page.description -%}
  <div class="first-paragraph">
    {{ page.description }}
  </div>
  {%- endif -%}
</div>

  <div>
    {{ content }}
  </div>

{%- assign lang = page.lang | default: 'en' -%}
{%- assign posts = site.posts | where: "lang", lang -%}
{%- if posts.size > 0 -%}
  <h2 class="post-list-heading">Recent Posts</h2>
  <ul class="post-list">
    {%- for post in site.posts limit:5 -%}
    <li>
      {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
      <h3>
        <a class="post-link" href="{{ post.url | relative_url }}">
          {{ post.title | escape }}
        </a>
      </h3>
    </li>
    {%- endfor -%}
  </ul>

  <p class="rss-subscribe">read more <a href="{{ "/posts.html" | relative_url }}" alt="posts">posts</a></p>
{%- endif -%}

D _layouts/note.html => _layouts/note.html +0 -10
@@ 1,10 0,0 @@
---
layout: page
seo: false
---

<p class="warning">
This is a personal note and the URL is likely to change in the future.
</p>

{{ content }}

D _layouts/post.html => _layouts/post.html +0 -50
@@ 1,50 0,0 @@
---
layout: default
---
<article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting">

  <header class="post-header">
    <h1 class="post-title p-name" itemprop="name headline">{{ page.title | escape }}</h1>
    <p class="post-meta">
      📅
      <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
        {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
        {{ page.date | date: date_format }}
      </time>
      {%- if page.place -%}
        🌐 <span itemprop="place" itemscope itemtype="http://schema.org/Place"><span itemprop="name">{{ page.place }}</span></span>&nbsp;
      {%- endif -%}
      {%- if page.category -%}
        🗄️ <span>{{ page.category | replace: "-", " " | capitalize }}</span>&nbsp;
      {%- endif -%}
      {%- if page.updated_on -%}
        📝 <span>{{ page.updated_on| date: date_format }}</span>&nbsp;
      {%- endif -%}
      {%- unless page.tags == empty -%}
        🏷️
        {%- for tag in page.tags -%}
        {%- if forloop.first == false -%}
        ,
        {% endif %}
        <span>{{ tag | replace: "-", " " | capitalize }}</span>
        {%- endfor -%}
      {%- endunless -%}
    </p>
  </header>

  <div class="post-content e-content" itemprop="articleBody">
    {{ page.excerpt }}
    {% toc %}
    {{ content | remove: page.excerpt  }}
  </div>

  <div class="comments">
    {%- assign lang = page.lang | default: 'en' -%}
    {%- if site.ml[lang] -%}
      {{ site.data.i18n.comments[lang] }}&nbsp;<a href="{{- site.ml[lang].url }}">{{ site.data.i18n.public_inbox[lang] }}</a>&nbsp;
      {{ site.data.i18n.send_email[lang] }}&nbsp;<a href="mailto:{{- site.ml[lang].email }}?Subject={{- page.title | prepend: "Re: " | my_url_encode -}}">{{- site.ml[lang].email }}</a>.
    {%- endif -%}
  </div>

  <a class="u-url" href="{{ page.url | relative_url }}" hidden></a>
</article>

M _posts/2016-04-05-profiling-vim.md => _posts/2016-04-05-profiling-vim.md +1 -0
@@ 6,6 6,7 @@ place: Nuremberg
lang: en
category: software-development
canonical_url: https://medium.com/@MauroMorales/profiling-vim-e142280a91ae
top: true
---

I like Vim because it's very fast. Unfortunately the other day I found myself

M _posts/2016-04-25-running-multiple-redis-instances.md => _posts/2016-04-25-running-multiple-redis-instances.md +1 -0
@@ 6,6 6,7 @@ place: Nuremberg
lang: en
category: software-development
canonical_url: https://medium.com/@MauroMorales/running-multiple-redis-on-a-server-472518f3b603
top: true
---

This article will teach you how to run one or more Redis instances on a Linux

M _posts/2019-12-28-december-2019.md => _posts/2019-12-28-december-2019.md +2 -0
@@ 5,6 5,8 @@ date: 2019-12-28 10:33 +0100
place: Ghent
category: status-updates
lang: en
redirect_from:
  - /status-updates/december-2019.html
---

December was a bit hectic. The month started with me quitting my job in order

M _posts/2020-01-18-big-tech-doesnt-mean-good-software.md => _posts/2020-01-18-big-tech-doesnt-mean-good-software.md +1 -1
@@ 6,7 6,7 @@ place: Ghent
category: opinions
lang: en
redirect_from:
  - /big-tech-doesnt-mean-good-software.html
  - /opinions/big-tech-doesnt-mean-good-software.html
---

One of the hassles of moving abroad, is that you need to change the country of

M _posts/2020-02-04-january-2020.md => _posts/2020-02-04-january-2020.md +2 -0
@@ 6,6 6,8 @@ place: Guatemala City
toc: true
lang: en
date: 2020-02-04 11:01 -0600
redirect_from:
  - /status-updates/january-2020.html
---
The first month of the year is normally to start fresh. For me it's been more
of a transition month while I'm still migrating between Germany and Belgium.

M _posts/2020-02-23-reunification-visas-for-students-are-broken.md => _posts/2020-02-23-reunification-visas-for-students-are-broken.md +2 -0
@@ 5,6 5,8 @@ category: expat
place: Ghent
lang: en
date: 2020-02-23 14:25 +0100
redirect_from:
  - /expat/reunification-visas-for-students-are-broken.html
---

One of the things I've praised European countries for, is the fact that if you

M _posts/2020-02-29-february-2020.md => _posts/2020-02-29-february-2020.md +2 -0
@@ 5,6 5,8 @@ date: 2020-02-29 21:16 +0100
place: Ghent
lang: en
category: status-updates
redirect_from:
  - /status-updates/february-2020.html
---

During February I escaped to warmer climate and had a great time with family

D _sass/mrls.scss => _sass/mrls.scss +0 -52
@@ 1,52 0,0 @@
@charset "utf-8";

// Define defaults for each variable.

$base-font-family: -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
$base-font-size:   16px !default;
$base-font-weight: 400 !default;
$small-font-size:  $base-font-size * 0.875 !default;
$base-line-height: 1.5 !default;

$spacing-unit:     30px !default;

$text-color:       #111 !default;
$background-color: #fdfdfd !default;
$brand-color:      #2a7ae2 !default;

$grey-color:       #828282 !default;
$grey-color-light: lighten($grey-color, 40%) !default;
$grey-color-dark:  darken($grey-color, 25%) !default;

$table-text-align: left !default;

// Width of the content area
$content-width:    800px !default;

$on-palm:          600px !default;
$on-laptop:        800px !default;

// Use media queries like this:
// @include media-query($on-palm) {
//   .wrapper {
//     padding-right: $spacing-unit / 2;
//     padding-left: $spacing-unit / 2;
//   }
// }
@mixin media-query($device) {
  @media screen and (max-width: $device) {
    @content;
  }
}

@mixin relative-font-size($ratio) {
  font-size: $base-font-size * $ratio;
}

// Import partials.
@import
  "mrls/base",
  "mrls/layout",
  "mrls/syntax-highlighting"
;


D _sass/mrls/_base.scss => _sass/mrls/_base.scss +0 -253
@@ 1,253 0,0 @@
/**
 * Reset some basic elements
 */
body, h1, h2, h3, h4, h5, h6,
p, blockquote, pre, hr,
dl, dd, ol, ul, figure {
  margin: 0;
  padding: 0;
}



/**
 * Basic styling
 */
body {
  font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
  color: $text-color;
  background-color: $background-color;
  -webkit-text-size-adjust: 100%;
  -webkit-font-feature-settings: "kern" 1;
     -moz-font-feature-settings: "kern" 1;
       -o-font-feature-settings: "kern" 1;
          font-feature-settings: "kern" 1;
  font-kerning: normal;
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}



/**
 * Set `margin-bottom` to maintain vertical rhythm
 */
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
ul, ol, dl, figure,
%vertical-rhythm {
  margin-bottom: $spacing-unit / 2;
}



/**
 * `main` element
 */
main {
  display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */
}



/**
 * Images
 */
img {
  max-width: 100%;
  vertical-align: middle;
}



/**
 * Figures
 */
figure > img {
  display: block;
}

figcaption {
  font-size: $small-font-size;
}



/**
 * Lists
 */
ul, ol {
  margin-left: $spacing-unit;
}

li {
  > ul,
  > ol {
    margin-bottom: 0;
  }
}



/**
 * Headings
 */
h1, h2, h3, h4, h5, h6 {
  font-weight: $base-font-weight;
}



/**
 * Links
 */
a {
  color: $brand-color;

  &:visited {
    color: darken($brand-color, 15%);
  }

  &:hover {
    color: $text-color;
    text-decoration: underline;
  }

  .social-media-list &:hover {
    text-decoration: none;

    .username {
      text-decoration: underline;
    }
  }
}


/**
 * Blockquotes
 */
blockquote {
  color: $grey-color;
  border-left: 4px solid $grey-color-light;
  padding-left: $spacing-unit / 2;
  @include relative-font-size(1.125);
  letter-spacing: -1px;
  font-style: italic;

  > :last-child {
    margin-bottom: 0;
  }
}



/**
 * Code formatting
 */
pre,
code {
  @include relative-font-size(0.9375);
  border: 1px solid $grey-color-light;
  border-radius: 3px;
  background-color: #eef;
}

code {
  padding: 1px 5px;
}

pre {
  padding: 8px 12px;
  overflow-x: auto;

  > code {
    border: 0;
    padding-right: 0;
    padding-left: 0;
  }
}



/**
 * Wrapper
 */
.wrapper {
  max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
  max-width:         calc(#{$content-width} - (#{$spacing-unit} * 2));
  margin-right: auto;
  margin-left: auto;
  padding-right: $spacing-unit;
  padding-left: $spacing-unit;
  @extend %clearfix;

  @include media-query($on-laptop) {
    max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
    max-width:         calc(#{$content-width} - (#{$spacing-unit}));
    padding-right: $spacing-unit / 2;
    padding-left: $spacing-unit / 2;
  }
}



/**
 * Clearfix
 */
%clearfix:after {
  content: "";
  display: table;
  clear: both;
}



/**
 * Icons
 */

.svg-icon {
    width: 16px;
    height: 16px;
    display: inline-block;
    fill: #{$grey-color};
    padding-right: 5px;
    vertical-align: text-top;
}

.social-media-list {
  li + li {
    padding-top: 5px;
  }
}



/**
 * Tables
 */
table {
  margin-bottom: $spacing-unit;
  width: 100%;
  text-align: $table-text-align;
  color: lighten($text-color, 18%);
  border-collapse: collapse;
  border: 1px solid $grey-color-light;
  tr {
    &:nth-child(even) {
      background-color: lighten($grey-color-light, 6%);
    }
  }
  th, td {
    padding: ($spacing-unit / 3) ($spacing-unit / 2);
  }
  th {
    background-color: lighten($grey-color-light, 3%);
    border: 1px solid darken($grey-color-light, 4%);
    border-bottom-color: darken($grey-color-light, 12%);
  }
  td {
    border: 1px solid $grey-color-light;
  }
}

D _sass/mrls/_layout.scss => _sass/mrls/_layout.scss +0 -270
@@ 1,270 0,0 @@
/**
 * Site header
 */
.site-header {
  min-height: $spacing-unit * 1.865;

  // Positioning context for the mobile navigation icon
}

.title-group {
  float: left;
  max-width: 30%;

  @include media-query($on-palm) {
    max-width: 100%;
    width: 100%;
  }
}

.site-title {
  @include relative-font-size(2.2);

  float: left;
  font-weight: 300;
  letter-spacing: -1px;
  margin-top: 0.5rem;

  @include media-query($on-palm) {
    width: 100%;
  }
}

.site-subtitle {
  color: $grey-color;
  float: left;

  @include media-query($on-palm) {
    width: 100%;
  }
}

.lang-nav {
  float: right;

  @include media-query($on-palm) {
    position: absolute;
    right: 1em;
  }

  > .lang-item ~ .lang-item {
      padding-left: 0.5rem;
  }
}

.site-nav {
  float: left;
  line-height: $base-line-height * $base-font-size * 2.25;
  text-align: center;
  margin-top: 1em;
  padding-left: 2em;

  .page-link {
    line-height: $base-line-height;
    padding: 5px;

    // Gaps between nav items, but not on the last one
    &:not(:last-child) {
      margin-right: 5px;
    }
  }

  @include media-query($on-palm) {
    line-height: 0;
    padding-left: 0;
    width: 100%;

    .page-link {

      &:not(:last-child) {
        margin-right: 0;
      }
    }
  }
}

.home {
  float: left;
  width: 100%;
  margin-bottom: 1em;
}

.first-paragraph {
  @include relative-font-size(2.2);

  border-bottom: 3px solid black;
  font-weight: 300;
  float: left;
  line-height: $base-line-height * 0.8;
  max-width: 70%;
  padding-bottom: 1.4rem;
  //text-align: justify;

  @include media-query($on-palm) {
    @include relative-font-size(1.5);
    max-width: 100%;
  }
}

.avatar {
  float: right;
  max-width: 25%;
  padding-top: 0.5em;

  @include media-query($on-palm) {
    display: none;
  }
}


/**
 * Site footer
 */
.site-footer {
  border-top: 1px solid $grey-color-light;
  padding: $spacing-unit 0;
}

.footer-heading {
  @include relative-font-size(1.125);
  margin-bottom: $spacing-unit / 2;
}

.contact-list,
.social-media-list {
  list-style: none;
  margin-left: 0;
}

.footer-col-wrapper {
  @include relative-font-size(0.9375);
  color: $grey-color;
  margin-left: -$spacing-unit / 2;
  @extend %clearfix;
}

.footer-col {
  float: left;
  margin-bottom: $spacing-unit / 2;
  padding-left: $spacing-unit / 2;
}

.footer-col-1 {
  width: -webkit-calc(35% - (#{$spacing-unit} / 2));
  width:         calc(35% - (#{$spacing-unit} / 2));
}

.footer-col-2 {
  width: -webkit-calc(20% - (#{$spacing-unit} / 2));
  width:         calc(20% - (#{$spacing-unit} / 2));
}

.footer-col-3 {
  width: -webkit-calc(45% - (#{$spacing-unit} / 2));
  width:         calc(45% - (#{$spacing-unit} / 2));
}

@include media-query($on-laptop) {
  .footer-col-1,
  .footer-col-2 {
    width: -webkit-calc(50% - (#{$spacing-unit} / 2));
    width:         calc(50% - (#{$spacing-unit} / 2));
  }

  .footer-col-3 {
    width: -webkit-calc(100% - (#{$spacing-unit} / 2));
    width:         calc(100% - (#{$spacing-unit} / 2));
  }
}

@include media-query($on-palm) {
  .footer-col {
    float: none;
    width: -webkit-calc(100% - (#{$spacing-unit} / 2));
    width:         calc(100% - (#{$spacing-unit} / 2));
  }
}



/**
 * Page content
 */
.page-content {
  padding: $spacing-unit 0;
  flex: 1;
}

.page-heading {
  @include relative-font-size(2);
}

.post-list-heading {
  @include relative-font-size(1.75);
}

.post-list {
  margin-left: 0;
  list-style: none;

  h3 {
    margin-bottom: 0;
  }
}

.post-meta {
  font-size: $small-font-size;
  color: $grey-color;
}

.post-link {
  display: block;
  @include relative-font-size(1.5);
}



/**
 * Posts
 */
.post-header {
  margin-bottom: $spacing-unit;
}

.post-title {
  @include relative-font-size(2.625);
  letter-spacing: -1px;
  line-height: 1;

  @include media-query($on-laptop) {
    @include relative-font-size(2.25);
  }
}

.post-content {
  margin-bottom: $spacing-unit;

  h2 {
    @include relative-font-size(2);

    @include media-query($on-laptop) {
      @include relative-font-size(1.75);
    }
  }

  h3 {
    @include relative-font-size(1.625);

    @include media-query($on-laptop) {
      @include relative-font-size(1.375);
    }
  }

  h4 {
    @include relative-font-size(1.25);

    @include media-query($on-laptop) {
      @include relative-font-size(1.125);
    }
  }
}

D _sass/mrls/_syntax-highlighting.scss => _sass/mrls/_syntax-highlighting.scss +0 -71
@@ 1,71 0,0 @@
/**
 * Syntax highlighting styles
 */
.highlight {
  background: #fff;
  @extend %vertical-rhythm;

  .highlighter-rouge & {
    background: #eef;
  }

  .c     { color: #998; font-style: italic } // Comment
  .err   { color: #a61717; background-color: #e3d2d2 } // Error
  .k     { font-weight: bold } // Keyword
  .o     { font-weight: bold } // Operator
  .cm    { color: #998; font-style: italic } // Comment.Multiline
  .cp    { color: #999; font-weight: bold } // Comment.Preproc
  .c1    { color: #998; font-style: italic } // Comment.Single
  .cs    { color: #999; font-weight: bold; font-style: italic } // Comment.Special
  .gd    { color: #000; background-color: #fdd } // Generic.Deleted
  .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
  .ge    { font-style: italic } // Generic.Emph
  .gr    { color: #a00 } // Generic.Error
  .gh    { color: #999 } // Generic.Heading
  .gi    { color: #000; background-color: #dfd } // Generic.Inserted
  .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
  .go    { color: #888 } // Generic.Output
  .gp    { color: #555 } // Generic.Prompt
  .gs    { font-weight: bold } // Generic.Strong
  .gu    { color: #aaa } // Generic.Subheading
  .gt    { color: #a00 } // Generic.Traceback
  .kc    { font-weight: bold } // Keyword.Constant
  .kd    { font-weight: bold } // Keyword.Declaration
  .kp    { font-weight: bold } // Keyword.Pseudo
  .kr    { font-weight: bold } // Keyword.Reserved
  .kt    { color: #458; font-weight: bold } // Keyword.Type
  .m     { color: #099 } // Literal.Number
  .s     { color: #d14 } // Literal.String
  .na    { color: #008080 } // Name.Attribute
  .nb    { color: #0086B3 } // Name.Builtin
  .nc    { color: #458; font-weight: bold } // Name.Class
  .no    { color: #008080 } // Name.Constant
  .ni    { color: #800080 } // Name.Entity
  .ne    { color: #900; font-weight: bold } // Name.Exception
  .nf    { color: #900; font-weight: bold } // Name.Function
  .nn    { color: #555 } // Name.Namespace
  .nt    { color: #000080 } // Name.Tag
  .nv    { color: #008080 } // Name.Variable
  .ow    { font-weight: bold } // Operator.Word
  .w     { color: #bbb } // Text.Whitespace
  .mf    { color: #099 } // Literal.Number.Float
  .mh    { color: #099 } // Literal.Number.Hex
  .mi    { color: #099 } // Literal.Number.Integer
  .mo    { color: #099 } // Literal.Number.Oct
  .sb    { color: #d14 } // Literal.String.Backtick
  .sc    { color: #d14 } // Literal.String.Char
  .sd    { color: #d14 } // Literal.String.Doc
  .s2    { color: #d14 } // Literal.String.Double
  .se    { color: #d14 } // Literal.String.Escape
  .sh    { color: #d14 } // Literal.String.Heredoc
  .si    { color: #d14 } // Literal.String.Interpol
  .sx    { color: #d14 } // Literal.String.Other
  .sr    { color: #009926 } // Literal.String.Regex
  .s1    { color: #d14 } // Literal.String.Single
  .ss    { color: #990073 } // Literal.String.Symbol
  .bp    { color: #999 } // Name.Builtin.Pseudo
  .vc    { color: #008080 } // Name.Variable.Class
  .vg    { color: #008080 } // Name.Variable.Global
  .vi    { color: #008080 } // Name.Variable.Instance
  .il    { color: #099 } // Literal.Number.Integer.Long
}

M acerca-de.md => acerca-de.md +6 -11
@@ 10,16 10,11 @@ pasatiempos, opiniones y más.

## Experiencia profesional

Escribo software profesionalmente desde el 2005. La mayor parte de mi enfoque ha sido
en desarrollo web (back-end) y aplicaciones para la línea de comando. Mi lenguaje
principal es Ruby pero también he utilizado Go, JavaScript, PHP y PL/SQL (en el
futuro me gustaría trabajar con un lenguaje funcional).
Tengo más de 15 años de experiencia profesional a nivel internacional. Me
especializo en desarrollo web y aplicaciones para la línea de comando. Mi
lenguaje principal es Ruby pero también he utilizado Go, JavaScript, PHP
y PL/SQL (en el futuro me gustaría trabajar con un lenguaje funcional).

Empresas para las que he trabajado:
Más información en mi [hoja de vida][cv].

- CloudBees
- Babbel
- SUSE
- LAS
- CW
- Telefónica
[cv]: /hoja-de-vida.html

D assets/mrls-social-icons.svg => assets/mrls-social-icons.svg +0 -20
@@ 1,20 0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

<symbol id="github" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M8 0C3.58 0 0 3.582 0 8c0 3.535 2.292 6.533 5.47 7.59.4.075.547-.172.547-.385 0-.19-.007-.693-.01-1.36-2.226.483-2.695-1.073-2.695-1.073-.364-.924-.89-1.17-.89-1.17-.725-.496.056-.486.056-.486.803.056 1.225.824 1.225.824.714 1.223 1.873.87 2.33.665.072-.517.278-.87.507-1.07-1.777-.2-3.644-.888-3.644-3.953 0-.873.31-1.587.823-2.147-.09-.202-.36-1.015.07-2.117 0 0 .67-.215 2.2.82.64-.178 1.32-.266 2-.27.68.004 1.36.092 2 .27 1.52-1.035 2.19-.82 2.19-.82.43 1.102.16 1.915.08 2.117.51.56.82 1.274.82 2.147 0 3.073-1.87 3.75-3.65 3.947.28.24.54.73.54 1.48 0 1.07-.01 1.93-.01 2.19 0 .21.14.46.55.38C13.71 14.53 16 11.53 16 8c0-4.418-3.582-8-8-8"/></symbol>

<symbol id="linkedin" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M13.632 13.635h-2.37V9.922c0-.886-.018-2.025-1.234-2.025-1.235 0-1.424.964-1.424 1.96v3.778h-2.37V6H8.51v1.04h.03c.318-.6 1.092-1.233 2.247-1.233 2.4 0 2.845 1.58 2.845 3.637v4.188zM3.558 4.955c-.762 0-1.376-.617-1.376-1.377 0-.758.614-1.375 1.376-1.375.76 0 1.376.617 1.376 1.375 0 .76-.617 1.377-1.376 1.377zm1.188 8.68H2.37V6h2.376v7.635zM14.816 0H1.18C.528 0 0 .516 0 1.153v13.694C0 15.484.528 16 1.18 16h13.635c.652 0 1.185-.516 1.185-1.153V1.153C16 .516 15.467 0 14.815 0z" fill-rule="nonzero"/></symbol>

<symbol id="rss" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M12.8 16C12.8 8.978 7.022 3.2 0 3.2V0c8.777 0 16 7.223 16 16h-3.2zM2.194 11.61c1.21 0 2.195.985 2.195 2.196 0 1.21-.99 2.194-2.2 2.194C.98 16 0 15.017 0 13.806c0-1.21.983-2.195 2.194-2.195zM10.606 16h-3.11c0-4.113-3.383-7.497-7.496-7.497v-3.11c5.818 0 10.606 4.79 10.606 10.607z"/></symbol>

<symbol id="stackoverflow" class="svg-icon" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M12.658 14.577v-4.27h1.423V16H1.23v-5.693h1.42v4.27h10.006zm-8.583-1.423h7.16V11.73h-7.16v1.424zm.173-3.235l6.987 1.46.3-1.38L4.55 8.54l-.302 1.38zm.906-3.37l6.47 3.02.602-1.3-6.47-3.02-.602 1.29zm1.81-3.19l5.478 4.57.906-1.08L7.87 2.28l-.9 1.078zM10.502 0L9.338.863l4.27 5.735 1.164-.862L10.5 0z"/></symbol>

<symbol id="twitter" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M16 3.038c-.59.26-1.22.437-1.885.517.677-.407 1.198-1.05 1.443-1.816-.634.37-1.337.64-2.085.79-.598-.64-1.45-1.04-2.396-1.04-1.812 0-3.282 1.47-3.282 3.28 0 .26.03.51.085.75-2.728-.13-5.147-1.44-6.766-3.42C.83 2.58.67 3.14.67 3.75c0 1.14.58 2.143 1.46 2.732-.538-.017-1.045-.165-1.487-.41v.04c0 1.59 1.13 2.918 2.633 3.22-.276.074-.566.114-.865.114-.21 0-.41-.02-.61-.058.42 1.304 1.63 2.253 3.07 2.28-1.12.88-2.54 1.404-4.07 1.404-.26 0-.52-.015-.78-.045 1.46.93 3.18 1.474 5.04 1.474 6.04 0 9.34-5 9.34-9.33 0-.14 0-.28-.01-.42.64-.46 1.2-1.04 1.64-1.7z" fill-rule="nonzero"/></symbol>

<symbol id="youtube" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M0 7.345c0-1.294.16-2.59.16-2.59s.156-1.1.636-1.587c.608-.637 1.408-.617 1.764-.684C3.84 2.36 8 2.324 8 2.324s3.362.004 5.6.166c.314.038.996.04 1.604.678.48.486.636 1.588.636 1.588S16 6.05 16 7.346v1.258c0 1.296-.16 2.59-.16 2.59s-.156 1.102-.636 1.588c-.608.638-1.29.64-1.604.678-2.238.162-5.6.166-5.6.166s-4.16-.037-5.44-.16c-.356-.067-1.156-.047-1.764-.684-.48-.487-.636-1.587-.636-1.587S0 9.9 0 8.605v-1.26zm6.348 2.73V5.58l4.323 2.255-4.32 2.24z"/></symbol>

<symbol id="mastodon" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414">
  <path transform="scale(0.07)" d="M211.80734 139.0875c-3.18125 16.36625-28.4925 34.2775-57.5625 37.74875-15.15875 1.80875-30.08375 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.39125 27.9425 21.11625.7225 39.91875-5.20625 39.91875-5.20625l.8675 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234 213.82 1.40609 165.31125.20859 116.09125c-.365-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67234 3.45375 78.20359.2425 107.86484 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.975 14.7525 32.975 65.0825 0 0 .41375 37.13375-4.59875 62.915"/>
  <path transform="scale(0.07)" fill="#FFF" d="M177.50984 80.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025 0-17.4175 7.5075-17.4175 22.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375 0-15.74 6.32875-15.74 18.7975v59.15H38.90484V80.077c0-12.455 3.17125-22.3525 9.54125-29.675 6.56875-7.3225 15.17125-11.07625 25.85-11.07625 12.355 0 21.71125 4.74875 27.8975 14.2475l6.01375 10.08125 6.015-10.08125c6.185-9.49875 15.54125-14.2475 27.8975-14.2475 10.6775 0 19.28 3.75375 25.85 11.07625 6.36875 7.3225 9.54 17.22 9.54 29.675"/>
</symbol>

</svg>

D assets/translation-icons.svg => assets/translation-icons.svg +0 -1
@@ 1,1 0,0 @@
<?xml version="1.0" ?><svg height="32" id="svg4050" version="1.1" viewBox="0 0 32 32.000001" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs4052"/><g id="layer1" transform="translate(0,-1020.3622)"><path d="m 16.339286,1028.8622 9.66071,0 c 0.83101,0 1.500018,0.669 1.500018,1.5 l 0,14 c 0,0.831 -0.669008,1.5 -1.500018,1.5 l -9.499996,0 -0.680744,-2.8931" id="path4307" style="opacity:1;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0999999;stroke-dasharray:none"/><path d="m 19.5,1042.8622 -13.4999967,0 c -0.8310096,0 -1.5000174,-0.669 -1.5000174,-1.5 l 0,-14 c 0,-0.831 0.6690078,-1.5 1.5000174,-1.5 l 9.4999967,0 z" id="rect4302" style="opacity:1;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0999999;stroke-dasharray:none"/><path d="m 16.505051,1045.8572 2.989899,-2.9899" id="path4309" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"/><path d="m 9.9994799,1031.3618 2.5005201,0 c -1.5e-5,1.1318 -0.760164,2.1224 -1.853338,2.4153 -1.093179,0.2929 -2.2468122,-0.1849 -2.8126964,-1.165 -0.5658815,-0.9801 -0.4028951,-2.2182 0.3973789,-3.0184 0.8002711,-0.8003 2.0382745,-0.9633 3.0183955,-0.3974" id="path4331" style="opacity:1;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0999999;stroke-dasharray:none"/><path d="m 17.492879,1032.8623 7,0" id="path4333" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"/><path d="m 23.987701,1039.8556 a 8.5,8.5 0 0 1 -4.470661,-6.9555" id="path4335" style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round"/><path d="m 22.483263,1032.8953 a 8.5,8.5 0 0 1 -3.739827,6.5202" id="circle4337" style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round"/><path d="m 21.00005,1030.8693 0,2" id="path4339" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"/></g></svg>
\ No newline at end of file

M index.md => index.md +32 -1
@@ 7,10 7,12 @@ description: |
  Specialised in backend development and CLI apps using Ruby and Go. Free and
  Open Source Software enthusiast.
avatar: /assets/img/avatar.jpeg
top_posts: true
recent_posts: true
---

I'm a [CloudBees], [Babbel], [SUSE], [LAS], [CW], and [Telefónica] alumnus
<mark>currently looking for his next gig.</mark>
who's <mark>currently looking for his next gig.</mark>


[CloudBees]: https://www.cloudbees.com/


@@ 19,3 21,32 @@ I'm a [CloudBees], [Babbel], [SUSE], [LAS], [CW], and [Telefónica] alumnus
[LAS]: https://www.las.ch/
[CW]: https://www.creativeworks.us/
[Telefónica]: https://www.telefonica.com/

## Open Source Contributions

Core team member or contributor

- [Jenkins X] Automated CI/CD for K8s
- [BOSH] Tool chain for release engineering, deployment and lifecycle
  management of large scale distributed services e.g. Cloud Foundry
- [BOSH OpenStack CPI] BOSH OpenStack Cloud Provider Interface
- [BOSH Linux Stemcell Builder] I had the opportunity to be part of the team
  that helped implement the openSUSE stemcell used by BOSH
- [Machinery] A systems management toolkit for Linux
- [Formstack API gem] a Ruby wrapper for the Formstack API

Personal projects

- [Jade] A toy programming language in Spanish written in Go
- [BOSH Libvirt CPI] BOSH Libvirt Cloud Provider Interface
- [Scream Grid] A jQuery extension to build pivot tables.

[Jenkins X]: https://github.com/jenkins-x/jx
[BOSH]: https://github.com/cloudfoundry/bosh
[BOSH OpenStack CPI]: https://github.com/cloudfoundry/bosh-openstack-cpi-release
[BOSH Linux Stemcell Builder]: https://github.com/cloudfoundry/bosh-linux-stemcell-builder
[Machinery]: https://github.com/SUSE/machinery
[Formstack API gem]: https://github.com/LAS-IT/formstack-api
[Jade]: https://github.com/mauromorales/jade
[BOSH Libvirt CPI]: https://github.com/mauromorales/bosh-libvirt-cpi-release
[Scream Grid]: https://github.com/mauromorales/Scream-Grid

M inicio.md => inicio.md +29 -0
@@ 17,3 17,32 @@ href="/mentorias.html">mentorías</a>.</mark>
[LAS]: https://www.las.ch/
[CW]: https://www.creativeworks.us/
[Telefónica]: https://www.telefonica.com/

## Proyectos de código abierto

Core team member or contributor

- [Jenkins X] Automated CI/CD for K8s
- [BOSH] Tool chain for release engineering, deployment and lifecycle
  management of large scale distributed services e.g. Cloud Foundry
- [BOSH OpenStack CPI] BOSH OpenStack Cloud Provider Interface
- [BOSH Linux Stemcell Builder] I had the opportunity to be part of the team
  that helped implement the openSUSE stemcell used by BOSH
- [Machinery] A systems management toolkit for Linux
- [Formstack API gem] a Ruby wrapper for the Formstack API

Proyectos personales

- [Jade] A toy programming language in Spanish written in Go
- [BOSH Libvirt CPI] BOSH Libvirt Cloud Provider Interface
- [Scream Grid] A jQuery extension to build pivot tables.

[Jenkins X]: https://github.com/jenkins-x/jx
[BOSH]: https://github.com/cloudfoundry/bosh
[BOSH OpenStack CPI]: https://github.com/cloudfoundry/bosh-openstack-cpi-release
[BOSH Linux Stemcell Builder]: https://github.com/cloudfoundry/bosh-linux-stemcell-builder
[Machinery]: https://github.com/SUSE/machinery
[Formstack API gem]: https://github.com/LAS-IT/formstack-api
[Jade]: https://github.com/mauromorales/jade
[BOSH Libvirt CPI]: https://github.com/mauromorales/bosh-libvirt-cpi-release
[Scream Grid]: https://github.com/mauromorales/Scream-Grid