Stu Kabakoff

Software engineer with 20 years experience.
stukabakoff@gmail.com

Skills

This is only a selection of the tools and APIs that I have worked with in my 20 year career, I have opted to leave off many technologies that I consider to be less generally relevant or obsolete.

TechnologyExperienceNotes
TypeScript★★★★★Type safety is great.
DOM, SVG, CSS★★★★★Including modern APIs and styles.
Algorithms★★★★Also a necessary part of code reviews.
Front End
React★★★★★Love it, but open to other options.
Electron★★★★★Great for the desktop and reusability.
Tailwind★★★★Excited to use it again, and for the future it brings.
CSS Modules★★★★★A great way to include CSS.
CSS Preprocessors★★★★★Excellent solutions for their place and time.
Styled Components★★★★The API is friendly, with tradeoffs.
VSCode Extensions★★★Authoring extensions, not using them.
React Hook Form★★★★★So fast, so easy.
SlateJS★★★★★Great low level rich text editor.
Browser Data APIs
Workers★★★★★Including dedicated, shared, and service workers
IndexedDB★★★★★Best used with libraries such as Dexie.
WebSockets★★★★★Great for two way communication.
Fetch★★★★★A simple, but a growing API.
WebRTC★★★★More practical for media than data.
File System API★★★★★Very excited to use local files in a browser.
Visualization
Canvas2D★★★★★Particularly excited for OffscreenCanvas in workers.
Paper.js★★★★★Unmatched for vector math, ok for rendering.
GraphViz★★★★★A good layout engine.
Eclipse Layout Kernel★★★★★The best modern tool for automated layouts.
Mermaid.js★★★★Good for Markdown.
Bezier Curves★★★★★A core part of all visualization.
Rough.js★★★★★Deep in the depths at Eraser.
Highcharts★★★★★Still a great library.
MapBox★★★★★High speed with a great API.
Color Spaces★★★★★oklab, oklch, etc. Great for aesthetics.
Build / Dev Tools
Node.js★★★★★Also excited by Deno and Bun
Next.js★★★★★Love it, but curious about other options.
NPM / Yarn★★★★★Very good in their modern incarnations.
Webpack★★★★★Best when part of a boilerplate (Next, Vite. etc)
Devcontainers★★★★★An exciting new way of using containers in dev.
Vite★★★Very easy to get set up.
Monorepo tools★★★★★The best dev experience I have found.
Data
Firebase★★★★A great e2e solution for realtime and documents.
Postgres★★Great as more than just a relational database.
MySQL/MariaDB★★Another good solution.
GraphQL★★★★Amazing when used with type generators.
OpenAPI★★★★★Awesome for API type generation.
Devops / Infra
Docker★★★★Indespensible.
GitHub Actions★★★★Very easy to get going, very effective.
Azure★★From what I know, this is what I would choose.
AWS★★Picking the right tools is the hardest part.
Google Cloud★★★★More modern than AWS, less than Azure.

Open Source Libraries

ScrollMonitor

A library that provides events when elements enter and exit the viewport. It's significantly faster and simpler than IntersectionObserver.

Dexie Encrypted

Transparently add encryption to an IndexedDB + Dexie database.

React Multi Page Form

A toolset for managing multiple page forms.

Technical Writing

Managing the Complexity of Multiple Page Forms

This article explores effective strategies for designing flexible, maintainable multi-page forms using graph and sequence models using tools like React Multi Page Form.

Navigating the Landscape of Application Hosting Options

Today, we're faced with lambdas, managed container services, virtual machines, Kubernetes, and more. This guide helps you find the most appropriate solutions.

Load Balancing and API Gateways

Navigating traffic management for your app can be confusing. Do you need an API gateway or a load balancer? The answer is often both.


Work History

Founding Engineer @ Eraser Labs, Inc.

February 2022 - September 2024

Eraser is a tool for whiteboarding and documentation, the essence of it is a document editor next to a canvas, with integrations going both ways. It has diagram as code features similar to Mermaid. I played a part in nearly every part of the app.

