~samhh/samhh.com

bb1dae8c3e33631c4ab9a01e112d80eb7146cd9c — Sam A. Horvath-Hunt 2 months ago 8ab7e0e
Formatting
M layouts/_default/baseof.html => layouts/_default/baseof.html +7 -7
@@ 1,12 1,12 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
    {{- partial "head.html" . -}}
  {{- partial "head.html" . -}}

    <body>
        {{- partial "nav.html" . -}}
  <body>
    {{- partial "nav.html" . -}}

        <main>
            {{- block "main" . }}{{- end }}
        </main>
    </body>
    <main>
      {{- block "main" . }}{{- end }}
    </main>
  </body>
</html>

M layouts/blog/single.html => layouts/blog/single.html +9 -9
@@ 1,13 1,13 @@
{{ define "main" }}
    <!-- TODO styling -->
    <!-- TODO this is why main is in the templates... belongs below header really -->
  <!-- TODO styling -->
  <!-- TODO this is why main is in the templates... belongs below header really -->

    <header>
        <h1 class="post-heading">{{ .Title }}</h1>
        <time class="post-date" dateTime="{{ .Date }}">{{ dateFormat "January 02, 2006" .Date }}</time>
    </header>
  <header>
    <h1 class="post-heading">{{ .Title }}</h1>
    <time class="post-date" dateTime="{{ .Date }}">{{ dateFormat "January 02, 2006" .Date }}</time>
  </header>

    <div>
        {{ .Content }}
    </div>
  <div>
    {{ .Content }}
  </div>
{{ end }}

M layouts/index.html => layouts/index.html +10 -10
@@ 1,13 1,13 @@
{{ define "main" }}
    <ol class="post-list">
      {{ range sort (where $.Site.RegularPages "Section" "blog") ".Date" "desc" }}
        <li>
          <time dateTime="{{ .Date }}">{{ dateFormat "January 02, 2006" .Date }}</time>
          <br>
          <a href="/blog/{{ .Slug }}">{{ .Title }}</a>
        </li>
      {{ end }}
    </ol>
  <ol class="post-list">
    {{ range sort (where $.Site.RegularPages "Section" "blog") ".Date" "desc" }}
      <li>
        <time dateTime="{{ .Date }}">{{ dateFormat "January 02, 2006" .Date }}</time>
        <br>
        <a href="/blog/{{ .Slug }}">{{ .Title }}</a>
      </li>
    {{ end }}
  </ol>

    {{- partial "webring.html" . -}}
  {{- partial "webring.html" . -}}
{{ end }}

