complete rewrite
commit
02cafbdcad
|
@ -0,0 +1,66 @@
|
|||
BASE_URL_WWW ?= https://monotremata.xyz
|
||||
BASE_URL_ONION ?= http://zswm576cm7wgmgcwluy4l4ixkfasj25taqbn2r5pnrrj552l263ff2qd.onion
|
||||
|
||||
SASS_FILES=$(shell find sass -name \*.scss)
|
||||
ICON_FILES=$(shell find icons -name \*.svg)
|
||||
PAGES=$(shell find pages -maxdepth 1 -mindepth 1 -type d -printf "%f\n")
|
||||
ASSETS=$(shell find assets -mindepth 1)
|
||||
|
||||
WWW_UNTIDY=$(PAGES:%=untidy_www_%.html)
|
||||
WWW_ASSETS=$(ASSETS:assets/%=html/www/%)
|
||||
WWW_HTML=$(PAGES:%=html/www/%.html)
|
||||
|
||||
ONION_UNTIDY=$(PAGES:%=untidy_onion_%.html)
|
||||
ONION_ASSETS=$(ASSETS:assets/%=html/onion/%)
|
||||
ONION_HTML=$(PAGES:%=html/onion/%.html)
|
||||
|
||||
.PHONY: all clean deploy onion www
|
||||
.INTERMEDIATE: style.css
|
||||
|
||||
all: www onion
|
||||
|
||||
deploy: all
|
||||
rsync --recursive --human-readable --delete --info=progress2 html/* caladan:/srv/sites/frontpage
|
||||
|
||||
clean:
|
||||
rm -fr html
|
||||
|
||||
onion: $(ONION_HTML) $(ONION_ASSETS)
|
||||
www: $(WWW_HTML) $(WWW_ASSETS)
|
||||
|
||||
style.css: $(SASS_FILES)
|
||||
sassc sass/main.scss style.css
|
||||
|
||||
define build_html
|
||||
BASE_URL=$(1) j2 -f yaml -o $@ pages/$*/main.j2 config.yaml
|
||||
endef
|
||||
|
||||
define cp_asset
|
||||
@mkdir -p $$(dirname $@)
|
||||
cp $? $@
|
||||
endef
|
||||
|
||||
define tidy_html
|
||||
@mkdir -p $$(dirname $@)
|
||||
tidy --show-info no -output $@ $<
|
||||
endef
|
||||
|
||||
page_deps = pages/%/*.j2 config.yaml header.j2 footer.j2 style.css $(ICON_FILES)
|
||||
|
||||
untidy_www_%.html: $(page_deps)
|
||||
$(call build_html,$(BASE_URL_WWW))
|
||||
|
||||
untidy_onion_%.html: $(page_deps)
|
||||
$(call build_html,$(BASE_URL_ONION))
|
||||
|
||||
html/www/%.html: untidy_www_%.html
|
||||
$(tidy_html)
|
||||
|
||||
html/onion/%.html: untidy_onion_%.html
|
||||
$(tidy_html)
|
||||
|
||||
html/www/%: assets/%
|
||||
$(cp_asset)
|
||||
|
||||
html/onion/%: assets/%
|
||||
$(cp_asset)
|
|
@ -0,0 +1,149 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
k04FD4X8hRaihqa4RPDG8kyMKS9zCd3lL+Fteuo=
|
||||
=vzV3
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,16 @@
|
|||
nav:
|
||||
- name: about
|
||||
icon: info
|
||||
endpoint: ""
|
||||
|
||||
- name: CV
|
||||
icon: file-text
|
||||
endpoint: cv
|
||||
|
||||
- name: code
|
||||
icon: code
|
||||
url: https://git.monotremata.xyz
|
||||
|
||||
- name: contact
|
||||
icon: mail
|
||||
endpoint: contact
|
|
@ -0,0 +1,6 @@
|
|||
</div>
|
||||
<hr>
|
||||
{% if note is defined %}<p class="note">{{ note }}</p>{% endif %}
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
{% include "style.css" %}
|
||||
</style>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<title>
|
||||
{% if page is defined %}{{ page }} | {% endif %}Ricard Illa's page</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav id="nav" class="nav justify-content-center">
|
||||
{% for x in nav %}
|
||||
<a
|
||||
class="nav-link"
|
||||
href="{% if x.url is defined %}{{ x.url }}{% else %}{{ "BASE_URL" | env }}/{{ x.endpoint }}{% endif %}"
|
||||
>
|
||||
{% include "icons/" + x.icon + ".svg" %}{{ x.name }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</nav>
|
||||
|
||||
<main id="main">
|
||||
<div class="header"{% if headerid is defined %} id="{{ headerid }}"{% endif %}>
|
||||
<h1>{{ title }}</h1>{% if side is defined %}{{ side }}{% endif %}
|
||||
{% if subtitle is defined %}<h2>{{ subtitle }}</h2>{% endif %}
|
||||
</div>
|
||||
<hr>
|
||||
<div class="container">
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-code"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg>
|
After Width: | Height: | Size: 307 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file-text"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
|
After Width: | Height: | Size: 473 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-info"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
|
After Width: | Height: | Size: 347 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-mail"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
|
After Width: | Height: | Size: 354 B |
|
@ -0,0 +1,19 @@
|
|||
{% with %}
|
||||
{% set page = "contact" %}
|
||||
{% set title = "Contact" %}
|
||||
{% include "header.j2" %}
|
||||
{% endwith %}
|
||||
|
||||
<dl class="contacts">
|
||||
<dt>e-mail</dt>
|
||||
<dd><a href="mailto:rilla@monotremata.xyz">rilla@monotremata.xyz</a></dd>
|
||||
<dt>GPG public key</dt>
|
||||
<dd><a href="{{ "BASE_URL" | env }}/0x8333CFB0B9D3244D.pub">B51D4548A4846E3C8D115C808333CFB0B9D3244D</a></dd>
|
||||
<dt>matrix</dt><dd><a href="https://matrix.to/#/@rilla:monotremata.xyz">@rilla:monotremata.xyz</a></dd>
|
||||
<dt>xmpp</dt>
|
||||
<dd><a href="xmpp:rilla@monotremata.xyz?message">rilla@monotremata.xyz</a></dd>
|
||||
<dt>fediverse</dt>
|
||||
<dd><a href="https://pleroma.monotremata.xyz/users/rilla/">@rilla@pleroma.monotremata.xyz</a></dd>
|
||||
</dl>
|
||||
|
||||
{% include "footer.j2" %}
|
|
@ -0,0 +1,31 @@
|
|||
<h2>Education</h2>
|
||||
|
||||
<div class="flex-jobs">
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2012 - 2013</span></dd>
|
||||
<dt>degree</dt>
|
||||
<dd><em>MSc in Bioinformatics</em></dd>
|
||||
<dt>institution</dt><dd><strong>Universitat Autònoma de Barcelona</strong></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2008 - 2012</span></dd>
|
||||
<dt>degree</dt>
|
||||
<dd><em>BSc in Biochemistry</em></dd>
|
||||
<dt>institution</dt>
|
||||
<dd><strong>Universitat Autònoma de Barcelona</strong></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2013 - 2018</span></dd>
|
||||
<dt>degree</dt>
|
||||
<dd><em>PhD in Biomedicine</em> <span class="note">(unfinished)</span></dd>
|
||||
<dt>institution</dt>
|
||||
<dd><strong>Universitat de Barcelona</strong></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
|
@ -0,0 +1,118 @@
|
|||
<h2>Professional experience</h2>
|
||||
<div class="flex-jobs">
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">January 2021 - current</span></dd>
|
||||
<dt>company</dt>
|
||||
<dd><strong>Trakken</strong></dd>
|
||||
<dt>position</dt>
|
||||
<dd><em>Data Engineer</em></dd>
|
||||
<dt>duties</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Design and implement data infrastructure</li>
|
||||
<li>Develop and maintain internal tooling</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>technologies</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Apache Airflow</li>
|
||||
<li>BigQuery</li>
|
||||
<li>Apache Beam</li>
|
||||
<li>Google Cloud Platform</li>
|
||||
<li>Python</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">June 2019 - October 2020</span></dd>
|
||||
<dt>company</dt>
|
||||
<dd><strong>Lead Ratings</strong></dd>
|
||||
<dt>position</dt>
|
||||
<dd><em>Data Engineer</em></dd>
|
||||
<dt>duties</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Develop and maintain a data-centered ML SaaS platform</li>
|
||||
<li>Assist Data Scientists' internal workflow</li>
|
||||
<li>Develop connectors to third party platforms</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>technologies</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Python</li>
|
||||
<li>Django</li>
|
||||
<li>Amazon web services</li>
|
||||
<li>Docker and Docker Swarm</li>
|
||||
<li>Redis</li>
|
||||
<li>MySQL</li>
|
||||
<li>Elasticsearch</li>
|
||||
<li>Numpy and Pandas</li>
|
||||
<li>Git</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">July 2018 - June 2020</span></dd>
|
||||
<dt>company</dt>
|
||||
<dd><strong>Sellbytell Group</strong></dd>
|
||||
<dt>position</dt>
|
||||
<dd><em>GCP Support Engineer</em> <span class="note">(Big Data and ML specialist)</span></dd>
|
||||
<dt>duties</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Provide Big Data and Machine Learning technical support to Google Cloud Platform users</li>
|
||||
<li>Troubleshoot and debug customer’s issues</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>technologies</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Google Cloud Platform</li>
|
||||
<li>BigQuery</li>
|
||||
<li>Google Dataflow / Apache Beam</li>
|
||||
<li>Google Composer / Apache Airflow</li>
|
||||
<li>Google Cloud Pub/Sub</li>
|
||||
<li>Python</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">November 2013 - April 2018</span></dd>
|
||||
<dt>institution</dt>
|
||||
<dd><strong>Institute for Research in Biomedicine</strong> <span class="note">(Barcelona)</span></dd>
|
||||
<dt>group</dt>
|
||||
<dd><strong>Molecular Modeling and Bioinformatics</strong></dd>
|
||||
<dt>position</dt><dd><em>PhD Student</em></dd>
|
||||
<dt>duties</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Perform bioinformatics research on Nucleosome Positioning</li>
|
||||
<li>Develop and implement statistical analysis methods</li>
|
||||
<li>Develop and maintain R packages</li>
|
||||
<li>Integrate my code into bigger genomics frameworks</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>technologies</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>R</li>
|
||||
<li>C</li>
|
||||
<li>Python</li>
|
||||
<li>Bioconductor</li>
|
||||
<li>Sun Grid Engine</li>
|
||||
<li>MongoDB</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
|
@ -0,0 +1,21 @@
|
|||
{% with %}
|
||||
{% set page = "CV" %}
|
||||
{% set title = "CV" %}
|
||||
{% set side = '<a href="' + ("BASE_URL" | env) + '/cv_ricardilla.pdf">pdf version</a>' %}
|
||||
{% include "header.j2" %}
|
||||
{% endwith %}
|
||||
|
||||
I'm a tinkerer, a <em>data-oriented</em> programmer with a bias towards
|
||||
<em>functional programming</em>. I'm a fan of <em>clean code</em> and
|
||||
<em>correctness</em>, as well as <em>minimalism</em>. I enjoy
|
||||
<em>modern</em> (but not bloated) technologies and I like playing with
|
||||
new things.
|
||||
|
||||
<hr>
|
||||
{% include "pages/cv/experience.j2" %}
|
||||
<hr>
|
||||
{% include "pages/cv/education.j2" %}
|
||||
<hr>
|
||||
{% include "pages/cv/research.j2" %}
|
||||
|
||||
{% include "footer.j2" %}
|
|
@ -0,0 +1,143 @@
|
|||
<h2>Research</h2>
|
||||
|
||||
<h3>Published software</h3>
|
||||
|
||||
<div class="flex-jobs">
|
||||
<dl class="job">
|
||||
<dt>name</dt>
|
||||
<dd><em>NucleosomeDynamics</em></dd>
|
||||
<dt>language</dt>
|
||||
<dd>R and C</dd>
|
||||
<dt>function</dt>
|
||||
<dd>Suite for nucleosome positioning analysis using MNase-seq</dd>
|
||||
<dt>forms</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><a href="http://github.com/gthar/NucleosomeDynamics">Standalone R package</a></li>
|
||||
<li><a href="https://mmb.irbbarcelona.org/NucleosomeDynamics/">Backend to the NucleosomeDynamics web service</a></li>
|
||||
<li><a href="https://www.multiscalegenomics.eu/">Tool integrated within the VRE of the Multiscale Genomics European project</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<h3>Congresses attended</h3>
|
||||
|
||||
<div class="flex-jobs">
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2016</span></dd>
|
||||
<dt>name</dt>
|
||||
<dd><em>15th European Conference on Computational Biology</em></dd>
|
||||
<dt>location</dt>
|
||||
<dd><strong>World Forum Convention Center</strong> <span class="note">(The Hague, Nederlands)</span></dd>
|
||||
<dt>poster presented</dt>
|
||||
<dd>NucleosomeDynamics: a web portal to analyze and visualize MNase-seq data</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2016</span></dd>
|
||||
<dt>name</dt>
|
||||
<dd><em>XIII Symposium in Bioinformatics</em></dd>
|
||||
<dt>location</dt>
|
||||
<dd><strong>Universidad politécnica de Valencia</strong> <span class="note">(Valencia, Spain)</span></dd>
|
||||
<dt>talk given</dt>
|
||||
<dd>NucleosomeDynamics: a web portal to analyze and visualize MNase-seq data</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<h3>Workshops given</h3>
|
||||
|
||||
<div class="flex-jobs">
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2017</span></dd>
|
||||
<dt>name</dt>
|
||||
<dd><em>Multi-scale study of 3D Chromatin Structure</em></dd>
|
||||
<dt>location</dt>
|
||||
<dd><strong>European Bioinformatics Institute</strong> <span class="note">(Cambridge, UK)</span></dd>
|
||||
<dt>topic I covered</dt>
|
||||
<dd>MNase-seq data analysis using the MuG research environment</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2017</span></dd>
|
||||
<dt>name</dt>
|
||||
<dd><em>Multi-scale genomics</em></dd>
|
||||
<dt>location</dt>
|
||||
<dd><strong>Barcelona Supercomputing Center</strong> <span class="note">(Barcelona)</span></dd>
|
||||
<dt>topic I covered</dt>
|
||||
<dd>MNase-seq data analysis using the MuG research environment</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2016</span></dd>
|
||||
<dt>name</dt>
|
||||
<dd><em>3DAROC 2016</em></dd>
|
||||
<dt>location</dt>
|
||||
<dd><strong>Instituto Gulbenikan de la ciéncia</strong> <span class="note">(Lisboa, Portugal)</span></dd>
|
||||
<dt>topic I covered</dt>
|
||||
<dd>MNase-seq data analysis using the NucleosomeDynamics portal</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
<h3>Internships</h3>
|
||||
|
||||
<div class="flex-jobs">
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2011-2013</span></dd>
|
||||
<dt>descr.</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><em>Master’s internship</em></li>
|
||||
<li><em>Colaboration scolarship</em></li>
|
||||
<li><em>Degree’s internship</em></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>group</dt>
|
||||
<dd><strong>Protein folding and conformational diseases</strong></dd>
|
||||
<dt>institution</dt>
|
||||
<dd>Institute of Biotechnology and Biomedicine <span class="note">(Barcelona)</span></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2012</span></dd>
|
||||
<dt>descr.</dt>
|
||||
<dd><em>Internship</em></dd>
|
||||
<dt>group</dt>
|
||||
<dd><strong>Peptide synthesis and protein structure</strong></dd>
|
||||
<dt>institution</dt>
|
||||
<dd>Institute for Research in Biomedicine <span class="note">(Barcelona)</span></dd>
|
||||
</dl>
|
||||
|
||||
<dl class="job">
|
||||
<dt><span class="date">period</span></dt>
|
||||
<dd><span class="date">2011</span></dd>
|
||||
<dt>descr.</dt>
|
||||
<dd><em>Exchange Student</em></dd>
|
||||
<dt>department</dt>
|
||||
<dd><strong>Biophysics and radiadion biology</strong></dd>
|
||||
<dt>institution</dt>
|
||||
<dd>Semmelweis University <span class="note">(Budapest)</span></dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
<h3>Publications</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://academic.oup.com/nar/article/47/18/9511/5557727">Buitrago D, Codó L, Illa R, et al. Nucleosome Dynamics: a new tool for the dynamic analysis of nucleosome positioning. Nucleic Acids Res. 2019;47(18):9511-9523. doi:10.1093/nar/gkz759</a></li>
|
||||
<li><a href="https://academic.oup.com/nar/article/44/9/4052/2462513">Dans PD, Danilāne L, Ivani I, et al. Long-timescale dynamics of the Drew-Dickerson dodecamer. Nucleic Acids Res. 2016;44(9):4052-4066. doi:10.1093/nar/gkw264</a></li>
|
||||
<li><a href="https://academic.oup.com/nar/article/43/W1/W331/2467935">Zambrano R, Conchillo-Sole O, Iglesias V, et al. PrionW: a server to identify proteins containing glutamine/asparagine rich prion-like domains and their amyloid cores. Nucleic Acids Res. 2015;43(W1):W331-W337. doi:10.1093/nar/gkv490</a></li>
|
||||
<li><a href="https://www.future-science.com/doi/10.4155/fso.15.39">Navarro S, Diaz-Caballero M, Illa R, Ventura S. Aggregation propensity of neuronal receptors: potential implications in neurodegenerative disorders. Future Sci OA. 2015;1(2):FSO39. Published 2015 Sep 1. doi:10.4155/fso.15.39</a></li>
|
||||
<li><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4076991/">Fraga H, Graña-Montes R, Illa R, Covaleda G, Ventura S. Association between foldability and aggregation propensity in small disulfide-rich proteins. Antioxid Redox Signal. 2014;21(3):368-383. doi:10.1089/ars.2013.5543</a></li>
|
||||
</ul>
|
|
@ -0,0 +1,28 @@
|
|||
{% with %}
|
||||
{% set headerid = "home-jumbotron" %}
|
||||
{% set title = "Ricard Illa's page" %}
|
||||
{% set subtitle = "My shamelessly self-referential page about me and myself" %}
|
||||
{% include "header.j2" %}
|
||||
{% endwith %}
|
||||
|
||||
<p>I am yet another random nerd on the internet. I am a
|
||||
computer nerd, a music nerd, a fermentation nerd and a beer
|
||||
nerd. I have an unhealthy tendency to dive down too many
|
||||
rabbit holes.</p>
|
||||
<p>Despite my original background being on biochemistry and
|
||||
bioinformatics, I am currently employed as a data
|
||||
engineer/backend developer.</p>
|
||||
<p>I am a free/libre and open source advocate and a DIY
|
||||
obsessive. I highly value technological sovereignty and
|
||||
personal privacy.</p>
|
||||
<p>I am a fan of music in general and of weird heavy shit
|
||||
in particular.</p>
|
||||
<p>I feel the most comfortable within *nix systems and find
|
||||
functional programming the most enjoyable.</p>
|
||||
<p><a href="../preferences">Here</a>’s a list of random
|
||||
trivial preferences of mine.</p>
|
||||
|
||||
{% with %}
|
||||
{% set note = "obvious disclaimer: any opinions expressed here are solely my own" %}
|
||||
{% include "footer.j2" %}
|
||||
{% endwith %}
|
|
@ -0,0 +1,52 @@
|
|||
{% with %}
|
||||
{% set page = "my preferences" %}
|
||||
{% set title = "My preferences" %}
|
||||
{% include "header.j2" %}
|
||||
{% endwith %}
|
||||
|
||||
<p>
|
||||
These are some trivial preferences of mine that may or may not be polemic.
|
||||
</p>
|
||||
<p>
|
||||
My preferred text editor is VIM (actually, I use neovim). At some point, I'd be
|
||||
willing to try Emacs, but right now I don't have enough time to properly learn
|
||||
and customize it. I'm probably already way too invested in VIM.
|
||||
</p>
|
||||
<p>
|
||||
I like Megadeth more than Metallica. I like Genesis's Peter Gabriel era more
|
||||
than the Phil Collins era. Dio was a much better singer than Ozzy, but I like
|
||||
the riffs and songs from the Ozzy era more. I prefer Mike Portnoy over Mike
|
||||
Mangini. I like Syd Barret and David Gilmour equally, but for different
|
||||
reasons.
|
||||
</p>
|
||||
<p>
|
||||
The two sounds the bring me the most joy are heavy guitars with fuzz and
|
||||
mellotrons.
|
||||
</p>
|
||||
<p>
|
||||
My favorite beer styles are Imperial Stouts, Barleywines and Scotch ales. I
|
||||
rarely drink IPAs outside of summer.
|
||||
</p>
|
||||
<p>
|
||||
I prefer functional programming over object-oriented programming. Out of all
|
||||
the programming languages I've tried, Haskell and Clojure are the ones that
|
||||
I've liked the most. Click <a href="{{ "BASE_URL" | env }}/preferences">here</a>
|
||||
to read my opinion on recursion.
|
||||
</p>
|
||||
<p>Xmonad is my favorite window manager. I like the
|
||||
<a href="https://github.com/morhetz/gruvbox">gruvbox</a> color scheme and the
|
||||
Inconsolata font.
|
||||
</p>
|
||||
<p>
|
||||
I use GNU/Linux as a daily driver. Mostly, because it's the most viable FLOSS
|
||||
desktop operating system. I may try some of the BSDs (OpenBSD being
|
||||
particularly attractive) at some point. I don't consider other free OSs (like
|
||||
Haiku, FreeDOS, ReactOS, Redox, TempleOS...) viable daily driver options for
|
||||
me, but playing with them in VMs is still fun. I don't consider non-free OSs as
|
||||
options (unless I'm forced to use them by my employer).
|
||||
</p>
|
||||
<p>
|
||||
Btw, I use arch.
|
||||
</p>
|
||||
|
||||
{% include "footer.j2" %}
|
|
@ -0,0 +1,7 @@
|
|||
.contacts {
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
dt {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
.job {
|
||||
padding: 5px;
|
||||
|
||||
dt .date {
|
||||
display: none;
|
||||
}
|
||||
|
||||
dd {
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
font-size: smaller;
|
||||
margin-bottom: 0px;
|
||||
li {
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
}
|
||||
.date {
|
||||
font-size: smaller;
|
||||
color: $light4;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.flex-jobs {
|
||||
justify-content: center;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
@import "variables";
|
||||
@import "style";
|
||||
@import "jobs";
|
||||
@import "contacts";
|
|
@ -0,0 +1,128 @@
|
|||
body {
|
||||
background-color: $dark0;
|
||||
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
color: $fg1;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
main {
|
||||
margin: 10px auto;
|
||||
max-width: 80%;
|
||||
.container {
|
||||
margin: auto;
|
||||
max-width: 95%;
|
||||
line-height: 1.8;
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
h1, h2 {
|
||||
font-weight: normal;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
em {
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: $secondary;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
#home-jumbotron {
|
||||
background-color: $dark1;
|
||||
text-align: center;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
border: 0px;
|
||||
|
||||
display: block;
|
||||
|
||||
h2 {
|
||||
font-size: 125%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
hr {
|
||||
border: none;
|
||||
height: 1px;
|
||||
background-color: $dark1;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $secondary;
|
||||
text-decoration: underline;
|
||||
&:hover {
|
||||
color: $secondary-light;
|
||||
}
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border-bottom: 1px;
|
||||
border-bottom-color: $gray;
|
||||
border-bottom-style: solid;
|
||||
width: 85%;
|
||||
margin: auto;
|
||||
|
||||
a {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
padding-top: 0px;
|
||||
color: $fg1;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
|
||||
&:hover {
|
||||
color: $primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.note {
|
||||
font-style: italic;
|
||||
color: $light4;
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
dl {
|
||||
display: grid;
|
||||
grid-column-gap: 0px;
|
||||
grid-template-columns: auto auto;
|
||||
margin: 10px;
|
||||
|
||||
dt {
|
||||
padding: 3px 10px;
|
||||
font-weight: normal;
|
||||
text-align: right;
|
||||
color: $light4;
|
||||
font-size: smaller;
|
||||
border-right: 1px solid $gray;
|
||||
}
|
||||
|
||||
dd {
|
||||
padding: 3px 10px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
color: $bright_purple;
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
$dark0_hard : #1d2021;
|
||||
$dark0 : #282828;
|
||||
$dark0_soft : #32302f;
|
||||
$dark1 : #3c3836;
|
||||
$dark2 : #504945;
|
||||
$dark3 : #665c54;
|
||||
$dark4 : #7c6f64;
|
||||
$dark4_256 : #7c6f64;
|
||||
|
||||
$gray_245 : #928374;
|
||||
|
||||
$light0_hard : #f9f5d7;
|
||||
$light0 : #fbf1c7;
|
||||
$light0_soft : #f2e5bc;
|
||||
$light1 : #ebdbb2;
|
||||
$light2 : #d5c4a1;
|
||||
$light3 : #bdae93;
|
||||
$light4 : #a89984;
|
||||
|
||||
$bright_red : #fb4934;
|
||||
$bright_green : #b8bb26;
|
||||
$bright_yellow : #fabd2f;
|
||||
$bright_blue : #83a598;
|
||||
$bright_purple : #d3869b;
|
||||
$bright_aqua : #8ec07c;
|
||||
$bright_orange : #fe8019;
|
||||
|
||||
$neutral_red : #cc241d;
|
||||
$neutral_green : #98971a;
|
||||
$neutral_yellow : #d79921;
|
||||
$neutral_blue : #458588;
|
||||
$neutral_purple : #b16286;
|
||||
$neutral_aqua : #689d6a;
|
||||
$neutral_orange : #d65d0e;
|
||||
|
||||
$faded_red : #9d0006;
|
||||
$faded_green : #79740e;
|
||||
$faded_yellow : #b57614;
|
||||
$faded_blue : #076678;
|
||||
$faded_purple : #8f3f71;
|
||||
$faded_aqua : #427b58;
|
||||
$faded_orange : #af3a03;
|
||||
|
||||
$is_dark : true;
|
||||
$contrast : "soft";
|
||||
|
||||
$bg0 : $dark0_soft; // soft
|
||||
//$bg0 : $dark0_hard; // hard
|
||||
//$bg0 : $dark0; // medium
|
||||
|
||||
$bg1 : $dark1;
|
||||
$bg2 : $dark2;
|
||||
$bg3 : $dark3;
|
||||
$bg4 : $dark4;
|
||||
|
||||
$gray : $gray_245;
|
||||
|
||||
$fg0 : $light0;
|
||||
$fg1 : $light1;
|
||||
$fg2 : $light2;
|
||||
$fg3 : $light3;
|
||||
$fg4 : $light4;
|
||||
|
||||
$red : $bright_red;
|
||||
$green : $bright_green;
|
||||
$yellow : $bright_yellow;
|
||||
$blue : $bright_blue;
|
||||
$purple : $bright_purple;
|
||||
$aqua : $bright_aqua;
|
||||
$orange : $bright_orange;
|
||||
|
||||
$primary: $neutral_blue;
|
||||
$primary-light: $bright_blue;
|
||||
$secondary: $neutral_aqua;
|
||||
$secondary-light: $bright_aqua;
|
Loading…
Reference in New Issue