From d519ba9a7c49507dd47f4bc4ceec0546737f815d Mon Sep 17 00:00:00 2001 From: James Martin Date: Thu, 6 Feb 2020 13:17:32 -0800 Subject: [PATCH] Completely changed the document structure and rewrote the css. --- README.md | 10 +- assets/resume.css | 55 +++++++++ assets/style.css | 157 +++++++++++-------------- contact.html | 66 ++++++----- index.html | 17 +-- projects/index.html | 103 +++++++++-------- projects/minecraft-clone.html | 62 ++++++---- projects/the-mining-dead.html | 113 +++++++++--------- resume/index.html | 39 ++++--- resume/software-developer.html | 204 +++++++++++++++++---------------- 10 files changed, 465 insertions(+), 361 deletions(-) create mode 100644 assets/resume.css diff --git a/README.md b/README.md index b061bd5..34a1515 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/assets/resume.css b/assets/resume.css new file mode 100644 index 0000000..028919b --- /dev/null +++ b/assets/resume.css @@ -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; +} diff --git a/assets/style.css b/assets/style.css index 3b99d77..dab0824 100644 --- a/assets/style.css +++ b/assets/style.css @@ -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; } diff --git a/contact.html b/contact.html index e88d9f4..e6760e2 100644 --- a/contact.html +++ b/contact.html @@ -4,40 +4,48 @@ Contact Me - James T. Martin - +
-

Contact Me

+ + James T. Martin + +
-
-
-
-
Email
-
@jtmar.me, james
-
-
-
Phone
-
(206) 331-1994
-
-
-
GitHub
-
jamestmartin
-
-
-
LinkedIn
-
jamestmartinme
-
-
-
Location
-
Renton, WA
-
-
-
+
+ +
diff --git a/index.html b/index.html index e74ce5e..5649880 100644 --- a/index.html +++ b/index.html @@ -4,19 +4,22 @@ James T. Martin - +
-

James T. Martin

+ + James T. Martin + +
-
+
TODO: About me. -
+ diff --git a/projects/index.html b/projects/index.html index ac51d78..21c3e5f 100644 --- a/projects/index.html +++ b/projects/index.html @@ -4,56 +4,69 @@ Projects - James T. Martin - +
-

Projects

+ + James T. Martin + +
-
-
-

Current

-

- This is what I'm working on right now: -

- -
-
-

On Hiatus

-

- I am not currently working on these things, - but I intend to continue them later. -

- -
-
-

Previous

-

- 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): -

-
    -
  • A minecraft clone, with infinite procedural worlds and multiplayer.
  • -
  • The Mining Dead, a Fallout-themed zombie apocalypse Minecraft server, based on a custom modpack and a ton of custom code.
  • -
  • Scratch projects from elementary school, because why not? Man, I've come a long way as a programmer since then.
  • -
-
-
+
+
+
+

Projects

+
+ +
+
+

Current

+

This is what I'm working on right now. +

+ +
+ +
+
+

On Hiatus

+

I am not currently working on these things, but intend to continue them later. +

+ + +
+ +
+
+

Previous

+

+ 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): +

+ +
    +
  • A minecraft clone, with infinite procedural worlds and multiplayer. +
  • The Mining Dead, a Fallout-themed zombie apocalypse Minecraft server, based on a custom modpack and a ton of custom code. +
  • Scratch projects from elementary school, because why not? Man, I've come a long way as a programmer since then. +
+
+
+
diff --git a/projects/minecraft-clone.html b/projects/minecraft-clone.html index aeac5b6..db2fb35 100644 --- a/projects/minecraft-clone.html +++ b/projects/minecraft-clone.html @@ -4,32 +4,44 @@ Minecraft Clone - Projects - James T. Martin -
-

Minecraft Clone

+ + James T. Martin + + +
-
-

- In 2014, while still in middle school, I wrote a Minecraft clone using the Unity game engine and C#. - It featured: -

- -

- 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). -

-

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

-
+
+
+
+

Minecraft Clone

+
+

+ In 2014, while still in middle school, + I wrote a Minecraft clone using the Unity game engine and C#. + It featured: +

    +
  • a first-person interactive editable world (duh), +
  • infinite procedural map generation using simplex noise, +
  • and a custom TCP-based multiplayer protocol. +
+

+ 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). +

+ 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. +

