Skip to content

Commit

Permalink
resume improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
Ruben Kharel committed May 8, 2024
1 parent 7846e70 commit 7f0f230
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 90 deletions.
13 changes: 6 additions & 7 deletions src/_data/experience.toml
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
[[experience]]
company = "Nassec"
summary = "A young security enthusiast driven company filled with security researchers to provide ultimate security solution for websites and mobile applications."
logo = "https://rubenk.dev/companylogos/nassec.jpg"
url = "https://www.reconwithme.com/"
logo = "https://rubenk.dev/companylogos/nassec.jpeg"
url = "https://reconwithme.com"

[[experience.positions]]
title = "Security Researcher & Scripting"
title = "Security Researcher & Developer"
startdate = "2020-10-14"
enddate = "2021-01-01"
summary = "Worked on scrapping some security related stuff, developed few mini tools for scanning the web. Strongify my knowledge on OSWAP Top 10"
projects = ["scrappers", "pentesting", "OSWAP top 10"]
projects = ["Developed several web scrappers and developed different algorithm to fight different kind of bots which might poses security risk", "Did pentesting on several targets", "Learned OSWAP top 10"]

[[experience.positions]]
title = "Backend Developer"
Expand All @@ -35,7 +34,7 @@ projects = [
[[experience]]
company = "InnovateTech"
logo = "https://rubenk.dev/companylogos/innovatetech.png"
url = "https://www.innovatetech.io/"
url = "https://innovatetech.io"

[[experience.positions]]
title = "DevOps Intern"
Expand All @@ -46,7 +45,7 @@ summary = "Internship where I gained hands-on experience with Kubernetes, Helm,
[[experience]]
company = "Dharahara Clothings"
logo = "https://rubenk.dev/companylogos/dharahara_clothings.jpg"
url = "https://www.instagram.com/dharahara_clothings/?hl=en"
url = "https://instagram.com/dharahara_clothings"

[[experience.positions]]
title = "FullStack Developer"
Expand Down
2 changes: 0 additions & 2 deletions src/custom_widgets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,10 @@ pub fn footer(ui: &mut egui::Ui) {
}

pub fn organize_items(ui: &mut egui::Ui) {
// ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| {
if ui.add(egui::Button::new("Tidy up")).clicked() {
ui.ctx().memory_mut(|mem| mem.reset_areas());
ui.close_menu();
}
// });
}

pub fn separator_size(ui: &mut egui::Ui, large: bool) {
Expand Down
166 changes: 92 additions & 74 deletions src/pages/resume.rs
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ impl eframe::App for ResumePage {
.default_open(true)
.enabled(true)
.show(ctx, |ui| {
egui::ScrollArea::both().show(ui, |ui| {
egui::ScrollArea::vertical().show(ui, |ui| {
make_header(ui, &mut self.resume);

if self.resume.sections.skills {
Expand All @@ -193,16 +193,17 @@ impl eframe::App for ResumePage {
if self.resume.sections.experience {
make_experience(ui, &mut self.resume, ctx);
}
if self.resume.sections.recognition {
make_recognition(ui, &mut self.resume);
}

if self.resume.sections.education {
make_education(ui, &mut self.resume)
}
if self.resume.sections.projects {
make_projects(ui, &mut self.resume);
}

if self.resume.sections.recognition {
make_recognition(ui, &mut self.resume);
}
if self.resume.sections.interests {
make_interests(ui, &mut self.resume);
}
Expand Down Expand Up @@ -253,34 +254,38 @@ fn make_skills(ui: &mut Ui, resume: &mut Resume) {

ui.add_space(10.0);
ui.label("Tools & Technologies");
let stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));
let stroke: egui::Stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));

// TODO: Make this scrollable.
egui::ScrollArea::horizontal().show(ui, |ui| {
egui::Frame::stroke(egui::Frame::default().inner_margin(5.0), stroke).show(ui, |ui| {
egui::Grid::new("skills_grid")
.max_col_width(100.0)
.min_col_width(20.0)
.striped(true)
.spacing([10.0, 10.0])
.show(ui, |ui| {
for row in 0..resume.skills.tools_tech.len() {
let (catogery, _items) = resume.skills.tools_tech.iter().nth(row).unwrap();
ui.label(catogery);
}
ui.end_row();

for row in 0..resume.skills.tools_tech.len() {
let (_catogery, items) = resume.skills.tools_tech.iter().nth(row).unwrap();
ui.vertical(|ui| {
for item in items {
ui.label(item);
}
});
}
});
egui::ScrollArea::horizontal()
.id_source("skills_scrollarea")
.show(ui, |ui| {
egui::Frame::stroke(egui::Frame::default().inner_margin(5.0), stroke).show(ui, |ui| {
egui::Grid::new("skills_grid")
.max_col_width(100.0)
.min_col_width(20.0)
.striped(true)
.spacing([10.0, 10.0])
.show(ui, |ui| {
for row in 0..resume.skills.tools_tech.len() {
let (catogery, _items) =
resume.skills.tools_tech.iter().nth(row).unwrap();
ui.label(catogery);
}
ui.end_row();

for row in 0..resume.skills.tools_tech.len() {
let (_catogery, items) =
resume.skills.tools_tech.iter().nth(row).unwrap();
ui.vertical(|ui| {
for item in items {
ui.label(item);
}
});
}
});
});
});
});
}

fn make_experience(ui: &mut Ui, resume: &mut Resume, ctx: &egui::Context) {
Expand All @@ -293,41 +298,25 @@ fn make_experience(ui: &mut Ui, resume: &mut Resume, ctx: &egui::Context) {
install_image_loaders(ctx);

ui.horizontal(|ui| {
let image = format!("{}", experience.logo);

let image = format!("{}", experience.logo); // image url should be provided
ui.image(image);

// ui.add(
// egui::Image::new(egui::include_image!(image))
// .max_width(200.0)
// .rounding(10.0),
// );

ui.monospace(&experience.company);
});

ui.horizontal(|ui| {
ui.add(egui::Label::new(experience.summary.clone()).wrap(true));
ui.separator();
ui.label(experience.url.clone());
ui.label(&experience.url);
});
ui.spacing();
ui.add_space(10.0);
for role in &experience.roles {
ui.monospace(role.title.clone());
ui.monospace(&role.title);
ui.horizontal(|ui| {
ui.label(role.start_date.clone());
ui.label(&role.start_date);
ui.separator();
ui.label(role.end_date.clone());
ui.label(&role.end_date);
});
ui.spacing();
ui.label(role.summary.clone());
wrapped_label(ui, &role.summary);
for highlight in &role.highlights {
ui.label(highlight);
}
// if this is the last iteration dont show the separator
if !std::ptr::eq(role, experience.roles.last().unwrap()) {
ui.separator();
wrapped_label(ui, &highlight)
}
ui.add_space(5.0);
}
// if this is the last iteration dont show the separator
if !std::ptr::eq(experience, resume.experience.experiences.last().unwrap()) {
Expand All @@ -336,7 +325,56 @@ fn make_experience(ui: &mut Ui, resume: &mut Resume, ctx: &egui::Context) {
}
}

fn make_recognition(ui: &mut Ui, resume: &mut Resume) {
ui.add_space(20.0);
ui.separator();
ui.monospace("Recognition");
ui.separator();
let stroke: egui::Stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));

egui::ScrollArea::horizontal()
.id_source("recognition_scrollArea")
.show(ui, |ui| {
egui::Frame::stroke(egui::Frame::default().inner_margin(5.0), stroke).show(ui, |ui| {
egui::Grid::new("recognition_grid")
.max_col_width(200.0)
.min_col_width(20.0)
.striped(true)
.spacing([10.0, 10.0])
.show(ui, |ui| {
resume
.recognitions
.recognitions
.iter()
.for_each(|recognition| {
ui.vertical(|ui| {
ui.vertical_centered(|ui| {
ui.monospace(&recognition.name);
});

ui.vertical_centered(|ui| {
ui.horizontal(|ui| {
ui.label(format!("{}", recognition.organization));
ui.separator();
ui.label(format!("{}", recognition.year));
});
});
});
});
ui.end_row();
// TODO: Make each badge render as a badge
// on next row
});
});
});
}

fn make_education(ui: &mut Ui, resume: &mut Resume) {
ui.add_space(20.0);
ui.separator();
ui.monospace("Education");
ui.separator();

for education in &resume.education.educations {
ui.monospace(format!("{}", education.degree));
ui.horizontal(|ui| {
Expand Down Expand Up @@ -370,26 +408,6 @@ fn make_projects(ui: &mut Ui, resume: &mut Resume) {
}
}

fn make_recognition(ui: &mut Ui, resume: &mut Resume) {
for recognition in &resume.recognitions.recognitions {
ui.monospace(format!("{}", recognition.name));
ui.horizontal(|ui| {
ui.label(format!("{}", recognition.organization));
ui.separator();
ui.label(format!("{}", recognition.year));
});
ui.spacing();
ui.label(format!("{}", recognition.summary));
// if this is the last iteration dont show the separator
if !std::ptr::eq(
recognition,
resume.recognitions.recognitions.last().unwrap(),
) {
ui.separator();
}
}
}

fn make_interests(ui: &mut Ui, resume: &mut Resume) {
for interest in &resume.interests.interests {
ui.label(format!("{}", interest.description));
Expand Down
7 changes: 0 additions & 7 deletions src/pages/resume/experience.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ pub struct Role {
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Experience {
pub company: String,
pub summary: String,
pub logo: String,
pub url: String,
pub roles: Vec<Role>,
Expand Down Expand Up @@ -55,11 +54,6 @@ impl Default for Experiences {
.and_then(|s| s.as_str())
.unwrap_or("")
.to_string();
let summary = x
.get("summary")
.and_then(|s| s.as_str())
.unwrap_or("")
.to_string();
let logo = x
.get("logo")
.and_then(|s| s.as_str())
Expand Down Expand Up @@ -111,7 +105,6 @@ impl Default for Experiences {

Experience {
company,
summary,
logo,
url,
roles,
Expand Down

0 comments on commit 7f0f230

Please sign in to comment.