
Ben Friedland
resume@bugben.com
http://www.bugben.com
A full-stack software engineer in the Bay Area, California
Profile Summary
- Senior software engineer with fifteen years of professional experience.
- Unique mix of software engineering and systems administration.
- Possess a wide range of technical knowledge in many areas, specializing in software architecture and development.
- Extremely knowledgeable of the Linux operating system, along with various applications and tools commonly used in a Linux environment.
- Twelve years of experience in the analysis, design and development of both commercial and custom software.
- Red Hat Certified Engineer and Red Hat Certified Systems Administrator (Certification ID: 120-054-903)
- Very strong analytical, oral, and written communication skills.
- Contributor and supporter of various open source software projects.
- Experience in shops of all sizes. Small startups running a one-man show - and huge enterprises contributing to code bases touched by hundreds.
- True full-stack developer. From backend to front-end - mobile to desktop - system administration to software architecture.
- Am human. Can read captchas with 98% accuracy.
Links
- Linked-In Profile - http://www.linkedin.com/in/bfriedland
- GitHub Page - http://github.com/ben174
Superpowers
Web Application Development
Python, Django, Django Rest Framework, Flask, React, HTML5, JavaScript/ES6, Material UI, Bootstrap
Programming Languages
Python, JavaScript ES6, Microsoft .NET, C#, SQL, Bash
Databases
MySQL, PostgreSQL, Microsoft SQL Server, Oracle
Testing
Python unittest, pytest, Test Driven Development (TDD), Selenium, CI (Jenkins, Bamboo, Travis CI), Page Models, Test Reporting
Other Skills
Bash (shell scripting), Zsh, VIM, Tmux/screen, ORM, GIT, Heroku, Amazon (EC2, S3, Boto, Elastic Beanstalk, Route 53, RDS, Lambda), Docker, Docker Compose, Vagrant, Apache, GIS, Reporting, Video/Audio Processing and Production, Graphic Design, Image Editing
Community Contributions
Grumpy Bot
A text message partner using OpenAI / ChatGPT.

Integrates with OpenAI API to invoke a conversation with a less-than-polite bot. Feel free to try it out, send a friendly conversation opener to: 717-746-9969.
- Send a text to: 717-746-9969
- Don't worry, your number is safe. In fact, I don't even store or log texts sent to this number.
HSTS Super Cookie
Creates a HSTS Supercookie to fingerprint a browser

HTTP Strict Transport Security (HSTS) is a web security standard implemented by browsers via a Response header which instructs the browser to send subsequent requests to this particular URL over HTTPS, even if the original request was made using HTTP. When a browser receives a HSTS instruction, that instruction is retained no matter what. Even if you go incognito or private. This is a proof of concept self-hosted application which will lay a 'super cookie' using the HSTS web standard.
- Source: https://github.com/ben174/hsts-cookie
- Project Page: https://github.com/ben174/hsts-cookie
BART Crimes
A site to publish daily crime reports on BART

BART chose to stop publishing daily crime reports, and turned it into an email list which requires approval. This site is an attempt to bring back this public information.
Featured in SF Chronicle, SF Weekly, KRON4 News, KTVU Channel 2 News, and East Bay Times.
- Source: http://www.github.com/ben174/bart-crime
- Project Page: https://www.bartcrimes.com
Shower Texts
A service to send a daily Shower Thought to your phone.

A web application which allows users to sign up and receive a daily bit of inspiration from Reddit's ShowerThoughts subreddit. Pulls the top post of the day and sends it to all subscribers.
Featured in Wired Magazine's Gear section:
http://www.wired.com/2015/08/4-new-apps-use-shower-texts-bar-roulette/
- Source: https://github.com/ben174/showertexts
- Project Page: http://www.showertexts.com/
Git Draw
A Chrome Extension which allows you to draw pictures in your GitHub heat map.

This is a Chrome extension which will allow you to freely draw on your GitHub heat map. You can then export your drawing to a script containing a git commit log. Once you've run and pushed this script to a new repository, your commit log will match the drawing you made. Listed on GitHub's Trending Repositories on the day it was released.
- Source: https://github.com/ben174/git-draw
- Project Page: https://github.com/ben174/git-draw
Rick Roulette
A Chrome Extension so you can finally Rick Roll yourself.

