# Robert McDonald > Software Developer Location: San Rafael, California, United States Profile: https://flows.cv/robertmcdonald 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. My business interests include consumer-controlled advertising networks. ## Work Experience ### Senior Software Engineer @ Mantis Ag Technology Jan 2023 – Present | Gonzales, California, United States Analyzing/coding/testing/documenting applications that use machine learning of digital images acquired in real time by tractor-pulled device to distinguish between crop plants and weeds in order to improve efficiency and sanitation of common operations (thinning, weeding, side dressing, fertilizer application) performed as part of growing lettuce and other vegetables, while using 90% less chemicals than more conventional practices. Supporting product sales, staff of agricultural service providers. Adding professional touch to software development. * created GitHub organization account, transferred all source code to it * upgraded .NET dependency from 3.1 to 8.0 * replaced existing graphics control NuGet package with ScottPlot * replaced PDF generation control NuGet package with free, open-source NuGet package * hired former colleague to set up build/test system using GitHub Actions, SmartBear TestComplete * created documentation of product code, created GitHub repo wiki containing documentation * documented release process ** helped document and review test plans for release candidates ** decided on structure for release notes * developed machine state logging and graphing * wrote handlers for database operation exceptions * created system to cryptographically sign configuration files and validate signed files on program startup ### Senior Software Engineer @ BitTorrent, Inc. Jan 2016 – Jan 2023 | San Francisco Bay Area Helped develop/maintain BitTorrent's main product as well as helping create a new product. 1) uTorrent Web Back-end engineer for BitTorrent protocol client with web-based front end oriented toward 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 * created scoring calculator used to encourage usage of product Developed in C++ (C++11, STL, Boost). 2) uTorrent client for Windows - innumerable actions, including: * created new wiki pages in GitHub repos containing overviews of various areas of code * 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 * integrated WebView2 as browser control for displaying web content including advertisements, upsell offers, other content * installed and launched BTFS executable from the client * integrated cryptotoken wallet * advised new senior software engineers on how to integrate webtorrent support 3) uTorrent Server for Linux (based on code common to uTorrent client for Windows) * updated source code, unit tests, system tests to use latest version of core uTorrent client code * identified and fixed generic uTorrent problems via run-time analysis using valgrind ### SDK Engineer @ BitTorrent, Inc. Jan 2007 – Jan 2016 | San Francisco Bay Area First seven years worked on BitTorrent client on numerous Linux-based embedded devices. 1) Embedded BitTorrent client for NASes, 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/system testing ** valgrind analysis * provided technical support Worked on somewhere between 40 and 60 different embedded devices to integrate the BitTorrent client with them. Product profitable based on royalties minus expenses for me and 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 * reorganized source code, 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/coded services used by front-end developers 5) Sync * back-end/API C++ engineer, providing services to web UI developers * RESTful-like API: co-designed, co-implemented, wrote system tests * migrated embedded system test framework to work with Sync * designed/coded embedded-related features ### Software Engineer @ Cyan Optics, Inc. Jan 2007 – Jan 2007 | Petaluma, California Developed software using Python and Cheetah ### Senior Development Engineer @ InfoCentricity, Inc. Jan 2004 – Jan 2004 | Novato, California Financial analytic services startup licensing access to web-based HTML application running on Apache and Linux for Mozilla and IE browsers. Participated in development of major release (2.3) and maintenance releases. * Designed and implemented object-oriented application development/testing infrastructure in C++, including classes for strings, file/directory handling, exceptions, HTML generation, automated unit testing. * Improved automated build system using make. * Initiated practice of developing automated regression tests for all new features. * Designed and implemented report engine that was more than twice as fast as the previous one. * Implemented new UI design for main pages of application. * Ported formerly-IE-only application to Mozilla. * Worked with in-house domain experts to resolve ambiguities/conflicts in specifications. * Installed and administered FreeBSD 4.x on my workstation. ### Senior Software Engineer @ Accordus, Inc. Jan 2002 – Jan 2003 Early stage startup (ignore LinkedIn-supplied company description). Designed/built POC system under tight time restrictions, resulted in company obtaining bridge funding. Developed software system for Prolog-like domain-specific language. * created BNF grammar * developed translator in VB.NET to generate XML * created DTD for intermediate language format * designed/implemented compiler in Java ** reads XML (SAX-based parser) ** compiles using ANTLR-generated parser ** generates and compiles Java * designed/implemented runtime in Java * led redesign of UI & development model for language editor written in VB.NET Designed/implemented logging, multi-threaded console process invocation components in C#. Developed programmatic build and test system using Java, JUnit, Ant, Perforce, bash. Quickly became engineering standard after including builds of products as requested by other engineers. Created command-line argument parser/validator in Java. ### Development Engineer @ Kabira Technologies, Inc. Jan 1999 – Jan 2002 | San Rafael, California Kabira ObjectSwitch creates multi-threaded executables from UML models. Completed port from Solaris/HP-UX to Windows NT/2000: * completed TCP/IP interface using Winsock * built PHP extension DLL * implemented POSIX-like pthread-once() and multi-process condvars using Win32 synchronization primitives * used console control events to cleanly shutdown multi-process applications * completed CORBA support using Orbix * developed workarounds for MSVC++ compiler bugs * updated build/test scripts Attainment of product stability on Windows surprised Unix system engineers. Sales engineers pleased to use product on Windows laptops. Developed generic features: * LDAP over SSL client interface (unit tests used digital certificates on client and server) using Netscape's web server and LDAP server * OCI interface to Oracle 8 * multi-threaded test driver for performance testing Developed in C++, Java, Korn shell scripts, Perl scripts. Part of engineering team using practices making it easy to manage development of a complex product with minimal risk. ### Senior Software Engineer @ The Digital Foundry Jan 1997 – Jan 1998 | Tiburon, California Designed/developed web-based NT administration system. * developed UI in ASP: VBScript/JavaScript/HTML/Visual InterDev/IIS 4.0/ADO/COM * created SQL Server 6.5 database schema (including views, stored procedures, triggers) * developed multi-threaded NT Service in VC++/ATL to handle delegation tasks * wrote 150-page user manual Developed Automation servers using Visual C++ * database schema installation via ODBC * NT scheduler service management Developed CD-ROM-based program for installing ISP-customized web browsers. * managed project, tracked obligations, negotiated schedules/features with client * developed 16-bit/32-bit hardware/software diagnostics: browser detection, Winsock testing, dial-up networking detection, modem identification and speed determination * managed in-house Mac developer, outside consultant * written in Visual C++ 1.52/5.0, MFC for Windows 3.1/3.11/95/NT 4.0, Macromedia Director for Mac ### Principal Engineer @ Decisive Technology Corporation Jan 1995 – Jan 1997 | Mountain View, California Decision Source (client-server product for conducting surveys via e-mail and the Web) Participated in design/architecture development. Designed database schema, implemented tables, indexes, triggers, views, stored procedures on Microsoft SQL Server 6.5. Developed SQL Server schema installer automation server using Visual C++, MFC ODBC classes. Developed COM/Automation server using Visual C++/MFC on Windows 95, NT; supported dynamically-loaded "plug-in" DLLs for Microsoft Access and SQL Server 6.5 databases. Decisive Survey 1.0, 1.1, 2.0 (single-user version of above program) Created most of statistical analysis and results presentation sections. Written in Visual Basic, C, C++, Jet SQL, Windows API, VBXs, for Windows 3.1, 95, NT. Used SourceSafe. * received favorable reviews in industry periodicals * member of engineering team that produced two major releases and a point release in 6-month intervals, all on schedule for alpha, beta, and release ### Senior Software Engineer @ Sybase Jan 1987 – Jan 1995 | Berkeley/Emeryville, California Built application development tools. Enterprise Momentum Designed/implemented run-time behavior. Written in Smalltalk, using Envy/Developer under Windows 3.1(PCs) and Motif (Sun workstations). APT 5.0 Reviewed, redesigned, and reimplemented runtime behavior of this forms application development tool. Written in C on Sun workstations. * taught 36-hour class, wrote 270-page manual on product design/implementation; received company Quality Finalist award Report Workbench Designed/implemented SQL report writer. Performed market research. Developed design, wrote functional specification. Led/mentored three junior programmers. Taught workshop for internal customers. Presented talks at user group meetings. Developed compilers for a report processing language and a report definition description language. Written in C on Sun workstations. Used sccs. * created innovative rule-based presentation system allowing users to edit reports at runtime * initiated company's first usability testing with alpha software ## Education ### A.S. in Broadcast Television Engineering Technology Napa Valley College ### M. S. in Plant Pathology University of California, Berkeley ### B. A. in Chemistry UC Santa Barbara ## Contact & Social - LinkedIn: https://linkedin.com/in/robert-mcdonald-330595 - Website: http://www.dancingkayak.com/ --- Source: https://flows.cv/robertmcdonald JSON Resume: https://flows.cv/robertmcdonald/resume.json Last updated: 2026-04-01