<!DOCTYPE html> <html> <head> <title>Carya Software</title> <meta charset="utf-8"> <!-- <link rel="stylesheet" type="text/css" href="css/theme.css"> --> <link rel="stylesheet" href="./css/theme-compiled.css" </head> <body class="bg-[#efe9f4]"> <div class="flex justify-center"> <!-- <div class="mx-4 order-last"> --> <!-- <img class="logo" src="img/logo.svg" alt="carya.software logo"> --> <!-- </div> --> <div class="mx-4 self-center mt-16 max-w-xl min-w-xl"> <h1 class="title text-center">carya.software</h1> <div class="justify-center"> <div class="flex justify-center"> <button onclick="toggleSections(this)" class="text-xl text-[#14591e] px-6 mx-8 pt-2 mb-2">about</button> <button onclick="toggleSections(this)" class="text-xl text-[#14591e] px-6 mx-8 pt-2 mb-2">projects</button> <button onclick="toggleSections(this)" class="text-xl text-[#14591e] px-6 mx-8 pt-2 mb-2">contact</button> </div> <div id="about" class="hidden"> <h2 class="font-semibold text-[#0a210f] p-2">What is this site?</h2> <div class="text-left"> <p class="p-2"> This is my personal website. </p> <p class="p-2"> I do not use my real name here for privacy reasons — <br> and because I like <span class="italic">carya.software</span> a lot more than <span class="italic">first-last.tld</span>. </p> <p class="p-2"> If you got here from my resume you may want to look at the projects tab or head to my <a class="underline" href="https://forge.carya.software/explore/repos">Forgejo instance</a> (a lightweight FOSS git software forge) directly. </p> <p class="p-2"> If you need to contact me you can find my various account addresses in the contact tab. I would be happy to chat once I know you aren't a web scraper! </p> </div> <h2 class="font-semibold text-[#0a210f] p-2">Who are you?</h2> <div class="text-left"> <p class="p-2"> I am a software engineer based on the East Coast of the USA. Professionally I have mostly worked with microsoft technology (.NET, SQL Server, et al) but for personal use I prefer <a class="underline text-[#4e2a8e]" href="https://elixir-lang.org/">Elixir</a>. </p> <p class="p-2"> Outside of spending time with family, church, and community I garden, work on personal projects, read, and attempt to identify the <a class="underline" href="mushrooms.html">various fungi</a> I find growing in my yard. </p> </div> <h2 class="font-semibold text-[#0a210f] p-2">What does "carya" mean?</h2> <div class="text-left"> <p class="p-1"> It is the genus name for <a class="underline" href="https://en.wikipedia.org/wiki/Hickory">Hickory trees</a>, which I am fond of. </p> </div> </div> <div id="projects" class="hidden"> <ul class="p-2 list-none list-inside"> <li> <a class="underline font-semibold" href="https://forge.carya.software/Public/carya.software">Carya.software</a> — the source code for this site. <ul class="p-2 list-disc list-inside"> <li>Built using basic HTML, TailwindCSS, and vanilla JavaScript. Hosted on a VPS with Nginx running on Debian.</li> <li>I have additional services running on subdomains on the same server. For example, I host my public repositories at forge.carya.software, and I have a pleroma instance on pleroma.carya.software</li> <li>SSL certificates managed using Certbot</li> </ul> </li> </ul> </div> <div id="contact" class="hidden"> <div class=""> <table class="table-auto mx-auto my-8 font-[#0a210f]"> <tbody> <tr> <td class="p-2"> <label class="font-semibold text-[#0a210f]">Email:</label> </td> <td class="p-2"> TBD, redacted due to spambots. </td> </tr> <tr> <td class="p-2"> <label class="font-semibold text-[#0a210f]">Matrix:</label> </td> <td class="p-2"> TBD </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </body> <html> <script> function toggleSections(button){ // Constants hiddenClass = "hidden"; revealedClass = "visible"; ids = ["about", "projects", "contact"]; selectedClasses = ["border-[#14591e]" , "border-b-2"] // Helper functions function switchClasses(element, toRemove, toInsert){ element.classList.remove(toRemove); element.classList.add(toInsert); } function removeClasses(element, classes){ element.classList.forEach() } function hide(id) { switchClasses(document.getElementById(id), revealedClass, hiddenClass); } function show(id) { switchClasses(document.getElementById(id), hiddenClass, revealedClass); } function hasClasses(element, classes){ return classes.map(c => element.classList.contains(c)).reduce((acc, b) => acc && b, true); } // Handle underline for tab buttons parent = button.parentElement; // Remove selection classes from other buttons // If button clicked already selected, unselect // Otherwise select // Manage hiding/showing content id = button.textContent; ids.filter(i => i !== id).forEach(hide); element = document.getElementById(id); if(hasClasses(element, [revealedClass])){ switchClasses(element, revealedClass, hiddenClass); return; } ids.filter(i => i === id).forEach(show); }; </script>