summaryrefslogtreecommitdiff
path: root/pages
diff options
context:
space:
mode:
author53hornet <atc@53hor.net>2021-12-11 11:26:18 -0500
committer53hornet <atc@53hor.net>2021-12-11 11:26:18 -0500
commit00d6a7d10f6267e437b330aa99df091bfc7c67b6 (patch)
treeb3ffb8fc4f09933ebc8ed9c90f03412250199dd8 /pages
parentde9bbfdb8f0d3b366e76a5cc775690f7315c740f (diff)
download53hor-00d6a7d10f6267e437b330aa99df091bfc7c67b6.tar.xz
53hor-00d6a7d10f6267e437b330aa99df091bfc7c67b6.zip
chore: organize pages and use router/renderer, organize assetsrouting
Diffstat (limited to 'pages')
-rw-r--r--pages/contact.php29
-rw-r--r--pages/donate.php1
-rw-r--r--pages/hireme.php41
-rw-r--r--pages/info.php92
-rw-r--r--pages/links.php13
-rw-r--r--pages/payments.php134
6 files changed, 310 insertions, 0 deletions
diff --git a/pages/contact.php b/pages/contact.php
new file mode 100644
index 0000000..2d6c7af
--- /dev/null
+++ b/pages/contact.php
@@ -0,0 +1,29 @@
+<h1>Contact Me</h1>
+
+<h2>
+ <a href="mailto:atc@53hor.net">atc@53hor.net</a>
+</h2>
+
+<p>
+ I send mail signed with my PGP key. The fingerprint is <code>94B3 3D04 F47E 6611 ADD9 76A6 76F8 F1CB 49F9 1B02</code>. You can download the key like so:
+
+<pre>
+<code>
+# FreeBSD:
+$ fetch -o - https://www.53hor.net/assets/atc.gpg | gpg --import
+
+# Also FreeBSD, but more inclusive:
+$ curl https://www.53hor.net/assets/atc.gpg | gpg --import
+</code>
+</pre>
+
+You may read more in the <a href="https://www.gnupg.org/gph/en/manual/x56.html">Privacy Handbook</a>.
+</p>
+
+<h2>
+ <a href="tel:+17577746829">(757) 774-6829</a>
+</h2>
+
+<p>
+ If you want to hire me or have a business inquiry, here is a Google Voice number. Please understand that all calls and text messages are screened for spam by Google before I pick up.
+</p>
diff --git a/pages/donate.php b/pages/donate.php
new file mode 100644
index 0000000..82fbd8a
--- /dev/null
+++ b/pages/donate.php
@@ -0,0 +1 @@
+<a href="https://www.paypal.com/donate?business=F9QZQMC55PB4W&no_recurring=0&currency_code=USD">PayPal</a>
diff --git a/pages/hireme.php b/pages/hireme.php
new file mode 100644
index 0000000..5073d56
--- /dev/null
+++ b/pages/hireme.php
@@ -0,0 +1,41 @@
+<h1 style="text-align: center;">Carpenter Tech</h1>
+
+<p>
+ My name is Adam Carpenter and I am a freelance, general-purpose computer programmer.
+
+</p>
+<ul>
+ <li>Does your business day consist of tedious, repetitive manual tasks? How do you go about streamlining the process and writing software to automate those tasks?</li>
+ <li>Maybe you've outgrown the limitations of DIY site designers such as Google Sites or Wix. How do you approach from-scratch web design and rich web applications?</li>
+ <li>Are you or your small business looking to take control of your IT by self-hosting? Wondering how to go about efficiently and securely serving your clients?</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>From-scratch web site construction, hosting, and maintenance</li>
+ <li>Programming, self-hosting, and IT consulting for small businesses</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</a></li>
+ <li><a href="/contact">Contact me to get started</a></li>
+</ul>
+</p>
+
+<hr />
+
+<?php
+include('./assets/cv.html');
+?>
+
+<p>
+ <img src="https://nextcloud.53hor.net/index.php/s/zL2AJHwtCWLX2Eq/preview" />
+</p>
diff --git a/pages/info.php b/pages/info.php
new file mode 100644
index 0000000..d3a1b4c
--- /dev/null
+++ b/pages/info.php
@@ -0,0 +1,92 @@
+<h1>Info</h1>
+
+<p>
+ My name is <em>Adam Carpenter</em> (on some sites I'm
+ <em>53hornet</em>). I am a professional computer programmer and hobbyist mechanic, am married
+ to my wonderful wife, Amy, and a puppy parent to Clementine, a Cocker
+ Spaniel. This is my web site.
+</p>
+
+<p>
+ <img src="https://nextcloud.53hor.net/index.php/s/zL2AJHwtCWLX2Eq/preview" />
+</p>
+
+<h2>What Will You Find Here?</h2>
+
+<p>
+ This site is my home on the web. I post things I've learned, things I
+ want to share, and things I don't want to forget. I am generally
+ interested in and generally post about:
+</p>
+
+<ul>
+ <li>Antique automobiles, esp. my Fabulous 1953 Hudson Hornet</li>
+ <li>Systems- and application-level programming</li>
+ <li>Retrocomputing, esp. the Commodore 64</li>
+ <li>Home servers and self-hosting</li>
+ <li>FreeBSD and other *BSDs or UNIX-like operating systems</li>
+ <li>Food: eating, baking, etc.</li>
+ <li>Games, movies, and music</li>
+</ul>
+
+<h2>Disclaimer</h2>
+
+<p>
+ The views on this web site are entirely mine! That should go without
+ saying. They don't reflect my company, co-workers, friends, family, dog,
+ or anyone I mention anywhere in any way.
+</p>
+
+<p>
+ I prefer not to go back and edit old posts. So when you're reading
+ something from 2 years ago, that was my opinion 2 years ago. Times
+ change and so can I, so please try to keep that in mind.
+</p>
+
+<p>
+ If I reference an external public profile or site as fact, I will do so
+ with links so you can go and read the source.
+</p>
+
+<h2>Privacy</h2>
+
+<p>
+ My web server has an access log. By visiting this site you're
+ surrendering:
+</p>
+
+<ul>
+ <li>Your public IP address</li>
+ <li>Your browser's user agent</li>
+ <li>The URL of the page you visited</li>
+ <li>The time and date of your visit</li>
+</ul>
+
+<p>
+ That's it. I do not advertise on this site, read your cookies, or
+ perform any kind of social media tracking. I also proudly don't have any
+ JavaScript on my site.
+</p>
+
+<h2>License</h2>
+
+<p>
+ Content on this site is licensed under the
+ <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
+</p>
+
+<p>
+ Source code on this site, unless otherwise stated, is licensed under the
+ <a href="https://opensource.org/licenses/BSD-3-Clause">
+ BSD 3-Clause license</a>.
+</p>
+
+<img src="https://nextcloud.53hor.net/index.php/s/G3QG8FNb8aDmzcc/preview" />
+
+<img style="border: 0; width: 88px; height: 31px" src="https://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS!" />
+
+<img src="https://nextcloud.53hor.net/index.php/s/JMqd6ACCdskmS5J/preview" alt="Viewable With Any Browser" />
+
+<a href="https://validator.w3.org/feed/check.cgi?url=https%3A//www.53hor.net/feed.php"><img src="https://nextcloud.53hor.net/index.php/s/Ly6CBibnCFA99Fz/preview" alt="[Valid RSS]" title="Validate my RSS feed" /></a>
+
+<img src="https://nextcloud.53hor.net/index.php/s/nKmSsrxa4LkRHdM/preview" />
diff --git a/pages/links.php b/pages/links.php
new file mode 100644
index 0000000..6c75b67
--- /dev/null
+++ b/pages/links.php
@@ -0,0 +1,13 @@
+<h1>Egress Links</h1>
+
+<p>
+ If you're going to leave my site to go somewhere else on the web, I recommend linking out via one of these. This is my curated collection of awesome sites, resources, and online assets.
+</p>
+
+<h2>Automotive</h2>
+
+<h2>*nix</h2>
+
+<ul>
+ <li><a href="https://docs.freebsd.org/en/books/handbook/">FreeBSD Handbook</a></li>
+</ul>
diff --git a/pages/payments.php b/pages/payments.php
new file mode 100644
index 0000000..4315613
--- /dev/null
+++ b/pages/payments.php
@@ -0,0 +1,134 @@
+<!--PAYPAL-->
+<div id="smart-button-container" class="form">
+ <p id="invoiceidError" class="description">Please enter an Invoice ID</p>
+ <p id="descriptionError" class="description">Please enter a description</p>
+ <p id="priceLabelError" class="description">Please enter a price</p>
+
+ <div id="invoiceidDiv"><label for="invoiceid">Invoice ID</label>
+ <input name="invoiceid" maxlength="127" type="text" id="invoiceid" value="<?php echo $_GET['invoice'] ?? ''; ?> ">
+ </div>
+
+ <div><label for="description">Description of services </label>
+ <input type="text" name="descriptionInput" id="description" maxlength="127" value="<?php echo $_GET['desc'] ?? ''; ?> ">
+ </div>
+ <div><label for="amount">Amount (USD)</label>
+ <input name="amountInput" type="number" id="amount" value="<?php echo $_GET['amount'] ?? ''; ?>">
+ </div>
+ <div style="text-align: center; margin-top: 0.625rem;" id="paypal-button-container"></div>
+</div>
+
+<script src="https://www.paypal.com/sdk/js?client-id=sb&enable-funding=venmo&currency=USD" data-sdk-integration-source="button-factory"></script>
+
+<script>
+ function initPayPalButton() {
+ var description = document.querySelector('#smart-button-container #description');
+ var amount = document.querySelector('#smart-button-container #amount');
+ var descriptionError = document.querySelector('#smart-button-container #descriptionError');
+ var priceError = document.querySelector('#smart-button-container #priceLabelError');
+ var invoiceid = document.querySelector('#smart-button-container #invoiceid');
+ var invoiceidError = document.querySelector('#smart-button-container #invoiceidError');
+ var invoiceidDiv = document.querySelector('#smart-button-container #invoiceidDiv');
+
+ var elArr = [description, amount];
+
+ if (invoiceidDiv.firstChild.innerHTML.length > 1) {
+ invoiceidDiv.style.display = "block";
+ }
+
+ var purchase_units = [];
+ purchase_units[0] = {};
+ purchase_units[0].amount = {};
+
+ function validate(event) {
+ return event.value.length > 0;
+ }
+
+ // var result = elArr.every(validate);
+ // if (result) {
+ // actions.enable();
+ // }
+
+ paypal.Buttons({
+ style: {
+ color: 'white',
+ shape: 'pill',
+ label: 'pay',
+ layout: 'horizontal',
+
+ },
+
+ onInit: function(data, actions) {
+ actions.disable();
+
+ if (invoiceidDiv.style.display === "block") {
+ elArr.push(invoiceid);
+ }
+
+ elArr.forEach(function(item) {
+ item.addEventListener('keyup', function(event) {
+ var result = elArr.every(validate);
+ if (result) {
+ actions.enable();
+ } else {
+ actions.disable();
+ }
+ });
+ });
+ },
+
+ onClick: function() {
+ if (description.value.length < 1) {
+ descriptionError.style.display = "block";
+ } else {
+ descriptionError.style.display = "none";
+ }
+
+ if (amount.value.length < 1) {
+ priceError.style.display = "block";
+ } else {
+ priceError.style.display = "none";
+ }
+
+ if (invoiceid.value.length < 1 && invoiceidDiv.style.display === "block") {
+ invoiceidError.style.display = "block";
+ } else {
+ invoiceidError.style.display = "none";
+ }
+
+ purchase_units[0].description = description.value;
+ purchase_units[0].amount.value = amount.value;
+
+ if (invoiceid.value !== '') {
+ purchase_units[0].invoice_id = invoiceid.value;
+ }
+ },
+
+ createOrder: function(data, actions) {
+ return actions.order.create({
+ purchase_units: purchase_units,
+ });
+ },
+
+ onApprove: function(data, actions) {
+ return actions.order.capture().then(function(orderData) {
+
+ // Full available details
+ console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
+
+ // Show a success message within this page, e.g.
+ const element = document.getElementById('paypal-button-container');
+ element.innerHTML = '';
+ element.innerHTML = '<h3>Thank you for your payment!</h3>';
+
+ // Or go to another URL: actions.redirect('thank_you.html');
+
+ });
+ },
+
+ onError: function(err) {
+ console.log(err);
+ }
+ }).render('#paypal-button-container');
+ }
+ initPayPalButton();
+</script>