You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
5.9 KiB

<!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>