├── cv ├── resume.out ├── adrian.jpg ├── adrian.png ├── resume.pdf ├── resume-es.pdf ├── stallman.jpg ├── fonts │ ├── FontAwesome.otf │ ├── Roboto-Bold.ttf │ ├── Roboto-Italic.ttf │ ├── Roboto-Light.ttf │ ├── Roboto-Medium.ttf │ ├── Roboto-Thin.ttf │ ├── Roboto-Regular.ttf │ ├── Roboto-BoldItalic.ttf │ ├── Roboto-LightItalic.ttf │ ├── Roboto-ThinItalic.ttf │ ├── SourceSansPro-Bold.otf │ ├── SourceSansPro-It.otf │ ├── Roboto-MediumItalic.ttf │ ├── SourceSansPro-BoldIt.otf │ ├── SourceSansPro-Light.otf │ ├── SourceSansPro-LightIt.otf │ ├── SourceSansPro-Regular.otf │ ├── SourceSansPro-Semibold.otf │ └── SourceSansPro-SemiboldIt.otf ├── resume.aux ├── resume-es.tex ├── resume.tex └── awesome-cv.cls ├── .gitignore ├── city.png ├── aguasal ├── static │ ├── mail.png │ ├── ppt.png │ ├── anrokku.png │ ├── conway.png │ ├── favicon.ico │ ├── favicon.png │ ├── kovel-1.png │ ├── kovel.png │ ├── lumtumo.png │ ├── mail1.png │ ├── mail2.png │ ├── mail3.png │ ├── resume.pdf │ ├── agromapa.png │ ├── anrokku-2.png │ ├── anrokku-3.png │ ├── kovelicon.png │ ├── mail-none.png │ ├── resume-es.pdf │ ├── resume_es.pdf │ ├── tergaxon.png │ ├── Rutaxruta2.png │ ├── Rutaxruta3.png │ ├── agromapa-1.png │ ├── agromapa-2.png │ ├── blenderkovel.png │ ├── divhttp-1.0.png │ ├── kovelhaiku.png │ ├── kovelrotate.png │ ├── mapaquizweb.png │ ├── Alata-Regular.ttf │ ├── coloragromapa.png │ ├── mozcleaner-1.1.png │ ├── InriaSerif-Bold.ttf │ ├── InriaSerif-Italic.ttf │ ├── anrokkumobile-1.png │ ├── anrokkumobile-2.png │ ├── mendelvectorizer.png │ ├── servermaildaemon.png │ ├── spacepipesbanner.png │ ├── superfreecell-1.png │ ├── superfreecell-2.png │ ├── InriaSerif-Regular.ttf │ ├── mapaquizolimpiadas.png │ ├── the-super-clock-1.0.png │ ├── scryer-prolog-meetup.jpeg │ ├── fonts.css │ ├── style.css │ └── tree.js ├── templates │ ├── page.html │ ├── project.html │ └── base.html └── pages │ ├── agromapa │ └── index.html │ ├── projects │ ├── keynotes │ │ └── index.html │ ├── lumtumo │ │ └── index.html │ ├── tergaxon │ │ └── index.html │ ├── open-source │ │ └── index.html │ ├── conway │ │ └── index.html │ ├── mapaquiz │ │ └── index.html │ ├── mendel-vectorizer │ │ └── index.html │ ├── superfreecell │ │ └── index.html │ ├── scryer-prolog │ │ └── index.html │ ├── firefox-addons │ │ └── index.html │ ├── blog │ │ └── index.html │ ├── webdev │ │ └── index.html │ ├── agromapa-cyl │ │ └── index.html │ ├── space-pipes │ │ └── index.html │ ├── rutaxruta │ │ └── index.html │ ├── anrokku │ │ └── index.html │ └── kovel │ │ └── index.html │ ├── landing │ └── send-to-mail │ │ └── index.html │ ├── index.html │ └── sierpinski │ └── index.html ├── obsolescencia-programada ├── img │ ├── CEMEX.jpg │ ├── Ghana.jpg │ └── pdf.svg ├── latex │ ├── obsolescencia-programada.azw3 │ ├── obsolescencia-programada.epub │ ├── obsolescencia-programada.mobi │ ├── obsolescencia-programada.pdf │ ├── Makefile │ └── obsolescencia-programada.latex ├── infografia │ └── ObsolescenciaProgramada.png ├── main.css ├── index.html └── LICENSE ├── literatura-adrianistani ├── LiteraturaAdrianistani.jpg ├── LiteraturaAdrianistani-small.jpg ├── LiteraturaAdrianistani-medium.jpg ├── index.html └── picturefill.min.js ├── justfile └── aguasal.pl /cv/resume.out: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | # Local Netlify folder 3 | .netlify 4 | -------------------------------------------------------------------------------- /city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/city.png -------------------------------------------------------------------------------- /cv/adrian.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/adrian.jpg -------------------------------------------------------------------------------- /cv/adrian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/adrian.png -------------------------------------------------------------------------------- /cv/resume.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/resume.pdf -------------------------------------------------------------------------------- /cv/resume-es.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/resume-es.pdf -------------------------------------------------------------------------------- /cv/stallman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/stallman.jpg -------------------------------------------------------------------------------- /aguasal/static/mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mail.png -------------------------------------------------------------------------------- /aguasal/static/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/ppt.png -------------------------------------------------------------------------------- /aguasal/static/anrokku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/anrokku.png -------------------------------------------------------------------------------- /aguasal/static/conway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/conway.png -------------------------------------------------------------------------------- /aguasal/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/favicon.ico -------------------------------------------------------------------------------- /aguasal/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/favicon.png -------------------------------------------------------------------------------- /aguasal/static/kovel-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/kovel-1.png -------------------------------------------------------------------------------- /aguasal/static/kovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/kovel.png -------------------------------------------------------------------------------- /aguasal/static/lumtumo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/lumtumo.png -------------------------------------------------------------------------------- /aguasal/static/mail1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mail1.png -------------------------------------------------------------------------------- /aguasal/static/mail2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mail2.png -------------------------------------------------------------------------------- /aguasal/static/mail3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mail3.png -------------------------------------------------------------------------------- /aguasal/static/resume.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/resume.pdf -------------------------------------------------------------------------------- /cv/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /cv/fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /cv/fonts/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-Italic.ttf -------------------------------------------------------------------------------- /cv/fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /cv/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /cv/fonts/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-Thin.ttf -------------------------------------------------------------------------------- /aguasal/static/agromapa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/agromapa.png -------------------------------------------------------------------------------- /aguasal/static/anrokku-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/anrokku-2.png -------------------------------------------------------------------------------- /aguasal/static/anrokku-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/anrokku-3.png -------------------------------------------------------------------------------- /aguasal/static/kovelicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/kovelicon.png -------------------------------------------------------------------------------- /aguasal/static/mail-none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mail-none.png -------------------------------------------------------------------------------- /aguasal/static/resume-es.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/resume-es.pdf -------------------------------------------------------------------------------- /aguasal/static/resume_es.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/resume_es.pdf -------------------------------------------------------------------------------- /aguasal/static/tergaxon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/tergaxon.png -------------------------------------------------------------------------------- /cv/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /aguasal/static/Rutaxruta2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/Rutaxruta2.png -------------------------------------------------------------------------------- /aguasal/static/Rutaxruta3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/Rutaxruta3.png -------------------------------------------------------------------------------- /aguasal/static/agromapa-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/agromapa-1.png -------------------------------------------------------------------------------- /aguasal/static/agromapa-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/agromapa-2.png -------------------------------------------------------------------------------- /aguasal/static/blenderkovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/blenderkovel.png -------------------------------------------------------------------------------- /aguasal/static/divhttp-1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/divhttp-1.0.png -------------------------------------------------------------------------------- /aguasal/static/kovelhaiku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/kovelhaiku.png -------------------------------------------------------------------------------- /aguasal/static/kovelrotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/kovelrotate.png -------------------------------------------------------------------------------- /aguasal/static/mapaquizweb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mapaquizweb.png -------------------------------------------------------------------------------- /cv/fonts/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /cv/fonts/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /cv/fonts/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-Bold.otf -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-It.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-It.otf -------------------------------------------------------------------------------- /aguasal/static/Alata-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/Alata-Regular.ttf -------------------------------------------------------------------------------- /aguasal/static/coloragromapa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/coloragromapa.png -------------------------------------------------------------------------------- /aguasal/static/mozcleaner-1.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mozcleaner-1.1.png -------------------------------------------------------------------------------- /cv/fonts/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-BoldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-BoldIt.otf -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-Light.otf -------------------------------------------------------------------------------- /aguasal/static/InriaSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/InriaSerif-Bold.ttf -------------------------------------------------------------------------------- /aguasal/static/InriaSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/InriaSerif-Italic.ttf -------------------------------------------------------------------------------- /aguasal/static/anrokkumobile-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/anrokkumobile-1.png -------------------------------------------------------------------------------- /aguasal/static/anrokkumobile-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/anrokkumobile-2.png -------------------------------------------------------------------------------- /aguasal/static/mendelvectorizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mendelvectorizer.png -------------------------------------------------------------------------------- /aguasal/static/servermaildaemon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/servermaildaemon.png -------------------------------------------------------------------------------- /aguasal/static/spacepipesbanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/spacepipesbanner.png -------------------------------------------------------------------------------- /aguasal/static/superfreecell-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/superfreecell-1.png -------------------------------------------------------------------------------- /aguasal/static/superfreecell-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/superfreecell-2.png -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-LightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-LightIt.otf -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-Regular.otf -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-Semibold.otf -------------------------------------------------------------------------------- /aguasal/static/InriaSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/InriaSerif-Regular.ttf -------------------------------------------------------------------------------- /aguasal/static/mapaquizolimpiadas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/mapaquizolimpiadas.png -------------------------------------------------------------------------------- /aguasal/static/the-super-clock-1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/the-super-clock-1.0.png -------------------------------------------------------------------------------- /cv/fonts/SourceSansPro-SemiboldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/cv/fonts/SourceSansPro-SemiboldIt.otf -------------------------------------------------------------------------------- /obsolescencia-programada/img/CEMEX.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/img/CEMEX.jpg -------------------------------------------------------------------------------- /obsolescencia-programada/img/Ghana.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/img/Ghana.jpg -------------------------------------------------------------------------------- /aguasal/static/scryer-prolog-meetup.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/aguasal/static/scryer-prolog-meetup.jpeg -------------------------------------------------------------------------------- /aguasal/templates/page.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 |
4 | {% block body %}{% endblock %} 5 |
6 | {% endblock %} -------------------------------------------------------------------------------- /literatura-adrianistani/LiteraturaAdrianistani.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/literatura-adrianistani/LiteraturaAdrianistani.jpg -------------------------------------------------------------------------------- /literatura-adrianistani/LiteraturaAdrianistani-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/literatura-adrianistani/LiteraturaAdrianistani-small.jpg -------------------------------------------------------------------------------- /literatura-adrianistani/LiteraturaAdrianistani-medium.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/literatura-adrianistani/LiteraturaAdrianistani-medium.jpg -------------------------------------------------------------------------------- /obsolescencia-programada/latex/obsolescencia-programada.azw3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/latex/obsolescencia-programada.azw3 -------------------------------------------------------------------------------- /obsolescencia-programada/latex/obsolescencia-programada.epub: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/latex/obsolescencia-programada.epub -------------------------------------------------------------------------------- /obsolescencia-programada/latex/obsolescencia-programada.mobi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/latex/obsolescencia-programada.mobi -------------------------------------------------------------------------------- /obsolescencia-programada/latex/obsolescencia-programada.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/latex/obsolescencia-programada.pdf -------------------------------------------------------------------------------- /obsolescencia-programada/infografia/ObsolescenciaProgramada.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarroyoc/adrianistan.eu/master/obsolescencia-programada/infografia/ObsolescenciaProgramada.png -------------------------------------------------------------------------------- /obsolescencia-programada/latex/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | pdflatex obsolescencia-programada.latex 3 | clean: 4 | rm obsolescencia-programada.pdf 5 | rm obsolescencia-programada.aux 6 | rm obsolescencia-programada.log 7 | -------------------------------------------------------------------------------- /aguasal/pages/agromapa/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../templates/page.html" %} 2 | {% block title %}Agromapa{% endblock %} 3 | {% block body %} 4 | 7 | {% endblock %} -------------------------------------------------------------------------------- /aguasal/static/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face{ 2 | font-family: Alata; 3 | src: url("Alata-Regular.ttf") format("truetype"); 4 | } 5 | 6 | @font-face{ 7 | font-family: InriaSerif; 8 | src: url("InriaSerif-Regular.ttf") format("truetype"); 9 | } -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- 1 | default: clean build 2 | 3 | build: 4 | scryer-prolog -g 'run("aguasal", "output"),halt' aguasal.pl 5 | cp -r obsolescencia-programada output/ 6 | 7 | upload: 8 | netlify deploy --prod 9 | 10 | clean: 11 | rm -rf output 12 | -------------------------------------------------------------------------------- /aguasal/templates/project.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block title %}{% block name %}{% endblock %}{% endblock %} 3 | {% block content %} 4 |

{% block name %}{% endblock %}

