aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2024-02-29 02:50:26 +0100
committerPaul Oliver <contact@pauloliver.dev>2024-04-01 21:42:38 +0200
commitc8992bc7543d8ca7c2ee3cc200a7fbf1a5fae059 (patch)
treec8c05c8a85fcdf36b65e9580929b2151be6bea73
Initial
-rw-r--r--.gitignore3
-rw-r--r--css/style.css27
-rw-r--r--index.md148
-rw-r--r--portfolio-hs.cabal17
-rw-r--r--site.hs32
-rw-r--r--templates/default.html11
6 files changed, 238 insertions, 0 deletions
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 @@
+<!doctype html>
+<html lang="en">
+<head>
+<link rel="stylesheet" href="/css/style.css" />
+<meta name="viewport" content="width=device-width, initial-scale=1" />
+<title>$title$</title>
+</head>
+$body$
+<body>
+</body>
+</html>