Curriculum Vitæ: Philip Carmody =============================== Personal Details ---------------- Name: Philip A.P. Carmody (preferred forename: Phil) Date of Birth: 13th February 1971 Address: Ristiaallokonkatu 4 F 131 02320 Espoo Finland Telephone: +358(40)5734741 (GSM) E-mail: pc@asdf.org Nationality: British Language: English Miscellaneous: Single (no dependants), no driving licence Availability: Immediate Location: Nordic/Baltic, Cambridgeshire, or London Education and Qualifications ---------------------------- 1988-1991 B.A. Hons. (Class 2:1) in Mathematics, Trinity College, Oxford 1986-1988 4 G.C.E. 'A' Levels, Weald College, Harrow Mathematics, Further Mathematics, Physics, Chemistry (all grade 'A') Special Papers in Further Mathematics, Physics (both grade 1 Distinction) 1984-1986 13 G.C.E. 'O' Levels, Buckingham College Senior School, Harrow (5 grade 'A', 3 grade 'B', 5 grade 'C') Work Experience --------------- Summary Languages: C, C++, Perl, PHP, SQL, sh, make, various assembly languages, and Lisp Development: Real-time, multitasking, kernel, O/S, graphics, parsers, drivers, GUI Platforms: Embedded, Unix (various), DOS Processors: x86, 68K, PPC, TI C80(RISC), Hitachi H8, Alpha, Sparc Philosophy: Reuse, standards, portability, abstraction, efficiency, 'correct tools' March 2004 - present Consultant, Mobliz Ltd, a telecommunications consultancy. Specification, design, implementation and testing of a both public-facing and operator-specific websites for an international GSM and WAP content- provision company. PHP and MySQL, with some integration to CrystalReports. July 2002 - Feb 2004 Sabbatical. Returning to my mathematical roots, I've been researching in the field of Computational Number Theory, in particular prime numbers. I have discovered many new algorithms which have increased the efficiency of hunting for large prime numbers. For example, I have discovered and implemented a new type of FFT, a Discrete Weighted Transform, which enables testing certain very dense families of numbers for primality as efficiently as the more famous Mersenne numbers. I have also implemented a client/server architecture to enable distributed testing of these numbers, and clients for a very wide range of architectures/OSes. The project ('PIES') has been extremely successful at finding large primes as listed on Professor Caldwell's official top 5000 primes list. I have also been contributing to several Open Source projects, again related to Computational Number Theory, including: OpenPFGW (efficient primality tester for arbitrary large numbers), Pari/GP (algebraic calculator), and GNU-ECM (integer factoring). I am now also an associate editor of Professor Caldwell's Prime Pages ( http://primepages.org/ ), and have helped in the design and testing of the latest incarnation of his top 5000 primes database. During this time I have also done website consultancy and implementation using CGI, PHP, SQL, and related technologies, for local companies. This also involved English language proofreading. December 1998 - February 2000 - June 2002 Software Engineer at Nokia Networks (Cambridge) as sold to Marconi, thence Nokia Networks (Kilo) as sold to TietoEnator. In Cambridge: Design and implementation of ASW-layer code for both the SDH Access Node family of products, and the underlying generic software architecture behind several families of broadband (SDH, PDH, and RF) and narrowband (V5) access nodes. All code was C++, but 1992 vintage. I found a niche as a very thorough code reviewer, and as being one of the only ones brave enough to delve into the oldest parts of the generic libraries in order to add features or perform bug fixes. In Kilo: Implementation, maintenance, and fire-fighting of V5 ASW code for the Narrowband Access Node, and again the generic ASW software. Implemented several features pertaining to V52 as per customers' ad hoc requirements. Maintenance was aimed at getting defect counts below acceptable levels for release milestones, and consisted mostly of finding and fixing old bugs in code written by many transient student placements. Spent several months ripping out all O(n^2) algorithms in all of the data structures, which made the nodes unusable as the number of user ports and other objects grew, and replacing them with o(n) algorithms. Initially I was working as part of a team of 8, but taking over responsibilities as each of the other engineers left, including my immediate manager. Finally responsible for ensuring all documentation was up-to-date for handover to TietoEnator. Version control was in ClearCase, with ARS for defect management. November 1997 - October 1998 Software Engineer at TTP Communications Ltd., Cambridge, GSM Mobile Application Group (formerly The Technology Partnership Ltd.). Design, implementation, maintenance, and testing of software for GSM handsets. Software was written in ANSI C to run on Hitachi H8 based target systems under the HIOS real-time kernel using an in-house kernel abstraction layer to facilitate easy porting to alternative processor/kernel combinations. All development was hosted on PCs running Windows 95; debugging was carried out using an in-house tool allowing individual tasks in the system to run on a host PC under the Borland C++ debug environment while other tasks in the system run on the target system hardware. Solely responsible for a user-interface resource builder/compiler in Perl and C using autogenerated makefiles/C/Perl and a Borland C build system. Also wrote tools in C++ using Borland Builder under Windows 95 to aid generation of individual user-interface components in a format suitable for the resource compiler. Version control was via the DOS command line version of PVCS. August 1996 - November 1997 Consultant at Scientific Generics Ltd., Cambridge. Both a consultant working with prospective clients and a general-purpose software engineer programming in the main in C/C++ and Perl. Highlights included sole responsibility for an off-line log analysis tool for an RF local-loop telephony system. This ran in C/C++/Perl over Unix (SunOS/Solaris and Linux) and, using HTML/CGI and Gnuplot, was usable over a distributed multi-platform network. Other work included PCI and higher- level drivers, and a simple co-operative scheduler (using coroutines) under Windows NT for a PC-based VOD streamer card. I also wrote many Perl productivity tools for many different projects, such as for the parsing and generation of ASN.1 and C source/headers from a common MIB. Version control was via ClearCase and the NT version of PVCS. December 1994 - August 1996 'DSP Software Engineer' at Loughborough Sound Images plc. (now 'Blue Wave Systems'). Real-time multitasking kernel maintenance and OS design and development for an H.320 Videophone in ANSI C and TI-C80-MP assembler. This included the design and implementation of object-oriented stream control functionality to cope with situations such as double-buffering, and of an object-oriented, message based control and status communication mechanism. All development was on Sun Unix (SunOS and Solaris) workstations, using TI's development system, and testing was performed on TI's C80 EVB. I was also involved in the design, implementation, and maintenance of an automated makefile configuration and build management system in Perl. I also wrote other productivity tools in Perl, sh, Lisp, and SQL. Version control was via CMVC. July 1994 - December 1994 Freelance artist and computer-art consultant. Worked with Dr. Makhoul, Art Consultant for Manchester City Council's Public Arts projects. Using a range of PC- and Mac-based products (using bitmap, vector, and 3D formats), I was involved with the design of, for example, logos and motifs, in particular for the Rusholme urban regeneration project. September 1993 - March 1994 Visiting lecturer in C++ and Object-Oriented Programming at 3 Institutes of Technology in Helsinki, Finland (a COMETT scheme). The C++ was limited to that supported by AT&T CFront 2 and some of CFront 3. Courses were to degree-level students who already knew C or other imperative languages, and consisted of lectures, tutorials, and workshops/practical sessions. Results counted towards the students' final degree results. I also assisted students with the writing of their (bachelor's) theses in English, and gave tutorials to help with programming aspects of their projects. July 1991 - September 1993 Analyst Programmer and team leader at Pinn Cowdery Ltd. Bespoke image manipulation utilities on PCs under DOS and Windows 3.1. Image compression, and hypermedia databases, written in ANSI C, C++, x86 Assembler, and SQL under Microsoft Access. Typically large format (A0 at 200 dpi) bi-level images (CCITT groups 3 and 4). Image rectification utility to straighten distorted scanned images and other image processing applications. Supplied bespoke image manipulation code in portable C to several large printer manufacturers. References ---------- Finding those under whom I have worked in the last 4 years will be non-trivial, but not impossible. One of my managers from each of what were Nokia Cambridge and Nokia Kilo should be findable on request. Interests and Activities ------------------------ My main non-work-related hobby is computational number theory, in particular efficient algorithm design. I have a strong interest in music and have a large and eclectic record collection. I have sung in both choirs and bands. I have designed and built a bass guitar from scratch. I enjoy arranging and performing /a capella/ songs, and have co-arranged songs for local bands. I also have designed and drawn album covers for friends' bands. I enjoy many indoor and outdoor sports, from bar billiards to basketball to karting. I enjoy camping, hill walking, and cycling. I am a frequent user of the Internet and its many resources. I am a regular contributor to the various newsgroups associated with the fields of computing with which I am involved. For example, I was briefly one of the moderators of the comp.lang.asm.x86 newsgroup.