Shane Friedman

Staff Software Engineer at

Introduction

I have been at the New York Times since January, 2019, and I have been the tech lead for the Oak, the Times' collaborative rich text editor, since January, 2020. You can learn more about Oak in the excellent blog post my teammates wrote for Times Open.

In the past, I've been lucky enough to work on MegsRadio.fm (see MegsRadio is Dead, Long Live MegsRadio for some more info), Amazon Music, and YouTube Music. Recently I've focused mostly on fullstack web technologies, like Typescript, React, Redux, ProseMirror, and Next.js. I enjoy working with product managers, UX/UI designers, and clients to make useful and beautiful products that solve real problems in elegant ways.

Sometimes I give talks and write blog posts; you can find them at smoores.dev.

Current Work

While I've been at the Times, I've had opportunities to work on a wide array of different projects. Here are a few of my favorites:

Oak

Oak is a collaborative rich text editor, built with Typescript, ProseMirror, React, Redux, Firestore, Kubernetes and more. Working on Oak, I've:

  • Led the development of a RESTful backend API for Oak with Node.js
  • Led the migration to Typescript
  • Led the development of an open source library, @nytimes/react-prosemirror, to integrate React and ProseMirror
  • Led several major feature implementations, such as global spellcheck powered by Tansa, collaboratively editable metadata fields, and so much more!
  • Reimplemented our deployment pipeline, bringing our deployment times from 25 minutes to around 10, and our pull request validation times from around 14 minutes to around 4.

Javascript Standards Committe

While at the Times, I've been a part of our Javascript + Web Community of Practice, working to develop cross-company standards for developing Javascript and Typescript applications.

  • Wrote several documents proposing and then implementing a Javascript Code Review Team, for more junior engineers (or those new to Javascript) to get more structured support from more experienced Javascript developers.
  • Authored several documents establishing standards for tooling and configuration for Javascript projects.
  • Built sample applications to further demonstrate and document best practices for Node.js and client-side Javascript development.

Pando

I designed and prototyped a fully featured suite of libraries for enabling any application at the Times to support collaborative rich text editing. This is still in early development, but has become the centerpiece for our long-term strategy to refresh our content publishing technology stack at the Times.

Open Source

@nytimes/react-prosemirror

github.com/nytimes/react-prosemirror

A fully featured library for safely integrating ProseMirror and React. This library provides a set of React contexts and hooks for consuming them that ensure safe access to the EditorView from React components, as well as supporting building ProseMirror node views as React components.

Open Devcontainer

gitlab.com/smoores/open-devcontainer

Open Devcontainer is an open source, spec-compliant implementation of Visual Studio Code's Development Container toolkit. It aims to fully implement the devcontainer.json specification, as well as providing additional developer tooling that the VS Code Remote - Containers extension provides, such as SSH and GPG forwarding and automatic dotfiles installation.

Ode

gitlab.com/smoores/ode

Ode is a self-hosted collaborative rich document editor. It's based on Parse Platform, an open source, self-hosted "Complete Application Stack," and Prosemirror, a rich text editor toolkit.

Past Experience

YouTube Music

July 2017 - January 2019

Software Engineer

Front end Sofware Engineer on the YouTube Music Curation Platform. Part of a small team focused on building specialized content management systems for the YouTube music curators to manually edit music metadata and curate playlists and shelves in the music and main apps.

Working on multiple stacks. Primarily using Typescript, Polymer 1 and 2, and Redux, but also some work in Javascript (using the Google Closure type system), Java, and Python.

Amazon Music

June 2016 - June 2017

Software Development Engineer

SDE on the Music Stations Tagging Tech Team. Our team owned services and tools used by the Applied Sciences team to integrate and improve content-based audio classification models for genre tagging of music.

Formal Education

Cornell University

August 2012 - January 2016

Bachelor's Degree, Computer Science

Majored in Computer Science, minoring in Computing in the Arts. Focused heavily on cross-domain knowledge of advancing computer systems to optimize human-computer experience through graphics, audio, etc.

  • Member of the Cornell Sport Tae Kwon Do team for three years
  • Co-Host of Scientifically Speaking, Cornell's educational science talk show.
  • Sound Engineer for Electric Buffalo Records, Cornell's for-students-by-students record label.

Volunteer Work

TEALSK12

September 2018 - June 2019

Volunteer Teacher

I volunteered 3 times a week as a Computer Science teacher at a Brooklyn high school. Along with 3 other volunteers, I was responsible for adapting daily lesson plans from the curriculum, grading assignments and leading class discussions.

Tompkins SPCA

August 2019 - February 2020

Dog Walker and Canine Companion

I volunteered in the dog wing at the local animal shelter for 2.5 hours, once a week. I provide entertainment, comfort, training, and exercise for dogs, and help match families with dogs for adoption.

Cayuga's Watchers

May 2013 - October 2020

Board of Directors Secretary

Voting member of the Board of Directors for the student-run non-profit organization Cayuga's Watchers. Additionally responsible for taking minutes, participating in Internal Operations Committee meetings, and having regular interactions with Executive Board officers.

Cayuga's Watchers is a non-profit organization dedicated to mitigating the harms of high-risk drinking, including but not limited to alcohol poisoning, sexual violence, and property damage. I have previously served as President, VP of Recruitment, VP of Scheduling, and Web Director.