M layouts/page/resume.html => layouts/page/resume.html +111 -111
@@ 1,130 1,130 @@
{{ define "main" }}
    <p className="resume-intro">
      <strong>Software Engineer</strong>&nbsp;Hi there! I'm a software
      engineer based in London, working remotely, with a passion for pure
      functional programming.
  <p className="resume-intro">
    <strong>Software Engineer</strong>&nbsp;Hi there! I'm a software
    engineer based in London, working remotely, with a passion for pure
    functional programming.
  </p>

  <blockquote class="resume-quote">
    <q>Quality is pride of workmanship.</q> — W. Edwards Deming
  </blockquote>

  <p>
    I've been writing code professionally for around {{ div (sub now.Unix (time (index (sort $.Site.Data.resume.positions "startDate" "asc") 0).startDate).Unix) (mul 60 (mul 60 (mul 24 365))) }} years now. If you'd like
    to see what open source software I work on in my free time, check out my
    software page via the link at the top.
  </p>

  <p>
    In my current position at Adaptavist, in the ScriptRunner Cloud team,
    I've been pioneering a number of frontend and serverless initiatives.
    These range from refactoring everything into strict, functional
    TypeScript, to encouraging us towards better testing practices,
    introducing property-based testing and page-level integration testing.
    A major redesign of a parser core to our business is currently
    planned, to which end I've written a greenlit prototype in Haskell in
    the style of a recursive descent parser.
  </p>

  <section class="resume-section">
    <h1 class="resume-section-heading">Programming</h1>

    <p>
      I care deeply about writing business logic and applications more
      broadly in the safest, most maintainable manner possible. I
      leverage the type system to encode logical invariants and
      eradicate certain classes of bugs. I write testable code and write
      good tests for that code, emphasising quality of tests over
      chasing potentially worse-than-useless coverage targets. Whilst it
      can be taken to an extreme, I do believe's there's truth in the
      idea of "self-documenting code". Where that isn't possible, I
      write concise, helpful documentation, planning for the long-term.
      I use tooling like Git effectively, including leaving a
      semantically meaningful, atomic commit log behind.
    </p>
  </section>

    <blockquote class="resume-quote">
        <q>Quality is pride of workmanship.</q> — W. Edwards Deming
    </blockquote>
  <section class="resume-section">
    <h1 class="resume-section-heading">Web</h1>

    <p>
      I've been writing code professionally for around {{ div (sub now.Unix (time (index (sort $.Site.Data.resume.positions "startDate" "asc") 0).startDate).Unix) (mul 60 (mul 60 (mul 24 365))) }} years now. If you'd like
      to see what open source software I work on in my free time, check out my
      software page via the link at the top.
      My career thus far has been dominated by the web and particularly
      thereof the frontend. Early on in my career I specialised somewhat
      in CSS, though I've since heavily shifted towards programming
      itself so to speak. I've retained that hard-fought understanding
      of CSS. I've been writing and utilising APIs throughout, be they
      more traditional or in the form of microservices. I can
      comfortably interact with the DOM manually but would sooner reach
      for a reactive abstraction.
    </p>
  </section>

  <section class="resume-section">
    <h1 class="resume-section-heading">Open Source</h1>

    <p>
      In my current position at Adaptavist, in the ScriptRunner Cloud team,
      I've been pioneering a number of frontend and serverless initiatives.
      These range from refactoring everything into strict, functional
      TypeScript, to encouraging us towards better testing practices,
      introducing property-based testing and page-level integration testing.
      A major redesign of a parser core to our business is currently
      planned, to which end I've written a greenlit prototype in Haskell in
      the style of a recursive descent parser.
      I am ideologically tied to and have great faith in the open source
      community. To this end I contribute patches where I can, maintain
      a modest collection of my own software, and maintain some AUR
      packages. This is an area I intend to further grow into.
    </p>
  </section>

  <section class="resume-section">
    <h1 class="resume-section-heading">Learning & Teaching</h1>

    <section class="resume-section">
        <h1 class="resume-section-heading">Programming</h1>
    <p>
      I spend a significant proportion of my free time learning, and I
      enjoy sharing that knowledge with others; I routinely pair with
      colleagues and help them through challenges. This is a very large
      part of what drives me on a daily basis.
    </p>
  </section>

        <p>
            I care deeply about writing business logic and applications more
            broadly in the safest, most maintainable manner possible. I
            leverage the type system to encode logical invariants and
            eradicate certain classes of bugs. I write testable code and write
            good tests for that code, emphasising quality of tests over
            chasing potentially worse-than-useless coverage targets. Whilst it
            can be taken to an extreme, I do believe's there's truth in the
            idea of "self-documenting code". Where that isn't possible, I
            write concise, helpful documentation, planning for the long-term.
            I use tooling like Git effectively, including leaving a
            semantically meaningful, atomic commit log behind.
        </p>
    </section>
  <section class="resume-section">
    <h1 class="resume-section-heading">Workplace</h1>

    <section class="resume-section">
        <h1 class="resume-section-heading">Web</h1>
    <p>
      I've been working permanently remotely since 2018. The
      flexibility suits me given my self-driven nature.
    </p>

    <p>
      I've built my own computer and run Arch Linux on it. This is the
      machine on which I do all my work, professional and personal,
      and everything else; there is a meaningful productivity gain for
      me here both in the power of the hardware and the
      configurability of the software.
    </p>

    <p>
              My career thus far has been dominated by the web and particularly
              thereof the frontend. Early on in my career I specialised somewhat
              in CSS, though I've since heavily shifted towards programming
              itself so to speak. I've retained that hard-fought understanding
              of CSS. I've been writing and utilising APIs throughout, be they
              more traditional or in the form of microservices. I can
              comfortably interact with the DOM manually but would sooner reach
              for a reactive abstraction.
            </p>
    </section>

    <section class="resume-section">
        <h1 class="resume-section-heading">Open Source</h1>
      Sometimes my cat likes to join me when I'm programming. He is an
      invaluable source of inspiration and unintended keystrokes.
    </p>
  </section>

  <section class="resume-section">
    <h1 class="resume-section-heading">Keywords</h1>

    <p>
              I am ideologically tied to and have great faith in the open source
              community. To this end I contribute patches where I can, maintain
              a modest collection of my own software, and maintain some AUR
              packages. This is an area I intend to further grow into.
            </p>
