Email contact: email@example.com
At heart I am a deeply technical person and developer. I have written the first line of code for several products and projects. You can't truly understand a product unless you have also worked on the code. I like to get a good working product released on time.
I am a generalist which means I can do almost the entire product, if needed. I keep track of the big picture: best practises in interaction design, economics, marketing, security, privacy, productivity, customer relationships etc
I am located in the San Francisco Bay Area in California (Santa Cruz), US permanent resident, and British citizen. I have extensive experience working remotely within the same geographic area, across the continent, and spanning continents.
I prefer small companies/startups and open source development methodologies which call for using the best people available anywhere in the world, transparency, and strong tools for collaboration and communication. Ideally I'd also want to work on and with open source software.
RELEVANT SKILLS INCLUDE
- Architecting, designing, implementation, logistics and consulting for network and mobile oriented products.
- Extensive programming experience: System and network level with some graphical user interface. Most recent experience is Linux, Windows, Android and iOS. Past includes many flavours of UNIX and Windows as clients and servers.
- Networking: Implementation and interoperability with many protocols including web (http, AJAX, JSON, REST), mail (MAPI, IMAP, POP, SMTP), news (NNTP), files (ftp, CIFS/SMB, NFS), directory services (LDAP), DNS, security (SSL, SSH), and display (RDP, X11).
- Product Management: Study of potential new and existing features, use cases, requirements and specification authoring, feasibility studies, estimation and prioritization, managing bug and feature tracking.
- Business Development: Working with business oriented people on technical issues, and technical people on business issues, both internally and externally.
Consultant/contractor reporting to founders 2015 - 2018
On device software system doing real-time audio processing
- Embedded Linux (Debian) environment as UEFI image, with custom kernel, and simple packaging
- Secure Boot, factory reset, signed updates, model and serial number storage, provisioning
- Control character (i2c) and bitmap (GPIO) displays, buttons (GPIO), XMOS (USB), and isolated analog side PIC (SPI, GPIO)
- Ethernet and WiFi networking, including access point based WiFi setup, discovery (zeroconf)
- HTTP based access for mobile apps, and web browsers (jQuery, Jinja)
- systemd based resource control over multiple subsystems (audio, recording, updating, configuration, analytics)
- Interfacing with content recognition services, data about album releases, images and caching, searching, album fitting from song matches etc.
- Provide updates including staged rollouts, targetting, multiple channels etc
- Receive analytics data and produce reports including error distribution, update status, versions, registrations, time periods (by day, week, and month), automatic data removal after retention period etc
- Worked with outsourced team on Android and iOS apps
- Created initial store listings, built and published the apps
- Maintained developer documentation covering how to perform processes like app publishing, analytics, and crash reports, provisioning, developer build access etc
- Worked with various suppliers over SDKs, boards, code, bugs and features
- Onboarding of new developers
Content Recognition Company
Consultant/contractor reporting to CTO/Founder 2015
Helped develop an audio content recognition system to fit in with their existing video content recognition. The client portion ran in a variety of constrained embedded environments, and generated fingerprints that could be used within the existing server side matching/scoring.
The project involved an initial research phase working with a signal processing expert to determine candidate algorithms, and then implementing them in an evaluation framework (Python, C) to see how they faired against test data and other algorithms. Parameters would be tweaked, good and bad match reasons investigated, and improvements made.
The second phase proceeded with the chosen algorithm. I adapted, tested and completed the code to the embedded environment (C, ARM). I coded a parameter evaluation framework (Python). For example having bigger more frequent fingerprints would result in a quicker match, but use more cpu. Using the framework we could find which parameters to use that minimised cpu consumption (we had a very small quota) but resulted in the degree of accuracy and timeliness needed.
Tech Generalist 2011 - 2014
Developing the code: components on Android and iOS, web services, analytics and reporting infrastructure (millions of events per day), database, automation and scripting, product definition and refinement, and all the other things needed in a startup.
- Created SDKs for Android (Java, C) and iOS (Objective C), updated Unity plugin (C#), debug tools, documentation, testing, wrote white papers etc. Technical functionality includes robust content downloader, analytics gathering and submission (SQLite, networking), audio playback & monitoring (eg abort on phonecall), developer tool to check integration, and banner and interstitial ads (Android)
- Extensive configuration, reporting and analytics - custom in-house solution (Python, AppEngine, MongoDB) after finding neither Google Analytics nor Mixpanel sufficiently useful
- Wrote campaigns for customer apps and tools to help create and process them (Python)
- Numerous internal company tools to improve productivity (mostly Python)
- Google AppEngine for various web services (dashboard, CDN, main web site, incoming analytics storage)
- Lead development of the Appington Dashboard (jquery, bootstrap, AppEngine ndb & memcache, Python)
- Developed a system that augments an existing packaged Android application with audio advertising system, so a customer doesn't have to make any changes to their Android application. This also allows for zero effort customer demos. (Android, Java, Python, apktool)
- Code injection to track and control application audio behaviour and visibility (Python, apktool/Smali)
Contractor/Consultant 2008 - 2012
Building infrastructures and plumbing together tools for evaluating and proving the ideas, and showing partners and investors what can be done and general product development. This required rapid development and working robust systems, responding quickly to questions and suggestions and coming up with ideas and feedback. I implemented server parts, web and Android interfaces.
Consultant/contractor reporting to CTO 2007
I was brought on to do product management for the Devon Client Connection Manager. The Connection Manager provisions and manages connections between thin clients and blades using Teradici chips that provide a high quality remote desktop experience. After doing initial roadmaps etc, I did development work to help bring the product to initial release and to ensure everything was covered.
- Initial product roadmap, admin web interface prototype, initial administrator visible component specifications
- Critique of partner products and protocols (security, future capabilities, interoperability with networking)
- Designed and drove changes in partner product to drastically simplify initial setup and configuration for customers, resilience to network and administrative changes
- Got a wiki up and going (trac), put in lots of content that wasn't being recorded anywhere
- Architecture for the various components
- Protocol specifications for intercomponent communication
- Found numerous bugs in components, fixed some serious ones (C++, QT, strace, ltrace, valgrind, gdb)
- Implemented Apache module (C, Python), REST style public interface (text, JSON, XML)
- Implemented CLI talking to REST (Python)
- Implemented a single command product build system that produced a VMWare appliance as output (Python, ccache, VMWare Server, Ubuntu debootstrap)
- Implemented a control console application inside appliance (Python, whiptail)
- Implemented an automated tester with device emulators (Python, nlite Windows installation customization, VMWare Server)
- Implemented a core dump catcher which grabbed all relevant information into a dump file (eg open files, memory maps, core image) and build system component for getting backtraces (Python, gdb scripting)
Juniper Networks (acquired Peribit Networks)
2004 - 2006
(Diverse responsibilities) Product Management Group, Application Acceleration Products Peribit Networks: Consultant reporting to CTO
A substantial part of my effort was focused on acceleration for the following protocols for the WX/WXC platforms (in addition to some others not made public):
- SMB/CIFS - Microsoft file sharing protocol
- MAPI - protocol between Outlook and Exchange
- HTTP - browser based applications
- SSL - secure sockets layer
Complete lifecycle for features/functionality
- Brainstorming of new ideas for enhancing existing product functionality and future functionality
- Techniques to accelerate various protocols and applications from customers
- 2 patent applications
- Subject matter expert on Microsoft protocols and products
- Product Management
- Assisted product managers
- Authored product requirement documents (eg for SSL acceleration)
- Implemented prototypes to judge user experience and feasibility (eg SSL acceleration proxy)
- Estimates of development effort and risk to guide product management and business development
- Architecture discussions as well as guidance on implementation issues
- Developed tools to analyse behaviour of our own and other products such as graphical display of file segment caching, heuristics for improving hit rates, csv output from Wireshark traces for pivot table analysis in Excel.
- Reverse engineered MAPI protocol, wrote Wireshark MAPI decoder
- Tools that caused degenerate behaviour to investigate edge cases and proper handling
- Test plan drafts to help QA ensure they provided complete test coverage
- Sourcing of testing tools, both free and commercial to help ensure compliance
- Authored benchmarking tools to evaluate performance (eg Microsoft Office automator, driving Internet Explorer)
- Initial drafts of material pushed out by product marketing
- Found flaws in competitor products (architectural and bad bugs), documented flaws in white papers with test cases
- Assisted support with customer issues
- Assisted escalations engineering with customer issues
- Gathered technical information from customers to establish how their protocol and application problems could be solved, producing reports on suggested solutions (go back to invention)
- Maintained Wiki for product group, used by product management and development, authored extensions such as display of CSV data and source code highlighting (MediaWiki)
- Authored numerous pages
- Worked across internal product groups on issues affecting multiple product lines currently and in the future
- Podcast on Windows Vista and WAN Optimization
- Active participant on internal discussion and help groups with sales engineers
- Business development
- Worked on technical side of business relationships with 3 major software companies
- Investigation of product fit and potential modifications to enhance joint value
- Developer productivity
- Evaluated static analysis tools
- Analysis of moving from SourceSafe to Subversion source code control system. Presentation to engineering, ran Subversion server and authored/enhanced scripts to migrate data.
- Spread usage of VMWare and Virtual PC in development and QA
Product competitive technical analysis and strategy
Various other work (all under NDA)
Background research and analysis.
Unfunded local startup
VP, Architecture, Design, proof of concepts and prototypes
- Helping with company strategy moving towards getting funding
- Architecture of distributed multi-media environment
- Development of prototype software: PocketPC 2002 Phone Edition, Windows XP Embedded, data and SMS, C++/MFC/Python, Linux web backend (PHP, Python, Perl and XML-RPC)
(Formerly IXI Limited, a division of The Santa Cruz Operation) 1993 - 2003
Cambridge, United Kingdom and then Santa Cruz, California
Various awards such as Employee of the Year, President's Club, Employee of the Quarter
Business Development Manager and Solutions Architect - Strategic Alliances Group
- Working with strategic partners to develop business and technical relationships, to the benefit of joint customers and partners.
- Technical consulting on customer projects.
- Feasibility study and prototype implementations of potential projects.
- Managing high priority customer issues, onsite visits.
- SunTone qualification of the Tarantella Enterprise product
Software Architect - Development Division
- Architecture, design and implementation of products
- Member of company wide Technical Strategy Group.
- Training world-wide, On-site consultancy.
- Reverse engineered Microsoft Terminal Services protocol (RDP) and file and print protocol (SMB).
- Tarantella - Three-tier application broker
- Tarantella is software that sits between an application server and a user with a web browser. It takes the application display protocol and provides a optimized display for the user. Additionally by acting as an intermediary it is possible to provide session suspend and resume, enhanced security, load balancing and similar functionality. I was the architect for the non-display side from inception through shipping, later taking on roles in sales, marketing and business development. The company renamed itself around this product. Version 1 was implemented in C++ with version 3 predominantly in Java. (Version 2 was just a marketing rebadge of version 1.) Now known as Oracle Secure Global Desktop
- VisionFS - SMB/CIFS server
- Running on Unix, VisionFS was written from the ground up to provide Windows file and print services. It was written in C++ and was the first C++ project for our division. There was an extremely strong emphasis on ease of use and data integrity. Much of the framework code was later used to kickstart the Tarantella project. I was the architect and team lead from inception through shipping.
- IXI Mosaic
- Many enhancements to NCSA's Mosaic web browser to add (then original) features such as integration of help and preferences, client side scripting, drag and drop and URL links. Implemented in C with TCL scripting.
- IXI Panorama
- Highly configurable and usable panning window manager based on the Motif Window Manager. Implemented in C with TCL scripting.
- IXI X.desktop
- Porting and maintenance of IXI's flagship desktop product. Implemented in C with proprietary scripting.
While at University I did 3 six month work placements (required as part of the degree).
- 1990 Contracting agency: Mostly data entry, but also IBM AS/400 and Cobol as well as supporting various external customer DOS and WordPerfect environments.
- 1991 ICL: Ported a UNIX virtual terminal protocol terminal emulator (it's all part of the OSI stack) to Windows 3.0 and later 3.1.
- 1992 ICL: Wrote an email gateway on UNIX between Novell's MHS system and X.400. Did third level support for Netware for UNIX.
Brunel University. BSc (Hons) Computer Science (Upper Second)
Uxbridge, London, United Kingdom (1989-1993)
Waterford Kamhlaba United World College of Southern Africa International Baccalaureate
Mbabane, Swaziland (1983-1988)
OPEN SOURCE/PERSONAL PROJECTS
I started these projects to solve various problems, and provided them as open source.
- Jia Mini Python
- Implements a subset of Python in Java and Objective C to allow for richer configuration and dynamic control
- Intended for Android but works on all Java implementations, and for iOS but works in Objective C implementations.
- APSW - Another Python SQLite Wrapper
- The only complete Python wrapper for the SQLite embedded database
- Implemented in C and Python. Works on Windows, Linux, Mac and other platforms.
- Downloads are around 20 per day. Package is included in most Linux distributions
I was the founder, project manager and lead developer. Leadership has since successfully been handed over to someone else and I am no longer involved.
- An open source program that allows for managing of of phonebook, calendar, wallpapers and ringtones with CDMA cellular phones. (Started with LG VX4400, now incorporates many other models and manufacturers). Ships on Windows, Linux and Macintosh.
- Integration with other APIs and data sources (eg USB, Windows Address Book, Outlook, vCards, Evolution)
- During its prime, downloads over 1,000 per day (about 6.5 million total). Used to be in the top 200 most active projects on SourceForge.
- Implemented in Python with wxPython GUI and some C extensions.
- Reverse engineered diagnostics protocol used in Qualcomm CDMA chipset phones
- Devised methods to update functionality on the phone (eg calendar, wallpapers and ringtones) that other sync programs did not support
Older projects are listed at my home page
I strongly believe that software patents should be reformed or abolished.