Robert J. McDonald
Summary
I develop software using object-oriented languages
for Unix-like and Microsoft operating systems
on desktop, embedded, and mobile platforms.
I create complete software products
(design, code, documentation, test suites, build system, user experience studies)
from as little as a few sentences of requirements.
I create resources that help every software development team member
manage the inevitable growth of product complexity,
thereby reducing project risk and increasing team responsiveness.
My science and technology education
helps me understand and contribute to software in many domains.
I've always worked at start-up companies.
Product List
I have participated in developing and shipping
one or more versions of the following software products (roles in parentheses)
- native BitTorrent client for Windows systems (engineer) at BitTorrent
- BitTorrent client for Windows systems with web front end (engineer) at BitTorrent
- BitTorrent protocol-based file replication application (engineer) at BitTorrent
- BitTorrent client with "10-foot" remote control UI for televisions for embedded Linux/Android systems (engineer) at BitTorrent
- BitTorrent client for Android systems (engineer) at BitTorrent
- BitTorrent client with web interface for embedded Linux systems (sole engineer) at BitTorrent
- Web-based financial analysis application (engineer) at Infocentricity
- Applications-from-UML-models server application development/deployment system (engineer) at Kabira (now owned by Tibco)
- Customized browser installation CD-ROM (project lead, engineer) at The Digital Foundry
- Electronic survey development/deployment/analysis tool (engineer) at Decisive Technology (now owned by DoubleClick)
- SQL forms development tool (project lead, engineer) at Sybase
- SQL report writer (architect, project lead, engineer) at Sybase
- Utility for PCs connected via Novell Netware (project lead, engineer) at Pacific Software
- Technical specifications search system for nuclear power plant control rooms (architect, project lead, engineer) at Pacific Software
- Event timer system for nuclear power plant control rooms (project lead, engineer) at Pacific Software
Recent Experience
Senior Software Engineer, 2007 - present
BitTorrent, Inc. - San Francisco, California
http://www.bittorrent.com/
Provides products and services based on the popular BitTorrent file sharing protocol.
1) Embedded BitTorrent client for NASes and Internet media appliances. Sole engineer on project starting in 2008.
- modified existing libtorrent and uTorrent code bases
- coded multi-threaded core product in C++
- added features to open-source UI in HTML, CSS, Javascript
- wrote pre- and post-sales technical literature
- created tests: unit, system, platform evaluation, stress
- developed product release process
- created build/test system framework in Python using Amazon Web Services (EC2, S3), including
- product building using GNU make
- unit and system testing
- valgrind analysis
- provided technical support
Product profitable based on royalties minus expenses of me and a part-time business manager.
Created developer wiki for product, trained manager and 4 engineers joining the department.
2) uTorrent Server for Linux
- developed all releases
- provided technical support in company web-based forum
3) BitTorrent/uTorrent for Android
- customized BitTorrent C++ client to serve as product core
- redesigned source code organization and build system to be compatible with Android build tools
- reviewed work of UI group to ensure compatibility with core client
- developed POC port to early-stage SoC Android television
- coded features in Java
- used standard Android tools (NDK, SDK) and Eclipse
4) Android/native embedded BitTorrent client for Internet media player
with 10-foot remote control TV UI integrating Internet Archive contents via torrents
- designed and coded services used by front-end developers
5) BitTorrent Sync - file replication/transfer application
- back-end/API C++ engineer, providing services to web UI developers
- co-designed, co-implemented, wrote system tests for RESTful-like API
- migrated embedded system test framework to work with Sync
- designed and implemented embedded-related features
6) BitTorrent/uTorrent Client for Windows
- reworked Remote support to support Android client
- reworked resume data loading/storage, encapsulating it within a single class
- implemented 'add torrent by hash' feature
- found cause, fixed security vulnerability
7) uTorrent Server for Linux
- updated using latest version of code shared with Windows clients
8) uTorrent Web
Web-based BitTorrent protocol client targeted to less-technical media consumers.
- created notification system for back end using Windows notifications
- created system for assessment and registration of file extension associations
- set up Google Breakpad crash handling and dump generation/uploading
- created passwordless authentication system for web client on localhost
Technologies learned here:
- BitTorrent protocol
- web server programming
- embedded application programming
- Macintosh/XCode application programming/debugging
- Android application development
- Amazon Web Services: EC2, S3, boto Python interface library
- RESTful API design
- C++11, STL, Boost
See LinkedIn profile
for additional experience.
Education
- A.S.,
Broadcast Television Engineering Technology,
Napa Valley College, 2007
- M.S., Plant Pathology, College of Natural Resources,
University of California, Berkeley, 1983
- B.A., Chemistry,
College of Creative Studies,
University of California, Santa Barbara, 1981