diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..e07813d --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,14 @@ +ARG VARIANT=latest +FROM docker.io/oven/bun:${VARIANT} + +RUN apt-get update \ + && apt-get -y install --no-install-recommends \ + git \ + nano \ + vim-tiny \ + && apt-get auto-remove -y \ + && apt-get clean -y \ + && chsh -s $(which bash) bun \ + && echo 'export PS1="\e[01;32m\u\e[m:\e[01;34m\w\e[m\$ "' >> /home/bun/.bashrc + +USER bun \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..beb265f --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,32 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/debian +{ + "name": "Debian", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/base:bullseye", + // Podman settings to run as non-root user + // "containerUser": "vscode", + // "runArgs": [ + // "--userns=keep-id", + // "--network=host" + // ], + "features": { + "ghcr.io/devcontainers/features/hugo:1": { + "extended": true + }, + "ghcr.io/devcontainers/features/go:1": {}, + "ghcr.io/devcontainers/features/node:1": {}, + "ghcr.io/devcontainers/features/python:1": {} + } + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 792f45f..3c606dd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,33 +1,37 @@ -# This is a basic workflow to help you get started with Actions +name: GitHub Pages -name: build-resume - -# Controls when the action will run. on: - # Triggers the workflow on push or pull request events but only for the master branch push: - branches: [main] + branches: + - main # Set a branch to deploy + - hugo-site + pull_request: jobs: - build-resume: - runs-on: ubuntu-latest - container: pandoc/latex:2.9 + deploy: + runs-on: ubuntu-22.04 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 + with: + submodules: true # Fetch Hugo themes (true OR recursive) + fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - - name: Install dependencies - run: | - apk add make texlive git + - name: Setup Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: '0.119.0' + # extended: true - - name: Build Resume + - name: Build run: | - export TEXMF=/usr/share/texmf-dist - make html - ls /__w/resume/resume/output + cd exampleSite + hugo -t resume --themesDir ../.. - - name: Publish + - name: Deploy uses: peaceiris/actions-gh-pages@v3 + if: github.ref == 'refs/heads/main' with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: /__w/resume/resume/output + publish_dir: ./public \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9b1960e..22fbd9a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -output/ \ No newline at end of file +output/ +public/ + +.hugo_build.lock \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index fa48476..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Mark Szepieniec - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..769fa02 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 Eddie A. Webb + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile deleted file mode 100644 index cfec1ab..0000000 --- a/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -OUT_DIR=output -IN_DIR=markdown -STYLES_DIR=styles -STYLE=chmduquesne - -all: html docx rtf pdf - -pdf: init - for f in $(IN_DIR)/*.md; do \ - FILE_NAME=`basename $$f | sed 's/.md//g'`; \ - echo $$FILE_NAME.pdf; \ - pandoc --standalone --template $(STYLES_DIR)/$(STYLE).tex \ - --from markdown --to context \ - --variable papersize=A4 \ - --output $(OUT_DIR)/$$FILE_NAME.tex $$f > /dev/null; \ - mtxrun --path=$(OUT_DIR) --result=$$FILE_NAME.pdf --script context $$FILE_NAME.tex > $(OUT_DIR)/context_$$FILE_NAME.log 2>&1; \ - done - -html: init -# Copy image folder to output dir so images are available in resume*.html - cp -r img/ output/ - for f in $(IN_DIR)/*.md; do \ - FILE_NAME=`basename $$f | sed 's/.md//g'`; \ - echo $$FILE_NAME.html; \ - pandoc --standalone --include-in-header $(STYLES_DIR)/$(STYLE).css \ - --lua-filter=pdc-links-target-blank.lua \ - --from markdown --to html \ - --output $(OUT_DIR)/$$FILE_NAME.html $$f \ - --metadata pagetitle=$$FILE_NAME;\ - done - -docx: init - for f in $(IN_DIR)/*.md; do \ - FILE_NAME=`basename $$f | sed 's/.md//g'`; \ - echo $$FILE_NAME.docx; \ - pandoc --standalone $$SMART $$f --output $(OUT_DIR)/$$FILE_NAME.docx; \ - done - -rtf: init - for f in $(IN_DIR)/*.md; do \ - FILE_NAME=`basename $$f | sed 's/.md//g'`; \ - echo $$FILE_NAME.rtf; \ - pandoc --standalone $$SMART $$f --output $(OUT_DIR)/$$FILE_NAME.rtf; \ - done - -init: dir version - -dir: - mkdir -p $(OUT_DIR) - -version: - PANDOC_VERSION=`pandoc --version | head -1 | cut -d' ' -f2 | cut -d'.' -f1`; \ - if [ "$$PANDOC_VERSION" -eq "2" ]; then \ - SMART=-smart; \ - else \ - SMART=--smart; \ - fi \ - -clean: - rm -f $(OUT_DIR)/* diff --git a/README.md b/README.md index 77df8d4..f28e61c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,85 @@ -# Description +# hugo Resume -[**My Resume**](https://collinbrown95.github.io/resume/resume-detailed.html) +Created from [Start Bootstrap - Resume](https://startbootstrap.com/template-overviews/resume/). +This is basically a single-page website with auto-scrolling based on left-hand nav. Dedicated project/publications pages allow more detail. -**Attribution**: The resume templates and styles used in this repository are borrowed from the [pandoc_resume](https://github.com/mszep/pandoc_resume) project. + + +- [Examples](#examples) + +- [Setup & Use](#setup--use) + - [Summary](#summary) + - [Data files](#data-files) + - [Projects](#projects) + - [Publications](#publications) + - [Blog / Posts](#blog--posts) + - [Template params](#template-params) + - [Internationalization](#internationalization) +- [Credits](#credits) + - [Contributions](#contributions) + - [Start Bootstrap Resume](#start-bootstrap-resume) + +## Setup & Use + +This theme uses a combination of a custom archetype `projects` and some data files to drive content. + +You can test the provided [exampleSite](exampleSite) after cloning with the command: +`cd exampleSite;hugo -t hugo-resume --themesDir ../.. server` + +### Summary +Edit the main `contents/_index.md with a brief bio/summary` + +### Data files +Data files are used for simple content presented on the homepage. + +- [data/skills.json](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/data/skills.json) +- [data/experience.json](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/data/experience.json) +- [data/education.json](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/data/education.json) + + +### Projects +Initially projects were in their own JSON file too, but I decided I wanted to allow more detail and custom formatting. +Projects are added to one of 2 subfolders of `creations` or `contributions`. The difference indicates your role as originator or colaborator. Use `hugo add projects/TYPE/name-of-project.md` to leverage the proper archetype. + +### Publications +Similar to projects, create them under `publications`. Include any papers, speaking engagements, articles, etc. + +### Blog / Posts +Similar to posts, create them under `blog`. Include any thoughts, musiings, etc. +**This template does not support a `posts` folder** + +### Template params + +All personal information outside the above details is captured by params in [`config.toml`](https://github.com/eddiewebb/hugo-resume/blob/master/exampleSite/config.toml). + +## Credits + +This project borrows significantly from the [Hugo Resume](https://github.com/eddiewebb/hugo-resume) Hugo Theme. + +### Contributions +The following users have made notable contributions: +- [Anthony Whitford](https://github.com/awhitford) +- [Kaushal Modi](https://github.com/kaushalmodi) +- [Julien Rouse](https://github.com/JulienRouse) + +### Start Bootstrap Resume + +Start Bootstrap is an open source library of free Bootstrap templates and themes. All of the free templates and themes on Start Bootstrap are released under the MIT license, which means you can use them for any purpose, even for commercial projects. + +* https://startbootstrap.com +* https://twitter.com/SBootstrap + +Start Bootstrap was created by and is maintained by **[David Miller](http://davidmiller.io/)**, Owner of [Blackrock Digital](http://blackrockdigital.io/). + +* http://davidmiller.io +* https://twitter.com/davidmillerskt +* https://github.com/davidtmiller + +Start Bootstrap is based on the [Bootstrap](http://getbootstrap.com/) framework created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thorton](https://twitter.com/fat). + + +# Attribution + +## Icons + +- Icons from *Skills* section are from [Icons8](https://icons8.com/) and [Devicon](https://github.com/devicons/devicon). \ No newline at end of file diff --git a/actions/action.yml b/actions/action.yml deleted file mode 100644 index 854e496..0000000 --- a/actions/action.yml +++ /dev/null @@ -1,7 +0,0 @@ -# action.yml -name: "Texlive Build" -description: "Build a document using texlive" -runs: - using: "docker" - image: "docker://ghcr.io/mszep/pandoc_resume:master" - entrypoint: "/entrypoint.sh" diff --git a/actions/entrypoint.sh b/actions/entrypoint.sh deleted file mode 100755 index 7fe0a24..0000000 --- a/actions/entrypoint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -ls -lah -pwd -make diff --git a/exampleSite/config.toml b/exampleSite/config.toml new file mode 100644 index 0000000..43ec3e6 --- /dev/null +++ b/exampleSite/config.toml @@ -0,0 +1,39 @@ +title = "Collin Brown" +baseURL = "http://localhost:8000" +theme = "resume" +languageCode = "en-ca" +PygmentsCodeFences = true +PygmentsCodeFencesGuessSyntax = true +PygmentsStyle = "monokai" +enableGitInfo = false + +[params] +credentials = "M.Sc. Candidate, M.A." +title = "Sr. Data Architect & Technical Lead" +favicon = "/favicon.ico" +firstName = "Collin" +lastName = "Brown" +profileImage = "img/collin.png" +showSocializations = true +showQr = true +sections = [ + "skills", + "experience", + "education", + "publications", + "contributions", +] + +[[params.handles]] +link = "https://www.linkedin.com/in/collin-brown-499a4580/" +name = "LinkedIn" + +[[params.handles]] +link = "https://github.com/collinbrown95/" +name = "GitHub" + +[outputs] +home = ["HTML", "JSON"] + +[taxonomies] +tag = "tags" diff --git a/exampleSite/content/_index.md b/exampleSite/content/_index.md new file mode 100644 index 0000000..219d3d1 --- /dev/null +++ b/exampleSite/content/_index.md @@ -0,0 +1,15 @@ +--- +title: "Home" +outputs: +- html +- rss +- json +--- + +Proven Data Engineering and Solution Architecture expertise. Track record of successful delivery of complex data-driven software projects in large enterprise settings. + +----- + +### Overview + +Combining my background in Data Science, Software Engineering, and Platform Development, I've driven projects at every level of the data value chain. From pioneering proof-of-concepts to leading large-scale system redesigns, I've honed expertise in scalable data architectures and DevOps best practices. My focus now is on implementing data mesh architectures by embedding myself in domain-aligned data product teams, ensuring that valuable concrete solutions drive meaningful organizational transformation. diff --git a/exampleSite/content/projects/contributions/_index.md b/exampleSite/content/projects/contributions/_index.md new file mode 100644 index 0000000..21d1f7f --- /dev/null +++ b/exampleSite/content/projects/contributions/_index.md @@ -0,0 +1,6 @@ +--- +title: Open Source Contributions +link: NA +image: /img/marketplace-summary.webp +type: hidden # Don't list as a page in Projects summary +--- diff --git a/exampleSite/content/projects/contributions/docanno.md b/exampleSite/content/projects/contributions/docanno.md new file mode 100644 index 0000000..177480d --- /dev/null +++ b/exampleSite/content/projects/contributions/docanno.md @@ -0,0 +1,10 @@ +--- +title: "Doccano" +link: "https://github.com/doccano/doccano/pull/976" +image: "/img/doccano.png" +description: "Open source annotation tool for machine learning practitioners. " +featured: true +tags: ["Python", "JavaScript", "Machine Learning"] +--- + +Implemented internationalization on the user interface, and also implemented miscellaneous small feature requests and bug fixes. diff --git a/exampleSite/content/projects/contributions/lingui-js.md b/exampleSite/content/projects/contributions/lingui-js.md new file mode 100644 index 0000000..a715760 --- /dev/null +++ b/exampleSite/content/projects/contributions/lingui-js.md @@ -0,0 +1,12 @@ +--- +title: Lingui-JS +link: 'https://github.com/lingui/js-lingui/pull/1752' +image: /img/lingui-logo.svg +description: >- + An open source internationalization library for JavaScript. +featured: true +tags: + - JavaScript +--- + +I contributed an example of setting up an Rspack project with Lingui-JS. diff --git a/exampleSite/content/publications/_index.md b/exampleSite/content/publications/_index.md new file mode 100644 index 0000000..37f5d3f --- /dev/null +++ b/exampleSite/content/publications/_index.md @@ -0,0 +1,8 @@ +--- +title: Publications +link: NA +image: /img/organicdevops.webp +description: NA +type: hidden +--- + diff --git a/exampleSite/content/publications/bitcoin-fees.md b/exampleSite/content/publications/bitcoin-fees.md new file mode 100644 index 0000000..8339119 --- /dev/null +++ b/exampleSite/content/publications/bitcoin-fees.md @@ -0,0 +1,10 @@ +--- +title: "What Drives Bitcoin Fees? Using SegWit to Assess Bitcoin’s Long-Run Sustainability" +date: 2021-01-21 +pubtype: "Paper" +featured: true +description: "Can Bitcoin remain tamper-proof in the long run? We use block-level data from the Bitcoin blockchain to estimate the impact of congestion and the US dollar price on fee rates." +link: "https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4013550" +--- + +Can Bitcoin remain tamper-proof in the long run? We use block-level data from the Bitcoin blockchain to estimate the impact of congestion and the US dollar price on fee rates. The introduction and adoption of the segregated witness (SegWit) protocol allows us to identify an aggregate demand curve for Bitcoin transactions. We find that SegWit has reduced fee revenue by about 70%. Fee revenue could be maximized at a block size of about 0.6 megabytes when SegWit adoption remains at current levels. At this block size, maximum fee revenue would be equivalent to one-eighth of the current average block reward. Hence, large sustained price increases are required to keep mining rewards constant in the long run. diff --git a/exampleSite/data/education.json b/exampleSite/data/education.json new file mode 100644 index 0000000..c1bbee8 --- /dev/null +++ b/exampleSite/data/education.json @@ -0,0 +1,27 @@ +[ + { + "school":"[Georgia Institute of Technology](https://www.gatech.edu/)", + "degree":"Master of Science", + "major":"Computer Science", + "notes":"Interactive Intelligence Specialization", + "range":"2024 - 2027 (Expected)" + }, + { + "school": "[Athabasca University](https://www.athabascau.ca/)", + "major": "Computer Science Core Curriculum", + "range": "2020-2023" + }, + { + "school":"[Queen's University](https://www.queensu.ca/)", + "degree":"Master of Arts", + "major":"Economics", + "range":"2017-2018" + }, + { + "school": "[McMaster University](https://www.mcmaster.ca/)", + "degree": "Bachelor of Arts", + "major": "Economics", + "range": "2013-2017", + "notes": "Minor in Mathematics and Statistics" + } +] diff --git a/exampleSite/data/experience.json b/exampleSite/data/experience.json new file mode 100644 index 0000000..dafeab0 --- /dev/null +++ b/exampleSite/data/experience.json @@ -0,0 +1,26 @@ +[ + { + "role":"Sr. Data Architect & Technical Lead", + "company":"Consumer Prices Division - Statistics Canada", + "summary":"Leading the divisional architecture task team to align existing data product sub-systems with target enterprise architecture goals, and establishing best practices for development, aiming to enhance data product maturity and open-source development.", + "range":"May 2024 - Present" + }, + { + "role":"Sr. Platform Developer", + "company":"Various IT Teams - Statistics Canada", + "summary":"Led multiple development efforts for a Kubernetes-native data analytics platform, implementing horizontal capabilities and advising on data mesh architecture.", + "range":"October 2020 - April 2024" + }, + { + "role":"Data Engineering Specialist", + "company":"Data Science Division - Statistics Canada", + "summary":"Led an 18-month redesign of a large data processing system for transportation statistics. Delivered the solution on time, under budget, and ensured a smooth transition to production.", + "range":"October 2020 - April 2024" + }, + { + "role":"Jr. Data Scientist", + "company":"Data Science Division - Employment and Social Development Canada", + "summary":"Led Proof-of-Concept projects in data analytics and machine learning, delivering actionable insights and automation through small-scale internal tools and analysis outputs.", + "range":"August 2018 - September 2020" + } +] diff --git a/exampleSite/data/skills.json b/exampleSite/data/skills.json new file mode 100644 index 0000000..e2ec240 --- /dev/null +++ b/exampleSite/data/skills.json @@ -0,0 +1,161 @@ +[ + { + "grouping": "Soft Skills", + "skills": [ + { + "name": "Prioritizing Valuable Work", + "img": "https://img.icons8.com/external-wanicon-lineal-color-wanicon/64/external-prioritize-business-administration-wanicon-lineal-color-wanicon.png" + }, + { + "name": "Understanding Business Requirements", + "img": "https://img.icons8.com/external-flaticons-lineal-color-flat-icons/64/external-requirements-agile-flaticons-lineal-color-flat-icons.png" + }, + { + "name": "Optimizing Team Interactions", + "img": "https://img.icons8.com/ios-filled/50/decentralized-network.png" + }, + { + "name": "Documentation", + "img": "https://img.icons8.com/external-flaticons-lineal-color-flat-icons/64/external-documentation-productivity-flaticons-lineal-color-flat-icons-2.png" + }, + { + "name": "Project Management", + "img": "https://img.icons8.com/arcade/64/project-management.png" + } + ] + }, + { + "grouping": "Solution Architecture", + "skills": [ + { + "name": "System Design", + "img": "https://img.icons8.com/external-inipagistudio-mixed-inipagistudio/64/external-system-industrial-manufacturing-inipagistudio-mixed-inipagistudio.png" + }, + { + "name": "Software Design", + "img": "https://img.icons8.com/ios/50/code--v1.png" + }, + { + "name": "Cloud Cost Optimization", + "img": "https://img.icons8.com/color/48/us-dollar-circled--v1.png" + }, + { + "name": "Cloud Networking", + "img": "https://img.icons8.com/fluency/48/router.png" + }, + { + "name": "Test Automation", + "img": "https://img.icons8.com/pulsar-gradient/48/pass.png" + } + ] + }, + { + "grouping": "Data Engineering", + "skills": [ + { + "name": "Apache Spark", + "icon": "devicon-apachespark-original colored" + }, + { + "name": "SQL", + "img": "https://img.icons8.com/external-soft-fill-juicy-fish/60/external-sql-coding-and-development-soft-fill-soft-fill-juicy-fish.png" + }, + { + "name": "Data Modelling", + "img": "https://img.icons8.com/external-smashingstocks-mixed-smashing-stocks/68/external-data-warehouse-data-analytics-and-statistics-smashingstocks-mixed-smashing-stocks.png" + } + ] + }, + { + "grouping": "Programming Languages, Operating Systems & Tools", + "skills": [ + { + "name": "Python", + "icon": "devicon-python-plain colored" + }, + { + "name": "Java", + "icon": "devicon-java-plain colored" + }, + { + "name": "Go", + "icon": "devicon-go-plain colored" + }, + { + "name": "JavaScript", + "icon": "devicon-javascript-plain colored" + }, + { + "name": "Linux", + "icon": "devicon-linux-plain colored" + }, + { + "name": "Git", + "icon": "devicon-git-plain colored" + }, + { + "name": "Pytest", + "icon": "devicon-pytest-plain colored" + } + ] + }, + { + "grouping": "Cloud Providers and DevOps", + "skills": [ + { + "name": "Azure", + "icon": "devicon-azure-plain colored" + }, + { + "name": "Google Cloud Platform", + "icon": "devicon-googlecloud-plain colored" + }, + { + "name": "Terraform", + "icon": "devicon-terraform-plain colored" + }, + { + "name": "Docker", + "icon": "devicon-docker-plain colored" + }, + { + "name": "Kubernetes", + "icon": "devicon-kubernetes-plain colored" + }, + { + "name": "ArgoCD and Workflows", + "icon": "devicon-argocd-plain colored" + } + ] + }, + { + "grouping": "Platforms & Project Management", + "skills": [ + { + "name": "GitLab", + "icon": "devicon-gitlab-plain colored" + }, + { + "name": "Jira", + "icon": "devicon-jira-plain colored" + }, + { + "name": "GitHub", + "icon": "devicon-github-original colored" + } + ] + }, + { + "grouping": "Natural Languages", + "skills": [ + { + "name": "English (Fluent)", + "img": "https://img.icons8.com/color/48/great-britain-circular.png" + }, + { + "name": "French (Limited Proficiency)", + "img": "https://img.icons8.com/color/48/france-circular.png" + } + ] + } +] \ No newline at end of file diff --git a/exampleSite/static/favicon.ico b/exampleSite/static/favicon.ico new file mode 100644 index 0000000..6424d30 Binary files /dev/null and b/exampleSite/static/favicon.ico differ diff --git a/exampleSite/static/img/collin.png b/exampleSite/static/img/collin.png new file mode 100644 index 0000000..b6c063c Binary files /dev/null and b/exampleSite/static/img/collin.png differ diff --git a/exampleSite/static/img/doccano.png b/exampleSite/static/img/doccano.png new file mode 100644 index 0000000..10d1e5d Binary files /dev/null and b/exampleSite/static/img/doccano.png differ diff --git a/exampleSite/static/img/lingui-logo.svg b/exampleSite/static/img/lingui-logo.svg new file mode 100644 index 0000000..79cc54a --- /dev/null +++ b/exampleSite/static/img/lingui-logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/img/github.png b/img/github.png deleted file mode 100644 index 044bc49..0000000 Binary files a/img/github.png and /dev/null differ diff --git a/img/linkedin.png b/img/linkedin.png deleted file mode 100644 index 8243562..0000000 Binary files a/img/linkedin.png and /dev/null differ diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..85c8768 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,75 @@ + + + + + + {{ .Site.Title }} | {{ .Title }} + + + {{ $preview_image := .Resources.GetMatch "site_preview" }} + {{if $preview_image }} + + + {{ else }} + + + {{ end }} + + + + + + + + + + + + + + + + + + + + + + + + {{ hugo.Generator }} + {{ block "headfiles" . }} + + {{ end }} + + + {{ partial "nav.html" . }} +
+ {{ block "main" . }} + {{ .Content }} + {{ end }} +
+ + + + + + + + + {{ if .Site.Params.google.analytics.trackerID }} + + + {{ end }} + + {{ block "footerfiles" . }} + + {{ end }} + + diff --git a/layouts/_default/index.json b/layouts/_default/index.json new file mode 100644 index 0000000..c93f805 --- /dev/null +++ b/layouts/_default/index.json @@ -0,0 +1,5 @@ +{{- $.Scratch.Add "index" slice -}} +{{- range .Site.RegularPages -}} + {{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}} +{{- end -}} +{{- $.Scratch.Get "index" | jsonify -}} diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..34c05b0 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,10 @@ +{{ define "main" }} + {{ .Content }} + +{{ end }} diff --git a/layouts/_default/section.html b/layouts/_default/section.html new file mode 100644 index 0000000..3d04314 --- /dev/null +++ b/layouts/_default/section.html @@ -0,0 +1,23 @@ +{{ define "main" }} +{{ partial "breadcrumbs" . }} +
+
+

{{ .Title }}

+

{{ .Content }}

+ {{ range .Data.Pages.ByWeight }} + {{ if ne .Type "markdown" }} + {{ partial (printf "%s%s" .Type "Summary") . }} + {{ end }} + {{ end }} + {{ range .Sections }} +

{{ .Title }}

+

{{ .Content }}

+ {{ range .Pages }} + {{ if ne .Type "markdown" }} + {{ partial (printf "%s%s" .Type "Summary") . }} + {{ end }} + {{ end }} + {{ end }} +
+
+{{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..6efcc1e --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,8 @@ +{{ define "main" }} +
+
+

{{ .Title }}

+ {{ .Content }} +
+
+{{ end }} diff --git a/layouts/_default/taxonomy.html b/layouts/_default/taxonomy.html new file mode 100644 index 0000000..5777ef4 --- /dev/null +++ b/layouts/_default/taxonomy.html @@ -0,0 +1,16 @@ +{{ define "main" }} + +
+
+ + Content tagged with {{ .Data.Term }} + +
+
+{{ end }} diff --git a/layouts/_default/terms.html b/layouts/_default/terms.html new file mode 100644 index 0000000..16ba624 --- /dev/null +++ b/layouts/_default/terms.html @@ -0,0 +1,14 @@ +{{ define "main" }} +
+
+ + +
+
+{{ end }} diff --git a/layouts/adv/single.html b/layouts/adv/single.html new file mode 100644 index 0000000..13714e8 --- /dev/null +++ b/layouts/adv/single.html @@ -0,0 +1,34 @@ +{{ define "main" }} +{{ partial "breadcrumbs" . }} +
+
+
+

{{ .Title }}

+ {{ .Date.Format "January 2, 2006" }} +
+
+ {{ .Summary }} +
+
+ {{ with $.Page.Resources.GetMatch "map" }} + {{ $image := .Resize "x400" }} + {{ with $.Page.Resources.GetMatch "gpx" }} + Map image of this route + {{ end }} + {{ end }} +
+
+ {{ $body := replace .Content .Summary "" }} + {{ $body | safeHTML }} + {{ with .Params.link }} +

Project link: {{ . }}

{{ end }} +
+
+ {{ with $.Page.Resources.GetMatch "gpx" }} + GPX file + {{ end }} +
+ {{ partial "advtags" . }} +
+
+{{ end }} diff --git a/layouts/blog/single.html b/layouts/blog/single.html new file mode 100644 index 0000000..4e4a645 --- /dev/null +++ b/layouts/blog/single.html @@ -0,0 +1,22 @@ +{{ define "main" }} +{{ partial "breadcrumbs" . }} +
+
+
+

{{ .Title }}

+ {{ .Date.Format "January 2, 2006" }} +
+
+ {{ .Content }} + {{ with .Params.link }} +

Project link: {{ . }}

{{ end }} +
+
+ {{ with $.Page.Resources.GetMatch "gpx" }} + GPX file + {{ end }} +
+ {{ partial "advtags" . }} +
+
+{{ end }} diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..27a7019 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,22 @@ +{{ define "main" }} + {{ partial "about.html" .}} + {{ $projects := slice "creations" "contributions" }} + {{ $sections := slice "publications" "blog" }} + {{ $site := .Site }} + {{ range .Site.Params.sections }} + {{ $sectionName := . }} + {{ if in $projects . }} + {{ with $site.GetPage "section" (printf "projects/%s" .) }} + {{ .Scratch.Set "sectionId" $sectionName }} + {{ partial "sectionSummary" . }} + {{ end }} + {{ else if in $sections . }} + {{ with $site.GetPage "section" . }} + {{ .Scratch.Set "sectionId" $sectionName }} + {{ partial "sectionSummary" . }} + {{ end }} + {{ else }} + {{ partial (printf "portfolio/%s" . ) $site }} + {{ end }} + {{ end }} +{{ end }} diff --git a/layouts/markdown/baseof.html b/layouts/markdown/baseof.html new file mode 100644 index 0000000..3b7f8e4 --- /dev/null +++ b/layouts/markdown/baseof.html @@ -0,0 +1,74 @@ + + + + + + + {{ .Site.Title }} | {{ .Title }} + + + + + + + + + + + + + + + + + + + + + + +
+ {{ block "main" . }} + {{ .Content }} + {{ end }} + + {{ with $.GitInfo }}{{ with $.Site.Params.gitCommitPrefix }} | Page + content generated from commit: {{ $.GitInfo.AbbreviatedHash }}{{ end }}{{end}} +
+ + {{ block "footerfiles" . }} + + {{ end }} + + + \ No newline at end of file diff --git a/layouts/markdown/single.html b/layouts/markdown/single.html new file mode 100644 index 0000000..3aa7594 --- /dev/null +++ b/layouts/markdown/single.html @@ -0,0 +1,12 @@ +{{ define "main" }} +
+
+
+

{{ .Title }}

+ {{ .Date.Format "January 2, 2006" }} +
+
+ {{ .Content }} +
+
+{{ end }} diff --git a/layouts/partials/about.html b/layouts/partials/about.html new file mode 100644 index 0000000..8c3cc54 --- /dev/null +++ b/layouts/partials/about.html @@ -0,0 +1,55 @@ +
+
+
+
+ +

{{ .Site.Params.firstName }} + {{ .Site.Params.lastName }} +

+

+ {{ if .Site.Params.credentials }} + ({{ .Site.Params.credentials }}) + {{ end }} +

+
{{ .Site.Params.title }} +
+
+
+ {{ if .Site.Params.showCertifications }} +

{{ "certifications" }}

+
    + {{ range .Site.Data.certifications }} +
  • + + + +
  • + {{ end }} +
+ {{ end }} + {{ if .Site.Params.showSocializations }} +
    + {{ range .Site.Params.handles }} +
  • + +
  • + {{ end }} +
+ {{ end }} +
+
+
+ {{ .Content }} +
+
+
\ No newline at end of file diff --git a/layouts/partials/advtags.html b/layouts/partials/advtags.html new file mode 100644 index 0000000..7a32dff --- /dev/null +++ b/layouts/partials/advtags.html @@ -0,0 +1,5 @@ + diff --git a/layouts/partials/breadcrumbs.html b/layouts/partials/breadcrumbs.html new file mode 100644 index 0000000..d1cbd76 --- /dev/null +++ b/layouts/partials/breadcrumbs.html @@ -0,0 +1,17 @@ + + + +{{ define "breadcrumbnav" }} +{{ if .p1.Parent }} +{{ template "breadcrumbnav" (dict "p1" .p1.Parent "p2" .p2 ) }} +{{ else if not .p1.IsHome }} +{{ template "breadcrumbnav" (dict "p1" .p1.Site.Home "p2" .p2 ) }} +{{ end }} + +{{ end }} diff --git a/layouts/partials/hiddenSummary.html b/layouts/partials/hiddenSummary.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/partials/nav.html b/layouts/partials/nav.html new file mode 100644 index 0000000..7569499 --- /dev/null +++ b/layouts/partials/nav.html @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/layouts/partials/portfolio/education.html b/layouts/partials/portfolio/education.html new file mode 100644 index 0000000..345a034 --- /dev/null +++ b/layouts/partials/portfolio/education.html @@ -0,0 +1,18 @@ +
+
+

{{ "education" }}

+ {{ range $.Data.education }} +
+
+

{{ .school | markdownify }}

+
{{ .degree }}
+
{{ .major | markdownify }}
+

{{ .notes | markdownify }} +

+
+ {{ .range }} +
+
+ {{ end }} +
+
diff --git a/layouts/partials/portfolio/experience.html b/layouts/partials/portfolio/experience.html new file mode 100644 index 0000000..0a223c3 --- /dev/null +++ b/layouts/partials/portfolio/experience.html @@ -0,0 +1,18 @@ +
+
+

{{ "experience" }}

+ {{ range $.Data.experience }} +
+
+

{{ .role }}

+
{{ .company | markdownify }}
+

{{ .summary | markdownify }}

+
+
+ {{ .range }} +
+
+ {{ end }} +
+ +
diff --git a/layouts/partials/portfolio/skills.html b/layouts/partials/portfolio/skills.html new file mode 100644 index 0000000..0b02132 --- /dev/null +++ b/layouts/partials/portfolio/skills.html @@ -0,0 +1,38 @@ +
+
+

{{ "skills" }}

+ {{ $data := $.Data }} + {{ range $data.skills }} +
{{ .grouping }}
+ + {{ end }} +
+
+

+ Icons provided by + + Icons8 + + and + + Devicon + . +

+
+
\ No newline at end of file diff --git a/layouts/partials/projectsSummary.html b/layouts/partials/projectsSummary.html new file mode 100644 index 0000000..d44c2cb --- /dev/null +++ b/layouts/partials/projectsSummary.html @@ -0,0 +1,15 @@ + +

{{ .Title }}

+
+ +
+ {{with .Params.image }} + + {{ end }} +
+
+

{{ .Description | safeHTML }}

+

Read more..

+
+
+
{{ partial "techtags" . }}
diff --git a/layouts/partials/publicationsSummary.html b/layouts/partials/publicationsSummary.html new file mode 100644 index 0000000..697877a --- /dev/null +++ b/layouts/partials/publicationsSummary.html @@ -0,0 +1,12 @@ + +
+
+

{{ .Params.pubtype }} - {{ .Params.title }}

+
{{ .Params.description | safeHTML }}
+

{{ partial "techtags" . }}

+
+
+ {{ .Params.date | dateFormat "January 2006" }} + +
+
diff --git a/layouts/partials/sectionSummary.html b/layouts/partials/sectionSummary.html new file mode 100644 index 0000000..ecceadb --- /dev/null +++ b/layouts/partials/sectionSummary.html @@ -0,0 +1,19 @@ +
+
+
+

{{ .Title }}

+ {{ .Content | replaceRE "

" "

" | safeHTML }} +

+ + {{ $featuredPages := where .Pages "Params.featured" true }} + {{ range $featuredPages }} + {{ partial (printf "%s%s" .Section "Summary") . }} + {{ end }} +
+ {{ if gt .Pages $featuredPages }} +
+

Wait! There's more..

+

See all {{ .Title | pluralize }} for more examples!

+
+ {{ end }} +
diff --git a/layouts/partials/techtags.html b/layouts/partials/techtags.html new file mode 100644 index 0000000..1253100 --- /dev/null +++ b/layouts/partials/techtags.html @@ -0,0 +1,5 @@ + diff --git a/layouts/projects/single.html b/layouts/projects/single.html new file mode 100644 index 0000000..4a14445 --- /dev/null +++ b/layouts/projects/single.html @@ -0,0 +1,11 @@ +{{ define "main" }} +{{ partial "breadcrumbs" . }} +
+
+

{{ .Title }}

+ {{ .Content }} + {{ with .Params.link }}

Project link: {{ . }}

{{ end }} + {{ partial "techtags" . }} +
+
+{{ end }} diff --git a/layouts/publications/single.html b/layouts/publications/single.html new file mode 100644 index 0000000..b6bbb55 --- /dev/null +++ b/layouts/publications/single.html @@ -0,0 +1,14 @@ +{{ define "main" }} +{{ partial "breadcrumbs" . }} +
+
+

{{ .Title }}

+

Link to full {{ .Params.pubtype }}

+ {{ with .Params.image }}{{ end }} + {{ .Content }} +

+ {{ partial "techtags" . }} +

+
+
+{{ end }} diff --git a/layouts/shortcodes/imgresize.html b/layouts/shortcodes/imgresize.html new file mode 100644 index 0000000..196c64b --- /dev/null +++ b/layouts/shortcodes/imgresize.html @@ -0,0 +1,7 @@ +{{ $original := .Page.Resources.GetMatch (.Get 0) }} +{{ $options := .Get 1 }} +{{ .Scratch.Set "image" ($original.Fit $options) }} +{{ $image := .Scratch.Get "image" }} +{{ $title := .Get 2 }} +{{ $title }} + diff --git a/markdown/resume.md b/markdown/resume.md deleted file mode 100644 index 63600f8..0000000 --- a/markdown/resume.md +++ /dev/null @@ -1,96 +0,0 @@ -Collin Brown -============ - -| ![github](img/github.png ) | [github.com](https://github.com/collinbrown95) | ![linkedin](img/linkedin.png) | [linkedin.com](https://ca.linkedin.com/in/collin-brown-499a4580) | -| -------------------------- | ---------------------------------------------- | ----------------------------- | ---------------------------------------------------------------- | - -Skills, Tools, and Technology ------------------------------ - -**DevOps** -: Kubernetes · Docker · Istio · ArgoCD · Argo Workflows · Gitlab CI · Github Actions · Bash Scripting · Terraform - ------------------------- - -**Cloud Providers** -: Azure - ------------------------- - -**Languages** -: Python · Golang · JavaScript · Java - ------------------------- - -**Data Engineering** -: Pandas · Numpy · Data Validation · Parquet · Object Storage · Elasticsearch · Databricks - ------------------------- - -**Data Science** -: Web Scraping · Text Analysis · Deep Learning (Pytorch) - ------------------------- - -**Development** -: React · Vue · d3.js · Flask · FastAPI · SQLAlchemy · Mkdocs - - -Professional Experience ------------------------ - -**Software Developer / Technical Advisor · (Oct 2020 - Present)** - -*Statistics Canada · Data Science Division* - -* Led the first cloud native redesign of a large data processing system that is used to produce official statistics on tourism. - -* Significantly reduced cloud costs for the organization (e.g. applied container right-sizing to Kubernetes workloads; decommissioned 100TB of Azure managed disks). - -* Unblocked dozens of users of a Kubernetes-based analytics environment by enabling network connectivity to certain out-of-cluster services for authorized users. - -* Unblocked dozens of external users by developing a mechanism to apply differential access control for employee and non-employee cluster users. - -* Led an effort to deploy a large data science PDF table extraction application into our organization's internal Kubernetes environment. - -* Provided horizontal technical advisory on various cloud native application development topics. - -**Data Scientist · (Aug 2018 - Oct 2020)** - -*Employment and Social Development Canada · Data Science Division* - -* Developed multiple proof-of-concept data science applications to test value and assess feasibility. - -Publications, Awards, Open Source Development ---------------------------------------------- - -#### **Open Source Software Contributions** - -[Doccano](https://github.com/doccano/doccano) -: Implemented internationalization on user interface, miscellaneous small feature requests, and bug fixes. - -#### **Professional Awards** - -Branch Award -: Most Innovative Project · Modern Statistical Methods and Data Science Branch. Awarded for leading the team that delivered the organization's first successful cloud-native redesign of a large scale data processing system that is being used in monthly production of official statistics. - -#### **Research Publications** - -**January 2022**: [What Drives Bitcoin Fees? Using Segwit to Assess Bitcoin's Long-run Sustainability](https://www.risk.net/journal-of-financial-market-infrastructures/7914886/what-drives-bitcoin-fees-using-segwit-to-assess-bitcoins-long-run-sustainability) · Published in the Journal of Financial Market Infrastructures - -Education ---------- - -**Undergraduate Coursework, Computer Science (part-time) · Athabasca University** - -Completed several core courses in the undergraduate Computer Science curriculum. - -*Courses*: Object Oriented Programming · Data Structures and Algorithms · Operating Systems · Design and Analysis of Algorithms · Advanced Java Programming - -**Master's Degree, Economics · Queen's University** - -*Scholarships and Awards*: Canada Graduate Scholarship (SSHRC) · Tri-Agency Recipient Recognition Award - -**Bachelor's Degree (Honours), Economics · McMaster University** - -Minor in Mathematics and Statistics diff --git a/pdc-links-target-blank.lua b/pdc-links-target-blank.lua deleted file mode 100644 index d4f492b..0000000 --- a/pdc-links-target-blank.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Add target="_blank" attributes to all http links in a Pandoc document - -local function add_target_blank (link) - if string.match(link.target, '^http') then -- here .target == href attribute - link.attributes.target = '_blank' -- here .target == traget attribute - end - return link -end - --- remove lines 4 and 6 to add target="_blank" to all links, not just http(s) - -return { - { Link = add_target_blank } -} - diff --git a/static/css/resume.css b/static/css/resume.css new file mode 100644 index 0000000..9826d4c --- /dev/null +++ b/static/css/resume.css @@ -0,0 +1,156 @@ +html { + --scroll-behavior: smooth; + scroll-behavior: smooth; +} + +body { + font-family: 'Open Sans', serif; + padding-top: 54px; + color: #868e96; +} + +@media (min-width: 992px) { + body { + padding-top: 0; + padding-left: 17rem; + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Saira Extra Condensed', serif; + font-weight: 700; + color: #343a40; +} + + +h1, h2{ + text-transform: uppercase; +} + +h1 { + font-size: 6rem; + line-height: 5.5rem; +} + +h2 { + font-size: 3.5rem; +} + +.subheading { + text-transform: uppercase; + font-weight: 500; + font-family: 'Saira Extra Condensed', serif; + font-size: 1.35rem; +} + +.list-social-icons a { + color: #495057; +} + +.list-social-icons a:hover { + color: #41B06E; +} + +.list-social-icons a .fa-lg { + font-size: 1.75rem; +} + +.list-icons { + font-size: 3rem; +} + +.list-icons .list-inline-item i:hover { + color: #41B06E; +} + +#sideNav .navbar-nav .nav-item .nav-link { + font-weight: 600; + text-transform: uppercase; +} + +@media (min-width: 992px) { + #sideNav { + text-align: center; + position: fixed; + top: 0; + left: 0; + display: flex; + flex-direction: column; + width: 17rem; + height: 100vh; + } + #sideNav .navbar-brand { + display: flex; + margin: auto auto 0; + padding: 0.5rem; + } + #sideNav .navbar-brand .img-profile { + max-width: 10rem; + max-height: 10rem; + border: 0.5rem solid rgba(255, 255, 255, 0.2); + } + #sideNav .navbar-collapse { + display: flex; + align-items: flex-start; + flex-grow: 0; + width: 100%; + margin-bottom: auto; + } + #sideNav .navbar-collapse .navbar-nav { + flex-direction: column; + width: 100%; + } + #sideNav .navbar-collapse .navbar-nav .nav-item { + display: block; + } + #sideNav .navbar-collapse .navbar-nav .nav-item .nav-link { + display: block; + } +} + +section.resume-section { + border-bottom: 1px solid #dee2e6; + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +section.resume-section .resume-item .resume-date { + min-width: none; +} + +@media (min-width: 768px) { + section.resume-section { + min-height: 100vh; + } + section.resume-section .resume-item .resume-date { + min-width: 18rem; + } +} + +@media (min-width: 992px) { + section.resume-section { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } +} + +.bg-primary { + background-color: #41B06E !important; +} + +.text-primary { + color: #41B06E !important; +} + +a { + color: #41B06E; +} + +a:hover, a:focus, a:active { + color: #824027; +} diff --git a/static/css/tweaks.css b/static/css/tweaks.css new file mode 100644 index 0000000..4c207a8 --- /dev/null +++ b/static/css/tweaks.css @@ -0,0 +1,151 @@ + +@media (max-width: 768px) { + /* makes googlebot happy with tap target spacing */ + a { + min-height: 48px !important; + min-width: 48px !important; + min-inline-size: 48px !important; + margin-right: 4px; + margin-left: 4px; + line-height: 48px; +} +} + +img { + max-width: 100% !important; +} + +.p-0{ + margin: 0 auto; +} + +.devicons{ + font-size:1.5em; + vertical-align: sub; +} + +/* ensure items with short summarues push date over image */ +.publication-content{ + width:90%; +} + + +h3{ + margin-top:40px; +} + +h3.mb-0{ + margin-top:0; +} + +div.skills-heading{ + margin-top:1em; + margin-bottom:0 !important; +} + + + +/* From https://codepen.io/wbeeftink/pen/dIaDH */ + +.tags { + font: 12px/1.5 'PT Sans', serif; + list-style: none; + margin: 0; + overflow: hidden; + padding: 0; +} + +.tags li { + float: left; +} + +.tag { + background: #eee; + border-radius: 3px 0 0 3px; + color: #999; + display: inline-block; + height: 26px; + line-height: 26px; + padding: 0 20px 0 23px; + position: relative; + margin: 0 10px 10px 0; + text-decoration: none; + -webkit-transition: color 0.2s; +} + +.tag::before { + background: #fff; + border-radius: 10px; + box-shadow: inset 0 1px rgba(0, 0, 0, 0.25); + content: ''; + height: 6px; + left: 10px; + position: absolute; + width: 6px; + top: 10px; +} + +.tag::after { + background: #fff; + border-bottom: 13px solid transparent; + border-left: 10px solid #eee; + border-top: 13px solid transparent; + content: ''; + position: absolute; + right: 0; + top: 0; +} + +.tag:hover { + background-color: crimson; + color: white; +} + +.tag:hover::after { + border-left-color: crimson; +} + +.project-fact{ + font-size:80%; + font-style:italic; +} + + + + +.resume-section blockquote { + border-left: 4px solid #41B06E; + padding-left: 1em; +} + +/* Fix responsive width for blog posts */ +.my-auto { + width: 100% +} + + .advteaser-container{ + + } + + .advteaser { + width: 250px; + height: 250px; + position: relative; + display: inline-block; + } + .advteaser img { + position: absolute; + top: 0; + left: 0; + } + .advteaser .img-top { + display: none; + z-index: 99; + } + .advteaser-container:hover .img-top { + display: inline; + } + + img.qrcode { + max-width: 300px !important; + } \ No newline at end of file diff --git a/static/js/resume.js b/static/js/resume.js new file mode 100644 index 0000000..18c59f1 --- /dev/null +++ b/static/js/resume.js @@ -0,0 +1,18 @@ +(function($) { + "use strict"; // Start of use strict + + // Closes responsive menu when a scroll trigger link is clicked + $('.js-scroll-trigger').click(function() { + $('.navbar-collapse').collapse('hide'); + }); + + // Activate scrollspy to add active class to navbar items on scroll + $('body').scrollspy({ + target: '#sideNav' + }); + + $(function () { + $('[data-toggle="tooltip"]').tooltip() + }) + +})(jQuery); // End of use strict diff --git a/styles/chmduquesne.css b/styles/chmduquesne.css deleted file mode 100644 index 748fd5d..0000000 --- a/styles/chmduquesne.css +++ /dev/null @@ -1,95 +0,0 @@ - diff --git a/styles/chmduquesne.tex b/styles/chmduquesne.tex deleted file mode 100644 index 5f032ce..0000000 --- a/styles/chmduquesne.tex +++ /dev/null @@ -1,113 +0,0 @@ -% Copyright 2013 Christophe-Marie Duquesne -% Copyright 2014 Mark Szepieniec -% -% ConText style for making a resume with pandoc. Inspired by moderncv. -% -% This CSS document is delivered to you under the CC BY-SA 3.0 License. -% https://creativecommons.org/licenses/by-sa/3.0/deed.en_US - -\startmode[*mkii] - \enableregime[utf-8] - \setupcolors[state=start] -\stopmode -$if(mainlang)$ -\mainlanguage[$mainlang$] -$endif$ - -\setupcolor[hex] -\definecolor[titlegrey][h=757575] -\definecolor[sectioncolor][h=397249] -\definecolor[rulecolor][h=9cb770] - -% Enable hyperlinks -\setupinteraction[state=start, color=sectioncolor] - -\setuppapersize [$if(papersize)$$papersize$$else$letter$endif$][$if(papersize)$$papersize$$else$letter$endif$] -\setuplayout [width=middle, height=middle, - backspace=20mm, cutspace=0mm, - topspace=10mm, bottomspace=20mm, - header=0mm, footer=0mm] - -%\setuppagenumbering[location={footer,center}] - -\setupbodyfont[11pt, helvetica] - -\setupwhitespace[medium] - -\setupblackrules[width=31mm, color=rulecolor] - -\setuphead[chapter] [style=\tfd] -\setuphead[section] [style=\tfd\bf, color=titlegrey, align=middle] -\setuphead[subsection] [style=\tfb\bf, color=sectioncolor, align=right, - before={\leavevmode\blackrule\hspace}] -\setuphead[subsubsection][style=\bf] - -$if(number-sections)$ -$else$ -\setuphead[chapter, section, subsection, subsubsection][number=no] -$endif$ - -%\setupdescriptions[width=10mm] - -\definedescription - [description] - [headstyle=bold, style=normal, - location=hanging, width=18mm, distance=14mm, margin=0cm] - -\setupitemize[autointro, packed] % prevent orphan list intro -\setupitemize[indentnext=no] - -\defineitemgroup[enumerate] -\setupenumerate[each][fit][itemalign=left,distance=.5em,style={\feature[+][default:tnum]}] - -\setupfloat[figure][default={here,nonumber}] -\setupfloat[table][default={here,nonumber}] - -\setuptables[textwidth=max, HL=none] -\setupxtable[frame=off,option={stretch,width}] - -\setupthinrules[width=15em] % width of horizontal rules - -\setupdelimitedtext - [blockquote] - [before={\setupalign[middle]}, - indentnext=no, - ] - -$if(toc)$ -\setupcombinedlist[content][list={$placelist$}] - -$endif$ -$for(header-includes)$ -$header-includes$ -$endfor$ - -\starttext -$if(title)$ -\startalignment[center] - \blank[2*big] - {\tfd $title$} -$if(author)$ - \blank[3*medium] - {\tfa $for(author)$$author$$sep$\crlf $endfor$} -$endif$ -$if(date)$ - \blank[2*medium] - {\tfa $date$} -$endif$ - \blank[3*medium] -\stopalignment -$endif$ -$for(include-before)$ -$include-before$ -$endfor$ -$if(toc)$ -\placecontent -$endif$ - -$body$ - -$for(include-after)$ -$include-after$ -$endfor$ -\stoptext