diff options
Diffstat (limited to 'pages')
-rw-r--r-- | pages/contact.php | 29 | ||||
-rw-r--r-- | pages/donate.php | 1 | ||||
-rw-r--r-- | pages/hireme.php | 41 | ||||
-rw-r--r-- | pages/info.php | 92 | ||||
-rw-r--r-- | pages/links.php | 13 | ||||
-rw-r--r-- | pages/payments.php | 134 |
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¤cy_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¤cy=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> |