From 42786bdd92581681a525730556a3ffed6cb55f0b Mon Sep 17 00:00:00 2001 From: Juan Canham Date: Tue, 17 Mar 2020 03:54:15 +0000 Subject: [PATCH] initial commit [WIP] --- .aspell.en.prepl | 1 + .aspell.en.pws | 69 +++ .gitignore | 3 + .yamllint.yaml | 9 + Makefile | 66 +++ Readme.md | 43 ++ Resume.md | 97 ++++ build.sh | 41 ++ deploy/clear-cache.sh | 9 + deploy/cloudformation/certificate.yaml | 22 + deploy/cloudformation/roles.yaml | 94 ++++ deploy/cloudformation/site.yaml | 99 ++++ deploy/deploy-cloudformation.sh | 14 + deploy/shared-functions | 18 + generate_qrcode.py | 22 + images/AWS-DevOps-Pro.png | Bin 0 -> 9248 bytes images/AWS-Developer-Associate.png | Bin 0 -> 7850 bytes images/AWS-Solutions-Architect-Associate.png | Bin 0 -> 8572 bytes images/AWS-Solutions-Architect-Pro.png | Bin 0 -> 8950 bytes images/AWS-Sysops-Associate.png | Bin 0 -> 8955 bytes images/GCP-Cloud-Architect-Pro.png | Bin 0 -> 16187 bytes images/GCP-Data-Engineer-Pro.png | Bin 0 -> 14265 bytes images/LPCI-1.png | Bin 0 -> 16255 bytes images/MCTS-Windows-7-Configuration.png | Bin 0 -> 23680 bytes images/QR.png | Bin 0 -> 498 bytes images/Salesforce-Platform-Developer.png | Bin 0 -> 18111 bytes images/Salesforce-administrator.png | Bin 0 -> 22020 bytes images/qr.png | Bin 0 -> 2519 bytes package.json | 29 ++ requirements.txt | 7 + resume.jrs.json | 319 ++++++++++++ resume.json | 1 + resume.yaml | 479 +++++++++++++++++++ settings.yaml | 50 ++ transform.py | 63 +++ 35 files changed, 1555 insertions(+) create mode 100644 .aspell.en.prepl create mode 100644 .aspell.en.pws create mode 100644 .gitignore create mode 100644 .yamllint.yaml create mode 100644 Makefile create mode 100644 Readme.md create mode 100644 Resume.md create mode 100755 build.sh create mode 100755 deploy/clear-cache.sh create mode 100644 deploy/cloudformation/certificate.yaml create mode 100644 deploy/cloudformation/roles.yaml create mode 100644 deploy/cloudformation/site.yaml create mode 100755 deploy/deploy-cloudformation.sh create mode 100644 deploy/shared-functions create mode 100755 generate_qrcode.py create mode 100644 images/AWS-DevOps-Pro.png create mode 100644 images/AWS-Developer-Associate.png create mode 100644 images/AWS-Solutions-Architect-Associate.png create mode 100644 images/AWS-Solutions-Architect-Pro.png create mode 100644 images/AWS-Sysops-Associate.png create mode 100644 images/GCP-Cloud-Architect-Pro.png create mode 100644 images/GCP-Data-Engineer-Pro.png create mode 100644 images/LPCI-1.png create mode 100644 images/MCTS-Windows-7-Configuration.png create mode 100644 images/QR.png create mode 100644 images/Salesforce-Platform-Developer.png create mode 100644 images/Salesforce-administrator.png create mode 100644 images/qr.png create mode 100644 package.json create mode 100644 requirements.txt create mode 100644 resume.jrs.json create mode 100644 resume.json create mode 100644 resume.yaml create mode 100644 settings.yaml create mode 100755 transform.py diff --git a/.aspell.en.prepl b/.aspell.en.prepl new file mode 100644 index 0000000..4c3ecb8 --- /dev/null +++ b/.aspell.en.prepl @@ -0,0 +1 @@ +personal_repl-1.1 en 0 diff --git a/.aspell.en.pws b/.aspell.en.pws new file mode 100644 index 0000000..685d6f4 --- /dev/null +++ b/.aspell.en.pws @@ -0,0 +1,69 @@ +personal_ws-1.1 en 68 +AAAAA +RaspberryPi +Grantham +DevOps +TheMajority +canham +statefull +Jinja +ElastiCache +Atlassian +Lamda +backends +unmanaged +Subreddit +subreddit +Config +orchestrator +Github +Gitlab +Rekognition +Calify +Cloudwatch +JuanCanham +pythonic +Cloudreach +Serverless +serverless +countryCode +SysOps +Powershell +Monit +Kaseya's +endDate +studyType +Cloudreach's +FastTrack +piRobotWars +Cloudformation +frontend +knowledgebase +Supporttree +whitepapers +prototyped +datacentre +skunkworks +Milkround +virtualised +Heymarket +Mopidy +CodeDeploy +Kaseya +subskills +hackathons +ChatOps +AppStream +SystemD +Musicbox +MusicBox +Norges +AnthillPro +hackathon +LinkedIn +NBIM's +natively +startDate +Kubernetes +Terraform +Ansible diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d2cf4a5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +*~ diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000..6796cd9 --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,9 @@ +--- +extends: default + +rules: + line-length: disable + document-start: disable + +ignore: | + node_modules/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b395b63 --- /dev/null +++ b/Makefile @@ -0,0 +1,66 @@ +.PHONY: help mrproper all install clean local lint prepare validate build test clear post-test deploy deploy-full + +SITENAME = cv.juancanham.com +hackmyresume=./node_modules/.bin/hackmyresume +linkchecker=linkchecker -f .linkcheckerrc --check-extern + +help: + @echo 'Targets:' + @echo ' * all [clean install deploy-full]' + @echo ' * local [lint validate build test]' + @echo ' * deploy - does not clear the CDN' + @echo ' * deploy-full [deploy clear post-test]' + @echo ' * mrproper - removes node_modues' + +all: clean install deploy-full +local: lint validate build test +deploy-full: deploy clear post-test + +mrproper: + rm -rf ./node_modules/ + +install: + pip install -r requirements.txt + npm install + +clean: + rm -r dist/* || true + +lint: + shellcheck *.sh deploy/*.sh deploy/shared-functions + spelling=$$(aspell --ignore=4 --home-dir=. list < resume.yaml) ; \ + if [ -n "$$spelling" ] ; then echo spelling errors found: $$spelling ; exit 1 ; fi + yamllint . + black *.py + pylint *.py + cfn-lint deploy/cloudformation/* + +prepare: clean resume.yaml + ./transform.py + ./generate_qrcode.py "https://$(SITENAME)" QR + cp -r images dist/ + rm dist/images/*~ + +validate: prepare + $(hackmyresume) validate dist/resume.json + $(hackmyresume) analyze dist/resume.json + +build: prepare + ./build.sh + +test: + $(linkchecker) dist/resume.html + +deploy: local + ./deploy/deploy-cloudformation.sh $(SITENAME) + aws s3 sync --delete dist/ s3://$(subst .,-,$(SITENAME)) + +clear: + ./deploy/clear-cache.sh $(SITENAME) + +post-test: + $(linkchecker) https://$(SITENAME) + wget http://${SITENAME} -O /dev/null + + + diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..1bce6c7 --- /dev/null +++ b/Readme.md @@ -0,0 +1,43 @@ +# Juan Canham's Resume Repo + +## Motivation + +As a pragmatist I want to use existing tools e.g hackmyresume, +however I also want to personalise the input format as the roles on my CV +are less important than the projects and work that I did as part of them. + +Additionally I want a single tool used to generate +* My Dynamic Web CV e.g [cv.juancanham.com](https://cv.juancanham.com) +* Public Static CVs + +## Contents +This repository contains + +* [The source yaml file used to generate my CV](resume.yaml) +* [The resultant markdown](Resume.md) +* The tools to generate my CVs + * [The script used to generate it](build.sh) + * [The settings](settings.yaml) + * [The Intermediary json passed to hackmyresume](resume.json) + * [A script to preform arbitrary transforms on yaml](transform.py) +* The tools to generate my host my CV: + * [cloudformation templates](deploy/cloudformation/) + * [scripts used to deploy them]((deploy/) +* [A makefile to tie it all together](Makefile) + + +## Dependencies +* node tools (see also [package.json]) + * work on at least node 8 + * hackmyresume + * kcv + * fresh + +* python tools (see also [requirements.txt]) + * qrcode + * awscli - used to create the static s3+cloudfront website + * linters + +## License + +Code: BSD-2-Clause diff --git a/Resume.md b/Resume.md new file mode 100644 index 0000000..ecd81f9 --- /dev/null +++ b/Resume.md @@ -0,0 +1,97 @@ +Juan Barry Manual Canham +============ +Email: cv@juancanham.com + +Web: https://cv.juancanham.com + +A Pragmatic Cloud "DevOps" Engineer, with experience at a variety of companies, across a range of technologies +driving both technological change as well as business focused outcomes. +Capable of wearing whatever hat is needed for a given job, primarily working as both: +* an architect, aligning the technical solutions to the customers requirements +* a technical lead, both delivering code and guiding/mentoring/supporting teams as required. + + +## SKILLS + + - Programming: Python Ruby Bash JavaScript Apex/Java Other Languages + - AWS: Cloudformation IAM Lambda DynamoDB Core AWS services Additional AWS services + - DevOps tools and methodologies: IaC Immutability Configuration Management TDD - Infrastructure TDD - Application Build systems Containers Init systems Agile + - Google: GCP Google deployment manager Google App Engine Google Apps + - Salesforce: Apex Configuration + +## EMPLOYMENT + +### *Open Source Developer*, [Self](https://juancanham.com) (2019-07 — Present) + +Spending a few months developing tools to make engineering in the clouds easier. And other assorted tools + - Quickly Built a tool to view twitter exports + - Begun work on a module + - Built a website to highlight the problems with FPTP + - Built a tool to monitor activity on toxic internet communities + +### *Cloud Systems Developer Lead*, [Cloudreach](https://www.cloudreach.com) (2014-03 — 2019-07) + +Worked on customer projects as a Lead/Architect and mentored a small team. + - Architect on several Enterprise engagement, at companies such as NBIM, BP, News UK, etc. + - Delivered both the architecture and implementation on multiple Cloud Access models + - Managed a team for 4 engineers, helping them get the most out of working for Cloudreach + - Helped run a city government hackathon (TFL) + +### *Role Owner (Cloud Systems Developers)*, [Cloudreach](https://www.cloudreach.com) (2016-06 — 2019-07) + +Worked with the leadership team to improve the System Developers role. + - Helped Engineers get improve their technical skills though a hands-on training workshop program + - Trained and mentored multiple sets of graduates + +### *Internal hackathons/skunkworks Developer*, [Cloudreach](https://www.cloudreach.com) (2012-02 — 2019-07) + +While at Cloudreach, worked on various spikes and hackathons + - Built Automated tanks that used image recognition to move and fire at each other. + - Built various useful internal tools, that remained in use for years + - Built a variety of IaC tools, that made deployments easier + - Won a trip to Central America + - Had project open sourced externally, by somebody that found it useful + +### *Cloud Systems Developer*, [Cloudreach](https://www.cloudreach.com) (2012-02 — 2014-03) + +Worked on technical projects on AWS, Google Apps & Salesforce both individually and as part of a team. + - Worked across 3 cloud platforms (Google, AWS, Salesforce) + - Delivered difficult Google 2 Google migrations on tight deadlines + +### *Support Engineer*, [Supporttree](https://supporttree.co.uk) (2010-01 — 2012-02) + +Full support for small businesses including end user systems, on-premise servers and cloud services. + - Worked in a user facing role, for a variety of small businesses + - Made use of automation and unix, in an otherwise manual windows environment + + + + +## EDUCATION + +### UCL (2006-09 — 2009-07) + + + +### King's School Grantham (2004-09 — 2006-07) + + + + + + + + + + + + +## INTERESTS + +- OPEN SOURCE & LINUX + +- TRAVELLING + +- PUNK ROCK, POLITICS & THE PUB + + diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..2cb27a2 --- /dev/null +++ b/build.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -e + +PATH="./node_modules/.bin/:$PATH" + +for content in $(yq -r '.generate | keys[]' settings.yaml); do + echo "=== Generating ${content} themes with hackmyresume ===" + for theme in $(yq -r ".generate.${content}.plain[]?" settings.yaml); do + hackmyresume build "dist/${content}.json" TO "dist/${theme##*-}.all" -t "$theme" + done + + echo "=== Generating ${content} themes with css ===" + if yq -ce ".generate.${content}.css" settings.yaml; then + for theme in $(yq -r ".generate.${content}.css | keys[]" settings.yaml); do + for css in $(yq -r ".generate.${content}.css[\"$theme\"][]" settings.yaml); do + hackmyresume build "dist/${content}.json" TO "dist/${css}.all" -t "./node_modules/$theme" --css "$css" + done + done + fi + + echo "=== Generating ${content} themes with kcv ===" + hackmyresume convert "dist/${content}.json" resume.json + for theme in $(yq -r ".generate.${content}.kcv[]?" settings.yaml); do + for format in html pdf; do + kcv export "dist/kcv-${theme}.${format}" --theme "$theme" + done + done + mv resume.json "dist/${content}.jrs.json" + +done +rm dist/*.*.html + +for ext in $(yq -r '.primary | keys[]' settings.yaml); do + cp "dist/$(niet ".primary.$ext" settings.yaml).$ext" "dist/resume.$ext" +done + +cp dist/"$(niet '.primary.md' settings.yaml)".md Resume.md +cp dist/full.jrs.json ./resume.jrs.json +cp dist/resume.json ./ + +cp resume.yaml dist/ diff --git a/deploy/clear-cache.sh b/deploy/clear-cache.sh new file mode 100755 index 0000000..eac7e4d --- /dev/null +++ b/deploy/clear-cache.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -e + +# shellcheck disable=SC1090 +. "$( dirname "${BASH_SOURCE[0]}" )/shared-functions" + +DISTRIBUTION=$(get-output site CloudfrontDistribution) +INVALIDATION=$(aws cloudfront create-invalidation --paths '/*' --distribution-id "$DISTRIBUTION" --query Invalidation.Id --output text) +aws cloudfront wait invalidation-completed --distribution-id "$DISTRIBUTION" --id "$INVALIDATION" diff --git a/deploy/cloudformation/certificate.yaml b/deploy/cloudformation/certificate.yaml new file mode 100644 index 0000000..bc5d4ea --- /dev/null +++ b/deploy/cloudformation/certificate.yaml @@ -0,0 +1,22 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: Template for an SSL certificate (must be deployed in us-east-1 for cloudfront) +Metadata: + License: magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later + +Parameters: + SiteName: + Type: String + Description: Name for the site + AllowedPattern: '[a-zA-Z0-9-.]{1,63}' + ConstraintDescription: must be a valid DNS name. + +Resources: + Certificate: + Type: AWS::CertificateManager::Certificate + Properties: + DomainName: !Ref SiteName + ValidationMethod: DNS + +Outputs: + CertificateARN: + Value: !Ref Certificate diff --git a/deploy/cloudformation/roles.yaml b/deploy/cloudformation/roles.yaml new file mode 100644 index 0000000..e00cdec --- /dev/null +++ b/deploy/cloudformation/roles.yaml @@ -0,0 +1,94 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: Iam Roles for account running a static S3 website with cloudfront (IAMAdmin, Admin, S3Admin/User) +Metadata: + License: magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later + +Resources: + IAMAdmin: + Type: AWS::IAM::Role + Properties: + RoleName: IAMAdmin + ManagedPolicyArns: + - arn:aws:iam::aws:policy/AWSCloudFormationFullAccess + - arn:aws:iam::aws:policy/IAMFullAccess + - arn:aws:iam::aws:policy/ReadOnlyAccess + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + AWS: arn:aws:iam::212707113393:root + Action: sts:AssumeRole + - Effect: Allow + Principal: + Federated: + - !Sub arn:aws:iam::${AWS::AccountId}:saml-provider/Google + Action: sts:AssumeRoleWithSAML + Condition: + StringEquals: + SAML:aud: https://signin.aws.amazon.com/saml + Admin: + Type: AWS::IAM::Role + Properties: + RoleName: Admin + ManagedPolicyArns: + - arn:aws:iam::aws:policy/ReadOnlyAccess + - arn:aws:iam::aws:policy/AWSCloudFormationFullAccess + - arn:aws:iam::aws:policy/AmazonS3FullAccess + - arn:aws:iam::aws:policy/AmazonRoute53FullAccess + - arn:aws:iam::aws:policy/CloudFrontFullAccess + - arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + AWS: arn:aws:iam::212707113393:root + Action: sts:AssumeRole + - Effect: Allow + Principal: + Federated: + - !Sub arn:aws:iam::${AWS::AccountId}:saml-provider/Google + Action: sts:AssumeRoleWithSAML + Condition: + StringEquals: + SAML:aud: https://signin.aws.amazon.com/saml + User: + Type: AWS::IAM::Role + Properties: + RoleName: User + ManagedPolicyArns: + - arn:aws:iam::aws:policy/ReadOnlyAccess + - !Ref UserPolicy + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + AWS: arn:aws:iam::212707113393:root + Action: sts:AssumeRole + - Effect: Allow + Principal: + Federated: + - !Sub arn:aws:iam::${AWS::AccountId}:saml-provider/Google + Action: sts:AssumeRoleWithSAML + Condition: + StringEquals: + SAML:aud: https://signin.aws.amazon.com/saml + + UserPolicy: + Type: AWS::IAM::ManagedPolicy + Properties: + Description: Grants Access to Created/Update/Delete S3 Objects & Clear Cloudfront caches + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - s3:DeleteObject + - s3:PutObject + Resource: 'arn:aws:s3:::*/*' + + - Effect: Allow + Action: cloudfront:CreateInvalidation + Resource: '*' diff --git a/deploy/cloudformation/site.yaml b/deploy/cloudformation/site.yaml new file mode 100644 index 0000000..28c6cab --- /dev/null +++ b/deploy/cloudformation/site.yaml @@ -0,0 +1,99 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: Template will deploy an s3 bucket, Route53Zone & SSL certificate to host a static website +Metadata: + License: magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later + +Parameters: + SiteName: + Type: String + Description: Name for the site + AllowedPattern: '[a-zA-Z0-9-.]{1,63}' + ConstraintDescription: must be a valid DNS name. + CertificateARN: + Type: String + +Resources: + Bucket: + Type: AWS::S3::Bucket + Properties: + BucketName: !Join [-, !Split [., !Ref SiteName]] + AccessControl: PublicRead + WebsiteConfiguration: + ErrorDocument: resume.html + IndexDocument: resume.html + + BucketPolicy: + Type: AWS::S3::BucketPolicy + Properties: + Bucket: !Ref Bucket + PolicyDocument: + Version: 2012-10-17 + Statement: + - Sid: PublicReadGetObject + Effect: Allow + Principal: '*' + Action: s3:GetObject + Resource: + - !Sub ${Bucket.Arn}/* + + Route53Zone: + Type: AWS::Route53::HostedZone + Properties: + HostedZoneConfig: + Comment: !Sub 'hosted zone for ${SiteName}' + Name: !Ref SiteName + + Route53RecordIPv4: + Type: AWS::Route53::RecordSet + Properties: + AliasTarget: + DNSName: !GetAtt CloudfrontDistribution.DomainName + HostedZoneId: Z2FDTNDATAQYW2 + HostedZoneId: !Ref Route53Zone + Name: !Ref SiteName + Type: A + + Route53RecordIPv6: + Type: AWS::Route53::RecordSet + Properties: + AliasTarget: + DNSName: !GetAtt CloudfrontDistribution.DomainName + HostedZoneId: Z2FDTNDATAQYW2 + HostedZoneId: !Ref Route53Zone + Name: !Ref SiteName + Type: AAAA + + CloudfrontDistribution: + Type: AWS::CloudFront::Distribution + Properties: + DistributionConfig: + Aliases: + - !Ref SiteName + Enabled: true + HttpVersion: http2 + IPV6Enabled: true + PriceClass: PriceClass_100 + DefaultRootObject: resume.html + ViewerCertificate: + AcmCertificateArn: !Ref CertificateARN + SslSupportMethod: sni-only + Origins: + - Id: bucket + DomainName: !GetAtt Bucket.RegionalDomainName + S3OriginConfig: + OriginAccessIdentity: '' + DefaultCacheBehavior: + DefaultTTL: 3600 + TargetOriginId: bucket + ViewerProtocolPolicy: allow-all + Compress: true + ForwardedValues: + QueryString: false + +Outputs: + HostedZoneId: + Value: !Ref Route53Zone + HostedZoneRecords: + Value: !Join [",", !GetAtt Route53Zone.NameServers] + CloudfrontDistribution: + Value: !Ref CloudfrontDistribution diff --git a/deploy/deploy-cloudformation.sh b/deploy/deploy-cloudformation.sh new file mode 100755 index 0000000..eaff863 --- /dev/null +++ b/deploy/deploy-cloudformation.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -e + +# shellcheck disable=SC1090 +. "$( dirname "${BASH_SOURCE[0]}" )/shared-functions" + +export AWS_DEFAULT_REGION=us-east-1 +deploy certificate SiteName="$SITENAME" +CERT=$(get-output certificate CertificateARN) +unset AWS_DEFAULT_REGION + +deploy site SiteName="$SITENAME" CertificateARN="$CERT" + + diff --git a/deploy/shared-functions b/deploy/shared-functions new file mode 100644 index 0000000..78795ee --- /dev/null +++ b/deploy/shared-functions @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +SITENAME=$1 +PROJECT=${SITENAME//./} + +CFN_DIR="$( dirname "${BASH_SOURCE[0]}" )/cloudformation" +DEPLOY_CMD="aws cloudformation deploy --no-fail-on-empty-changeset --tags Classification=Public Site=$SITENAME" + +deploy() { + # shellcheck disable=SC2145 + echo "deploying $1 [${@:2}]" + # shellcheck disable=SC2068 + $DEPLOY_CMD --stack-name "${PROJECT}-$1" --template-file "${CFN_DIR}/$1.yaml" --parameter-overrides ${@:2} + aws cloudformation wait stack-exists --stack-name "${PROJECT}-$1" +} + +get-output() { + aws cloudformation describe-stacks --stack-name "${PROJECT}-$1" --query "Stacks[0].Outputs[?OutputKey==\`$2\`].OutputValue" --output text +} diff --git a/generate_qrcode.py b/generate_qrcode.py new file mode 100755 index 0000000..cfdc2e8 --- /dev/null +++ b/generate_qrcode.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"Creates a QR code with a smaller border than the standard cli" +import sys +import os +from qrcode import QRCode + + +def generate_qrcode(site, filename): + """ Function to generate QR code wth boarder of 1 """ + qrcode = QRCode(border=1) + qrcode.add_data(site) + qrcode.make() + + img = qrcode.make_image() + + filename = os.path.join("images", filename) + filename += ".png" + img.save(filename) + + +if __name__ == "__main__": + generate_qrcode(sys.argv[1], sys.argv[2]) diff --git a/images/AWS-DevOps-Pro.png b/images/AWS-DevOps-Pro.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0600bfb41371e0d5ff970fb785266dac6cd25d GIT binary patch literal 9248 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 IM6N<$g6k+dk^lez literal 0 HcmV?d00001 diff --git a/images/AWS-Solutions-Architect-Associate.png b/images/AWS-Solutions-Architect-Associate.png new file mode 100644 index 0000000000000000000000000000000000000000..434d0e0e98cddc582fefde942b7ea7f28a2533b8 GIT binary patch literal 8572 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 Q=l}o!07*qoM6N<$g4s+PS^xk5 literal 0 HcmV?d00001 diff --git a/images/AWS-Sysops-Associate.png b/images/AWS-Sysops-Associate.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4f6562b7df27c3076394721ede47a375fcbf5c GIT binary patch literal 8955 zcmVai4xEGW&fEuNsfdV7fAZEJo~)iz1MbUc6??5KGK8`Hjt4P z7NZgg2??Uo?;&`vn49XwbVZ9fVdBH)vMXAobnzL-i6Q!n-nQ)Nd_40| z%147Yq}03~J~H?}J(#XHP3?1QRB%Atojk%+1Zg%F2qn zsfi@nC+@ABWZILq{kJ5B)1A`z8qNsS-!SKJj7T>s#Yok3&+m{W4WH~!)9Uj^k@^^@ zHJ%xoZ15GFgOlH=P$h^MiCTYA%kO)Ou@h$q+1e6`H%{Oi2k;HE55**V@`X$8DNgrC zk@LG2P128;fv?~2anaJ%DL+m3NlK+MO~f>K1FlFuhJ=K{h0E8#$L}#9Er3^nZwx=_ z&>b27r%dUR@YlR0@HQwIiWMmgr_NpkQ&UqYU8+R#&myW48m&t4Gs^wOQ`#lP@g$`% z3EQ!8TEWFr$6J3g}mK$!#Q+Yl59SPtcw&?T=a`JZ-%~hn|r)| zo-)#iO1z0+0KNR^!w0X6Nb%-18+QnmN+mq+dyD@qUMUtXcNLyq-a@(}uaK_HpYjVe zJVvBA-yduH4j$A0efZcZ@$iwaKw6zD>CNy>*@{$U82&mv30zZFi1GBp4{(vDL0SgOr=5{7{ zSA4t#EG;cTp-@2IUfq(Ai*QgU0JzU6fY+Irq`6*>dP+pOG}en+oxorHK9+gIqfc4+ zt#lM`%awT1bNPGWG+DpWt+Iko?trXn`0!y#SR%Ee>AlxH9SOYcqsorGt>|X<^9N@dM`_jY*LLyH|2fdESdus3$7dZ7CYJ=_aQCy;uYV zhle* zQkh1BdF1O43Z;_Ir_?rFis$F0G-ZlQzB1Gz4M+6s`Agw`-9rSvek*+ao{0DFBgL)T z_fRf=D8k+i_l~HwG94=~44b9N>5Mx_)Hcq5l5yI-3Ukr(#om zc!veyqTY1<2bpAsLtY@xNK+6eHC!L(yruXN`l%gc6g6(k)p$LxCro_vo|T=ztPqRD z?%KkDEIAncY^?=m;?hgZUbFLtwwK5`%hffy&rgdx!h;E>DoAWB-0%bH2R zZTzi4cAE8dy6Nt-;yvRX$@{OuQ#Q_Qx*W$s6X7W-@=03DPx%g$Oni7TQpd2{-hGZL z)~ZN;OqV)Vu()5I3_UAGngH$QzlSJ^fD#U7;5NwtEX??m&LFhfXT_}lPd9BNHbk;D zyK)j^p|RROCu3RnA$ocIo;2xCwK4?}ypg8%8TR~7f|T&Xl1L!-)1b@X zsXWb@EaBKtxZk`ZoEo;}|99#+NDLi2Su||*gQ(HCJ)e7m;z#SQ{lx9NUP5_&HtPWi z(nuji#Y4WYO`7lcbAL4RYl4>6oR_NU+g-;fjA{G$SW|i~&y*d7M4%4`VifYbbMGOr z&t=DwQCRqU__1q8ID6p=Na7_>tXL7SFgJ(m9(SN><%&?VMm4y5{~^T2#KOS-BVp&B zgMeBaO#E$B)@lstX;D$pU}Iwgp*RS#Ov|J)=-s0$v}x5GtSl`c5`V8<(+PTX>kKHt zLS$qVl)~#IcwOGSdD)_EZ0ht`Q7f}1x|C4MC{rQDnccK)51>Gt;_n27&G>r+LgI@l zqv?`!a1A_t_5$2ccN{v}85S*F1F^Aj@ax3sfC>{#nLZaauimhA$39j&)~w&kP7<;U zjB}pGF28JtT2p7v6Tu-L*EGn?zkKzEFNa$57O#MH8@KEKf8g*5)^)XBCjI&LZCXO% zLIrgb!qh@N1uk8=j_9L;eFu-hv|01P3_1P%2ah0LB4HcJi16e2!vieyTYwI_uxsub7<9~30!u+0pmvxaWr`bn=uDPZ(wjbV?vcc9*|M`rf|UmPO%5oPhV>t|TjUoXE zerjM1bAQU6T;-J~FdqqzO@P9AOyTt8{9tXtpKt}C)8exaL@PmiVXsMO({{moh?5B@ zncocDTpYm6H1)@Ny;Q(YDa zh6Te_=i(Rz$uhss!ysm_VO9>HqwX!P7qlOMefJH?Cri5hRzYuGbKazKyM6c49c(C>+q*jH1zW z9el@c)hal@2aEeJlZ)w6sZ2C#{iCSeq$7tAk8_!+@%MKBg^yi&4;4OsPekpe--{t* zCuvMVftQ7JWdXLtE4??Th;FRRX|3;P6O}pg`#Pp)01cByt(ViTgVpEa(uL~_maY+H zsyE>Xh3|U~;&XJY+pLq2ND_I9WJNw9U0XsZu1pqE*V00*R(&j_N_1Hq&IX5Ce}pCt zY!1L~otn-rN1eg4#hmx-*r{L60=AFJm+IgzyWfOsH}687T2A2U<;_+{J6l`m)vXg- z-Ak1y2Gy%M!rF~HVDXCe@YL%H$W|5ri#BUO{rn`TU$}wQ$RIE^HT&p0NGt7#TB*WN zE1id^HuYm}1>yTv$!e^}>;mM4O%sao5-HoGw(Q&wN|hRRZCnl|t2Bb~BL_maej`90 z9smP|Pk`1fo9M0XCPlvi)y=;^$RfZrR|#AWslSK(ix1})g7p{UVg7M_xOPHns3jwn zGfB8XmbHYqV4)7Vm!W%ZJdr2;wmC*OVt=fWA0#w1Tw`KAbR2Hp@=U~OyTV{vs5VOp zGMW6#TjR<8yKUz_kjv$;Xa7-n_{bMFZru&{A9#Z+t_xEXR{~$Zg{bHlK1bK>J#dsQ z@jG@OfL;3zgPGZ<&*vw*-cFo44+HxB1edN}2P-Q}PVy;OAV1WuSskLIWBHm=C5uDb z)-CwAv*)j{&6oz)s6jm_SGE*FL;)5S7GD-3Et@xn6K?1D!!0c>ICDuSGm_C;=ldW5 zkrsQ?CJm9Q*+71WeC%gDbo3NcI%CUIpKY;crhT!+{yE#%fh29`FJ6Ts$4;g4yF14a zXJz~3RYu7ePoKSnk;4YSIb6KtTVJzo3sk634!n@uR;%I&6)TowO16B}1|$YWn0oc@ z*%f^Ko`BawADHAk=F3CG&d!!&Xgl{90L_~=hRauPFq1oR>KxQUO7_U_F;pm5hGS_1 zo;`Zfw(i&q<3|sH z0Yk^Zh;c6P$HehqVQv9S{&j`c-!2+5`*88{bxw-2LV4-$c}o!2 zo58wGJ6JTCGjlS^QkU83IbukExN-9iQzaApSFm7yrd%OmVGtA?!eJhSVsUZtux!;fOZ$NV?)3*qDY zSVTod3luE*+}(Q*L|lBl2n!46Y=zTjFY)uqaB;)q4#%qKu6^*(C*88vSD`US$XeMb zyx!27Xp(_}s1pQOTL_r4Cno*!mP7)s8@BPHC8kJmzLW@i$J2{{r!XgqDk3T1zLz&s zGSU#~+VmzR#LE-FWmgP;UwQ^&)v~HJ3~Fu%2X0FN@exjX$`gLm|2|dJAjUwt~G8uSz`#{0`4y^t@e)5bHr_*X9H$_36Y2gqSlK>}O9MWgE zrd*Mv>5^pSBR`-vVI;+N|AD3=i6>Gdx6|jv-h;#Z1L~{d!ZL$D(JK*0#qohep5be z%YD-J7SX4@Htwr>Npskr827aW(P+?TV@^1r#=5E7b5oNNN9eZpLfXERF8?G_!{8`A zHGGEM?2B<*eECe>myF$_!E^HTK6sTp+lP|Tbs>dk9!L|tIU1spJ(@1mR;ox4O=pMk zj5om}C5&G6m+{9FksxA`q!}&5&)Bgj6oO42VEc!GO6d7-1iyl8!DR}X!AbJeY7E22 za2<5b_L3;M4s}yb{>Nt_dfz!IExB@>Xia4>lAzJI@U?w(qB>!}lVq|8;x5?jzs}C* z0YD-0=3_TVK%hYFllP@8aD3265UG=s#%PiQfY6Gpdf4@(0y!1z^^n1)%My4OrPgKl zvY=#R0noLsHH>Iw3nd&3jCQZFQ$+GcB>eKP07*XpNQL?h`*`en5tL%pSDlN8bKVMl zISW$uTU4=vU)$S3q1>jh>52sQ+>}AAEP;WfK;@=dadQ~k#tz!nFo;{BM^GiQ*$5op zuK-C71j7Em$WE?1r%(wvbVmy7E=u54xEd_YO}KhUq1|t1kAaX)DhV0;wjqF2|L*{z6}3iVCmTXR-TCLCDqaPr z9>`hOB1(j6Cp4~T3FF(@LEW;JnR;Ikk~P;0@m%~;sucKK6C`f}YL>F#=QgimP`r&? zA5?g44g%-te-j?Cg+93I1~<3m_a|w7+SR+~Q_IMGQGjSO%Z7p`tw(RmA!8L` z>k&^G$d$m_7GW!8hK*}$2TdwleO8Qo8K#1@7bJ`r3YBhE0yHSE`JM(93|1u>jyI8T zfWUd3?E#`S9?ZnvGb#T(^H9#D$mfj;ED$5rIAVLG=e-))z>pTUP{97n8BIR4a1x>r zfL?@ZS1j@}igEr0S8M+!HehdKuzK!epM}6VmMs9HwQ*BP=4sgVDT8G1-f&3*`)^Aj z4spudOfy)rzl}kOr?rz+PLR0ShQ8)}JR=l|)I_n!i_^5SC5&xr3$@D_tR5->P66Tz z5kMiI4Il`Fidq2lgCySh%f51yYU07`l@bA9!U?Lj_`TigTXPapv3zN-0`hmo#KeKE zjWy)Sqlttk-xoQjKllcN)MxrXb#juEg(yjaUbJ*9Y7V1X+d+q#Ryqq@nvLRTSGsP62K8$}kwOK*{pKB*J%2gu zShp1328Y0`dCTDXnFAc))qnT|ICA1FtX(=6`t|w&j+{IT<6UOK=|fv#;`F(YKVM#O z`E4YZHhB2RAAac6mP092-kU(>{)cAJ=2jYqrAPo1OM6I&4*|2vJ;0)kYnq|py7uS| z>P2Vc;gX+1?=dDEX;sYG9JvGhJbnFS)ja#D&F%K2lM7e6XnE63jKh zTK_Lx9JnPBN>zeUJZ%e?trd>-z7sN;#>*BS9w92#ZXy0!pfR%E_Vf}p8nqM6I`kB- zn|JcLANvj$oqG)t9eWHE3WXwB3DJniC{eCPQ?YjAPHnl}KZRtejZj<|ClcaAh1~5I zAzk6XsVkZ?yv^|$YNL$D^M#xfV95zlZBmFRIWAbtI%wc{n3G|Wr7c}iAG_66e>n`_ z5Y5WkV5FDRelV^vl?w0d*n1e<&Rqg~J3APFm~CTi1+U)*!H=EVF>g3}@*D>{jTqdQ zBPP9l{NeD4Gtlp+AE12M(p)2S&w*ob?$R|TfrSedfIjT-G(Ly<<_K7Jf8NtJXday2A0j3u(eN8P~Q-kxKKgOT6R1~t0-sf-*IEKUjt zJ|~rO2`$}jIA5}53xHg_avd&Sz6N=bnNvhMRdGIa)cu+c0)YOYtui@scyIlX8qO0Bo2gCkD$GHL!C(#cO&r?M_ z0yMP><;p_OZk-_-fk?sb)F>0o=*du-Y}w)~zHi@}$p&Gxot+KTt5cI#hM#``;PgVN z62+lJ@uG~)x>mbZbqEa$hqt(L3KuR2U6A=xYuCC3M@Um^P`?hCpm<*0sR}Ed6fjAt z5u9?@s=5B11oU1#x-wwC0z}(La;jXZy#D`|78X#&v7+HM9~7XcZ4mSW(PDVgYbdT> z*C^?kGAB}dXLe}+nV{?cO8W|sY}T>`$s%!;Qr<|Et?F2b8E#kP36wRHo<`|Ea~CdS zNzAcQ1qgiemc8aPraJ5QY5WS1j955P5+X(%6&1q@8Zl-{1fV3$e^+mWO|DDe?!AXx zPItn%;k;{F@18#}lP89~dHWvJU!<^Y!wS9RMRir@FJ1vl7yb>-lV|ez&fm9zqsPy% zC3*0G-thaBS^S(Lg$p4sses3VUrCk@AXEwT*nzFEV9s<-?WG;$S~P16ojbOH1&de0 z!NVtElJjV&gVNQ`&8u0fraH%WJ-wiYQ&o8V<{dnJ{!(u}_I~6C6)Tiu-Gr>pl`58l z)-9Xy4s|bI1@h$Y-R_DKmIFR#3wWTe@^ytI(U@rkJbv;N|4!hV792yGaMh$^R4eIiwH);G0+_-rcu3f*yV(g-MGx$jQ3zp zA~ynZv+FW8&tJH7jWZv|j2H}!li0le-vfju?3;SExF>C|UcZ5x9-iRhJO(P3FRKw> zQNg1u%#_4tO1n;J^$}Uhjf$sZN_%u@_uYSA%A(Thv=8%J?Z&hpHn-E~Ve<4j zDP~xI*hnFK{^BLl{g0Pgh>MShu@nA)Lr2|G{GI$O#ORX(Bdta@t!S+cEJv>pGStmS zdQa66X#3J73um)JMutDiOO8cph$JeKifC0(v2rpVMnpyN#%&G1smFU4QySv;9a=MU zuYfCqND|$*cEdI%L!@2D#Kyue{eA+cYK~B~N@cD(9UT(`8@KG{-H0oeF9Y8;YJm4_ z<@b`3*}rcOIN^34%9bg~JDv9G-UZ2)JNQ4*RDAE&r33Hlws_eZCUKQeX&gO#AOmOn zuKg@<)T&+$`t|9~_Ol(k4>E6h=4^aF=adOh02%nLJDy->VhU4T z#zVQXr8U3fyL08Th3$I|vdNw#x8lW%!mMc%d9_SJ0i#>j?_tG1a~ZkjEn2~2xPJ3C z@82B9dz@ZadKYiWGMQpVt2a)sSSx~ojO=QxY7&wmuo503t-^SKe7K?p{=~+|2P0vuH6L9nluEZLJ0}@JT(ddWpI+ov`_mB{yJtDv}@Cn zR}I>5ef&w! zAlL1gbC;5xCz}7UZJV;9Q4xxa?xLA4rcOn+OXfF)=b>sidQZj?d&pY&4SX!{lmCEw(rKnrT6;iKX#IJH0FnZLnu8`!qM2T!RSMXTAF}?k zgwqTxwP|EU^O&(z(JOhp>wltA9P=t%1@~X-;+O^4SeS4e^N8>4pr~OSGr$B+Sy< zc-L`2&+3!n;p{tZ=kY7rVSE4D58g=AX-9Vq$X#*YH>5E-2 zH(sJtIb1yt0=26LNt>M&ikR9007df}DqJLrA4J8Kbb~;hD2@OvlGl_|oz1>G!nsXx705ZYnIurkNB_1G zC1)lpI6zyHtRtxif$%Q7jXg)~hf8}5l6I@L9Pl^Ogp;*kH7aPd+Z{1vN?)eb<^D}< zA&;%WD)7?k1&6@!43cb002ovPDHLkV1mV&EJOeR literal 0 HcmV?d00001 diff --git a/images/GCP-Cloud-Architect-Pro.png b/images/GCP-Cloud-Architect-Pro.png new file mode 100644 index 0000000000000000000000000000000000000000..91b44c08b6a3937b1af00cc14b8130bfd7d8dbc4 GIT binary patch literal 16187 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%0AAfJFZGFG{^vBj+7a)H%l-_CsNZSO6!--FoQ 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 z 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 bA3FXYZ>{-0_99Cg00000NkvXXu0mjfYdh^h literal 0 HcmV?d00001 diff --git a/images/LPCI-1.png b/images/LPCI-1.png new file mode 100644 index 0000000000000000000000000000000000000000..77a74170b200e70be48c3379a323693cd0f634f6 GIT binary patch literal 16255 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 literal 0 HcmV?d00001 diff --git a/images/QR.png b/images/QR.png new file mode 100644 index 0000000000000000000000000000000000000000..c8bb508afde0fef59943caefd3777f05be1605f3 GIT binary patch literal 498 zcmVQr#)}d1+Z;FHWt3+e7(7UAJt|4Ym3Bf1dmU;PoZoFD0cU|<8{we$40A|f#O$y#0#StLojMQrj2 zNRo6poZK@ZIU1yV5dDYM64~D)?Ag|ygH!w+_JG!^TY;2rBHF2&7*fg&X0XlBs#}31 zXMniEFoVZf@@_irTCY}t+*-1{S#7V}Iq=x3TY)5JC~oT%!b*u(+TN`~Zd06){2(7~ z$sR)U-8v+1(Hs&&cHrD$G~ay`5)AP}=|D@xjw@|OR)ypfY|NE}ylo*>x8>a$0OWQzG4-1ux*TZBPd{7Biy29+xgX<*~zo<(>lxWjyvS=@LK0)PvNA=DT&seP$Tr oK4Px#07*qoM6N<$g5qoJ5dZ)H literal 0 HcmV?d00001 diff --git a/images/Salesforce-Platform-Developer.png b/images/Salesforce-Platform-Developer.png new file mode 100644 index 0000000000000000000000000000000000000000..50eb4c9ed07545b11b90a2301b4d54f11c84ef65 GIT binary patch literal 18111 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", + "license": "BSD-2-Clause" +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a7d58bb --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +awscli==1.18.* +black==19.10b0 +cfn-lint==0.28.* +pylint==2.* +qrcode==6.* +yamllint==1.20.* +image==1.5.28 diff --git a/resume.jrs.json b/resume.jrs.json new file mode 100644 index 0000000..60c201a --- /dev/null +++ b/resume.jrs.json @@ -0,0 +1,319 @@ +{ + "basics": { + "name": "Juan Barry Manual Canham", + "label": "Cloud \"DevOps\" Engineer", + "summary": "A Pragmatic Cloud \"DevOps\" Engineer, with experience at a variety of companies, across a range of technologies\ndriving both technological change as well as business focused outcomes.\nCapable of wearing whatever hat is needed for a given job, primarily working as both:\n* an architect, aligning the technical solutions to the customers requirements\n* a technical lead, both delivering code and guiding/mentoring/supporting teams as required.\n", + "website": "https://cv.juancanham.com", + "email": "cv@juancanham.com", + "picture": "images/QR.png", + "location": { + "city": "London", + "countryCode": "England", + "region": "EU" + }, + "profiles": [ + { + "network": "Git", + "username": "jc", + "url": "http://git.juancanham.com/" + }, + { + "network": "LinkedIn", + "username": "juan-canham-aa005a51", + "url": "https://www.linkedin.com/in/juan-canham-aa005a51/" + }, + { + "network": "Github", + "username": "JuanCanham", + "url": "https://github.com/juancanham" + } + ] + }, + "work": [ + { + "company": "Self", + "website": "https://juancanham.com", + "position": "Open Source Developer", + "startDate": "2019-07", + "summary": "Spending a few months developing tools to make engineering in the clouds easier. And other assorted tools", + "highlights": [ + "Quickly Built a tool to view twitter exports", + "Begun work on a module", + "Built a website to highlight the problems with FPTP", + "Built a tool to monitor activity on toxic internet communities" + ] + }, + { + "company": "Cloudreach", + "website": "https://www.cloudreach.com", + "position": "Cloud Systems Developer Lead", + "startDate": "2014-03", + "endDate": "2019-07", + "summary": "Worked on customer projects as a Lead/Architect and mentored a small team.", + "highlights": [ + "Architect on several Enterprise engagement, at companies such as NBIM, BP, News UK, etc.", + "Delivered both the architecture and implementation on multiple Cloud Access models", + "Managed a team for 4 engineers, helping them get the most out of working for Cloudreach", + "Helped run a city government hackathon (TFL)" + ] + }, + { + "company": "Cloudreach", + "website": "https://www.cloudreach.com", + "position": "Role Owner (Cloud Systems Developers)", + "startDate": "2016-06", + "endDate": "2019-07", + "summary": "Worked with the leadership team to improve the System Developers role.", + "highlights": [ + "Helped Engineers get improve their technical skills though a hands-on training workshop program", + "Trained and mentored multiple sets of graduates" + ] + }, + { + "company": "Cloudreach", + "website": "https://www.cloudreach.com", + "position": "Internal hackathons/skunkworks Developer", + "startDate": "2012-02", + "endDate": "2019-07", + "summary": "While at Cloudreach, worked on various spikes and hackathons", + "highlights": [ + "Built Automated tanks that used image recognition to move and fire at each other.", + "Built various useful internal tools, that remained in use for years", + "Built a variety of IaC tools, that made deployments easier", + "Won a trip to Central America", + "Had project open sourced externally, by somebody that found it useful" + ] + }, + { + "company": "Cloudreach", + "website": "https://www.cloudreach.com", + "position": "Cloud Systems Developer", + "startDate": "2012-02", + "endDate": "2014-03", + "summary": "Worked on technical projects on AWS, Google Apps & Salesforce both individually and as part of a team.", + "highlights": [ + "Worked across 3 cloud platforms (Google, AWS, Salesforce)", + "Delivered difficult Google 2 Google migrations on tight deadlines" + ] + }, + { + "company": "Supporttree", + "website": "https://supporttree.co.uk", + "position": "Support Engineer", + "startDate": "2010-01", + "endDate": "2012-02", + "summary": "Full support for small businesses including end user systems, on-premise servers and cloud services.", + "highlights": [ + "Worked in a user facing role, for a variety of small businesses", + "Made use of automation and unix, in an otherwise manual windows environment" + ] + } + ], + "education": [ + { + "institution": "UCL", + "startDate": "2006-09", + "endDate": "2009-07" + }, + { + "institution": "King's School Grantham", + "gpa": "AAAAA", + "courses": [ + "Maths", + "Further Maths", + "Physics", + "Chemistry", + "Spanish" + ], + "startDate": "2004-09", + "endDate": "2006-07" + } + ], + "skills": [ + { + "name": "Programming", + "level": "Skilled", + "keywords": [ + { + "name": "Python", + "level": "Skilled", + "summary": "Primary language used for most projects" + }, + { + "name": "Ruby", + "level": "Skilled", + "summary": "Primary language used for some projects, also often used as part of Chef or other tools used within projects" + }, + { + "name": "Bash", + "level": "Skilled", + "summary": "Used extensively for system automation" + }, + { + "name": "JavaScript", + "level": "Knowledgeable", + "summary": "Experience with both frontend development and Node to deliver automation" + }, + { + "name": "Apex/Java", + "level": "Basic", + "summary": "Primary language used for Salesforce development" + }, + { + "name": "Other Languages", + "level": "Novice", + "summary": "Powershell, Vbs, batch, PHP, Perl, C, C#" + } + ] + }, + { + "name": "AWS", + "level": "Skilled", + "keywords": [ + { + "name": "Cloudformation", + "level": "Skilled", + "summary": "Both natively and via Troposphere, Jinja & ruby-DSL" + }, + { + "name": "IAM", + "level": "Skilled", + "summary": "Extensive knowledge in building secured multi-tenanted accounts" + }, + { + "name": "Lambda", + "level": "Knowledgeable", + "summary": "Used extensively with both Python & JavaScript as part of stand-alone components & complex frameworks" + }, + { + "name": "DynamoDB", + "level": "Knowledgeable", + "summary": "Used in-depth to store state for lambda, whenever S3 was not viable" + }, + { + "name": "Core AWS services", + "level": "Skilled", + "summary": "Have used EC2, S3, RDS, SNS, SQS, Cloudwatch, Config, ElastiCache, etc, extensively" + }, + { + "name": "Additional AWS services", + "level": "Knowledgeable", + "summary": "Have used other services such as Direct Connect, CodeDeploy, AppStream, etc" + } + ] + }, + { + "name": "DevOps tools and methodologies", + "level": "Skilled", + "keywords": [ + { + "name": "IaC", + "level": "Skilled", + "summary": "Always used Infrastructure as Code (IaC), primarily native tools, but also Terraform when needed" + }, + { + "name": "Immutability", + "level": "Skilled", + "summary": "Designed and implemented immutable systems" + }, + { + "name": "Configuration Management", + "level": "Skilled", + "summary": "Extensive use of configuration management tools such as Chef and Ansible when needed" + }, + { + "name": "TDD - Infrastructure", + "level": "skilled", + "summary": "Used test driven development (TDD) on most greenfield projects and also gradually retrofitted to legacy infrastructure" + }, + { + "name": "TDD - Application", + "level": "Moderate" + }, + { + "name": "Build systems", + "level": "skilled", + "summary": "Always used Build systems (Jenkins, AnthillPro, Code*, Gitlab, etc)" + }, + { + "name": "Containers", + "level": "Knowledge", + "summary": "Familiar with immutable image pipelines and methodologies" + }, + { + "name": "Init systems", + "level": "Knowledgeable", + "summary": "Used Upstart/SystemD/SysV/Monit as required, in particular use of signals/sockets when possible" + }, + { + "name": "Agile", + "level": "Moderate", + "summary": "Used both within Small companies and adapted Larger Enterprise" + } + ] + }, + { + "name": "Google", + "level": "Knowledgeable", + "keywords": [ + { + "name": "GCP", + "level": "Moderate", + "summary": "Developed high level account strategies for GCP" + }, + { + "name": "Google deployment manager", + "level": "Moderate", + "summary": "Developed transformation tool using Google Deployment Manager" + }, + { + "name": "Google App Engine", + "level": "Moderate", + "summary": "Some use as part of projects, primarily in Python" + }, + { + "name": "Google Apps", + "level": "Skilled", + "summary": "Extensive use as part of Google Apps projects" + } + ] + }, + { + "name": "Salesforce", + "level": "Moderate", + "keywords": [ + { + "name": "Apex", + "level": "Moderate", + "summary": "Experience writing both small classes and triggers" + }, + { + "name": "Configuration", + "level": "Basic", + "summary": "Experience configuring Salesforce estates as per customer requirements" + } + ] + } + ], + "interests": [ + { + "name": "Open Source & Linux" + }, + { + "name": "Travelling" + }, + { + "name": "Punk Rock, Politics & the Pub" + } + ], + "languages": [ + { + "language": "English", + "fluency": "Native" + }, + { + "language": "Spanish", + "fluency": "Native" + } + ] +} \ No newline at end of file diff --git a/resume.json b/resume.json new file mode 100644 index 0000000..2aba84a --- /dev/null +++ b/resume.json @@ -0,0 +1 @@ +{"name": "Juan Barry Manual Canham", "contact": {"email": "cv@juancanham.com", "website": "https://cv.juancanham.com"}, "info": {"label": "Cloud \"DevOps\" Engineer", "image": "images/QR.png", "brief": "A Pragmatic Cloud \"DevOps\" Engineer, with experience at a variety of companies, across a range of technologies\ndriving both technological change as well as business focused outcomes.\nCapable of wearing whatever hat is needed for a given job, primarily working as both:\n* an architect, aligning the technical solutions to the customers requirements\n* a technical lead, both delivering code and guiding/mentoring/supporting teams as required.\n"}, "location": {"city": "London", "county": "Greater London", "country": "England", "region": "EU", "countryCode": "GB"}, "social": [{"label": "Git", "network": "Git", "user": "jc", "url": "http://git.juancanham.com/"}, {"label": "LinkedIn", "network": "LinkedIn", "user": "juan-canham-aa005a51", "url": "https://www.linkedin.com/in/juan-canham-aa005a51/"}, {"label": "Github", "network": "Github", "user": "JuanCanham", "url": "https://github.com/juancanham"}], "certifications": [{"organisation": "AWS", "certificates": [{"name": "Solutions Architect", "level": "Professional", "logo": "AWS-Solutions-Architect-Pro.png"}, {"name": "DevOps", "level": "Professional", "logo": "AWS-DevOps-Pro.png"}, {"name": "Solutions Architect", "level": "Associate", "logo": "AWS-Solutions-Architect-Associate.png"}, {"name": "SysOps Administrator", "level": "Associate", "logo": "AWS-Sysops-Associate.png"}, {"name": "Developer", "level": "Associate", "logo": "AWS-Developer-Associate.png"}]}, {"organisation": "Google", "certificates": [{"name": "Cloud Architect", "level": "Professional", "logo": "GCP-Cloud-Architect-Pro.png"}, {"name": "Data Engineer", "level": "Professional", "logo": "GCP-Data-Engineer-Pro.png"}, {"name": "Google Apps Deployment Specialist"}]}, {"organisation": "Linux Professional Institute", "certificates": [{"name": "LPCI-1", "logo": "LPCI-1.png"}]}, {"organisation": "Salesforce", "certificates": [{"name": "Force.com Developer", "logo": "Salesforce-Platform-Developer.png"}, {"name": "Administrator", "logo": "Salesforce-administrator.png"}]}, {"organisation": "Microsoft", "certificates": [{"name": "Windows 7, Configuration", "level": "Microsoft Certified Technology Specialist"}]}], "employment": {"summary": "9+ years cloud infrastructure experience as engineer, technical lead & architect", "history": [{"employer": "Self", "url": "https://juancanham.com", "technologies": ["Cloud", "AWS", "GCP", "Azure", "SSO", "Open Source"], "position": "Open Source Developer", "summary": "Spending a few months developing tools to make engineering in the clouds easier. And other assorted tools", "start": "2019-07", "highlights": ["Quickly Built a tool to view twitter exports", "Begun work on a module", "Built a website to highlight the problems with FPTP", "Built a tool to monitor activity on toxic internet communities"], "projects": [{"name": "Offline Twitter Export Viewer", "summary": "Simple tool to view twitter exports offline", "url": "https://gitlab.com/RitoingPacifst/offline-twitter-export-viewer"}, {"name": "Generic AWS Saml CLI (WIP)", "summary": "Generic SAML tool for AWS, to work with multiple providers and multiple backends using a modular pythonic design."}, {"name": "TheMajority.uk", "summary": "Website generator combining markdown, Jinja & yaml. Also a website about proportional representation", "url": "https://gitlab.com/TheMajority/themajority.uk"}, {"name": "Subreddit Monitor", "summary": "Serverless Python bot, to monitor subreddit activity for cross-posts and notify users"}]}, {"position": "Cloud Systems Developer Lead", "summary": "Worked on customer projects as a Lead/Architect and mentored a small team.", "employer": "Cloudreach", "url": "https://www.cloudreach.com", "description": "Worked on customer projects as a Tech Lead/Architect.\nManaged a team of 3 or 4 engineers within Cloudreach, making sure they got the most out of their role at Cloudreach,\naligning the individuals personal development plans both with Cloudreach's goals and their longer term career trajectories.\nIt was particularly rewarding was getting team members of promoted to Tech-lead level.\n", "start": "2014-03", "end": "2019-07", "keywords": ["Leadership", "Mentoring", "Architect", "Tech Lead"], "highlights": ["Architect on several Enterprise engagement, at companies such as NBIM, BP, News UK, etc.", "Delivered both the architecture and implementation on multiple Cloud Access models", "Managed a team for 4 engineers, helping them get the most out of working for Cloudreach", "Helped run a city government hackathon (TFL)"], "projects": [{"name": "Cloud Migration", "customer": "Norges Bank Investment Management", "summary": "Formed part of the CCOE supporting NBIM's datacentre exit onto immutable infrastructure in AWS", "description": "NBIM had an aggressive migration strategy, based on a standardised pipeline approach in order to\nre-platform 150 applications into immutably deployed services within 8 months.\nAs part of the CCOE, helped build and maintain the pipeline (Cloudformation, Ansible, Packer, Jinja,\nPowershell) in order to achieve this.\nAs well as support teams migrating applications, migrate applications and ensure best practices were\napplied at an account level.\n", "keywords": ["CCOE", "Deployment Pipeline", "Immutable"], "technologies": ["AWS", "Packer", "Cloudformation", "Ansible", "Jinja", "Python", "Windows", "Linux"]}, {"name": "AWS CIP", "customer": "BP", "summary": "Architect for BP's Cloud infrastructure Platform (AWS)", "description": "Architect/Tech Lead on the AWS side of BP's Cloud infrastructure Platform (CIP), responsible for\n - Guiding high-level goals\n - Interfacing with other teams and gather requirements at a technical level\n - Aligning high-level & mid-Level architectures\n - RBAC engine in a Multi-Tenanted account\n - Supporting the team and ensure code quality for services and customers\nTransitioned the project from an EC2-focused offering in 1 region, with 4 supported OSes,\nto a managed cloud native datacentre, offering use of 20 AWS services, across 2 regions with 6 supported OSes,\nas well as aligning future visions towards a many-account model.\n", "keywords": ["Strategy", "RBAC", "Multi-Tenanted", "Platform", "Shared Services", "Landing Zone", "Multi-Region"], "technologies": ["AWS", "IAM", "Cloudformation", "Windows", "Linux", "Python"]}, {"name": "Multi Cloud Lab Vending Engine", "customer": "Cloudreach", "summary": "Replace Long lived Multi-User Labs with an on-demand Multi Cloud Lab Vending Engine", "description": "Transformed shared per-cloud lab accounts, into an SSO integrated multi-cloud (AWS, Azure, GCP)\non-demand vending engine, improving security, while reducing cost and increasing accountability.\nIn addition for pushing for the change on the business side, designed the API for integrating with\nthe serverless per-cloud solutions,\nimplement the central orchestration workflows in Google Apps script (JavaScript),\nWrote the serverless wrapper (python) that provided the link between AWS's Landing Zone product and the\norchestrator.\n", "keywords": ["Multi-cloud", "Strategy", "Portal", "Landing Zone", "Multi-Account", "Serverless", "SSO", "API Design"], "technologies": ["AWS", "Azure", "GCP", "Account Vending Engine", "JavaScript", "Stateless", "Python", "Lambda", "SAM"]}, {"name": "TFL hackathon", "customer": "TFL", "summary": "Helped Run and Judge TFL Active Travel Hackathon", "description": "Provided expertise for teams making use of AWS while building solutions using TFL, Met Office &\nOrdinance Survey's APIs.\n", "keywords": ["AWS", "Hackathon", "APIs"], "technologies": ["AWS"]}, {"name": "Pearson Governance Framework and Prototype", "customer": "Pearson", "summary": "Designed and prototyped Pearson's AWS governance strategy", "description": "Produced a cloud adoption and governance strategy, to reduce the unmanaged spend across 100+ accounts.\nProvided a design for account structure, access, networking, security, monitoring, cost allocation and deployment.\nLed team building a serverless monitoring and triage framework (similar to cloud guardian/current AWS whitepapers),\nand target account creation and hardening.\n", "keywords": ["Strategy", "Multi-Tenanted", "Platform", "Shared Services", "Landing Zone", "Serverless"], "technologies": ["AWS", "Cloudformation", "Windows", "Linux", "Python"]}]}, {"position": "Role Owner (Cloud Systems Developers)", "summary": "Worked with the leadership team to improve the System Developers role.", "employer": "Cloudreach", "url": "https://www.cloudreach.com", "description": "Worked with the leadership team to improve the System Developers role.\nThis included both technical tooling and non-technical initiatives, processes, such as training programs,\ninterview processes and the graduate program.\n", "start": "2016-06", "end": "2019-07", "keywords": ["Strategy", "Vision", "Internal", "Personal Development"], "highlights": ["Helped Engineers get improve their technical skills though a hands-on training workshop program", "Trained and mentored multiple sets of graduates"], "projects": [{"name": "Personal Growth workshops", "summary": "Introduced monthly hands-on training workshops.", "description": "By using in-house experts, to deliver 1/2 day, regional hands-on, realistic, workshops,\nthe program gives engineers a chance to use emerging technologies on realistic use cases, rather than under idea situations.\nFor example, it's easy to setup a Kubernetes demo, but most introductions, don't cover dealing with sidecars and statefull containers.\nThe workshops also gave experienced team engineers a change to showcase their skills and produce content for our knowledgebase.\nAs the workshops were run separately it was also an opportunity for the American and European offices to collaborate\non training materials, without having to deal with time-zones for the delivery.\n", "keywords": ["Personal Development", "Training", "Strategy", "DevOps"]}, {"name": "Graduate/FastTrack Trainer/coordinator", "summary": "Involved in the delivery of 6 Fast Track training programs.", "description": "The Graduate/Fast Track program was a 8-10 week training course initially for recent graduates\nand later for anybody keen to retrain and start working in cloud based DevOps.\nResponsible for at least one, two week course on either AWS or infrastructure as code, in every program,\nas the cloud computing progresses rapidly this meant refreshing course materials and delivering,\na hands-on course to groups of 6-20.\nIn addition to delivering the training also worked with the leadership team and managers to ensure\ngraduates were placed onto appropriate projects.\n", "keywords": ["Personal Development", "Training"], "technologies": ["AWS", "IaC"]}, {"name": "Interview Process update", "summary": "Responsible for refining and updating the interview process", "description": "Refined the interview process through two major iterations,\nFirst standardising the process across all our European and American offices,\nbeing more prescriptive in terms of scoring.\nThe second introduced somewhat objective scoring criteria, while still giving interviewers enough scope to\n", "keywords": ["Interviews", "Metrics"]}, {"name": "Unified Chatroom system & Knowledge base", "summary": "Helped establish a company wide unified Chatroom system & Knowledge base.", "description": "Standardising the company on a single chat and knowledge base, made it much easier for new colleagues to get up to\nspeed. Most of this was focusing on making the case for unifying the tooling (in this case Slack and Atlassian),\nmaking sure there was a path forward for all the teams involved that wasn't seen as a regression was important.\nThe end result was much more cross-department knowledge sharing, mostly along technical lines,\nhowever it also helped organise events (both globally and office specific).\n", "keywords": ["ChatOps", "Knowledge Sharing"], "technologies": ["Slack"]}]}, {"position": "Internal hackathons/skunkworks Developer", "summary": "While at Cloudreach, worked on various spikes and hackathons", "employer": "Cloudreach", "url": "https://www.cloudreach.com", "description": "Used various competitions and opportunities to build prototypes to demonstrate feasibility of tools,\nas they were built over short periods of time, they were not production ready,\nhowever they worked and often fed into the approaches used in projects.\n", "start": "2012-02", "end": "2019-07", "keywords": ["hackathon"], "highlights": ["Built Automated tanks that used image recognition to move and fire at each other.", "Built various useful internal tools, that remained in use for years", "Built a variety of IaC tools, that made deployments easier", "Won a trip to Central America", "Had project open sourced externally, by somebody that found it useful"], "projects": [{"name": "piRobotWars", "summary": "Automated tanks that used image recognition to move and fire at each other.", "technologies": ["Rekognition", "RaspberryPi", "Soldering", "Python", "Lambda"]}, {"name": "Calify", "summary": "Room booking system, based on Google calendar and android.", "technologies": ["Android", "Java", "Google Apps"]}, {"name": "Cloudformation Supremacy Engine", "summary": "Tools to facilitate better deployment of Cloudformation", "technologies": ["Python", "Terraform", "Cloudformation"]}, {"name": "Serverless Sceptre", "summary": "Tool for event driven Cloudformation deployments", "technologies": ["Lamda", "IaC", "Cloudformation", "Python"]}, {"name": "Address Book, Contact sync, Holiday booking system", "summary": "Google apps automation used internally for booking holidays and syncing to mobile devices", "technologies": ["Google Apps", "JavaScript"]}, {"name": "MusicBox", "summary": "Various iterations of the Office jukebox systems", "technologies": ["RaspberryPi", "Musicbox", "Mopidy", "JavaScript"]}]}, {"position": "Cloud Systems Developer", "employer": "Cloudreach", "url": "https://www.cloudreach.com", "summary": "Worked on technical projects on AWS, Google Apps & Salesforce both individually and as part of a team.", "start": "2012-02", "end": "2014-03", "highlights": ["Worked across 3 cloud platforms (Google, AWS, Salesforce)", "Delivered difficult Google 2 Google migrations on tight deadlines"], "projects": [{"name": "Salesforce Roll-out for Media Group", "customer": "Heymarket", "summary": "Re-implemented their sales processes in Salesforce and configured production & sandbox accounts", "description": "Part of the team doing the initial roll out to replace legacy CRM systems, did the initial requirements gathering,\nthen matched the existing processes to those of Salesforce to fully automate the process for transforming\ndigital media leads to cash.\nThis involved both customising Salesforce objects/processes and writing apex triggers and classes\n(along with the tests required by the platform).\n", "keywords": ["Processes"], "technologies": ["Salesforce", "Apex", "SOQL"]}, {"name": "Cross Team Support at a Large Media company", "customer": "News UK", "description": "Working as the cloud lead systems engineer inside a large media corporation,\nsupported the infrastructure for all products being developed by partners on AWS,\nas well as the build servers used to support those (and other) deployments.\nAlongside supporting the running development environments,\ndeveloped and rolled out a unified platform & development kit to simplify application and\ninfrastructure, build, deployment, monitoring and support,\nwhile reducing the overall support burden at the company by,\nhelping other teams standardise on the platform where practical.\n"}, {"name": "Google to Google Migrations", "customer": "Various (Milkround, News UK, etc)", "summary": "Helped migrate various customers between Google Apps accounts", "description": "Due to limitations in the Google Apps platform, the source account had to be completely deleted prior to the end of the\nmigration, this means the entire migration had to be completed, including fixes and validation of data within about 60 hours.\nWhen combined with the user facing nature of mail migrations, this resulted in particularly difficult migrations,\nwith tight deadlines\n", "keywords": ["Migration", "User Facing"], "technologies": ["Google Apps", "Python", "AWS"]}, {"name": "Google Migrations", "customer": "Various (Jamie Oliver group, Graze, etc)", "summary": "Helped migrate various customers between Google Apps accounts", "keywords": ["Migration", "User Facing"], "technologies": ["Google Apps", "Python", "AWS"]}, {"name": "Teletext Holidays Optimisation", "customer": "Teletext Holidays", "summary": "Provided guidance and recommendations for frontend optimisation of the Teletext Holidays website", "keywords": ["Frontend", "Web", "Optimisation"], "technologies": ["JavaScript", "Web"]}]}, {"employer": "Supporttree", "position": "Support Engineer", "summary": "Full support for small businesses including end user systems, on-premise servers and cloud services.", "description": "Providing 1st to 3rd line support of Desktops (Windows and OS X),\nServer (physical and virtualised) & Services (in-house and cloud based) for small businesses.\nIn addition to end-user support, also implemented several projects.\nWhile the main toolkit for automation was Kaseya's custom DSL, pushed for automation whenever possible,\nusually making use of either custom code or portable GNU tools.\n", "start": "2010-01", "end": "2012-02", "url": "https://supporttree.co.uk", "keywords": ["User Facing"], "technologies": ["Windows", "OS X", "Linux", "Networking"], "highlights": ["Worked in a user facing role, for a variety of small businesses", "Made use of automation and unix, in an otherwise manual windows environment"]}]}, "education": {"level": "Bachelor [incomplete]", "history": [{"institution": "UCL", "title": "Bachelor Natural Sciences (Physics & Chemistry) [incomplete]", "start": "2006-09", "end": "2009-07"}, {"institution": "King's School Grantham", "title": "A-Levels", "start": "2004-09", "end": "2006-07", "grade": "AAAAA", "curriculum": ["Maths", "Further Maths", "Physics", "Chemistry", "Spanish"]}]}, "skills": {"levels": ["Novice", "Basic", "Moderate", "Knowledgeable", "Skilled"], "sets": [{"name": "Programming", "level": "Skilled", "skills": ["Python", "Ruby", "Bash", "JavaScript", "Apex/Java", "Other Languages"]}, {"name": "AWS", "level": "Skilled", "skills": ["Cloudformation", "IAM", "Lambda", "DynamoDB", "Core AWS services", "Additional AWS services"]}, {"name": "DevOps tools and methodologies", "level": "Skilled", "skills": ["IaC", "Immutability", "Configuration Management", "TDD - Infrastructure", "TDD - Application", "Build systems", "Containers", "Init systems", "Agile"]}, {"name": "Google", "level": "Knowledgeable", "skills": ["GCP", "Google deployment manager", "Google App Engine", "Google Apps"]}, {"name": "Salesforce", "level": "Moderate", "skills": ["Apex", "Configuration"]}], "list": [{"name": "Python", "level": "Skilled", "summary": "Primary language used for most projects"}, {"name": "Ruby", "level": "Skilled", "summary": "Primary language used for some projects, also often used as part of Chef or other tools used within projects"}, {"name": "Bash", "level": "Skilled", "summary": "Used extensively for system automation"}, {"name": "JavaScript", "level": "Knowledgeable", "summary": "Experience with both frontend development and Node to deliver automation"}, {"name": "Apex/Java", "level": "Basic", "summary": "Primary language used for Salesforce development"}, {"name": "Other Languages", "level": "Novice", "summary": "Powershell, Vbs, batch, PHP, Perl, C, C#"}, {"name": "Cloudformation", "level": "Skilled", "summary": "Both natively and via Troposphere, Jinja & ruby-DSL"}, {"name": "IAM", "level": "Skilled", "summary": "Extensive knowledge in building secured multi-tenanted accounts"}, {"name": "Lambda", "level": "Knowledgeable", "summary": "Used extensively with both Python & JavaScript as part of stand-alone components & complex frameworks"}, {"name": "DynamoDB", "level": "Knowledgeable", "summary": "Used in-depth to store state for lambda, whenever S3 was not viable"}, {"name": "Core AWS services", "level": "Skilled", "summary": "Have used EC2, S3, RDS, SNS, SQS, Cloudwatch, Config, ElastiCache, etc, extensively"}, {"name": "Additional AWS services", "level": "Knowledgeable", "summary": "Have used other services such as Direct Connect, CodeDeploy, AppStream, etc"}, {"name": "IaC", "level": "Skilled", "summary": "Always used Infrastructure as Code (IaC), primarily native tools, but also Terraform when needed"}, {"name": "Immutability", "level": "Skilled", "summary": "Designed and implemented immutable systems"}, {"name": "Configuration Management", "level": "Skilled", "summary": "Extensive use of configuration management tools such as Chef and Ansible when needed"}, {"name": "TDD - Infrastructure", "level": "skilled", "summary": "Used test driven development (TDD) on most greenfield projects and also gradually retrofitted to legacy infrastructure"}, {"name": "TDD - Application", "level": "Moderate"}, {"name": "Build systems", "level": "skilled", "summary": "Always used Build systems (Jenkins, AnthillPro, Code*, Gitlab, etc)"}, {"name": "Containers", "level": "Knowledge", "summary": "Familiar with immutable image pipelines and methodologies"}, {"name": "Init systems", "level": "Knowledgeable", "summary": "Used Upstart/SystemD/SysV/Monit as required, in particular use of signals/sockets when possible"}, {"name": "Agile", "level": "Moderate", "summary": "Used both within Small companies and adapted Larger Enterprise"}, {"name": "GCP", "level": "Moderate", "summary": "Developed high level account strategies for GCP"}, {"name": "Google deployment manager", "level": "Moderate", "summary": "Developed transformation tool using Google Deployment Manager"}, {"name": "Google App Engine", "level": "Moderate", "summary": "Some use as part of projects, primarily in Python"}, {"name": "Google Apps", "level": "Skilled", "summary": "Extensive use as part of Google Apps projects"}, {"name": "Apex", "level": "Moderate", "summary": "Experience writing both small classes and triggers"}, {"name": "Configuration", "level": "Basic", "summary": "Experience configuring Salesforce estates as per customer requirements"}]}, "languages": [{"language": "English", "fluency": "Native"}, {"language": "Spanish", "fluency": "Native"}], "interests": [{"name": "Open Source & Linux"}, {"name": "Travelling"}, {"name": "Punk Rock, Politics & the Pub"}], "meta": {"format": "FRESH@1.0.0", "version": "0.0.1"}} \ No newline at end of file diff --git a/resume.yaml b/resume.yaml new file mode 100644 index 0000000..30712c0 --- /dev/null +++ b/resume.yaml @@ -0,0 +1,479 @@ +--- +name: Juan Barry Manual Canham +contact: + email: "cv@juancanham.com" + website: https://cv.juancanham.com + +info: + label: Cloud "DevOps" Engineer + image: images/QR.png + brief: | + A Pragmatic Cloud "DevOps" Engineer, with experience at a variety of companies, across a range of technologies + driving both technological change as well as business focused outcomes. + Capable of wearing whatever hat is needed for a given job, primarily working as both: + * an architect, aligning the technical solutions to the customers requirements + * a technical lead, both delivering code and guiding/mentoring/supporting teams as required. + +location: + city: London + county: Greater London + country: England + region: EU + countryCode: GB + +social: + - label: Git + network: Git + user: jc + url: http://git.juancanham.com/ + - label: LinkedIn + network: LinkedIn + user: juan-canham-aa005a51 + url: https://www.linkedin.com/in/juan-canham-aa005a51/ + - label: Github + network: Github + user: JuanCanham + url: https://github.com/juancanham + +certifications: + - organisation: AWS + certificates: + - name: Solutions Architect + level: Professional + logo: AWS-Solutions-Architect-Pro.png + - name: DevOps + level: Professional + logo: AWS-DevOps-Pro.png + - name: Solutions Architect + level: Associate + logo: AWS-Solutions-Architect-Associate.png + - name: SysOps Administrator + level: Associate + logo: AWS-Sysops-Associate.png + - name: Developer + level: Associate + logo: AWS-Developer-Associate.png + - organisation: Google + certificates: + - name: Cloud Architect + level: Professional + logo: GCP-Cloud-Architect-Pro.png + - name: Data Engineer + level: Professional + logo: GCP-Data-Engineer-Pro.png + - name: Google Apps Deployment Specialist + - organisation: Linux Professional Institute + certificates: + - name: LPCI-1 + logo: LPCI-1.png + - organisation: Salesforce + certificates: + - name: Force.com Developer + logo: Salesforce-Platform-Developer.png + - name: Administrator + logo: Salesforce-administrator.png + - organisation: Microsoft + certificates: + - name: Windows 7, Configuration + level: Microsoft Certified Technology Specialist + +employment: + summary: "9+ years cloud infrastructure experience as engineer, technical lead & architect" + history: + - employer: Self + url: https://juancanham.com + technologies: [Cloud, AWS, GCP, Azure, SSO, Open Source] + position: Open Source Developer + summary: Spending a few months developing tools to make engineering in the clouds easier. And other assorted tools + start: 2019-07 + highlights: + - Quickly Built a tool to view twitter exports + - Begun work on a module + - Built a website to highlight the problems with FPTP + - Built a tool to monitor activity on toxic internet communities + projects: + - name: Offline Twitter Export Viewer + summary: Simple tool to view twitter exports offline + url: https://gitlab.com/RitoingPacifst/offline-twitter-export-viewer + - name: Generic AWS Saml CLI (WIP) + summary: Generic SAML tool for AWS, to work with multiple providers and multiple backends using a modular pythonic design. + - name: TheMajority.uk + summary: Website generator combining markdown, Jinja & yaml. Also a website about proportional representation + url: https://gitlab.com/TheMajority/themajority.uk + - name: Subreddit Monitor + summary: Serverless Python bot, to monitor subreddit activity for cross-posts and notify users + + + - position: Cloud Systems Developer Lead + summary: Worked on customer projects as a Lead/Architect and mentored a small team. + employer: Cloudreach + url: https://www.cloudreach.com + description: | + Worked on customer projects as a Tech Lead/Architect. + Managed a team of 3 or 4 engineers within Cloudreach, making sure they got the most out of their role at Cloudreach, + aligning the individuals personal development plans both with Cloudreach's goals and their longer term career trajectories. + It was particularly rewarding was getting team members of promoted to Tech-lead level. + start: 2014-03 + end: 2019-07 + keywords: [Leadership, Mentoring, Architect, Tech Lead] + highlights: + - Architect on several Enterprise engagement, at companies such as NBIM, BP, News UK, etc. + - Delivered both the architecture and implementation on multiple Cloud Access models + - Managed a team for 4 engineers, helping them get the most out of working for Cloudreach + - Helped run a city government hackathon (TFL) + projects: + - name: Cloud Migration + customer: Norges Bank Investment Management + summary: Formed part of the CCOE supporting NBIM's datacentre exit onto immutable infrastructure in AWS + description: | + NBIM had an aggressive migration strategy, based on a standardised pipeline approach in order to + re-platform 150 applications into immutably deployed services within 8 months. + As part of the CCOE, helped build and maintain the pipeline (Cloudformation, Ansible, Packer, Jinja, + Powershell) in order to achieve this. + As well as support teams migrating applications, migrate applications and ensure best practices were + applied at an account level. + keywords: [CCOE, Deployment Pipeline, Immutable] + technologies: [AWS, Packer, Cloudformation, Ansible, Jinja, Python, Windows, Linux] + - name: AWS CIP + customer: BP + summary: Architect for BP's Cloud infrastructure Platform (AWS) + description: | + Architect/Tech Lead on the AWS side of BP's Cloud infrastructure Platform (CIP), responsible for + - Guiding high-level goals + - Interfacing with other teams and gather requirements at a technical level + - Aligning high-level & mid-Level architectures + - RBAC engine in a Multi-Tenanted account + - Supporting the team and ensure code quality for services and customers + Transitioned the project from an EC2-focused offering in 1 region, with 4 supported OSes, + to a managed cloud native datacentre, offering use of 20 AWS services, across 2 regions with 6 supported OSes, + as well as aligning future visions towards a many-account model. + keywords: [Strategy, RBAC, Multi-Tenanted, Platform, Shared Services, Landing Zone, Multi-Region] + technologies: [AWS, IAM, Cloudformation, Windows, Linux, Python] + - name: Multi Cloud Lab Vending Engine + customer: Cloudreach + summary: Replace Long lived Multi-User Labs with an on-demand Multi Cloud Lab Vending Engine + description: | + Transformed shared per-cloud lab accounts, into an SSO integrated multi-cloud (AWS, Azure, GCP) + on-demand vending engine, improving security, while reducing cost and increasing accountability. + In addition for pushing for the change on the business side, designed the API for integrating with + the serverless per-cloud solutions, + implement the central orchestration workflows in Google Apps script (JavaScript), + Wrote the serverless wrapper (python) that provided the link between AWS's Landing Zone product and the + orchestrator. + keywords: [Multi-cloud, Strategy, Portal, Landing Zone, Multi-Account, Serverless, SSO, API Design] + technologies: [AWS, Azure, GCP, Account Vending Engine, JavaScript, Stateless, Python, Lambda, SAM] + - name: TFL hackathon + customer: TFL + summary: Helped Run and Judge TFL Active Travel Hackathon + description: | + Provided expertise for teams making use of AWS while building solutions using TFL, Met Office & + Ordinance Survey's APIs. + keywords: [AWS, Hackathon, APIs] + technologies: [AWS] + - name: Pearson Governance Framework and Prototype + customer: Pearson + summary: Designed and prototyped Pearson's AWS governance strategy + description: | + Produced a cloud adoption and governance strategy, to reduce the unmanaged spend across 100+ accounts. + Provided a design for account structure, access, networking, security, monitoring, cost allocation and deployment. + Led team building a serverless monitoring and triage framework (similar to cloud guardian/current AWS whitepapers), + and target account creation and hardening. + keywords: [Strategy, Multi-Tenanted, Platform, Shared Services, Landing Zone, Serverless] + technologies: [AWS, Cloudformation, Windows, Linux, Python] + + - position: Role Owner (Cloud Systems Developers) + summary: Worked with the leadership team to improve the System Developers role. + employer: Cloudreach + url: https://www.cloudreach.com + description: | + Worked with the leadership team to improve the System Developers role. + This included both technical tooling and non-technical initiatives, processes, such as training programs, + interview processes and the graduate program. + start: 2016-06 + end: 2019-07 + keywords: [Strategy, Vision, Internal, Personal Development] + highlights: + - Helped Engineers get improve their technical skills though a hands-on training workshop program + - Trained and mentored multiple sets of graduates + projects: + - name: Personal Growth workshops + summary: Introduced monthly hands-on training workshops. + description: | + By using in-house experts, to deliver 1/2 day, regional hands-on, realistic, workshops, + the program gives engineers a chance to use emerging technologies on realistic use cases, rather than under idea situations. + For example, it's easy to setup a Kubernetes demo, but most introductions, don't cover dealing with sidecars and statefull containers. + The workshops also gave experienced team engineers a change to showcase their skills and produce content for our knowledgebase. + As the workshops were run separately it was also an opportunity for the American and European offices to collaborate + on training materials, without having to deal with time-zones for the delivery. + keywords: [Personal Development, Training, Strategy, DevOps] + - name: Graduate/FastTrack Trainer/coordinator + summary: Involved in the delivery of 6 Fast Track training programs. + description: | + The Graduate/Fast Track program was a 8-10 week training course initially for recent graduates + and later for anybody keen to retrain and start working in cloud based DevOps. + Responsible for at least one, two week course on either AWS or infrastructure as code, in every program, + as the cloud computing progresses rapidly this meant refreshing course materials and delivering, + a hands-on course to groups of 6-20. + In addition to delivering the training also worked with the leadership team and managers to ensure + graduates were placed onto appropriate projects. + keywords: [Personal Development, Training] + technologies: [AWS, IaC] + - name: Interview Process update + summary: Responsible for refining and updating the interview process + description: | + Refined the interview process through two major iterations, + First standardising the process across all our European and American offices, + being more prescriptive in terms of scoring. + The second introduced somewhat objective scoring criteria, while still giving interviewers enough scope to + keywords: [Interviews, Metrics] + - name: Unified Chatroom system & Knowledge base + summary: Helped establish a company wide unified Chatroom system & Knowledge base. + description: | + Standardising the company on a single chat and knowledge base, made it much easier for new colleagues to get up to + speed. Most of this was focusing on making the case for unifying the tooling (in this case Slack and Atlassian), + making sure there was a path forward for all the teams involved that wasn't seen as a regression was important. + The end result was much more cross-department knowledge sharing, mostly along technical lines, + however it also helped organise events (both globally and office specific). + keywords: [ChatOps, Knowledge Sharing] + technologies: [Slack] + + - position: Internal hackathons/skunkworks Developer + summary: While at Cloudreach, worked on various spikes and hackathons + employer: Cloudreach + url: https://www.cloudreach.com + description: | + Used various competitions and opportunities to build prototypes to demonstrate feasibility of tools, + as they were built over short periods of time, they were not production ready, + however they worked and often fed into the approaches used in projects. + start: 2012-02 + end: 2019-07 + keywords: [hackathon] + highlights: + - Built Automated tanks that used image recognition to move and fire at each other. + - Built various useful internal tools, that remained in use for years + - Built a variety of IaC tools, that made deployments easier + - Won a trip to Central America + - Had project open sourced externally, by somebody that found it useful + projects: + - name: piRobotWars + summary: Automated tanks that used image recognition to move and fire at each other. + technologies: [Rekognition, RaspberryPi, Soldering, Python, Lambda] + - name: Calify + summary: Room booking system, based on Google calendar and android. + technologies: [Android, Java, Google Apps] + - name: Cloudformation Supremacy Engine + summary: Tools to facilitate better deployment of Cloudformation + technologies: [Python, Terraform, Cloudformation] + - name: Serverless Sceptre + summary: Tool for event driven Cloudformation deployments + technologies: [Lamda, IaC, Cloudformation, Python] + - name: Address Book, Contact sync, Holiday booking system + summary: Google apps automation used internally for booking holidays and syncing to mobile devices + technologies: [Google Apps, JavaScript] + - name: MusicBox + summary: Various iterations of the Office jukebox systems + technologies: [RaspberryPi, Musicbox, Mopidy, JavaScript] + + - position: Cloud Systems Developer + employer: Cloudreach + url: https://www.cloudreach.com + summary: Worked on technical projects on AWS, Google Apps & Salesforce both individually and as part of a team. + start: 2012-02 + end: 2014-03 + highlights: + - Worked across 3 cloud platforms (Google, AWS, Salesforce) + - Delivered difficult Google 2 Google migrations on tight deadlines + projects: + - name: Salesforce Roll-out for Media Group + customer: Heymarket + summary: Re-implemented their sales processes in Salesforce and configured production & sandbox accounts + description: | + Part of the team doing the initial roll out to replace legacy CRM systems, did the initial requirements gathering, + then matched the existing processes to those of Salesforce to fully automate the process for transforming + digital media leads to cash. + This involved both customising Salesforce objects/processes and writing apex triggers and classes + (along with the tests required by the platform). + keywords: [Processes] + technologies: [Salesforce, Apex, SOQL] + - name: Cross Team Support at a Large Media company + customer: News UK + description: | + Working as the cloud lead systems engineer inside a large media corporation, + supported the infrastructure for all products being developed by partners on AWS, + as well as the build servers used to support those (and other) deployments. + Alongside supporting the running development environments, + developed and rolled out a unified platform & development kit to simplify application and + infrastructure, build, deployment, monitoring and support, + while reducing the overall support burden at the company by, + helping other teams standardise on the platform where practical. + - name: Google to Google Migrations + customer: Various (Milkround, News UK, etc) + summary: Helped migrate various customers between Google Apps accounts + description: | + Due to limitations in the Google Apps platform, the source account had to be completely deleted prior to the end of the + migration, this means the entire migration had to be completed, including fixes and validation of data within about 60 hours. + When combined with the user facing nature of mail migrations, this resulted in particularly difficult migrations, + with tight deadlines + keywords: [Migration, User Facing] + technologies: [Google Apps, Python, AWS] + - name: Google Migrations + customer: Various (Jamie Oliver group, Graze, etc) + summary: Helped migrate various customers between Google Apps accounts + keywords: [Migration, User Facing] + technologies: [Google Apps, Python, AWS] + - name: Teletext Holidays Optimisation + customer: Teletext Holidays + summary: Provided guidance and recommendations for frontend optimisation of the Teletext Holidays website + keywords: [Frontend, Web, Optimisation] + technologies: [JavaScript, Web] + + - employer: Supporttree + position: Support Engineer + summary: Full support for small businesses including end user systems, on-premise servers and cloud services. + description: | + Providing 1st to 3rd line support of Desktops (Windows and OS X), + Server (physical and virtualised) & Services (in-house and cloud based) for small businesses. + In addition to end-user support, also implemented several projects. + While the main toolkit for automation was Kaseya's custom DSL, pushed for automation whenever possible, + usually making use of either custom code or portable GNU tools. + start: 2010-01 + end: 2012-02 + url: https://supporttree.co.uk + keywords: [User Facing] + technologies: [Windows, OS X, Linux, Networking] + highlights: + - Worked in a user facing role, for a variety of small businesses + - Made use of automation and unix, in an otherwise manual windows environment + +education: + level: Bachelor [incomplete] + history: + - institution: UCL + title: Bachelor Natural Sciences (Physics & Chemistry) [incomplete] + start: 2006-09 + end: 2009-07 + - institution: King's School Grantham + title: A-Levels + start: 2004-09 + end: 2006-07 + grade: AAAAA + curriculum: + - Maths + - Further Maths + - Physics + - Chemistry + - Spanish + +skills: + levels: [Novice, Basic, Moderate, Knowledgeable, Skilled] + sets: + - name: Programming + level: Skilled + skills: + - name: Python + level: Skilled + summary: Primary language used for most projects + - name: Ruby + level: Skilled + summary: Primary language used for some projects, also often used as part of Chef or other tools used within projects + - name: Bash + level: Skilled + summary: Used extensively for system automation + - name: JavaScript + level: Knowledgeable + summary: Experience with both frontend development and Node to deliver automation + - name: Apex/Java + level: Basic + summary: Primary language used for Salesforce development + - name: Other Languages + level: Novice + summary: Powershell, Vbs, batch, PHP, Perl, C, C# + - name: AWS + level: Skilled + skills: + - name: Cloudformation + level: Skilled + summary: Both natively and via Troposphere, Jinja & ruby-DSL + - name: IAM + level: Skilled + summary: Extensive knowledge in building secured multi-tenanted accounts + - name: Lambda + level: Knowledgeable + summary: Used extensively with both Python & JavaScript as part of stand-alone components & complex frameworks + - name: DynamoDB + level: Knowledgeable + summary: Used in-depth to store state for lambda, whenever S3 was not viable + - name: Core AWS services + level: Skilled + summary: Have used EC2, S3, RDS, SNS, SQS, Cloudwatch, Config, ElastiCache, etc, extensively + - name: Additional AWS services + level: Knowledgeable + summary: Have used other services such as Direct Connect, CodeDeploy, AppStream, etc + - name: DevOps tools and methodologies + level: Skilled + skills: + - name: IaC + level: Skilled + summary: Always used Infrastructure as Code (IaC), primarily native tools, but also Terraform when needed + - name: Immutability + level: Skilled + summary: Designed and implemented immutable systems + - name: Configuration Management + level: Skilled + summary: Extensive use of configuration management tools such as Chef and Ansible when needed + - name: TDD - Infrastructure + level: skilled + summary: Used test driven development (TDD) on most greenfield projects and also gradually retrofitted to legacy infrastructure + - name: TDD - Application + level: Moderate + - name: Build systems + level: skilled + summary: Always used Build systems (Jenkins, AnthillPro, Code*, Gitlab, etc) + - name: Containers + level: Knowledge + summary: Familiar with immutable image pipelines and methodologies + - name: Init systems + level: Knowledgeable + summary: Used Upstart/SystemD/SysV/Monit as required, in particular use of signals/sockets when possible + - name: Agile + level: Moderate + summary: Used both within Small companies and adapted Larger Enterprise + - name: Google + level: Knowledgeable + skills: + - name: GCP + level: Moderate + summary: Developed high level account strategies for GCP + - name: Google deployment manager + level: Moderate + summary: Developed transformation tool using Google Deployment Manager + - name: Google App Engine + level: Moderate + summary: Some use as part of projects, primarily in Python + - name: Google Apps + level: Skilled + summary: Extensive use as part of Google Apps projects + - name: Salesforce + level: Moderate + skills: + - name: Apex + level: Moderate + summary: Experience writing both small classes and triggers + - name: Configuration + level: Basic + summary: Experience configuring Salesforce estates as per customer requirements + +languages: + - language: English + fluency: Native + - language: Spanish + fluency: Native + +interests: + - name: Open Source & Linux + - name: Travelling + - name: Punk Rock, Politics & the Pub + +meta: + format: FRESH@1.0.0 + version: 0.0.1 diff --git a/settings.yaml b/settings.yaml new file mode 100644 index 0000000..bfe1d66 --- /dev/null +++ b/settings.yaml @@ -0,0 +1,50 @@ +--- +primary: + html: elegant + md: Compact + pdf: Compact + +generate: + resume: + plain: + - Positive + - Compact + - Modern + css: + fresh-theme-bootstrap: + - darkly + - superhero + - cerulean + kcv: + - flat + - modern + full: + plain: + - node_modules/fresh-theme-elegant + +links: + main: + - name: PDF + url: resume.pdf + - name: markdown + url: https://git.juancanham.com/JuanCanham/juan-canham-resume/Resume.md + - name: yaml + url: resume.yaml + + extra: + - group: styles + links: + - darkly + - Positive + - Compact + - Modern + - superhero + - cerulean + - kcv-flat + - kcv-modern + - group: formats + links: + - name: json + url: full.json + - name: json-resume + url: full.jrs.json diff --git a/transform.py b/transform.py new file mode 100755 index 0000000..cc6e243 --- /dev/null +++ b/transform.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +""" +This script transforms a resume from a format container positions within an +employer, to valid FRESH resume format +""" +import os +import json +import copy +import yaml + +# pylint: disable=missing-function-docstring +def main(): + with open("resume.yaml") as file: + resume = yaml.load(file, Loader=yaml.BaseLoader) + + transform_and_write("full", make_full, resume) + transform_and_write("resume", make_fresh, resume) + + +def write_file(name, data): + filename = os.path.join("dist", name + ".json") + with open(filename, "w") as file: + json.dump(data, file) + + +def transform_and_write(name, func, raw_data): + data = copy.deepcopy(raw_data) + data = func(data) + write_file(name, data) + + +def make_fresh(data): + data["skills"].setdefault("list", []) + for skillset in data["skills"]["sets"]: + skills = skillset["skills"][:] + skillset["skills"] = [skill["name"] for skill in skills] + data["skills"]["list"] += skills + return data + + +def make_full(data): + with open("settings.yaml") as file: + data["settings"] = yaml.load(file, Loader=yaml.BaseLoader) + + tags = data.get("tags", []) + for employer in data["employment"]["history"]: + tags += employer.get("technologies", []) + tags += employer.get("keywords", []) + for project in employer.get("projects", []): + tags += project.get("technologies", []) + tags += project.get("keywords", []) + + tags = sorted(tags, key=tags.count, reverse=True) + data["tags"] = [] + for tag in tags: + if tag not in data["tags"]: + data["tags"].append(tag) + + return data + + +if __name__ == "__main__": + main()