Interests | Timeline | Computing Experience
For a concise resume with publications, see here.
Information representation and search. Computational biology. Adaptive and evolutionary systems, particularly for search. Fitness landscapes and combinatorial optimization. Connections between evolutionary algorithms and heuristic search algorithms of AI and OR. Evolutionary biology and its connection with computer science. Complex adaptive systems and computational modeling. Algorithm design and analysis, particularly comparison-based algorithms for sorting and searching. Operating Systems. General theory of computer science, including automata theory, graph theory, combinatorics, programming languages, and memory management.
In March 2006 I founded Jon Software S.L. in Barcelona and later Fluidinfo in London, and then New York. Fluidinfo is a platform for openly writable shared metadata about everything.
Fluidinfo provides a no-questions-asked writable social object to represent each and every thing. Using a flexible underlying representation of information and a new model of control, it allows users and applications to work with information without constraint. That includes dynamically organizing, sharing, combining and augmenting information, and searching in ways that have previously not been possible. It also allows users to choose exactly which information to share with whom, with separate controls for reading and writing.
Fluidinfo makes it possible for data to be social. It allows almost unlimited information personalization by individual users and applications, and also between them. This makes it simple to build a wide variety of applications that benefit from cooperation, and which are open to unanticipated future enhancements. Even more importantly, Fluidinfo facilitates and encourages the growth of applications that leave users in control of their own data.
From August 2004 to August 2007 I was a research associate (i.e., postdoc) in the Department of Zoology at the University of Cambridge (UK). In a group of four, I did research on infectious diseases (particularly influenza), using a technique we call antigenic cartography, in which virus strains and antisera are viewed as a population of points in a high-dimensional space (determined by multi-dimensional scaling). This involves visualization of the evolution of virus strains over time; identification of upcoming epidemic strains, particularly in relation to vaccine design; processing of haemagglutination inhibition assay data; and attempting to quantify and understand the relationship between changes in the antigenic and genetic and spaces.
The most visible outcome of this work is our ongoing work with the WHO every six months to select the H3 strain for the human influenza vaccine. One of our group, Derek Smith (also in Zoology at Cambridge) attends the WHO strain selection meetings with the antigenic maps we produce, and with about ten others helps to decide the vaccine composition. About 250 million vaccine doses are made per year. We also work on producing antigenic maps for H5 pandemic strains, and for influenza virus in other species, especially horses and pigs. A paper we wrote, The Global Circulation of Seasonal Influenza A(H3N2) Viruses, was published in Science and was later ranked the world's 14th most important scientific result of 2008 by Discover Magazine.
From 2004 to 2006 I was a part-time professor in the Department of Technology (more or less Computer Science) at the Universitat Pompeu Fabra in Barcelona. I taught the first-year Ph.D. class on Theory and Algorithms.
During 2005-2007 I consulted for the Secondary Market Infrastructure Fund (SMIF) in London. I dealt with high-level IT issues, including helping them to move their IT in-house, migrating to Linux, IT hiring, and with a small amount of customized Zope, Plone, and Python hacking. SMIF was sold in 2007 for $1B.
I was the Chief Technical Officer, acting Chief Operating Officer, and a board member of Eatoni Ergonomics Inc. in New York during 2000-2004.
I led the design and implementation of Eatoni's software products and directed the technical team, ranging from 3 to 8 developers producing embedded software for extremely restricted computing environments. Our product achieved high penetration and sales in the cordless digital (DECT) phone market. I was the technical lead in ensuring portability to architectures including Windows, Linux, 8051, ARM, CR16B/C and several others. I was responsible for design and implementation of all aspects of intranet, network security / firewall, database, automated software quality control and testing, configuration management, website traffic analysis, automated documentation, software packaging and delivery. I co-authored and presented research papers, and co-authored patent applications. I oversaw web site creation, linguistic research, bug-tracking databases, outsourced development projects, and the development of several demonstration programs.
I was closely involved in successful negotiations with mobile and cordless phones manufacturing companies including Siemens, Philips, Panasonic, Sanyo, Alcatel, BenQ, Vtech, and Sagem. I was the technical contact with all contracts. I was closely involved in product pricing strategy, company financing, and budgeting. I created and maintained the company stock option plan and wrote code to model company finances and capitalization structure. I was involved in investor relations, hiring, contract negotiation, IP portfolio development, technical sales and marketing, and working with external PR, accounting, and legal firms.
I was a postdoc at the University of California, San Diego in the Department of Cognitive Science, supervised by Jim Hollan in the Distributed Cognition and Human Computer Interaction Laboratory.
There I worked on the development of a novel representation of information, and completed the design and implementation of a threaded TCP/IP client-server architecture providing access to information stored in this format. This work was driven by interests in changing the way people work and program, and in building architectures to allow us to look at information differently. I am very interested in how this format might change the way we work and program, and in building alternate architectures to allow us to look at information differently.
I owned and ran Teclata in Barcelona. Teclata was a small web design and ISP company that I co-founded with Ana MosterÝn in March 1996. I did many things: running the company in general, financing, marketing, pricing, strategy, sub-leasing bandwidth, supporting co-located servers, and hiring. I looked after or organized all technical needs: running the web server; generating HTML; writing CGI programs; network security, kernels, PPP, ISDN, FTP, sendmail, pop, named, intranet, a modem pool, etc. In 1998 we sold Teclata to Filnet so I could move to UCSD to pursue more research work.
I was the Chief Knowledge Engineer for Chiliad, an internet publishing company we launched at the Frankfurt Book Fair in October 1997. Chiliad was based in San Francisco, London and Aix en Provence, with development mainly done in Teclata's offices in Barcelona. Chiliad is now based in Massachusetts. I was responsible for the design and development of Chiliad's original product, a networked modular content and authoring system. I also evaluated, integrated and customized third-party search engine software, and maintained the company web site.
I was a visiting professor in the Dipartimento di Economia Politica at the UniversitÓ di Modena, Italy. I gave two special short courses (8 ninety minute lectures) on Evolutionary Computation in April 1996 and May 1997. The 1996 course, and some other lectures I gave in Italy during that time are described here.
I worked as an occasional internet proxy and security consultant for the Junkbusters Corporation in New Jersey. I provided low-level advice on HTTP proxy deployment, and participated in the design and coding of the Internet Junkbuster, an HTTP proxy for web browsing with a variety of privacy options, including cookie removal, advertisement blocking, customized browser identifiers, and referrer settings.
I was a Graduate Fellow and then a Postdoc at the Santa Fe Institute in Santa Fe, NM. At SFI I implemented John Holland's Echo system from scratch. Echo was a system for the simulation, modeling, and general research into complex adaptive systems, with typically an emphasis on economic or ecological systems. In March 1995 I demonstrated Echo to the U.S. Vice-president, Al Gore.
While a Graduate Fellow I also worked on my Ph.D., a computational and theoretical investigation of evolutionary algorithms and their relation to search in general.
After leaving Indiana University for SFI, I became a Ph.D. student in the Computer Science Department at the University of New Mexico in Albuquerque, NM. I was supervised by Stephanie Forrest. My doctoral dissertation was titled Evolutionary Algorithms, Fitness Landscapes and Search and I had a 4.0 GPA.
I entered the UNM ACM computer science programming competition four times (1994, 1995, 1997, 1998), partnering with Ron Hightower. We placed 1st three times, and 2nd once.
After finishing my Ph.D. and while waiting for a US H1B visa to start a postdoc, I worked briefly as a research programmer in the School of Computer Science and Engineering at the University of New South Wales. I wrote a suite of tools to process an NNTP feed and extract articles matching regular expressions for users. The articles were converted to HTML to allow users to easily browse interesting news from across all usenet newsgroups.
I was in the Ph.D. program, in the Computer Science Department at Indiana University in Bloomington, IN. I took classes in Computer Science and Cognitive Science, and had a 4.0 GPA. I was also a Research Assistant and occasional lecturer for the 4th year and graduate course in algorithms (C464). I designed exams and assignments, and graded them.
In May 1992 I left IU for a research position at the Santa Fe Institute, and never looked back.
At IU I was a member of the Fluid Analogies Research Group, doing Artificial Intelligence and Cognitive Science research at the Center for Research on Concepts and Cognition (CRCC) with Douglas Hofstadter as my Ph.D. supervisor.
While at the CRCC I also managed a small network of SUN machines. This included typical UNIX administration tasks, including NSF support, backups, account creation, file system management, software upgrades and installation, and system security.
During this time I was a visiting professor of Computer Science at Earlham a liberal arts college run on Quaker principles in Richmond Indiana. I designed and taught two courses: Programming Languages (CS71, Fall 1991) and Design and Analysis of Algorithms (CS63, Winter 1992). These were upper-level (3rd year) Computer Science courses.
I was a software developer in the kernel group of PCS Gmbh in Munich from September 1989 through May 1990. Amongst other things, I ported the 55,000 line SysVr3 printer spooler to the company's own UNIX implementation (MUNIX), added TCP/IP support for spooling print jobs through a terminal server, and did other low-level C programming for various aspects of the company's UNIX product.
For fun at PCS, I designed and implemented strsed (now used in the OS X Darwin ports collection), a powerful C language string-processing function for use by Jordan Hubbard who was in the company's X11 group. I also designed and implemented a dynamic escape sequence parser for Emu, an xterm replacement built by a small group at PCS, and which is now distributed as part of HP-UX after PCS was acquired by Hewlett Packard.
I completed an M.Math in eleven months (very little sleep, most of it in the Math Faculty lounge) in the Computer Science Department at the University of Waterloo in Ontario, Canada. I then enrolled in the Ph.D. program. I passed the qualifying exams in the first week of the Ph.D. program, and maintained an A average. My research was on algorithms and lower bounds for the median problem, supervised by J. Ian Munro. At Waterloo I held a Canadian Commonwealth Scholarship, five of which are awarded annually to Australians. I withdrew from Waterloo in May 1989 - far too cold and cloudy, and I had developed a correspondingly dense existentialist fog to match the weather.
In 1986 I worked in a team of three for a group of Australian banks to perform a detailed cryptographic / security evaluation of the architecture of a proposed standard for EFTPOS (Electronic Funds Transfer and Point Of Sale) systems.
For five months at the start of 1986, I worked as a programmer for Micro FortÚ in Sydney. We wrote an America's Cup yachting game for the Commodore 64 (in 6510 assembler), regularly working 85-105 hours/week and sleeping in the office. The game sold internationally and was featured in Commodore's software Christmas pack that year. Despite our efforts, Australia lost the cup.
I received a B.Sc. with 1st class honors in the Computer Science Department at the University of Sydney in Australia. My honors thesis, supervised by Jennifer Seberry, was titled Secrecy and Authentication and resulted in a provisional patent help with Sydney University on a biometric typing style authorization system.
As a 4th year undergraduate I was also a Tutor in the Department of Computer Science from June 1984 to Oct. 1984 and Feb. 1985 to May 1986. This involved teaching 1st and 2nd year classes of approximately thirty students and marking their assignments.
I taught night classes at the Worker's Education Association in Sydney. I designed and taught courses on introduction to computing from June 1985 to May 1986.
I finished the 3rd year of my B.Sc. early (in two terms instead of three) and for five months during the rest of that year I worked as a software developer for Kilpatrick Green Pty. Ltd. (since acquired by the United Group) in Sydney. This involved programming in Ratfor and DCL under VMS.
At Cranbrook School in Sydney, Australia, I was head prefect and school captain, captain of rugby, and captain of chess.
Between 1982 and 1995, I took over 60 university computer science courses, including: Pascal, Fortran, Numerical Methods, Machine Principles, Data Structures, Numerical Analysis, Theoretical Computer Science, Digital Logic, Languages and Translators, Databases, Computability and Complexity, Analysis of Algorithms (twice), Operating Systems, Computer Architecture, Graphics, Software Engineering, Advanced Programming, Compiler Construction (twice), Microprocessors, Cognitive Computation, Graph Algorithms, Coding Theory, Cryptanalysis, Concurrent Programming, Computer Architecture, Formal Languages, Text Algorithms, Network Algorithms, Advanced Operating Systems, Lower Bounds and Implicit Data Structures, Advanced AI, Introduction to Cognitive Science, Neural Modeling, and Machine Learning.
I also did 3 years of mathematics as an undergrad (and plenty as a graduate) and have some knowledge of statistics.