Skip to content

Commit

Permalink
Merge pull request #5 from sinaru/update-example
Browse files Browse the repository at this point in the history
Update example and extend sections
  • Loading branch information
sinaru authored Dec 10, 2023
2 parents 6d13b70 + 5a147bf commit 7117f7c
Show file tree
Hide file tree
Showing 12 changed files with 522 additions and 59 deletions.
30 changes: 0 additions & 30 deletions examples/basic_cv.yml

This file was deleted.

Binary file added examples/sinaru_resume.pdf
Binary file not shown.
261 changes: 261 additions & 0 deletions examples/sinaru_resume.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
version: 1

profile:
name: Sinaru Gunawardena
title: Senior Software Engineer
about: >
Versatile software developer with more than 9 years experience
in the field of web application development. Consistent learner, focus
on improving skills, collect and share new knowledge while contributing
the best to the organization. A team player with collaboration experience
in Scrum and Kanban teams.
contact:
github: sinaru
mobile: +353 838315349
website: sinaru.com
email: [email protected]
linkedin: sinaru
location:
country: Ireland
city: Dublin

skills:
- area: Development
items:
- Ruby
- Ruby on Rails
- ReactJS
- ES6 JavaScript
- Vue.js 2
- area: Database
items:
- PostgreSQL
- MongoDB
- area: Testing
items:
- MiniTest
- RSpec
- Jest
- Capybara
- area: Version Control
items:
- Git
- GitHub
- area: Platforms/OS
items:
- Heroku
- AWS
- Linux

experiences:
- title: Senior Software Engineer
organisation: Kubicle
location: Dublin, Ireland
from:
month: 1
year: 2023
technologies:
- Ruby on Rails
- React
- Ruby
- Heroku
- PostgreSQL
- CircleCI
- Delayed Job
achievements:
- >
Refactored external LMS integration code to improve
maintainability by extracting and separating responsibilities
to appropriate modules and introduce new LMS integrations to
increase business feature value
- >
Improved DB query performance by factor of 100x for critical
application endpoints which includes exam, project submissions.
As a result, reduced timeout errors, and enhanced learner experience
and productivity
- Continue to improve architecture scalability and performance
- Set development standard practices for the growing team

- title: Senior Software Engineer
organisation: Edge by Ascential
location: Dublin, Ireland
to:
month: 10
year: 2022
from:
month: 7
year: 2021
technologies:
- Ruby on Rails
- React
- JSON:API Specs
- Jest
- PostgreSQL
- MySql
- RSpec
- Redis
- Snowflake
- Looker
- BitBucket
- Codefresh
achievements:
- >
Worked on the industry-leading ecommerce analytics SaaS platform mainly implementing
and maintaining web API endpoints and also work on front-end as per
the necessity of the team
- >
Drove the migration of the legacy search report to the newer data API based on
JSON:API spec and React platform where the API endpoints are designed to return
specific data for the UI to easily digest and render
- >
Senior role in code review, and fostering junior developers to write effective
production quality code
- title: Software Developer
organisation: Longboat (acquired by Advarra. Inc)
location: Dublin, Ireland
from:
month: 8
year: 2020
to:
month: 7
year: 2021
technologies:
- Ruby on Rails
- Vue.JS 2
- Jest
- MiniTest
- PostgreSQL
- Redis
- Pundit authorisation
- Sidekiq
- Tailwind CSS
- Lodash
- Codeship
achievements:
- >
Took ownership of migrating existing functionality and features of the Clinical Trial
Technology Platform to new platform based Ruby on Rails 6 for API and Vue.js for front-end
- Implement new features in an API first approach for the new platform
- Updated one of the core application (gateway) of the platform from Rails 4.2 to Rails 6.1 with Ruby 2.7.1

- title: Software Developer
organisation: Lonely Planet
location: Dublin, Ireland
from:
month: 3
year: 2016
to:
month: 6
year: 2020
technologies:
- Ruby on Rails
- Ruby
- ES6 JavaScript
- Backbone.js
- PostgreSQL
- AWS
- Jenkins
- ChefDK
- SASS/CSS
- Cucumber
- Rspec
- Jasmine
- Git/Github
- Docker
- Vault
- Packer
- Vagrant
- Logstash
- PagerDuty
- Envato StackMaster
achievements:
- >
Developed and maintained front-end and back-end of the multi-purpose Ruby on Rails
CMS for Lonely Planet’s content ingestion, editing, and publishing of
books in an agile team following best practices
- >
Maintained AWS infrastructure by utilizing IaC tools such as Chef and troubleshoot
issues following an on-call rotation
- >
Mentored new team members to get them up-to-speed to work in CMS and multiple number
of projects related to the CMS
- title: Full Stack Web Developer - Freelancing
organisation: Creotex
location: Kandy, Sri Lanka
from:
month: 1
year: 2015
to:
month: 1
year: 2016
technologies:
- PHP
- Laravel
- MongoDB
- MySQL
- Google Maps API
- OpenShift
- Wordpress
achievements:
- Developed and maintained web apps based on Laravel PHP framework
- Worked with local and international clients to develop WordPress
websites including customized themes and plugin development

