Dr. William Bland

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

Work
September 2007 - Present

I currently work at justin.tv, in San Francisco.

My work at justin.tv has included rewriting the chat server and the search engine, both of which were failing to scale sufficiently when I joined the company.

I've written a lot of Python code, and some Ruby/Rails code at justin.tv. I've also done quite a lot of Flash work (e.g. the video playlist and embedded chat).

2003 - September 2007

Macrovision, Silicon Valley, California

When the first startup I worked for was acquired by Macrovision, we were invited to move to California, where we were given the task of building from scratch Macrovision's new "Hawkeye" product.

While at Macrovision, I was responsible for a wide variety of work including:

  • Architecture, design and implementation of large distributed systems written in Java
  • 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
2001 - 2003

NetPD, internet anti-piracy company, London.

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

During my employment at NetPD I 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.

I was also 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 that time.

1997 - 2001

Department of Pure Mathematics, University of Nottingham.

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 intern at BT labs.

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

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:
  • Common Lisp, Javascript, Java, C and Python programming, bash shell scripting, all to an advanced level
  • Some Ruby, C++, actionscript 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 and CSS markup and presentation languages
  • Some Linux kernel module programming
  • Strong experience with subversion, cvs, Ant and make
  • 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
  • I designed and built an online multiplayer crossword game, clutu. Challenges included generation of complete crosswords with clues, client-server communication via ajax, and promotion of the finished website.

Qualifications
As a hacker 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 computing.

My formal education is in Mathematics:

  • Ph.D. in Pure Mathematics (functional analysis). Nottingham University, September 1997 - March 2001.
    Thesis title "Properties of Banach function algebras"
  • B.Sc. in Mathematics. Nottingham University, 1994 - 1997

Publications, Patents, Conferences
Publications and Patents:
  • "Completions of normed algebras of differentiable functions", Studia Mathematica 170 (2005), 89-111.
  • Patent 20050216433: Audio Matching
  • Patent 20070143405: Techniques for measuring peer-to-peer networks
  • Patent 20050091167: Interdiction of unauthorized copying in a decentralized network
Notable conferences:
  • Attended Y Combinator Startup School, Boston, October 2005
  • Attended International Lisp Conference, Stanford, June 2005
  • Spoke at 14th International Conference on Banach Algebras. Pomona College in Claremont, California, U.S.A., 1999

Fun
I like photography, hiking, kayaking, rock-climbing and playing my guitar. For more about me, see my website: http://abstractnonsense.com/