Me holding my cat, Pepper

Passionate, diligent, and detailed. In my eleven years of programming, I have spent my time expanding my knowledge in both frontend and backend technologies. Much like Pepper the cat, I am a leader, and I am constantly looking for opportunities to advise my collegues. Recently, I've been writing compilers and build tools.

Lead Software Engineer

Capital One

February 2023 - Present

  • TBD

Senior Software Engineer

Oriental Rug Gallery

June 2015 - Present

  • Created a backend Kotlin application to facilitate automatic inventory updating across seven retailers, including eBay, Amazon, Wayfair, Houzz, and Overstock. Revenue increased 37.82% year after launch, a net increase of $563,000.
  • Installed, configured, maintained, and wrote custom addons for an e-commerce website with over 9,000 products utilizing Magento 2, MariaDB, Elasticsearch, Redis, and Varnish, generating $122,000 in sales for 2021.
  • Utilized Docker and Kubernetes to containerize apps easing updates, providing greater isolation and protection from vulnerabilities.
  • Created product exporters to add new inventory to online retailers and update details and pricing for existing items.

Full Stack Engineer

Excel

October 2021 - February 2023

  • Created a static site generator and compiler allowing creation of site widgets through a schema that is then transformed into valid TypeScript code, compiled through Vite, and embedded into 20+ sites.
  • Implemented automated site QA process with Playwright as part of CI/CD pipelines across 25+ websites, performing end to end testing of all site functionality on every deployment as well as on a routine basis.
  • Developed extensive rework of automated CI/CD pipelines for site deployments, greatly improving site stability.
  • Heavily improved Core Web Vitals and other related metrics for numerous sites with self-developed tooling for speed analysis, allowing sites to pass and exceed Google's Core Web Vitals assessment.

DSL Builder (Kotlin)

DSL Builder is a compile-time dependency that automatically generates domain-specific languages based on annotations attached to Kotlin classes and properties. It utilizes Google's Kotlin Symbol Processing API to hook into the Kotlin compiler to process program source code. Square's KotlinPoet library is used to generate builders in Kotlin code for annotated classes. Using DSL Builder reduced boilerplate code by 95% in a dependent project through removal of repetitive DSL code. On every commit to the main branch of the GitHub project, builds are automatically published to Maven Central.

@GenerateBuilder
class Person(val firstName: String, val lastName: String, val pet: Pet)

@GenerateBuilder
open class Pet(val name: String, val breed: String)

fun main() {
    val person = PersonBuilder().apply {
        firstName = "Nicholas"
        lastName = "Nassar"

        pet {
            name = "Pepper"
            breed = "Domestic Shorthair"
        }
    }.build()

    println("Hi, I'm ${person.firstName} ${person.lastName}!")
    println("I have a cat called ${person.pet.name}!")
}

Rusty Lox (Rust)

An implementation of the tree-walk interpreter from the Crafting Interpreters book in Rust. The goal is to finish up the interpreter and end up with an implementation of the interpreter that matches one to one in functionality with the Java version written in the book and passes all tests.

// Still working on control flow
// so nothing too crazy here yet :)
var a = "global a";
{
  var a = "outer a";
  var b = "outer b";
  {
    print a;
    print b;
  }
  print a;
}
// Output:
// outer a
// outer b
// outer a

nicholasnassar.com (TypeScript)

The site you are currently on, built with Astro, Solid, TailwindCSS, and TypeScript. Astro is great for static sites. Its island architecture and partial hydration allow for this site to be mostly static, save for some interactive components, like the top menu on mobile. This results in a small amount of JS being shipped to the client and perfect Lighthouse scores, while still being an incredible developer experience.

import type { Component } from "solid-js";
import { isMobileMenuOpen, setMobileMenuOpen } from "./MobileMenuState";

export const MobileMenu: Component<MobileMenuProps> = (props) => {
  const classes = () => (isMobileMenuOpen() ? "sm:hidden" : "hidden");
  return (
    <div class={classes()} id="mobile-menu">
      {props.children}
    </div>
  );
};