diff --git a/Templates/CandidateInfoSheet/CharlesNWybleCandidateInfo.md b/Templates/CandidateInfoSheet/CandidateInfoSheet.md similarity index 100% rename from Templates/CandidateInfoSheet/CharlesNWybleCandidateInfo.md rename to Templates/CandidateInfoSheet/CandidateInfoSheet.md diff --git a/Templates/ContactInfo/Contact-Info-Client-Submit.md b/Templates/ContactInfo/Contact-Info-Client-Submit.md deleted file mode 100644 index 6234b5e..0000000 --- a/Templates/ContactInfo/Contact-Info-Client-Submit.md +++ /dev/null @@ -1,4 +0,0 @@ -Charles N Wyble -===== - -Senior (**Staff level**) **System Engineer/SRE/Architect** with extensive Linux/Windows/Networking/Cyber security background and experience diff --git a/Templates/ContactInfo/Contact-Info.md b/Templates/ContactInfo/Contact-Info.md deleted file mode 100644 index 048294e..0000000 --- a/Templates/ContactInfo/Contact-Info.md +++ /dev/null @@ -1,6 +0,0 @@ -Charles N Wyble -===== - -Senior (**Staff level**) **System Engineer/SRE/Architect** with extensive Linux/Windows/Networking/Cyber security background and experience - -[ [Github Profile](https://github.com/reachableceo) ] . [ [Linkedin Profile](https://www.linkedin.com/in/charles-wyble-412007337) ] . [ reachableceo@reachableceo.com ] . [ 818 280 7059 ] . [ Austin TX / Raleigh NC / Remote ] diff --git a/Templates/ContactInfo/ContactInfo-ClientSubmit.md b/Templates/ContactInfo/ContactInfo-ClientSubmit.md new file mode 100644 index 0000000..0ea8fe7 --- /dev/null +++ b/Templates/ContactInfo/ContactInfo-ClientSubmit.md @@ -0,0 +1,4 @@ +{{CandidateName}} +===== + +{{CandidateOneLinerSummary}} diff --git a/Templates/ContactInfo/ContactInfo-JobBoard.md b/Templates/ContactInfo/ContactInfo-JobBoard.md new file mode 100644 index 0000000..853936b --- /dev/null +++ b/Templates/ContactInfo/ContactInfo-JobBoard.md @@ -0,0 +1,6 @@ +{{CandidateName}} +===== + +{{CandidateOneLinerSummary}} + +[ [Github Profile]({{CandidateGithub}}) ] . [ [Linkedin Profile]({{CandidateLinkedin}}) ] . [ {{CandidateEmail}} ] . [ {{CandidatePhone}} ] . [ {{CandidateLocation}} ] diff --git a/Templates/JobHistoryDetails/job1.md b/Templates/JobHistoryDetails/job1.md new file mode 100644 index 0000000..f622b8d --- /dev/null +++ b/Templates/JobHistoryDetails/job1.md @@ -0,0 +1,3 @@ +- Stuff +- Things +- Amazing project! \ No newline at end of file diff --git a/Templates/JobHistoryDetails/job2.md b/Templates/JobHistoryDetails/job2.md new file mode 100644 index 0000000..f622b8d --- /dev/null +++ b/Templates/JobHistoryDetails/job2.md @@ -0,0 +1,3 @@ +- Stuff +- Things +- Amazing project! \ No newline at end of file diff --git a/Templates/SkillsAndProjects/Projects.md b/Templates/SkillsAndProjects/Projects.md index 2831084..baa1cb6 100644 --- a/Templates/SkillsAndProjects/Projects.md +++ b/Templates/SkillsAndProjects/Projects.md @@ -1,11 +1,2 @@ -- Developed and implemented a process to switch thousands of desktops providing digital signage functionality from Fedora to Debian in a completely automated fashion using a custom initrd. -- Developed and implemented an internal private cloud orchestration and provisioning system for a hardware development engineering team that handled the entire provisioning lifecycle for physical and virtual systems. -- Developed and implemented standardized language and procedures and incident investigation automation for a large technical support organization with high turnover. -- Developed and implemented an automated order status and payment handling interactive voice response application using Angel.ccm with a backend web service returning Voice XML. This allows call center personnel to focus on revenue generating opportunities instead of administrative matters. -- Provided technician support to a team of electrical engineers building the power system for the radar of FrankenSAM in Ukraine. Handled high / low voltage wiring and plumbing and documentation of those systems. -- Provided root cause analysis , mitigation and remediation of security breaches by advanced persistent threat actors at high value targets. -- Project managed a successful brand new data center build from bare dirt to serving content in 86 days. Oversaw 8 billion dollars of capital deployment. -- Led and consulted tier 1 payment compliance industry (PCI) implementations for some of the worlds largest brands (including at a payment processor). -- Rolled out centralized Active Directory authentication, deployed Dell OpenManage, and upgraded network equipment. -- Deployed password vault, Active Directory PKI, and implemented a ground-up network redesign. -- Designed VmWare NSX network. +- Cool project 1. +- cool project 2. diff --git a/Templates/SkillsAndProjects/Skills.csv b/Templates/SkillsAndProjects/Skills.csv index 721f234..c689f34 100644 --- a/Templates/SkillsAndProjects/Skills.csv +++ b/Templates/SkillsAndProjects/Skills.csv @@ -1,20 +1,2 @@ -Linux|22 years|RHEL,Debian,Ubuntu,kickstart,PXE, LDAP,SSSD,RPM/Deb package creation, quotas,extended permissions, clustering,NFS,Samba -Unix|5 years|HPUX/Solaris -Windows|22 years|Server (2008 2016),Windows client automated deployment (7,8,10,11),Active Directory,Group Policy,WSUS,Certificate Services,AD DNS,AD DHCP,complex multiple forest and domain setups -Free/Libre/Open Source software|22 years|Apache,Postfix,Qmail,Dovecot,Courier IMAP,Nginx,Matamo,Discourse,Wordpress, Mautic,Dolibarr,Revive Ad Server,Firefly,Cloudron,Coolify,Gitea, HomeAssistant, Jenkins,Rundeck,N8N, LetsEncrypt,ACME,cfssl -Databases|22 years| MySQL,PostgreSQL, Dbeaver,PHPMyAdmin,PostGIS -Cyber Security|22 years|PCI Compliance (tier 1 implementations),OpenVAS<,Lynis,security hardening,audits,breach response and mitigation, patch and vulnerability management. AppArmor, SeLinux, Centrify, Tripwire, Integrit, OSSEC -Virtualization|22 years|VmWare,Parallels,HyperV,KVM,Xen -Networking|22 years|Linux Virtual Server(LVS),HAProxy,Ubiquiti Unifi,Opnsense,Pfsense,DNS,DHCP,IPAM,PXE,IPS,IDS,GRE,IPSEC.Wireguard,OpenVPN,Nebula,Tailscale,RADIUS. Mostly layer2 data center/campus/access some WAN,firewall,layer3 -Monitoring|22 years|Uptime Kuma,Librenms,Zabbix,Zenoss,Nagios,Elasticsearch,Logstash,Kibana(ELK) -Storage|22 years|Netapp,EMC,EqualLogic,3par,MSA,TrueNAS/ZFS,iscsi,S3,Azure Storage -Cloud|5 years|AWS,Azure,Kubernetes,Helm,Docker -Containerization|15 years|LXC,Docker,OpenVZ -Configuration management/InfrastructureAsCode(IAC)|22 years|FetchApply,Terraform/OpenTOfU,Ansible,AWX,Hashicorp Packer/Vault -Ticket / incident / project management| 22 years| Jira,ServiceNow,Redmine,RT -Git|15 years|Branching,merging,multiple teams,external vendors,submodules -SRE|5 years| Grafana,Prometheus,Signoz,Wazuh -LLM|2 years|OpenWebUI,QA/validation,RAG,data cleaning/prep -Programming|5 years|J2ME,PHP,Ruby,TCL/TK,Java,C,C++ -Automation|22 years|Bash,YAML,TOML,PowerShell,Perl -Embedded development|5 years|Raspberry pi,arduino,seeduino,Lego Mindstorms \ No newline at end of file +skill1|1 years|skill,1,details,and,stuff +skill2|2 years|skill2,2,details,and,stuff,and,things \ No newline at end of file diff --git a/Templates/WorkHistory/WorkHistory.csv b/Templates/WorkHistory/WorkHistory.csv index 8e5c361..99bc7dd 100644 --- a/Templates/WorkHistory/WorkHistory.csv +++ b/Templates/WorkHistory/WorkHistory.csv @@ -1,11 +1,2 @@ -CDK Global,Senior System Engineer,July 2024 - October 2024 -Apple Computer,Senior System Administrator,March 2024 - July 2024 -SHEIN,Staff Site Reliability Engineer,December 2022 - August 2023 -3M,Senior Site Reliability Engineer,March 2020 - November 2022 -TippingPoint,Staff System Architect,March 2012 - June 2019 -HostGator.com,Automation and Escalation Engineer,March 2011 - May 2012 -RippleTV,System Engineer,October 2008 - January 2010 -Walt Disney Internet Group,Site Reliability Engineer,August 2006 - September 2007 -Electronic Clearing House,Senior System Administrator,April 2005 - July 2006 -GSI Commerce,System Administrator,March 2002 - February 2005 -ReachableCEO Enterprises,Freelancer,January 2001 - December 2024 \ No newline at end of file +job1,Title of job 1,January 1 1970 - January 6 1980 +job2,Title of Job 2,January 1 1970 - January 6 1980 \ No newline at end of file diff --git a/build-output/client-submission/Resume.doc b/build-output/client-submission/Resume.doc new file mode 100644 index 0000000..f37439b Binary files /dev/null and b/build-output/client-submission/Resume.doc differ diff --git a/build-output/client-submission/Resume.md b/build-output/client-submission/Resume.md new file mode 100644 index 0000000..70a2a39 --- /dev/null +++ b/build-output/client-submission/Resume.md @@ -0,0 +1,30 @@ +First Middle Last +===== + + + +## Career Highlights +- Cool project 1. +- cool project 2. +\pagebreak + +## Employment History + +**job1 | Title of job 1 | January 1 1970 - January 6 1980** + +- Stuff +- Things +- Amazing project! +**job2 | Title of Job 2 | January 1 1970 - January 6 1980** + +- Stuff +- Things +- Amazing project! +\pagebreak + +## Skills + +|Skill|Experience|Skill Details| +|---|---|---| +|**skill1**|1 years|skill,1,details,and,stuff| +|**skill2**|2 years|skill2,2,details,and,stuff,and,things| diff --git a/build-output/client-submission/Resume.pdf b/build-output/client-submission/Resume.pdf new file mode 100644 index 0000000..642412d Binary files /dev/null and b/build-output/client-submission/Resume.pdf differ diff --git a/build-output/job-board/Resume.doc b/build-output/job-board/Resume.doc new file mode 100644 index 0000000..f5dd599 Binary files /dev/null and b/build-output/job-board/Resume.doc differ diff --git a/build-output/job-board/Resume.md b/build-output/job-board/Resume.md new file mode 100644 index 0000000..b6f5a87 --- /dev/null +++ b/build-output/job-board/Resume.md @@ -0,0 +1,36 @@ +First Middle Last +===== + + + +[ [Github Profile](github.com) ] . [ [Linkedin Profile](linkedin.com) ] . [ candidate@domain.com ] . [ 1 123 456 7890 ] . [ Place 1/Place 2 ] + +## Career Highlights +- Cool project 1. +- cool project 2. +\pagebreak + +## Employment History + + +**job1 | Title of job 1 | January 1 1970 - January 6 1980** + + +- Stuff +- Things +- Amazing project! + +**job2 | Title of Job 2 | January 1 1970 - January 6 1980** + + +- Stuff +- Things +- Amazing project! +\pagebreak + +## Skills + +|Skill|Experience|Skill Details| +|---|---|---| +|**skill1**|1 years|skill,1,details,and,stuff| +|**skill2**|2 years|skill2,2,details,and,stuff,and,things| diff --git a/build-output/job-board/Resume.pdf b/build-output/job-board/Resume.pdf new file mode 100644 index 0000000..58102b5 Binary files /dev/null and b/build-output/job-board/Resume.pdf differ diff --git a/build-temp/ClientSubmission.yml b/build-temp/ClientSubmission.yml index d14a5b3..8535249 100644 --- a/build-temp/ClientSubmission.yml +++ b/build-temp/ClientSubmission.yml @@ -4,4 +4,4 @@ header-center: "\\leftmark" header-right: "Page \\thepage" footer-left: "First Middle Last" urlcolor: blue -page-background: "../vendor/git.knownelement.com/ExternalVendorCode/pandoc-latex-template/examples/page-background/backgrounds" \ No newline at end of file +page-background: "../vendor/git.knownelement.com/ExternalVendorCode/pandoc-latex-template/examples/page-background/backgrounds/background3.pdf" \ No newline at end of file diff --git a/build-temp/ContactInfo-ClientSubmit.md b/build-temp/ContactInfo-ClientSubmit.md new file mode 100644 index 0000000..1fb00df --- /dev/null +++ b/build-temp/ContactInfo-ClientSubmit.md @@ -0,0 +1,4 @@ +First Middle Last +===== + + diff --git a/build-temp/ContactInfo-JobBoard.md b/build-temp/ContactInfo-JobBoard.md new file mode 100644 index 0000000..da61b09 --- /dev/null +++ b/build-temp/ContactInfo-JobBoard.md @@ -0,0 +1,6 @@ +First Middle Last +===== + + + +[ [Github Profile](github.com) ] . [ [Linkedin Profile](linkedin.com) ] . [ candidate@domain.com ] . [ 1 123 456 7890 ] . [ Place 1/Place 2 ] diff --git a/build-temp/JobBoard.yml b/build-temp/JobBoard.yml index 1f7252b..dbc9856 100644 --- a/build-temp/JobBoard.yml +++ b/build-temp/JobBoard.yml @@ -7,6 +7,6 @@ header-center: "\\leftmark" header-right: "Page \\thepage" footer-left: "First Middle Last" footer-center: "Your.Tagline.Here." -footer-right: "[Source code for this resume](https://github.com/reachableceo)" +footer-right: "[Source code for this resume](https://git.knownelement.com/reachableceo/MarkdownResume-Pipeline)" urlcolor: blue -page-background: "../vendor/git.knownelement.com/ExternalVendorCode/pandoc-latex-template/examples/page-background/backgrounds" \ No newline at end of file +page-background: "../vendor/git.knownelement.com/ExternalVendorCode/pandoc-latex-template/examples/page-background/backgrounds/background3.pdf" \ No newline at end of file diff --git a/build/build-all.sh b/build/build-all.sh index f97bef6..7dcaabc 100644 --- a/build/build-all.sh +++ b/build/build-all.sh @@ -1,25 +1,191 @@ #!/usr/bin/env bash -# shellcheck disable=SC1091 -#source "$(dirname "${BASH_SOURCE[0]}")/bash3boilerplate.sh" - -# Setup globals -#readonly BUILD_OUTPUT_DIR="../build-output" -readonly BUILD_TEMP_DIR="../build-temp" -readonly BUILDYAML_JOBBOARD="$BUILD_TEMP_DIR/JobBoard.yml" -readonly BUILDYAML_CLIENTSUBMISSION="$BUILD_TEMP_DIR/ClientSubmission.yml" - #TODO make this work. For now, editing this script and setting the below export lines is required. #source ./ResumeVariables.env export CandidateName="First Middle Last" +export CandidatePhone="1 123 456 7890" +export CandidateLocation="Place 1/Place 2" +export CandidateEmail="candidate@domain.com" +export CandidateOneLineSummary="Super awesome and stuff." +export CandidateLinkedin="linkedin.com" +export CandidateGithub="github.com" export CandidateLogo="" export CandidateTagline="Your.Tagline.Here." export ResumeSourceCode="https://git.knownelement.com/reachableceo/MarkdownResume-Pipeline" export URLCOLOR="blue" -export PAGEBACKGROUND="../vendor/git.knownelement.com/ExternalVendorCode/pandoc-latex-template/examples/page-background/backgrounds" +export PAGEBACKGROUND="../vendor/git.knownelement.com/ExternalVendorCode/pandoc-latex-template/examples/page-background/backgrounds/background3.pdf" + +#################################################### +#DO NOT CHANGE ANYTHING BELOW THIS LINE +#################################################### + +# shellcheck disable=SC1091 +#source "$(dirname "${BASH_SOURCE[0]}")/bash3boilerplate.sh" + +############################################################ +# Setup globals +############################################################ + +readonly BUILD_OUTPUT_DIR="../build-output" +readonly BUILD_TEMP_DIR="../build-temp" +readonly BUILDYAML_JOBBOARD="$BUILD_TEMP_DIR/JobBoard.yml" +readonly BUILDYAML_CLIENTSUBMISSION="$BUILD_TEMP_DIR/ClientSubmission.yml" + +echo "Cleaning up from previous runs..." + +JobBoardMarkdownOutputFile="$BUILD_OUTPUT_DIR/job-board/Resume.md" +JobBoardPDFOutputFile="$BUILD_OUTPUT_DIR/job-board/Resume.pdf" +JobBoardMSWordOutputFile="$BUILD_OUTPUT_DIR/job-board/Resume.doc" + +ClientSubmissionMarkdownOutputFile="$BUILD_OUTPUT_DIR/client-submission/Resume.md" +ClientSubmissionPDFOutputFile="$BUILD_OUTPUT_DIR/client-submission//Resume.pdf" +ClientSubmissionMSWordOutputFile="$BUILD_OUTPUT_DIR/client-submission/Resume.doc" + +rm $BUILDYAML_JOBBOARD +rm $JobBoardMarkdownOutputFile +rm $JobBoardPDFOutputFile +rm $JobBoardMSWordOutputFile + +rm $BUILDYAML_CLIENTSUBMISSION +rm $ClientSubmissionMarkdownOutputFile +rm $ClientSubmissionPDFOutputFile +rm $ClientSubmissionMSWordOutputFile # Expand variables into rendered YAML files. These will be used by pandoc to create the output artifacts ./mo ./BuildTemplate-JobBoard.yml > $BUILDYAML_JOBBOARD -./mo ./BuildTemplate-ClientSubmission.yml > $BUILDYAML_CLIENTSUBMISSION \ No newline at end of file +./mo ./BuildTemplate-ClientSubmission.yml > $BUILDYAML_CLIENTSUBMISSION + +echo "Combining markdown files into single input file for pandoc..." + +# Create contact info md file +./mo ../Templates/ContactInfo/ContactInfo-JobBoard.md > $BUILD_TEMP_DIR/ContactInfo-JobBoard.md +./mo ../Templates/ContactInfo/ContactInfo-ClientSubmit.md > $BUILD_TEMP_DIR/ContactInfo-ClientSubmit.md + +#Pull in contact info +cat $BUILD_TEMP_DIR/ContactInfo-JobBoard.md >> $JobBoardMarkdownOutputFile +echo " " >> $JobBoardMarkdownOutputFile + +cat $BUILD_TEMP_DIR/ContactInfo-ClientSubmit.md >> $ClientSubmissionMarkdownOutputFile +echo " " >> $ClientSubmissionMarkdownOutputFile + +echo "## Career Highlights" >> $JobBoardMarkdownOutputFile +echo "## Career Highlights" >> $ClientSubmissionMarkdownOutputFile + +cat ../Templates/SkillsAndProjects/Projects.md >> $JobBoardMarkdownOutputFile +echo "\pagebreak" >> $JobBoardMarkdownOutputFile + +cat ../Templates/SkillsAndProjects/Projects.md >> $ClientSubmissionMarkdownOutputFile +echo "\pagebreak" >> $ClientSubmissionMarkdownOutputFile + +echo " " >> $JobBoardMarkdownOutputFile +echo "## Employment History" >> $JobBoardMarkdownOutputFile +echo " " >> $JobBoardMarkdownOutputFile + +echo " " >> $ClientSubmissionMarkdownOutputFile +echo "## Employment History" >> $ClientSubmissionMarkdownOutputFile +echo " " >> $ClientSubmissionMarkdownOutputFile + +#And here we do some magic... +#Pull in : + +# employer +# title +# start/end dates of employment +# long form position summary data from each position + +IFS=$'\n\t' +for position in \ +$(cat ../Templates/WorkHistory/WorkHistory.csv); do + +COMPANY="$(echo $position|awk -F ',' '{print $1}')" +TITLE="$(echo $position|awk -F ',' '{print $2}')" +DATEOFEMPLOY="$(echo $position|awk -F ',' '{print $3}')" + +echo " " >> "$JobBoardMarkdownOutputFile" +echo "**$COMPANY | $TITLE | $DATEOFEMPLOY**" >> $JobBoardMarkdownOutputFile +echo " " >> "$JobBoardMarkdownOutputFile" + +echo "**$COMPANY | $TITLE | $DATEOFEMPLOY**" >> $ClientSubmissionMarkdownOutputFile +echo " " >> "$ClientSubmissionMarkdownOutputFile" + +echo " " >> "$JobBoardMarkdownOutputFile" +cat ../Templates/JobHistoryDetails/$COMPANY.md >> "$JobBoardMarkdownOutputFile" +echo " " >> "$JobBoardMarkdownOutputFile" + +cat ../Templates/JobHistoryDetails/$COMPANY.md >> "$ClientSubmissionMarkdownOutputFile" +echo " " >> "$ClientSubmissionMarkdownOutputFile" +done + +#Pull in my skills and generate a beautiful table. + +echo "\pagebreak" >> $JobBoardMarkdownOutputFile +echo " " >> "$JobBoardMarkdownOutputFile" +echo "## Skills" >> "$JobBoardMarkdownOutputFile" +echo " " >> "$JobBoardMarkdownOutputFile" + +echo "\pagebreak" >> $ClientSubmissionMarkdownOutputFile +echo " " >> "$ClientSubmissionMarkdownOutputFile" +echo "## Skills" >> "$ClientSubmissionMarkdownOutputFile" +echo " " >> "$ClientSubmissionMarkdownOutputFile" + +#Table heading +echo "|Skill|Experience|Skill Details|" >> $JobBoardMarkdownOutputFile +echo "|---|---|---|" >> $JobBoardMarkdownOutputFile + +echo "|Skill|Experience|Skill Details|" >> $ClientSubmissionMarkdownOutputFile +echo "|---|---|---|" >> $ClientSubmissionMarkdownOutputFile + +#Table rows +IFS=$'\n\t' +for skill in \ +$(cat ../Templates/SkillsAndProjects/Skills.csv); do +SKILL_NAME="$(echo $skill|awk -F '|' '{print $1}')" +SKILL_YEARS="$(echo $skill|awk -F '|' '{print $2}')" +SKILL_DETAIL="$(echo $skill|awk -F '|' '{print $3}')" +echo "|**$SKILL_NAME**|$SKILL_YEARS|$SKILL_DETAIL|" >> $JobBoardMarkdownOutputFile +echo "|**$SKILL_NAME**|$SKILL_YEARS|$SKILL_DETAIL|" >> $ClientSubmissionMarkdownOutputFile + +done +unset IFS + +echo "Generating PDF output for job board version..." + +pandoc \ +"$JobBoardMarkdownOutputFile" \ +--template eisvogel \ +--metadata-file="../build-temp/JobBoard.yml" \ +--from markdown \ +--to=pdf \ +--output $JobBoardPDFOutputFile + +echo "Generating MSWord output for job board version..." + +pandoc \ +"$JobBoardMarkdownOutputFile" \ +--metadata-file="../build-temp/JobBoard.yml" \ +--from markdown \ +--to=docx \ +--reference-doc=resume-docx-reference.docx \ +--output $JobBoardMSWordOutputFile + +echo "Generating PDF output for client submission version..." + +pandoc \ +"$ClientSubmissionMarkdownOutputFile" \ +--template eisvogel \ +--metadata-file="../build-temp/ClientSubmission.yml" \ +--from markdown \ +--to=pdf \ +--output $ClientSubmissionPDFOutputFile + +echo "Generating MSWord output for client submission version..." + +pandoc \ +"$ClientSubmissionMarkdownOutputFile" \ +--metadata-file="../build-temp/ClientSubmission.yml" \ +--from markdown \ +--to=docx \ +--reference-doc=resume-docx-reference.docx \ +--output $ClientSubmissionMSWordOutputFile \ No newline at end of file