Ben Hoyt’s Resume/CV
I’m a software engineer with fifteen years of experience developing web applications and embedded firmware, as well as providing technical management for small teams of software developers.
Skills: what I do…
- Develop websites that perform well and are easy to use. I’ve used various languages and databases, and I’m experienced with the scaling and caching required for large sites.
- Administer servers and automate complex code deployments on Linux and Windows.
- Contribute to open source projects, for example Python (more here).
- Create native apps for iOS and Android devices. I’m familiar with all aspects of app development from design to code to app store submission.
- Develop embedded firmware for data loggers, control systems, and other electronic devices. Write code for 16-bit and 32-bit microcontrollers.
Management and leadership
- Work with engineers to design and architect complex systems. Work with product managers to plan and prioritize features.
- Manage hiring of new engineers. Review and interview candidates.
- Mentor developers, review code, and help establish engineering best practices.
- Communicate and document effectively, and relate well to people.
- Give internal training and technical talks. Provide Python expertise from many years of experience with the language.
Jetsetter / TripAdvisor – Principal Software Engineer – July 2016 to now:
- Helped architect a structured content management system and search API using Contentful and Elasticsearch, simplifying and unifying several internal systems.
- Designed and developed a real-time image scaling service using Python and ImageMagick. It’s able to serve hundreds of image scaling requests per second.
- Implemented a duplicate image detector using the dHash perceptual hash algorithm and BK-Tree data structures.
- Wrote a type-safe image metadata injection service using Scala and Elasticsearch.
- Managed a small team of engineers. Performed architecture and code reviews. Implemented database best practices on the team.
Oyster.com / TripAdvisor – Software Engineer and Technical Manager – June 2010 to June 2016:
- Ported a legacy C++ web backend to Python. The change of language and tooling let us develop and release business-level features much more quickly.
- Helped design and implement a custom content management system that enabled us to do all publishing in realtime. The approach to structured content made integrations easy and gave us opportunities to boost revenue.
- Co-developed two mobile apps: a cross-platform iOS and Android app using React Native, and Oyster’s older iPad app written in Objective-C.
- Implemented the backend for various website features, including a tag-based photo search engine and a hotel booking system.
- Implemented internal tools such as a photo album editor and a workflow system to help salespeople schedule photoshoots at about 1000 hotels per month.
- Wrote tools for our web infrastructure: a new code deployment system using Ansible, tools to translate and localize the entire website, a data analytics pipeline using Snowplow Analytics and Amazon Redshift, and a system to send personalized emails.
- Managed the transition of our 12 points of sale from plain HTTP to secure HTTPS while closely monitoring SEO performance.
- Co-wrote heavily parallelized software to resize and watermark millions of images in many different sizes using Amazon EC2.
- Managed a team of engineers. Oversaw architecture decisions and performed code reviews for most of Oyster’s software projects. Helped the team switch from Subversion to Git. Led the hiring of new software engineers.
Brush Technology – Software Engineer and Co-director – August 2006 to May 2010:
- Co-founded and co-developed the microPledge crowd funding platform. Implemented secure financial transactions, Ajax-based voting, and S3 file uploads.
- Designed, implemented, and promoted Gifty Weddings, a website that helps couples make great wedding gift registries.
- Wrote embedded firmware in C++ for Hamilton Jet’s large-scale jetboat control systems. Wrote testing and GUI tools in Python and C#.
- Worked on cellular telemetry firmware and GPS interfaces using Atmel AVR and ARM7 micros for various clients.
- Developed low-latency IP networking software in C and Python for a client in the high-frequency trading industry.
- Managed projects and staff. As a cofounder, I was also heavily involved with the company’s business planning and decisions.
Harvest Electronics – Software Engineer – October 2002 to July 2006:
- Designed and developed the web and admin interface for their solar-powered weather stations. The clean UI and weather graphs really made Harvest’s product stand out.
- Wrote software to interface to GPRS modems. Administered associated databases and web servers.
- Wrote embedded firmware in C and assembler for MSP430 and ARM7 micros, including low-level boot loaders, serial communications, and I/O control logic.
- Developed various network tools in C and C++. Worked with the Win32 API.
I have a B.E. in Electrical and Computer Engineering, and graduated from the University of Canterbury in 2002 with first class honors, GPA 7.9/9. For my final-year project I designed a small stack-based CPU in VHDL.
I have also discovered a truly marvelous proof of Hofstadter’s Law, but unfortunately this margin is too narrow to contain it.
My dad taught me how to program by teaching me the Tao of Forth. Two of my first projects were writing a Forth compiler in x86 assembly, and then writing a small 32-bit OS in my Forth. I love things small, fast, and light – and that’s paid off during my career.
Other than that, I enjoy reading and writing, and I once edited a small print magazine. I’m into unicycling, typography, and piano. I love my wife and family. I aim to keep the commandments, but you may find me breaking the conventions.