Dr. William Bland

d o c t o r b i l l @ g m a i l . c o m

2003 - Present

Macrovision, Silicon Valley, California

When the first startup company I worked for (NetPD, see below) was sold to Macrovision, I was invited to join the old team at their new location in California. We were given the task of architecting from scratch Macrovision's new "Hawkeye" product line, which continues to be successful today.

Since joining Macrovision, I've been responsible for a wide variety of work including:

  • Architecture, design and implementation of large distributed systems written in Java
  • Management of small programming teams and projects
  • Large amounts of network programming in Java, particularly NIO (non-blocking I/O), for servers that are required to maintain and service upwards of 25,000 simultaneous connections
  • Various meta-programming tasks, e.g. automatic generation of human-readable documentation from Java code (mostly accomplished using the ANTLR parser-generator and similar tools)
  • Various novel solutions to difficult problems, for example writing a very fast cache for a database server when our SQL queries (on about 14 million rows) were taking several minutes
Late 2002

Red-M, a wireless networking company.

When I started working as a Development Engineer at Red-M, the company was in the process of splitting up a large C++ application into a core application and several plug-in modules. Both the core and the modules were written in C++. My primary task was to write many of the C++ plug-ins. I also wrote a bridge between C++ and Scheme that allowed plug-ins to be written in Scheme instead of C++. Writing plug-ins in Scheme decreased the amount of code required and led to significantly faster development times because the plug-in code could be debugged and altered while it was running.

RedM ran into severe financial difficulties quite quickly after I joined them, and I was let go along with almost the entire engineering staff in November 2002.

2001, 2002

NetPD Ltd, an internet anti-piracy company.

As the second employee at the London-based startup NetPD, I was responsible for anything and everything from Java, C and C++ programming to UNIX administration and even reverse engineering of network protocols.

During my employment at NetPD I was personally responsible for designing and implementing a system for automated scriptable control of a cluster of PCs running Microsoft Windows by one PC running Linux. The system was implemented in Java, with an applet front-end running in a web browser and communicating with the back-end (another Java process) over tcp/ip. Control of the Windows PCs by the Linux PC was achieved using the VNC (Virtual Network Computer) protocol. I had to write my own VNC implementation since there was no open source VNC library for Java at this point.

I also co-designed and co-wrote a program that matched a given piece of audio with a large database of music recordings. The matching was sufficiently robust that it could cope with the distortions introduced by mp3 encoders, loudspeakers and microphones. The algorithm we designed to do this is currently the subject of a world-wide patent application.

1997 - 2001

Department of Pure Mathematics, Nottingham University.

My time at Nottingham included:
  • Three months spent as a Guest Researcher at Brown University, USA
  • Presentation of original research at International Banach Algebra Conference in California, 1999
  • Weekly lectures given to undergraduate students
  • Regular marking of undergraduate coursework
  • Talks at seminars given to audiences of up to two hundred people
1997, 1996

Summer placements at BT labs.

Writing HTML web pages and CGI programs that accessed Oracle databases in C++.

Computing Experience
I bought my first computer, a ZX81, when I was nine years old, and have been programming various computers ever since then. My experience includes:
  • Java, C and Common Lisp programming, UNIX shell scripting, all to a very advanced level
  • C++ and Scheme programming
  • Extensive use of Emacs, including ELisp programming
  • Working in a UNIX environment since 1995 (originally Sun Sparc and, from 1999, Linux)
  • SQL databases (Oracle while at BT, and MySQL at NetPD and Macrovision)
  • Installation and administration of Linux and various servers (e.g. Apache and Samba)
  • The LATEX scientific typesetting language, and the HTML web typesetting language
  • Some Linux kernel module programming
  • Strong experience with cvs, subversion, make and Ant
  • Good knowledge of awk, sed and other Linux/UNIX command-line tools
  • I have contributed, in my spare time, code to several Free and Open Source projects
  • I wrote, and currently maintain, a search engine for documentation of the Lisp programming language: lispdoc.com

As a computer scientist I am almost entirely self-taught. I have a very proactive attitude to my own education and continue to strive to keep up with the latest developments in all areas of computing.

My formal education is in Mathematics:

  • Ph.D. in Pure Mathematics (Banach algebras). Nottingham University, September 1997 - March 2001
    Thesis title "Properties of Banach function algebras"
  • First degree: Mathematics BSc (Hons) 2:1. Nottingham University, 1994 - 1997

Publications, Patents and Conferences
Publications and Patents:
  • "Completions of normed algebras of differentiable functions", Studia Mathematica 170 (2005), 89-111.
  • Patent 20050216433: Audio Matching
  • Patent 20050091167: Interdiction on peer-to-peer networks
Notable conferences:
  • YCombinator Startup School, Boston, October 2005
  • International Lisp Conference, Stanford, June 2005
  • 14th International Conference on Banach Algebras. Pomona College in Claremont, California, U.S.A., 1999

Other interests
I enjoy photography, hiking and canoeing among other things. For more details see my website: http://www.abstractnonsense.com/