---
import Layout from '../layouts/Layout.astro';
import Work from '../components/Work.astro';
---

<Layout title="Samuel Shuert Resume">
	<main class={`flex min-h-screen ${import.meta.env.PRODUCTION === "true" ? "w-full lg:w-1/2" : "w-full"} flex-col justify-center p-2 w-full`}>
		<div id="info" class="grid grid-cols-3 grid-rows-1 h-fit gap-2 my-2 justify-between w-full">
			<div class="flex flex-col text-sm">
			  <h1 class="text-sm">Delaware, USA</h1>
			  <a href="mailto:coded@clicks.codes"><p>coded@clicks.codes</p></a>
			</div>
			<h1 class="text-2xl">Samuel Shuert</h1>
			<div class="flex flex-col text-sm text-right">
			  <a href="https://linkedin.com/in/samuelshuert"><p class="underline">linkedin.com/in/samuelshuert</p></a>
			  <a href="https://github.com/TheCodedProf"><p class="underline">github.com/TheCodedProf</p></a>
			  <a href="https://git.clicks.codes/q/owner:coded"><p class="underline">git.clicks.codes/q/owner:coded</p></a>
			  <a href="https://app.codecrafters.io/users/TheCodedProf"><p class="underline">app.codecrafters.io/users/TheCodedProf</p></a>
			</div>
		</div>

		<h1 class="self-start text-xl">Summary</h1>
		<hr class="w-full border-t border-t-black mb-2"/>
		<p class="text-sm mb-8 pl-4 text-left w-full">
			I'm a 21 year old developer who's been programming since I was 11. I started with Python and have since taken my skills to both NodeJS and Rust.
			I'm eager to make your acquaintance and put my skills to use in a collaborative environment.
		</p>

		<div id="experience" class="flex flex-col h-fit gap-8 my-2 w-full mb-16">
			<Work jobTitle={"Developer"} area={"Infrastructure"} projectName={"Clicks Nix"} dateFrom={"Aug 2022"} dateTo={"Current"} obsolete={false} >
			  <li>
				Nix configuration for Clicks servers.
			  </li>
			  <li>
				Responsible for general mainenance and major updates, depends on current needs.
			  </li>
			  <li>
				Written in Nix
			  </li>
			</Work>
			<Work jobTitle={"Developer"} area={"Infrastructure"} projectName={"Clicks Server"} dateFrom="Mar 2022" dateTo={"Current"} obsolete={false} >
			  <li>
				Uptime management for Clicks servers.
			  </li>
			  <li>
				Ensure Clicks projects and additionally hosted tools do not go offline.
			  </li>
			  <li>
				Use of nix containers and docker for seperation of tasks.
			  </li>
			</Work>
			<Work jobTitle={"Developer"} area={"Backend"} projectName={"Nucleus"} dateFrom={"Sep 2020"} dateTo={"Sep 2023"} obsolete={false}>
			  <li>Nucleus (Feb 2023 - Sep 2023)</li>
			  <ul class="ml-8 mt-2 list-disc text-sm mb-4">
				<li>
				  Discord moderation bot. Rewritten with TypeScript.
				</li>
				<li>
				  I was responsible for database read/write and slash command registration.
				</li>
				<li>
				  Used Node.JS (w/ TypeScript), discord.js and MongoDB
				</li>
			  </ul>
			  <li>Remote Server Management (RSM) Version 2 (Jan 2021 - Jan 2022)</li>
			  <ul class="ml-8 mt-2 list-disc text-sm mb-4">
				<li>
				  Discord moderation bot. Additional features including NSFW image detection and checking for malware.
				</li>
				<li>
				  I was responsible for the guild settings flow, tesseract flow and clamav flow.
				</li>
				<li>
				  Used Python, discord.py and JSON
				</li>
			  </ul>
			  <li>Remote Server Management (RSM) Version 1 (Sep 2020 - Jan 2021)</li>
			  <ul class="ml-8 mt-2 list-disc text-sm">
				<li>
				  Discord moderation bot. Featuring readable UI and extra moderation features Discord does not have like tempbans.
				</li>
				<li>
				  I was responsible for the guild settings flow.
				</li>
				<li>
				  Used Python, discord.py and JSON
				</li>
			  </ul>
			</Work>
			<Work jobTitle={"Developer"} area={"Backend"} projectName={"Innuendo"} dateFrom={"Jul 2020"} dateTo={"Current"} obsolete={false}>
			  <li>Innuendo (Dec 2023 - Current)</li>
			  <ul class="ml-8 mt-2 list-disc text-sm">
				<li>
				  Cardboard Against Humankind remade in Rust
				</li>
				<li>
				  I&apos;m the main developer for this project, in charge of coordinating other people the main game loop code.
				</li>
				<li>
				  Uses Rust, Serenity-rs + Poise, and Postgres
				</li>
			  </ul>
			  <li>Cardboard Against Humankind (Jul 2020 - Sep 2021)</li>
			  <ul class="ml-8 mt-2 list-disc text-sm">
				<li>
				  A Cards Against Humanity discord bot. Was invited to 2000+ servers and had ~400 congruent games at peak times.
				</li>
				<li>
				  I was responsible for writing the game loop and discord interactions.
				</li>
				<li>
				  Used Python, discord.py and JSON
				</li>
			  </ul>
			</Work>
			<Work jobTitle={"Lead Developer"} area={"Full Stack"} projectName={"Infinite Stories"} dateFrom={"Oct 2021"} dateTo={"Jun 2022"} obsolete={true} >
			  <li>
				Website that allowed writers to publish excerpts from their books online to get feedback
			  </li>
			  <li>
				I was responsible for full website design, component creation, read/write to supabase, 
			  </li>
			  <li>
				Used Next.JS for web development and Supabase for storage
			  </li>
			</Work>
		</div>
		<h1 class="self-start text-xl">Certifications</h1>
		<hr class="w-full border-t border-t-black"/>

		<div id="skills" class="flex flex-col h-fit gap-2 my-2 w-full mb-16">
			<p class="text-sm"><strong>CodeCrafters: </strong>HTTP Server (Rust)</p>
		</div>
		<h1 class="self-start text-xl">Skills</h1>
		<hr class="w-full border-t border-t-black"/>

		<div id="skills" class="flex flex-col h-fit gap-2 my-2 w-full">
			<p class="text-sm"><strong>Languages: </strong>TypeScript, JavaScript, Rust, Nix, Python</p>
			<p class="text-sm"><strong>Tools: </strong>MongoDB, Postgres, Supabase, Next.JS, Vercel, Git, Gerrit, GitHub, Google Cloud, Cloudflare (DNS, Workers, Zero Trust, cloudflared), AWS, Nix</p>
		</div>
	</main>
</Layout>