Résumé
TL;DR
Python, AWS, open source, conference and meetup organizing and speaking.
Abbreviated PDF downloadable here.
Summary
My favorite language is Python, and I generally try and default to it as my primary tool. Over the years I’ve mostly used it to write web applications and backend services, so I’m pretty familiar with framework-less architectures and Django, as well as a variety of other packages powering the Python ecosystem.
The projects I’ve worked on for the past few years have largely been deployed on AWS, giving me experience with Terraform, AWS Lambda, ECS, DynamoDB, RDS, SQS, EventBridge, API Gateway, and Serverless Framework.
In addition to the above, I’ve been effective with TypeScript (and thus JavaScript) relatively recently, and PHP and Ruby some years back. As needed, I’ve written my fair share of HTML and CSS as well, along with Bash and SQL. All this I’ve managed using Git and the UNIX command-line for years.
Somewhere in my distant past lie Bootstrap, jQuery, Backbone, Marionette, WordPress, Zend Framework, CodeIgniter, and who knows what else.
Aside from my use of the above at work, I also maintain a few of my own open source projects and occasionally contribute to others’.
Adding to technical work, I’m fairly embedded in the Python community, having organized a conference of my own, being a regular meetup organizer, and attending other conferences and meetups frequently. I’ve spoken at both as well.
Work
Senior Software Engineer, Reach Security, 1/24–present
Some v. cool stuff, obvs.
Software Engineer/Squad Lead, Instil, 12/20–8/23
- First non-founding engineering hire.
- Championed best practices around testing and code quality.
- Utilized a selection of AWS services: Lambda, Step Functions, DynamoDB, EventBridge, S3, SES, CloudFormation. Managed infrastructure with CloudFormation stored inside Serverless Framework configuration files.
- Major engineering projects:
- Bulk Imports v2 — Customer facing tool for importing data from a wide variety of CSVs, be they generated by common tools or even humans. The system allows mapping of columns in an arbitrary format to internal properties, and supports creating and updating of discrete records and relationship between them.
- Audit Log — Convention based mechanism for logging of destructive operations (i.e., record creations, changes, and deletions) in the system. Services can opt in by setting a few simple parameters and an asynchronous event driven process takes care of the rest.
- Feature Flags — System for managing feature flags inside the application, which can be set as off, on for everyone, or on for a subset of users. Flags are treated as data, so they can be toggled without code changes.
- Lifecycle Boards — Kanban board system for constituent development, presenting actively managed constituents in fully manageable columns on an arbitrary number of boards.
- Constituent Exports — Designed and built the the process for exporting constituent data, setting the stage for implementing the same for contributions and eventually other data categories.
- Task Management — Customer requested to-do list implementation in the application supporting handy references to other data points—such as constituents—and reminders.
- Squad Lead tenure:
- Six months (1/23–6/23) as a part-time engineer and part-time project manager for one of the two squads.
- Worked closely with the product team on planning resourcing for squad initiatives.
- Led a major project from the technical standpoint during the same time.
- Took on urgent, unplanned work to enable the rest of the team to stay focused.
Lead Software Engineer, sweetgreen, 2/19–10/20
- Introduced official team standards, implemented as a repository of documents with PRs-merged-by-a-simple-majority as the process for changing them. Standards primarily consisted of the definition of “done”, code style guidelines, infrastructure naming and tagging conventions, and suggested tooling. The resulting standardization made it easier to communicate feedback and onboard new team members.
- Participated in the Technical Design Document review process with other most senior technical individual contributors at the company, authoring and reviewing a multitude of project proposals.
- Unofficially mentored several teammates, particularly on all things Python and Git, but also general software engineering.
- Built all systems in AWS, primarily relying on AWS Lambda, ECS, RDS, DynamoDB, and SQS. Managed all infrastructure with Terraform and Serverless.
- Significant projects (heavily involved in ideation, proposal, design, building, testing, documentation, launch, and ongoing maintenance thereof):
- sgForecast — A system of services which inserts results from a machine learning model run into on-demand generated Smartsheet spreadsheets, validates user changes to said data in real-time, fetches the updates, and inserts them into a web application via Selenium. The result informs decision making across the entire restaurant fleet on a daily basis.
- Outpost Integrations V1 — A system of services in charge of delivering critical outpost order information to the outpost team, restaurants, and courier partners with expediency and hundreds of times per day, via API integrations and email. The system enabled the scaling of the outpost business by a factor of nearly a hundred over the course of a year.
- Outpost Batcher — An event-driven service taking the learnings from the aforementioned Outpost Integrations V1 to create a source of truth for outpost-specific data, intended to serve primarily as a data source for Outpost Integrations V2 and designed to scale up to hundreds of thousands of outposts.
- Outpost Integrations V2 — A completely rearchitected, redesigned, and reimplemented successor to Outpost Integrations V1, responsible for API and email based communication with the outpost team, restaurants, and courier partners, built to support scaling up to hundreds of thousands of outposts.
- Internal CLI tool — A CLI tool enabling users to avoid repeating cumbersome commands related to development and deployment of projects. Abstracts tasks such as running the linter, type checker, tests, docstring checker, code formatter, and deployment scripts locally, as well as running ECS tasks in AWS by delegating to
aws-cli
.
Senior Software Engineer, friendbuy, 9/17–2/19
- Implemented a number of small and medium changes to the main Flask/SQLAlchemy platform.
- Played a major role in a full rewrite of the platform, using TypeScript, Node, AWS Lambda, DynamoDB, Kinesis, Apex, Terraform, and other technologies.
- Participated in architecture and code design discussions, code reviews, and backlog grooming.
- Designed, implemented, and tested major features:
- Internal Logger — Logging package importable by all our services that enables them to log to a central database table, with the logs also published on Slack.
- Dynamic Tags — Comprehensive set of utilities for template rendering, primarily for use with emails.
- Email Delivery Status Tracking — Service for handling of AWS SES email delivery status notifications, crucial to ensuring the robustness of a vital part of the system.
- Added swaths of missing tests to core services.
- Implemented numerous simple CRUD endpoints for API completeness.
- Significantly improved the internal API testing tool built as a curl wrapper and added an interactive installer for it.
Senior Engineer, SimpleLegal, 6/15–7/17
- First non-founding hire.
- Implemented multiple complex modules within SimpleLegal’s Django apps:
- Approval Workflow — Intake rule management system which allows the user to create complex rules that determine how incoming data is handled—specifically to whom it’s assigned.
- Matter Status — Framework for assigning statuses to matters and thus affecting matter behavior throughout the site.
- simpleGPG — AWS Lambda function used as an internal microservice to encrypt/decrypt data via GNUPG.
- Budgets — Comprehensive module for creation and management of budgets based on a variety of attributes across a multitude of objects.
- LEDES validation framework — Library of utility functions for validation of LEDES files.
- Made numerous small changes to backend and frontend portions of the sites, as well as their infrastructure.
- Implemented easily repeatable development environments, initially with Vagrant and Salt, and afterwards using Docker.
- Merged four distinct repositories making up two applications into one monorepo, rewriting history to change file paths and developing a new deployment script in the process.
- Participated in code reviews both as a reviewer and reviewee.
- Interviewed a number of engineering job candidates.
Software Developer, BLITZ Digital Studios, 6/13–5/15
- Tech lead on multiple projects of varying scopes.
- Designed and/or implemented website features including data models, mobile detection, deployment scripts, development environment setups, and others.
- Worked extensively with PHP (Zend Framework, Zend Framework 2, WordPress) and Python (Django), and a frontend stack consisting of HTML (Foundation), CSS (SASS), JavaScript (Backbone + Marionette).
- Provided ongoing maintenance and support for various projects, some for over a year.
- Projects:
- Major role:
- Minor role:
- Primrose Schools
- Kaiser Permanente Thrive and Viva Bien
Projects
- mdut: Markdown URL tag generator, available as a CLI tool and Python library.
- sus: In the name of utter simplicity, scripted generation of a static site comprising http redirects for use as a URL shortener.
- Autohook: Simple Git hook framework, consisting of one shell script and a naming convention that drives its functionality.
- Parsenvy: Environment variable parsing library, focused on providing a minimal API.
- Keysort: Helper library for sorting lists of dictionaries by key value.
- Starminder: Web service built using Flask, SQLAlchemy, github3.py, and AWS SES to send users periodic reminders of their starred GitHub projects.
- pep20.org: Small static site dedicated to my favorite PEP.
- GHT.vim: Vim plugin for opening GitHub’s issue and PR templates in a buffer, for easy copy/paste into the GitHub web UI.
- SendOtterLove.com (decommissioned): Web application built on Django, Stripe API, and Twilio API which took payment from the sender and sent adorable otter pictures and puns to the recipient.
Community
Chair, PyBeach 2020
- Chaired the first general Python conference in Los Angeles, supported by a group of community volunteers and the Python Software Foundation.
Organizer, SoCal Python, 12/17–present
- Organized a number of SoCal Python meetups over the years as part of a group of core organizers, both as the primary organizer and in a supporting role.
- Collaborated with Write the Docs Los Angeles and PyLadies Los Angeles on social events for the overlapping communities.
Talks
Adafruit Circuit Playground Express as an “On Air” Light
- PyOhio 2023, Saturday, December 16, 2023
TODO: add comments: 5 Tips for Winning at Code Comments
- PyOhio 2019, Saturday, July 27, 2019
- SoCal Python, Tuesday, February 26, 2019
- Write the Docs Los Angeles, Thursday, October 4, 2018
BYOAPI: No API? No Problem! (lightning talk)
- PyOhio 2019, Sunday, July 28, 2019
Education
- California State University, Los Angeles
- B.A. Art—Graphic Design/Visual Communication 2011
- University of California, San Diego
- Computer Science and Engineering (coursework)
Languages
- Fluent in English, Serbian/Bosnian/Croatian
- Familiar with Spanish, German, Latin