-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
87b1ccd
commit 1883a84
Showing
9 changed files
with
241 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
name: Build and Deploy Resume | ||
|
||
on: push | ||
|
||
permissions: | ||
contents: write | ||
packages: write | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
container: muggle7/resume:latest | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set TAG_NAME | ||
id: set_tag_name | ||
run: | | ||
echo "TAG_NAME=v$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV | ||
shell: bash | ||
|
||
- name: Build Private Resume | ||
run: | | ||
git config --global --add safe.directory /__w/resume/resume | ||
mkdir -p output | ||
make all BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) PRIVATIZE=false | ||
- name: Create Tag | ||
run: | | ||
git tag ${{ env.TAG_NAME }} | ||
git push origin ${{ env.TAG_NAME }} | ||
- name: Create Private Release | ||
id: create_private_release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
files: output/* | ||
tag_name: ${{ env.TAG_NAME }} | ||
|
||
- name: Upload Private Release Asset | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
files: output/* | ||
tag_name: ${{ env.TAG_NAME }} | ||
|
||
# Now we build the public version and create a release on the nikhil-ravi/resume-public repo | ||
- name: Build Public Resume | ||
run: | | ||
git config --global --add safe.directory /__w/resume/resume | ||
mkdir -p output | ||
make all BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) PRIVATIZE=true | ||
- name: Create Public Release | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.RELEASE_REPO_SECRET }} | ||
run: | | ||
git config --global user.email "nr337@cornell.edu" | ||
git config --global user.name "Nikhil Ravi" | ||
gh release create ${{ env.TAG_NAME }} --title ${{ env.TAG_NAME }} output/* -R ${{ env.PUBLIC_REPO_URL }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
output*/ | ||
*.log |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"emeraldwalk.runonsave": { | ||
"commands": [ | ||
{ | ||
"match": "resume.md", | ||
"isAsync": true, | ||
"cmd": "make all BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) PRIVATIZE=false" | ||
} | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# Convert Markdown (resume.md) to DOCX and PDF | ||
# prerequisites(Mac): pandoc, basictex | ||
|
||
RESUME = resume.md | ||
OUTPUT_DIR = output | ||
|
||
all: docx pdf | ||
|
||
docx: | ||
@mkdir -p $(OUTPUT_DIR) | ||
pandoc $(RESUME) -o $(OUTPUT_DIR)/NikhilRavi_CV-$(BRANCH_NAME).docx \ | ||
--lua-filter filter.lua \ | ||
-M private=$(PRIVATIZE) | ||
|
||
pdf: | ||
@mkdir -p $(OUTPUT_DIR) | ||
pandoc $(RESUME) -o $(OUTPUT_DIR)/NikhilRavi_CV-$(BRANCH_NAME).pdf \ | ||
--pdf-engine=xelatex \ | ||
--variable geometry:margin=0.5in \ | ||
--variable fontsize=8pt \ | ||
--variable documentclass=scrartcl \ | ||
--variable classoption=twoside \ | ||
--variable classoption=a4paper \ | ||
--variable lang=en \ | ||
--variable toc-depth=2 \ | ||
--variable toc-own-page=true \ | ||
--variable indent=true \ | ||
--pdf-engine-opt=--shell-escape \ | ||
--lua-filter filter.lua \ | ||
-V colorlinks=true \ | ||
-V linkcolor=blue \ | ||
-V urlcolor=blue \ | ||
-V toccolor=gray \ | ||
-M privatize=$(PRIVATIZE) | ||
|
||
clean: | ||
rm -rf $(OUTPUT_DIR) | ||
|
||
.PHONY: all docx pdf clean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# This Dockerfile is used to build a Docker image for generating a resume. | ||
# It starts with the base Ubuntu image and installs the necessary dependencies. | ||
# The image includes pandoc and make for document conversion and texlive-xetex for PDF generation. | ||
# It also copies custom fonts into the container and updates the font cache. | ||
|
||
FROM ubuntu | ||
|
||
LABEL maintainer="muggle7 <email@bla.com>" | ||
|
||
RUN apt-get update && apt-get install -y make git wget gh | ||
RUN wget https://github.com/jgm/pandoc/releases/download/3.1.11.1/pandoc-3.1.11.1-1-amd64.deb \ | ||
&& dpkg -i pandoc-3.1.11.1-1-amd64.deb \ | ||
&& rm pandoc-3.1.11.1-1-amd64.deb | ||
RUN DEBIAN_FRONTEND='noninteractive' apt-get install -y texlive-xetex \ | ||
&& rm -rf /var/lib/apt/lists/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
services: | ||
resume: | ||
image: muggle7/resume | ||
build: | ||
context: . | ||
dockerfile: Dockerfile |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
-- Function: Pandoc | ||
-- Description: This function is the entry point for the Pandoc filter. It checks | ||
-- each span element in the document for the class 'privatize'. If the class is | ||
-- found, the span is removed from the document if the privatize metadata is set | ||
-- to true. Otherwise, the span is unwrapped and its contents are returned. | ||
-- Parameters: | ||
-- - doc: The Pandoc document to be processed. | ||
function Pandoc (doc) | ||
local privatize = doc.meta['privatize'] | ||
return doc:walk { | ||
Span = function (span) | ||
if span.classes:includes 'privatize' then | ||
return privatize and | ||
{} or -- otherwise return an empty list of elements | ||
span.content -- unwrap the span, just return the contents | ||
end | ||
end | ||
} | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Nikhil Ravi | ||
|
||
New York, NY | | ||
<span class="privatize">1 (800) 800 8009 | <bla@blab.com> |</span> | ||
[nikhilravi.com](https://nikhilravi.com/) | | ||
[linkedin.com/in/nikhil--ravi](https://www.linkedin.com/in/nikhil--ravi/) | | ||
[github.com/nikhil-ravi](https://github.com/nikhil-ravi/) | ||
|
||
------------------ | ||
Doctoral student with research experience in the design and implementation of robust and privacy-preserving optimization algorithms for complex networked dynamic systems, with a focus on fault-tolerance and differential privacy for energy systems. Advanced understanding of linear algebra, statistics, stochastic processes, optimization, and probability theory. Skilled in time-series predictive modeling, causal inference, and hypothetical testing. I am looking for quantitative research/data ML science roles in Spring 2025. | ||
|
||
| **Skills** | **Projects** | | ||
|:-------|:--------------| | ||
|Python (NumPy, pandas, scikit‑learn, statsmodels, plot.ly, TensorFlow, PyTorch, Langchain, HuggingFace), Ray, JavaScript, React, Next.js, Matlab, GCP, Git, Postgres, SQL, MongoDb, Neo4J. | - [Chess-insights drawn from chess games of a player on Chess.com](https://chess.chowkabhara.com/overview) \ | ||
- [Roosevelt Island Senior Adult Center Events App](https://github.com/nikhil-ravi/cbn-ri-events/tree/main) \ | ||
- [LocalGPT: Private and context-aware Retrieval Augmented Generation (RAG)](https://github.com/nikhil-ravi/localGPT)\ | ||
- [FicRec: Personalized fanfiction recommendations using RAG](https://ficrec.nikhilravi.com/)\ | ||
- [LeetScrape: Elevate Your Coding Game with Offline LeetCode Mastery](https://leetscrape.chowkabhara.com/) \ | ||
- More on my [projects webpage](https://www.nikhilravi.com/projects) | | ||
|
||
## Education | ||
|
||
- **Ph.D. in Electrical and Computer Engineering**, *Cornell University*, New York, NY, August 2021 - May 2024 (expected) | ||
- Minor in Applied Math and Computer Science | ||
- *Research*: **Robust Privacy-preserving algorithms for energy systems** | ||
- *GPA*: 3.97/4.0 | ||
- *Relevant Coursework*: Statistical ML, Applied Probability and Stochastic, Reinforcement Learning and Optimal Control, Distributed Optimization, Bayesian Methods in ML, Causal Learning, and Inference. | ||
- **M.S. in Electrical and Computer Engineering**, *Cornell University*, New York, NY, August 2021 - May 2023 | ||
- **M.S. in Electrical Engineering**, *Arizona State University* - Tempe, AZ, August 2017 - August 2021 | ||
- Transferred to Cornell University with a 4.0/4.0 GPA and a Master's degree. | ||
- *Thesis*: **Decentralized Optimization in Adversarial Environments** | ||
- Received the 2021 Ira A. Fulton Schools of Engineering Graduate Fellowship. | ||
- **B.E. in Electrical and Electronics Engineering**, *PES Institute of Technology*, Bangalore, India, August 2013 - May 2017 | ||
- Graduated with Distinction, First Class with a 9.9/10 GPA. | ||
- Awarded the 2015 Indian Academy of Sciences Summer Research Fellowship. | ||
|
||
## Research / Work Experience | ||
|
||
- **Data Science Intern**, *Kevala, Inc.*, San Francisco, CA (Remote), May 2022 - August 2022 | ||
- Developed a deep reinforcement learning‑based tool on GCP Vertex AI to maximize batteries and plug‑in electric vehicles’ electricity price arbitrage value via charge schedule optimization, based on electricity price, solar irradiation, and load forecasts. | ||
- Developed a methodology to estimate carbon social prices for feeder‑level electricity generation. | ||
- Created data visualization dashboards using Streamlit, translating complex data sets into comprehensive visual representations. | ||
- Researched and published an internal blog on the use of racial features in ML. | ||
- **Graduate Research Assistant**, *Cornell University*, New York, NY, August 2021 - Present | ||
- Played a central role in the execution of *Provable Anonymization of Grid Data for Cyberattack Detection*, a research initiative funded by the Department of Energy, as the primary student researcher. | ||
- Oversaw data collection, analysis, and reporting, generating critical findings that significantly advanced the project's objectives. | ||
- Led innovative research initiatives within the project, including the development of | ||
- Differential private (DP) clustering algorithm for consumer classification and typical load shape generation, | ||
- DP cyber-physical attack detection methodology for SCADA systems, and | ||
- DP approach for inferring solar PV metadata and forecasting from large-scale consumer energy usage datasets. | ||
- **Graduate Teaching Assistant**, *Cornell University*, New York, NY, August 2021 - Present | ||
- ECE 5260: __Graph-Based Data Science for Networked Systems__, Fall 2021 \& Spring 2024 | ||
- ORIE 5380: __Optimization Methods__, Fall 2023 | ||
- CS 5356: __Building Startup Systems__, Spring 2023 | ||
- **Research Intern**, *Lawrence Berkeley National Laboratory*, Berkeley, CA (Remote), May 2021 – August 2021 | ||
- Developed a pipeline to ingest and clean large time‑series AMI data of an electric ISO’s consumers onto a PostgreSQL database. | ||
- Designed algorithms to publish differentially private summary statistics about consumer energy data. | ||
- **Graduate Research Assistant**, *Arizona State University*, Tempe, AZ, August 2017 - August 2021 | ||
- Designed the Electron Volt Exchange, a secure Hyperledger Fabric‑based distributed ledger for Transactive Energy. | ||
- Developed gradient‑based edge‑cutting mechanisms to build Byzantine fault‑tolerant decentralized optimization algorithms. | ||
- Designed an algorithm to infer socioeconomic preference from crowd movement dynamics data. | ||
- Managed the SINE Lab’s compute resource cluster including VM management, networking, and administration. | ||
|
||
## Selected Publications | ||
|
||
- [**"Data Privacy for the Grid: Toward a Data Privacy Standard for Inverter-Based and Distributed Energy Resources"**](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=Ka5q7nIAAAAJ&sortby=pubdate&citation_for_view=Ka5q7nIAAAAJ:UebtZRa9Y70C), IEEE Power and Energy Magazine (2023). | ||
- [**"Differential Privacy for Class-based Data: A Practical Gaussian Mechanism,"**](https://ieeexplore.ieee.org/abstract/document/10160035) IEEE Transactions on Information Forensics and Security (2023). | ||
- [**"Differentially Private K‑means Clustering Applied to Meter Data Analysis and Synthesis."**](https://ieeexplore.ieee.org/abstract/document/9799519) IEEE Transactions on Smart Grid (2022). | ||
- [**"A secure distributed ledger for transactive energy: The Electron Volt Exchange (EVE) blockchain."**](https://www.sciencedirect.com/science/article/abs/pii/S0306261920316044) Applied Energy (2021). | ||
- [**"Detection and Isolation of Adversaries in Decentralized Optimization for Non-Strongly Convex Objectives."**](https://www.sciencedirect.com/science/article/pii/S2405896319320385) IFAC Workshop on Distributed Estimation and Control in Networked Systems (2019). | ||
- [**"A Case of Distributed Optimization in Adversarial Environment."**](https://ieeexplore.ieee.org/abstract/document/8683442) IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP 2019). |