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.
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.
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.
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.
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 |
7 |
8 |
9 |
10 |
11 |
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.
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
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.
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, ...)
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++.
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.
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: Adrián Arroyo Calle y Raúl Izquierdo Buznego
58 | Fecha de publicación:
59 | Precio: 3 €
60 |
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 |
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 |
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{}
348 | \newcommand*{\letterdate}[1]{\def\@letterdate{#1}}
349 |
350 | % Defines a message of opening for letter (cover letter only)
351 | % Usage: \letteropening{}
352 | \newcommand*{\letteropening}[1]{\def\@letteropening{#1}}
353 |
354 | % Defines a message of closing for letter (cover letter only)
355 | % Usage: \letterclosing{}
356 | \newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}}
357 |
358 | % Defines an enclosure for letter (cover letter only, optional)
359 | % Usage: \letterenclosure[]{}
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{}
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{}{