Rob Ennals
Intel Research Berkeley
2150 Shattuck Ave., Ste. 1300
Berkeley, CA 94704-1347 USA
T +1-510-495-3070
F +1-510-495-3049
robert.ennals@intel.com

Biography

Rob Ennals is a research scientist at Intel Research Berkeley. Rob is interested in making it easier for people to use and share information on the web. He is also interseted in programming languages, concurrency, and systems. Prior to joining the Berkeley lab, Rob worked at Intel's Cambridge lab and received his PhD in Computer Science from the University of Cambridge, advised by Simon Peyton Jones of Microsoft Research.

Research

Rob is or has been associated with the following projects:

Think Link

The web provides users with a huge number of pages that they can read, but extracting useful and reliable information from these pages can be difficult. Not everything on the web is accurate, and important information on a topic will typically be spread across a large number of pages.

Think Link is a tool that overlays a network of factual claims on top of the existing web. As the user browses the web, Think Link highlights factual claims that are particularly interesting or contraversial. Clicking on such a claim brings up an interface showing sources elsewhere on the web that oppose that claim or are otherwise related.

(Think Link has also gone under the name Mind Mix)

Learn more about Think Link

Intel Mash Maker

Mash Maker is a browser extension that understands the meaning of the pages that users browse and suggests ways that it can improve the current page so as to be more useful to the user. Mash Maker relies on users to teach it both how to understand web pages, and also how particular kinds of web page might be improved in interesting ways.

As views a web page, Mash Maker will suggest ways that it can make the page more useful, and suggest these improvements on its tool bar. If the user clicks on the button for such an improvement then Mash Maker will apply it to the current page, potentially using other web sites and remote APIs, and potentially applying widgets that produce new visualizations or compute new data (Figure 6). Mash Maker suggests improvements based on the meaning of the current page, the meaning of pages that the user has recently browsed, and the behavior of other users.

Learn more about Mash Maker

Non-Non-Blocking Software Transactional Memory

Software Transactional Memory (STM) simplifies the process of writing parallel programs by allowing users to program in terms of atomic sections. Early STM implementations were careful to ensure that they were "non-blocking", meaning that the failure of one transaction cannot cause the failure of others.

We observed that, in most cases, deadlock avoidance is the only case in which it is important for an STM to be non-blocking. This observation allowed us to produce a new implemantion of STM that significantly outperformed all previous STM implementation.

While there was considerable resistance to our algorithm when we first proposed it, most modern STM implementations now follow the principles we put forward.

Learn more about Non-Non-Blocking Software Transactional Memory

SharC

Unintended or unmediated data sharing is a frequent cause of insidious bugs in multithreaded programs. SharC (short for Sharing Checker) is a tool that allows a user to write lightweight annotations to C programs to declare how they believe objects are being shared between threads in their program. SharC uses a combination of static and dynamic analyses to check that the program conforms to this specification.

Learn more about SharC

HeapSafe

Memory management bugs, in particular incorrect uses of free, are notoriously hard to debug because the symptoms of the problem show up in a place far disconnected from where the bug actually occurred. For instance, an incorrect free can lead to corruption of a completely unrelated object allocated later.

HeapSafe is a C compiler and runtime library that directly check that a program uses free safely, with time and space overheads low enough (normally below 30%) that it can be used all the time. Furthermore, when HeapSafe does detect an invalid free, it can simply leak the object (and log the problem), preventing the program from failing.

Learn more about HeapSafe

Jekyll

Ease the migration from a legacy language to a new language by maintaining synchronized editable versions of a program in both the old language and the new language, and propagating any updates between the two sides. This work started out as a separate project but has now been merged into the larger Ivy project.

Learn more about Jekyll

PacLang: Linear Types for Concurrent Programming

Some designs of multi-core processors do not give all cores access to all memory. In order to program such devices, it is necessary to move beyond a shared memory programming model. PacLang uses linear types to allow one to easily pass data between concurrent threads, without needing to introduce shared memory. To make this concrete, we produced a high performance implementation of our language for Intel IXP Network Processors.

Learn more about PacLang

Adaptive Evaluation of Non-Strict Programs

If your father tells you to tidy your room, should you do so? That depends on how dirty it is, how forgetful your father is, and how angry he is likely to get if you don't do it. More generally, in order to decide whether to do some computation, one needs to have an accurate model of its cost, the cost of putting it off, and the likelyhood of it being useful in the future. During my PhD, I designed an implemented a system that could build up a model of these properties at runtime and out-performed the existing static analyses by an average of 20%.

Publications

In Progress

Browsing the Web of Factual Claims

Beth Trushkowsky and Rob Ennals Submitted to CHI 2009, Location/Issue, Month, Year [pdf]

Publications while at Intel Research

Participatory Mashups: Using users to make data mashable

Rob Ennals and Beth Trushkowsky, Workshop on Tinkering, Tailoring, and Mashing at CSCW, 2008 [pdf]

SharC: Checking data sharing strategies for multi-threaded C

Zachary Anderson, David Gay, Rob Ennals, and Eric Brewer, ACM Conference of Programming Language Design and Implementation (PLDI), 2008 [pdf]