This is a Chrome Extension which will randomly Rick Roll you.
Whenever you visit a YouTube page, you'll have a 1 in N chance of having the video element replaced with a Rick Roll. The value of N is 6 by default but you can configure this to whatever number you choose.
- Source: https://github.com/ben174/rick-roulette
- Project Page: http://www.rickroulette.com
Riker Ipsum
Generates text - like lorem ipsum - but uses real English. Taken from random samplings of dialog spoken by Commander William Riker in Star Trek: The Next Generation

Generates random text using real English - taken from random samplings of the entire catalog of dialog spoken by Commander William Riker in every episode of Star Trek: The Next Generation.
Useful for provisioning sample data to test a DB, or creating filler text for a design.
Since the entire catalog of dialog from every episode is included, endless possibilites of gibberish can be expected.
- Source: http://ben174.github.io/rikeripsum/
- Project Page: http://ben174.github.io/rikeripsum/
Profanity
A library to check for (and censor) profanity in text strings.

This library was designed to be an easy way to check text for inappropriate content. It includes a basic word list and can be used with custom word lists.
This package has been submitted to PyPI and can be installed with a simple: pip install profanity
- Source: http://www.github.com/ben174/profanity
- Project Page: http://ben174.github.io/profanity/
PyDvorak
A Python curses application to help teach the Dvorak keymap.

A console application written in Python to help teach me to type in Dvorak - which is an alternative to the Qwerty keymap.
- Source: https://github.com/ben174/pydvorak
- Project Page: https://github.com/ben174/pydvorak
Home Control
An application for home automation

Pre-dating Amazon Alexa and other home assistants, I wrote this for similar functionality. Parses your voice and executes commands based on input.
Some commands it understands:
'Turn office lights on'
'Turn the house red.'
'Turn upstairs lights blue.'
'Set temperature to 68'
'Turn living room into a rainbow.'
'Set staircase brightness to 5.' (1-10 scale)
- Source: http://www.github.com/ben174/homecontrol
- Project Page: http://www.github.com/ben174/homecontrol
Bo.gg
An open source calorie tracker for nerds.

(under development)
A command-line focused calorie tracker which focuses on simplicity, privacy, uptime, and open source. I started this project in early 2016 as a solution for people who just want a simple way to log their calories/fitness without using all the silly apps that are available today. I'm working on this project daily and plan to release it in Summer, 2016.
- Source: https://github.com/bo-gg/bogg-api
- Project Page: https://github.com/bo-gg/bogg-api
My Resume
A Django project which hosts my resume.

My resume itself was a project of its own. Written in Python/Django - it makes it way easier to maintain my profile. And since all the data is stored in a database - it is easy to export my resume in any format.
I have released the source on GitHub for anyone to view and/or use.
- Source: https://github.com/ben174/bugben
- Project Page: http://www.bugben.com
Experience
Zenefits
Principal Engineer
San Francisco, CA
March, 2016 - Current

- When joining, Zenefits had a test suite of 13,000 tests - which grew to over 20,000 tests in the time I was there. The entire test suite would take well over 50 hours to run in its entirety.
My mission was to decrease the time necessary to create a full developer feedback loop. If a developer wants to test their branch, they should be able to merge into master in the shortest amount of time possible.
I developed an intelligent test planning service, dubbed "Gondor", which would devise a test plan based on data points about the branch to be tested. Some of these points of information were:
- Code Coverage - look at the lines of code the branch touched, and compare them to a full coverage build of the test suite. If your branch touches a line of code shared with a test - run it.
- Modules - if your test is committed to a certain module, I'm more likely to run the entire test suite for that given module.
- Test History - keeping close metrics of each individual test. If this test has never failed, does it have any value? Are we just asserting that 1 == 1? Maybe it's not worth running.
- Failure combinations - does this test always fail when another, less expensive, test fails? If so, maybe just run the less expensive test.
- Test Runtime - does this test take ten minutes to run? Combining this with other factors might make us deem this test unnecessary to run.
All of these factors were combined to add weights to each test for a given branch, and come up with a time-boxed test plan - a best guess for a test run which could allow us to safely merge to master.
The project was a huge success, Zenefits plans to open source it at some point, and I'm still on the hook to write a formal blog post about the whole thing :)
Shape Security
Tools / Automation Software Engineer
Mountain View, California
February, 2015 - March, 2016

