Curriculum Vitæ Summary: Phil Carmody
|Year of Birth:
||Appointed Apple Cooperative Researcher under the supervision of
Professor Richard Crandall of Apple's Advanced Computation Group
to investigate high-performance numeric computation, specifically
on the Power Architecture.
||B.A. Hons. (Class 2:1) in Mathematics, Trinity College, Oxford.
||4 G.C.E. 'A' Levels, all grade 'A':
Mathematics, Further Mathematics, Physics, Chemistry.
2 Special Papers, both 'Distinction':
Further Mathematics, Physics.
April 2014 - October 2018
Senior Software Engineer, Dovecot Oy / Open-Xchange Oy, Finland
- Member of a very small team of software engineers working directly under Timo Sirainen, original author of Dovecot.
- Responsible for implementing several major new features for the IMAP server, which as of May 2015 I am not at liberty to disclose.
- General quality improvements throughout the core codebase. Much more extensive test suites written. Security hardening.
April 2013[*] - Oct 2013
Tizen Kernel Developer, Samsung Electronics, Finland
- Member of the embryonic Open Source Group, with general Linux kernel responsibilities.
- More specifically, Linux kernel development for the Exynos platform for the Tizen project.
- Assisted rebasing Tizen kernel onto several more modern mainline releases, and with preparation of patches for upstream in order to minimise the delta.
- As this was a small new office, assisted with various tasks where my expertise would be useful: interviewing candidates, evaluating coding tests, configuring networks, maintaining servers, etc..
- [* Acted in an occasional advisory role even back in 2012, before the office was actually set up.]
January 2009 - June 2012
Linux Kernel Developer, Linux Kernel Maintainer, Nokia Maemo/MeeGo/...
- (2009-2011) As member of a core bug-fixing team, responsible for analysis
and triage of Linux kernel issues, fixing or reassigning as appropriate.
- (2009-2011) Responsible for a couple of small drivers (e.g. touchscreen & watchdogs).
- Took a very active role in code review for almost all kernel teams - display, input devices, networking, telephony, power management, etc.
- First-line reviewer for all patches from the security team.
- (2012) First-line reviewer for all patches from SoC vendor.
- (2011-2012) Maintainer of the N9/N950 project's Linux kernel, receiving pull requests
from about 8 other teams and tracking the upstream stable kernel.
- (2010-2012) Wrote parts of a Perl/sh bot to automatically manage testing and
merging of pull requests in order to make the previous task mostly trivial.
- Led several 'stop console spam' drives across the whole project.
Similarly assisted power management team's crusade against regular wake-ups.
- (2009-2011) Occasionally headed up into user-space to look at components like busybox and X's input layer interface.
- Maintained kernel teams' wiki pages.
- Maintained repository of productivity tools for tasks such as git use, testing, debugging, etc. .
- H/W platforms included ARM-based SoC's from TI and Broadcom.
- Version control in git.
- Defect management in bugzilla.
January 2007 - December 2008
Occasional freelance consultancy
- Security consultancy - hacking, and hardening interactive
- Specification, design, and development consultancy for a
couple of start-up companies requiring interactive websites
February 2005 - December 2006
Field Application Engineer, Freescale Semiconductor
- On-site engineer supporting a customer's 2.5G GSM project. Embedded
for the critical last 6 months of the project to assist with various
aspects of their software development and testing process. Documentation
creation, (customer) documentation review, (customer) code review, and
debugging and maintenance of Freescale's platform code (C/RTOS).
- Local support for all Linux-based mobile telephony and other
portable devices, based on Freescale's iMX31 and related platforms, in
Finland. Hands-on assistance customising Linux kernel, eCos (redboot)
bootloaders, etc. for project-specific hardware configurations.
- Local support for flagship Symbian-based mobile phone project
with major Finnish partner. Specific responsibilities included verifying
integrity of deliverables, documentation and code review, and on-site
assistance at integration camps.
March 2004 - February 2005
Consultant, Mobliz Ltd., a telecommunications consultancy.
- Software specification, design, implementation, and testing in projects including:
All using PHP and MySQL.
- Database backend for GSM and WAP content provision.
- Web-based administration tools for the above.
- Bespoke helpdesk management system.
- Wrote many productivity tools in Perl and sh.
- Version control using CVS.
July 2002 - February 2004
Sabbatical - Research in the field of Computational Number Theory.
Implementation of client, server, and client payloads for distributed computing
project. It was mostly this private research that was behind my appointment as
a Cooperative Researcher in Apple's Advanced Computation Group.
Freelance PHP/SQL web consultancy.
December 1998 - February 2000 - June 2002
Software Engineer at Nokia Networks (Cambridge), which became Marconi,
and subsequently Nokia Networks (Kilo, Finland)
- Design and implementation of ASW-layer software for broadband and narrowband communication equipment, including:
all of which were in C++.
- Termination point handlers for SDH, PDH, and RF access nodes;
- Generic software architecture behind all ASW components;
- Maintenance of historical common libraries;
- Ad hoc customer requirements for V52 access node;
- Maintenance of a script-based simulation/testing platform for multi-slot racks in Perl.
- Version control in ClearCase.
- Defect management in ARS.
November 1997 - October 1998
Software Engineer at TTPCom Ltd., Cambridge, GSM Mobile Application Group
(formerly The Technology Partnership Ltd.).
- Design, implementation, maintenance, and testing of software for GSM
handsets, including sole responsibility for:
- Graphical user-interface design tool in Borland C++-Builder.
- User-interface component compiler and automatic code generation tools in Perl.
- Optimising 'dirty-rectangle' LCD driver in C.
- Compression/decompression and caching libraries in C.
- Implemented a build management system in Perl.
- Version control was via DOS PVCS.
August 1996 - November 1997
Consultant at Scientific Generics Ltd., an IT consultancy in Cambridge.
Various roles in various projects:
- Off-line log analysis tools for RF local-loop telephony system in C/C++/Perl.
- Web-based front end for those tools using CGI and gnuplot.
- Wrote productivity tools in Perl.
- Automatic code generation tools to generate C source/headers and ASN.1 from a common MIB.
- PCI drivers for a VOD (MPEG2) streaming system.
- Version control was via ClearCase and the NT version of PVCS.
December 1994 - August 1996
DSP Software Engineer at Loughborough Sound Images plc. (who became
Blue Wave Systems, and were later absorbed into Motorola).
- Software specification, design, implementation, and testing for:
- OS for H.320 videophone card in C on TI's C80 DSP.
- Triple-buffering screen driver for the above.
- Maintenance of C microkernel.
- Wrote automated build configuration in Perl.
- Wrote productivity tools in Perl, sh, LISP, and SQL.
- Version control was via CMVC.
July 1994 - December 1994
Freelance artist and computer-art consultant.
Worked on Public Art projects for Manchester City Council, using a
wide range of PC- and Mac-based products.
September 1993 - March 1994
Visiting lecturer in C++ and Object-Oriented Programming at 3 Institutes
of Technology in Helsinki and Espoo, Finland.
- Lectured students who were already familiar with C or other imperative languages in:
- Object-Oriented Programming.
- Practical (real-world) programming.
- Assistance with students' (bachelor's) theses in English.
- Supervised lab sessions, and gave 1-on-1 tutorials on programming-related aspects of their projects.
July 1991 - September 1993
Analyst Programmer and team leader at Pinn Cowdery Ltd., a computer graphics consultancy in London.
- Responsible for specification, design, implementation, and testing of various projects:
- Image compression tools for large (A0) bi-level images.
- Hypermedia database in C/C++/SQL.
- Image rectification utility for straightening scanned images such as maps.
- Low-level drivers for various printer manufacturers.
- Supervised teams of placement students working on small projects like printer drivers and RIPs.
Fields of Expertise
- Platforms: Unix (Linux/BSD), various embedded/realtime.
- Processors: x86, ARM, 68K, PPC/POWER, Alpha.
- Development Tools: git, make, ClearCase, CVS, CMVC, PVCS.
- Expertise as above.
- Familiarity with: C++, LISP, sed, Java, Python, Tcl, Tk, awk, Mathematica, GP.
- Linux/Unix: programming, network programming, administration, network administration, and use.
- Embedded/realtime: VxWorks and various vendor-specific OSes - HI, TI.
- Windows: avoided where possible, mostly console programming.
- Expertise as above.
- Familiarity with: Sparc, HPPA, TI C80(DSP).
- HTML, XHTML, XML, XSLT
- HTML preprocessors - PHP, ePerl, JSP
- Templating engines - various
- Apache administration, Tomcat
- Java applets
- Client/server distributed computing
Last Edited: 2012-06-18