~tcarrio/tom.carrio.dev

2a241269c0a2571c13efefda237d206e799e0b85 — Tom Carrio 10 months ago 4c735d7
feat: update personal site
5 files changed, 233 insertions(+), 290 deletions(-)

M .build.yml
M assets/scss/index.scss
M index.html
D package-lock.json
A yarn.lock
M .build.yml => .build.yml +7 -6
@@ 3,19 3,20 @@ packages:
  - libsass
  - sassc
  - nodejs
  - npm
  - yarn
sources:
  - https://git.sr.ht/~tcarrio/tom.carrio.dev
  - https://git.sr.ht/~tcarrio/build-helpers
environment:
  deploy_dir: .
  project_dir: tom.carrio.dev
  trunk: master
secrets:
  - f34d2d66-6293-4072-bead-7478eb611c60
tasks:
  - install_netlify: |
      npm i netlify-cli
      ./node_modules/.bin/netlify --telemetry-disable
      yarn add netlify-cli
      yarn netlify --telemetry-disable
  - sass_build: |
      cd $project_dir
      mkdir -p assets/css


@@ 23,9 24,9 @@ tasks:
  - deploy_netlify: |
      source ./build-helpers/all.sh
      cd $project_dir
      if compare_branch master
      if compare_branch $trunk
      then
        ../node_modules/.bin/netlify deploy -d $deploy_dir --prod
        yarn netlify deploy -d $deploy_dir --prod
      else
        ../node_modules/.bin/netlify deploy -d $deploy_dir
        yarn netlify deploy -d $deploy_dir
      fi
\ No newline at end of file

M assets/scss/index.scss => assets/scss/index.scss +27 -3
@@ 178,6 178,12 @@ header {
    fill: none;
}

section > * {
    max-width: $reg_max_width;
    min-width: $reg_max_width;
    text-align: left;
}

section#introduction {
    background: linear-gradient($gradient_tilt2, rgb(20, 20, 20), rgb(35, 35, 42));
    color: white;


@@ 190,7 196,7 @@ section#introduction {
    font-size: 1.225em;

    &::before {
        content: '[guest@tom.carrio.dev ~] cat /tmp/web_intro.txt';
        content: '$: ssh web@tom.carrio.dev:/about-me';

        max-width: $reg_max_width;
        width: 100%;


@@ 218,6 224,7 @@ section#introduction {
    &>code {
        font-weight: bold;
        color: lightblue;
        align-self: left;
    }

}


@@ 281,6 288,13 @@ section#contributions {
                background-color: darkslateblue;
                padding: 0px 0.5em;

                display: flex;
                flex-direction: row;

                & > * {
                    margin-right: 0.5em;
                }

                &.go {
                    background-color: $go_blue;
                    color: white;


@@ 310,8 324,11 @@ section#contributions {
                }
            }

            &>.expand {
                display: none;
            & .expand {
                display: flex;
                flex-direction: row;
                align-items: center;
                padding: 0 0.5em;
            }

            // description styling


@@ 392,6 409,13 @@ section#technologies {
        height: 96px;
    }


    section > * {
        max-width: $mob_max_width;
        min-width: $mob_max_width;
        text-align: left;
    }

    section#introduction,
    section#technologies {
        font-size: 36px;

