Skip to content

Commit 7f0f230

Browse files
author
Ruben Kharel
committed
resume improvement
1 parent 7846e70 commit 7f0f230

File tree

4 files changed

+98
-90
lines changed

4 files changed

+98
-90
lines changed

src/_data/experience.toml

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
[[experience]]
22
company = "Nassec"
3-
summary = "A young security enthusiast driven company filled with security researchers to provide ultimate security solution for websites and mobile applications."
4-
logo = "https://rubenk.dev/companylogos/nassec.jpg"
5-
url = "https://www.reconwithme.com/"
3+
logo = "https://rubenk.dev/companylogos/nassec.jpeg"
4+
url = "https://reconwithme.com"
65

76
[[experience.positions]]
8-
title = "Security Researcher & Scripting"
7+
title = "Security Researcher & Developer"
98
startdate = "2020-10-14"
109
enddate = "2021-01-01"
1110
summary = "Worked on scrapping some security related stuff, developed few mini tools for scanning the web. Strongify my knowledge on OSWAP Top 10"
12-
projects = ["scrappers", "pentesting", "OSWAP top 10"]
11+
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"]
1312

1413
[[experience.positions]]
1514
title = "Backend Developer"
@@ -35,7 +34,7 @@ projects = [
3534
[[experience]]
3635
company = "InnovateTech"
3736
logo = "https://rubenk.dev/companylogos/innovatetech.png"
38-
url = "https://www.innovatetech.io/"
37+
url = "https://innovatetech.io"
3938

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

5150
[[experience.positions]]
5251
title = "FullStack Developer"

src/custom_widgets.rs

-2
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,10 @@ pub fn footer(ui: &mut egui::Ui) {
2929
}
3030

3131
pub fn organize_items(ui: &mut egui::Ui) {
32-
// ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| {
3332
if ui.add(egui::Button::new("Tidy up")).clicked() {
3433
ui.ctx().memory_mut(|mem| mem.reset_areas());
3534
ui.close_menu();
3635
}
37-
// });
3836
}
3937

4038
pub fn separator_size(ui: &mut egui::Ui, large: bool) {

src/pages/resume.rs

+92-74
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ impl eframe::App for ResumePage {
184184
.default_open(true)
185185
.enabled(true)
186186
.show(ctx, |ui| {
187-
egui::ScrollArea::both().show(ui, |ui| {
187+
egui::ScrollArea::vertical().show(ui, |ui| {
188188
make_header(ui, &mut self.resume);
189189

190190
if self.resume.sections.skills {
@@ -193,16 +193,17 @@ impl eframe::App for ResumePage {
193193
if self.resume.sections.experience {
194194
make_experience(ui, &mut self.resume, ctx);
195195
}
196+
if self.resume.sections.recognition {
197+
make_recognition(ui, &mut self.resume);
198+
}
199+
196200
if self.resume.sections.education {
197201
make_education(ui, &mut self.resume)
198202
}
199203
if self.resume.sections.projects {
200204
make_projects(ui, &mut self.resume);
201205
}
202206

203-
if self.resume.sections.recognition {
204-
make_recognition(ui, &mut self.resume);
205-
}
206207
if self.resume.sections.interests {
207208
make_interests(ui, &mut self.resume);
208209
}
@@ -253,34 +254,38 @@ fn make_skills(ui: &mut Ui, resume: &mut Resume) {
253254

254255
ui.add_space(10.0);
255256
ui.label("Tools & Technologies");
256-
let stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));
257+
let stroke: egui::Stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));
257258

258259
// TODO: Make this scrollable.
259-
egui::ScrollArea::horizontal().show(ui, |ui| {
260-
egui::Frame::stroke(egui::Frame::default().inner_margin(5.0), stroke).show(ui, |ui| {
261-
egui::Grid::new("skills_grid")
262-
.max_col_width(100.0)
263-
.min_col_width(20.0)
264-
.striped(true)
265-
.spacing([10.0, 10.0])
266-
.show(ui, |ui| {
267-
for row in 0..resume.skills.tools_tech.len() {
268-
let (catogery, _items) = resume.skills.tools_tech.iter().nth(row).unwrap();
269-
ui.label(catogery);
270-
}
271-
ui.end_row();
272-
273-
for row in 0..resume.skills.tools_tech.len() {
274-
let (_catogery, items) = resume.skills.tools_tech.iter().nth(row).unwrap();
275-
ui.vertical(|ui| {
276-
for item in items {
277-
ui.label(item);
278-
}
279-
});
280-
}
281-
});
260+
egui::ScrollArea::horizontal()
261+
.id_source("skills_scrollarea")
262+
.show(ui, |ui| {
263+
egui::Frame::stroke(egui::Frame::default().inner_margin(5.0), stroke).show(ui, |ui| {
264+
egui::Grid::new("skills_grid")
265+
.max_col_width(100.0)
266+
.min_col_width(20.0)
267+
.striped(true)
268+
.spacing([10.0, 10.0])
269+
.show(ui, |ui| {
270+
for row in 0..resume.skills.tools_tech.len() {
271+
let (catogery, _items) =
272+
resume.skills.tools_tech.iter().nth(row).unwrap();
273+
ui.label(catogery);
274+
}
275+
ui.end_row();
276+
277+
for row in 0..resume.skills.tools_tech.len() {
278+
let (_catogery, items) =
279+
resume.skills.tools_tech.iter().nth(row).unwrap();
280+
ui.vertical(|ui| {
281+
for item in items {
282+
ui.label(item);
283+
}
284+
});
285+
}
286+
});
287+
});
282288
});
283-
});
284289
}
285290

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

295300
ui.horizontal(|ui| {
296-
let image = format!("{}", experience.logo);
297-
301+
let image = format!("{}", experience.logo); // image url should be provided
298302
ui.image(image);
299-
300-
// ui.add(
301-
// egui::Image::new(egui::include_image!(image))
302-
// .max_width(200.0)
303-
// .rounding(10.0),
304-
// );
305-
306303
ui.monospace(&experience.company);
307-
});
308-
309-
ui.horizontal(|ui| {
310-
ui.add(egui::Label::new(experience.summary.clone()).wrap(true));
311304
ui.separator();
312-
ui.label(experience.url.clone());
305+
ui.label(&experience.url);
313306
});
314-
ui.spacing();
307+
ui.add_space(10.0);
315308
for role in &experience.roles {
316-
ui.monospace(role.title.clone());
309+
ui.monospace(&role.title);
317310
ui.horizontal(|ui| {
318-
ui.label(role.start_date.clone());
311+
ui.label(&role.start_date);
319312
ui.separator();
320-
ui.label(role.end_date.clone());
313+
ui.label(&role.end_date);
321314
});
322-
ui.spacing();
323-
ui.label(role.summary.clone());
315+
wrapped_label(ui, &role.summary);
324316
for highlight in &role.highlights {
325-
ui.label(highlight);
326-
}
327-
// if this is the last iteration dont show the separator
328-
if !std::ptr::eq(role, experience.roles.last().unwrap()) {
329-
ui.separator();
317+
wrapped_label(ui, &highlight)
330318
}
319+
ui.add_space(5.0);
331320
}
332321
// if this is the last iteration dont show the separator
333322
if !std::ptr::eq(experience, resume.experience.experiences.last().unwrap()) {
@@ -336,7 +325,56 @@ fn make_experience(ui: &mut Ui, resume: &mut Resume, ctx: &egui::Context) {
336325
}
337326
}
338327

328+
fn make_recognition(ui: &mut Ui, resume: &mut Resume) {
329+
ui.add_space(20.0);
330+
ui.separator();
331+
ui.monospace("Recognition");
332+
ui.separator();
333+
let stroke: egui::Stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));
334+
335+
egui::ScrollArea::horizontal()
336+
.id_source("recognition_scrollArea")
337+
.show(ui, |ui| {
338+
egui::Frame::stroke(egui::Frame::default().inner_margin(5.0), stroke).show(ui, |ui| {
339+
egui::Grid::new("recognition_grid")
340+
.max_col_width(200.0)
341+
.min_col_width(20.0)
342+
.striped(true)
343+
.spacing([10.0, 10.0])
344+
.show(ui, |ui| {
345+
resume
346+
.recognitions
347+
.recognitions
348+
.iter()
349+
.for_each(|recognition| {
350+
ui.vertical(|ui| {
351+
ui.vertical_centered(|ui| {
352+
ui.monospace(&recognition.name);
353+
});
354+
355+
ui.vertical_centered(|ui| {
356+
ui.horizontal(|ui| {
357+
ui.label(format!("{}", recognition.organization));
358+
ui.separator();
359+
ui.label(format!("{}", recognition.year));
360+
});
361+
});
362+
});
363+
});
364+
ui.end_row();
365+
// TODO: Make each badge render as a badge
366+
// on next row
367+
});
368+
});
369+
});
370+
}
371+
339372
fn make_education(ui: &mut Ui, resume: &mut Resume) {
373+
ui.add_space(20.0);
374+
ui.separator();
375+
ui.monospace("Education");
376+
ui.separator();
377+
340378
for education in &resume.education.educations {
341379
ui.monospace(format!("{}", education.degree));
342380
ui.horizontal(|ui| {
@@ -370,26 +408,6 @@ fn make_projects(ui: &mut Ui, resume: &mut Resume) {
370408
}
371409
}
372410

373-
fn make_recognition(ui: &mut Ui, resume: &mut Resume) {
374-
for recognition in &resume.recognitions.recognitions {
375-
ui.monospace(format!("{}", recognition.name));
376-
ui.horizontal(|ui| {
377-
ui.label(format!("{}", recognition.organization));
378-
ui.separator();
379-
ui.label(format!("{}", recognition.year));
380-
});
381-
ui.spacing();
382-
ui.label(format!("{}", recognition.summary));
383-
// if this is the last iteration dont show the separator
384-
if !std::ptr::eq(
385-
recognition,
386-
resume.recognitions.recognitions.last().unwrap(),
387-
) {
388-
ui.separator();
389-
}
390-
}
391-
}
392-
393411
fn make_interests(ui: &mut Ui, resume: &mut Resume) {
394412
for interest in &resume.interests.interests {
395413
ui.label(format!("{}", interest.description));

src/pages/resume/experience.rs

-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ pub struct Role {
1616
#[derive(Debug, serde::Deserialize, serde::Serialize)]
1717
pub struct Experience {
1818
pub company: String,
19-
pub summary: String,
2019
pub logo: String,
2120
pub url: String,
2221
pub roles: Vec<Role>,
@@ -55,11 +54,6 @@ impl Default for Experiences {
5554
.and_then(|s| s.as_str())
5655
.unwrap_or("")
5756
.to_string();
58-
let summary = x
59-
.get("summary")
60-
.and_then(|s| s.as_str())
61-
.unwrap_or("")
62-
.to_string();
6357
let logo = x
6458
.get("logo")
6559
.and_then(|s| s.as_str())
@@ -111,7 +105,6 @@ impl Default for Experiences {
111105

112106
Experience {
113107
company,
114-
summary,
115108
logo,
116109
url,
117110
roles,

0 commit comments

Comments
 (0)