Home Address and Telephone Number available on request.
http://www.linkedin.com/in/billhails
Until recently I was an architect and developer for Yahoo! Europe, specialising in platform tools for content management, site configuration, internationalization and localisation. Although titled an architect, I am still very much a “hands on” developer and enjoy seeing elegant ideas turned into elegant working code. My other main areas of expertise and interest are in network programming and in programming language architecture: I am comfortable with numerous programming languages of various types and am the author of an online book Exploring Programming Language Architecture in Perl for which I have received many favourable comments and reviews from the Perl community.
I have recently joined the API team at LOVEFiLM. It is too early to give an account of my experiences here.
Platforms: Linux. Primary Languages: Perl.
My most recent work has involved developing tools and techniques for retrofitting unit tests to a large, unruly and untested code base, in order to then refactor that code into a more manageable shape. Another recent significant project at Yahoo! was a code generation system which generates an entire application: php library API, web services and database schema, all from a simple XML specification. This was used to generate a TV listings API based on the BBC programming ontology. Before that I was one of the two lead developers of an open source tool called r3 (http://developer.yahoo.com/r3) which unifies and crystallizes the core techniques for i18n that we have been developing at Yahoo! Europe over the past ten years. Before that I was lead developer of the content, template management and i18n/l10n system which powers most of Yahoo! Europe in seven languages concurrently and runs Yahoo! news and media sites worldwide. During that project I also single-handedly designed and implemented a replacement for TibCo’s “Rendezvous” system: a message-passing publish/subscribe networking transport layer which is still in use throughout Yahoo! Europe and underlies the event driven news publication system there and elsewhere within Yahoo.
Platforms: FreeBSD, Linux. Primary Languages: Perl, C, Shell Script, SQL, PHP.
Contracted to BT, I was involved in developing and maintaining network management software for X25 networks, I also developed tools for transforming C programs into hyperlinked and cross-referenced html pages for documentation purposes.
Platforms: SunOS, Primary Languages: C, Shell Script, Perl.
In this post I designed and implemented an in-house programming language for automated telemarketing. This language was used by other developers to write telephone-answering applications. It had many interesting features including voice and DTMF recognition and concurrent regular expressions over DTMF strings. It also abstracted the “soft” errors of recognition failure into declared handler blocks outside of the main control flow allowing the developer to get on with writing the application. The language also and had a built-in SQL query capability. Since the language had a large database behind it for information capture, I also had the role of DBA for a large Informix database. More recent developments involved extensive use of databases and m4 for rapid application configuration. While in this job I authored the open-source interface between Perl 4 and Informix SQL called “isqlperl”. This predates DBI and was actually done in consultation with Tim Bunce who was working on the design of DBI at the time.
Platforms: SunOS, SCO-Unix, Primary Languages: C, C++, Perl, m4, SQL, PostScript, some Java.
Worked on design and development of software to control nuclear power stations.
Platforms: VAX, PDP. Primary Languages: Mostly C, some COBOL.
Developed Graphics software for arcade “trivia quiz” games.
Platform/Language: 68000 Assembler, and some Pascal on bespoke hardware.
Routine laboratory work, plus a part-time project gene-mapping antibiotic resistance in Streptococcus pneumoniae.
University of Warwick — Bsc. (hons) Microbiology and Virology, 1979-1982
I am familiar and comfortable with numerous programming languages of various types, including but not limited to OO (Perl, C++, SmallTalk, PHP, Ruby, Java, JavaScript, Objective C, XLisp) Functional (Scheme), Procedural (C, Pascal, TCL) Logic (Prolog) and assorted others (Forth, PostScript, SQL etc.) I have good OO design skills and am very well-versed in design patterns. I also have a solid background in network programming on top of the TCP/IP API (though perhaps a bit rusty at present) and good understanding and experience of relational database systems both from a dba perspective and a design one. I am proud to be a completely self-taught programmer, my first computer was a Sinclair Spectrum back in 1983. From that I taught myself BASIC, then Z80 Assembler, then taught myself Lisp by implementing a lisp interpreter in Z80 on that machine.
Outside of work, I am a classically trained pianist and enjoy playing and writing music; I also enjoy photography and computer graphics using the open source ray tracing system POV-Ray. Lastly I’m a keen amateur archer.