M index.html => index.html +75 -156
@@ 32,162 32,81 @@
    </header>
    <div id="content">
      <section id="introduction">
        <code>::Hello, World::</code>
        <p>
          Architecting, designing, and implementing software systems is a strong
          professional and personal interest of mine. Whether I'm working on
          cloud, containers, systems; I love to dive into the technical deep-end
          of various areas of the tech space.
        </p>
        <code>$: ls -alt</code>
        <code>
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;232&nbsp;Jan&nbsp;&nbsp;1&nbsp;&nbsp;1970&nbsp;&nbsp;intro.md<br />
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;372&nbsp;Sep&nbsp;17&nbsp;&nbsp;2013&nbsp;&nbsp;sysadmin.md<br />
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;470&nbsp;Feb&nbsp;13&nbsp;&nbsp;2014&nbsp;&nbsp;automation.md<br />
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;367&nbsp;May&nbsp;22&nbsp;&nbsp;2017&nbsp;&nbsp;ally.md<br />
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;662&nbsp;May&nbsp;12&nbsp;&nbsp;2019&nbsp;&nbsp;dynatrace.md<br />
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;797&nbsp;Feb&nbsp;2&nbsp;&nbsp;2022&nbsp;&nbsp;skillshare.md<br />
          -rw-r--r--&nbsp;&nbsp;1&nbsp;web&nbsp;&nbsp;web&nbsp;&nbsp;&nbsp;&nbsp;197&nbsp;Apr&nbsp;29&nbsp;&nbsp;2023&nbsp;&nbsp;outro.md
        </code>

        <code> $: cat ./intro.md</code>
        <p>
          My experience engineering solutions spans the full stack: from system
          and database administration, to microservice development, to dev-ops
          and continuous delivery, to single-page applications, to container
          orchestration, to mobile apps, to automated infrastructure management.
          My focus lately has been on end-to-end holistic solutions engineering,
          and embracing every facet of the tech stack.
        </p>

        <code>::System and Database Administration::</code>
        <p>
          Through my experience as a system and database administrator, I found
          an area I truly loved. From 2013 I worked with database systems
          including Oracle DB and MySQL, and maintained virtual machines across
          multiple server racks with VMWare ESXi to provision Windows Server and
          RHEL machines. There were various areas of my role that I found could
          prove more effectively managed by developing automated maintenance
          strategies; I touched down on automated backups and log monitoring for
          internal services as my first step towards development. This is where
          my interests in software engineering really grew.
        </p>
        <p>
          While I maintained my position as a system adminstrator and database
          administrator, I sought out and implemented automation tooling around
          common tasks to reduce toil. I worked on internal services that would
          allow for easier work on the intranet, be it servers, hardware
          devices, and more. These include, but are not limited to, Python
          management services and backends, Active Directory hooks in Go, and
          web clients in Javascript. The road unfolded and I enrolled in
          Computer Science at Oakland University to continue my journey.
          Hi there, I'm a tech aficionado with a knack for architecting,
          designing, and implementing software systems. Whether it's cloud,
          containers, or systems - I love diving into the deep end of all things
          tech!
        </p>

        <code>::Open Source::</code>
        <code> $: cat ./sysadmin.md</code>
        <p>
          I have long been a lover of the open source mantra and free software
          technologies such as Linux, GNU, and Git. Prior to my work as a system
          and database administrator, I dug into Linux for my personal devices.
          Experimenting with various tools and technologies is a long-time hobby
          of mine, and I tried different server operating systems such as
          CentOS, Debian, and Ubuntu. I started off with Linux on my old shabby
          laptop with Fedora, and tried out a number of distributions over the
          years. By the way, I run Arch.
          As a system and database administrator, I found my true passion
          working with database systems, virtual machines, and automation
          tooling. In addition to working with Oracle DB and MySQL, I developed
          automated maintenance strategies like backups and log monitoring for
          internal services, which sparked my interest in software engineering.
        </p>

        <code>::Computer Science::</code>
        <code> $: cat ./automation.md</code>
        <p>
          Through-out my schooling I have studied computer theory, software
          engineering, networking, operating systems, programming languages, and
          more. The curriculum alone was never really enough, and I spent time
          outside of school learning about various technologies like message
          queues, distributed systems, and containerization technologies like
          Docker. The premise of a kernel-level feature like cgroups providing
          strong mechanisms for isolated process environments was fascinating to
          me, and I found another interest then: DevOps. Having already worked
          for years as a system administrator and understanding the areas where
          automating functionality was hugely beneficial, I focused projects on
          more software around these practices. I contributed to open source
          software around version source control, and built out complete DevOps
          pipeline solutions implemented with distributed containerized systems.
          I provided a similar solution at my work to deliver a more up-to-date
          service for our development team.
          I continued my work as a system administrator, created automation
          tooling to reduce toil, and implemented internal services to simplify
          work on the intranet. This included developing Python management
          services and backends, Active Directory hooks in Go, and web clients
          in JavaScript. My passion for software engineering grew, and I decided
          to enroll in Computer Science at Oakland University to continue my
          journey.
        </p>

        <code>::Software Engineering::</code>
        <code> $: cat ./ally.md</code>
        <p>
          Eventually I moved into a software engineering role, and joined Ally
          Financial in 2017. During my time there I worked on several projects.
          My first work was a project undergoing a migration from mainframe,
          where we envisioned a complete re-architecture of our central
          mainframe program into a massive series of microservices, batch
          operations, message queues, and COTS services. I designed security
          software for compliance with the Sarbanes-Oxley Act, developed data
          pipelines with DataStage, and engineered various utility services to
          assist our business analysts with requirements. In 2018 I later joined
          on a legacy application, working with J2EE and Struts with
          deployements to mainframe. I worked on quarterly releases and helped
          provide insight into automation technology and future steps for our
          digital transformation roadmap. Later on in 2018, I moved on to a
          project deploying to the OpenShift containerization platform,
          developing services that provided massive parallel operations and data
          processing. I worked with Spring Boot microservices with Redis as a
          cache for MapReduce operations. I also encorporated log monitoring
          with Splunk and AppDynamics for application performance monitoring. I
          was requested to join another team end-of-year 2018 and began work on
          my last project at Ally. I worked on Spring Boot microservices with an
          Angular front-end. I worked across the entire stack, developing
          Jenkins pipelines for continuous integration and delivery,
          implementing back-end services in Java, engineered our service
          authentication for our Docker containers, developed Helm templates for
          our OpenShift deployments, and architecting our performance-first
          lazily-loaded Angular front-end.
          As my interests grew, I moved into a software engineering role at Ally
          Financial where I worked on several projects. I re-architected
          mainframe programs and designed security software for compliance all
          while working with a ton of different technology like J2EE, Struts,
          Redis, Spring Boot, Angular, Jenkins, Docker, and OpenShift.
        </p>

        <code>::Full Stack::</code>
        <code> $: cat ./dynatrace.md</code>
        <p>
          I eventually left Ally in 2019 to join Dynatrace, a company at the
          forefront of distributed tracing and application performance
          monitoring. Today, their solution provides users actionable insights
          into their production environments across mainframes, back-end,
          front-end, mobile apps, websites... My initial role at the company was
          on the Davis Assistant team, which provides a virtual assistant that
          interfaces with customers via a web application, voice integrations
          with Google Assistant and Alexa, and multi-user integrations with
          Slack and Microsoft Teams. My work there has included several projects
          I have been fond of, such as:
          I eventually joined Dynatrace working on the Davis Assistant project.
          I worked on some pretty awesome integrations with Dynatrace APM,
          supporting use cases through organizational communication platforms
          like Slack and Microsoft Teams, voice assistants like Amazon Alexa and
          Google Assistant, and even browser integrations that automated product
          navigation as you talked to your device. I was also involved in
          re-architecting their notification pipeline and creating an automation
          around our natural language processing tool which was released as open
          source code, called Dialogflow-as-Code.
        </p>

        <ul>
          <li>
            Re-architecting the notification pipeline to provide reactice,
            robust, and resilient notification deliveries for handling various
            error scenarios
          </li>
          <li>
            Engineering an extensive pipeline to automatically ensure code
            complies with our unit tests, builds and minimizes bundles for
            efficient service deployments
          </li>
          <li>
            Implementing the Microsoft Teams third-party integration for direct
            and multi-user messaging with our natural language processing
            back-end and Teams native tabs with React
          </li>
          <li>
            Created the Dialogflow-as-Code project which provides declarative
            management of Dialogflow resources on the Google Cloud Platform to
            maximize our teams velocity of NLP enhancements, provide static type
            safety to our internal NLP resources, and automate deployments
            through environments in my continuous delivery pipeline
          </li>
        </ul>

        <code>::Teamwork::</code>
        <code> $: cat ./skillshare.md</code>
        <p>
          I love to dive deep in whatever area I work in, whether I am designing
          Docker containers or writing web applications, but I always provide
          feedback and help whenever my peers are in need. I also serve as my
          teams Scrum Master to faciliate meetings, resolve task estimates, and
          ensure the team grows together while working to enhancing our sprint
          velocity and stability.
          I later went on to join Skillshare, where I have served as a Staff
          Backend Engineer on the Platform team and played a key role in
          fostering collaboration between SRE and Platform engineers. I
          facilitated bug fixes, performance improvements, and also functioned
          as an Engineering Lead in close collaboration with the Foundation
          Engineering VP, developing quarterly OKRs and participating in weekly
          leadership meetings. In addition to my Lead role, I also worked on
          projects improving platform observability, SEO, and IAM security. I
          was passionate about building useful developer tooling, which was
          widely utilized across various languages, greatly improving the
          developer experience across the organization.
        </p>

        <code>::So, Me::</code>
        <code> $: cat ./outro.md</code>
        <p>
          I am extremely passionate in engineering solutions around complex
          problems, automating redundant operations, writing code, bringing
          users great experiences, reducing toil, and implementing practices
          that keeps my phone from buzzing in the late hours of the night.
          Needless to say, my passions lie in complex problems, reducing toil,
          and bringing users great experiences. Plus, I'm a pro at facilitating
          Scrum meetings and ensuring team growth.
        </p>
      </section>
      <section id="contributions">


