diff --git a/.github/workflows/pdf.yml b/.github/workflows/pdf.yml index 055898d..e5681c1 100644 --- a/.github/workflows/pdf.yml +++ b/.github/workflows/pdf.yml @@ -5,9 +5,6 @@ on: tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 -env: - CARGO_TERM_COLOR: always - jobs: build: runs-on: ubuntu-latest @@ -16,11 +13,6 @@ jobs: - name: Set up Git repository uses: actions/checkout@v2 - - name: Generate Latex Doc - run: | - cargo install jsonresume-renderer - $HOME/.cargo/bin/jsonresume-renderer -j $GITHUB_WORKSPACE/config/resume.json -t $GITHUB_WORKSPACE/templates/resume.tex -o resume.tex - - name: Compile LaTeX document uses: xu-cheng/latex-action@v2 with: diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml deleted file mode 100644 index b3c2ef3..0000000 --- a/.github/workflows/website.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Publish Website - -on: - push: - tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Deploy - uses: exuanbo/actions-deploy-gist@v1 - with: - token: ${{ secrets.GIST_TOKEN }} - gist_id: 8b9968e55c42122dbb45639224438dc3 - file_path: config/resume.json diff --git a/.gitignore b/.gitignore index fb85375..8343cae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea/ *.iml -/resume.* \ No newline at end of file +.envrc +.direnv +result \ No newline at end of file diff --git a/README.md b/README.md index 08cdbf6..1f844b7 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,6 @@ This repo generates my resume, using [JSON Resume standard](https://jsonresume.o ## PDF Generation -A workflow uses the [jsonresume-renderer](https://github.com/gapuchi/jsonresume-renderer). The JSON resume file and LaTex template file present in this repo are passed to the `jsonresume-renderer` binary, which generates a LaTex file. [github-action-for-latex](https://github.com/marketplace/actions/github-action-for-latex) compiles the generated latex file to a PDF. Both the LaTex and PDF files are uploaded as assets to this repo's releases. +[github-action-for-latex](https://github.com/marketplace/actions/github-action-for-latex) compiles the generated latex file to a PDF. Both the LaTex and PDF files are uploaded as assets to this repo's releases. Check out the [Releases](https://github.com/gapuchi/resume/releases) for my latest resume. - -## Website - -A workflow pushes my `resume.json` to a public Github Gist, which is then rendered by [JSON Resume](https://jsonresume.org/getting-started/). - -Check out my [resume website](https://registry.jsonresume.org/gapuchi). \ No newline at end of file diff --git a/config/resume.json b/config/resume.json deleted file mode 100644 index 4d66af3..0000000 --- a/config/resume.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "meta": { - "theme": "elegant" - }, - "basics": { - "name": "Arjun Adhia", - "label": "Software Development Engineer", - "image": "https://avatars.githubusercontent.com/u/9140008?v=4", - "picture": "https://avatars.githubusercontent.com/u/9140008?v=4", - "email": "arjun.adhia@gmail.com", - "phone": "(704) 658-6570", - "url": "https://arjun.adhia.net", - "summary": "", - "location": { - "address": "2610 1st Ave W", - "postalCode": "98119", - "city": "Seattle", - "countryCode": "US", - "region": "Washington" - }, - "profiles": [ - { - "url": "https://github.com/gapuchi", - "username": "gapuchi", - "network": "github" - } - ] - }, - "work": [ - { - "name": "Amazon EMR Serverless (Amazon Web Services)", - "position": "Software Development Engineer II", - "startDate": "2021-04-01", - "highlights": [ - "Led the design, implementation, and release of custom EMR Serverless images, enabling customers to install/configure packages optimized for their workloads and integrate with current CI/CD best practices. +100 customers successfully submitted +5000 jobs within the first two months of launch.", - "Contributed towards launching AWS EMR Serverless, a new AWS EMR offering which enables clients to setup an EMR cluster 75% faster. This is achieved by avoiding the need to setup, maintain, or configure EC2 hosts or EKS clusters.", - "Developed one of EMR Serverless control plane components with >99% availability and >15 TPS at launch that provides nodes to client's distributed application (i.e. Spark and Hive)", - "Improved clients' applications' start-time by >85% by 1/ adding an application configuration to clients that proactively created nodes before application submission and 2/ evaluated various optimization strategies to reduce Docker images pull times by 90%.", - "Designed a multi-tenant service that enables multiple clients to run applications while ensuring network and compute isolation between clients.", - "Led the implementation of metrics and creation of monitoring dashboards in parts of EMR Serverless to improve debugging and proactively identify issues." - ] - }, - { - "name": "Universal Brand Catalog (Amazon.com)", - "position": "Software Development Engineer", - "startDate": "2017-08-01", - "endDate": "2021-04-01", - "highlights": [ - "Developed a system that maps over 30 billion products to an Amazon brand database daily to discover products and brands not present in the Amazon Catalog and to determine brands’ selling potentials", - "Maintained a platform (Crater) built on top of AWS Mechanical Turk to allow users to consolidate worker responses manually, increasing accuracy of responses when compared to the default string comparison", - "Developed a Crater feature to allow users to choose which workers gets paid, saving the original costs of paying all workers, regardless of their responses’ quality", - "Developed a Crater feature to retrieve responses before all questions (1000+ per batch) were answered, reducing the wait time from days to minutes for downstream consumers", - "Coordinated the handoff of Crater to another team and documented parity requirements for their effort to consolidate Crater with their own platform to unify functionality across the Selection Monitoring org" - ] - }, - { - "name": "Advertising Platform (Amazon.com)", - "position": "Software Development Intern", - "startDate": "2016-05-01", - "endDate": "2016-08-01", - "highlights": [ - "Worked on the Ad Products team to create a page for advertisers to preview their ads collectively", - "Maintained site consistency by working with a Sr. UX designer to create the page layout and view", - "Ensured highest usability of the application by seeking feedback from stakeholders from 3 other teams", - "Used Java and React JS to create a dynamic webpage that easily scales to show 100+ ads", - "Deployed the project into production and documented my work for future maintainance" - ] - } - ], - "education": [ - { - "institution": "University of North Carolina at Chapel Hill", - "url": "https://institution.com/", - "area": "Computer Science, Economics", - "studyType": "Bachelor of Science", - "startDate": "2013-08-01", - "endDate": "2017-05-01" - }, - { - "institution": "University of North Carolina at Chapel Hill", - "url": "https://institution.com/", - "area": "Mathematics", - "studyType": "Minor", - "startDate": "2013-08-01", - "endDate": "2017-05-01" - } - ], - "skills": [ - { - "name": "Languages", - "keywords": [ - "Java", - "Scala", - "TypeScript", - "Python", - "GoLang", - "Rust", - "SQL", - "JavaScript", - "C/C++" - ] - }, - { - "name": "AWS", - "keywords": [ - "ECS", - "ECR", - "Fargate", - "Lambda", - "Step Function", - "DynamoDB", - "CloudFormation", - "CloudWatch", - "S3", - "CDK", - "IAM", - "KMS", - "VPC" - ] - }, - { - "name": "Tooling", - "keywords": [ - "Docker + containerd", - "Apache Spark", - "Spring", - "Guice", - "React", - "CI/CD" - ] - } - ], - "projects": [ - { - "name": "jsonresume-renderer", - "startDate": "2022-06-01", - "url": "https://github.com/gapuchi/jsonresume-renderer", - "description": "Created a Rust binary that takes in a JSON Resume file and a template to render a resume file. Used this library to generate my resume in LaTex.", - "type": "application" - }, - { - "name": "mafiaBot", - "startDate": "2019-05-01", - "url": "https://github.com/gapuchi/mafiaBot", - "description": "Created a minimal Python bot on Discord so members can randomly generate teams and assigns roles for specific role-playing games (e.g. mafia)", - "type": "application" - } - ] -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..089a9ba --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1716509168, + "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "bfb7a882678e518398ce9a31a881538679f6f092", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..9da0499 --- /dev/null +++ b/flake.nix @@ -0,0 +1,41 @@ +{ + description = "LaTex Build"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + }; + + outputs = { self, nixpkgs }: { + devShells.x86_64-linux.default = + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + in pkgs.mkShell { + buildInputs = with pkgs; [ + texliveFull + ]; + }; + + packages.x86_64-linux.default = + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + in pkgs.stdenvNoCC.mkDerivation rec { + name = "hello"; + src = self; + buildInputs = with pkgs; [ + pkgs.coreutils + pkgs.texliveFull + ]; + phases = ["unpackPhase" "buildPhase" "installPhase"]; + buildPhase = '' + export PATH="${pkgs.lib.makeBinPath buildInputs}"; + mkdir -p .cache/texmf-var + env TEXMFHOME=.cache TEXMFVAR=.cache/texmf-var \ + latexmk -interaction=nonstopmode -pdf document.tex + ''; + installPhase = '' + mkdir -p $out + cp document.pdf $out/ + ''; + }; + }; +} diff --git a/resume.tex b/resume.tex new file mode 100644 index 0000000..563edbe --- /dev/null +++ b/resume.tex @@ -0,0 +1,105 @@ +\documentclass[letterpaper,11pt]{article} + +\usepackage[margin=1cm]{geometry} +\usepackage{titlesec} +\usepackage{color} +\usepackage{enumitem} +\usepackage[hidelinks]{hyperref} +\usepackage[default]{sourcesanspro} +\usepackage{fancyhdr} + +% fancyhdr config +\pagestyle{fancy} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} + +% Ensure that generate pdf is machine readable/ATS parsable +\input{glyphtounicode} +\pdfgentounicode=1 + +% enumitem config +\setlist{nosep, label=\textbullet} + +% hyperref config +\urlstyle{same} + +% titlesec config +\titleformat{\section}{ +\vspace{-4pt}\scshape\raggedright\large}{}{0em}{}[\color{black}\titlerule \vspace{-5pt}] + +% tabular config +\setlength{\tabcolsep}{0in} + +% text alignment +\raggedbottom +\raggedright + +\begin{document} + +\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} +\textbf{\href{https://arjun.adhia.net}{\Large Arjun Adhia}} & Email : \href{mailto:arjun.adhia@gmail.com}{arjun.adhia@gmail.com}\\ +\href{https://arjun.adhia.net}{https://arjun.adhia.net} & Mobile : (704) 658-6570 \\ +\end{tabular*} + +\section{Education} +\begin{itemize}[leftmargin=0.15in, label={}] + + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textbf{University of North Carolina at Chapel Hill} & Chapel Hill, NC\\\end{tabular*} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{ B.S Computer Science, Economics }} &\textit{\small{ Aug 2013 -- May 2017 }}\\\end{tabular*} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{ Minor Mathematics }} &\textit{\small{ }}\\\end{tabular*} + +\end{itemize} + +\section{Work Experience} +\begin{itemize}[leftmargin=0.15in, label={}] + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textbf{Amazon EMR Serverless (Amazon Web Services)} & Seattle, WA\\\end{tabular*} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{Software Development Engineer II}} &\textit{\small{Apr 2021 -- Present }}\\\end{tabular*} + + \begin{itemize} + \item\small{Led the design, implementation, and release of custom EMR Serverless images, enabling customers to install/configure packages optimized for their workloads and integrate with current CI/CD best practices. +100 customers successfully submitted +5000 jobs within the first two months of launch.} + \item\small{Contributed towards launching AWS EMR Serverless, a new AWS EMR offering which enables clients to setup an EMR cluster 75\% faster. This is achieved by avoiding the need to setup, maintain, or configure EC2 hosts or EKS clusters.} + \item\small{Developed one of EMR Serverless control plane components with $>$99\% availability and $>$15 TPS at launch that provides nodes to client's distributed application (i.e. Spark and Hive)} + \item\small{Improved clients' applications' start-time by $>$85\% by 1/ adding an application configuration to clients that proactively created nodes before application submission and 2/ evaluated various optimization strategies to reduce Docker images pull times by 90\%.} + \item\small{Designed a multi-tenant service that enables multiple clients to run applications while ensuring network and compute isolation between clients.} + \item\small{Led the implementation of metrics and creation of monitoring dashboards in parts of EMR Serverless to improve debugging and proactively identify issues.} + \end{itemize} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textbf{Universal Brand Catalog (Amazon.com)} & Seattle, WA\\\end{tabular*} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{Software Development Engineer}} &\textit{\small{Aug 2017 -- Apr 2021 }}\\\end{tabular*} + + \begin{itemize} + \item\small{Developed a system that maps over 30 billion products to an Amazon brand database daily to discover products and brands not present in the Amazon Catalog and to determine brands’ selling potentials} + \item\small{Maintained a platform (Crater) built on top of AWS Mechanical Turk to allow users to consolidate worker responses manually, increasing accuracy of responses when compared to the default string comparison} + \item\small{Developed a Crater feature to allow users to choose which workers gets paid, saving the original costs of paying all workers, regardless of their responses’ quality} + \item\small{Developed a Crater feature to retrieve responses before all questions (1000+ per batch) were answered, reducing the wait time from days to minutes for downstream consumers} + \item\small{Coordinated the handoff of Crater to another team and documented parity requirements for their effort to consolidate Crater with their own platform to unify functionality across the Selection Monitoring org} + \end{itemize} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textbf{Advertising Platform (Amazon.com)} & Seattle, WA\\\end{tabular*} + \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{Software Development Intern}} &\textit{\small{May 2016 -- Aug 2016 }}\\\end{tabular*} + + \begin{itemize} + \item\small{Worked on the Ad Products team to create a page for advertisers to preview their ads collectively} + \item\small{Maintained site consistency by working with a Sr. UX designer to create the page layout and view} + \item\small{Ensured highest usability of the application by seeking feedback from stakeholders from 3 other teams} + \item\small{Used Java and React JS to create a dynamic webpage that easily scales to show 100+ ads} + \item\small{Deployed the project into production and documented my work for future maintainance} + \end{itemize} + +\end{itemize} + +\section{Open Source Projects} +\begin{tabular*}{\textwidth}{p{0.20\linewidth}p{0.75\linewidth}} + \small{\textbf{jsonresume-renderer}} & \small{Created a Rust binary that takes in a JSON Resume file and a template to render a resume file. Used this library to generate my resume in LaTex.}\\ + \small{\textbf{mafiaBot}} & \small{Created a minimal Python bot on Discord so members can randomly generate teams and assigns roles for specific role-playing games (e.g. mafia)}\\ + +\end{tabular*} + +\section{Technologies} +\begin{tabular*}{\textwidth}{p{0.12\linewidth}p{0.88\linewidth}} + \small{\textbf{Languages}} & \small{Java | Scala | TypeScript | Python | GoLang | Rust | SQL | JavaScript | C/C++}\\ + \small{\textbf{AWS}} & \small{ECS | ECR | Fargate | Lambda | Step Function | DynamoDB | CloudFormation | CloudWatch | S3 | CDK | IAM | KMS | VPC}\\ + \small{\textbf{Tooling}} & \small{Docker + containerd | Apache Spark | Spring | Guice | React | CI/CD}\\ + +\end{tabular*} + +\end{document} diff --git a/templates/resume.tex b/templates/resume.tex deleted file mode 100644 index a85f9a0..0000000 --- a/templates/resume.tex +++ /dev/null @@ -1,90 +0,0 @@ -\documentclass[letterpaper,11pt]{article} - -\usepackage[margin=1cm]{geometry} -\usepackage{titlesec} -\usepackage{color} -\usepackage{enumitem} -\usepackage[hidelinks]{hyperref} -\usepackage[default]{sourcesanspro} -\usepackage{fancyhdr} - -% fancyhdr config -\pagestyle{fancy} -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\renewcommand{\footrulewidth}{0pt} - -% Ensure that generate pdf is machine readable/ATS parsable -\input{glyphtounicode} -\pdfgentounicode=1 - -% enumitem config -\setlist{nosep, label=\textbullet} - -% hyperref config -\urlstyle{same} - -% titlesec config -\titleformat{\section}{ -\vspace{-4pt}\scshape\raggedright\large}{}{0em}{}[\color{black}\titlerule \vspace{-5pt}] - -% tabular config -\setlength{\tabcolsep}{0in} - -% text alignment -\raggedbottom -\raggedright - -\begin{document} - -\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} -\textbf{\href{ {{- basics.url -}} }{\Large {{ basics.name }}}} & Email : \href{mailto:{{ basics.email }}}{ {{- basics.email -}} }\\ -\href{ {{- basics.url -}} }{ {{- basics.url -}} } & Mobile : {{ basics.phone }} \\ -\end{tabular*} - -\section{Education} -\begin{itemize}[leftmargin=0.15in, label={}] - - \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textbf{ {{- education.0.institution -}} } & Chapel Hill, NC\\\end{tabular*} - - {%- for area in education %} - \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{ {% if area.studyType == "Bachelor of Science" %} B.S {{area.area}} {% else %} Minor {{area.area}} {% endif %} }} &\textit{\small{ {% if loop.first %} {{area.startDate | date(format="%b %Y")}} -- {{area.endDate | date(format="%b %Y")}} {% endif %} }}\\\end{tabular*} - {%- endfor %} - -\end{itemize} - -\section{Work Experience} -\begin{itemize}[leftmargin=0.15in, label={}] - - {%- for job in work %} - \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textbf{ {{- job.name -}} } & Seattle, WA\\\end{tabular*} - \item\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}\textit{\small{ {{- job.position -}} }} &\textit{\small{ {{- job.startDate | date(format="%b %Y") }} -- {% if job.endDate %} {{- job.endDate | date(format="%b %Y") -}} {% else %}Present{% endif %} }}\\\end{tabular*} - - \begin{itemize} - {%- for highlight in job.highlights %} - \item\small{ {{- highlight | replace(from=">", to="$>$") | replace(from="%", to="\%") -}} } - {%- endfor %} - \end{itemize} - {%- endfor %} - -\end{itemize} - -\section{Open Source Projects} -\begin{tabular*}{\textwidth}{p{0.20\linewidth}p{0.75\linewidth}} - - {%- for project in projects %} - \small{\textbf{ {{- project.name -}} }} & \small{ {{- project.description -}} }\\ - {%- endfor %} - -\end{tabular*} - -\section{Technologies} -\begin{tabular*}{\textwidth}{p{0.12\linewidth}p{0.88\linewidth}} - - {%- for skill in skills %} - \small{\textbf{ {{- skill.name -}} }} & \small{ {%- for keyword in skill.keywords -%} {{ keyword }} {%- if not loop.last %} | {% endif -%}{%- endfor -%} }\\ - {%- endfor %} - -\end{tabular*} - -\end{document}