Completely changed the document structure and rewrote the css.

master
James T. Martin 2020-02-06 13:17:32 -08:00
parent af47d5d1a5
commit d519ba9a7c
10 changed files with 465 additions and 361 deletions

View File

@ -1 +1,9 @@
My personal website, https://jamestmartin.me.
# jamestmartin.me
This is the source code for my personal website, [https://jamestmartin.me](jamestmartin.me).
## Code Conventions
All of my code is valid HTML5 and CSS3 according to ["https://html.spec.whatwg.org"](WHATWG standards)
I follow the ["https://google.github.io/styleguide/htmlcssguide.html"](Google HTML/CSS Style Guide).
Google recommends dropping optional tags wherever possible;
I know how to write valid XHTML as well, but choose not to as per the style guide.

55
assets/resume.css Normal file
View File

@ -0,0 +1,55 @@
body {
display: block;
}
h1 {
margin-top: 0;
}
h2, h3 {
margin: 5px 0;
}
.resume {
margin: 0;
}
.resume > header {
background: #111;
color: #eee;
padding: 20px;
}
/* Contains the sidebar and the resume main content. */
.container {
display: flex;
flex-direction: row-reverse;
flex-wrap: wrap;
justify-content: space-between;
}
aside {
flex: 1 1 content;
padding: 20px 40px;
background: #f0f0f0;
color: #111;
}
/* The resume main content. */
.content {
flex: 1 1 content;
max-width: 75ch;
padding: 20px;
}
.experience h3 {
display: inline-block;
}
.experience-duration {
float: right;
}

View File

@ -1,105 +1,86 @@
/*
* The body consists of a nav bar and the website's main content.
* The main content should take up the entire height of the viewport.
*/
body {
background: white;
font: 15pt/1.5em sans-serif;
margin: auto;
max-width: 120ch;
min-height: 100%;
}
body > header {
color: #EEEEEE;
background: #111111;
padding: 20px;
}
h1, h2, h3 {
margin: 5px 0;
}
section, article {
margin: 10px 0;
}
.experience h3 {
display: inline-block;
}
.experience-duration {
float: right;
}
.container {
display: flex;
flex-flow: row-reverse wrap;
align-items: stretch;
flex-flow: column;
max-width: 120ch;
min-height: 100vh;
margin: auto;
background: #fff;
font: 15pt/1.5em sans-serif;
}
.container:not(header) {
background-color: #FAFAFA;
/*
* The website header consists of the website's title and a nav bar.
* The title is left-aligned; the nav bar is right-aligned.
*
* If the nav bar doesn't fit to the right of the site title,
* it should be located under the website title and possibly turn into columns.
*/
body > header {
flex: 0 1 auto;
display: flex;
flex-flow: row wrap;
justify-content: space-between;
align-items: center;
padding: 40px;
color: #eee;
background: #111;
font-size: 1.25em;
}
.content {
padding: 25px;
.site-title {
display: inline-block;
font-size: 1.5em;
font-weight: bold;
}
body > header a {
color: inherit;
}
/* The site navigation links. These are displayed as columns. */
body > header > nav ul {
display: flex;
flex-wrap: wrap;
margin: 0;
list-style-type: none;
}
body > header > nav li {
flex: 1;
display: inline-block;
margin: 0 15px;
}
main {
flex: 1;
background-color: #fafafa;
}
article {
background-color: #FAFAFA;
padding: 25px;
padding-top: 5px;
padding-right: auto;
margin: 0;
margin: 20px 40px;
}
p, article li {
p, li {
max-width: 75ch;
}
.sidebar {
padding: 25px;
min-width: 23ch;
flex-grow: 1;
aside {
float: right;
}
.sidebar:not(nav) {
background-color: #F0F0F0;
color: #111;
}
h1:not(::parent.noflex) {
display: inline-block;
align-self: center;
}
body > header:not(.noflex) {
display: flex;
flex-flow: row wrap;
align-items: stretch;
}
nav {
flex-grow: 1;
align-self: center;
margin-left: auto;
display: flex;
flex-flow: row-reverse wrap;
}
nav a {
color: white;
font-size: 1.5em;
}
nav ul {
list-style-type: none;
display: inline-block;
margin: 0;
}
nav li {
display: inline-block;
margin: 0 10px;
}
code {
font-weight: bold;
img {
width: 300px;
}

View File

@ -4,40 +4,48 @@
<title>Contact Me - James T. Martin</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<header>
<h1>Contact Me</h1>
<span class="site-title">
<a href="/">James T. Martin</a>
</span>
<nav>
<ul>
<li><a href="/projects/">Projects</a></li>
<li><a href="/resume/">Resume</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/projects/">Projects</a>
<li><a href="/resume/">Resume</a>
<li><a href="/contact">Contact</a>
</ul>
</nav>
</header>
<article>
<dl>
<div>
<dt>Email</dt>
<dd>@jtmar.me, james</dd>
</div>
<div>
<dt>Phone</dt>
<dd><a href="tel:+1-206-331-1994">(206) 331-1994</a></dd>
</div>
<div>
<dt>GitHub</dt>
<dd><a href="https://github.com/jamestmartin">jamestmartin</a></dd>
</div>
<div>
<dt>LinkedIn</dt>
<dd><a href="https://www.linkedin.com/in/jamestmartinme/">jamestmartinme</a></dd>
</div>
<div>
<dt>Location</dt>
<dd>Renton, WA</dd>
</div>
</dl>
</article>
<main>
<article id="contact">
<header>
<h2>Contact Me</h2>
</header>
<dl>
<div>
<dt>Email
<dd>@jtmar.me, james
</div>
<div>
<dt>Phone
<dd><a href="tel:+1-206-331-1994">(206) 331-1994</a>
</div>
<div>
<dt>GitHub
<dd><a href="https://github.com/jamestmartin">jamestmartin</a>
</div>
<div>
<dt>LinkedIn
<dd><a href="https://www.linkedin.com/in/jamestmartinme/">jamestmartinme</a>
</div>
<div>
<dt>Location
<dd>Renton, WA
</div>
</dl>
</article>
</main>

View File

@ -4,19 +4,22 @@
<title>James T. Martin</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<header>
<h1>James T. Martin</h1>
<span class="site-title">
<a href="/">James T. Martin</a>
</span>
<nav>
<ul>
<li><a href="/projects/">Projects</a></li>
<li><a href="/resume/">Resume</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/projects/">Projects</a>
<li><a href="/resume/">Resume</a>
<li><a href="/contact">Contact</a>
</ul>
</nav>
</header>
<article>
<main>
TODO: About me.
</article>
</main>

View File

@ -4,56 +4,69 @@
<title>Projects - James T. Martin</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<header>
<h1>Projects</h1>
<span class="site-title">
<a href="/">James T. Martin</a>
</span>
<nav>
<ul>
<li><a href="/projects/">Projects</a></li>
<li><a href="/resume/">Resume</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/projects/">Projects</a>
<li><a href="/resume/">Resume</a>
<li><a href="/contact">Contact</a>
</ul>
</nav>
</header>
<article>
<section id="current">
<h2>Current</h2>
<p>
This is what I'm working on right now:
</p>
<ul>
<li>Moderating <a href="https://discord.gg/4Kjt3ZE">the Programming Language Design Discord server</a>, which I co-founded.</a></li>
<li><a href="https://proglangdesign.net">proglangdesign.net</a>, the programming language design community's website.</li>
<li><a href="https://github.com/proglangdesign/matrix.proglangdesign.net">matrix.proglangdesign.net</a>, a bridge between the programming language design IRC channel and Discord server via Matrix.</li>
<li><a href="https://github.com/jamestmartin/screeps-bot-piet">screeps-bot-piet</a>,
my AI for the MMO RTS for programmers, Screeps.</li>
</ul>
</section>
<section id="hiatus">
<h2>On Hiatus</h2>
<p>
I am not currently working on these things,
but I intend to continue them later.
</p>
<ul>
<li>Moderating <a href="https://reddit.com/r/ProgrammingLanguages">/r/ProgrammingLanguages</a>.</li>
<li><a href="https://github.com/jamestmartin/lambda-calculus">Slowly developing the Lambda Calculus into a real programming language.</a></li>
</ul>
</section>
<section id="previous">
<h2>Previous</h2>
<p>
I have worked on many things over the years.
Most of them have been lost to time; many, I've forgotten about entirely.
I learned to keep backups the hard way.
Here are some of the highlights (that I can remember):
</p>
<ul>
<li><a href="minecraft-clone">A minecraft clone</a>, with infinite procedural worlds and multiplayer.</li>
<li><a href="the-mining-dead">The Mining Dead</a>, a Fallout-themed zombie apocalypse Minecraft server, based on a custom modpack and a ton of custom code.</li>
<li><a href="https://scratch.mit.edu/users/zeusoflightning/">Scratch projects</a> from elementary school, because why not? Man, I've come a <em>long</em> way as a programmer since then.</li>
</ul>
</section>
</article>
<main>
<article id="projects">
<header>
<h2>Projects</h2>
</header>
<section id="current">
<header>
<h3>Current</h3>
<p>This is what I'm working on right now.
</header>
<ul>
<li>Moderating <a href="https://discord.gg/4Kjt3ZE">the Programming Language Design Discord server</a>, which I co-founded.
<li><a href="https://proglangdesign.net">proglangdesign.net</a>, the programming language design community's website.
<li><a href="https://github.com/proglangdesign/matrix.proglangdesign.net">matrix.proglangdesign.net</a>, a bridge between the programming language design IRC channel and Discord server via Matrix.
<li><a href="https://github.com/jamestmartin/screeps-bot-piet">screeps-bot-piet</a>,
my AI for the MMO RTS for programmers, Screeps.
</ul>
</section>
<section id="hiatus">
<header>
<h3>On Hiatus</h3>
<p>I am not currently working on these things, but intend to continue them later.
</header>
<ul>
<li>Moderating <a href="https://reddit.com/r/ProgrammingLanguages">/r/ProgrammingLanguages</a>.
<li><a href="https://github.com/jamestmartin/lambda-calculus">Slowly developing the Lambda Calculus into a real programming language.</a>
</ul>
</section>
<section id="previous">
<header>
<h3>Previous</h3>
<p>
I have worked on many things over the years.
Most of them have been lost to time; many, I've forgotten about entirely.
I learned to keep backups the hard way.
Here are some of the highlights (that I can remember):
</header>
<ul>
<li><a href="minecraft-clone">A minecraft clone</a>, with infinite procedural worlds and multiplayer.
<li><a href="the-mining-dead">The Mining Dead</a>, a Fallout-themed zombie apocalypse Minecraft server, based on a custom modpack and a ton of custom code.
<li><a href="https://scratch.mit.edu/users/zeusoflightning/">Scratch projects</a> from elementary school, because why not? Man, I've come a <em>long</em> way as a programmer since then.
</ul>
</section>
</article>
</main>

View File

@ -4,32 +4,44 @@
<title>Minecraft Clone - Projects - James T. Martin</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<header>
<h1>Minecraft Clone</h1>
<span class="site-title">
<a href="/">James T. Martin</a>
</span>
<nav>
<ul>
<li><a href="/projects/">Projects</a>
<li><a href="/resume/">Resume</a>
<li><a href="/contact">Contact</a>
</ul>
</nav>
</header>
<article>
<p>
In 2014, while still in middle school, I wrote a Minecraft clone using the Unity game engine and C#.
It featured:
</p>
<ul>
<li>a first-person interactive editable world (duh),</li>
<li>infinite procedural map generation using simplex noise,</li>
<li>and a custom TCP-based multiplayer protocol.</li>
</ul>
<p>
I wrote all of the code myself, from scratch, except for one thing: the mesh generation.
For that, I began with a mesh generator and optimizer someone else wrote,
and slowly replaced it with my own code as I learned how it worked.
Ultimately, my code even produced better meshes
because my algorithm understood the greater context of the game world better (like chunk boundaries).
</p>
<p>
This was one of my favorite projects. I was very proud of it as a middle schooler.
Disappointingly, I lost the code when I deleted my old email address,
which made me lose access to my private BitBucket repositories.
</p>
</article>
<main>
<article id="minecraft-clone">
<header>
<h2>Minecraft Clone</h2>
</header>
<p>
In 2014, while still in middle school,
I wrote a Minecraft clone using the Unity game engine and C#.
It featured:
<ul>
<li>a first-person interactive editable world (duh),
<li>infinite procedural map generation using simplex noise,
<li>and a custom TCP-based multiplayer protocol.
</ul>
<p>
I wrote all of the code myself, from scratch, except for one thing: the mesh generation.
For that, I began with a mesh generator and optimizer someone else wrote,
and slowly replaced it with my own code as I learned how it worked.
Ultimately, my code even produced better meshes
because my algorithm understood the greater context of the game world better (like chunk boundaries).
<p>
This was one of my favorite projects. I was very proud of it as a middle schooler.
Disappointingly, I lost the code when I deleted my old email address,
which made me lose access to my private BitBucket repositories.
</article>
</main>

View File

@ -4,62 +4,71 @@
<title>The Mining Dead - Projects - James T. Martin</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<header>
<h1>The Mining Dead</h1>
<span class="site-title">
<a href="/">James T. Martin</a>
</span>
<nav>
<ul>
<li><a href="/projects/">Projects</a>
<li><a href="/resume/">Resume</a>
<li><a href="/contact">Contact</a>
</ul>
</nav>
</header>
<p>
This page is a work-in-progress.
</p>
<p>
This is also from a very long time ago (2012), so my recall is pretty poor,
which makes it especially difficult to write this article.
</p>
<main>
<article id="the-mining-dead">
<header>
<h2>The Mining Dead</h2>
<p>This page is a work in progress.
<p>
This is also from a very long time ago (2012), so my recall is pretty poor,
which makes it especially difficult to write this article.
</header>
<article>
<p>
The Mining Dead was a series of loosely Fallout-themed Minecraft zombie apocalyse servers,
featuring high spawns, difficult zombies, radiation, solar flares, decayed cities,
a desert world generation without trees, crops, animals, grass, or dirt,
custom player ranks based on zombie kills, a special radio chat system,
a custom Technic Platform modpack, and a lot of rotten flesh.
Among other things.
</p>
<p>
Aside from being some of the most fun I've had in my life,
my takeover of the server's administration and codebase in 2012
was what kickstarted my programming career and love for Debian GNU/Linux.
I would not be the person I am today without it.
</p>
<p>
This is my loose attempt at a server chronology.
This was all a long time ago, so I'm mixing up the order of things a lot.
</p>
<ul>
<li>The original server was founded by Skuli_Steinulf in beta 1.8.</li>
<li>
The Tekkit Classic server was founded by Skuli.
The server had three worlds (inventories were not shared):
<p>
The Mining Dead was a series of loosely Fallout-themed Minecraft zombie apocalyse servers,
featuring high spawns, difficult zombies, radiation, solar flares, decayed cities,
a desert world generation without trees, crops, animals, grass, or dirt,
custom player ranks based on zombie kills, a special radio chat system,
a custom Technic Platform modpack, and a lot of rotten flesh.
Among other things.
<p>
Aside from being some of the most fun I've had in my life,
my takeover of the server's administration and codebase in 2012
was what kickstarted my programming career and love for Debian GNU/Linux.
I would not be the person I am today without it.
<p>
This is my loose attempt at a server chronology.
This was all a long time ago, so I'm mixing up the order of things a lot.
<ul>
<li>The Outlands: The conventional Mining Dead experience.</li>
<li>The Frontier: A zombie apocalyse world with normal terrain generation and no radiation.</li>
<li>Medieval: A standard Tekkit Classic world.</li>
<li>The original server was founded by Skuli_Steinulf in beta 1.8.
<li>
The Tekkit Classic server was founded by Skuli.
The server had three worlds (inventories were not shared):
<ul>
<li>The Outlands: The conventional Mining Dead experience.
<li>The Frontier: A zombie apocalyse world with normal terrain generation and no radiation.
<li>Medieval: A standard Tekkit Classic world.
</ul>
<li>A short-lived Tekkit Lite server or something might've been in here?
<li>Skuli had early access to the Technic Platform. He creates a custom modpack for the server.
<li>
Skuli simultaneously founds a vanilla server,
and another server using the custom modpack featuring the Cogs of the Machine mod
instead of more conventional high-tech mods like IndustrialCraft 2.
<li>
Skuli abruptly retires from maintaining The Mining Dead.
I had no programming experience and no experience with running Minecraft servers,
but I took over anyway. I learn as I go.
<li>
TODO: The rest of the chronology, including my multiple servers, the DJ incident,
Skuli's second attempt and the ice worlds, the various attempts to succeed me,
Skuli's later servers, other servers I made, and Obamallama's servers.
</ul>
</li>
<li>A short-lived Tekkit Lite server or something might've been in here?</li>
<li>Skuli had early access to the Technic Platform. He creates a custom modpack for the server.</li>
<li>
Skuli simultaneously founds a vanilla server,
and another server using the custom modpack featuring the Cogs of the Machine mod
instead of more conventional high-tech mods like IndustrialCraft 2.
</li>
<li>
Skuli abruptly retires from maintaining The Mining Dead.
I had no programming experience and no experience with running Minecraft servers,
but I took over anyway. I learn as I go.
</li>
<li>TODO: The rest of the chronology, including my multiple servers, the DJ incident, Skuli's second attempt and the ice worlds, the various attempts to succeed me, Skuli's later servers, other servers I made, and Obamallama's servers.</li>
<ul>
</article>
</article>
</main>

View File

@ -4,28 +4,33 @@
<title>Resume - James T. Martin's</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<header>
<h1>Resumes</h1>
<span class="site-title">
<a href="/">James T. Martin</a>
</span>
<nav>
<ul>
<li><a href="/projects/">Projects</a></li>
<li><a href="/resume/">Resume</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/projects/">Projects</a>
<li><a href="/resume/">Resume</a>
<li><a href="/contact">Contact</a>
</ul>
</nav>
</header>
<article>
<p>
I have different resumes for different jobs:
</p>
<ul>
<li>TODO: <a href="web-developer">Web Developer</a></li>
<li><a href="software-developer">Software Developer</a></li>
<li>TODO: <a href="compiler-developer">Compiler Developer</a></li>
<li>TODO: <a href="general-laborer">General Laborer</a></li>
</ul>
</article>
</div>
<main>
<article>
<header>
<h2>Resumes</h2>
<p>I have different resumes for different jobs.
</header>
<ul>
<li>TODO: <a href="web-developer">Web Developer</a>
<li><a href="software-developer">Software Developer</a>
<li>TODO: <a href="compiler-developer">Compiler Developer</a>
<li>TODO: <a href="general-laborer">General Laborer</a>
</ul>
</article>
</main>

View File

@ -1,110 +1,120 @@
<!DOCTYPE html>
<html lang="en-US">
<meta charset="utf-8">
<title>Software Developer Resume - James T. Martin</title>
<title>James T. Martin, Software Developer</title>
<link rel="stylesheet" href="/assets/style.css">
<link rel="stylesheet" href="/assets/resume.css">
<link rel="icon" type="image/png" href="/assets/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<body>
<header class="noflex">
<h1>James T. Martin</h1>
<div>
A self-taught programmer fond of programming language theory.
</div>
</header>
<div class="container">
<div class="sidebar">
<section id="personal-info">
<h2>Personal Info</h2>
<dl>
<div>
<dt>Email</dt>
<dd>@jtmar.me, james</dd>
</div>
<div>
<dt>Phone</dt>
<dd><a href="tel:+1-206-331-1994">(206) 331-1994</a></dd>
</div>
<div>
<dt>Location</dt>
<dd>Renton, WA</dd>
</div>
<div>
<dt>GitHub</dt>
<dd><a href="https://github.com/jamestmartin">jamestmartin</a></dd>
</div>
<div>
<dt>LinkedIn</dt>
<dd><a href="https://www.linkedin.com/in/jamestmartinme/">jamestmartinme</a></dd>
</div>
</dl>
</section>
</div>
<div class="content">
<section id="experience">
<h2>Experience</h2>
<section id="pld-community" class="experience">
<main>
<article class="resume">
<header>
<h3><a href="https://proglangdesign.net">Programming Language Design Community</a></h3>
<span class="experience-duration"><time datetime="2018-06">June 2018</time> onward</span>
<h1>James T. Martin</h1>
<span class="tagline">A self-taught programmer fond of programming language theory.</span>
</header>
<ul>
<li>Led redesign of <a href="https://proglangdesign.net">the website</a></li>
<li>Automated the generation of <a href="https://proglangdesign.net/#projects">the community projects list</a> using Jekyll</li>
<li><a href="https://github.com/proglangdesign/matrix.proglangdesign.net">Bridged</a>
the <a href="https://discord.gg/4Kjt3ZE">Discord</a> and <a href="https://irc.lc/freenode/proglangdesign">Freenode</a> sub-communities via <a href="https://matrix.org">Matrix</a></li>
<li>Co-founded the Discord sub-community; moderated it and <a href="https://reddit.com/r/ProgrammingLanguages">/r/ProgrammingLanguages</a></li>
</ul>
</section>
<section class="experience">
<header>
<h3>Hazen Robotics Club</h3>
</header>
<ul>
<li>Mentored programming at the summer robotics camp</li>
<li>Taught club members to use Java and Git</li>
<li>Collaborated to build robot controller programs for FTC competitions</li>
</ul>
</section>
</section>
<!-- TODO: Figure out a more semantic way to deal with the container/content divs. -->
<div class="container">
<aside>
<section id="personal-info">
<header>
<h2>Personal Info</h2>
</header>
<section id="skills">
<h2>Skills</h2>
<ul>
<li>Languages: Java 8, Haskell, HTML5/XHTML</li>
<li>Tools: Git, GitHub, continuous integration, bug tracking, unit testing, property testing</li>
<li>Administration: Debian GNU/Linux, Nginx</li>
<li>APIs: <abbr title="Representational State Transfer">REST</abbr>, JSON, JSON Schema, JSON-LD, <abbr title="Hypermedia as the Engine of Application State">HATEOAS</abbr></li>
<li>Security:
<dl>
<div>
<dt>Email
<dd>@jtmar.me, james
</div>
<div>
<dt>Phone
<dd><a href="tel:+1-206-331-1994">(206) 331-1994</a>
</div>
<div>
<dt>Location
<dd>Renton, WA
</div>
<div>
<dt>GitHub
<dd><a href="https://github.com/jamestmartin">jamestmartin</a>
</div>
<div>
<dt>LinkedIn
<dd><a href="https://www.linkedin.com/in/jamestmartinme/">jamestmartinme</a>
</div>
</dl>
</section>
</aside>
<div class="content">
<section id="experience">
<header>
<h2>Experience</h2>
</header>
<section id="pld-community" class="experience">
<header>
<h3><a href="https://proglangdesign.net">Programming Language Design Community</a></h3>
<span class="experience-duration"><time datetime="2018-06">June 2018</time> onward</span>
</header>
<ul>
<li>Led redesign of <a href="https://proglangdesign.net">the website</a>
<li>Automated the generation of <a href="https://proglangdesign.net/#projects">the community projects list</a> using Jekyll
<li><a href="https://github.com/proglangdesign/matrix.proglangdesign.net">Bridged</a>
the <a href="https://discord.gg/4Kjt3ZE">Discord</a> and <a href="https://irc.lc/freenode/proglangdesign">Freenode</a> sub-communities via <a href="https://matrix.org">Matrix</a>
<li>Co-founded the Discord sub-community; moderated it and <a href="https://reddit.com/r/ProgrammingLanguages">/r/ProgrammingLanguages</a>
</ul>
</section>
<section id="hazen-robotics" class="experience">
<header>
<h3>Hazen Robotics Club</h3>
</header>
<ul>
<li>Mentored programming at the summer robotics camp
<li>Taught club members to use Java and Git
<li>Collaborated to build robot controller programs for FTC competitions
</ul>
</section>
</section>
<section id="skills">
<header>
<h2>Skills</h2>
</header>
<ul>
<li><abbr title="Transport Layer Security">TLS</abbr>: <a href="https://letsencrypt.org">Let's Encrypt</a>, <a href="https://www.ssllabs.com/">SSL Labs</a>, DNS <abbr title="Certification Authority Authorization">CAA</abbr>, <abbr title="HTTP Strict Transport Security">HSTS</abbr> deployment</li>
<li>Web: <abbr title="Cross-Site Scripting">XSS</abbr> prevention, <abbr title="Cross-Site Request Forgery">CSRF</abbr> prevention, <abbr title="Content Security Policy">CSP</abbr>, input validation, SQL injection prevention</li>
<li>Languages: Java 8, Haskell, HTML5/XHTML
<li>Tools: Git, GitHub, continuous integration, bug tracking, unit testing, property testing
<li>Administration: Debian GNU/Linux, Nginx
<li>APIs: <abbr title="Representational State Transfer">REST</abbr>, JSON, JSON Schema, JSON-LD, <abbr title="Hypermedia as the Engine of Application State">HATEOAS</abbr>
<li>Security:
<ul>
<li><abbr title="Transport Layer Security">TLS</abbr>: <a href="https://letsencrypt.org">Let's Encrypt</a>, <a href="https://www.ssllabs.com/">SSL Labs</a>, DNS <abbr title="Certification Authority Authorization">CAA</abbr>, <abbr title="HTTP Strict Transport Security">HSTS</abbr> deployment
<li>Web: <abbr title="Cross-Site Scripting">XSS</abbr> prevention, <abbr title="Cross-Site Request Forgery">CSRF</abbr> prevention, <abbr title="Content Security Policy">CSP</abbr>, input validation, SQL injection prevention
</ul>
</ul>
</li>
</ul>
</section>
</section>
<section id="education">
<h2>Education</h2>
<section class="experience">
<header>
<h3><a href="https://hazen.rentonschools.us/">Hazen High School</a></h3>
<span class="experience-duration">
<time datetime="2015-09-02">2015</time>
to <time datetime="2019-06-13">2019</time>
</span>
</header>
<ul>
<li>Recieved OSHA 10 certification.</li>
<li>Member of marching, symphonic, and jazz bands; recieved John Philip Sousa award in 2019.</li>
</ul>
</section>
</section>
</div>
</div>
<section id="education">
<header>
<h2>Education</h2>
</header>
<section id="hazen" class="experience">
<header>
<h3><a href="https://hazen.rentonschools.us/">Hazen High School</a></h3>
<span class="experience-duration">
<time datetime="2015-09-02">2015</time>
to <time datetime="2019-06-13">2019</time>
</span>
</header>
<ul>
<li>Recieved OSHA 10 certification.
<li>Member of marching, symphonic, and jazz bands; recieved John Philip Sousa award in 2019.
</ul>
</section>
</section>
</div>
</div>
</article>
</main>