- Created a dummy web application, in Flask, containing page fixtures of every conceivable web quirk that might exist on a client site. Test Authors would write tests against these fixtures using page models.
Some features:
- A "stage" which can be set via REST. Subsequent calls to that page would respond with the stage that was set on the previous REST call.
- Complicated forms which submit in all sorts of different ways.
- Completely customizable CSP headers, response codes, rendering modes, and more. - Helped author an internal test framework - written in Python - which abstracted complex and tedious test authoring tasks into easy-to-consume libraries for test authors to use.
- Created entire internal reporting application to collect test results. This application was built in Python/Django and had a very complex five-tiered object model spanning over fifteen different models. Used Django REST Framework to make REST endpoints which test authors would post results to.
- "Automate the impossible" - creating tests to break countermeasures which are intended to fight bot traffic. This involves beating the very countermeasures the product is intended to protect against. (Sort of, internal debugging backdoors are often provided).
- For fun, created a "Lunch Bot" which would scrape weekly lunch menus and send daily notifications to the company with the daily lunch menu.
Clutter
Principal Architect / First Hire
Los Angeles, CA (Working remote from SF Bay Area)
December, 2013 - December, 2017

- Started as the first hire. Working with the founder Brian Thomas, barely scraping by - sometimes with very little pay - working on what at the time was just a vision. Today, Clutter has hundreds of employees, and is valued at over $500 million and working their way toward $1 billion.
- Recruited and lead contractors and interns to assist in rapidly building a brand and operations infrastructure while seeking funding.
- Build infrastructure from the ground up using Python/Django deployed to Heroku.
KIXEYE
Lead Tools Engineer
San Francisco, California
August, 2013 - March, 2014

- Interacted with REST endpoints for several video games, creating a common UI to manage individual aspects of each game.
- Team leader in a team of seven - in an extremely fast-paced tools environment for one of the big names in video games. Used Python + Flask to develop internal tools to manage user data within several games.
TiVo
Senior Unix Engineer / Tools Developer
Santa Clara, California
June, 2011 - August, 2013

- Mixed heavy development talents with day-to-day operations within the NOC and was able to automate many tasks, saving several man-hours per day.
- In a very short time, learned the vast workings of one of the most complex Linux environments in existence. TiVo pioneered using Linux as an appliance, and the workplace offered the opportunity to work with some of the greatest minds in the field.
- Heavy use of Django to create several internal tools, including an advanced scheduling tool used daily by the NOC team. This tool is capable of finding holes in the schedule, allowing users to request time off and allows managers to manage the schedule using a very slick UI.
MedicAlert Foundation
Senior Software Engineer
Turlock, California
November, 2008 - June, 2011

- Honored employee - awarded recognition In April 2009. The only person in a 200+ employee company to be honored the entire year of 2009.
American Medical Response
Senior Software Engineer
Modesto, California
November, 2006 - November, 2008

- Created a very sophisticated console based daemon app which would monitor Tracy Fire Department's live data stream and send information to AMR's Ambulance dispatcher units through a six-step process of downloading, extracting, converting, processing, uploading, and logging. This data was emergency-service-critical and the daemon needed to be rock solid. It never once went down.
- Developed an automatic update client run on the field by hundreds of ambulance which would query a web service to determine if a newer version of software was available. If a new package was available it would queue up the download using Microsoft's Background Intelligent Transfer Service (BITS) API , which would trickle download the file based on limited internet availability on the field. When the download was complete, the tool would decrypt the archive and extract, then automatically restart the necessary modules. Every bit of this was done without any UI interaction - completely invisible to the user.
MedicAlert Foundation
.NET Engineer (Consultant)
Turlock, California
January, 2006 - July, 2006