@@ 353,23 272,23 @@
        <div class="title">Technologies and Experience</div>
        <div>
          <p class="topic">Containers and Orchestration</p>
          <p class="entries">OpenShift, Docker, ECS, Compose, Kubernetes</p>
          <p class="entries">OpenShift, Docker, ECS, Helm, Compose, Kubernetes</p>
        </div>
        <div>
          <p class="topic">Programming Languages</p>
          <p class="entries">TypeScript, Java, Groovy, Go, Python</p>
          <p class="entries">TypeScript, PHP, Go, Python, Java, Groovy</p>
        </div>
        <div>
          <p class="topic">Web Development</p>
          <p class="entries">Angular, Sass, Webpack, CSS3, HTML5</p>
          <p class="entries">React, NextJS, Angular, Sass, Webpack, CSS3, HTML5</p>
        </div>
        <div>
          <p class="topic">Service Development</p>
          <p class="entries">Node.js, NestJS, Spring, REST, GraphQL</p>
          <p class="entries">Node.js, NestJS, PHP, Spring, REST, GraphQL</p>
        </div>
        <div>
          <p class="topic">Databases</p>
          <p class="entries">PostgreSQL, Oracle DB, MySQL, MongoDB</p>
          <p class="entries">PostgreSQL, MySQL, DynamoDB, MongoDB, Oracle DB</p>
        </div>
        <div>
          <p class="topic">Infrastructure and Networking</p>