Intel Mash Maker: Join the Web

Rob Ennals, Eric Brewer, Minos Garofalakis, Michael Shadle, and Prashant Ghandi, ACM SIGMOD RECORD, 36(4), 2007 [pdf]

Safe Manual Memory Management

David Gay, Rob Ennals, and Eric Brewer, ACM SIGPLAN Internation Symposium on Memory Management (ISMM), 2007 [pdf]

User-Friendly Functional Programming for Web Mashups

Rob Ennals and David Gay, ACM SIGPLAN Internation Conference on Functional Programming, 2007 [pdf]

Mash Maker: Mashups for the Masses

Rob Ennals and Minos Garafalakis, Demo Paper at ACM SIGMOD, 2007 [pdf]

Beyond Bug-Finding: Sound Program Analysis for Linux

Zachary Anderson, Eric Brewer, Jeremy Condit, Rob Ennals, David Gay, Matthew Harren, George Necular, and Feng Zhou, [pdf] Workshop on Hot Topics in Operation Systems (HotOS), 2007

Mult-Language Synchronization

Rob Ennals and David Gay, European Symposium on Programming (ESOP), 2007 [pdf]

SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques

Feng Zhou, Jeremy Condit, Zachary Anderson, Illya Bagrak, Rob Ennals, Matthew Harren, George Necular, and Eric Brewer, USENIX Symposium on Operating System Design and Implementation (OSDI), 2006 [pdf]

Now you C it, Now you don't

Rob Ennals, Workshop on Declarative Programming Languages for Multicore Architectures (DPMC), 2006 [pdf]

Software Transactional Memory should Not be Obstraction Free

Rob Ennals, Intel Research Tech Report: IRC-TR-06-052, 2006 [pdf]
This paper was submitted to SCOOL 2005, but was deemed to be "too contraversial for publication" and so was instead made the topic of a panel instead. This paper is ofter cited with a url ending in "notlockfree.pdf", however that URL no longer works as the Cambridge Lab that the paper was hosted on has been closed.

Efficient Software Transactional Memory

Rob Ennals, Intel Research Technical Report, IRC-TR-05-51, 2005 [pdf]
This paper described how sofware transactional memory could be made more efficient if one was prepared to sacrifice non-blocking properties. It was rejected from SPAA, but was widely circulated and was fairly influential on the design of subsequent STM implementations.

Are Locks Dead? The role of blacking in concurrency Control - Panel Discussion

Rob Ennals, in debate with Maged Michael, Victor Luchangco, and Satnam Singh [slides]

Task Partitioning for Multi-Core Network Processors

Rob Ennals, Richard Share, and Alan Mycroft, International Conference on Compiler Construction (CC), 2005 [pdf, ppt]

Linear Types for Packet Processing

Rob Ennals, Richard Sharp, and Alan Mycroft, European Conference on Programming (ESOP), 2004 [pdf, extended tech report]

Publications while at the University of Cambridge

Adaptive Evaluation of Non-Strict Programs

Robert Ennals, PhD Thesis, University of Cambridge, 2000-2004. [pdf, tech report]
Supervised by Simon Peyton Jones.

Optimistic Evaluation: An Adaptive Evaluation Strategy for Non-Strict Programs

Robert Ennals and Simon Peyton Jones., ACM SIGPLAN International Conference on Functional Programming (ICFP) 2003. [pdf, slides]

HsDebug: Debugging Lazy Programs by Not Being Lazy

Robert Ennals and Simon Peyton Jones., ACM SIGPLAN Haskell Workshop (Haskell) 2003. [pdf, slides]

Optimistic Evaluation

Robert Ennals and Simon Peyton Jones., International Workshop on Implementing Functional Languages (IFL) 2002.

Feris: A Functional Environment for Retargetable Interactive Systems

Robert Ennals, International Workshop on Implementing Functional Languages (IFL) 2000.
This paper was presented, but not submitted to the LNCS proceedings, as we wanted to present the work elsewhere. [(pdf)]

Feris: A Functional Environment for Retargetable Interactive Systems

Robert Ennals (supervised by Simon Peyton Jones)., Third year undergraduate project. University of Cambridge. 2000.
Amongst other things, this dissertation describes my monadic implementation of transactions. [pdf]

Articles for .EXE Magazine

Getting on with your Garbage Collector

Robert Ennals , .EXE Magazine, pages 39-44, July 1998. Centaur Publications.

Creative Allocation

Robert Ennals , .EXE Magazine, pages 29-36, June 1998. Centaur Publications.

Inheritance Considered Harmful (cover article)

Robert Ennals , .EXE Magazine, pages 22-30, May 1998. Centaur Publications.

Interpreter as Compiler

Robert Ennals , .EXE Magazine, pages 36-42, December 1997. Centaur Publications.

A Lovely Bunch of Identifiers

Robert Ennals , .EXE Magazine, pages 29-34, November 1997. Centaur Publications.

Self Modifying Code is Good For You (cover article)

Robert Ennals , .EXE Magazine, pages 16-22, July 1997. Centaur Publications.
© 2009 Intel Corporation | Terms of Use | Trademarks | Privacy