From c8992bc7543d8ca7c2ee3cc200a7fbf1a5fae059 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Thu, 29 Feb 2024 02:50:26 +0100 Subject: Initial --- .gitignore | 3 + css/style.css | 27 +++++++++ index.md | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ portfolio-hs.cabal | 17 ++++++ site.hs | 32 +++++++++++ templates/default.html | 11 ++++ 6 files changed, 238 insertions(+) create mode 100644 .gitignore create mode 100644 css/style.css create mode 100644 index.md create mode 100644 portfolio-hs.cabal create mode 100644 site.hs create mode 100644 templates/default.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4497c7b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +_cache/ +_site/ +dist-newstyle/ diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..e6fcdd1 --- /dev/null +++ b/css/style.css @@ -0,0 +1,27 @@ +html { + margin: 0; + padding: 0 5px; +} + +body { + background-color: #fdfdfd; + color: #313b45; + font-family: sans-serif; + font-size: 15px; + hyphens: auto; + margin: 0 auto; + max-width: 900px; + padding: 0 5px; +} + +h1 { + border-bottom: solid 1px #ccc; + font-size: 56px; + font-weight: 100; + margin-left: -5px; + padding-bottom: 20px; +} + +a { + color: blue; +} diff --git a/index.md b/index.md new file mode 100644 index 0000000..0c5991c --- /dev/null +++ b/index.md @@ -0,0 +1,148 @@ +--- +title: paul's portfolio +--- + +# pauloliver + +### sections +[#bio](#bio)\ +[#portfolio](#portfolio)\ +[#projects](#projects)\ +[#tools](#tools)\ +[#contact](#contact)\ + +### links +[cgit](https://git.pauloliver.dev)\ +[github](https://github.com/paultoliver)\ +[youtube](https://www.youtube.com/user/nlno88/videos)\ + +## bio +Hi, my name is Paul. I\'m a DevOps Engineer with more than 5 years of experience creating and managing web +applications and cloud computing infrastructures. I\'m acquainted with AWS and its Terraform provider, having used the +latter in order to maintain solid code-bases (Infrastructure as Code), ensuring rapid deployment, iteration, +redundancy and fallback of infrastructure. From endpoints (Gateway API) to load balancers (ELB) and auto-scaling (ASG), +to serverless apps (using AWS Lambda), or Docker based tasks (ECS), I got you covered! AWS services I\'ve worked with +and configured, include (but are not limited to): EC2, ECS (with and without Fargate), CloudWatch, Lambda, Gateway API, +IAM (authentication/authorization for mid-sized teams), IoT, S3\.\.\. I\'ve also been in charge of deploying and +managing Jenkins instances, for running CI/CD jobs, combining both in-house and remote servers (Jenkins EC2 plugin). + +Besides infra., I\'m an experienced full-stack web developer, knowing my way around popular Python and +JavaScript frameworks (Django, Twisted, Flask, React, Vue). I also enjoy working on lower-level native applications, be +it in Python (for wrappers and projects requiring quick iteration) and/or C, C++ and Haskell, for more +performance-critical components. + +I know my way around the Linux operating system, having done a fair deal of shell scripting and usual management +tasks. During my time in the robotics industry, I\'ve had the chance to work on kernel module modifications (to aid in +hardware emulation) using C. I\'ve also worked extensively on debian packaging (.deb files) and maintaining of APT +repositories for first-party packages (targeting Ubuntu and Debian). + +On a more personal note, I feel great curiosity towards subjects like Genetic Programming and Artificial Intelligence, +and love playing with these topics in my spare time. Below I list a couple of hobby projects which explore these +subjects, along others like Artificial Life, Reinforcement Learning and Neuroevolution. + +## portfolio +[ADVANCED FARM TECHNOLOGIES, INC.](https://advanced.farm)\ +**DevOps Engineer**\ +**Location:** Davis, CA (remote)\ +**From-to:** Sep18 - Apr19 | Feb21 - Present\ + +- Asynchronous robot services (Twisted, C, ZMQ) +- Time services (NTP, PTP) +- Location services (GPSD, SimGPS) +- Networking services (SNMP, CANOpen, VCAN) +- Robot performance metrics (Prometheus, Grafana, Victoria Metrics) +- Continuous Integration/Development pipelines (Jenkins, Groovy) +- Kernel configuration and module tweaks (C, Ubuntu) +- Debian packaging and testing inside virtualized environments (Dpkg, Qemu) +- Python packaging and testing (Virtualenv, PIP, Twisted) +- Infrastructure as code (AWS, Terraform) + +**Languages:** C, C++, Python, JavaScript, Bash, Jenkins Pipelines (in Groovy), Terraform\ +**Frameworks:** Twisted, ZMQ, Jenkins, AWS (Lambda, ECS, EC2, CloudWatch, Gateway API, IoT), Qemu, Dpkg, PIP\ + +[PAUL CHAPMAN](mailto:p.chapman.uk@gmail.com)\ +**Full-stack Developer**\ +**Location:** Durham, England (remote)\ +**From-to:** Jun20 - Jan21\ + +- OFX financial parsing and analytics (Ofxparse) +- Front-end geolocation component (Google Geolocation API) +- Front-end Amazon Product API component (PAAPI5) +- Content filtering and moderation (AWS Rekognition API) +- Cryptocurrency transaction component (Coinbase Commerce API) +- Push notifications (Firebase) + +**Languages:** JavaScript, PHP\ +**Frameworks:** Google Geolocation API, Amazon Product API (PAAPI5), AWS (EC2, Rekognition), Coinbase Commerce API, +Firebase\ + +[MICROLANCER](https://microlancer.io)\ +**Front-end Developer**\ +**Location:** San Diego, CA (remote)\ +**From-to:** Aug19 - Jan20\ + +- Client-side component logic, data stores and form validators (React, Unistore) +- E2E testing (Selenium, Chromedriver, Mocha, Chai) +- REST APIs on LAMP stack (Linux, Apache, MySQL, PHP) +- Cryptocurrency transaction component (Coinbase Commerce API) + +**Languages:** JavaScript, PHP\ +**Frameworks:** React, Unistore, Selenium, Chromedriver, Mocha, Chai\ + +## projects +### guppies +Bi-dimensional agents, powered by evolving neural-networks, live and reproduce inside a simulated world. + +- [cgit](https://git.pauloliver.dev/guppies/about/) +- [github](https://github.com/paultoliver/guppies) +- [youtube](https://www.youtube.com/watch?v=tCPzYM7B338&list=PLrEmYrpTcDJZZHZP8Qz4JN9PXY6-8O1HZ) + +### salis +Digital organisms (programs) replicate and evolve, while competing for memory space and execution time. + +- [cgit](https://git.pauloliver.dev/salis-v1/about/) +- [github](https://github.com/PaulTOliver/salis-v1) +- [youtube](https://www.youtube.com/watch?v=jCFmOCvy6po&list=PLrEmYrpTcDJY2NdGL6B7wIRbKGp_6NkxY) +- [mykhailo poliakov (citation)](https://s3.eu-central-1.amazonaws.com/ucu.edu.ua/wp-content/uploads/sites/8/2021/07/Poliakov-Mykhailo_188575_assignsubmission_file_Bachelor_Thesis.pdf) + +### neural racers +A population of racer agents quickly learns to race around a track. Powered by the HyperNeat algorithm. + +- [cgit](https://git.pauloliver.dev/neural-racers/about/) +- [github](https://github.com/paultoliver/neural-racers) +- [youtube](https://www.youtube.com/watch?v=JeXqbYXKqcs&list=PLrEmYrpTcDJb_RfwCpSnCPk1Cus310ehA) +- [eplex research group (citation)](https://eplex.cs.ucf.edu/ESHyperNEAT/) + +## tools +### languages + +- C/C++ +- Haskell +- Javascript +- Jenkins Pipelines (Groovy) +- PHP +- Python +- Shell Scripting (Bash/Sh) +- Terraform + +### platforms + +- AWS +- Django/Flask/Twisted +- Jenkins +- React/Vue + +### apis + +- Amazon Product API +- Amazon Rekognition +- Coinbase Commerce API +- GitHub API +- Google Geolocation +- Twilio SMS + +## contact +Want me to help you with your next project? E-mail me at:\ +[contact@pauloliver.dev](mailto:contact@pauloliver.dev) + +I accept fiat and crypto. :) diff --git a/portfolio-hs.cabal b/portfolio-hs.cabal new file mode 100644 index 0000000..2fa6a0b --- /dev/null +++ b/portfolio-hs.cabal @@ -0,0 +1,17 @@ +cabal-version: 3.4 + +name: portfolio-hs +version: 0.1.0.0 +build-type: Simple + +executable site + main-is: site.hs + build-depends: + base + , hakyll + , pandoc + ghc-options: + -rtsopts + -threaded + -with-rtsopts=-N + default-language: Haskell2010 diff --git a/site.hs b/site.hs new file mode 100644 index 0000000..a02e75d --- /dev/null +++ b/site.hs @@ -0,0 +1,32 @@ +{-# LANGUAGE OverloadedStrings #-} + +import Hakyll + ( Configuration(..) + , compile + , compressCssCompiler + , defaultConfiguration + , defaultContext + , hakyllWith + , idRoute + , loadAndApplyTemplate + , match + , pandocCompiler + , relativizeUrls + , route + , setExtension + , templateBodyCompiler + ) + +config :: Configuration +config = defaultConfiguration {deployCommand = "rsync -rv _site/ debnode:portfolio"} + +main :: IO () +main = + hakyllWith config $ do + match "index.md" $ do + route $ setExtension "html" + compile $ pandocCompiler >>= loadAndApplyTemplate "templates/default.html" defaultContext >>= relativizeUrls + match "css/*" $ do + route idRoute + compile compressCssCompiler + match "templates/*" $ compile templateBodyCompiler diff --git a/templates/default.html b/templates/default.html new file mode 100644 index 0000000..0de18b6 --- /dev/null +++ b/templates/default.html @@ -0,0 +1,11 @@ + + + + + +$title$ + +$body$ + + + -- cgit v1.2.1