@@ 377,39 296,39 @@
        </div>
        <div>
          <p class="topic">Message Queues, PubSub, and Stream Processing</p>
          <p class="entries">IBM MQ, SQS, Redis, Kafka</p>
          <p class="entries">Kinesis, AWS Event Bus, Redis, IBM MQ, SQS, Kafka</p>
        </div>
        <div>
          <p class="topic">Software Development Lifecycle and Source Control</p>
          <p class="entries">Scrum, Agile, Bitbucket, Git, GitHub, SVN</p>
          <p class="entries">Scrum, Agile, Git, GitHub, Bitbucket</p>
        </div>
        <div>
          <p class="topic">Unit Testing</p>
          <p class="entries">Jest, Mockito, JUnit, Mocha</p>
          <p class="entries">Jest, PHPUnit, Mockito, JUnit, Mocha</p>
        </div>
        <div>
          <p class="topic">Integration Testing</p>
          <p class="entries">Selenium, Cypress, Gherkin</p>
          <p class="entries">Playwright, Cypress, Selenium, Gherkin</p>
        </div>
        <div>
          <p class="topic">
            Continuous Integration, Delivery, Accessibility, and Security
          </p>
          <p class="entries">
            Jenkins, Blackduck, Drone, SonarQube, Lighthouse
            Codefresh, Helm, Jenkins, Blackduck, Drone, SonarQube, Lighthouse
          </p>
        </div>
        <div>
          <p class="topic">Observability and Monitoring</p>
          <p class="entries">Dynatrace, OpenTelemetry, Prometheus, Zipkin</p>
          <p class="entries">Datadog, OpenTelemetry, StatsD, Dynatrace, Prometheus, Zipkin</p>
        </div>
        <div>
          <p class="topic">Logging</p>
          <p class="entries">Splunk, Log4j, Pino, CloudWatch</p>
          <p class="entries">Monolog, Splunk, Log4j, Pino, CloudWatch</p>
        </div>
        <div>
          <p class="topic">Serverless</p>
          <p class="entries">Lambda, Serverless</p>
          <p class="entries">Lambda, Serverless, Bref</p>
        </div>
        <div>
          <p class="topic">Data Processing</p>


@@ 448,7 367,7 @@
            <p>
              :: This website is open source and hosted on
              <a href="https://sourcehut.org">Sourcehut</a> at
              <a href="https://tom.carrio.dev">~tcarrio/tom.carrio.dev</a>.
              <a href="https://git.sr.ht/~tcarrio/tom.carrio.dev">~tcarrio/tom.carrio.dev</a>.
            </p>
          </div>
        </div>

