From 0613a7051b0dc2c74f2d90cbb55c89a37f750672 Mon Sep 17 00:00:00 2001 From: Shauna Gordon Date: Wed, 11 Dec 2024 17:37:49 -0500 Subject: [PATCH] Update experience and projects to use same template Add work card and card body for reuse and to make it easier to have changes based on how old a thing is Signed-off-by: Shauna Gordon --- public/main.css | 31 ++++++++++++++---- resumes/components/base.json | 2 -- resumes/components/work.json | 30 ++++++++--------- resumes/engineering.json | 12 ++++--- src/App.vue | 4 +-- src/components/sections/Experience.vue | 32 ++++-------------- src/components/sections/Header.vue | 1 - src/components/sections/HireMe.vue | 2 +- src/components/sections/Intro.vue | 1 - src/components/sections/Projects.vue | 41 +++--------------------- src/components/sections/Publications.vue | 1 - src/components/support/WorkCard.vue | 32 ++++++++++++++++++ src/components/support/WorkCardBody.vue | 30 +++++++++++++++++ src/mixins/dateUtils.js | 5 +++ 14 files changed, 128 insertions(+), 96 deletions(-) create mode 100644 src/components/support/WorkCard.vue create mode 100644 src/components/support/WorkCardBody.vue create mode 100644 src/mixins/dateUtils.js diff --git a/public/main.css b/public/main.css index 424cd2d..5a95598 100644 --- a/public/main.css +++ b/public/main.css @@ -1,5 +1,5 @@ :root { - interpolate-size: allow-keywords; + interpolate-size: allow-keywords; /* Allow transition to/from "auto" */ } body { @@ -67,19 +67,20 @@ a { } details { - height: 1rem; + height: 1.2rem; + padding: .5rem auto; summary { cursor: pointer; } /* @media screen and (prefers-reduced-animation: no-preference) { */ - transition: all 1s; + transition: all 1s; - &[open] { - height: auto; - overflow: clip; /* Clip off contents while animating */ - } + &[open] { + height: auto; + overflow: clip; /* Clip off contents while animating */ + } /* } */ @@ -115,6 +116,22 @@ details { margin: 0; opacity: .6; } + + &:not(.old) { + & + .old { /* Target the first .old card */ + grid-column-start: 1; + position: relative; + + &::before { + content: "Work Archive"; + position: absolute; + top: -.75rem; + left: -.5rem; + font-size: 1.25rem; + opacity: .5; + } + } + } } .highlights { diff --git a/resumes/components/base.json b/resumes/components/base.json index d7d240b..4276c0f 100644 --- a/resumes/components/base.json +++ b/resumes/components/base.json @@ -10,8 +10,6 @@ }, "basics": { "name": "Shauna Gordon", - "label": "And I make things", - "summary": "I'm a problem-solver by nature and by profession. I have a natural drive to find solutions to problems spoken and unspoken. By digging down through pain points, I excel in finding the heart of issues and coming up with the best solution within the constraints of the environment.\n\nWhile I've historically specialized in PHP, I always enjoy learning new things, and have recently been neck-deep in React and Electron while at a Ruby on Rails shop, and had a lot of fun dabbling in Rust and Tauri. I've also been eyeing software architecture and program management as potential roles to grow into.", "image": "https://resume.shaunagordon.com/img/avatar.png", "email": "shauna@gordons.me", "url": "https://shaunagordon.com", diff --git a/resumes/components/work.json b/resumes/components/work.json index 7d39970..be6d14f 100644 --- a/resumes/components/work.json +++ b/resumes/components/work.json @@ -2,11 +2,11 @@ "comment": "Job history. Shouldn't change, but keeping in its own to avoid importing unnecessarily if it does.", "work": [ { - "name": "Genome Studios", - "position": "Principal Software Engineer", + "entity": "Genome Studios", + "name": "Principal Software Engineer", "url": "https://genomestudios.ca/", "startDate": "2024-01", - "summary": "Helped establish a small development studio in the gaming industry by working closely with studio founder to architect and implement technical projects, including games, supplemental engine utilities, engine features and bug fixes, and others. Worked with the Open 3D Engine (O3DE) community to submit contributions back to the project.", + "description": "Helped establish a small development studio in the gaming industry by working closely with studio founder to architect and implement technical projects, including games, supplemental engine utilities, engine features and bug fixes, and others. Worked with the Open 3D Engine (O3DE) community to submit contributions back to the project.", "highlights": [ "Provided guidance on organization and engineering direction", "Contributed to Open 3D Engine (O3DE) open source project on behalf of the company", @@ -31,12 +31,12 @@ } }, { - "name": "Custom Ink", - "position": "Senior Software Engineer", + "entity": "Custom Ink", + "name": "Senior Software Engineer", "url": "https://www.customink.com", "startDate": "2021-12", "endDate": "2023-12", - "summary": "Developed and maintained custom software to support the in-house printing facilities (IHP). Worked closely with management and user stakeholders to build software that met users' needs and made their work more efficient, while interfacing with the hardware used in the screenprinting and direct-to-garment (DTG, digital) printing process.", + "description": "Developed and maintained custom software to support the in-house printing facilities (IHP). Worked closely with management and user stakeholders to build software that met users' needs and made their work more efficient, while interfacing with the hardware used in the screenprinting and direct-to-garment (DTG, digital) printing process.", "highlights": [ "Implemented changes with an impact of $650k in annual savings", "Took ownership of software fundamental to the DTG process", @@ -56,12 +56,12 @@ } }, { - "name": "Proof Group", - "position": "Affiliate Software Engineer", + "entity": "Proof Group", + "name": "Affiliate Software Engineer", "url": "https://www.proofgeist.com", "startDate": "2018-11", "endDate": "2021-11", - "summary": "Helped manage the custom Python/Django portions of client's FileMaker-backed web application.Create a component library system that took React, Vue, or Svelt components and created self-contained Web Components for both general web use and use inside FileMaker.", + "description": "Helped manage the custom Python/Django portions of client's FileMaker-backed web application.Create a component library system that took React, Vue, or Svelt components and created self-contained Web Components for both general web use and use inside FileMaker.", "highlights": [ "Researched and developed a component library and build tool that could take Vue, React, or Svelt components and output self-contained, vanilla Web Components that could be used either in standard web applications, or within FileMaker's environment (which required additional processing to make all of the component's dependencies self-contained)." ], @@ -73,11 +73,11 @@ } }, { - "name": "Rocket Code", - "position": "Senior Backend Engineer", + "entity": "Rocket Code", + "name": "Senior Backend Engineer", "startDate": "2016-10", "endDate": "2018-02", - "summary": "Develop custom integrations between Shopify and other platforms using PHP. Work with front end developers to ensure proper data and data shape for front end work. Develop custom tools with PHP, Laravel, and VueJS that included Shopify integrations. Create and maintain Ruby Shopify checkout and cart scripts.", + "description": "Develop custom integrations between Shopify and other platforms using PHP. Work with front end developers to ensure proper data and data shape for front end work. Develop custom tools with PHP, Laravel, and VueJS that included Shopify integrations. Create and maintain Ruby Shopify checkout and cart scripts.", "highlights": [ "Worked closely with Front-End Engineers to expand Shopify's capabilities", "Built custom API-based integrations between platforms", @@ -102,11 +102,11 @@ } }, { - "name": "Core-Apps", - "position": "Engineer, GoExpo Division", + "entity": "Core-Apps", + "name": "Engineer, GoExpo Division", "startDate": "2014", "endDate": "2015", - "summary": "", + "description": "", "tech": { "php": "PHP", "laravel": "Laravel", diff --git a/resumes/engineering.json b/resumes/engineering.json index e25e2cf..3ba86b4 100644 --- a/resumes/engineering.json +++ b/resumes/engineering.json @@ -7,8 +7,12 @@ "components/volunteer.json" ], "meta": { - "version": "2.0", - "lastModified": "2024-08-30" + "version": "2.1", + "lastModified": "2024-12-10" + }, + "basics": { + "label": "And I make things", + "summary": "I'm a problem-solver by nature and by profession. I have a natural drive to find solutions to problems spoken and unspoken. By digging down through pain points, I excel in finding the heart of issues and coming up with the best solution within the constraints of the environment.\n\nWhile I've historically specialized in PHP, I always enjoy learning new things, and have recently been neck-deep in React and Electron while at a Ruby on Rails shop, and had a lot of fun dabbling in Rust and Tauri. I've also been eyeing software architecture and program management as potential roles to grow into." }, "projects": [ { @@ -72,7 +76,7 @@ { "name": "Auto Cart Builder", "entity":"Custom Ink", - "description": "I wrote the new algorithm for prioritizing orders in the screenprinting process and as part of a team, overhauled the process for 20% increase in efficiency, a significant increase in our \"delivered error-free, on-time\" metrics, and near-elimination of facility-created \"rush\" orders.
The new process selected orders to batch together on a cart based on numerous factors, including number of screens needed, completion deadline, number of colors, and more.
Impact: $440k annual production cost savings", + "description": "I wrote the new algorithm for prioritizing orders in the screenprinting process and as part of a team, overhauled the process for 20% increase in efficiency, a significant increase in our \"delivered error-free, on-time\" metrics, and near-elimination of facility-created \"rush\" orders.
The new process selected orders to batch together on a cart based on numerous factors, including number of screens needed, completion deadline, number of colors, and more.\n\nImpact: $440k annual production cost savings", "highlights": [ "**Impact:** 20% increase in prioritization efficiency", "**Impact:** $440k cost savings per year", @@ -89,7 +93,7 @@ { "name": "Shopify-Netsuite Integration", "entity": "Rocket Code", - "description": "I built a fully unit-tested, custom, bi-directional, ETL integration layer to allow Shopify act as the store's online storefront.
This layer:", + "description": "I built a fully unit-tested, custom, bi-directional, ETL integration layer to allow Shopify act as the store's online storefront.\n\nThis layer:", "highlights": [ "Created robust, bidirectional ETL", "Responsible for planning, architecture, and implementation", diff --git a/src/App.vue b/src/App.vue index 665f1a6..55ebdfb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,10 +2,10 @@ - - + + diff --git a/src/components/sections/Experience.vue b/src/components/sections/Experience.vue index bb7a074..230c707 100644 --- a/src/components/sections/Experience.vue +++ b/src/components/sections/Experience.vue @@ -5,25 +5,7 @@

This provides the most recent history. For a full employment history, see my LinkedIn profile.

-
-
-

{{ job.position }}

-

{{ job.name }}

-

{{ job.startDate }} - {{ job.endDate || 'Current' }}

-
-
-
    -
  • {{ t }}
  • -
-
-
-
-
-
    -
  • {{ item }}
  • -
-
-
+