Photo of Rob Ennals 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


Rob Ennals is a Research Scientist at Intel Research Berkeley. Rob's current research focus is on the problems of misinformation and bias on the web, and how technology can be used to make people aware of opinions that differ from those that they are reading.

Rob also represents Intel in the HTML and Web Applications Working groups at the W3C.

Rob's research has been featured in New Scientist, NPR's On The Media, CBS News, CBC (Canadian Public Radio), The Christian Science Monitor, Sky (UK Cable News), MIT Tech Review, The Sacramento Bee, Slashdot, The Guardian, The San Francisco Chronicle, The San Jose Mercury, Fast Company, AFP, TechCrunch, GigaOm, CNET, TGDaily, PC Magazine, The Toronto Star, The Age, The New York Times Bay Area, EE Times, The Wall St Journal, Fast Company, ACM Tech News (three times), and many others.

Rob has a diverse range of research interests. In addition to his current work on detecting disputed information on the web, Rob has also worked on programming languages, concurrency, and operating systems.

Prior to joining Intel Research Berkeley, 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.


Rob is or has been associated with the following projects:

Dispute Finder and Confrontational Computing

The great thing about the web is that anyone can say whatever they want without having to go through a central authority. An unfortunate consequence of this is that a lot of the information available online is either inaccurate or biased.

Dispute Finder is a tool that tries to let a user know when something that they read on the web is disputed by a source that they trust. If a user has installed the Dispute Finder browser extension, it will alert them whenever a page they are reading makes a claim that Dispute Finder knows is disputed.

In the future, we plan to extend Dispute Finder to also cover audio - Dispute Finder will listen to everything you say and everything you hear, and let you know if you said or heard something that was disputed by a source that you might trust.

Dispute Finder is part of the broader Confrontation Computing research project, which aims to use technology to understand and influence conflict on the web.

Try out Dispute Finder

screen-shot of Dispute Finder

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 behaviour of other users.

screen shot of Mash Maker

Try out Intel 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 implementation 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

diagram of the memory layout of our STM algorithm


Unintended or un-mediated data sharing is a frequent cause of insidious bugs in multi-threaded 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

Sharc logo


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

example code using HeapSafe


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

diagram showing Jekyll's two-way language translation

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

logo for linear types

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%.

graph showing the weight function used by Optimistic Evaluation


Publications while at Intel Research

Highlighting Disputed Claims on the Web

Rob Ennals, Beth Trushkowsky, John Mark Agosta, Tye Rattenbury, and Tad Hirsch
ACM International World Wide Web Conference (WWW), 2010 [pdf]

What is Disputed on the Web?

Rob Ennals, Dan Byler, John Mark Agosta, and Barbara Rosario,
4th Workshop on Information Credibility on the Web (WICOW), 2010 [pdf]

Intel Mash Maker

Rob Ennals
Chapter 9 of "No Code Required", Morgan Kaufman, 2010 [buy book on Amazon]

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 International Conference on Functional Programming (ICFP), 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 Obstruction 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 controversial 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 software 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.
© 2010 Intel Corporation | Terms of Use | Trademarks | Privacy