From 8783654dcaade7b3b3f43d58ae7e2fbc7fda2411 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Fri, 25 Mar 2022 14:45:33 +0000 Subject: [PATCH] Add the first latex version --- .gitignore | 3 +- Makefile | 5 + cv.tex | 103 +++++++++++++++++++ images/avatar.jpg | Bin 0 -> 7828 bytes lxsameer_cv.cls | 247 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 357 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 cv.tex create mode 100644 images/avatar.jpg create mode 100644 lxsameer_cv.cls diff --git a/.gitignore b/.gitignore index f4cc275..cd7f585 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *~ -*\# \ No newline at end of file +*\# +build/ \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0691f0a --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +cv.pdf: + latexmk -f -xelatex -interaction=nonstopmode -output-directory=$(PWD)/build/ cv.tex + +.PHONY: build +build: cv.pdf diff --git a/cv.tex b/cv.tex new file mode 100644 index 0000000..3291e72 --- /dev/null +++ b/cv.tex @@ -0,0 +1,103 @@ +\documentclass{lxsameer_cv} + +\setname{Sameer}{Rahmani} +\setaddress{Dublin, Ireland} +\setmobile{+353 85 8559285} +\setmail{lxsameer@lxsameer.com} +\setposition{Senior Software Engineer} +%you can play with color of the template (red is also nice..) +\setlinkedinaccount{https://www.linkedin.com/in/lxsameer/} +\setgithubaccount{https://devheroes.codes/lxsameer} +\setthemecolor{red} + +\begin{document} +%Set variables +%You can add sections, texts, explanations just by copying the style below. +% Replace the dummy texts "\lipsum[1][x-x]\par" with actual texts. +%Create header +\headerview{} +\vspace{1ex} + + +%Sections + +\begin{multicols}{2}[] + + % Summary + \addblocktext{Summary}{% + I'm a software engineer by day and an amateur scientist by night who is + passionate about learning cutting edge technologies and adventuring in + the world of science. A Huge Free Software fan, contributor and advocate. + + I'm a language enthusiastic who implemented couple of languages and have + neck for implementing fine grain concurrency at low level. + + I'm a big data/distributed systems researcher who done several + implementation using tools like: Clojure, Kafka, Zookeeper, Mesos, Onyx, + Cassandra and some other fantastic tools. + } + %Education + \section{Education} + \experience{Azad University}{2005-2009} % chktex 8 + \explanation{B.S in Civil Engineering} + + % Skills + \section{Skills} + + \columnbreak{} + % Experience + \section{Experience} + % ==== + \role{Udemy}{Senior Staff Software Engineer}{2018-Present}{ + \jobdesc{ + \hspace{0.2cm} Played a key role in delivering the most important UFB project in + its lifetime (since 2015) which is the LearningPaths and moved to + SRE/Build team to improve the efficiency of our services and + development environments. We are using Python/Django, Docker, + AWS, K8s, Mesos, RabbitMQ, Kafka, Redshift, MySQL, Cassandra, + C/Rust and \ldots }} + + \role{PageFair}{Senior Software Engineer}{2017-2018}{ % chktex 8 + \jobdesc{ + \hspace{0.2cm} Successfully developed and maintained a very large scale and + complex system of several components using technologies like + NodeJS, Scala, Docker, AWS, Promethus, Python, Django, + PostgreSQL, RabbitMQ and \ldots }} + + \role{Buzzjective}{Senior Software Engineer}{2014-2017}{ % chktex 8 + \jobdesc{ + \hspace{0.2cm} Worked on a face to face identification service based on Germany + called identity.tm. We used RubyOnRails, AngularJS, PostgreSQL, + Websocket, WebRTC, Docker and \ldots + } + } + + \role{Yellowen}{Senior Software Engineer}{2010-2014}{ % chktex 8 + \jobdesc{ + \hspace{0.2cm} Successfully developed and managed serveral large scale web + and mobile projects Using RubyonRails, Clojure, Python/Django, + MongoDB, PostgreSQL, Riak, Redis, ElasticSearch, Fluentd, Cassandra, + Javascript and \ldots + } + } + + \role{Bayan}{Senior Software Engineer}{2009-2010}{ % chktex 8 + \jobdesc{ + \hspace{0.2cm} Worked on a large scale Python/Django SSO which is the beating +heart of Bayan services. We used MongoDB, Python, Django, +Celery, Memcached, PostgreSQL and \ldots + } + } + + \role{Yellowen}{Junior Software Engineer}{2005-2009}{ % chktex 8 + \jobdesc{ + \hspace{0.2cm} I mostly worked on a GIS software along side a huge automation + software which ran on 3000 school all over the country. We used: + Python/Django, Qt, PostGIS, PostgreSQL and \ldots + } + } + +\end{multicols} +%Footnote +\createfootnote{} +\end{document} diff --git a/images/avatar.jpg b/images/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c83678f01f442e553904af32b379d8cb4326e6a GIT binary patch literal 7828 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 +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +% This is a work based on Murat Can Karacabey's work + +\author{Sameer Rahmani} +% moved here I guess article class causes option clash with xcolor if used after loading the class +\RequirePackage[dvipsnames]{xcolor} +\LoadClass[11pt]{article} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{lxsameer_cv}[2022/03/22 lxsameer's CV Class] +\RequirePackage[sfdefault]{noto} +\RequirePackage{multicol} +\RequirePackage{etoolbox} +\RequirePackage{pgffor} +\RequirePackage{titlesec} +\RequirePackage{tikz} +\RequirePackage{fontspec} +\RequirePackage[left=0.75in,top=0.3in,right=0.75in,bottom=0.6in]{geometry} % Document margins +\RequirePackage{hyperref} +\RequirePackage{fontawesome} +\RequirePackage{mfirstuc} +\RequirePackage{ifthen} +\RequirePackage{lipsum} +\RequirePackage{array} +\pagestyle{empty} + +%Setup + +\newcommand*{\setname}[2]{\def\@firstname{#1}\def\@lastname{#2}} +\newcommand*{\setaddress}[1]{\def\@address{#1}} +\newcommand*{\setmobile}[1]{\def\@mobile{#1}} +\newcommand*{\setposition}[1]{\def\@position{#1}} +\newcommand*{\setmail}[1]{\def\@mail{#1}} +\newcommand*{\setthemecolor}[1]{\def\@themecolor{#1}} +\newcommand*{\setlinkedinaccount}[1]{\def\@linkedinaccount{#1}} +\newcommand*{\setgithubaccount}[1]{\def\@githubaccount{#1}} + +%Setup for coverletter + +\newcommand*{\setcompanyname}[1]{\def\@companyname{#1}} +\newcommand*{\setcontactperson}[1]{\def\@contactperson{#1}} +\newcommand*{\setclaimedposition}[1]{\def\@claimedposition{#1}} + + +\hypersetup{ + colorlinks=true, + urlcolor=cyan, +} + +% View commands +% Header + +% can makebox also be used? +\newcommand\headerview{ +\begin{minipage}{0.25\linewidth} + \profpic{0.22}{images/avatar} +\end{minipage}% +\hfill +\begin{minipage}{0.45\linewidth} + \center \name \\[0.05cm] + \contact % address \ mobile \\ mail +\end{minipage} +} + +%profilpicture + +\newsavebox{\picbox} +\newcommand{\profpic}[2]{% + \savebox{\picbox}{% + \includegraphics[scale=#1]{#2}}% + \tikz\node [draw, circle,% + line width=4pt, color=white,% + minimum width=\wd\picbox,minimum height=\ht\picbox,% + path picture={ \node at (path picture bounding box.center)% + {\usebox{\picbox}};}]% + {};} + +%contactsubviews + + +\newcommand{\githubview}{\href{\@linkedinaccount}{\faLinkedinSquare\ \footnotesize linkedin}} +\newcommand{\linkedinview}{\href{\@githubaccount}{\faGithubSquare\ \footnotesize github}} + +\newcommand{\name}{% + {\large \@firstname \ \textsc{\@lastname}} +} + +\newcommand{\contact}{% + {\small \@address \cps \@mobile \\ \@mail% + \\% + \linkedinview \cps \githubview \\ + } % +} + +% Covverletterview + +\newcommand\coverletter[1]{ +\\ \coverlettersubview +\section{} \vspace{1ex} +\textbf{ Dear \@contactperson, \\[0.1cm]} + #1 +} + +\newcommand\coverlettersubview{ +\begin{tabular}{>{\scshape \bfseries \color{\@themecolor}}l >{\small }l} +Company: & \@companyname \\ +Position: & \@claimedposition \\ +\end{tabular} +} + + +% Helper commands + +\newcommand\ruleafter[1]{#1~{\color{black!60!\@themecolor}\hrulefill}} % a trick to put the line with parameter in \titleformat + +%colorfulpipeseperator + +\newcommand{\cps}{{\color{\@themecolor} \quad\textbar\quad}} +\newcommand{\cpshalf}{{\color{\@themecolor} \hspace{0.2em}\textbar\hspace{0.2em}}} + +\newcommand{\coloredbullet}{{\color{\@themecolor} \textbullet}} + +% Edit section styles + +\titleformat{\section} % Customise the \section command + {\large\bfseries\scshape\raggedright\color{\@themecolor}} % Make the \section headers large (\Large), + % small capitals (\scshape) and left aligned (\raggedright) + {}{0em} % Can be used to give a prefix to all sections, like 'Section ...' + {\ruleafter} % Can be used to insert code before the heading + +\titlespacing*{\section}{-1pt}{0pt}{0pt} + +% Textview commands + +%% \newcommand{\experience}[2]{% +%% \mbox{\hspace{1em} \scshape \textbf{#1} }% +%% } + +\newcommand{\datetext}[1]{% + {\textit{\tiny \mdseries \color{gray} #1 }} +} + +\newcommand{\experience}[2]{% + \begin{small} + {\hspace{1em} \textbf{\scshape \color{black!10!\@themecolor} #1}} + \end{small} + \hfill + \datetext{#2}\\[0cm] +} +% +\newcommand{\role}[4]{% + \vbox{ + \begin{small} + {\noindent \hspace{1em} \textbf{\scshape \color{black!10!\@themecolor} #1} \jobtitle{#2}} + \end{small} + \hfill + \datetext{#3}\\[0.2cm] + \begin{small} + #4 + \end{small} + } +} + +\newcommand{\jobtitle}[1]{% + {\tiny \color{black!20!gray} #1} +} + +\newcommand{\desc}[1]{% + \begin{minipage}{0.96\linewidth} \scriptsize #1 \end{minipage} \\[0.1cm] +} + +\newcommand{\jobdesc}[1]{% + \mbox{\hspace{1.2em} \scriptsize \desc{#1}}\\[0.3cm] +} + +\newcommand{\explanation}[1]{% + \mbox{\scshape \hspace{1.2em} \footnotesize #1}\\[0.05cm] +} + + +\newcommand{\explanationdetail}[1]{% + \indent \begin{minipage}{0.96\linewidth} \footnotesize #1 \end{minipage} \\[0.1cm] +} + +\newcommand{\itemwithtext}[1]{% + \begin{minipage}{\linewidth} \footnotesize \item #1 \end{minipage} +} + +\newcommand{\addblocktext}[2]{% + \section{#1} + \indent \explanationdetail{\hspace{4ex} #2} +} + +\newcommand\createskill[2]{% + \textsc{\textbf{#1}} & #2 +} + +\newcommand\createtablecontent[1]{% + \foreach \x [count=\xi] in {#1} {\ifthenelse{\xi=1}{\x}{\\ \x}} +} + +\newcommand\createskillsanothertry[1]{%not used + \begin{tabular}{r|l} + \createtablecontent{#1} + \end{tabular} +} + +\newcommand\createskills[1]{% +\explanationdetail{ + \begin{tabular}{rl} + \makeatletter + \@for\thisitem:=#1\do{\thisitem\\[0.1cm]} + \makeatother + \end{tabular} +} +} + +\newcommand\createbullets[1]{% + \renewcommand{\labelitemi}{\coloredbullet} + \begin{itemize} + \makeatletter + \@for\thisitem:=#1\do{\itemwithtext{\thisitem}} + \makeatother + \end{itemize} +} + +\newcommand\createfootnote{% + \renewcommand{\footnotesize}{\fontsize{7pt}{11pt}\selectfont} + \renewcommand\footnoterule{\rule{0.3\linewidth}{0.5pt}} + \let\thefootnote\relax\footnote{\today\ / \href{https://github.com/muratcankaracabey/latex_cv}{source code}}}