<commit_before><!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title><NAME>’s Resume</title>
    <style>
body {
  font-family: sans-serif;
  font-size: 1em;
  line-height: 1.5em;
  margin: 0;
  padding: 3em;
}
    </style>
  </head>
  <body>
    <article>
      <header>
        <h1><NAME></h1>
        <address>
          <a href="https://troubled.pro">troubled.pro</a><br>
          <a href="mailto:<EMAIL>"><EMAIL></a><br>
          German Citizen, Software Engineer
        </address>
        <p>
        As an application developer, my objective is to build meaningful applications for end users, while enhancing software reliability and maintainability to create resilient distributed systems—from a file somewhere in a data center to the pixel on the glass in the user’s hand. I have a high standard of quality, in coding and writing, and believe that developing software is communication, in the end it’s about language.
        </p>

        <blockquote>Everything boils down to words.</blockquote>

        <p>I can lead and follow. As a leader I continuously ask myself how I might serve my followers. As a follower I’m likewise driven by a desire to be of use.</p>

        <h2>Resume Contents</h2>
        <ul>
          <li><a href="#work">Work History</a></li>
          <li><a href="#education">Education</a></li>
          <li><a href="#oss">Selected Open Source Contributions</a></li>
          <li><a href="#writing">Selected Articles</a></li>
          <li><a href="#other">Other Interests and Activities</a></li>
        </ul>
      </header>

      <section id="work">
        <h2>Work History</h2>
        <ul>
          <li>
            2015 - 2019 Developer/Founder, Walsrode
            <p>
            I wrote <a href="https://itunes.apple.com/us/app/podest/id794983364">Podest</a>, a modest podcast client for iOS, focusing on performance and efficiency. Multilevel caching is hard to implement, but it makes searching and browsing a snappy and unintrusive experience.
            </p>

            <p>Shipping an app of this complexity solo has been challenging—it taught me to prioritize.
            Picking up <a href="https://swift.org">Swift</a> along the way, a language in its infancy when I started, brought some growing pains, but overall sounds worse than it was. Switching back and forth between Swift and JavaScript has been proving itself fruitful.
            </p>
            <p>
            Remote caching is realized in <a href="https://nodejs.org">Node.js</a>, deployed to Joyent <a href="https://www.joyent.com/smartos">SmartOS</a> instances. These backends are fronted by <a href="https://haproxy.com">HAProxy</a>, running on <a href="https://alpinelinux.org">Alpine Linux</a>, with <a href="http://feurix.org/projects/hatop/">HATop</a> for monitoring. All APIs are designed for good CDN caching ratios, I use <a href="https://www.fastly.com">Fastly</a>.
            </p>
            <p>
            <a href="https://github.com/michaelnisi/podest/tree/master/Podest/sync">Sync</a> between devices is implemented using <a href="https://developer.apple.com/documentation/cloudkit">CloudKit</a>, maybe my favorite Apple API.
            </p>
            <p>
            💯% <a href="https://github.com/michaelnisi/podest">open source</a>
            </p>
          </li>
          <li>
            2008 - 2012 Developer, <a href="https://www.cmcmarkets.com">CMC Markets</a>, London/Hamburg/Vienna

            <p>
            Starting with a distributed team of five, for CMC, we brought their spread betting platform to the web. With the team growing to around 50 people, we built a rich, modular Adobe Flash application. I was responsible for the product library and the trading ticket of the Flash client. This integral role allowed me to catalyse and harmonize team communication between groups.
            </p>
          </li>

          <li>2002 - 2008 Consulting, <a href="https://www.drid.de">DRID</a>, Bassier, Bergmann &amp; Kindler; Kuborgh, and more

            <p>
            In the heyday of Adobe Flash, we developed product sites, games, and banners, selling everything between packet soup to luxory cars. Memorable is the 2006 FIFA World Cup in Germany, for which I built a stylable betting game with DRID, which was sold to multiple clients.
            </p>

          </li>

          <li>2000 - 2001 Designer, <a href="https://www.publicispixelpark.de">Pixelpark</a>, Hamburg</li>
          <li>1996 - 1999 Graphic Designer/Founder, i &amp; i visual communication, Hamburg</li>
        </ul>
      </section>

      <section id="education">
        <h2>Education</h2>
        Not exactly a role model regarding formal education, being an art school dropout, I’ve learned most things I know autodidactly by practice. I wrote my first line of JavaScript in 1996. Learning never ends.
        <ul>
          <li>1994 - 1996 Alsterdamm – School of Visual Arts, Hamburg</li>
        </ul>
      </section>

      <section id="oss">
        <h2>Selected Open Source Contributions</h2>
        <ul>
          <li>
            <a href="https://github.com/michaelnisi/skull">Skull</a> Swift SQLite – iOS
            <p>
              Apple uses SQLite in most applications on macOS and iOS. Being the defacto standard database on Apple devices, there are many ways to use it, from CoreData to SQLite.swift. But for me, these dependencies are often too heavy. For that reason I wrote Skull, just one thin layer of Swift, barely covering the C library. I like simple things. Software development is difficult enough.
            </p>
          </li>

          <li><a href="https://github.com/michaelnisi/feeder">feeder</a> Parse RSS and Atom feeds – Erlang
            <p>Learn you some Erlang for great good!</p>
          </li>

          <li>
            <a href="https://github.com/kean/Nuke">Nuke</a> A powerful image loading and caching system
            <p>
            Nuke is the high performance image loader, written by <NAME>, I use in Podest for quick loading of arbitrary images over HTTP while scrolling. I want to point out this impenetrable <a href="https://github.com/kean/Nuke/issues/174">race condition</a>, we managed to <a href="https://github.com/kean/Nuke/pull/190">resolve</a> sometime last year.
            </p>
          </li>

          <li>
            <a href="https://github.com/restify/node-restify">restify</a> The future of Node.js REST development
            <p>dear to my heart</p>
          </li>

          <li>
            <a href="https://github.com/npm/cli">npm</a> A package manager for JavaScript
            <p>roots</p>
          </li>
        </ul>
        <p>Please visit my <a href="https://github.com/michaelnisi">GitHub profile</a> for more.</p>
      </section>

      <section id="writing">
        <h2>Selected Articles</h2>
        <ul>
          <li><a href="https://troubled.pro/2019/02/graphql.html"> GraphQL with Apollo iOS</a>
            <p>
              GraphQL encodes a uniform language, type system, and philosophy.
            </p>
          </li>
          <li><a href="https://troubled.pro/2018/08/cloudkit.html"> Synchronizing With CloudKit</a>
            <p>
              A conceptual overview of using Apple’s CloudKit framework to synchronize data across devices running your app.
            </p>
          </li>
        </ul>
      </section>

      <section id="other">
        <h2>Other Interests and Activities</h2>
        <p>
        The older I get, the more of a fitness nut I become—standing desk and all. I love surfing, swimming, and running. I eat well, like to read actual books, and take walks.
        </p><commit_msg>Wrap this first draft<commit_after><!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title><NAME>’s Resume</title>
    <style>
