Owen Duncan Smith

Last updated: April 2019

3114 Madison St
Alameda, CA  94501
(510) 684-5434
ods@stanfordalumni.org
Web owendsmith.com
LinkedIn ods94065
StackOverflow Owen S.
GitHub ods94065

I'm a senior software developer with broad experience in web and server development, deployment and configuration management, project leadership, technical presentation, and mentoring. I have particular interest in back-end web services and technologies, domain-specific programming languages, and functional programming.

Experience

Back End Engineering Lead, Udacity, Mountain View, CA, 11/13–4/19.
I joined a small, elite team of engineers to help revolutionize the world of online education, and over time helped grow the Engineering organization to over sixty engineers. Much of my work involved guiding and reviewing the work of team members, at first across all back-end systems, later across several core services and our PaaS infrastructure. Projects included:
  • Complete backend support for paid course subscriptions.
  • Build a processing pipeline for course video archives and transcripts of course videos, as well as additional documents that may be downloaded in the classroom.
  • Manage the systems that execute programming quizzes, and completely overhaul the build and deployment pipeline.
  • Build a prototype back-end service in Go for programming quiz evaluation, including both REST and Kafka-based interfaces.
  • Develop and launch a back-end service for the Udacity Connect mobile application.
  • Operationalize a brand-new authentication service.
  • Migrate and synchronize data from our legacy GAE application to our new identity services.
  • Write architecture proposals for converting authentication from a custom JWT-based flow to OpenID Connect, and for merging several authorization efforts into a cohesive, multilayered authorization solution.
  • Build a logging pipeline for our Cloudflare instance to our Elasticsearch cluster, including log archival.
Work focused on core backend functions and PaaS infrastructure, first using Python on the Google App Engine platform, then moving to Go for back-end services and microservices.
Senior Member of Technical Staff, PayPal, San Jose, CA, 10/03–06/13.
I started at PayPal as a nearly entry-level software engineer and concluded as one of the leaders of the engineering and operations organizations. Projects included:
  • Implement an integrated EFT bank web flow into a brand-new China product offering.
  • Implement an email-based notification and approval system for our emergency bug fix release process.
  • Lead the development of the payment system for eBay Express.
  • Redesign the payment platform for eBay Checkout.
  • Jump over to the build team to help port the C++ codebase to a new build management tool built around gmake.
  • Design and execute large-scale code refactoring efforts.
  • Migrate the development organization to a new operating system.
  • Architect the overhaul and standardization of deployment tools and process, first by introducing the use of Puppet for configuration management
Work has involved everything from front-end HTML templates to back-end database layer design and implementation, from user-facing applications to tools and infrastructure. Work on web applications and refactoring done in C++, using largely proprietary libraries and technologies. Work on internal tools done in Ruby, Puppet, Python, bash, and Perl.
Independent Web and Computer Consultant, 2000–2003.
Design and implement a web site for a performing artist using HTML 4.01 and CSS1.
Developer Technical Support Manager, Be, Inc., Menlo Park, CA, 2/00–8/00.
Director of a team of 3-4 engineers, both on and off-site, in support of developers of the first generation of media-savvy Internet appliances. Investigate BeIA support for incoming hardware. Provide development releases of BeIA, and development tools, to customers. Interview and hire team members. Evaluate team members' performance and recommend promotions/ raises.
Developer Technical Support Engineer, Be, Inc., Menlo Park, CA, 6/98–2/00.
Focused effort upon support of audio, MIDI, and application/interface technologies, in C++. Answer technical queries about development in BeOS. Develop sample code and newsletter articles. Design and write code for third parties developing applications and libraries on BeOS. Maintain and develop online developer support database. Develop and present all-day sessions for Be developer conferences.
Product manager, Tanner Research, Inc., Pasadena, CA, 6/96–5/98.
Drive specification and development of a Windows schematic entry tool for ASIC, MCM, and MEMS design. Manage a team of up to 5 developers, and coordinate integration with simulation tools. C++ and MFC were used in the implementation, with Mainwin being used for a port to UNIX.
Systems engineer, Tanner Research, Inc., Pasadena, CA, 10/95–6/96.
Completed development of a DOS and UNIX schematic entry tool for ASIC and MCM design, using Watcom C and the GNU development system.

Education

BA Music (Music, Science, and Technology); Stanford University, Stanford, CA. Coursework included classes in computer science, digital signal processing, audio engineering, psychoacoustics, and computer music composition.

Skills

Programming languages: Go, Python, C, C++, Ruby, Javascript, Haskell, bash, Perl, Common LISP, Java, Matlab, Emacs Lisp, Clojure, Scala, Elm, Objective C.
IaaS: AWS, GCP, Linode.
PaaS: DCOS (Apollo), GAE, Heroku, K8s.
AWS technologies: EC2, S3, IAM, Elastic Beanstalk, ELB, Kinesis, CloudWatch.
Operating systems: Linux (RHEL, Ubuntu, Alpine), OS X, BeOS, Windows.
Technical proficiencies: multi-tier web service design and implementation; PaaS implementation; authentication and authorization (including OAuth 2.0 and OpenID Connect, as well as various forms of RBAC/ABAC/CBA and tokens); REST API design, container management using Docker and Marathon/Mesos; TDD, BDD, CI, and CD; concurrency via threads, processes, microthreads/greenlets/goroutines, and actors; functional and OO programming; configuration/infrastructure management; packaging and deployment; parsing; XML-based data design and transformation; fonts and encodings; audio production software; agile and waterfall project planning and execution.
Internet technologies: Go net/http, Google App Engine, Flask, HTML5, CSS, AngularJS, Node.js, JSON, YAML, XML (incl. SAX and DOM frameworks), XSLT, Django, WSGI, Apache, NGINX, Cloudflare, Okta, ORY Hydra, HTTP 1.1/2.0, TLS, SSH.
Database technologies: PostgreSQL, Google App Engine, Redis, Firebase, MongoDB, Riak, Oracle, and Datomic databases; SQL and Datalog; Django and SQLAlchemy ORM.
Programming tools: VSCode, PyCharm, GNU Emacs; CircleCI, Jenkins, GNU Make, gcc, Rake, Maven, and Jam build tools; Docker and docker-compose; Datadog/statsd metrics and New Relic APM; Logentries, Datadog, and Fluentd/Elasticsearch/Kibana for log aggregation/search; Elasticsearch and GAE Search for document indexing and search; Terraform, Packer, Vagrant, Puppet and Ansible for configuration/infrastructure management; RPM and FPM packaging; testing (Go), RSpec (Ruby), HSpec (Haskell), nose and nose2 (Python), unittest (Python), Test::More (Perl), and Google Test (C++) frameworks; Git/GitHub, Perforce, ClearCase, CVS, and RCS source control; Go pprof and gprof; doxygen and similar documentation frameworks.