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) |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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), 2007Mult-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]