body {
  font-family: sans-serif;
  font-size: 1em;
  line-height: 1.5em;
  margin: 0;
  padding: 3em;
}
    </style>
  </head>
  <body>
    <article>
      <header>
        <h1><NAME></h1>
        <address>
          <a href="https://troubled.pro">troubled.pro</a><br>
          <a href="mailto:<EMAIL>"><EMAIL></a><br>
          German Citizen, Software Engineer
        </address>
        <p>
        As an application developer, my objective is to build meaningful applications for end users, while enhancing software reliability and maintainability to create resilient distributed systems—from a file somewhere in a data center to the pixel on the glass in the user’s hand. I have a high standard of quality, in coding and writing, and believe that developing software is communication, in the end it’s about language.
        </p>

        <blockquote>Everything boils down to words.</blockquote>

        <p>I can lead and follow. As a leader I continuously ask myself how I might serve my followers. As a follower I’m likewise driven by a desire to be of use.</p>

        <h2>Resume Contents</h2>
        <ul>
          <li><a href="#work">Work History</a></li>
          <li><a href="#education">Education</a></li>
          <li><a href="#oss">Selected Open Source Contributions</a></li>
          <li><a href="#writing">Selected Articles</a></li>
          <li><a href="#other">Other Interests and Activities</a></li>
        </ul>
      </header>

      <section id="work">
        <h2>Work History</h2>
        <ul>
          <li>
            2015 - 2019 Developer/Founder, Walsrode
            <p>
            I wrote <a href="https://itunes.apple.com/us/app/podest/id794983364">Podest</a>, a modest podcast client for iOS, focusing on performance and efficiency. Multilevel caching is hard to implement, but it makes searching and browsing a snappy and unintrusive experience.
            </p>

            <p>Shipping an app of this complexity solo has been challenging—it taught me to prioritize.
            Picking up <a href="https://swift.org">Swift</a> along the way, a language in its infancy when I started, brought some growing pains, but overall sounds worse than it was. Switching back and forth between Swift and JavaScript has been proving itself fruitful.
            </p>
            <p>
            Remote caching is realized in <a href="https://nodejs.org">Node.js</a>, deployed to Joyent <a href="https://www.joyent.com/smartos">SmartOS</a> instances. These backends are fronted by <a href="https://haproxy.com">HAProxy</a>, running on <a href="https://alpinelinux.org">Alpine Linux</a>, with <a href="http://feurix.org/projects/hatop/">HATop</a> for monitoring. All APIs are designed for good CDN caching ratios, I use <a href="https://www.fastly.com">Fastly</a>.
            </p>
            <p>
            <a href="https://github.com/michaelnisi/podest/tree/master/Podest/sync">Sync</a> between devices is implemented using <a href="https://developer.apple.com/documentation/cloudkit">CloudKit</a>, maybe my favorite Apple API.
            </p>
            <p>
            💯% <a href="https://github.com/michaelnisi/podest">open source</a>
            </p>
          </li>
          <li>
            2008 - 2012 Developer, <a href="https://www.cmcmarkets.com">CMC Markets</a>, London/Hamburg/Vienna

            <p>
            Starting with a distributed team of five, for CMC, we brought their spread betting platform to the web. With the team growing to around 50 people, we built a rich, modular Adobe Flash application. I was responsible for the product library and the trading ticket of the Flash client. This integral role allowed me to catalyse and harmonize team communication between groups.
            </p>
          </li>

          <li>2002 - 2008 Consulting, <a href="https://www.drid.de">DRID</a>, Bassier, Bergmann &amp; Kindler; Kuborgh, and more

            <p>
            In the heyday of Adobe Flash, we developed product sites, games, and banners, selling everything between packet soup to luxory cars. Memorable is the 2006 FIFA World Cup in Germany, for which I built a stylable betting game with DRID, which was sold to multiple clients.
            </p>

          </li>

          <li>2000 - 2001 Designer, <a href="https://www.publicispixelpark.de">Pixelpark</a>, Hamburg</li>
          <li>1996 - 1999 Graphic Designer/Founder, i &amp; i visual communication, Hamburg</li>
        </ul>
      </section>

      <section id="education">
        <h2>Education</h2>
        Not exactly a role model regarding formal education, being an art school dropout, I’ve learned most things I know autodidactly by practice. I wrote my first line of JavaScript in 1996. Learning never ends.
        <ul>
          <li>1994 - 1996 Alsterdamm – School of Visual Arts, Hamburg</li>
        </ul>
      </section>

      <section id="oss">
        <h2>Selected Open Source Contributions</h2>
        <ul>
          <li>
            <a href="https://github.com/michaelnisi/skull">Skull</a> Swift SQLite – iOS
            <p>
              Apple uses SQLite in most applications on macOS and iOS. Being the defacto standard database on Apple devices, there are many ways to use it, from CoreData to SQLite.swift. But for me, these dependencies are often too heavy. For that reason I wrote Skull, just one thin layer of Swift, barely covering the C library. I like simple things. Software development is difficult enough.
            </p>
          </li>

          <li><a href="https://github.com/michaelnisi/feeder">feeder</a> Parse RSS and Atom feeds – Erlang
            <p>Having written pickup, the streaming parser for Node I’m using with Podest, I wanted a comparison and wrote feeder, which became relatively successful, for such a niche use case, in the Elixir community. I love Erlang and the memory characteristics of the BEAM are so much better.</p>
          </li>

          <li>
            <a href="https://github.com/kean/Nuke">Nuke</a> A powerful image loading and caching system
            <p>
            Nuke is the high performance image loader, written by <NAME>, I use in Podest for quick loading of arbitrary images over HTTP while scrolling. I want to point out this impenetrable <a href="https://github.com/kean/Nuke/issues/174">race condition</a>, we managed to <a href="https://github.com/kean/Nuke/pull/190">resolve</a> sometime last year.
            </p>
          </li>

          <li>
            <a href="https://github.com/restify/node-restify">restify</a> The future of Node.js REST development
            <p>Not quite the <a href="https://github.com/fastify/fastify">future</a> of REST development, but still dear to my heart. I’ve learned a lot about HTTP by reading <NAME>’s code. I’m hoping to find time to follow through with this <a href="https://github.com/restify/clients/pull/198">PR</a>, enabling better streams support for restify clients.</p>
          </li>

        </ul>
        <p>Please visit my <a href="https://github.com/michaelnisi">GitHub profile</a> for more.</p>
      </section>

      <section id="writing">
        <h2>Selected Articles</h2>
        <ul>
          <li><a href="https://troubled.pro/2019/02/graphql.html"> GraphQL with Apollo iOS</a>
            <p>
              GraphQL encodes a uniform language, type system, and philosophy.
            </p>
          </li>
          <li><a href="https://troubled.pro/2018/08/cloudkit.html"> Synchronizing With CloudKit</a>
            <p>
              A conceptual overview of using Apple’s CloudKit framework to synchronize data across devices running your app.
            </p>
          </li>
        </ul>
      </section>

      <section id="other">
        <h2>Other Interests and Activities</h2>
        <p>
        The older I get, the more of a fitness nut I become—standing desk and all. I love surfing, swimming, and running. I eat well, like to read actual books, and take walks.
        </p>
{'fraction_non_alphanumeric': 0.11446087725951207, 'fraction_numerical': 0.013462267728479332, 'mean_word_length': 2.468434896975011, 'pattern_counts': {'":': 0, '<': 384, '<?xml version=': 0, '>': 384, 'https://': 49, 'lorem ipsum': 0, 'www.': 10, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2447258', 'n_tokens_mistral': 4750, 'n_tokens_neox': 4403, 'n_words': 1685}