Stephen Kell

About Me

Photo by Ohad Barzilay. Thanks, Ohad.

From May until October 2013, I'm a Research Assistant at Oracle Labs. I'm also a visiting researcher at the Computer Laboratory at the University of Cambridge, although my next in-person visit probably won't be until October. Until recently I was a postdoctoral researcher at USI's Faculty of Informatics in Lugano, Switzerland. Contact information is at the bottom of this page.

I am a practical computer scientist with wide interests. My goal is to make it easier and cheaper to develop useful, high-quality software systems. So far, my work has mostly focused on programming languages, other programming tools, and the systems that support them—including language runtimes and operating systems.

I am also something of a “systems” researcher. It's been a while since I did any work in the areas usually labelled that way, but I see “systems” as a mindset rather than a research topic. It means I am primarily interested in the practical consequences of an idea; its abstract properties are of interest only subserviently. (If you can come up with a better definition of the “systems mindset”, let me know.)

Currently my work is on the Alphabet Soup project, with a focus on infrastructure for debuggers and other observation-based tools. My work in Lugano was based within the FAN project, which has yielded a few publications recently. Don't hesitate to contact me to find out more about either of these. You can also see a periodic snapshot of what I'm working on

I have some background projects concerning composition of mismatched software, dynamic language implementation, debuggers, runtimes and the like. You can read more about those below. A recurring theme is that I prefer integrating programming infrastructure at relatively low levels in the software stack, to the extent that this is sensible (which I believe can be surprising).

Micro-blog and calendar

Recent blog entries

Very brief biography

Previously I was a PhD student at the University of Cambridge's Computer Laboratory, based in the Networks and Operating Systems group under the supervision of Dr David Greaves. My PhD work centred on the problem of building software by composition of ill-matched components, for which I developed the Cake language. I remain an occasional visitor to the Computer Laboratory, and am also a Fellow of the Cambridge Philosophical Society.

From January 2011 until March 2012 I was a research assistant in the Department of Computer Science at the University of Oxford. There I worked as a James Martin Fellow, within the research programme of the Oxford Martin School's Institute for the Future of Computing. My work mostly focused on constucting a continuum between state-space methods of program analysis (notably symbolic execution) with syntactic methods (such as type checking). There is more work to do—keep a look out for papers.

I also did my Bachelor's degree in computer science in Cambridge, graduating in 2005. I then stayed on for a year as a Research Assistant, before starting my PhD in 2006. See my history section for more information.

My professional development experience includes some spells working for Opal Telecom and ARM around my Bachelor's studies. More recently, I have been consulting for Ellexus.

During summer 2007 I took an internship at Fraser Research, doing networking research.

You can find a version of my CV here, though be aware that it may be a little rough or incomplete at times. If you're recruiting for jobs in the financial sector, even technical ones, please don't bother reading my CV or contacting me, as I promise I am not interested.

Research

Current work

Here's a snapshot of what I was working on as of February 2013, with links to any publications in existence. There will be papers about all these things at some point. (As of May 2013, my non-Oracle work is dormant until October.)

My stuff
Collaborations

Publications

See also my author page on DBLP (with much credit to Michael Ley for this superb service).

Manuscripts, reports, abstracts, dissertations

Talks

Interests

My research interests are outlined at the top of this page. In summary: although broad, they fall mostly within the intersections of systems, programming languages and software engineering.

I keep a calendar of approximate submission deadlines and event dates for most of the conferences and workshops that I might conceivably attend, together with a few for which it's verging on inconceivable. In case it's useful, here it is.

PhD work

For my PhD I worked on supporting software adaptation at the level of the operating system's linking and loading mechanisms. Here “adaptation” means techniques for connecting and combining software components which were developed independently, and therefore do not have matched interfaces. My emphasis was on techniques which are practical, adoptable and work with a wide variety of target code, at the (hopefully temporary) expense of safety and automation.

The main focus of my work was Cake, a special-purpose language for describing relations between the interfaces of binary components (specifically, relocatable object code). Cake makes heavy use of DWARF debugging information, and can be considered interesting in several ways: as a domain-specific rule-based programming language; as a “composition”, “configuration” or “linking” language; as a dynamic language; as a runtime system sharing commonalities with garbage collectors and debuggers. It does not really make contributions in the domains of module systems or linking models.

To find out more, please browse my publications, and do contact me for more information. There will hopefully be one or two more papers appearing on additional work that I did during my PhD years. My dissertation will be available too, once I have the final version ready.

Support and acknowledgements

I'm very grateful to EPSRC and Cambridge Philosophical Society for the funds which supported my PhD research work and some related travel, and to the Graduate Research Fund and Emily & Gordon Bottomley Fund of Christ's College, EuroSys, The Royal Academy of Engineering, ACM SIGSOFT and ACM SIGPLAN for additional support of my research travel and conference attendance.

Departmental activities

In Cambridge, I coordinated the NetOS group talklets from January 2009 until January 2010. I also had a librarian-like role of curating a small group library and keeping a very vague track of the various books we had lying around (local users: see /usr/groups/netos/library). Finally, I looked after (in a rather neglectful fashion) the Atlas Room BBC Micro (about which I should write more some time).

Professional activities

I'm a member of the ACM, ACM SIGSOFT, SIGPLAN and SIGOPS.

Currently I am on the programme committee for PPPJ 2013. I am also publicity chair for SC 2013.