5 | {% block website %}{% endblock %} 6 | {% block description %}{% endblock %} 7 | {% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/keynotes/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Keynotes{% endblock %} 3 | {% block description %} 4 | 5 |

On that website, I collect all the keynotes I've done. Most of them are in Spanish.

6 | 7 | ppt 8 | {% endblock %} 9 | {% block website %}http://ppt.adrianistan.eu/{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/lumtumo/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Lumtumo{% endblock %} 3 | {% block description %} 4 | 5 |

Lumtumo is a 3D space shooter, a clone of space invaders.

6 | 7 | Lumtumo 8 | {% endblock %} 9 | {% block website %}https://bitbucket.org/AdrianArroyoCalle/lumtumo{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/tergaxon/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Tergaxon{% endblock %} 3 | {% block description %}

Tergaxon is a games website. All games hosted there are playable in the browser, using a HTML5 compatible browser.

4 | 5 | Tergaxon main page 6 | {% endblock %} 7 | {% block website %}https://github.com/aarroyoc/tergaxon{% endblock %} 8 | -------------------------------------------------------------------------------- /aguasal/pages/projects/open-source/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Open Source{% endblock %} 3 | {% block description %} 4 | 5 |

I've contributed to several open source projects, in no particular order:

6 | 12 | {% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/conway/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Conway{% endblock %} 3 | {% block description %} 4 | 5 |

Conway is a Conway's Game of Life implementation in C#, using the Hashlife algorithm and the Avalonia UI framework.

6 | 7 |

It runs under Linux and Windows.

8 | 9 | Conway example 10 | 11 | {% endblock %} 12 | {% block website %}https://github.com/aarroyoc/Conway{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/mapaquiz/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Mapaquiz{% endblock %} 3 | {% block description %} 4 |

Mapaquiz is a website to learn while playing mapaquizs. What is a mapaquiz? A mapaquiz is a quiz game where the answers is in a map. You can play the already created mapaquizs or you can create your own mapaquizs and publish them.

5 | Front page of Mapaquiz 6 | Playing mapaquiz 7 | {% endblock %} 8 | {% block website %}https://mapaquiz.com{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/mendel-vectorizer/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Mendel Vectorizer{% endblock %} 3 | {% block description %} 4 | 5 |

Mendel Vectorizer is a Rust program that allows doing simple vectorization of black/white raster shapes. You only need to select some points in the shape, and the algorithm will try to join the points using Bezier curves. It's a genetic algorithm.

6 | 7 | 8 | Mendel Vectorizer 9 | {% endblock %} 10 | {% block website %}https://github.com/aarroyoc/mendel-vectorizer{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/superfreecell/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}SuperFreecell{% endblock %} 3 | {% block description %} 4 |

SuperFreeCell is a Freecell game for Haiku and BeOS. It was done as part of Google Code-In 2014.

5 | 6 |

Post about it in Gaming on Haiku

7 | 8 | SuperFreeCell 1 9 | SuperFreeCell 2 10 | {% endblock %} 11 | {% block website %}https://github.com/aarroyoc/SuperFreeCell{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/scryer-prolog/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Scryer Prolog{% endblock %} 3 | {% block description %} 4 |

Scryer Prolog is a modern ISO Prolog system created by Mark Thom. I collaborate with the project in several areas:

5 | 10 |

If you haven't tried Scryer Prolog, don't waste your time and do it!

11 | {% endblock %} 12 | {% block website %}https://www.scryer.pl{% endblock %} 13 | -------------------------------------------------------------------------------- /aguasal/pages/projects/firefox-addons/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Firefox Addons{% endblock %} 3 | {% block description %} 4 | 5 |

For a long time, I was building addons for Firefox, Thunderbird, SeaMonkey and lastly Chrome. Nowadays, most of them are not compatible with modern Firefox, but some of them were successful like Google+ Share, Send to Mail or El Tiempo en España.

6 | 7 | DivHTTP 8 | mozCleaner 9 | The Super Clock 10 | {% endblock %} 11 | {% block website %}https://github.com/aarroyoc/firefox-addons{% endblock %} -------------------------------------------------------------------------------- /cv/resume.aux: -------------------------------------------------------------------------------- 1 | \relax 2 | \providecommand\hyper@newdestlabel[2]{} 3 | \providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} 4 | \HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined 5 | \global\let\oldcontentsline\contentsline 6 | \gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} 7 | \global\let\oldnewlabel\newlabel 8 | \gdef\newlabel#1#2{\newlabelxx{#1}#2} 9 | \gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} 10 | \AtEndDocument{\ifx\hyper@anchor\@undefined 11 | \let\contentsline\oldcontentsline 12 | \let\newlabel\oldnewlabel 13 | \fi} 14 | \fi} 15 | \global\let\hyper@last\relax 16 | \gdef\HyperFirstAtBeginDocument#1{#1} 17 | \providecommand*\HyPL@Entry[1]{} 18 | \HyPL@Entry{0<>} 19 | \gdef \@abspage@last{2} 20 | -------------------------------------------------------------------------------- /aguasal/pages/projects/blog/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Blog{% endblock %} 3 | {% block description %} 4 |

Since 2015 I have a blog talking about programming and software, and some offtopic. I write in Spanish and the CMS is custom made, currently called Diario made in Rust with Rocket and Diesel.

5 | 6 |

Some of the code example of the blog are hosted also on GitHub: https://github.com/aarroyoc/blog-ejemplos.

7 | 8 |

Previous iterations of the blog run under Blogger, Jekyll and self-hosted WordPress.

9 | {% endblock %} 10 | {% block website %}https://blog.adrianistan.eu{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/landing/send-to-mail/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/page.html" %} 2 | {% block title %}Send to Mail{% endblock %} 3 | {% block body %} 4 |

Thanks for downloading Send to Mail, available for Firefox, Chrome, Edge and Opera. Check out some more projects if you want. If you have any problem, don't hesitate to contact me.

5 | 6 | Send to Mail 1 7 | Send to Mail 2 8 | Send to Mail 3 9 | Send to Mail 4 10 | Send to Mail 5 11 | Send to Mail 6 12 | 13 |

Gracias por descargar Send to Mail, disponible para Firefox, Chrome, Edge y Opera. Revisa algunos de mis otros proyectos. Si tienes algún problema, no dudes en contactarme.

14 | {% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/webdev/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Webdev{% endblock %} 3 | {% block description %} 4 |

Some other minor pages that I've created or coauthored, some of them are not actively mantained:

5 | 11 | 12 |

Some already retired sites:

13 | 21 | {% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/agromapa-cyl/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Agromapa CyL{% endblock %} 3 | {% block description %} 4 | 5 |

Agromapa Castilla y León is an interactive data visualization that shows the agricultural situation of Castilla y León. It was presented as part of a regional hackathon, winning a special mention. Uses D3 data visualization. It was featured at national level also

6 | 7 |

How was made (Spanish)

8 | 9 | Color AgroMapa 10 | AgroMapa 11 | AgroMapa 1 12 | AgroMapa 2 13 | {% endblock %} 14 | {% block website %}http://adrianistan.eu/agromapa/{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/space-pipes/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Space Pipes{% endblock %} 3 | {% block description %} 4 |

Space Pipes is a puzzle game for web and Android platforms. To win the game you must join all the pieces together so that they're connected to the center piece. To achieve that you can rotate the pieces as you want. There are two modes: square grid and hexagonal grid.

5 | 6 | SpacePipes image 7 | 8 | 9 | {% endblock %} 10 | {% block website %}https://space-pipes.adrianistan.eu{% endblock %} -------------------------------------------------------------------------------- /aguasal/pages/projects/rutaxruta/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Ruta x Ruta{% endblock %} 3 | {% block description %} 4 |

Ruta x Ruta x Castilla y León is an open data project. Winner of the Open Data Contest of Castilla y León (2021) in students category. It's a webapp that shows you routes and automatically searches interesting points around you.

5 | 6 |

It also allows the user to submit GPS tracks and analyze them (map, altimeter, metrics, ...)

7 | 8 | See route 9 | See track 10 | 11 | 12 | {% endblock %} 13 | {% block website %}https://rutaxruta.com{% endblock %} -------------------------------------------------------------------------------- /aguasal/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% block title %}{% endblock %} — Adrián Arroyo Calle 9 | 10 | 11 | 21 |
22 |

{% block title %}{% endblock %}

23 |
24 | {% block content %}{% endblock %} 25 |
26 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /aguasal/pages/projects/anrokku/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Anrokku{% endblock %} 3 | {% block description %} 4 | 5 |

Anrokku is a puzzle game based on the Rush Hour boardgame. It has two versions:

6 | 10 | 11 |

Desktop

12 | Main menu 13 | In Game 14 | End screen 15 |

Mobile

16 | Mobile 1 17 | Mobile 2 18 | {% endblock %} 19 | {% block website %}https://anrokku.adrianistan.eu{% endblock %} 20 | -------------------------------------------------------------------------------- /obsolescencia-programada/main.css: -------------------------------------------------------------------------------- 1 | body{ 2 | text-align: center; 3 | background-image: url("img/CEMEX.jpg"); 4 | background-size: cover; 5 | background-repeat: no-repeat; 6 | } 7 | h1{ 8 | font-family: 'Black Ops One', cursive; 9 | font-size: 50px; 10 | color: white; 11 | border-color: bisque; 12 | text-shadow: -5px 0 black, 0 1px black, 1px 0 black, 0 -1px black; 13 | text-transform: uppercase; 14 | } 15 | 16 | h2{ 17 | font-family: 'Anton', sans-serif; 18 | } 19 | h3{ 20 | font-family: 'Anton', sans-serif; 21 | } 22 | footer{ 23 | font-style: italic; 24 | } 25 | @media(max-width: 800px){ 26 | body{ 27 | margin-left: 10%; 28 | margin-right: 10%; 29 | } 30 | } 31 | @media(min-width: 801px){ 32 | body{ 33 | margin-left: 20%; 34 | margin-right: 20%; 35 | } 36 | } 37 | 38 | #preguntas{ 39 | border-style: solid; 40 | background-color: rgba(255,255,255,0.5); 41 | font-style: italic; 42 | font-size: 20px; 43 | } 44 | 45 | #disqus{ 46 | background-color: rgba(255,255,255,0.8); 47 | } 48 | -------------------------------------------------------------------------------- /aguasal/pages/projects/kovel/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../../templates/project.html" %} 2 | {% block name %}Kovel{% endblock %} 3 | {% block description %} 4 | 5 |

Kovel is a 3D voxel editor for Haiku, Linux and Windows. Create fantastic models without knowledge. Just fill the grid with your colors! Save your models in Kovel file (*.kvl) or in COLLADA DAE (only export). See changes in your models in realtime, rotate and scale. Kovel also has infinite undo history (in a same file). Kovel has a command line tool (kovelcli) to automate your work pipeline. Convert all your Kovel files into Collada DAE in a few commands.

6 | 7 |

It uses wxWidgets, OpenGL and libbson and it's made in C++.

8 | 9 | kovel.png 10 | Kovel 1 11 | Icon made in Kovel 12 | Rotate models in Kovel 13 | Kovel on Haiku 14 | Blender editing 15 | {% endblock %} 16 | {% block website %}http://github.com/aarroyoc/kovel{% endblock %} -------------------------------------------------------------------------------- /aguasal/static/style.css: -------------------------------------------------------------------------------- 1 | body{ 2 | font-family: InriaSerif; 3 | display: flex; 4 | margin: 0; 5 | padding: 0; 6 | } 7 | h1, h2, h3, h4, h5, h6{ 8 | font-family: Alata; 9 | } 10 | nav{ 11 | flex: 1; 12 | display: flex; 13 | flex-direction: column; 14 | border-right: solid 10px #2691FF; 15 | } 16 | @media(max-width: 500px){ 17 | body{ 18 | flex-direction: column; 19 | } 20 | nav{ 21 | order: 2; 22 | } 23 | main{ 24 | order: 1; 25 | } 26 | } 27 | .list-item{ 28 | margin-top: 25px; 29 | margin-bottom: 25px; 30 | text-align: center; 31 | } 32 | .list-item-link{ 33 | color: black; 34 | font-family: Alata; 35 | font-size: 18pt; 36 | text-decoration: none; 37 | } 38 | main{ 39 | flex: 4; 40 | border-left: solid 10px white; 41 | } 42 | /* Hobby table */ 43 | .hobby-table{ 44 | display: flex; 45 | flex-direction: column; 46 | flex-wrap: wrap; 47 | } 48 | .hobby-row{ 49 | flex: 1; 50 | display: flex; 51 | flex-wrap: wrap; 52 | flex-direction: row; 53 | justify-content: center; 54 | } 55 | .hobby-row span { 56 | color: white; 57 | font-family: Alata; 58 | background-color: #2691FF; 59 | margin: 7px; 60 | padding-top: 3px; 61 | padding-left: 7px; 62 | padding-right: 7px; 63 | padding-bottom: 3px; 64 | border-radius: 5px; 65 | } 66 | 67 | /* Canvas */ 68 | .canvas{ 69 | text-align: center; 70 | } 71 | #canvas{ 72 | width: 300px; 73 | height: 300px; 74 | } 75 | 76 | /* Img */ 77 | img{ 78 | max-width: 95%; 79 | } -------------------------------------------------------------------------------- /aguasal/static/tree.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var ctx; 4 | var color; 5 | var colorList = [63,1,21,112,176,240,277,323]; 6 | 7 | function $(id){ 8 | return document.querySelector(id); 9 | } 10 | 11 | function rand(min,max){ 12 | return Math.random()*(max-min)+min; 13 | } 14 | 15 | function drawBranch(startX,startY,len,angle,branchWidth,hsl){ 16 | ctx.beginPath(); 17 | ctx.save(); 18 | 19 | ctx.strokeStyle = "hsl("+color+",100%,"+hsl+"%)"; 20 | ctx.lineWidth = branchWidth; 21 | ctx.translate(startX,startY); 22 | ctx.rotate(angle* Math.PI/180); 23 | ctx.moveTo(0,0); 24 | ctx.lineTo(0,-len); 25 | ctx.stroke(); 26 | 27 | if(len < 5){ 28 | ctx.restore(); 29 | return; 30 | } 31 | 32 | var factor = rand(0.6,0.9); 33 | //var factor = 0.7; 34 | var angle = rand(-30,0); 35 | //var angle = -90; 36 | drawBranch(0, -len, len*factor, angle,branchWidth*factor,hsl*1.2); 37 | factor = rand(0.6,0.9); 38 | //factor = 0.7; 39 | angle = rand(0,30); 40 | //angle = 90; 41 | drawBranch(0, -len, len*factor, angle,branchWidth*factor,hsl*1.2); 42 | 43 | ctx.restore(); 44 | } 45 | 46 | function main(){ 47 | var canvas = $("#canvas"); 48 | ctx = canvas.getContext("2d"); 49 | var width = canvas.width; 50 | var height = canvas.height; 51 | color = colorList[Math.floor(rand(0,colorList.length))]; 52 | //$(".text").style.backgroundColor = "hsl("+color+",100%,90%)"; 53 | //$(".text").style.borderColor = "hsl("+color+",100%,20%)"; 54 | drawBranch(width/2,height,150,0,10,10); 55 | } 56 | 57 | window.addEventListener("load",main); 58 | -------------------------------------------------------------------------------- /aguasal/pages/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../templates/page.html" %} 2 | {% block title %}Adrián Arroyo Calle{% endblock %} 3 | {% block body %} 4 | 5 |
6 | Photo of Adrián Arroyo Calle in Düsseldorf during the Scryer Prolog Meetup 2023 7 |
8 | 9 |

My name is Adrián Arroyo Calle, I'm a computer scientist from Valladolid, Spain. I'm working at Telefónica as backend developer, with a devops mindset. I also teach some classes at Valladolid University. I'm very curious about the world, always looking for the not-so-known things. This is the entry point to my Internet home. When I grow up I want to be an Illuminati.

10 | 11 |

大家好!我叫Adrian. 我是电脑的工程师,住在Valladolid (西班牙)。我在Telefónica工作。我也是中文学生!

12 | 13 |
If everybody thinks the same, then somebody isn't thinking.
14 | 15 |

Use the left bar to navigate between projects.

16 | 17 |

Interests and hobbies

18 | 19 |

These are some things, but not all, that I'm interested in:

20 |
21 |
22 | prolog 23 | history 24 | rust 25 | devops 26 |
27 |
28 | databases 29 | biking 30 | javascript 31 | webdev 32 |
33 |
34 | gamedev 35 | emacs 36 | music 37 | maps 38 |
39 |
40 | philosophy 41 | travel 42 | scuba 43 | kotlin 44 |
45 |
46 | 47 |

Resume

48 | 49 |

You can download my resume here.

50 | 51 |

Contact me

52 | 53 | 61 | 62 |
63 | 64 |
65 | 66 | {% endblock %} 67 | -------------------------------------------------------------------------------- /aguasal/pages/sierpinski/index.html: -------------------------------------------------------------------------------- 1 | {% extends "../../templates/page.html" %} 2 | {% block title %}Sierpinski{% endblock %} 3 | {% block body %} 4 | {% raw %} 5 |
6 | 7 |
8 | 27 | 97 | {% endraw %} 98 | {% endblock %} -------------------------------------------------------------------------------- /aguasal.pl: -------------------------------------------------------------------------------- 1 | :- use_module(library(charsio)). 2 | :- use_module(library(files)). 3 | :- use_module(library(format)). 4 | :- use_module(library(lists)). 5 | 6 | :- use_module('../teruel/teruel.pl'). 7 | 8 | 9 | project("Blog", "/projects/blog/"). 10 | project("Scryer Prolog", "/projects/scryer-prolog/"). 11 | project("Agromapa CyL", "/projects/agromapa-cyl/"). 12 | project("Anrokku", "/projects/anrokku/"). 13 | project("Conway", "/projects/conway/"). 14 | project("Firefox Addons", "/projects/firefox-addons/"). 15 | project("Keynotes", "/projects/keynotes/"). 16 | project("Kovel", "/projects/kovel/"). 17 | project("Lumtumo", "/projects/lumtumo/"). 18 | project("Mapaquiz", "/projects/mapaquiz/"). 19 | project("Mendel Vectorizer", "/projects/mendel-vectorizer/"). 20 | project("Open source", "/projects/open-source/"). 21 | project("Ruta x ruta", "/projects/rutaxruta/"). 22 | project("Space Pipes", "/projects/space-pipes/"). 23 | project("SuperFreeCell", "/projects/superfreecell/"). 24 | project("Tergaxon", "/projects/tergaxon/"). 25 | project("Webdev", "/projects/webdev/"). 26 | 27 | run(Input, Output) :- 28 | portray_clause(aguasal(1:0:0)), 29 | portray_clause(input_directory(Input)), 30 | if_not_then(directory_exists(Output), make_directory(Output)), 31 | portray_clause(output_dir(Output)), 32 | copy_static_files(Input, Output), 33 | render_files(Input, Output). 34 | 35 | copy_static_files(Input, Output) :- 36 | append_path(Input, "static", InputStatic), 37 | directory_exists(InputStatic), 38 | directory_files(InputStatic, Files), 39 | maplist(copy_file(InputStatic, Output), Files). 40 | 41 | copy_file(Input, Output, File) :- 42 | append_path(Input, File, InputFile), 43 | append_path(Output, File, OutputFile), 44 | portray_clause(copy_file(InputFile, OutputFile)), 45 | open(InputFile, read, StreamIn, [type(binary)]), 46 | open(OutputFile, write, StreamOut, [type(binary)]), 47 | get_n_chars(StreamIn, _, FileContent), 48 | '$put_chars'(StreamOut, FileContent), 49 | close(StreamOut), 50 | close(StreamIn). 51 | 52 | render_files(Input, Output) :- 53 | append_path(Input, "pages", InputPages), 54 | directory_exists(InputPages), 55 | directory_files(InputPages, Pages), 56 | maplist(render_file(InputPages, Output), Pages). 57 | 58 | render_file(Input, Output, Page) :- 59 | append_path(Input, Page, InputPage), 60 | file_exists(InputPage), 61 | append_path(Output, Page, OutputPage), 62 | portray_clause(render_file(InputPage, OutputPage)), 63 | findall(Project, (project(Text, Link), Project = ["text"-Text, "link"-Link]), Projects), 64 | render(InputPage, ["projects"-Projects], RenderPage), 65 | open(OutputPage, write, Stream), 66 | format(Stream, "~s", [RenderPage]), 67 | close(Stream). 68 | 69 | render_file(Input, Output, Page) :- 70 | append_path(Input, Page, InputPage), 71 | directory_exists(InputPage), 72 | append_path(Output, Page, OutputPage), 73 | if_not_then(directory_exists(OutputPage), make_directory(OutputPage)), 74 | directory_files(InputPage, Files), 75 | maplist(render_file(InputPage, OutputPage), Files). 76 | 77 | 78 | if_then(Condition, Then) :- 79 | ( Condition -> Then ; true ). 80 | 81 | if_not_then(Condition, Then) :- 82 | ( Condition -> true ; Then ). 83 | 84 | append_path(X, Y, Z) :- 85 | path_segments(X, XS), 86 | path_segments(Y, YS), 87 | append(XS, YS, ZS), 88 | path_segments(Z, ZS). 89 | -------------------------------------------------------------------------------- /literatura-adrianistani/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Literatura Adrianistaní 5 | 6 | 7 | 8 | 9 | 43 | 44 | 45 |

Literatura Adrianistaní

46 | 47 | 48 | 49 | Portada de Literatura Adrianistaní 50 | 51 |

Descripción

52 |

53 | En este pequeño libro están escritos los mejores relatos, compuestos de la mejor creatividad, y en ellos, hacemos lo posible por transportaros a la más inimaginable realidad para que al menos por un ratito os hagamos sentir irreales, y a la vez igual de dichosos que nosotros nos sentimos al presentar esta colección. Disfrutadlo. 54 |

55 |

Ficha técnica

56 |

57 | Autores: y Raúl Izquierdo Buznego
58 | Fecha de publicación:
59 | Precio: 3 € 60 |

61 |

¿Dónde comprar?

62 | 74 |

Donativos

75 |
76 | 77 | 78 | 79 | 80 |
81 |
82 | 83 | 84 | 89 | 90 | 100 | 103 | 104 | 105 |
106 | 107 | 108 | -------------------------------------------------------------------------------- /obsolescencia-programada/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Obsolescencia Programada 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

OBSOLESCENCIA PROGRAMADA

15 |

Obtenga todas las claves

16 | 17 |
18 | ¿Por qué cada vez las lavadoras se estropean antes? ¿Cómo es que los productos se estropean al poco de agotarse la garantía? ¿Qué repercusiones económicas tiene? ¿Y medioambientales? ¿Desde cuando es así? 19 |
20 |
21 | 22 |
23 |
24 |
25 | 26 | 27 |
28 |
29 | Infografía sobre Obsolescencia Programada 30 |
31 | Descargar PNG 32 | Descargar SVG 33 |
34 |
35 |

Ebook

36 | Descargar PDF Descargar PDF sobre la obsolescencia programada 37 |
38 | Descargar EPUB 39 |
40 | Descargar MOBI 41 |
42 | Descargar AZW3 43 |
44 | Descargar LaTeX 45 |
46 |
47 | 48 |
49 |
50 |
51 | 52 | 53 |
54 |
55 |
56 |
57 |
58 | 68 |
69 |
70 |
71 |
72 | 73 | 74 | 82 | 85 | 92 | 93 | 100 |
101 | 109 | 110 | 111 |
112 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /literatura-adrianistani/picturefill.min.js: -------------------------------------------------------------------------------- 1 | /*! Picturefill - v2.3.1 - 2015-04-09 2 | * http://scottjehl.github.io/picturefill 3 | * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT */ 4 | window.matchMedia||(window.matchMedia=function(){"use strict";var a=window.styleMedia||window.media;if(!a){var b=document.createElement("style"),c=document.getElementsByTagName("script")[0],d=null;b.type="text/css",b.id="matchmediajs-test",c.parentNode.insertBefore(b,c),d="getComputedStyle"in window&&window.getComputedStyle(b,null)||b.currentStyle,a={matchMedium:function(a){var c="@media "+a+"{ #matchmediajs-test { width: 1px; } }";return b.styleSheet?b.styleSheet.cssText=c:b.textContent=c,"1px"===d.width}}}return function(b){return{matches:a.matchMedium(b||"all"),media:b||"all"}}}()),function(a,b,c){"use strict";function d(b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b:"function"==typeof define&&define.amd&&define("picturefill",function(){return b}),"object"==typeof a&&(a.picturefill=b)}function e(a){var b,c,d,e,f,i=a||{};b=i.elements||g.getAllElements();for(var j=0,k=b.length;k>j;j++)if(c=b[j],d=c.parentNode,e=void 0,f=void 0,"IMG"===c.nodeName.toUpperCase()&&(c[g.ns]||(c[g.ns]={}),i.reevaluate||!c[g.ns].evaluated)){if(d&&"PICTURE"===d.nodeName.toUpperCase()){if(g.removeVideoShim(d),e=g.getMatch(c,d),e===!1)continue}else e=void 0;(d&&"PICTURE"===d.nodeName.toUpperCase()||!g.sizesSupported&&c.srcset&&h.test(c.srcset))&&g.dodgeSrcset(c),e?(f=g.processSourceSet(e),g.applyBestCandidate(f,c)):(f=g.processSourceSet(c),(void 0===c.srcset||c[g.ns].srcset)&&g.applyBestCandidate(f,c)),c[g.ns].evaluated=!0}}function f(){function c(){clearTimeout(d),d=setTimeout(h,60)}g.initTypeDetects(),e();var d,f=setInterval(function(){return e(),/^loaded|^i|^c/.test(b.readyState)?void clearInterval(f):void 0},250),h=function(){e({reevaluate:!0})};a.addEventListener?a.addEventListener("resize",c,!1):a.attachEvent&&a.attachEvent("onresize",c)}if(a.HTMLPictureElement)return void d(function(){});b.createElement("picture");var g=a.picturefill||{},h=/\s+\+?\d+(e\d+)?w/;g.ns="picturefill",function(){g.srcsetSupported="srcset"in c,g.sizesSupported="sizes"in c,g.curSrcSupported="currentSrc"in c}(),g.trim=function(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")},g.makeUrl=function(){var a=b.createElement("a");return function(b){return a.href=b,a.href}}(),g.restrictsMixedContent=function(){return"https:"===a.location.protocol},g.matchesMedia=function(b){return a.matchMedia&&a.matchMedia(b).matches},g.getDpr=function(){return a.devicePixelRatio||1},g.getWidthFromLength=function(a){var c;if(!a||a.indexOf("%")>-1!=!1||!(parseFloat(a)>0||a.indexOf("calc(")>-1))return!1;a=a.replace("vw","%"),g.lengthEl||(g.lengthEl=b.createElement("div"),g.lengthEl.style.cssText="border:0;display:block;font-size:1em;left:0;margin:0;padding:0;position:absolute;visibility:hidden",g.lengthEl.className="helper-from-picturefill-js"),g.lengthEl.style.width="0px";try{g.lengthEl.style.width=a}catch(d){}return b.body.appendChild(g.lengthEl),c=g.lengthEl.offsetWidth,0>=c&&(c=!1),b.body.removeChild(g.lengthEl),c},g.detectTypeSupport=function(b,c){var d=new a.Image;return d.onerror=function(){g.types[b]=!1,e()},d.onload=function(){g.types[b]=1===d.width,e()},d.src=c,"pending"},g.types=g.types||{},g.initTypeDetects=function(){g.types["image/jpeg"]=!0,g.types["image/gif"]=!0,g.types["image/png"]=!0,g.types["image/svg+xml"]=b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"),g.types["image/webp"]=g.detectTypeSupport("image/webp","data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=")},g.verifyTypeSupport=function(a){var b=a.getAttribute("type");if(null===b||""===b)return!0;var c=g.types[b];return"string"==typeof c&&"pending"!==c?(g.types[b]=g.detectTypeSupport(b,c),"pending"):"function"==typeof c?(c(),"pending"):c},g.parseSize=function(a){var b=/(\([^)]+\))?\s*(.+)/g.exec(a);return{media:b&&b[1],length:b&&b[2]}},g.findWidthFromSourceSize=function(c){for(var d,e=g.trim(c).split(/\s*,\s*/),f=0,h=e.length;h>f;f++){var i=e[f],j=g.parseSize(i),k=j.length,l=j.media;if(k&&(!l||g.matchesMedia(l))&&(d=g.getWidthFromLength(k)))break}return d||Math.max(a.innerWidth||0,b.documentElement.clientWidth)},g.parseSrcset=function(a){for(var b=[];""!==a;){a=a.replace(/^\s+/g,"");var c,d=a.search(/\s/g),e=null;if(-1!==d){c=a.slice(0,d);var f=c.slice(-1);if((","===f||""===c)&&(c=c.replace(/,+$/,""),e=""),a=a.slice(d+1),null===e){var g=a.indexOf(",");-1!==g?(e=a.slice(0,g),a=a.slice(g+1)):(e=a,a="")}}else c=a,a="";(c||e)&&b.push({url:c,descriptor:e})}return b},g.parseDescriptor=function(a,b){var c,d=b||"100vw",e=a&&a.replace(/(^\s+|\s+$)/g,""),f=g.findWidthFromSourceSize(d);if(e)for(var h=e.split(" "),i=h.length-1;i>=0;i--){var j=h[i],k=j&&j.slice(j.length-1);if("h"!==k&&"w"!==k||g.sizesSupported){if("x"===k){var l=j&&parseFloat(j,10);c=l&&!isNaN(l)?l:1}}else c=parseFloat(parseInt(j,10)/f)}return c||1},g.getCandidatesFromSourceSet=function(a,b){for(var c=g.parseSrcset(a),d=[],e=0,f=c.length;f>e;e++){var h=c[e];d.push({url:h.url,resolution:g.parseDescriptor(h.descriptor,b)})}return d},g.dodgeSrcset=function(a){a.srcset&&(a[g.ns].srcset=a.srcset,a.srcset="",a.setAttribute("data-pfsrcset",a[g.ns].srcset))},g.processSourceSet=function(a){var b=a.getAttribute("srcset"),c=a.getAttribute("sizes"),d=[];return"IMG"===a.nodeName.toUpperCase()&&a[g.ns]&&a[g.ns].srcset&&(b=a[g.ns].srcset),b&&(d=g.getCandidatesFromSourceSet(b,c)),d},g.backfaceVisibilityFix=function(a){var b=a.style||{},c="webkitBackfaceVisibility"in b,d=b.zoom;c&&(b.zoom=".999",c=a.offsetWidth,b.zoom=d)},g.setIntrinsicSize=function(){var c={},d=function(a,b,c){b&&a.setAttribute("width",parseInt(b/c,10))};return function(e,f){var h;e[g.ns]&&!a.pfStopIntrinsicSize&&(void 0===e[g.ns].dims&&(e[g.ns].dims=e.getAttribute("width")||e.getAttribute("height")),e[g.ns].dims||(f.url in c?d(e,c[f.url],f.resolution):(h=b.createElement("img"),h.onload=function(){if(c[f.url]=h.width,!c[f.url])try{b.body.appendChild(h),c[f.url]=h.width||h.offsetWidth,b.body.removeChild(h)}catch(a){}e.src===f.url&&d(e,c[f.url],f.resolution),e=null,h.onload=null,h=null},h.src=f.url)))}}(),g.applyBestCandidate=function(a,b){var c,d,e;a.sort(g.ascendingSort),d=a.length,e=a[d-1];for(var f=0;d>f;f++)if(c=a[f],c.resolution>=g.getDpr()){e=c;break}e&&(e.url=g.makeUrl(e.url),b.src!==e.url&&(g.restrictsMixedContent()&&"http:"===e.url.substr(0,"http:".length).toLowerCase()?void 0!==window.console&&console.warn("Blocked mixed content image "+e.url):(b.src=e.url,g.curSrcSupported||(b.currentSrc=b.src),g.backfaceVisibilityFix(b))),g.setIntrinsicSize(b,e))},g.ascendingSort=function(a,b){return a.resolution-b.resolution},g.removeVideoShim=function(a){var b=a.getElementsByTagName("video");if(b.length){for(var c=b[0],d=c.getElementsByTagName("source");d.length;)a.insertBefore(d[0],c);c.parentNode.removeChild(c)}},g.getAllElements=function(){for(var a=[],c=b.getElementsByTagName("img"),d=0,e=c.length;e>d;d++){var f=c[d];("PICTURE"===f.parentNode.nodeName.toUpperCase()||null!==f.getAttribute("srcset")||f[g.ns]&&null!==f[g.ns].srcset)&&a.push(f)}return a},g.getMatch=function(a,b){for(var c,d=b.childNodes,e=0,f=d.length;f>e;e++){var h=d[e];if(1===h.nodeType){if(h===a)return c;if("SOURCE"===h.nodeName.toUpperCase()){null!==h.getAttribute("src")&&void 0!==typeof console&&console.warn("The `src` attribute is invalid on `picture` `source` element; instead, use `srcset`.");var i=h.getAttribute("media");if(h.getAttribute("srcset")&&(!i||g.matchesMedia(i))){var j=g.verifyTypeSupport(h);if(j===!0){c=h;break}if("pending"===j)return!1}}}}return c},f(),e._=g,d(e)}(window,window.document,new window.Image); -------------------------------------------------------------------------------- /cv/resume-es.tex: -------------------------------------------------------------------------------- 1 | %!TEX TS-program = xelatex 2 | %!TEX encoding = UTF-8 Unicode 3 | % Awesome CV LaTeX Template 4 | % 5 | % This template has been downloaded from: 6 | % https://github.com/posquit0/Awesome-CV 7 | % 8 | % Author: 9 | % Claud D. Park 10 | % http://www.posquit0.com 11 | % 12 | % Template license: 13 | % CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/) 14 | % 15 | 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | % Configuration 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%% Themes: Awesome-CV 21 | \documentclass[]{awesome-cv} 22 | \usepackage{textcomp} 23 | \usepackage{graphicx} 24 | %%% Override a directory location for fonts(default: 'fonts/') 25 | \fontdir[fonts/] 26 | 27 | %%% Configure a directory location for sections 28 | \newcommand*{\sectiondir}{resume/} 29 | 30 | %%% Override color 31 | % Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange 32 | % awesome-nephritis, awesome-concrete, awesome-darknight 33 | %% Color for highlight 34 | % Define your custom color if you don't like awesome colors 35 | \colorlet{awesome}{awesome-red} 36 | %\definecolor{awesome}{HTML}{CA63A8} 37 | %% Colors for text 38 | %\definecolor{darktext}{HTML}{414141} 39 | %\definecolor{text}{HTML}{414141} 40 | %\definecolor{graytext}{HTML}{414141} 41 | %\definecolor{lighttext}{HTML}{414141} 42 | 43 | %%% Override a separator for social informations in header(default: ' | ') 44 | %\headersocialsep[\quad\textbar\quad] 45 | \begin{document} 46 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 47 | % Profile 48 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 49 | \begin{minipage}[b]{0.66666\textwidth} 50 | \begin{center} 51 | \headerfirstnamestyle{Adrián} \headerlastnamestyle{Arroyo Calle} \\ 52 | \vspace{2mm} 53 | {\faEnvelope\ adrian.arroyocalle@gmail.com} | {\faMobile\ +34 602 133 602} \newline {\faMapMarker\ Valladolid, Spain} {\faLink\ \url{http://adrianistan.eu}} 54 | \end{center} 55 | \end{minipage} 56 | % FOTO 57 | %\begin{minipage}[b]{0.33333\textwidth} 58 | % \includegraphics[width=0.8\textwidth]{stallman.jpg} 59 | %\end{minipage} 60 | 61 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 62 | % Education 63 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 64 | \cvsection{Educación} 65 | \begin{cventries} 66 | \cventry 67 | {Graduado en Ingeniería Informática} 68 | {Universidad de Valladolid} 69 | {Valladolid, España} 70 | {2016-2020} 71 | {} 72 | \end{cventries} 73 | 74 | \vspace{-2mm} 75 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 76 | % Experience 77 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 78 | \cvsection{Experiencia} 79 | \begin{cventries} 80 | \cventry 81 | {Backend Developer} 82 | {Telefónica} 83 | {Boecillo, España} 84 | {Julio 2020 - Presente} 85 | {\begin{cvitems} 86 | \item {LivingApps Maker / Agente Único} 87 | \item {Python, FastAPI, React, TypeScript, Kotlin, Spring Boot, MongoDB} 88 | \end{cvitems}} 89 | \cventry 90 | {Profesor asociado} 91 | {Universidad de Valladolid} 92 | {Valladolid, España} 93 | {Febrero 2022 - Agosto 2022} 94 | {\begin{cvitems} 95 | \item {Paradigmas de Programación} 96 | \end{cvitems} 97 | } 98 | \cventry 99 | {Profesor asociado} 100 | {Universidad de Valladolid} 101 | {Valladolid, España} 102 | {Octubre 2020 - Junio 2021} 103 | {\begin{cvitems} 104 | \item {Ingeniería del Conocimiento} 105 | \item {Fundamentos de Inteligencia Artificial} 106 | \item {Técnicas Escalables de Análisis de Datos de entornos Big Data: Regresión y Descrubrimiento de Conocimiento} 107 | \item {Técnicas de Aprendizaje Automático} 108 | \end{cvitems}} 109 | \cventry 110 | {Becario} 111 | {Telefónica I+D} 112 | {Boecillo, España} 113 | {Julio 2019 - Junio 2020} 114 | {\begin{cvitems} 115 | \item {4th Platform} 116 | \item {GitOps, Kubernetes, Docker} 117 | \end{cvitems} 118 | } 119 | \end{cventries} 120 | \cvsection{Destrezas} 121 | \begin{cventries} 122 | \cventry 123 | {} 124 | {\def\arraystretch{1.15}{\begin{tabular}{ l l } 125 | Lenguajes de programación: & {\skill{ Rust, C, Python, Java, Kotlin, JavaScript, SQL, Prolog}} \\ 126 | Idiomas: & {\skill{ Español (nativo), Inglés ( FIRST B2)}} \\ 127 | Software: & {\skill{Linux, Kubernetes, Docker, Azure, AWS, \LaTeX , PostgreSQL, Emacs, Microsoft Office, Git}} \\ 128 | \end{tabular}}} 129 | {} 130 | {} 131 | {} 132 | \end{cventries} 133 | 134 | \vspace{-7mm} 135 | \cvsection{Proyectos} 136 | \begin{cventries} 137 | \cventry 138 | {Un blog sobre programación en español} 139 | {Blog Adrianistán} 140 | {Rust,JavaScript,Python,Prolog} 141 | {http://blog.adrianistan.eu} 142 | {} 143 | \cventry 144 | {Framework web configurable mediante RDF} 145 | {Lyncex: describiendo una aplicación como conocimiento} 146 | {Prolog, RDF} 147 | {https://github.com/aarroyoc/lyncex-tfg} 148 | {} 149 | % \cventry 150 | % {A puzzle game for web and mobile phones} 151 | % {Anrokku} 152 | % {TypeScript, Apache Cordova, Phaser} 153 | % {} 154 | % {https://play.google.com/store/apps/details?id=eu.adrianistan.anrokku} 155 | %\cventry 156 | %{Useful addons for Firefox and Thunderbird} 157 | %{firefox-addons} 158 | %{JavaScript} 159 | %{http://github.com/aarroyoc/firefox-addons} 160 | %{} 161 | %\cventry 162 | %{An opensource implementation of Free Cell solitaire for Haiku OS} 163 | %{SuperFreeCell} 164 | %{C++} 165 | %{http://github.com/aarroyoc/SuperFreeCell} 166 | %{} 167 | %\cventry 168 | %{A 3D voxel editor} 169 | %{Kovel} 170 | %{C++, wxWidgets, OpenGL} 171 | %{http://adrianistan.eu/kovel} 172 | %{} 173 | %\cventry 174 | %{A genetic algorithm to vectorize images} 175 | %{Mendel Vectorizer} 176 | %{Rust, Genetic Algorithm, Machine Learning} 177 | %{https://github.com/aarroyoc/mendel-vectorizer} 178 | %{} 179 | 180 | \vspace{-5mm} 181 | \end{cventries} 182 | \cvsection{Premios} 183 | \begin{cvhonors} 184 | \cvhonor 185 | {Ganador del Premio de Estudiantes del Concurso de Datos Abiertos de Castilla y León 2021} 186 | {Por Ruta x Ruta x Castilla y León, una web para descubrir puntos de interés alrededor de rutas} 187 | {Valladolid, España} 188 | {Octubre 2021} 189 | \cvhonor 190 | {Ganador de la mención especial del Concurso de Datos Abiertos de Castilla y León 2018} 191 | {Por Agromapa, una visualización interactiva de la agricultura en Castilla y León} 192 | {Valladolid, España} 193 | {Marzo 2019} 194 | \cvhonor 195 | {Ganador del Catalysts Coding Contest Valladolid} 196 | {Concurso de programación competitiva} 197 | {Valladolid, España} 198 | {Marzo 2019} 199 | % \cvhonor 200 | % {Member of 62 SEMINCI (Valladolid Film Festival) Youth Jury} 201 | % {Choosing the best film in Punto de Encuentro section} 202 | % {Valladolid, Spain} 203 | % {October 2017} 204 | % \cvhonor 205 | % {1st place at VallaHackaton 2017} 206 | % {Created a game in two days about the theme \textquotedbl{}break\textquotedbl{}} 207 | % {Valladolid, Spain} 208 | % {May 2017} 209 | % \cvhonor 210 | % {Winner of \textquotedbl{}Las Matemáticas en el Planeta Tierra\textquotedbl{}} 211 | % {Created a three dimensional raytracer to show how computer generated movies are} 212 | % {Valladolid, Spain} 213 | % {April 2016} 214 | % \cvhonor 215 | % {Finalist of Google Code-In contest} 216 | % {Helped Haiku with apps and ports} 217 | % {Mountain View, California} 218 | % {February 2016} 219 | %\cvhonor 220 | %{Member of Spanish national orienteering team} 221 | %{Part of the school team that represented Spain in the World Championship} 222 | %{Antalya, Turkey} 223 | %{April 2015} 224 | \end{cvhonors} 225 | \ 226 | \end{document} 227 | -------------------------------------------------------------------------------- /cv/resume.tex: -------------------------------------------------------------------------------- 1 | %!TEX TS-program = xelatex 2 | %!TEX encoding = UTF-8 Unicode 3 | % Awesome CV LaTeX Template 4 | % 5 | % This template has been downloaded from: 6 | % https://github.com/posquit0/Awesome-CV 7 | % 8 | % Author: 9 | % Claud D. Park 10 | % http://www.posquit0.com 11 | % 12 | % Template license: 13 | % CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/) 14 | % 15 | 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | % Configuration 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | %%% Themes: Awesome-CV 21 | \documentclass[]{awesome-cv} 22 | \usepackage{textcomp} 23 | \usepackage{graphicx} 24 | %%% Override a directory location for fonts(default: 'fonts/') 25 | \fontdir[fonts/] 26 | 27 | %%% Configure a directory location for sections 28 | \newcommand*{\sectiondir}{resume/} 29 | 30 | %%% Override color 31 | % Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange 32 | % awesome-nephritis, awesome-concrete, awesome-darknight 33 | %% Color for highlight 34 | % Define your custom color if you don't like awesome colors 35 | \colorlet{awesome}{awesome-red} 36 | %\definecolor{awesome}{HTML}{CA63A8} 37 | %% Colors for text 38 | %\definecolor{darktext}{HTML}{414141} 39 | %\definecolor{text}{HTML}{414141} 40 | %\definecolor{graytext}{HTML}{414141} 41 | %\definecolor{lighttext}{HTML}{414141} 42 | 43 | %%% Override a separator for social informations in header(default: ' | ') 44 | %\headersocialsep[\quad\textbar\quad] 45 | \begin{document} 46 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 47 | % Profile 48 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 49 | \begin{minipage}[b]{0.66666\textwidth} 50 | \begin{center} 51 | \headerfirstnamestyle{Adrián} \headerlastnamestyle{Arroyo Calle} \\ 52 | \vspace{2mm} 53 | {\faEnvelope\ adrian.arroyocalle@gmail.com} | {\faMobile\ +34 602 133 602} \newline {\faMapMarker\ Valladolid, Spain} {\faLink\ \url{http://adrianistan.eu}} 54 | \end{center} 55 | \end{minipage} 56 | % FOTO 57 | %\begin{minipage}[b]{0.33333\textwidth} 58 | % \includegraphics[width=0.8\textwidth]{stallman.jpg} 59 | %\end{minipage} 60 | 61 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 62 | % Education 63 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 64 | \cvsection{Education} 65 | \begin{cventries} 66 | \cventry 67 | {BS in Computer Science} 68 | {Valladolid University} 69 | {Valladolid, Spain} 70 | {2016-2020} 71 | {} 72 | \end{cventries} 73 | 74 | \vspace{-2mm} 75 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 76 | % Experience 77 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 78 | \cvsection{Experience} 79 | \begin{cventries} 80 | \cventry 81 | {Backend Developer} 82 | {Telefónica} 83 | {Boecillo, Spain} 84 | {July 2020 - Present} 85 | {\begin{cvitems} 86 | \item {LivingApps Maker / Agent HaaC} 87 | \item {Python, FastAPI, React, TypeScript, Kotlin, Spring Boot, MongoDB} 88 | \end{cvitems}} 89 | \cventry 90 | {Assistant Professor} 91 | {Valladolid University} 92 | {Valladolid, Spain} 93 | {February 2022 - August 2022} 94 | {\begin{cvitems} 95 | \item {Programming Paradigms} 96 | \end{cvitems}} 97 | \cventry 98 | {Assistant Professor} 99 | {Valladolid University} 100 | {Valladolid, Spain} 101 | {October 2020 - June 2021} 102 | {\begin{cvitems} 103 | \item {Knowledge Engineering} 104 | \item {Artificial Intelligence Fundamentals} 105 | \item {Recommendation in Big Data environments} 106 | \item {Machine Learning Techniques} 107 | \end{cvitems}} 108 | \cventry 109 | {Internship} 110 | {Telefónica I+D} 111 | {Boecillo, Spain} 112 | {July 2019 - June 2020} 113 | {\begin{cvitems} 114 | \item {Internship at 4th Platform} 115 | \item {GitOps, Kubernetes, Docker} 116 | \end{cvitems} 117 | } 118 | \cventry 119 | {Treasurer} 120 | {BEST Valladolid} 121 | {Valladolid, Spain} 122 | {October 2018 - October 2019} 123 | {\begin{cvitems} 124 | \item {Manage finances of BEST Valladolid} 125 | \item {Be part of the ejecutive board} 126 | \end{cvitems}} 127 | \cventry 128 | {IT Coordinator} 129 | {BEST Valladolid} 130 | {Valladolid, Spain} 131 | {October 2017 – October 2018} 132 | {\begin{cvitems} 133 | \item {Coordinate the IT working group} 134 | \end{cvitems}} 135 | \cventry 136 | {Archaeologist voluntary} 137 | {Diputación Provincial de Soria} 138 | {Garray, Spain} 139 | {August 2017} 140 | {\begin{cvitems} 141 | \item {Work as a volunteer in the arqueological site of Numancia} 142 | \end{cvitems}} 143 | \end{cventries} 144 | \cvsection{Skills} 145 | \begin{cventries} 146 | \cventry 147 | {} 148 | {\def\arraystretch{1.15}{\begin{tabular}{ l l } 149 | Programming languages: & {\skill{ Rust, C, Python, Java, JavaScript, SQL, Prolog, Kotlin}} \\ 150 | Languages: & {\skill{ Spanish (native), English (FIRST B2)}} \\ 151 | Software: & {\skill{Linux, Kubernetes, Docker, Azure, AWS, \LaTeX , PostgreSQL, Emacs, Microsoft Office, Git}} \\ 152 | \end{tabular}}} 153 | {} 154 | {} 155 | {} 156 | \end{cventries} 157 | 158 | \vspace{-7mm} 159 | \cvsection{Projects} 160 | \begin{cventries} 161 | \cventry 162 | {A blog mainly about programming in Spanish} 163 | {Blog Adrianistán} 164 | {Rust,JavaScript,Python} 165 | {http://blog.adrianistan.eu} 166 | {} 167 | \cventry 168 | {Web framework programmed in RDF} 169 | {Lyncex: describing a web application using Knowledge} 170 | {Prolog, RDF} 171 | {https://github.com/aarroyoc/lyncex-tfg} 172 | {} 173 | \cventry 174 | {A puzzle game for web and mobile phones} 175 | {Anrokku} 176 | {TypeScript, Apache Cordova, Phaser} 177 | {} 178 | {https://play.google.com/store/apps/details?id=eu.adrianistan.anrokku} 179 | \cventry 180 | {Useful addons for Firefox and Thunderbird} 181 | {firefox-addons} 182 | {JavaScript} 183 | {http://github.com/aarroyoc/firefox-addons} 184 | {} 185 | \cventry 186 | {An opensource implementation of Free Cell solitaire for Haiku OS} 187 | {SuperFreeCell} 188 | {C++} 189 | {http://github.com/aarroyoc/SuperFreeCell} 190 | {} 191 | \cventry 192 | {A 3D voxel editor} 193 | {Kovel} 194 | {C++, wxWidgets, OpenGL} 195 | {http://adrianistan.eu/kovel} 196 | {} 197 | \cventry 198 | {A genetic algorithm to vectorize images} 199 | {Mendel Vectorizer} 200 | {Rust, Genetic Algorithm, Machine Learning} 201 | {https://github.com/aarroyoc/mendel-vectorizer} 202 | {} 203 | \cventry 204 | {A library to connect Scryer Prolog with PostgreSQL} 205 | {postgresql-prolog} 206 | {Prolog, SQL} 207 | {https://github.com/aarroyoc/postgresql-prolog} 208 | {} 209 | \cventry 210 | {A MIPS emulator} 211 | {MIPSie} 212 | {Prolog, Logtalk, MIPS} 213 | {https://github.com/aarroyoc/mipsie} 214 | {} 215 | \cventry 216 | {A webapp to discover and analyze bike routes} 217 | {Ruta x Ruta} 218 | {Kotlin, JavaScript} 219 | {https://rutaxruta.com} 220 | {} 221 | 222 | \vspace{-5mm} 223 | \end{cventries} 224 | \cvsection{Honors \& Awards} 225 | \begin{cvhonors} 226 | \cvhonor 227 | {Student Prize Winner of Open Data Contest Castille and Leon 2021} 228 | {Created RutaxRutaxCastilla y León, a webapp to discover stuff around bike routes} 229 | {Valladolid, Spain} 230 | {October 2021} 231 | \cvhonor 232 | {Winner of Special Mention at Open Data Contest Castille and Leon 2018} 233 | {Created Agromapa, an interactive visualization of agriculture in Castille and Leon} 234 | {Valladolid, Spain} 235 | {March 2019} 236 | \cvhonor 237 | {Winner of Catalysts Coding Contest Valladolid} 238 | {Competitive programming contest} 239 | {Valladolid, Spain} 240 | {March 2019} 241 | \cvhonor 242 | {Member of 62 SEMINCI (Valladolid Film Festival) Youth Jury} 243 | {Choosing the best film in Punto de Encuentro section} 244 | {Valladolid, Spain} 245 | {October 2017} 246 | \cvhonor 247 | {1st place at VallaHackaton 2017} 248 | {Created a game in two days about the theme \textquotedbl{}break\textquotedbl{}} 249 | {Valladolid, Spain} 250 | {May 2017} 251 | \cvhonor 252 | {Winner of \textquotedbl{}Las Matemáticas en el Planeta Tierra\textquotedbl{}} 253 | {Created a three dimensional raytracer to show how computer generated movies are} 254 | {Valladolid, Spain} 255 | {April 2016} 256 | \cvhonor 257 | {Finalist of Google Code-In contest} 258 | {Helped Haiku with apps and ports} 259 | {Mountain View, California} 260 | {February 2016} 261 | \cvhonor 262 | {Member of Spanish national orienteering team} 263 | {Part of the school team that represented Spain in the World Championship} 264 | {Antalya, Turkey} 265 | {April 2015} 266 | \end{cvhonors} 267 | \ 268 | \end{document} 269 | -------------------------------------------------------------------------------- /obsolescencia-programada/img/pdf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 24 | 28 | 32 | 33 | 43 | 45 | 49 | 53 | 54 | 64 | 66 | 70 | 74 | 75 | 86 | 87 | 103 | 105 | 106 | 108 | image/svg+xml 109 | 111 | 112 | 113 | 114 | 119 | 122 | 132 | 142 | 152 | 157 | PDF 176 | PDF 195 | 205 | 212 | 213 | 214 | 215 | -------------------------------------------------------------------------------- /obsolescencia-programada/latex/obsolescencia-programada.latex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper,12pt]{article} 2 | 3 | \usepackage[spanish,activeacute]{babel} 4 | \usepackage[utf8]{inputenc} 5 | \usepackage{url} 6 | \usepackage{xcolor} 7 | \usepackage[pdftex, 8 | pdfauthor={Adrián Arroyo Calle}, 9 | pdftitle={Obsolescencia Programada}, 10 | pdfsubject={¿Qué es la obsolescencia programada?}, 11 | colorlinks={false}, 12 | allbordercolors={white}]{hyperref} 13 | \pagenumbering{arabic} 14 | 15 | \title{Obsolescencia Programada} 16 | \author{Adrián Arroyo Calle} 17 | \date{\small{\today}} 18 | 19 | 20 | \begin{document} 21 | 22 | \maketitle 23 | 24 | \section{¿Qué es?} 25 | 26 | \begin{quotation} 27 | Se denomina obsolescencia programada a la determinación o programación 28 | del fin de la vida útil de un producto , de modo que, tras un período de 29 | tiempo calculado de antemano por el fabricante o por la empresa durante 30 | la fase de diseño de dicho producto o servicio, éste se torne obsoleto, 31 | no funcional, inútil o inservible. 32 | \end{quotation} 33 | Básicamente, una técnica que se aplica a los productos para que se 34 | rompan solos y debas comprar otro. 35 | 36 | \section{Historia} 37 | 38 | El origen del término Obsolescencia Programada se remonta a la Gran 39 | Depresión Americana. En 1932, Bernard London propone la obsolescencia 40 | programada como manera de salir de la recesión. El quería que fuese una 41 | ley obligatoria sin embargo el gobierno estadounidense no aceptó su 42 | propuesta. Sin embargo esto que propone no era algo nuevo y está 43 | intimamente relacionado con el aumento en la producción gracias al 44 | tailorismo y al fordismo. En concreto unas prácticas parecidas llevaba a 45 | cabo el cártel Phoebus en las cuales diversas empresas dedicadas a la 46 | fabricación de bombillas y cuyos propósitos eran: 47 | 48 | \begin{itemize} 49 | \item Estandarizar el proceso de venta 50 | \item Asegurar unos mínimos de calidad 51 | \item \textbf{Limitar la duración de las bombillas a 1000 horas} 52 | \end{itemize} 53 | 54 | Anteriormente se habían visto bombillas que sobrepasaban este 55 | límite impuesto por las compañías. Sin embargo esto no interesaba a las 56 | compañías del cartel pues las bombillas duraban demasiado a la gente y 57 | si querían mantener el ritmo de producción tenían que provocar reposiciones. Esta 58 | es la idea principal de la obsolescencia programada. En 1953 un juez dicatminó 59 | que esta práctica era ilegal sin embargo la duración de las bombillas incadescentes 60 | no aumentó. 61 | 62 | Un ejemplo de este cambio en la duración de las bombillas lo podemos ver 63 | en Livermore, una localidad cerca de San Francisco donde en su cuartel 64 | de bomberos está la bombilla centenaria. Lleva luciendo desde 1901 65 | (aunque fue fabricada antes por las Shelby Electrics Company) y de 66 | momento no se ha fundido. Sin embargo ha roto más de 3 webcams por las 67 | que podemos ver a la bombilla. \url{http://www.centennialbulb.org/cam.htm} 68 | 69 | \section{Tipos de obsolescencia} 70 | 71 | El autor del libro The Waste Makers, Vance Packard, afirma que existen 72 | tres tipos de obsolescencia programada. 73 | 74 | \subsection{Obsolescencia incorporada} 75 | 76 | La obsolescencia incorporada es la forma más conocida de obsolescencia 77 | programada. En ella los aparatos se diseñan específicamente para fallar. 78 | Es más común en electrónica y diseño de materiales. 79 | 80 | \subsection{Obsolescencia psicológica} 81 | 82 | La obsolescencia psicológica consiste en hacer que el usuario cambio de 83 | producto usando sus emociones. Esto se consigue a través de la publicidad, 84 | las marcas, etc... Es muy importante dentro del mundo textil donde no nos 85 | sorprende ver desfiles de moda, anuncios, cambios de temporada y otras artimañas 86 | para conseguir sustituir una ropa funcional. Desfiles como Cibeles Fashion Week 87 | que son promocionados a través de los telediarios son solo una pieza de la 88 | industria textil. Estas estrategias han sido adoptadas por ciertas compañías 89 | de informática cuyos productos se basan en estilos de vida felices y que todos 90 | desearían tener. 91 | 92 | \subsection{Obsolescencia tecnológica} 93 | 94 | La obsolescencia tecnológica consiste en que el resto del ecosistema sobre 95 | el que trabaja un aparato se hace obsoleto y por ello ya no puede desempeñar 96 | sus funciones aunque opere correctamente. En informática encontramos los mejores 97 | ejemplos, siendo muchas veces esta obsolescencia justificada pues suele trae ventajas 98 | al consumidor final. La Ley de Moore expresa que aproximadamente cada 99 | dos años se duplica el número de transistores en un circuito integrado, 100 | luego es muy fácil quedarse atrás en cuanto a potencia. Existe también otra ley 101 | que dice que cuanto más potente es un ordenador más se usa su potencia. 102 | Igual pasa con el espacio de almacenamiento. Como ejemplos de productos 103 | obsoletos por su progreso tecnológico tendríamos los famosos disquetes 104 | (en sus diferentes tamaños y prestaciones) y el sistema operativo BeOS. 105 | 106 | \section{Consecuencias} 107 | 108 | La obsolescencia programada, en todas sus variantes, provoca una serie 109 | de consecuencias económicas y medioambientales. 110 | 111 | \subsection{Económicas} 112 | 113 | La principal consecuencia económica es un aumento de los ingresos para el 114 | fabricante a medio plazo. Sin embargo si una empresa actúa independientemente 115 | de las demás y aplica plazos de duración más cortos su prestigio puede verse 116 | afectado y perder ventas a largo plazo. Por eso es necesario para una buena 117 | obsolescencia programada que todas las empresas ofrezcan productos de duración 118 | similar. También el aumento de la producción hace que el precio por unidad 119 | de cada producto sea inferior a antes de aplicarse la obsolescencia. 120 | 121 | \subsection{Medioambientales} 122 | 123 | En el terreno medioambiental, las principales consecuencias vienen del 124 | hecho de generar tanta basura y residuos. En los RAEE (Residuos de Aparatos 125 | Eléctricos y Electrónicos) se puede aprovechar gran parte de los materiales. 126 | Por otra parte muchos de estos residuos tienen partes de plástico; en los que su 127 | descomposición al aire libre varía entre 100 y 1000 años. Otra gran preocupación 128 | está en materiales como el plomo y el cadmio, ya que la contaminación por producida 129 | es muy grave para las personas. Un monitor CRT puede contener hasta 3 kg de plomo. 130 | La gran parte de esta basura acaba en zonas de África donde la gente rebusca en la basura. 131 | Técnicamente está prohibido enviar basura a estos sitios desde los países 132 | desarrollados pero se camuflan bajo ``Ayuda al Desarrollo" y ``donaciones" 133 | diciendo que esos aparatos les ayudarán pero lo cierto es 134 | que van todos rotos. En el mundo textil se han visto empresas que se disfrazan de ONGs 135 | para vender ropas donadas por la gente a precios exorbitados en África. 136 | 137 | \section{En la actualidad} 138 | 139 | \subsection{Garantías} 140 | 141 | La ley europea obliga a todos los fabricantes a ofrecer una garantía de 2 años 142 | por cada bien nuevo. A partir de ese tiempo cada fabricante tiene libertar para alargar 143 | más la garantía o terminarla. Esta garantía consiste en la reparación o la sustitución del producto 144 | y en caso de que no sea posible por parte de la empresa, devolver el dinero. 145 | El software por motivos técnicos no está sujeto a las garantías. 146 | 147 | \subsection{Reparaciones} 148 | 149 | La antítesis a la obsolescencia programada son las reparaciones con las cuales 150 | se puede alargar la vida útil de un producto. Ejecutar una reparación requiere 151 | conocimiento y en ocasiones son más costosas que comprar un nuevo producto 152 | desde fábrica. Además el conocimiento de la población en las reparaciones 153 | ha disminuido conforme el nivel económico ha ido subiendo. La profesora Danielle 154 | George hablaba de ``la generación que no sabía arreglar sus juguetes". Quizá también 155 | se deba al aumento de la complicación de las reparaciones y los materiales necesarios. 156 | La ropa es otro claro ejemplo. Cada vez menos ropa se arregla cosiéndola por 157 | nuestra propia cuenta. 158 | \url{http://www.enriquedans.com/2015/01/la-generacion-que-no-sabia-arreglar-sus-juguetes.html} 159 | 160 | \subsection{Hardware libre y software libre} 161 | 162 | Últimamente están surgiendo proyectos sin ánimo de lucro con el fin de 163 | garantizar las libertades de las personas. Sus proyectos son totalmente 164 | abiertos, todo el mundo puede repararlo o incluso fabricarse uno él mismo. 165 | Los más importantes dentro del hardware libre son: 166 | 167 | \begin{itemize} 168 | \item Arduino - un microcontrolador libre 169 | \item Raspberry Pi - un ordenador completo libre por 35\$ 170 | \item RepRap - una impresora 3D autoreplicable 171 | \end{itemize} 172 | 173 | En el software libre encontramos software cuyo código fuente puede ser modificado 174 | por nosotros con las ventajas potenciales que tiene entre ellas la fácil detección 175 | y eliminación de obsolescencia. Los proyectos más populares son: 176 | 177 | \begin{itemize} 178 | \item GNU/Linux - el sistema operativo completo libre 179 | \item Mozilla Firefox - el navegador libre 180 | \item LibreOffice - la suite ofimática libre 181 | \item Apache HTTP - el servidor web más usado del mundo 182 | \end{itemize} 183 | 184 | \section{Más ejemplos} 185 | 186 | \subsection{Nylon} 187 | 188 | En 1939, la empresa DuPont creó un compuesto tan resistente que era muy 189 | difícil de romper. La empresa forzó a sus ingenieros a trabajar en un tejido 190 | que se estropease más fácilmente. La situación fue retratada en la película 191 | ``El Hombre Blanco" 192 | 193 | \subsection{Relojes} 194 | 195 | En el mundo de los relojes se ha ido perdiendo poco a poco la idea de durabilidad. 196 | Marcas como Swatch se han hecho hueco en el mercado con relojes basados en diseños 197 | y modas y no precisamente en durabilidad y eficacia. Casio por el contrario, 198 | sigue siendo de las pocas marcas de relojes que se publicitan con durabilidad. En el resto 199 | del sector no interesan pilas de 10 años o paneles solares. 200 | 201 | \subsection{iPod, iPhone y iPad} 202 | 203 | Estos dispositivos de Apple no tienen opción de cambiar la batería. En cuanto la batería deja 204 | de ser funcionales no hay recambios disponibles y se fuerza al usuario a comprar otro aparato 205 | nuevo. Esto unido a que las baterías en el iPod estaban siendo manipuladas para 206 | durar menos hace que sea un caso de obsolescencia programada. 207 | 208 | \section{Bibliografía} 209 | 210 | \begin{itemize} 211 | \item Comprar, tirar, comprar - RTVE 212 | \item La vuelta al mundo del forro polar rojo 213 | \item\url{http://www.messynessychic.com/2013/10/15/the-lost-art-of-the-cutaway/} 214 | \item\url{http://es.wikipedia.org/wiki/Obsolescencia_programada} 215 | \item\url{ http://es.wikipedia.org/wiki/Comprar,_tirar,_comprar} 216 | \item\url{ http://en.wikipedia.org/wiki/Planned_obsolescence} 217 | \item\url{ http://es.wikipedia.org/wiki/Cártel_Phoebus} 218 | \item\url{ http://www.taringa.net/posts/ciencia-educacion/17687482/Obsolescencia-programada-y-el-Cartel-Phoebus.html} 219 | \item\url{ http://www.hicistelclick.com/hacia-el-final/consumismo-manipulacion-y-desinformacion/} 220 | \item\url{ http://lastressillas.com/wp-content/uploads/2014/12/comprar_tirar_comprar_intro2.jpg} 221 | \item\url{ http://www.abc.es/20110623/ciencia/abci-misterio-bombilla-encendida-desde-201106231033.html} 222 | \item\url{ http://www.centennialbulb.org/cam.htm} 223 | \item\url{ http://www.ecointeligencia.com/2014/06/obsolescencia-programada-tipos-formas/} 224 | \item\url{ http://www.taringa.net/posts/economia-negocios/17196135/Historia-secreta-de-la-obsolescencia-programada.html} 225 | \item\url{ http://obsolescenciaprogramada123.blogspot.com.es/p/impacto-sobre-el-medio-ambiente.html} 226 | \item\url{ http://www.guinguinbali.com/index.php?lang=es&mod=news&cat=2&id=1386} 227 | \item\url{ http://actualidad.rt.com/actualidad/view/114305-onu-paises-pobres-toxica-basura-electronica} 228 | \item\url{ http://www.elmundo.es/elmundo/2013/05/07/valencia/1367952358.html} 229 | \item\url{ http://reciclayayuda.com/} 230 | \item\url{ http://europa.eu/youreurope/citizens/shopping/shopping-abroad/guarantees/index_es.htm} 231 | \item\url{ http://www.softwarecontracts.net/p08_software_warranties.htm} 232 | \item\url{ http://www.pymesyautonomos.com/tecnologia/la-garantia-del-software} 233 | \item\url{ http://www.enriquedans.com/2015/01/la-generacion-que-no-sabia-arreglar-sus-juguetes.html} 234 | \item\url{ http://obsolescenciaprogramadayconsumo.blogspot.com.es/2013/05/las-medias-de-nylon.html} 235 | \item\url{ http://zonacasio.blogspot.com.es/2012/09/la-obsolescencia-programada-en-el-mundo.html} 236 | 237 | \end{itemize} 238 | 239 | \end{document} 240 | -------------------------------------------------------------------------------- /obsolescencia-programada/LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License 2 | 3 | By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. 4 | 5 | Section 1 – Definitions. 6 | 7 | Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. 8 | Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. 9 | BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. 10 | Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. 11 | Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. 12 | Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. 13 | License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. 14 | Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. 15 | Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. 16 | Licensor means the individual(s) or entity(ies) granting rights under this Public License. 17 | NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. 18 | Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. 19 | Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. 20 | You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. 21 | 22 | Section 2 – Scope. 23 | 24 | License grant. 25 | Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: 26 | reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and 27 | produce, reproduce, and Share Adapted Material for NonCommercial purposes only. 28 | Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. 29 | Term. The term of this Public License is specified in Section 6(a). 30 | Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. 31 | Downstream recipients. 32 | Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. 33 | Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. 34 | No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. 35 | No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). 36 | 37 | Other rights. 38 | Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. 39 | Patent and trademark rights are not licensed under this Public License. 40 | To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. 41 | 42 | Section 3 – License Conditions. 43 | 44 | Your exercise of the Licensed Rights is expressly made subject to the following conditions. 45 | 46 | Attribution. 47 | 48 | If You Share the Licensed Material (including in modified form), You must: 49 | retain the following if it is supplied by the Licensor with the Licensed Material: 50 | identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); 51 | a copyright notice; 52 | a notice that refers to this Public License; 53 | a notice that refers to the disclaimer of warranties; 54 | a URI or hyperlink to the Licensed Material to the extent reasonably practicable; 55 | indicate if You modified the Licensed Material and retain an indication of any previous modifications; and 56 | indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. 57 | You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. 58 | If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. 59 | ShareAlike. 60 | 61 | In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. 62 | The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. 63 | You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. 64 | You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. 65 | 66 | Section 4 – Sui Generis Database Rights. 67 | 68 | Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: 69 | 70 | for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; 71 | if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and 72 | You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. 73 | 74 | For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. 75 | 76 | Section 5 – Disclaimer of Warranties and Limitation of Liability. 77 | 78 | Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. 79 | To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. 80 | 81 | The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. 82 | 83 | Section 6 – Term and Termination. 84 | 85 | This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. 86 | 87 | Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 88 | automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or 89 | upon express reinstatement by the Licensor. 90 | For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. 91 | For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. 92 | Sections 1, 5, 6, 7, and 8 survive termination of this Public License. 93 | 94 | Section 7 – Other Terms and Conditions. 95 | 96 | The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. 97 | Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. 98 | 99 | Section 8 – Interpretation. 100 | 101 | For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. 102 | To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. 103 | No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. 104 | Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. 105 | -------------------------------------------------------------------------------- /cv/awesome-cv.cls: -------------------------------------------------------------------------------- 1 | %% Start of file `awesome-cv.cls'. 2 | % Awesome CV Class File 3 | % 4 | % This class has been downloaded from: 5 | % https://github.com/posquit0/Awesome-CV 6 | % 7 | % Author: 8 | % Claud D. Park 9 | % http://www.posquit0.com 10 | % 11 | % Notes: 12 | % 1) This class file defines the structure and layout of the template file (cv.tex, resume.tex). 13 | % 2) It has been written in such a way that under most circumstances you 14 | % should not need to edit it. 15 | % 16 | % Class license: 17 | % LPPL v1.3c (http://www.latex-project.org/lppl) 18 | % 19 | 20 | 21 | %------------------------------------------------------------------------------- 22 | % Identification 23 | %------------------------------------------------------------------------------- 24 | \ProvidesClass{awesome-cv}[2015/12/14 v1.3 Awesome Curriculum Vitae Class] 25 | \NeedsTeXFormat{LaTeX2e} 26 | 27 | 28 | %------------------------------------------------------------------------------- 29 | % Class options 30 | % 31 | % (need to be done before the external package loading, for example because 32 | % we need \paperwidth, \paperheight and \@ptsize to be defined before loading 33 | % geometry and fancyhdr) 34 | %------------------------------------------------------------------------------- 35 | % Options for draft or final 36 | \DeclareOption{draft}{\setlength\overfullrule{5pt}} 37 | \DeclareOption{final}{\setlength\overfullrule{0pt}} 38 | % Inherit options of article 39 | \DeclareOption*{ 40 | \PassOptionsToClass{\CurrentOption}{article} 41 | } 42 | \ProcessOptions\relax 43 | \LoadClass{article} 44 | 45 | 46 | %------------------------------------------------------------------------------- 47 | % 3rd party packages 48 | %------------------------------------------------------------------------------- 49 | % Needed to make fixed length table 50 | \RequirePackage{array} 51 | % Needed to handle list environment 52 | \RequirePackage{enumitem} 53 | % Needed to handle text alignment 54 | \RequirePackage{ragged2e} 55 | % Needed to configure page layout 56 | \RequirePackage{geometry} 57 | % Needed to make header & footer effeciently 58 | \RequirePackage{fancyhdr} 59 | % Needed to manage colors 60 | \RequirePackage{xcolor} 61 | % Needed to use \ifxetex-\else-\fi statement 62 | \RequirePackage{ifxetex} 63 | % Needed to use \if-\then-\else statement 64 | \RequirePackage{xifthen} 65 | % Needed to use a toolbox of programming tools 66 | \RequirePackage{etoolbox} 67 | % Needed to change line spacing in specific environment 68 | \RequirePackage{setspace} 69 | % Needed to manage fonts 70 | \ifxetex 71 | \RequirePackage[quiet]{fontspec} 72 | % To support LaTeX quoting style 73 | \defaultfontfeatures{Ligatures=TeX} 74 | \else 75 | \RequirePackage[T1]{fontenc} 76 | % Replace by the encoding you are using 77 | \RequirePackage[utf8]{inputenc} 78 | \fi 79 | % Needed to manage math fonts 80 | \RequirePackage{unicode-math} 81 | % Needed to use icons from font-awesome 82 | % (https://github.com/posquit0/latex-fontawesome) 83 | \RequirePackage{fontawesome} 84 | % Needed to deal a paragraphs 85 | \RequirePackage{parskip} 86 | % Needed to deal hyperlink 87 | \RequirePackage{hyperref} 88 | \hypersetup{ 89 | pdftitle={}, 90 | pdfauthor={}, 91 | pdfsubject={}, 92 | pdfkeywords={}, 93 | colorlinks=false, 94 | allbordercolors=white 95 | } 96 | 97 | 98 | %------------------------------------------------------------------------------- 99 | % Configuration for directory locations 100 | %------------------------------------------------------------------------------- 101 | % Configure a directory location for fonts(default: 'fonts/') 102 | \newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}} 103 | \fontdir 104 | 105 | 106 | %------------------------------------------------------------------------------- 107 | % Configuration for layout 108 | %------------------------------------------------------------------------------- 109 | %% Page Layout 110 | % Configure page margins with geometry 111 | \geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm} 112 | 113 | %% Header & Footer 114 | % Set offset to each header and offset 115 | \fancyhfoffset{0em} 116 | % Remove head rule 117 | \renewcommand{\headrulewidth}{0pt} 118 | % Clear all header & footer fields 119 | \fancyhf{} 120 | % Enable if you want to make header or footer using fancyhdr 121 | \pagestyle{fancy} 122 | 123 | 124 | %------------------------------------------------------------------------------- 125 | % Configuration for colors 126 | %------------------------------------------------------------------------------- 127 | % Gray-scale colors 128 | \definecolor{white}{HTML}{FFFFFF} 129 | \definecolor{black}{HTML}{000000} 130 | \definecolor{darkgray}{HTML}{333333} 131 | \definecolor{gray}{HTML}{5D5D5D} 132 | \definecolor{lightgray}{HTML}{999999} 133 | % Basic colors 134 | \definecolor{green}{HTML}{C2E15F} 135 | \definecolor{orange}{HTML}{FDA333} 136 | \definecolor{purple}{HTML}{D3A4F9} 137 | \definecolor{red}{HTML}{FB4485} 138 | \definecolor{blue}{HTML}{6CE0F1} 139 | % Text colors 140 | \definecolor{darktext}{HTML}{414141} 141 | \colorlet{text}{darkgray} 142 | \colorlet{graytext}{gray} 143 | \colorlet{lighttext}{lightgray} 144 | % Awesome colors 145 | \definecolor{awesome-emerald}{HTML}{00A388} 146 | \definecolor{awesome-skyblue}{HTML}{0395DE} 147 | \definecolor{awesome-red}{HTML}{DC3522} 148 | \definecolor{awesome-pink}{HTML}{EF4089} 149 | \definecolor{awesome-orange}{HTML}{FF6138} 150 | \definecolor{awesome-nephritis}{HTML}{27AE60} 151 | \definecolor{awesome-concrete}{HTML}{95A5A6} 152 | \definecolor{awesome-darknight}{HTML}{131A28} 153 | \colorlet{awesome}{awesome-red} 154 | 155 | % Awesome section color 156 | \newcounter{colorCounter} 157 | \def\@sectioncolor#1#2#3{% 158 | {% 159 | \color{% 160 | \ifcase\value{colorCounter}% 161 | awesome\or% 162 | awesome\or% 163 | awesome\or% 164 | awesome\or% 165 | awesome\else% 166 | awesome\fi% 167 | } #1#2#3% 168 | }% 169 | \stepcounter{colorCounter}% 170 | } 171 | 172 | 173 | %------------------------------------------------------------------------------- 174 | % Configuration for fonts 175 | %------------------------------------------------------------------------------- 176 | % Set font for header (default is Roboto) 177 | \newfontfamily\headerfont[ 178 | Path=\@fontdir, 179 | UprightFont=*-Regular, 180 | ItalicFont=*-Italic, 181 | BoldFont=*-Bold, 182 | BoldItalicFont=*-BoldItalic, 183 | ]{Roboto} 184 | 185 | \newfontfamily\headerfontlight[ 186 | Path=\@fontdir, 187 | UprightFont=*-Thin, 188 | ItalicFont=*-ThinItalic, 189 | BoldFont=*-Medium, 190 | BoldItalicFont=*-MediumItalic, 191 | ]{Roboto} 192 | 193 | % Set font for footer (default is Source Sans Pro) 194 | \newfontfamily\footerfont[ 195 | Path=\@fontdir, 196 | UprightFont=*-Regular, 197 | ItalicFont=*-It, 198 | BoldFont=*-Bold 199 | ]{SourceSansPro} 200 | 201 | % Set font for body (default is Source Sans Pro) 202 | \newfontfamily\bodyfont[ 203 | Path=\@fontdir, 204 | UprightFont=*-Regular, 205 | ItalicFont=*-It, 206 | BoldFont=*-Bold, 207 | BoldItalicFont=*-BoldIt 208 | ]{SourceSansPro} 209 | 210 | \newfontfamily\bodyfontlight[ 211 | Path=\@fontdir, 212 | UprightFont=*-Light, 213 | ItalicFont=*-LightIt, 214 | BoldFont=*-Semibold, 215 | BoldItalicFont=*-SemiboldIt 216 | ]{SourceSansPro} 217 | 218 | 219 | %------------------------------------------------------------------------------- 220 | % Configuration for styles 221 | %------------------------------------------------------------------------------- 222 | % Configure styles for each CV elements 223 | % For fundamental structures 224 | \newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfontlight\color{graytext} #1}} 225 | \newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}} 226 | \newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}} 227 | \newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}} 228 | \newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}} 229 | \newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}} 230 | \newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}} 231 | \newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}} 232 | \newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}} 233 | 234 | % For elements of entry 235 | \newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 236 | \newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}} 237 | \newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 238 | \newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 239 | \newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}} 240 | \newcommand*{\skill}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} \textnormal{#1}}} 241 | 242 | % For elements of subentry 243 | \newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}} 244 | \newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}} 245 | \newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 246 | \newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 247 | \newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}} 248 | 249 | % For elements of honor 250 | \newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} 251 | \newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 252 | \newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} 253 | \newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 254 | 255 | % For elements of skill 256 | \newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 257 | \newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}} 258 | 259 | % For elements of the cover letter 260 | \newcommand*{\paragraphstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}} 261 | \newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}} 262 | \newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 263 | \newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}} 264 | \newcommand*{\letterdatestyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 265 | \newcommand*{\lettertextstyle}{\fontsize{10pt}{1.4em}\bodyfontlight\upshape\color{graytext}} 266 | \newcommand*{\letternamestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 267 | \newcommand*{\letterenclosurestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\slshape\color{lighttext} #1}} 268 | 269 | 270 | %------------------------------------------------------------------------------- 271 | % Commands for personal information 272 | %------------------------------------------------------------------------------- 273 | % Define writer's name 274 | % Usage: \name{}{} 275 | % Usage: \firstname{} 276 | % Usage: \lastname{} 277 | % Usage: \familyname{} 278 | \newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}} 279 | \newcommand*{\firstname}[1]{\def\@firstname{#1}} 280 | \newcommand*{\lastname}[1]{\def\@lastname{#1}} 281 | \newcommand*{\familyname}[1]{\def\@lastname{#1}} 282 | \def\@familyname{\@lastname} 283 | 284 | % Define writer's address 285 | % Usage: \address{
} 286 | \newcommand*{\address}[1]{\def\@address{#1}} 287 | 288 | % Define writer's position 289 | % Usage: \name{} 290 | \newcommand*{\position}[1]{\def\@position{#1}} 291 | 292 | % Defines writer's mobile (optional) 293 | % Usage: \mobile{} 294 | \newcommand*{\mobile}[1]{\def\@mobile{#1}} 295 | 296 | % Defines writer's email (optional) 297 | % Usage: \email{} 298 | \newcommand*{\email}[1]{\def\@email{#1}} 299 | 300 | % Defines writer's link (optional) 301 | % Usage: \link{} 302 | \newcommand*{\link}[1]{\def\@link{#1}} 303 | 304 | % Defines writer's github (optional) 305 | % Usage: \github{} 306 | \newcommand*{\github}[1]{\def\@github{#1}} 307 | 308 | % Defines writer's github (optional) 309 | % Usage: \github{} 310 | \newcommand*{\location}[1]{\def\@location{#1}} 311 | 312 | % Defines writer's linked-in (optional) 313 | % Usage: \linkedin{} 314 | \newcommand*{\linkedin}[1]{\def\@linkedin{#1}} 315 | 316 | % Defines writer's stackoverflow profile (optional) 317 | % Usage: \stackoverflow{}{} 318 | % e.g.https://stackoverflow.com/users/123456/sam-smith 319 | % would be \stackoverflow{123456}{sam-smith} 320 | \newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}} 321 | 322 | % Defines writer's skype (optional) 323 | % Usage: \skype{} 324 | \newcommand*{\skype}[1]{\def\@skype{#1}} 325 | 326 | % Defines writer's twitter (optional) 327 | % Usage: \twitter{} 328 | \newcommand*{\twitter}[1]{\def\@twitter{#1}} 329 | 330 | % Defines writer's quote (optional) 331 | % Usage: \quote{} 332 | \renewcommand*{\quote}[1]{\def\@quote{#1}} 333 | 334 | % Defines recipient's information (cover letter only) 335 | % Usage: \recipient{}{} 336 | % Usage: \recipientname{} 337 | % Usage: \recipientaddress{} 338 | \newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}} 339 | \newcommand*{\recipientname}[1]{\def\@recipientname{#1}} 340 | \newcommand*{\recipientaddress}[1]{\def\@recipientaddress{#1}} 341 | 342 | % Defines the title for letter (cover letter only, optional) 343 | % Usage: \lettertitle{} 344 | \newcommand*{\lettertitle}[1]{\def\@lettertitle{#1}} 345 | 346 | % Defines the date for letter (cover letter only) 347 | % Usage: \letterdate{<date>} 348 | \newcommand*{\letterdate}[1]{\def\@letterdate{#1}} 349 | 350 | % Defines a message of opening for letter (cover letter only) 351 | % Usage: \letteropening{<message>} 352 | \newcommand*{\letteropening}[1]{\def\@letteropening{#1}} 353 | 354 | % Defines a message of closing for letter (cover letter only) 355 | % Usage: \letterclosing{<message>} 356 | \newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}} 357 | 358 | % Defines an enclosure for letter (cover letter only, optional) 359 | % Usage: \letterenclosure[<enclosure name>]{<enclosure>} 360 | \newcommand*{\letterenclname}[1][Enclosure]{\def\@letterenclname{#1}} 361 | \newcommand*{\letterenclosure}[2][]{ 362 | % if an optional argument is provided, use it to redefine \enclname 363 | \ifthenelse{\equal{#1}{}}{}{\def\@letterenclname{#1}} 364 | \def\@letterenclosure{#2} 365 | } 366 | 367 | 368 | %------------------------------------------------------------------------------- 369 | % Commands for extra 370 | %------------------------------------------------------------------------------- 371 | % Define separator for social informations in header 372 | % Usage: \headersocialsep{<separator>} 373 | % Default: \quad\textbar\quad 374 | \newcommand*{\headersocialsep}[1][\quad\textbar\quad]{\def\@headersocialsep{#1}} 375 | \headersocialsep 376 | 377 | 378 | %------------------------------------------------------------------------------- 379 | % Commands for utilities 380 | %------------------------------------------------------------------------------- 381 | % Use to align an element of tabular table 382 | \newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 383 | \newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 384 | \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 385 | 386 | % Use to draw horizontal line with specific tickness 387 | \def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@} 388 | 389 | % Use to execute conditional statements by checking empty string 390 | \newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}} 391 | 392 | 393 | %------------------------------------------------------------------------------- 394 | % Commands for elements of CV structure 395 | %------------------------------------------------------------------------------- 396 | % Define a header for CV 397 | % Usage: \makecvheader 398 | \newcommand*{\makecvheader}{ 399 | \begin{center} 400 | \headerfirstnamestyle{ 401 | \@firstname 402 | } \headerlastnamestyle{ 403 | \@lastname 404 | } 405 | \\ 406 | \vspace{0.4mm} 407 | \ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\}} 408 | \vspace{0.4mm} 409 | \ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\}} 410 | \vspace{-0.5mm} 411 | \headersocialstyle{ 412 | \newbool{isstart} 413 | \setbool{isstart}{true} 414 | \ifthenelse{\isundefined{\@mobile}} 415 | {} 416 | { 417 | \faMobile\ \@mobile 418 | \setbool{isstart}{false} 419 | } 420 | \ifthenelse{\isundefined{\@email}} 421 | {} 422 | { 423 | \ifbool{isstart} 424 | { 425 | \setbool{isstart}{false} 426 | } 427 | {\@headersocialsep} 428 | \href{mailto:\@email}{\faEnvelope\ \@email} 429 | } 430 | \ifthenelse{\isundefined{\@link}} 431 | {} 432 | { 433 | \ifbool{isstart} 434 | { 435 | \setbool{isstart}{false} 436 | } 437 | {\@headersocialsep} 438 | \href{http://\@link}{\faLink\ \@link} 439 | } 440 | \ifthenelse{\isundefined{\@github}} 441 | {} 442 | { 443 | \ifbool{isstart} 444 | { 445 | \setbool{isstart}{false} 446 | } 447 | {\@headersocialsep} 448 | \href{https://github.com/\@github}{\faGithubSquare\ \@github} 449 | } 450 | \ifthenelse{\isundefined{\@stackoverflowid}} 451 | {} 452 | { 453 | \ifbool{isstart} 454 | { 455 | \setbool{isstart}{false} 456 | } 457 | {\@headersocialsep} 458 | \href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\ \@stackoverflowname} 459 | } 460 | \ifthenelse{\isundefined{\@linkedin}} 461 | {} 462 | { 463 | \ifbool{isstart} 464 | { 465 | \setbool{isstart}{false} 466 | } 467 | {\@headersocialsep} 468 | \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\ \@linkedin} 469 | } 470 | \ifthenelse{\isundefined{\@location}} 471 | {} 472 | { 473 | \ifbool{isstart} 474 | { 475 | \setbool{isstart}{false} 476 | } 477 | {\@headersocialsep} 478 | {}{\faMapMarker\ \@location} 479 | } 480 | \ifthenelse{\isundefined{\@twitter}} 481 | {} 482 | { 483 | \ifbool{isstart} 484 | { 485 | \setbool{isstart}{false} 486 | } 487 | {\@headersocialsep} 488 | \href{https://twitter.com/\@twitter}{\faTwitter\ \@twitter} 489 | } 490 | \ifthenelse{\isundefined{\@skype}} 491 | {} 492 | { 493 | \ifbool{isstart} 494 | { 495 | \setbool{isstart}{false} 496 | } 497 | {\@headersocialsep} 498 | \faSkype\ \@skype 499 | } 500 | } \\ 501 | \ifthenelse{\isundefined{\@quote}} 502 | {} 503 | {\vspace{6.0mm}\headerquotestyle{\@quote\\}\vspace{5.0mm}} 504 | \end{center} 505 | } 506 | 507 | % Define a footer for CV 508 | % Usage: \makecvfooter{<left>}{<center>}{<right>} 509 | \newcommand*{\makecvfooter}[3]{ 510 | \fancyfoot{} 511 | \fancyfoot[L]{ 512 | \footerstyle{#1} 513 | } 514 | \fancyfoot[C]{ 515 | \footerstyle{#2} 516 | } 517 | \fancyfoot[R]{ 518 | \footerstyle{#3} 519 | } 520 | } 521 | 522 | % Define a section for CV 523 | % Usage: \cvsection{<section-title>} 524 | \newcommand{\cvsection}[1]{ 525 | \par\addvspace{1.5ex} 526 | \phantomsection{} 527 | \sectionstyle{#1} 528 | \color{gray}\vhrulefill{0.9pt} 529 | \par\nobreak\addvspace{1ex} 530 | } 531 | 532 | % Define a subsection for CV 533 | % Usage: \cvsubsection{<subsection-title>} 534 | \newcommand{\cvsubsection}[1]{ 535 | \phantomsection{} 536 | \subsectionstyle{#1} 537 | } 538 | 539 | % Define an environment for cventry 540 | \newenvironment{cventries}{ 541 | \begin{center} 542 | }{ 543 | \end{center} 544 | } 545 | % Define an entry of cv information 546 | % Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>} 547 | \newcommand*{\cventry}[5]{ 548 | \setlength\tabcolsep{0pt} 549 | \setlength{\extrarowheight}{0pt} 550 | \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}} 551 | \ifempty{#2#3} 552 | {\entrypositionstyle{#1} & \entrydatestyle{#4} \\} 553 | {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\ 554 | \entrypositionstyle{#1} & \entrydatestyle{#4} \\} 555 | \multicolumn{2}{L{17cm}}{\descriptionstyle{#5}} \\ 556 | \end{tabular*} 557 | } 558 | 559 | % Define an environment for cvsubentry 560 | \newenvironment{cvsubentries}{ 561 | \begin{center} 562 | }{ 563 | \end{center} 564 | } 565 | % Define a subentry of cv information 566 | % Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>} 567 | \newcommand*{\cvsubentry}[4]{ 568 | \setlength\tabcolsep{0pt} 569 | \setlength{\extrarowheight}{0pt} 570 | \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}} 571 | \setlength\leftskip{0.2cm} 572 | \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}} 573 | {\subentrydatestyle{#3}}{} 574 | \ifthenelse{\equal{#1}{}} 575 | {} 576 | {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\} 577 | \ifthenelse{\equal{#4}{}} 578 | {} 579 | {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\} 580 | \end{tabular*} 581 | } 582 | 583 | % Define an environment for cvhonor 584 | \newenvironment{cvhonors}{ 585 | \begin{center} 586 | \setlength\tabcolsep{0pt} 587 | \setlength{\extrarowheight}{0pt} 588 | \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{13.0cm} R{2.5cm}} 589 | }{ 590 | \end{tabular*} 591 | \end{center} 592 | } 593 | % Define a line of cv information(honor, award or something else) 594 | % Usage: \cvhonor{<position>}{<title>}{<location>}{<date>} 595 | \newcommand*{\cvhonor}[4]{ 596 | \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} 597 | \\ 598 | } 599 | 600 | % Define an environment for cvskill 601 | \newenvironment{cvskills}{ 602 | \begin{center} 603 | \setlength\tabcolsep{1ex} 604 | \setlength{\extrarowheight}{0pt} 605 | \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{15.2cm}} 606 | }{ 607 | \end{tabular*} 608 | \end{center} 609 | } 610 | % Define a line of cv information(skill) 611 | % Usage: \cvskill{<type>}{<skillset>} 612 | \newcommand*{\cvskill}[2]{ 613 | \skilltypestyle{#1} & \skillsetstyle{#2} 614 | \\ 615 | } 616 | 617 | % Define an environment for cvitems(for cventry) 618 | \newenvironment{cvitems}{ 619 | \vspace{-4mm} 620 | \begin{justify} 621 | \begin{itemize}[leftmargin=2ex, nosep, noitemsep] 622 | \setlength{\parskip}{0pt} 623 | \renewcommand{\labelitemi}{\bullet} 624 | }{ 625 | \end{itemize} 626 | \end{justify} 627 | \vspace{-2mm} 628 | } 629 | 630 | 631 | %------------------------------------------------------------------------------- 632 | % Commands for elements of Cover Letter 633 | %------------------------------------------------------------------------------- 634 | % Define an environment for cvletter 635 | \newenvironment{cvletter}{ 636 | \lettertextstyle 637 | }{ 638 | } 639 | 640 | % Define a paragraph for cvletter 641 | % Usage: \cvparagraph{<paragraph-title>} 642 | \newcommand{\cvparagraph}[1]{ 643 | \par\addvspace{2.5ex} 644 | \phantomsection{} 645 | \paragraphstyle{#1} 646 | \color{gray}\vhrulefill{0.9pt} 647 | \par\nobreak\addvspace{0.4ex} 648 | } 649 | 650 | % Define a title of the cover letter 651 | % Usage: \makelettertitle 652 | \newcommand*{\makelettertitle}{ 653 | \vspace{8.4mm} 654 | \setlength\tabcolsep{0pt} 655 | \setlength{\extrarowheight}{0pt} 656 | \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}} 657 | \recipienttitlestyle{\@recipientname} & \letterdatestyle{\@letterdate} 658 | \end{tabular*} 659 | \begin{singlespace} 660 | \recipientaddressstyle{\@recipientaddress} \\\\ 661 | \end{singlespace} 662 | \ifthenelse{\isundefined{\@lettertitle}} 663 | {} 664 | {\lettertitlestyle{\@lettertitle} \\} 665 | \lettertextstyle{\@letteropening} 666 | } 667 | 668 | % Define a closing of the cover letter 669 | % Usage: \makeletterclosing 670 | \newcommand*{\makeletterclosing}{ 671 | \vspace{3.4mm} 672 | \lettertextstyle{\@letterclosing} \\\\ 673 | \letternamestyle{\@firstname \@lastname} 674 | \ifthenelse{\isundefined{\@letterenclosure}} 675 | {\\} 676 | { 677 | \\\\\\ 678 | \letterenclosurestyle{\@letterenclname: \@letterenclosure} \\ 679 | } 680 | } 681 | --------------------------------------------------------------------------------