diff options
-rw-r--r-- | assets/cv.html | 156 | ||||
-rw-r--r-- | assets/cv.php | 5 | ||||
-rw-r--r-- | assets/resume.html | 93 | ||||
-rw-r--r-- | includes/foot.php | 2 | ||||
-rw-r--r-- | includes/head.php | 2 | ||||
-rw-r--r-- | includes/www.css | 358 | ||||
-rw-r--r-- | pages/hireme.php | 49 | ||||
-rw-r--r-- | pages/now.php | 14 |
8 files changed, 308 insertions, 371 deletions
diff --git a/assets/cv.html b/assets/cv.html deleted file mode 100644 index e3e2fef..0000000 --- a/assets/cv.html +++ /dev/null @@ -1,156 +0,0 @@ -<!DOCTYPE html> -<html lang="en-US"> - <head> - <title>Resume for Adam Carpenter</title> - <style> -.horiz { - display: flex; - justify-content: space-evenly; -} - -body,a { - color: #195970 -} - -@media print { - -} - </style> - - </head> - <body> - <h1>Adam T. Carpenter</h1> - - <div class="horiz"> - <a href="mailto:atc@53hor.net">atc@53hor.net</a> - <a href="tel:7577746829">(757) 774-6829</a> - <a href="https://www.53hor.net/info">www.53hor.net</a> - <a target="_blank" href="https://git.53hor.net">git.53hor.net</a> - <a target="_blank" href="https://www.linkedin.com/in/adam-carpenter">LinkedIn</a> - </div> - - <p> - I am a computer programmer who has been developing and maintaining native and - web applications since 2018. I have also provided freelance systems - administration services and technical mentoring since 2016. - </p> - - <p> - I am fluent in Rust, C#, Python, PHP, JavaScript, Bourne Shell, and HTML+CSS. - </p> - - <p> - I am also familiar with Java, C, C++, and TypeScript. I have - used a variety of frameworks and libraries, as well as a myriad of web - servers, databases, and "DevOps" platforms. - </p> - - <p> - I aim to create simple, performant, and well-documented software that solves - real problems with no surprises. - </p> - - - <hr /> - <h2>Work History</h2> - - <div class="horiz"> - <h3><em>ADP</em> Manager, Software Engineering</h3> - <h3>April 2022-Present, Norfolk, VA</h3> - </div> - - <ul> - <li>Manage team of eight software engineers both on site and remote</li> - <li>Coordinate development of self-service portal with 2000+ DAU</li> - <li>Develop OpenAI-generated transcript summary UI for quick review of client calls</li> - <li>Own AI platform services development workstream</li> - <li>Design and implement Argo BlueGreen rollout strategy for progressive deployments with zero downtime</li> - <li>Evangelize adoption of continuous deployment in a heavily manual change environment</li> - <li>Create remote developer jump box to reduce onboarding time</li> - </ul> - - <div class="horiz"> - <h3><em>ADP</em> Software Engineer</h3> - <h3>June 2018-April 2022, Norfolk, VA</h3> - </div> - - <ul> - <li>Reverse engineered undocumented, proprietary protocol and created <a href="https://github.com/adpllc/altruistic-angelshark"><em>Angelshark</em></a> to automate config changes. Sends commands over SSH channels to remote terminal emulators.</li> - <li>Co-authored custom authentication API and reverse proxy to serve as a container traffic router; Turns LDAP credentials into JWTs</li> - <li>Mentored six new team developers on Google SRE practices, continuous integration, and Kubernetes orchestration</li> - </ul> - - <hr /> - <h2>Skills</h2> - - <div class="horiz"> - <ul> - <li>Mentoring and training</li> - <li>Agile development</li> - <li>Root cause analysis</li> - <li>Threat modeling</li> - <li>Network troubleshooting</li> - <li>Stakeholder demos</li> - <li>Operational automation</li> - <li>Requirements gathering, roadmapping</li> - </ul> - - <ul> - <li>Rust</li> - <li>C#, .NET</li> - <li>PHP, Symfony</li> - <li>JavaScript</li> - <li>HTML, CSS</li> - <li>Bourne Shell</li> - <li>Python</li> - <li>MySQL</li> - </ul> - - <ul> - <li>FreeBSD, Linux</li> - <li>Docker</li> - <li>Kubernetes</li> - <li>Jenkins</li> - <li>Splunk, Dynatrace</li> - <li>Pendo</li> - <li>OpenAI GPT-3, GPT-4</li> - <li>Jira, Confluence</li> - </ul> - </div> - - <hr /> - <h2>Academic History</h2> - <div class="horiz"> - <h3><em>William & Mary</em> B.S. Computer Science</h3> - <h3>Class of 2018, Williamsburg, VA</h3> - </div> - - <p> - I have a Bachelor of Science in Computer Science from the College of William - and Mary. While there, I participated in several group software development - projects such as hybrid Android application testing and presided over the - campus Game Design Club. - </p> - - <hr /> - <h2>About Me</h2> - - <p> - I wrote my first program on a TI-84 in BASIC to help finish my high school - math homework faster. I quickly transitioned to building more complicated - programs but have continued to enjoy finding the smallest amount of code to - solve a problem quickly, correctly, and securely. - </p> - - <p> - I grew up in and still call Hampton Roads, Virginia my home. In my spare time - I drive and maintain a classic car, a 1953 Hudson Hornet. I enjoy travelling - and being at home with my wife and cocker spaniel. I also self-host a web - server in a closet in my home. - </p> - - <p> - I keep a <a href="https://www.53hor.net">public journal on my web site</a>. - </p> - </body> -</html> diff --git a/assets/cv.php b/assets/cv.php deleted file mode 100644 index c9255a8..0000000 --- a/assets/cv.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -header('content-type: application/pdf'); -header('content-disposition: attachment; filename=adam-carpenter-cv.pdf'); -exec('/usr/local/bin/mutool convert -F pdf -o /tmp/cv.pdf cv.html'); -passthru('/bin/cat /tmp/cv.pdf'); diff --git a/assets/resume.html b/assets/resume.html new file mode 100644 index 0000000..7507a30 --- /dev/null +++ b/assets/resume.html @@ -0,0 +1,93 @@ +<h1>Adam T. Carpenter</h1> + +<div class="set"> + <a class="printhide" href="javascript:window.print();">Download resume</a> + <a href="mailto:atc@53hor.net">atc@53hor.net</a> + <a href="tel:7577746829">(757) 774-6829</a> + <a href="https://www.53hor.net/hireme">www.53hor.net</a> + <a target="_blank" href="https://git.53hor.net">git.53hor.net</a> + <a target="_blank" href="https://www.linkedin.com/in/adam-carpenter">LinkedIn</a> +</div> + +<p> +I am a computer programmer who has been developing and maintaining +native and web applications for over five years. My focus has been in +operational automation and self-service. I aim to create simple, +performant, and well-documented software that adds value. I avoid +surprises using industry standard site reliability engineering +practices. +</p> + +<hr /> +<h2>Work History</h2> + +<div class="row"> + <h3><em>ADP</em> Manager, Software Engineering</h3> +<h3>April 2022-Present, Norfolk, VA</h3> +</div> + +<ul> + <li>Manage team of eight software engineers both on site and remote</li> + <li>Coordinate development of self-service portal with 2000+ DAU</li> + <li>Develop OpenAI-generated transcript summary UI for quick review of client calls</li> + <li>Own AI platform services development workstream</li> + <li>Design and implement Argo BlueGreen rollout strategy for progressive deployments with zero downtime</li> + <li>Evangelize adoption of continuous deployment in a heavily manual change environment</li> + <li>Create remote developer jump box to reduce onboarding time</li> +</ul> + +<div class="row"> + <h3><em>ADP</em> Software Engineer</h3> +<h3>June 2018-April 2022, Norfolk, VA</h3> +</div> + +<ul> + <li>Reverse engineered undocumented, proprietary protocol and created <a href="https://github.com/adpllc/altruistic-angelshark"><em>Angelshark</em></a> to automate config changes. Sends commands over SSH channels to remote terminal emulators.</li> + <li>Co-authored custom authentication API and reverse proxy to serve as a container traffic router; Turns LDAP credentials into JWTs</li> + <li>Mentored six new team developers on Google SRE practices, continuous integration, and Kubernetes orchestration</li> +</ul> + +<hr /> +<h2>Skills</h2> + +<div class="set"> + <ul> + <li>Mentoring and training</li> + <li>Agile development</li> + <li>Root cause analysis</li> + <li>Threat modeling</li> + <li>Network troubleshooting</li> + <li>Stakeholder demos</li> + <li>Operational automation</li> + <li>Requirements gathering, roadmapping</li> + </ul> + + <ul> + <li>Rust</li> + <li>C#, .NET</li> + <li>PHP, Symfony</li> + <li>JavaScript</li> + <li>HTML, CSS</li> + <li>Bourne Shell</li> + <li>Python</li> + <li>MySQL</li> + </ul> + + <ul> + <li>FreeBSD, Linux</li> + <li>Docker</li> + <li>Kubernetes</li> + <li>Jenkins</li> + <li>Splunk, Dynatrace</li> + <li>Pendo</li> + <li>OpenAI GPT-3, GPT-4</li> + <li>Jira, Confluence</li> + </ul> +</div> + +<hr /> +<h2>Academic History</h2> +<div class="row"> + <h3><em>William & Mary</em> B.S. Computer Science</h3> +<h3>Class of 2018, Williamsburg, VA</h3> +</div> diff --git a/includes/foot.php b/includes/foot.php index e9dc23f..f0330de 100644 --- a/includes/foot.php +++ b/includes/foot.php @@ -1,7 +1,7 @@ </article> <hr /> -<footer> +<footer class="printhide"> <?php include('nav.php'); ?> <p> © 2019-<?php printf('%s', date('Y')); ?> Adam Carpenter diff --git a/includes/head.php b/includes/head.php index 68185af..a32887c 100644 --- a/includes/head.php +++ b/includes/head.php @@ -25,7 +25,7 @@ <body> <header> - <a href="#menu"> + <a class="printhide" href="#menu"> ▾ Menu </a> </header> diff --git a/includes/www.css b/includes/www.css index f3bb626..6a78e00 100644 --- a/includes/www.css +++ b/includes/www.css @@ -1,161 +1,199 @@ -body { - max-width: 50em; -} - -hr { - color: var(--white); -} - -a:link { - color: var(--slate); -} - -a:visited { - color: var(--charcoal); -} - -a:visited code { - color: var(--slate); -} - -header a:link, -header a:visited, -header a:active, -nav a:link, -nav a:visited, -nav a:active { - background-color: var(--balboa); - color: var(--white); - text-decoration: underline solid var(--balboa); -} - -a:hover { - transition: 0.25s; - color: var(--white); -} - -nav a:hover { - transition: 0.25s; - text-decoration: underline solid var(--slate); -} - -p code { - background-color: var(--charcoal); - border-radius: var(--box-radius); -} - -pre { - white-space: pre-wrap; - display: block; - background-color: var(--charcoal); - padding: 1em; - border-radius: var(--box-radius); - border-left: var(--box-border); - border-right: var(--box-border); - overflow: auto; -} - -.description { - background-color: var(--ruby); - padding: 1em; - border-radius: var(--box-radius); - border-left: var(--box-border); - border-right: var(--box-border); -} - -h1, -blockquote { - font-style: oblique; -} - -ul { - list-style: none; - padding: 0; - margin: 0; -} - -article ul li { - padding: 0.5em; -} - -ul li:before { - content: "▸"; - padding-right: 0.5em; -} - -article ol li { - padding: 0.5em; -} - -p img { - display: block; - margin-top: 1em; - margin-left: auto; - margin-right: auto; - max-width: 75%; - height: auto; - border-radius: var(--box-radius); - border-left: var(--box-border); - border-right: var(--box-border); -} - -iframe { - display: block; - margin-left: auto; - margin-right: auto; -} - -.list { - overflow-x: auto; -} - -.list table { - width: 100%; -} - -.list td, -th { - padding: 0.5em; - text-align: left; - border-bottom: 1px solid var(--charcoal); -} - -.form { - text-align: center; -} - -.form input { - font-size: 1em; - margin-top: 1em; - border-radius: 3em; - box-sizing: border-box; - padding: 0.5em; - border: 0; -} - -.form .description { - display: none; -} - -footer p { - font-size: 0.75em; -} - -.centered { - text-align: center; -} - -a.donation, -a.donation:visited { - background-color: var(--ruby); - border-radius: var(--box-radius); - padding: 1em; - text-decoration: none; - color: var(--slate); - border-left: var(--box-border); - border-right: var(--box-border); -} - -a.donation:hover { - color: var(--white); +@media screen { + body { + max-width: 50em; + } + + hr { + color: var(--white); + } + + a:link { + color: var(--slate); + } + + a:visited { + color: var(--charcoal); + } + + a:visited code { + color: var(--slate); + } + + header a:link, + header a:visited, + header a:active, + nav a:link, + nav a:visited, + nav a:active { + background-color: var(--balboa); + color: var(--white); + text-decoration: underline solid var(--balboa); + } + + a:hover { + transition: 0.25s; + color: var(--white); + } + + nav a:hover { + transition: 0.25s; + text-decoration: underline solid var(--slate); + } + + p code { + background-color: var(--charcoal); + border-radius: var(--box-radius); + } + + pre { + white-space: pre-wrap; + display: block; + background-color: var(--charcoal); + padding: 1em; + border-radius: var(--box-radius); + border-left: var(--box-border); + border-right: var(--box-border); + overflow: auto; + } + + .description { + background-color: var(--ruby); + padding: 1em; + border-radius: var(--box-radius); + border-left: var(--box-border); + border-right: var(--box-border); + } + + h1, + blockquote { + font-style: oblique; + } + + ul { + list-style: none; + padding: 0; + margin: 0; + } + + article ul li { + padding: 0.5em; + } + + ul li:before { + content: "▸"; + padding-right: 0.5em; + } + + article ol li { + padding: 0.5em; + } + + p img { + display: block; + margin-top: 1em; + margin-left: auto; + margin-right: auto; + max-width: 75%; + height: auto; + border-radius: var(--box-radius); + border-left: var(--box-border); + border-right: var(--box-border); + } + + iframe { + display: block; + margin-left: auto; + margin-right: auto; + } + + .list { + overflow-x: auto; + } + + .list table { + width: 100%; + } + + .list td, + th { + padding: 0.5em; + text-align: left; + border-bottom: 1px solid var(--charcoal); + } + + .form { + text-align: center; + } + + .form input { + font-size: 1em; + margin-top: 1em; + border-radius: 3em; + box-sizing: border-box; + padding: 0.5em; + border: 0; + } + + .form .description { + display: none; + } + + footer p { + font-size: 0.75em; + } + + .centered { + text-align: center; + } + + a.donation, + a.donation:visited { + background-color: var(--ruby); + border-radius: var(--box-radius); + padding: 1em; + text-decoration: none; + color: var(--slate); + border-left: var(--box-border); + border-right: var(--box-border); + } + + a.donation:hover { + color: var(--white); + } + + button { + background-color: var(--white); + color: var(--balboa); + border-radius: var(--box-radius); + font-size: 1.5em; + font-family: "Iosevka Slab"; + } +} + +.row { + display: flex; + justify-content: space-between; +} + +.set { + display: flex; + justify-content: space-evenly; +} + +@media print { + body { + font-size: 10pt; + } + + body, a { + color: #195970; + } + + * { + margin: 6px; + } + + .printhide { + display: none; + } } diff --git a/pages/hireme.php b/pages/hireme.php index 781bed3..208903a 100644 --- a/pages/hireme.php +++ b/pages/hireme.php @@ -1,45 +1,12 @@ -<h1 style="text-align: center;">Carpenter Tech</h1> - -<p> - My name is Adam Carpenter and I am a freelance software engineer and computer programming consultant. Are you... -</p> - -<ul> - <li>interested in writing simple software that efficiently and effectively solves a problem?</li> - <li>an organization leader looking to transition from manual systems administration to developer-driven automation of time-sapping tasks?</li> - <li>a developer looking to introduce your manager to this concept?</li> - <li>an individual or small business looking to self-host your software?</li> -</ul> - -<p> - I run a business called <em>Carpenter Tech</em> that aims to help you answer these questions by offering the following services. -</p> - -<ul> - <li>Software engineering, custom software design, development, and deployment</li> - <li>Feature & bug "bounties" or consultation</li> - <li>Programming, self-hosting, and IT consulting for small businesses</li> - <li>Organizational systems administration and information technology automation consulting</li> -</ul> - -<p> - I am down to earth and enjoy solving problems. If you think I may be able to help solve yours, - -<ul> - <li><a href="#cv">Review my CV below</a></li> - <li><a href="/contact">Contact me to get started</a></li> -</ul> -</p> - -<hr /> +<h3 class="printhide">My name is</h3> <?php -include('./assets/cv.html'); +include('./assets/resume.html'); ?> -<p> - <img src="https://nextcloud.53hor.net/index.php/s/zL2AJHwtCWLX2Eq/preview" /> -</p> - -<?php -exit(); +<div class="printhide"> + <hr /> + <p> + <img src="https://nextcloud.53hor.net/index.php/s/zL2AJHwtCWLX2Eq/preview" /> + </p> +</div> diff --git a/pages/now.php b/pages/now.php index 31d6ccb..6cb508c 100644 --- a/pages/now.php +++ b/pages/now.php @@ -14,25 +14,25 @@ if ("/now" == $_SERVER['REQUEST_URI']) { <ul> <li>Still a manager and software engineer at Automatic Data Processing, Inc.</li> - <li>Investing in Argo blue-green rollouts to spend less time working ungodly hours testing and releasing new builds.</li> - <li>Open to private contractor software development and website building projects.</li> + <li>Investing time learning and internalizing SRE methods and practices.</li> + <li>Eagerly finding out more about applying Zero Trust Networks systems.</li> </ul> <h3>Hobbies</h3> <ul> - <li>Fixed up Ol' Blue's fuel pump. Installed a new diaphragm and she's back on the road. Now investigating a clunky tie rod end.</li> + <li>Ol' Blue is running great and enjoying the cooler weather. Got a new tie rod end and an alignment; no more clunks!</li> + <li>Pursuing a New Years' resolution to start editing and uploading my backlog of Hudson YouTube videos.</li> <li>(Continual) posting practical programming tutorials to <a href="https://www.youtube.com/@carpentertutoring841">Carpenter Tutoring YouTube channel</a>.</li> - <li>Translating a Computational Problem Solving course (CS 101) from Python to Rust. <a href="https://youtube.com/playlist?list=PLXGxiiv_uyipnFxS6c93UKuXc8mJzkl4h">First chapters are up on YouTube.</a></li> </ul> <h3>Life</h3> <ul> - <li>Gearing up for a family reunion trip to Long Island.</li> - <li>Returning soon to the "happy place" on Lake Erie with wife and puppy.</li> + <li>Wonderful big family Christmas and New Years -- arguably the best one yet.</li> + <li>Can you distill your own Rum? What does that take?</li> </ul> <p> - <em>Last updated 2023-07-18</em> + <em>Last updated 2023-01-11</em> </p> |