D package-lock.json => package-lock.json +0 -125
@@ 1,125 0,0 @@
{
  "requires": true,
  "lockfileVersion": 1,
  "dependencies": {
    "anymatch": {
      "version": "3.1.1",
      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
      "requires": {
        "normalize-path": "^3.0.0",
        "picomatch": "^2.0.4"
      }
    },
    "binary-extensions": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ=="
    },
    "braces": {
      "version": "3.0.2",
      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
      "requires": {
        "fill-range": "^7.0.1"
      }
    },
    "chokidar": {
      "version": "3.4.2",
      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
      "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
      "requires": {
        "anymatch": "~3.1.1",
        "braces": "~3.0.2",
        "fsevents": "~2.1.2",
        "glob-parent": "~5.1.0",
        "is-binary-path": "~2.1.0",
        "is-glob": "~4.0.1",
        "normalize-path": "~3.0.0",
        "readdirp": "~3.4.0"
      }
    },
    "fill-range": {
      "version": "7.0.1",
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
      "requires": {
        "to-regex-range": "^5.0.1"
      }
    },
    "fsevents": {
      "version": "2.1.3",
      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
      "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
      "optional": true
    },
    "glob-parent": {
      "version": "5.1.1",
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
      "requires": {
        "is-glob": "^4.0.1"
      }
    },
    "is-binary-path": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
      "requires": {
        "binary-extensions": "^2.0.0"
      }
    },
    "is-extglob": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
    },
    "is-glob": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
      "requires": {
        "is-extglob": "^2.1.1"
      }
    },
    "is-number": {
      "version": "7.0.0",
      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
    },
    "normalize-path": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
    },
    "picomatch": {
      "version": "2.2.2",
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
    },
    "readdirp": {
      "version": "3.4.0",
      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
      "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
      "requires": {
        "picomatch": "^2.2.1"
      }
    },
    "sass": {
      "version": "1.26.11",
      "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.11.tgz",
      "integrity": "sha512-W1l/+vjGjIamsJ6OnTe0K37U2DBO/dgsv2Z4c89XQ8ZOO6l/VwkqwLSqoYzJeJs6CLuGSTRWc91GbQFL3lvrvw==",
      "requires": {
        "chokidar": ">=2.0.0 <4.0.0"
      }
    },
    "to-regex-range": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
      "requires": {
        "is-number": "^7.0.0"
      }
    }
  }
}

A yarn.lock => yarn.lock +124 -0
@@ 0,0 1,124 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


anymatch@~3.1.2:
  version "3.1.3"
  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
  dependencies:
    normalize-path "^3.0.0"
    picomatch "^2.0.4"

binary-extensions@^2.0.0:
  version "2.2.0"
  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
  integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==

braces@~3.0.2:
  version "3.0.2"
  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
  dependencies:
    fill-range "^7.0.1"

"chokidar@>=3.0.0 <4.0.0":
  version "3.5.3"
  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
  integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
  dependencies:
    anymatch "~3.1.2"
    braces "~3.0.2"
    glob-parent "~5.1.2"
    is-binary-path "~2.1.0"
    is-glob "~4.0.1"
    normalize-path "~3.0.0"
    readdirp "~3.6.0"
  optionalDependencies:
    fsevents "~2.3.2"

fill-range@^7.0.1:
  version "7.0.1"
  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
  dependencies:
    to-regex-range "^5.0.1"

fsevents@~2.3.2:
  version "2.3.2"
  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
  integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==

glob-parent@~5.1.2:
  version "5.1.2"
  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
  dependencies:
    is-glob "^4.0.1"

immutable@^4.0.0:
  version "4.3.0"
  resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be"
  integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==

is-binary-path@~2.1.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
  dependencies:
    binary-extensions "^2.0.0"

is-extglob@^2.1.1:
  version "2.1.1"
  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==

is-glob@^4.0.1, is-glob@~4.0.1:
  version "4.0.3"
  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
  dependencies:
    is-extglob "^2.1.1"

is-number@^7.0.0:
  version "7.0.0"
  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==

normalize-path@^3.0.0, normalize-path@~3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==

picomatch@^2.0.4, picomatch@^2.2.1:
  version "2.3.1"
  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==

readdirp@~3.6.0:
  version "3.6.0"
  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
  dependencies:
    picomatch "^2.2.1"

sass@^1.26.11:
  version "1.62.1"
  resolved "https://registry.yarnpkg.com/sass/-/sass-1.62.1.tgz#caa8d6bf098935bc92fc73fa169fb3790cacd029"
  integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==
  dependencies:
    chokidar ">=3.0.0 <4.0.0"
    immutable "^4.0.0"
    source-map-js ">=0.6.2 <2.0.0"

"source-map-js@>=0.6.2 <2.0.0":
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
  integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==

to-regex-range@^5.0.1:
  version "5.0.1"
  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
  dependencies:
    is-number "^7.0.0"