Algorithms

  • Created O(n) algorithmic guarantees for z-indexing, ensuring text and bound arrows are over their nodes, and that groups and figures are layered correctly.
  • Implemented an O(n) algorithm to combine overlapping text markups (bold, color, etc.) to enable syntax highlighting.
  • Devised an algorithm to divide the whitespace on the canvas into a graph, allowing arrow routing using Dijkstra's algorithm.
  • Implemented canvas-based keyboard navigation with weights for distance and direction in O(n) time.
  • Implemented an O(n) algorithm to consistently update pending changesets during collaborative edits to a document.
  • Algorithmically straightened lines and reduced crossings in output from GraphViz.

Features and Code

  • Developed advanced “diagram as code” features with sophisticated visual layouts for cloud architectures, databases, flowcharts, and sequence diagrams.
  • Resolved complex issues related to memory usage, text rendering, and canvas performance, resulting in smoother, sharper user experiences.
  • Created AI prompts, frameworks, and workflows for generating diagrams from text, streamlining development and user workflows.
  • Developed a VSCode extension to render diagrams from code, putting our product where developers already are.
  • Implemented a language server and architecture enabling GUI-based modifications to diagram as code, making edits much easier and more natural.

Ops and Tools

  • Optimized high-level architecture to reduce costs and latency, bringing 50th percentile latency down 80%.
  • Introduced end-to-end testing and visual snapshot testing.

Principal Engineer in Provider Services @ Zocdoc, Inc

August 2021 - February 2022

I loved the culture and technology at Zocdoc, but left because of Eraser's innovative product vision.

  • Mentored a dozen engineers through direct interaction, presentations, writing and reviewing tech docs.
  • Led the migration from a microrepo to a monorepo architecture, improving code maintainability and deployment efficiency.
  • Wrote git scripts to preserve GitHub PR links in commit messages to the monorepo.
  • Created a streamlined onboarding process for doctors joining Zocdoc.

Tech Lead / IC5 in 911 Dispatch Software @ Mark43, Inc

November 2018 - July 2021

Mark43 develops software for police departments worldwide, including real-time 911 dispatch applications used in dispatch centers and police vehicles.

Algorithms

  • Improved speed and GC pauses by reimplementing many loops, going from O(n log n) to O(n).

Code and Team

  • Mentored a team of 12 front-end developers, with a focus on professional growth and enhancing code quality.
  • Championed, designed, and implemented a new data layer for real-time updates using WebSockets, Web Workers, IndexedDB, and Broadcast Channel, reducing network load by over 70% while maintaining backward compatibility.
  • Developed new APIs for data access, ensuring data consistency and reliability in real-time operations.
  • Authored comprehensive documentation, enabling other engineers to independently learn and modify the system.

Front End Lead @ CompStak, Inc

September 2014 - October 2018

Algorithms

  • Created and implemented an O(n) algorithm for determining the density of points visible on a map.
  • Created an O(n) algorithm for bucketing data points on a graph.
  • Created a data layer that would find and load chunks of uncached data for virtualized lists.

Code and Team

  • Led the development of the flagship React/Redux application, overseeing architecture and feature implementation.
  • Engineered systems capable of handling tens of thousands of data points on maps, tables, and graphs with smooth animations.
  • Created embeddable widgets for third-party websites using shared components from flagship apps.
  • Built front-end build processes, testing frameworks, and continuous integration systems.
  • Reviewed all front-end code and frequently served as functional team lead for development projects.

UI Engineer @ MLB Advanced Media

April 2012 - February 2014

  • Rewrote the front page of MLB.com for 2013 using Knockout.js and other modern-at-the time tools.
  • Developed a promise-based system for loading and utilizing game data, allowing multiple widgets to watch the same games consistently.
  • Migrated the front end from a proprietary module system to CommonJS, standardizing and simplifying the codebase.
  • Introduced package management to the front end.
  • Started a large migration to git from CVS.
  • Implemented push button deployments using Jenkins, reducing down time and errors.
  • Introduced unit testing and other quality assurance methods.

Applications Developer for the NOOK - Barnes & Noble

April 2010 - April 2012

  • Developed the front-end interfaces for NOOK Study, NOOK for Windows, and NOOK for Mac using an pre-Electron WebKit shell and custom plugins to display DRM-protected book content.

Digital Archivist @ Condé Nast Publications

October 2007 - March 2010

  • I created websites to allow easy distribution of Condé Nast assets to domestic and international publications, improved the experience of The Condé Nast Store with a JavaScript interface, created workflows and tools for quality assurance on XML files containing Condé Nast's entire past catalog.

Education

2005 Syracuse University - Bachelors of Industrial Design