</section>

    <section class="resume-section">
        <h1 class="resume-section-heading">Learning & Teaching</h1>
      I appreciate you may be in a hurry and want to quickly parse
      this page for a particular keyword, likely a technology. Here
      follows a non-exhaustive list in no particular order of a bunch
      of things I know at least a reasonable amount about:
    </p>

    <p>
              I spend a significant proportion of my free time learning, and I
              enjoy sharing that knowledge with others; I routinely pair with
              colleagues and help them through challenges. This is a very large
              part of what drives me on a daily basis.
            </p>
</section>

    <section class="resume-section">
        <h1 class="resume-section-heading">Workplace</h1>
        <p>
                I've been working permanently remotely since 2018. The
                flexibility suits me given my self-driven nature.
              </p>

              <p>
                I've built my own computer and run Arch Linux on it. This is the
                machine on which I do all my work, professional and personal,
                and everything else; there is a meaningful productivity gain for
                me here both in the power of the hardware and the
                configurability of the software.
              </p>

              <p>
                Sometimes my cat likes to join me when I'm programming. He is an
                invaluable source of inspiration and unintended keystrokes.
              </p>

</section>

    <section class="resume-section">
        <h1 class="resume-section-heading">Keywords</h1>

 <p>
                I appreciate you may be in a hurry and want to quickly parse
                this page for a particular keyword, likely a technology. Here
                follows a non-exhaustive list in no particular order of a bunch
                of things I know at least a reasonable amount about:
              </p>

              <p>
                Keywords: <em>{{ delimit $.Site.Data.resume.keywords ", " }}</em>
              </p>
</section>

    <section class="resume-section">
        <h1 class="resume-section-heading">Jobs</h1>

        {{ range sort $.Site.Data.resume.positions "startDate" "desc" }}
            {{- partial "experience.html" . -}}
        {{ end }}

                      <p>References available upon request.</p>
</section>
      Keywords: <em>{{ delimit $.Site.Data.resume.keywords ", " }}</em>
    </p>
  </section>

  <section class="resume-section">
    <h1 class="resume-section-heading">Jobs</h1>

    {{ range sort $.Site.Data.resume.positions "startDate" "desc" }}
      {{- partial "experience.html" . -}}
    {{ end }}

    <p>References available upon request.</p>
  </section>
{{ end }}

M layouts/page/software.html => layouts/page/software.html +18 -18
@@ 1,22 1,22 @@
{{ define "main" }}
    <p>
      All of my open source software is currently hosted either on
      <a href="https://sr.ht/~samhh/" rel="noopener noreferrer">sourcehut</a>
      or
      <a href="https://github.com/samhh" rel="noopener noreferrer">GitHub</a>.
    </p>
  <p>
    All of my open source software is currently hosted either on
    <a href="https://sr.ht/~samhh/" rel="noopener noreferrer">sourcehut</a>
    or
    <a href="https://github.com/samhh" rel="noopener noreferrer">GitHub</a>.
  </p>

    <ul class="software-list">
        {{ range sort $.Site.Data.software.projects "name" }}
            {{- partial "software-item.html" . -}}
        {{ end }}
    </ul>
  <ul class="software-list">
    {{ range sort $.Site.Data.software.projects "name" }}
      {{- partial "software-item.html" . -}}
    {{ end }}
  </ul>

    <p>
      I also maintain some
      <a
        href="https://aur.archlinux.org/packages/?O=0&SeB=m&K=samhh&outdated=&SB=n&SO=a&PP=50&do_Search=Go"
        rel="noopener referrer"
      >AUR packages</a>.
    </p>
  <p>
    I also maintain some
    <a
      href="https://aur.archlinux.org/packages/?O=0&SeB=m&K=samhh&outdated=&SB=n&SO=a&PP=50&do_Search=Go"
      rel="noopener referrer"
    >AUR packages</a>.
  </p>
{{ end }}

