Technical Skills & Experience Summary
- Good knowledge of a wide variety of other programming languages and technologies, including web, database and user interface frameworks.
- Familiarity with both Unix and Windows environments, including extensive use of standard Unix shells and tools
- Experience in designing, implementing and maintaining significant areas of functionality in a leading EDA tool and an advanced software medical imaginging device.
- Experience in leading a small development team within an R&D organisation, managing bug requests and work items, and being involved in the discussion and implementation of release plans.
- Research experience in both academic and commercial R&D settings, including publishing papers and presenting results at conferences.
June 2014 - Present
Involved in all aspects of the planning, architecture and implementation of a cloud medical image processing application based on a proven research prototype.
Cadence Design Systems Inc
Principle Product Engineer
January 2013 - May 2014
Working on the Encounter Digital Implementation System, a leading EDA tool, with responsibility for shepherding features from initial requirements, through specification and implementation, to release and maintenance. Specifically, I have been involved in numerous improvements to the Tcl scripting interface of the product.
Member of Consulting Staff
July 2011 - January 2013
Following the acquisition of Azuro by Cadence, worked on integrating the Azuro codebase into EDI. This included the reimplementation of key functionality, most notably the clock tree visualisation. Provided ongoing maintenance and support for both the standalone and integrated functionality.
Azuro (UK) Ltd
February 2011 - July 2011
Team Lead of the Core team, covering the areas of user scripting, cross-platform GUI, and core data infrastructure. Responsible for day-to-day supervision of two to three other developers, management of bugs and enhancements, and involvement in planning for future releases.
January 2007 - February 2011
Responsible for design and implementation of new features in various areas of the product, most notably visualisations and scripting infrastructure. Contributed to ongoing maintenance, including both bug fixing and customer support.
In May 2010, took on leadership of the Core team.
June 2004 - January 2007
Member of the R&D team for a growing provider of EDA (Electronics Design Automation) software tools, working on cross-platform GUI, user scripting support and core infrastructure in a combination of C++, Java and Tcl. Additionally, implemented and maintained build and other development tools in Python and other languages.
University of Cambridge
Supervisor, Computer Science
September 2000 - June 2004
Small group teaching of undergraduates for a range of courses from the BA and Diploma in Computer Science, and supervision of final year individual projects.
Fitzwilliam College, University of Cambridge
Supervisor of Studies for Computer Science
September 2002 - September 2003
Assisted Director of Studies with interviewing and selection of undergraduate candidates.
IBM Research Zurich
January 2003 - April 2003
Working as part of the E-Business Solutions group, prototyped an interface for the selection and invocation of Web Services, using vision-based tracking of physical markers.
Advanced C++ Course
Presented short lectures and assisted with practical exercises on a three-day course in advanced C++ techniques for professional programmers at Sony Computer Entertainment, Europe.
AT&T Laboratories Cambridge Limited
Member of Technical Staff
September 1999 - September 2000
Part of a research team working on software for the Sentient Computing project, centred on exploiting a fine-grained location system to create context-aware applications. To support such applications, the project also created a distributed architecture, based on CORBA objects and using a relational database for persistent storage. Most applications were implemented in C++ using a variety of libraries developed within the project. A small number were implemented in Python.
June 1998 - August 1998
Research and initial implementation of various technologies for inclusion in a subsequent version of Tarantella, a remote desktop product. This involved integration of C++ and Java, on a variety of Unix platforms.
University of Cambridge
PhD in Computer Science
September 2000 - June 2004
Research degree, investigating the use of end-user programming in a domestic ubiquitous computing setting. The work combines theoretical aspects such as programming language design and cognitive psychology with the implementation of practical systems.
BA in Computer Science (1st class)
October 1996 - June 1999
Taught degree, including courses in all areas of Computer Science, a group project (using Java) and an individual software engineering project (using C++ and Open GL).
The Dronfield School
September 1990 - June 1996
A-Levels in Biology, Chemistry, Maths with Mechanics, and Physics (Grade A), STEP papers in Maths and Physics (Grades 1 and 2), and S-Level in Biology (Grade 2). 9 GCSES (4 A*, 3 A, 2 B) including Maths and English Language at A*.
- Hague, R and Robinson, P (2006) End-user programming of reconfigurable systems: Experiences with Auto-adaptive and Reconfigurable Systems. Software Practice & Experience , Volume 36 Issue 11-12, John Wiley & Sons, Inc. Presents the Lingua Franca multi-language end-user programming architecture, the subject of my PhD research.
- Hague, R (2005) End-user programming in multiple languages. University of Cambridge Computer Laboratory Technical Report UCAM-CL-TR-651 PhD dissertation. Presents Lingua Franca, a system enabling the user to manipulate a program via multiple heterogeneous languages. The initial application area is end-user programming for home networks.
- Hague, R, Robinson, P., and Blackwell, A.F. (2003). Toward End-User Programming for Ubiquitous Computing (poster) In Adjunct Proceedings of UbiComp 2003 (Fifth International Conference on Ubiquitous Computing). Presents initial results of work on the multi-language end-user programming system Lingua Franca, above.
- Blackwell, A.F. and Hague, R. (2001). AutoHAN: An Architecture for Programming the Home In Proceedings of the IEEE Symposia on Human-Centric Computing Languages and Environments, pp. 150-157. Discusses the issues involved with End-User Programming in a domestic environment, and proposes an architecture for multiple scripting languages suited to this environment, focusing on the Media Cubes tangible programming language.
- Blackwell, A.F. and Hague, R. (2001). Designing a Programming Language for Home Automation In G. Kadoda (Ed.) Proceedings of the 13th Annual Workshop of the Psychology of Programming Interest Group (PPIG 2001), 85-103. Examines the issues surrounding language design in the context of domestic ubiquitous computing. The paper discusses the development of two languages; Iota.HAN, a systems programming language with a strong theoretical foundation, and the Media Cubes language.
- European Patent EP1136904: Method of and apparatus for actuating an operation One of three designated inventors on the above patent, pertaining to a result of the Sentient Computing project. The patent is owned by AT&T Laboratories Cambridge.
- Personal web site and blog: http://rob.rho.org.uk
- Full, clean UK driving license
References available on request