+
diff --git a/projects/the-mining-dead.html b/projects/the-mining-dead.html index 53b3b82..301c203 100644 --- a/projects/the-mining-dead.html +++ b/projects/the-mining-dead.html @@ -4,62 +4,71 @@ The Mining Dead - Projects - James T. Martin - +
-

The Mining Dead

+ + James T. Martin + + +
-

- This page is a work-in-progress. -

-

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

+
+
+
+

The Mining Dead

+

This page is a work in progress. +

+ 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. +

-
-

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

-

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

-

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

-
    -
  • The original server was founded by Skuli_Steinulf in beta 1.8.
  • -
  • - The Tekkit Classic server was founded by Skuli. - The server had three worlds (inventories were not shared): +

    + 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. +

    + 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. +

    + 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.

      -
    • The Outlands: The conventional Mining Dead experience.
    • -
    • The Frontier: A zombie apocalyse world with normal terrain generation and no radiation.
    • -
    • Medieval: A standard Tekkit Classic world.
    • +
    • The original server was founded by Skuli_Steinulf in beta 1.8. +
    • + The Tekkit Classic server was founded by Skuli. + The server had three worlds (inventories were not shared): +
        +
      • The Outlands: The conventional Mining Dead experience. +
      • The Frontier: A zombie apocalyse world with normal terrain generation and no radiation. +
      • Medieval: A standard Tekkit Classic world. +
      +
    • A short-lived Tekkit Lite server or something might've been in here? +
    • Skuli had early access to the Technic Platform. He creates a custom modpack for the server. +
    • + 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. +
    • + 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. +
    • + 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.
    -
  • -
  • A short-lived Tekkit Lite server or something might've been in here?
  • -
  • Skuli had early access to the Technic Platform. He creates a custom modpack for the server.
  • -
  • - 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. -
  • -
  • - 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. -
  • -
  • 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.
  • -
      -
+
+
diff --git a/resume/index.html b/resume/index.html index 1c617bc..b14630a 100644 --- a/resume/index.html +++ b/resume/index.html @@ -4,28 +4,33 @@ Resume - James T. Martin's - +
-

Resumes

+ + James T. Martin + +
-
-

- I have different resumes for different jobs: -

- -
- +
+ +
diff --git a/resume/software-developer.html b/resume/software-developer.html index 8075743..7623fc9 100644 --- a/resume/software-developer.html +++ b/resume/software-developer.html @@ -1,110 +1,120 @@ -Software Developer Resume - James T. Martin +James T. Martin, Software Developer + - + - -
-

James T. Martin

-
- A self-taught programmer fond of programming language theory. -
-
- -
- - -
-
-

Experience

- -
+
+
-
-
-

Hazen Robotics Club

-
-
    -
  • Mentored programming at the summer robotics camp
  • -
  • Taught club members to use Java and Git
  • -
  • Collaborated to build robot controller programs for FTC competitions
  • -
-
-
+ +
+ + +
+
+
+

Experience

+
+ +
+
+

Programming Language Design Community

+ onward +
+ +
+ +
+
+

Hazen Robotics Club

+
+
    +
  • Mentored programming at the summer robotics camp +
  • Taught club members to use Java and Git +
  • Collaborated to build robot controller programs for FTC competitions +
+
+
+ +
+
+

Skills

+
    -
  • TLS: Let's Encrypt, SSL Labs, DNS CAA, HSTS deployment
  • -
  • Web: XSS prevention, CSRF prevention, CSP, input validation, SQL injection prevention
  • +
  • Languages: Java 8, Haskell, HTML5/XHTML +
  • Tools: Git, GitHub, continuous integration, bug tracking, unit testing, property testing +
  • Administration: Debian GNU/Linux, Nginx +
  • APIs: REST, JSON, JSON Schema, JSON-LD, HATEOAS +
  • Security: +
      +
    • TLS: Let's Encrypt, SSL Labs, DNS CAA, HSTS deployment +
    • Web: XSS prevention, CSRF prevention, CSP, input validation, SQL injection prevention +
- - -
+ -
-

Education

-
-
-

Hazen High School

- - - to - -
-
    -
  • Recieved OSHA 10 certification.
  • -
  • Member of marching, symphonic, and jazz bands; recieved John Philip Sousa award in 2019.
  • -
-
-
-
-
+
+
+

Education

+
+
+
+

Hazen High School

+ + + to + +
+
    +
  • Recieved OSHA 10 certification. +
  • Member of marching, symphonic, and jazz bands; recieved John Philip Sousa award in 2019. +
+
+
+
+
+ +