M layouts/partials/experience.html => layouts/partials/experience.html +9 -9
@@ 1,15 1,15 @@
<h2 class="experience">
    <a href={{ .website }} rel="noopener noreferrer">{{ .company }}</a>
  <a href={{ .website }} rel="noopener noreferrer">{{ .company }}</a>

    <span class="experience-dates">
        {{ dateFormat "January 2006" .startDate }} -
  <span class="experience-dates">
    {{ dateFormat "January 2006" .startDate }} -

        {{ if eq .endDate "Present" }}
            Present
        {{ else }}
            {{ dateFormat "January 2006" .endDate }}
        {{ end }}
    </span>
    {{ if eq .endDate "Present" }}
      Present
    {{ else }}
      {{ dateFormat "January 2006" .endDate }}
    {{ end }}
  </span>
</h2>

<p>{{ .desc }}</p>

M layouts/partials/head.html => layouts/partials/head.html +11 -11
@@ 1,13 1,13 @@
<head>
    <meta charset="utf-8">
    <title>{{ .Title }} | {{ .Site.Title }}</title>
    <meta name="description" content="{{ .Description }}">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="/style.css">
    <link rel="icon" type="image/png" href="/favicon.png">
    <link rel="sitemap" type="application/xml" href="/sitemap.xml">
    <link rel="alternate" type="application/rss+xml" title="RSS feed" href="/rss.xml">
    <meta property="og:type" content="website">
    <meta property="og:title" content="{{ .Title }} | {{ .Site.Title }}">
    <meta property="og:description" content="{{ .Description }}">
  <meta charset="utf-8">
  <title>{{ .Title }} | {{ .Site.Title }}</title>
  <meta name="description" content="{{ .Description }}">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="/style.css">
  <link rel="icon" type="image/png" href="/favicon.png">
  <link rel="sitemap" type="application/xml" href="/sitemap.xml">
  <link rel="alternate" type="application/rss+xml" title="RSS feed" href="/rss.xml">
  <meta property="og:type" content="website">
  <meta property="og:title" content="{{ .Title }} | {{ .Site.Title }}">
  <meta property="og:description" content="{{ .Description }}">
</head>

M layouts/partials/nav.html => layouts/partials/nav.html +35 -36
@@ 1,44 1,43 @@
<nav class="nav">
    <h1 class="nav-name">
        <strong>Sam</strong>
        <span>A. Horvath-Hunt</span>
    </h1>
  <h1 class="nav-name">
    <strong>Sam</strong>
    <span>A. Horvath-Hunt</span>
  </h1>

    <ul class="nav-contact">
        <li>London, UK</li>
  <ul class="nav-contact">
    <li>London, UK</li>

        <li>
            <a href="mailto:hello@samhh.com">Email</a>
        </li>
    <li>
      <a href="mailto:hello@samhh.com">Email</a>
    </li>

        <li>
            <a href="/publickey.txt">PGP</a>
        </li>
    <li>
      <a href="/publickey.txt">PGP</a>
    </li>

        <li>
            {{ if eq .LinkTitle "blog" }}
                <strong>Blog</strong>
            {{ else }}
                <a href="/">Blog</a>
            {{ end }}
            &nbsp;(<a href="/rss.xml">RSS</a>)
        </li>
    <li>
      {{ if eq .LinkTitle "blog" }}
        <strong>Blog</strong>
      {{ else }}
        <a href="/">Blog</a>
      {{ end }}
      &nbsp;(<a href="/rss.xml">RSS</a>)
    </li>

        <li>
            {{ if eq .LinkTitle "software" }}
                <strong>Software</strong>
            {{ else }}
                <a href="/software">Software</a>
            {{ end }}
        </li>
    <li>
      {{ if eq .LinkTitle "software" }}
        <strong>Software</strong>
      {{ else }}
        <a href="/software">Software</a>
      {{ end }}
    </li>

        <li>
            {{ if eq .LinkTitle "resume" }}
                <strong>Résumé</strong>
            {{ else }}
                <a href="/resume">Résumé</a>
            {{ end }}
        </li>
    </ul>
    <li>
      {{ if eq .LinkTitle "resume" }}
        <strong>Résumé</strong>
      {{ else }}
        <a href="/resume">Résumé</a>
      {{ end }}
    </li>
  </ul>
</nav>


M layouts/partials/software-item.html => layouts/partials/software-item.html +6 -6
@@ 1,9 1,9 @@
<div class="software-item">
    <h2 class="software-title">
        <a href="{{ .href }}">
            {{ .name }}
        </a>
    </h2>
  <h2 class="software-title">
    <a href="{{ .href }}">
      {{ .name }}
    </a>
  </h2>

    <p class="software-desc">{{ .summary }}</p>
  <p class="software-desc">{{ .summary }}</p>
</div>