summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/cv.html156
-rw-r--r--assets/cv.php5
-rw-r--r--assets/resume.html93
-rw-r--r--includes/foot.php2
-rw-r--r--includes/head.php2
-rw-r--r--includes/www.css358
-rw-r--r--pages/hireme.php49
-rw-r--r--pages/now.php14
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 &amp; 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 &amp; 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>
&copy; 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">
&#9662; 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 &amp; 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>