- title: Test Automation Engineer
organisation: Zone24x7
location: Colombo, Sri Lanka
from:
month: 7
year: 2013
to:
month: 12
year: 2014
technologies:
- Ruby
- Cucumber
- Selenium Webdriver
- PhantomJS
achievements:
- Developed automation test scripts based on Cucumber, Ruby, and Selenium Webdriver.
Build, run and analyze daily test results on Jenkins servers and report defects
for two Tier 1 US retailer websites
- Developed JavaScript test scripts to run on PhantomJS for automation of a JavaScript
based plugin for an eye tracking project
- Worked in an email system project of US Tier 1 retailer to conduct regression testing
on new releases
- Handled multiple projects while supporting team members and occasional contribution to
mini projects

- title: Associate Software Engineer
organisation: Allion Technologies
location: Colombo, Sri Lanka
from:
month: 1
year: 2013
to:
month: 4
year: 2013
technologies:
- PHP
- Yii
- MySQL
achievements:
- Implemented new features on a merchant friendly Mobile Marketing application which
includes handling daily deals, special discounts and rewarding system for
its loyalty customers in Canada and the USA

education:
- institute: University of Middlesex
location: United Kingdom
degree: Bachelor of Science in Information Technology
field: Computer Science
to:
year: 2012
grade: First Class
achievements:
- Scholarship for a masters programme for the best ICBT student (2011/ 2012) –
Awarded by Middlesex University London, UK. <i>ICBT was the affiliated college in Sri Lanka for
University of Middlesex</i>.
6 changes: 5 additions & 1 deletion lib/cv_builder.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# frozen_string_literal: true

require_relative "cv_builder/version"
require_relative "cv_builder/cv_data"
require_relative "cv_builder/cv_data_sections/parse_helpers/month_parser"
require_relative "cv_builder/cv_data_sections/base"
require_relative "cv_builder/cv_data_sections/skill"
require_relative "cv_builder/cv_data_sections/experience"
require_relative "cv_builder/cv_data_sections/education"
require_relative "cv_builder/cv_data"
require_relative "cv_builder/meta_file_parser"
require_relative "cv_builder/cv_generator"
require_relative "cv_builder/arg_parser"
Expand Down
25 changes: 23 additions & 2 deletions lib/cv_builder/cv_data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

module CvBuilder
class CvData
DATA_SECTION_CLASSES = [
CvDataSection::Skill,
CvDataSection::Experience,
CvDataSection::Education
]
def initialize(hash)
@hash = hash
end
Expand All @@ -10,18 +15,34 @@ def get_bindings
binding
end

def has?(*path)
if DATA_SECTION_CLASSES.any? { |klass| path.first.instance_of? klass }
return path.first.has?(*path[1..])
end

path_s = path.map(&:to_s)
!@hash.dig(*path_s).nil?
end

def dig(*path)
if path.first.instance_of?(CvDataSection::Skill)
if DATA_SECTION_CLASSES.any? { |klass| path.first.instance_of? klass }
return path.first.dig(*path[1..])
end

# TODO: if experiences, return CvData::Experiences
path_s = path.map(&:to_s)
case path_s.first
when "skills"
@hash[path_s.first].each do |skill_hash|
yield CvDataSection::Skill.new(skill_hash)
end
when "experiences"
@hash[path_s.first].each do |skill_hash|
yield CvDataSection::Experience.new(skill_hash)
end
when "education"
@hash[path_s.first].each do |skill_hash|
yield CvDataSection::Education.new(skill_hash)
end
else
@hash.dig(*path_s)
end
Expand Down
24 changes: 24 additions & 0 deletions lib/cv_builder/cv_data_sections/base.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# frozen_string_literal: true

module CvDataSection
class Base
def initialize(hash)
@hash = hash
end

def get_bindings
binding
end

def has?(*path)
path_s = path.map(&:to_s)
data = @hash.dig(*path_s)
!data.nil?
end

def dig(*path)
path_s = path.map(&:to_s)
@hash.dig(*path_s)
end
end
end
14 changes: 14 additions & 0 deletions lib/cv_builder/cv_data_sections/education.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# frozen_string_literal: true

module CvDataSection
class Education < Base
include ParseHelper::Date

def dig(*path)
data = super
return [] if data.nil? && path.first == :achievements
return to_month(data) if path[-2..] == [:from, :month]
data
end
end
end
Loading

0 comments on commit 7117f7c

Please sign in to comment.