- Introduced and implemented object/relational persistence tools. Created entire class library, then used NHibernate to logically map all objects to existing database structure. Then created very simple CRUDs to allow edits through a .NET Web Service.
- Developed a class library in .NET which acted as a transport for web service calls between a legacy VB6 app and newer web services.
- Heavy use of JQuery and Ajax to create a personal health record editor for users of MedicAlert service. This replaced an old broken system and the company was extremely pleased to go from several dozens of customer complaints per day to virtually zero.
- Assisted with migration from Sun Web Server to Apache. Wrote scripts to automatically migrate a huge list of redirects from Sun's XML redirect configuration to Apache's text based configuration.
Stanislaus County Superior Court
.NET Engineer (Consultant)
Modesto, California
July, 2004 - December, 2005

- Created a ASP.NET web-based court calendar application to assist with the scheduling of court cases. This calendar has become a key component in their day-to-day operations and was featured in an article in the Modesto Bee.
- Developed entire cashiering system from the ground up using C# and SQL Server. This included an expansion of their database schema and migration of portions of an old, undocumented Cobol application.
- Migrated database from Oracle to SQL Server.
LowerMyBills.com
.NET Engineer
Santa Monica, California
November, 2003 - June, 2004

- Wrote an extensive logging framework for tracking and debugging issues within the enterprise applications.
- Performed load testing for migrating an existing application from JRUN to Tomcat with clustering and load balancing.
- Developed a front-end Windows Forms user interface for data entry of lenders. Also created an auto-updating component that would query an internal web server on each launch, looking for updates. If updates were available, it would update the application and restart the application, all transparent to the user.
University of Southern California (USC)
Software Developer - Consultant
Los Angeles, California
February, 2013 - August, 2013

- Consultant for various jobs. Created a data warehouse application in Django with advanced reshaping of data.
California CAD Solutions
Senior Programmer / Architect
Modesto, California
December, 2001 - October, 2003 / June, 1999 - January, 2000

- Created T-SQL and PL/SQL stored procedures for nightly batch processing of geographical data.
- Performed advanced file I/O on the SHP binary file format. This included parsing header information and creating a separate index file containing file offset addresses of key data.
- Interfaced with many different database platforms including DB2, Oracle 8/9i, SQL Server, Microsoft Access, DBF, SHP, SDF, MySQL, and many more.
- Designed, architected, and programmed many GIS solutions on a variety of platforms including ColdFusion, ASP.NET (C#), and J2EE (Tomcat).
- Developed a modular Web application framework backend in ColdFusion with a skinnable front-end.
- Created a real-time hierarchical database tracer for tracing pipe networks upstream or downstream. This product was sold as a product and licensed to dozens of counties within California.
- Used advanced geometry to create a geocoding algorithm which was capable of guessing the geographic location of a street address.
Therapeutic Research, Inc.
Contract Position: Application Developer / Database Architect
Stockton, California
October, 2000 - July, 2001

- Migrated a database of over 100,000 subscribers to a normalized database in SQL Server 2000.
- Developed a secure authentication system for subscribers to an e-zine. (ASP 3.0)
Admail West
Team Leader, Intranet Application Development
Sacramento, California
June, 2000 - October, 2000

- Developed a database logging system which would track the speed and accuracy of individual data entry clerks.
- Managed a team of four developers in the creation of an intranet application for data entry. This included a rich front-end - heavy in JavaScript/DHTML, and a powerful back-end in ColdFusion.
KeraVision, Inc.
Contract Position: ColdFusion Developer
San Rafael, California
June, 2000

- Optimized back-end ColdFusion code to decrease server impact during peak traffic.
- Performed maintenance on a high-traffic web site to decrease load times.
marchFIRST, Inc.
ColdFusion Developer
San Francisco, California
January, 2000 - June, 2000

- Lead a team of six engineers for the entire front-end development of Williams-Sonoma Online Wedding Registry.
- Created dynamic front-end pages for large sites such as Pottery Barn, Williams-Sonoma, and Toys Us.
Big Valley Internet
Webmaster
Ceres, California
April, 1998 - June, 1999

- Used ColdFusion to create dynamic Web applications for several clients.
- Created an online telephone prefix lookup to find local numbers for a large ISP.