Bryce J. Drennan
I enjoy solving problems of all kinds.
Senior Data Engineer
2018 - Current
Working on the production machine learning pipeline. Secret stuff.
- Recovered cassandra cluster and brought it to stability. Learned more than I wanted to about cassandra.
- Built and deployed a very robust datascience model to production. Used fuzzing to find numerous bugs.
2011 - Current
First engineer. Designed backend architecture and data schema. Heavily involved with all parts of the product. Initiated, designed, and built our internal user tracking system, internal metrics system, email infrastructure (sending/tracking/reputation), A/B testing framework, and machine learning customer value algorithm. Worked with founders to design and build the investment and signup processes and make numerous optimizations to them. Helped keep company agile by evangelizing best coding practices, unit testing, and continuous integration. I've worn many, many hats as we've grown.
Most recently, with CircleUp's increased focus on data acquisition and processing, I've been focused on creating reliable, fast, and high-quality data collection processes using python asyncio, docker, kubernetes, and airflow. I took our data collection from something that required constant attention to scrape a few datapoints to something that runs for weeks at a time while collecting millions of datapoints from diverse sources.
- #1 Contributor. As measured by: lines of code written (17% of total), lines of code deleted (72% of total), number of commits (34% of total). 14 team members.
- Statsd Server. Of my own initiative, launched a statsd server that has been instrumental in improving the reliability of our data collection processes.
- Launched new website. I was the sole backend/infrastructure engineer. Technologies used: Django, Python 3.7, Docker, ECS, blue/green deploy, Jenkins CI,
- Helio Interface. Of my own initiative, launched the first non-SQL interface to CircleUp's core product, Helio. Company-wide adoption was rapid and near-total. This has caused a step-change difference in the employee's ability to utilize Helio data and provide feedback on it.
- Reduced total AWS spend by 40%. Of my own initiative, reduced our monthly AWS spend. Used a combination of manual and automated cost tagging.
- Open-source exceptions reporting library. Of my own initiative, created this library to help us debug python exceptions. Works inside Spark UDFs.
- Data-validation leadership.
- Secured data and systems.
- Authenticating proxy. Of my own initiative, built an authenticating proxy that works with our google authentication and aws VPC.
- Continuous integration, testing, validation. Of my own initiative, added automated linting, testing, and data validation to all our data collection processes.
- Managed open-source contributions.
- Prevented Spam and wasted time. Worked with business unit to understand the negative consequences of unsolicited email and underpowered A/B tests.
- Coworker Endorsements
"He can be counted on for a huge variety of different tasks, from creating the new site deploy system and infrastructure from scratch, to performing an AWS cost & security audit, to thinking through Helio data modeling and providing a new interface, Metabase, for business teams to access data. The AWS cost audit and the Metabase work were huge benefits for the team and Bryce took the initiative to accomplish those initiatives completely independently." - Manager Review 2018-06
"Bryce always pushes the team to pursue technical excellence, whether it's something small like turning on required code reviews for a repository or something large like thinking through our data zones and best practices for data flow." - Manager Review 2018-06
- #1 Contributor. As measured by # of commits.
- Data collection stability. Collection went from 1.7 "datapoints" per company per month to 12. This was due to dramatic improvements in the robustness and reliability of our systems. Aggressively fixed bugs. Added retry logic to network calls.
- Collection stream batcher. Re-wrote our data collection code to save data in batches. This alleviated some S3 load issues and made the data easier to process.
- asyncio http mocking library. Created an async testing library which allows easy and fast testing of asyncio web requests. Its called `aresponses`
- Automated testing and linting. Added automated testing and linting to several of our repos.
- Built our internal CRM. Lets start out by stating that building your own CRM is almost certainly a bad idea. The reasons we built this are complex but we knew it wasn't a good long term solution. To make our future migration easier I built this custom CRM with the same schema as salesforce.
- Setup Office Network from scratch. Rebuilt our office network overnight from scratch. Our security appliance had broken so it was swapped out and reconfigured. Every switch and access point had to be reconfigured.
- Data collection leadership. Convinced team that daily collection processes were necessary for high quality and timely data.
- Entity Resolution leadership. Helped convince team to use batch approach for entity resolution.
- Canonicalization leadership
- Countless on-point issues. Considered go-to expert for: email delivery, main-site changes and maintainance, jenkins, office network, security, passwords, accessing encrypted data, IT issues. I frequently help with these issues. Did this full-time for several months (voluntarily).
- Setup marketing's website.
- Massive deletion deprecated features on website.
- Internal Python Package Server. Of my own initiative, setup an internal python package server. Its now critical infrastructure used by all our production systems.
- 2016 - need to fill this in
- Custom Email Relay Built a custom email server in python that reliably routed emails to our CRM and compliance archives for 2.5 years. It was so reliable that it had run for 650 days without downtime when it was decomissioned in 2018. In its lifetime it handled 1.2 million emails.
- 2015 - need to fill this in
- Transactional Email Platform Architected and built this custom built email sending and tracking platform. Over the 3 year lifetime of the system it was used to send 5.5 million emails, track 5.3 million opens, 556k clicks, and 18k unsubscribes. Features included:
- Subscription Management
- Requires each email sent be associated with a subscription type.
- 1-click unsubscribe.
- Automatic subscription of new users.
- Blocking of emails sent to people who have unsubscribed.
- Helper methods for subscription creation and subscription migrations.
- User interface for customers to manage their subscriptions
- Auto insertion of unsubscribe links into all emails sent on the platform.
- Email Tracking
- Tracks sends, opens, clicks and unsubscribes.
- Stores a copy of every email in S3, gmail, salesforce, and our compliance archive.
- Management interface to view sent emails (with tracking stripped out)
- Automatically inserts UTM codes into links for use with Google Analytics
- Interface to view performance stats. Confidence intervals automatically calculated.
- Ability to import campaigns from mailchimp, and outreach.io
- Ability to ingest emails via bcc
- Sending Emails
- Automatic CSS inlining. Dramatically reduces the amount of time needed to make email compatible HTML.
- Automatic plaintext email creation that out-performs Mailchimp, Mandrill, and Marketo.
- Automatic deduplication of emails. Accidentally call that send method twice? no problem.
- Interface for marketing to see all campaign types.
- Statistics automatically calculated based on tracking data.
- Results only shown when they're statistically significant.
- django-modellogger Python library that added audit logs to any django model. Recorded creation, deletion, and updates for any tagged models. This infrastructure became critical to fulfill compliance and security obligations. It was still used when I left CircleUp.
- the whole website
- user tracking
Investor Presentation Archive
Built the entire web platform for selling access to our database of IPO presentations. This involved:
- automated scraping
- converting presentations to images
- building an online presentation viewer
- building functionality for accepting registrations
- building infrastructure to accept online subscription based payments
PhD Student / Teaching Assistant
2010 - 2011
University of Utah
Salt Lake City
After the first year of the program, I left academia in favor of Silicon Valley. I have found my coursework in machine learning, economics, statistics, philosophy, and experimental design, to be very relevant to my career since then
Web Developer / Team Lead
2006 - 2010
Marriott School of Business
Designed, supervised, and implemented numerous college-wide projects including online graduate admissions, student information tracking, and the BYU Management Society website.
Provided friendly support while managing expectations of professors, department heads, and business executives.Endorsements
- "Bryce was a great team leader and provided great opinions and recommendations based on real-life problems and realities. He introduced many new technologies into the website and work process."
- Matt Strum, Developer
- "A quick learner and self starter, Bryce is invaluable to whatever organization he is a part of."
- Matt Winchester, Developer
Sep 2017 - Present
Asyncio http mocking. Similar to the responses library used for 'requests'
Exception Report Library
Aug 2017 - Present
Generates an interactive stack trace that includes variable state at each level.
Passphrase Generating Library
May 2017 - Present
Quickly generate secure passwords and passphrases.
- Uses random.SystemRandom for cryptographicly appropriate randomness
- 1.6 million words used for passphrase generation
- unicode characters in passwords
Computer Vision Aimbot
Uses OpenCv to try and identify targets in first-person shooter video games and then send commands to an emulated mouse and keyboard to track them. Early prototype. It "worked" but was too slow to be useful.
- Python 3.6 multithreading
- OpenCv for target recognition
- HDMI Capture card
- Raspberry Pi for keyboard and mouse emulation
Created a battery powered portable media streaming server. Can stream to 5 or more devices at a time from its vast movie and TV collection (2300 shows, 1464 hours worth). Works great for road trips or long flights.
- Plex Media Server
- Raspberry Pi as server and wifi hotspot
- USB battery pack
- rsync over wifi to keep media collection up to date
Archive.org's python library
2nd largest contributor to archive.org's python library. Fixed several bugs and refactored their tests.
Random Line Access - Python Library
Quickly access arbitrary line numbers in a text file. A well tested library for Python 3.
Django Qtools - Python Library
Overly complicated way to write DRY, composable filtering logic for data queries and instance methods.
Eulerian Magnification Library for Python
Amplifies tiny movements in video. Based on the amazing research done at MIT: http://people.csail.mit.edu/mrub/vidmag/
PhD Program, Business Information Systems
2010 - 2011
University of Utah
Salt Lake City
After the first year of the program, I left academia in favor of Silicon Valley. I have found my coursework in machine learning, economics, statistics, philosophy, and experimental design, to be very relevant to my career.
Master of Information Systems Management
Marriott School of Business, BYU
B.S. Information Systems
Marriott School of Business, BYU
Started in computer science, switched over to information systems so I could take business classes.
Skills and Interests
Python 3.7, asyncio, docker, kafka, cassandra, jupyter, aws infrastructure, Django, docker-compose, kubernetes, ECS, airflow, pyspark, sql, jenkins, pylint, pytest, git, bash, zsh,
Have experience, but avoid:
php, java, coldfusion, svn, marketo, cassandra
air quality, home automation, deep learning, machine vision, evolutionary psychology