In the recent past I have been on the programme committee for RESoLVE 2012, at ASPLOS, and the shadow programme committee for Eurosys 2012.

Previously, I was privileged to contribute external reviews for a few submissions to EuroSys 2009, one for ESOP 2010 and one for SVT at SAC 2012.

Students

For now, my research “leadership” is confined to the student projects I've been known to supervise, which are in the Teaching section. I am always interested in working with enthusiastic Bachelor's, Master's and doctoral students. I maintain a list of project ideas, and am always happy to talk about other ideas.

History

During 2005–06 I was a Research Assistant in Cambridge on the XenSE and Open Trusted Computing projects, under Steven Hand. Both projects seek to implement a practical secure computing platform, using virtualisation (and similar technologies) as the isolation mechanism.

XenSE never had a web page of its own, but you might want to look at the abstract on the project's EPSRC Grant Portfolio page, or check out the mailing list.

OpenTC is a large EU-funded project involving many major industrial and academic partners, focused on the use of Trusted Computing Group technology to realise many common secure computing use cases.

As part of my work as an RA, I became interested in secure graphical user interfaces including L4's Nitpicker, a minimal secure windowing system. I began work on ports of this system to Linux, XenoLinux and the Xen mini-OS: the Linux version became mostly functional (but not yet secure!) while the others were stymied by various limitations with shared memory on Xen. These limitations are mostly fixed now, but I haven't had time to revisit the project since. Feel free to contact me for more information. If you wanted to take these up, I'd be glad to hear from you.

Prehistory

Teaching

Right now, in Lugano, I am not currently doing any teaching work.

Previously, in Oxford I did a little, and in Cambridge I did quite a lot. This section is therefore mostly historical, but might be useful nonetheless, and will no doubt be revived at some point when my teaching load increases.

Supervisions a.k.a. tutorials

During spring 2011 I was a tutor for the Digital Systems course in Oxford.

In Cambridge I “supervised” (tutored) many systems and programming courses from the Computer Science Tripos. The list below includes both current and past courses I supervised, together with any additional materials I prepared.

Current courses

Older courses

Lectures

In April 2010 I gave a lecture to the MPhil in Advanced Computer Science class in Cambridge, as part of the Cambridge Programming Research Group mini-series within the Research Students' Lecture series. My lecture was entitled “Modularity – what, why and how”. Contact me for slides. Other lectures in the CPRG mini-series were given by Dominic Orchard, Max Bolingbroke and Robin Message.

Demonstrating

During Michaelmas 2009, in Cambridge, I demonstrated the MPhil course Building an Internet Router, run by Andrew Moore.

Projects

I'm interested in supervising bright and enthusiastic Bachelor's and Master's students for their individual projects. For ideas and to find out what I'm interested in, see my list of suggested projects. I'm also always extremely happy to talk to students who have their own ideas.

I've supervised several projects in the past, in Cambridge; Bachelor's students at Cambridge can read my thoughts about Part II projects, see the project suggestions for 2010–11 from me and others in the NetOS group, or from the entire Lab and beyond. Previously I've been fortunate enough to work with the following final-year students:

Software

My projects

Note: as of late 2011, I have started using GitHub. Over time, code for all my larger projects will start to appear on my GitHub page. This page is likely to remain the more complete list, for the time being.

My research work involves building software. Inevitably, this software is never “finished”, rarely reaches release-worthy state, and usually rots quickly even then. So not much here is downloadable yet; this will improve over time, but in the meantime I list everything and invite you to get in touch if anything sounds interesting. My main projects, past and present, are:

Smaller contributions

I've also submitted small patches to various open-source projects including LLVM (bugfix to bitcode linker), binutils (objcopy extension), gcc (documentation fix for gcj), Knit (compile fixes), Datascript (bug fixes), DICE (bug fixes), pdfjam (support “page template” option) and Claws Mail (support cookies file in RSS plugin). Some of them have even been applied. :-)

Goodies

Apart from my main development projects, I sometimes produce scripts and other odds and ends which might be useful to other people. Where time permits, I try to package them half-decently and make them available here.

For computer science researchers

I have written some scripts which attempt to retrieve decent BibTeX for a given paper (as a PDF or PostScript file). details

For researchers in a research institution

I've written a nifty script for printing papers, which helps people save paper, share printed-out papers and discover perhaps unexpected collaborators within their institution. details

For supervisors of Tripos courses (in Cambridge)

I have a Makefile which downloads and compiles Tripos past-paper questions. It's pretty much self-documenting. Here it is.

For general audiences

I have built a sizable collection of vaguely useful shell scripts and other small fragments. One day “soon” I will get round to publishing them. The biggest chunks are my login scripts, which use Subversion to share a versioned repository of config files across all the Unix boxes that I have an account on, and the makefile and m4 templates that build this web page. I need to clean these up a bit. In the meantime, if you're interested in getting hold of them, let me know.

Thoughts

Occasionally I write down some thoughts which somehow relate to my work. They now appear in the form of a blog. Posts are categorised into research, and teaching, development, publishing and meta strands.

Personal

I have the beginnings of a personal web page. It's very sparse right now. Have a look, if you like.

Contact

OfficeFN07
E-maildeduce from firstname.lastname@cl.cam.ac.uk
PostDr Stephen Kell
Computer Laboratory, University of Cambridge
15 JJ Thomson Avenue
Cambridge, CB3 0FD
United Kingdom

Content updated at Fri May 31 14:50:00 CEST 2013.
validate this page