A minimal and attractive redesign.

master
James T. Martin 2020-08-30 15:26:18 -07:00
parent 8ee1c411f4
commit c9a8941dfa
Signed by: james
GPG Key ID: 4B7F3DA9351E577C
32 changed files with 102 additions and 594 deletions

View File

@ -6,3 +6,6 @@ indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.css]
indent_size = 4

View File

@ -1,5 +1,4 @@
source "https://rubygems.org"
gem "jekyll-assets"
gem "jekyll-last-modified-at"
gem "jekyll-sitemap"

View File

@ -4,98 +4,65 @@ GEM
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.5)
concurrent-ruby (1.1.7)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
fastimage (1.8.1)
addressable (~> 2.3, >= 2.3.5)
ffi (1.12.2)
ffi (1.13.1)
forwardable-extended (2.6.0)
hike (1.2.3)
http_parser.rb (0.6.0)
i18n (1.8.2)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (4.0.0)
jekyll (3.9.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (>= 0.9.5, < 2)
jekyll-sass-converter (~> 2.0)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.1)
kramdown-parser-gfm (~> 1.0)
kramdown (>= 1.17, < 3)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (~> 3.0)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
terminal-table (~> 1.8)
jekyll-assets (1.0.0)
fastimage (~> 1.6)
jekyll (>= 2)
mini_magick (~> 4.1)
sass (~> 3.2)
sprockets (~> 2.10)
sprockets-helpers
sprockets-sass
jekyll-last-modified-at (1.2.1)
jekyll-last-modified-at (1.3.0)
jekyll (>= 3.7, < 5.0)
posix-spawn (~> 0.3.9)
jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.1.0)
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
kramdown (2.3.0)
rexml
liquid (4.0.3)
listen (3.2.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
mini_magick (4.10.1)
multi_json (1.14.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
posix-spawn (0.3.13)
public_suffix (4.0.3)
rack (1.6.12)
rb-fsevent (0.10.3)
posix-spawn (0.3.15)
public_suffix (4.0.5)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rouge (3.15.0)
rexml (3.2.4)
rouge (3.22.0)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sassc (2.2.1)
ffi (~> 1.9)
sprockets (2.12.5)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sprockets-helpers (1.2.1)
sprockets (>= 2.2)
sprockets-sass (1.3.1)
sprockets (~> 2.0)
tilt (~> 1.1)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
tilt (1.4.1)
unicode-display_width (1.6.1)
PLATFORMS
ruby
DEPENDENCIES
jekyll-assets
jekyll-last-modified-at
jekyll-sitemap

View File

@ -1,10 +1,10 @@
# jamestmartin.me
This is the source code for my personal website, [https://jamestmartin.me](jamestmartin.me).
This is the source code for my personal website, [jamestmartin.me](https://jamestmartin.me).
## Installation
This project is built using [https://jekyllrb.com/](Jekyll), a static site generator.
This project is built using [Jekyll](https://jekyllrb.com/), a static site generator.
To install this website, you must first [https://jekyllrb.com/docs/installation/](install Jekyll).
To install this website, you must first [install Jekyll](https://jekyllrb.com/docs/installation/).
Next, install all necessary modules with `bundle exec`.
To build the site, run `bundle exec jekyll build`.
@ -16,8 +16,8 @@ You may point your web server there and the site will work with no additional ef
To work on the site without installing full web server, use `bundle exec jekyll serve`.
## Code Conventions
All of my code is valid HTML5 and CSS3 according to ["https://html.spec.whatwg.org"](WHATWG standards)
All of my code is valid HTML5 and CSS3 according to [WHATWG standards](https://html.spec.whatwg.org)
I follow the ["https://google.github.io/styleguide/htmlcssguide.html"](Google HTML/CSS Style Guide).
I follow the [Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html).
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.
I know how to write valid XHTML polyglot as well, but choose not to as per the style guide.

View File

@ -1,13 +1,4 @@
url: "https://jamestmartin.me"
plugins:
- jekyll-assets
- jekyll-last-modified-at
- jekyll-sitemap
assets:
destination: "/assets"
compression: true
css_compressor: scss
sources:
- assets/css
- assets/images

View File

@ -2,23 +2,9 @@
<html lang="en-US">
<meta charset="utf-8">
<title>{{ page.title }}</title>
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="icon" type="image/png" href="/assets/images/favicon.png">
<link rel="stylesheet" href="/assets/style/default.css">
<link rel="icon" type="image/png" href="/assets/image/lambda.png">
<link rel="canonical" href="{{ site.url }}{{ page.permalink }}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<header>
<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>
<main>{{ content }}</main>
{{ content }}

View File

@ -1,50 +0,0 @@
<!DOCTYPE html>
<html lang="en-US">
<meta charset="utf-8">
<title>James T. Martin, {{ page.title }}</title>
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="stylesheet" href="/assets/css/resume.css">
<link rel="icon" type="image/png" href="/assets/images/favicon.png">
<link rel="canonical" href="{{ site.url }}{{ page.permalink }}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<main>
<article class="resume">
<header>
<h1>James T. Martin, {{ page.title }}</h1>
{% if page.tagline %}<span class="tagline">{{ page.tagline }}</span>{% endif %}
</header>
<!-- 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>
<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>
</dl>
</section>
</aside>
<div class="content">{{ content }}</div>
</div>
</article>
</main>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-US">
<meta charset="utf-8">
<title>{{ page.title }}</title>
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="icon" type="image/png" href="/assets/images/favicon.png">
<link rel="canonical" href="{{ site.url }}{{ page.permalink }}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<main>{{ content }}</main>

View File

@ -1,69 +0,0 @@
body {
display: block;
}
h1 {
margin: 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-evenly;
}
aside {
flex: 1 1 content;
width: 100%;
background: #f0f0f0;
color: #111;
}
/* The resume main content. */
.content {
flex: 1 1 content;
max-width: 75ch;
}
@media (min-width: 1001px) {
.content, aside {
padding: 20px 60px;
}
}
@media (max-width: 1000px) {
.content, aside {
padding: 20px;
}
}
.experience h3 {
display: inline-block;
}
.experience-duration {
float: right;
}
li {
padding: .25em 0;
}

View File

@ -1,55 +0,0 @@
/*
* 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 {
display: flex;
flex-flow: column;
max-width: 60ch;
min-height: 100vh;
margin: auto;
background-color: #fafafa;
font-size: 1.4rem;
font-family: monospace;
line-height: 1.8em;
}
figure {
margin: 16px 0;
padding: 16px;
border-style: solid;
}
figcaption {
font-weight: bold;
}
dl {
margin: 20px;
}
dl div:not(:last-child) {
margin-bottom: 10px;
}
dl dd, ul li:not(:first-child) {
margin-top: 5px;
}
dl.inline dt {
width: 10ch;
}
dl.inline dt:after {
content: ":";
}
dl.inline dd {
margin: 0;
}
dl.inline dt, dl.inline dd {
display: inline-block;
}

BIN
assets/image/dad.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

1
assets/image/discord.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 245 240"><path d="M104.4 103.9c-5.7 0-10.2 5-10.2 11.1s4.6 11.1 10.2 11.1c5.7 0 10.2-5 10.2-11.1.1-6.1-4.5-11.1-10.2-11.1zM140.9 103.9c-5.7 0-10.2 5-10.2 11.1s4.6 11.1 10.2 11.1c5.7 0 10.2-5 10.2-11.1s-4.5-11.1-10.2-11.1z"/><path d="M189.5 20h-134C44.2 20 35 29.2 35 40.6v135.2c0 11.4 9.2 20.6 20.5 20.6h113.4l-5.3-18.5 12.8 11.9 12.1 11.2 21.5 19V40.6c0-11.4-9.2-20.6-20.5-20.6zm-38.6 130.6s-3.6-4.3-6.6-8.1c13.1-3.7 18.1-11.9 18.1-11.9-4.1 2.7-8 4.6-11.5 5.9-5 2.1-9.8 3.5-14.5 4.3-9.6 1.8-18.4 1.3-25.9-.1-5.7-1.1-10.6-2.7-14.7-4.3-2.3-.9-4.8-2-7.3-3.4-.3-.2-.6-.3-.9-.5-.2-.1-.3-.2-.4-.3-1.8-1-2.8-1.7-2.8-1.7s4.8 8 17.5 11.8c-3 3.8-6.7 8.3-6.7 8.3-22.1-.7-30.5-15.2-30.5-15.2 0-32.2 14.4-58.3 14.4-58.3 14.4-10.8 28.1-10.5 28.1-10.5l1 1.2c-18 5.2-26.3 13.1-26.3 13.1s2.2-1.2 5.9-2.9c10.7-4.7 19.2-6 22.7-6.3.6-.1 1.1-.2 1.7-.2 6.1-.8 13-1 20.2-.2 9.5 1.1 19.7 3.9 30.1 9.6 0 0-7.9-7.5-24.9-12.7l1.4-1.6s13.7-.3 28.1 10.5c0 0 14.4 26.1 14.4 58.3 0 0-8.5 14.5-30.6 15.2z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

1
assets/image/email.svg Normal file
View File

@ -0,0 +1 @@
<svg viewBox="0 0 597 597" xmlns="http://www.w3.org/2000/svg"><path d="M43.66 436.86V150.884c0-.33.496-3.475 1.49-9.433l168.308 143.98L45.646 446.79c-1.323-4.634-1.985-7.944-1.985-9.93zm22.342-315.268c2.317-.993 5.13-1.49 8.44-1.49h453.29c2.98 0 5.958.497 8.937 1.49L367.864 266.07l-22.342 17.873-44.187 36.244-44.187-36.244-22.342-17.873zm.496 344.56L235.8 303.802l65.536 53.123 65.536-53.124 169.301 162.351c-2.648.994-5.461 1.49-8.44 1.49H74.443c-2.649 0-5.297-.496-7.945-1.49zm322.716-180.719l167.812-143.981c.993 2.98 1.489 6.124 1.489 9.434v285.976c0 2.978-.496 6.288-1.49 9.93z"/></svg>

After

Width:  |  Height:  |  Size: 594 B

1
assets/image/github.svg Normal file
View File

@ -0,0 +1 @@
<svg viewBox="0 0 597 597" xmlns="http://www.w3.org/2000/svg"><path d="M42.667 316.928c0-34.816 6.826-67.925 20.48-99.328 26.965-63.488 72.192-108.714 135.68-135.68 31.402-13.653 64.512-20.48 99.328-20.48s67.925 6.827 99.328 20.48c62.806 26.624 108.032 71.85 135.68 135.68 13.653 32.427 20.48 65.536 20.48 99.328s-6.827 66.902-20.48 99.328c-27.647 64.17-72.874 109.74-135.68 136.704-31.403 13.654-64.512 20.48-99.328 20.48s-67.926-6.826-99.328-20.48c-63.488-27.307-108.715-72.875-135.68-136.704-13.653-31.402-20.48-64.512-20.48-99.328zm39.935 0c0 48.128 14.336 91.136 43.009 129.024 28.33 37.205 65.365 63.658 111.104 79.36v-40.96c0-20.48 6.827-35.328 20.48-44.545-6.826-.34-14.848-1.535-24.064-3.583-17.408-3.072-32.256-8.533-44.544-16.384-31.061-18.774-46.592-52.736-46.592-101.888 0-25.6 8.533-47.446 25.6-65.536-7.85-20.14-6.997-41.984 2.56-65.536h10.24c3.413 0 7.68.853 12.8 2.56 13.312 4.096 28.16 11.605 44.544 22.527 20.821-5.46 41.301-8.191 61.44-8.191s40.79 2.73 61.952 8.191c13.312-8.874 25.77-15.7 37.376-20.48 10.923-4.095 18.773-5.802 23.552-5.12l6.144.512c9.216 23.553 10.07 45.398 2.56 65.537 17.067 18.09 25.6 39.935 25.6 65.536 0 38.229-9.386 67.072-28.16 86.528-10.24 10.922-23.723 19.456-40.448 25.6-13.995 5.12-29.525 8.362-46.592 9.727 13.995 9.9 20.993 24.747 20.993 44.544v40.96c44.031-15.701 80.383-42.496 109.056-80.384 27.99-37.546 41.984-80.213 41.984-128 0-29.013-5.632-57.002-16.897-83.968-10.922-25.941-26.282-48.81-46.08-68.608-19.114-19.115-41.983-34.304-68.607-45.567-27.307-11.606-55.125-17.409-83.456-17.409-27.99 0-55.98 5.803-83.969 17.409-25.6 10.922-48.469 26.111-68.607 45.567-19.115 19.798-34.475 42.667-46.08 68.608-11.265 26.966-16.897 54.955-16.897 83.968z"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 978 B

After

Width:  |  Height:  |  Size: 978 B

BIN
assets/image/lapfox.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
assets/image/smbc.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

41
assets/style/default.css Normal file
View File

@ -0,0 +1,41 @@
html {
/*
* The body does not span the entire viewport, so the background color must go in the `html`.
* This difference is not visible normally, but appears to be triggered by the Dark Reader plugin for Firefox.
*/
background-color: #fafafa;
}
body {
margin: auto;
/** I love me some easily-readable text. */
max-width: 60ch;
font: 1.4rem/1.8em sans-serif;
}
.icon-list img {
width: 1.3em;
height: 1.3em;
/* The icon should be located where the bullet would be. */
position: relative;
left: -1.3em;
/*
* The text doesn't know that the image isn't actually there, so it must be re-aligned with a negative margin.
* I don't move over the entire 1.3 em gap, because there needs to be space between the icon and text.
*/
margin-right: -1em;
}
.icon-list li {
/* Vertically align the text w.r.t. the icon. This has the simultaneous effect of removing the list bullet. */
display: flex;
align-items: center;
}
@media (prefers-color-scheme: dark) {
img.svg-icon {
filter: invert(1);
}
}

View File

@ -1,28 +0,0 @@
---
layout: default
title: Contact Me
permalink: /contact
---
<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>
</dl>
</article>

View File

@ -1,48 +1,36 @@
---
layout: simple
layout: default
title: James T. Martin
permalink: /
---
<h1>James T Martin</h1>
<figure>
<figcaption>Accounts:</figcaption>
<dl class="inline">
<div>
<dt>GitHub</dt>
<dd><a href="https://github.com/jamestmartin">jamestmartin</a></dd>
</div>
<div>
<dt>Discord</dt>
<dd>jamestmartin#7117</dd>
</div>
<div>
<dt>Email</dt>
<dd>james (at) jtmar (dot) me</dd>
</div>
</dl>
</figure>
<figure>
<figcaption>Communities:</figcaption>
<dl>
<div>
<dt><a href="https://proglangdesign.net">Programming Language Design</a> (since June 2018)</dt>
<dd>Moderator of: Reddit &amp; Discord</dd>
<dd>Administrator of: IRC bridge</dd>
<dd>Programmer of: the website</dd>
</div>
<div>
<dt><a href="https://dad.gallery">Do Art Daily</a> (since April 2020)</dt>
<dd>Developer</dd>
<dd>Artist (beginner)</dd>
</div>
</dl>
</figure>
Also me:
<figure>
<figcaption>Likes:</figcaption>
<ul>
<li>Arts: drawing, playing music</li>
<li>Computers: Debian Linux, Agda, Haskell, Rust</li>
<li>Outdoors: hiking, skiing</li>
<ul class="icon-list">
<li><img alt="Email:" title="Email" src="/assets/image/email.svg"> james (at) jtmar (dot) me
<li><img alt="Discord:" title="Discord" src="/assets/image/discord.svg"> jamestmartin#7117
<li><img alt="GitHub:" title="GitHub" src="/assets/image/github.svg"> <a rel="me" href="https://github.com/jamestmartin">jamestmartin</a>
</ul>
Communities I participate in:
{% comment %}The span tags are necessary for grouping elements due to `li` being `display: flex`.{% endcomment %}
<ul class="icon-list">
<li><img alt="" src="/assets/image/lambda.png"> <span><a href="https://proglangdesign.net">Programming Language Design</a> (I am a moderator)</span>
<li><img alt="" src="/assets/image/dad.webp"> <span><a href="https://dad.gallery">Do Art Daily</a> (I am an occasional code contributor)</span>
</ul>
Stuff I'm working on:
<ul>
<li><a href="https://github.com/jamestmartin/bootproof">bootproof</a>: An x86_64 UEFI OS written from scratch in Rust.
<li><a href="https://github.com/jamestmartin/math">math</a>: Formalizing calculus in Agda for my own education.
<li><a href="https://github.com/jamestmartin/monoids-in-the-category-of-endofunctors">monoids in the category of endofunctors</a>: Category theory, recursion schemes, and dependent types, to satisfy my hasochistic urges.
</ul>
Random stuff I like:
<ul class="icon-list">
<li><img alt="" src="/assets/image/lapfox.webp"> <a href="https://lapfoxtrax.com/">Halley Labs</a>
<li><img alt="" src="/assets/image/smbc.webp"> <a href="https://www.smbc-comics.com/">Saturday Morning Breakfast Cereal</a>
</ul>

View File

@ -1,38 +0,0 @@
---
layout: default
title: Projects
permalink: /projects/
---
<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>I co-founded and moderate <a href="https://discord.gg/4Kjt3ZE">the /r/ProgrammingLanguages Discord server</a>.
<li>I rewrote and now maintain <a href="https://proglangdesign.net">proglangdesign.net</a>, the programming language design community website.
<li>I set up and run <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="previous">
<header>
<h3>Previous</h3>
<p>
Unfortunately, I had to learn to keep backups the hard way, so all of my pre-2016 code has been lost.
</header>
<ul>
<li>In elementary school, I made <a href="https://scratch.mit.edu/users/zeusoflightning/">Scratch projects</a>. I've come a <em>long</em> way since then.
<li>In middle school, I ran The Mining Dead, a Fallout-themed zombie apocalypse Minecraft server. I learned Java by writing custom plugins for it.
<li>After that, I wrote an unnamed minecraft clone, with infinite procedural worlds and online multiplayer, written in C# using the Unity game engine.
</ul>
</section>
</article>

View File

@ -1,17 +0,0 @@
---
layout: default
title: Resumes
permalink: /resume/
---
<article>
<header>
<h2>Resumes</h2>
<p>I have different resumes for different jobs.
</header>
<ul>
<li><a href="web-developer">Web Developer</a> (<a href="web-developer.pdf">PDF</a>, <a href="web-developer.tex">TeX</a>)
<li>WIP: <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>

View File

@ -1,66 +0,0 @@
---
layout: resume
title: Software Developer
permalink: /resume/software-developer
tagline: A self-taught programmer fond of programming language theory.
---
<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 Matrix.
<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>Languages: Java 8, Haskell, HTML5/XHTML, TypeScript, JavaScript, Agda
<li>Tools: Git, GitHub, continuous integration, bug tracking, unit testing, formal verification
<li>Administration: Debian GNU/Linux, Nginx
</ul>
</section>
<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 Sousa award in 2019.
</ul>
</section>
</section>

View File

@ -1,72 +0,0 @@
---
layout: resume
title: Web Developer
permalink: /resume/web-developer
---
<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 Matrix.
<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 for 90 hours.
<li>Taught club members to use Java and Git.
<li>Collaborated to build robot controller programs for FIRST competitions.
</ul>
</section>
</section>
<section id="skills">
<header>
<h2>Skills</h2>
</header>
<ul>
<li>Languages: HTML5/XHTML, TypeScript, JavaScript, Java 8, Haskell, Agda
<li>Tools: Git, GitHub, continuous integration, bug tracking, unit testing, formal verification
<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>: Let's Encrypt, SSL Labs, 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>
</section>
<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>Member of marching, symphonic, and jazz bands; recieved Sousa award in 2019.
<li>Got high (4+) scores on 7 AP exams, including Computer Science (5) and Calculus AB (4).
<li>Learned shop skills and recieved OSHA 10 certification.
</ul>
</section>
</section>

Binary file not shown.

View File

@ -1,65 +0,0 @@
\documentclass[12pt]{extarticle}
\usepackage{enumitem}
\usepackage[cm]{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\DeclareUnicodeCharacter{2194}{\leftrightarrow}
\renewcommand{\familydefault}{\sfdefault}
\pagenumbering{gobble}
\setcounter{secnumdepth}{0}
\setlength{\parindent}{0pt}
\author{James T. Martin}
\begin{document}
\section{\href{https://jamestmartin.me}{James T. Martin}, Web Developer}
\begin{description}[noitemsep,labelwidth=2cm]
\item[Email] \href{mailto:James\%20Martin<james@jtmar.me>}{james@jtmar.me}
\item[Phone] \href{tel:+1-206-331-1994}{(206) 331-1994}
\item[Location] Renton, WA
\item[GitHub] \href{https://github.com/jamestmartin}{jamestmartin}
\item[LinkedIn] \href{https://www.linkedin.com/in/jamestmartinme/}{jamestmartinme}
\end{description}
\subsection{Experience}
% Including the dates in the subsubsection title like this isn't necessarily semantic.
% I ought to come up with a better way.
\subsubsection{\href{https://proglangdesign.net}{Programming Language Design Community} \hfill June 2018 onward}
\begin{itemize}
\item Led redesign of \href{https://proglangdesign.net}{the website}.
\item Automated the generation of \href{https://proglangdesign.net/#projects}{the community projects list} using Jekyll.
\item \href{https://github.com/proglangdesign/matrix.proglangdesign.net}{Bridged} the \href{https://discord.gg/4Kjt3ZE}{Discord} and \href{https://irc.lc/freenode/proglangdesign}{Freenode} sub-communities via Matrix.
\item Co-founded the Discord sub-community; moderated it and \href{https://reddit.com/r/ProgrammingLanguages}{/r/ProgrammingLanguages}
\end{itemize}
\subsubsection{Hazen Robotics Club}
\begin{itemize}
\item Mentored programming at the summer robotics camp for 90 hours.
\item Taught club members to use Java and Git.
\item Collaborated to build robot controller programs for FIRST competitions.
\end{itemize}
\subsection{Skills}
\begin{itemize}
\item Languages: HTML5/XHTML, TypeScript, JavaScript, Java 8, Haskell, Agda
\item Tools: Git, GitHub, continuous integration, bug tracking, unit testing, formal verification
\item Administration: Debian GNU/Linux. Nginx
\item APIs: REST, JSON, JSON Schema, JSON-LD, HATEOAS
\item Security:
\begin{itemize}
\item TLS: Let's Encrypt, SSL Labs, DNS CAA, HSTS deployment
\item Web: XSS prevention, CSRF prevention, CSP, input validation, SQL injection prevention
\end{itemize}
\end{itemize}
\subsection{Education}
\subsubsection{\href{https://www.rentonschools.us/hazen}{Hazen High School} \hfill 2015 to 2019}
\begin{itemize}
\item Member of marching, symphonic, and jazz bands; recieved Sousa award in 2019.
\item Got high (4+) scores on 7 AP exams, including Computer Science (5) and Calculus AB (4).
\item Learned shop skills and recieved OSHA 10 certification.
\end{itemize}
\end{document}