SPLASH-I
SPLASH-I is a new series of industrial research talks that address topics relevant to the SPLASH community. Speakers are world-class experts in their field, selected and invited by the organizers. The SPLASH-I talks series is held in parallel with the OOPSLA main track. Talks are open to all attendees.
Program
Parallelism for the Masses: A Parallel JavaScript
Tue 10:30-11:30 am - Network
Richard L. Hudson, Intel, USA
Parallel programming has long been the realm of experts. Locks, memory models and races were the devils that JavaScript banished at its inception. Parallel JavaScript, named River Trail, rejects the notion that parallelism requires a Faustian bargain. Instead Parallel JavaScript gently extends JavaScript in safe, secure, and programmer-friendly ways resulting in the most important performance change web programmers will enjoy over the next few years. This talk presents our work on creating a web appropriate and HTML5/JavaScript programmer friendly parallel programming model, the implementation, and how we are building community acceptance. Parallel JavaScript is the leading contender on how to bring parallelism to the masses and is rapidly gaining acceptance both in the standards arena as well as in application arenas as the answer to evolving JavaScript into a more parallel world. Resume
|
Julia, the language
Tue 11:30-12:30 pm - Network
Viral Shah, MIT, USA
Jeff Bezanson, MIT, USA
Stefan Karpinski, MIT, USA
This talk gives an overview of Julia. Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Resume
|
So you want to be an industrial researcher?
Tue 1:00-2:00 pm - Network
Mario Wolczko, Oracle, USA
Students about to graduate are usually faced with the choice of continuing their career in academia or in industry. Research students may want to stay in research, and industrial research often beckons (who wants to grade assignments?), but - judging by the candidates I interview - few know much about industrial research and how it differs from academic research. Indeed, many in industry don't know what industrial research labs do. This talk will attempt to paint a clear picture, based on my experiences. What's the function of an industrial research lab? How are they organized and run? What are their goals? Why would you want to work in one – or not? Resume
|
Civilizing Web Programming with Dart
Tue 2:00-3:00 pm - Network
Gilad Bracha, Google, USA
Contemporary web programming offers enormous advantages, and at the same time can be excruciatingly painful. Dart is a response to the very real problems of performance and productivity encountered doing serious programming on the web platform. Dart is a purely object-oriented, class based, optionally typed imperative programming language focused on web programming. Dart is by design conservative, so as to be accessible to a broad audience of programmers. Dart has been under intense development at Google since late 2010. We'll go over the motivation for Dart, and discuss the current state of the Dart platform and where we expect it to go next. Resume
|
R for Big Data
Tue 3:00-4:00 pm - Network
Indrajit Roy, HP, USA
Data scientists use sophisticated algorithms to obtain insights. However, what takes tens of lines in a high-level data analytics language like R is now been rewritten in Hadoop and applied at scale in the industry. Instead of rewriting algorithms in a new model and language can we stretch the limits of R and reuse it for analyzing Big Data? In this talk I will present our experience in scaling R to efficiently perform distributed machine learning and graph processing on industrial-scale data sets. Resume
|
Reflections on X10: Towards Performance and Productivity at Scale
Tue 4:00-5:00 pm - Network
David Grove, IBM, USA
The last decade has seen concurrency and scale-out programming move from being a niche concern of the High Performance Computing programmer to being one of the central challenges facing mainstream programmers. During the same decade, the X10 Project at IBM Research has developed the X10 system: a programming model, complete new programming language and tool chain, and a supporting programming environment all designed from the ground up to enable "Performance and Productivity at Scale." In this talk I will attempt to distill the key insights from the X10 experience, describe how those insights are now being applied in both HPC and commercial contexts, and speculate on how these ideas will continue to influence the development of future programming systems. Resume
|
Cloud Sessions: A Simple Face for Eventual Consistency
Wed 10:30-11:30 am - Theory
Sebastian Burckhardt, Microsoft, USA
In a world of devices and the cloud, users want their apps and their data everywhere, all the time. Maintaining responsiveness when connections are slow or temporarily unavailable can be quite difficult, since it requires developers to work with weaker consistency. How to write such programs, and in particular, how to effectively reason about data consistency and conflict resolution, is a key challenge for the next generation of developers. To simplify their task, we propose "Cloud Sessions", a programming abstraction that makes it easy to work with eventually consistent structured shared data. Cloud Sessions are available as a feature in TouchDevelop, a cross-platform app development environment by Microsoft Research. Resume
Sebastian Burckhardt is a researcher at Microsoft Research in Redmond. His general research interest is the study of programming models for of concurrent, parallel, and distributed systems. More specific interests include memory consistency models, concurrency testing, self-adjusting computation, and the concurrent revisions programming model. |
Dancing with Symmetry to Harness the Power of Complexity: Subjective Programming in Context
Wed 10:30-11:30 am - Network
David Ungar, IBM, USA
Harold Ossher, IBM, USA
At any instant when you are programming, some details rise to the foreground and others recede into the background context. The manner in which the programming language supports context profoundly affects the ease of evolution and reuse. We propose a language paradigm that amplifies the power of object-oriented programming by explicitly supporting multi-dimensional context, and using it for dispatch and for program organization. It can directly express, in a unified and simple fashion, many situations that are awkward with object-oriented programming or that usually require ad hoc mechanisms. Although it adds complexity to the object-oriented model, an environment can employ subjectivity with progressive disclosure to hide dimensions and present developer-specific views, thereby smoothing the learning curve. In this talk we will introduce and illustrate the paradigm, give some details of context-based dispatch, and show a glimpse of our early prototype. Resume
|
Computing without Processors
Wed 11:30-12:30 pm - Theory
Satnam Singh, Google, USA
The duopoly of computing has up until now been delimited by drawing a line in the sand that defines the instruction set architecture as the hard division between software and hardware. On one side of this contract Intel improved the design of processors and on the other side of this line Microsoft developed ever more sophisticated software. This cozy relationship is now over as the distinction between hardware and software is blurred due to relentless pressure for performance and reduction in latency and energy consumption. Increasingly we will be forced to compute with architectures and machines which do not resemble regular processors with a fixed memory hierarchy based on heuristic caching schemes. Other ways to bake all that sand will include the evolution of GPUs and FPGAs to form heterogeneous computing resources which are much better suited to meeting our computing needs than racks of multicore processors. Resume
|
Surgical Precision JIT Compilers
Wed 11:30-12:30 pm - Network
Tiark Rompf, EPFL, Switzerland
Profile-driven JIT compilers like those in most JVMs are usually good, but they can be unpredictable. Achieving top performance consistently is hard. Lancet, a JIT compiler written in Scala, allows applications to take full control of the JIT process. This includes the ability to compile multiple specialized versions of code paths at runtime. Lancet provides JIT macros that allow for user code to execute in the JIT and thus open the door for "smart libraries" that come with domain-specific optimizations and checks. As opposed to most macro systems, JIT macros are not a front-end source processor, but tightly integrated with regular compiler optimizations and VM functionality like speculative optimization and re-optimization. Resume
|
PHP, Seriously!
Wed 3:30-4:30 pm - Network
Keith Adams, Facebook, USA
PHP is as often maligned as it is widely used. Conventional wisdom is that PHP is an inferior language, whose popularity is due solely to legacy effects. The success of projects written in PHP, according to this view, proves only that with enough thrust, even pigs can fly. This story ignores some critical details. This talk examines the strengths that, whether by design or accident, have made PHP a dominant language in its niche. Even if you never use PHP, its success holds lessons for other environments. We will also highlight Facebook's attempts at remedying the inconsistencies and misfeatures in the core language, while maintaining PHP's strengths. Resume
|
Test and Cure your JavaScript Blues
Wed 4:30-5:30 pm - Network
Koushik Sen, U California Berkeley, USA
JavaScript is widely used for client-side web application and increasingly for mobile applications. Unlike for C, C++ and Java, there are few tools for analysis and testing of JavaScript applications. I will present a simple yet powerful framework, called Jalangi, for writing heavy-weight dynamic analyses. Our framework incorporates two key techniques: selective record-replay, a technique which enables to record and to faithfully replay a part of a program, and shadow execution, which enables easy implementation of heavy-weight dynamic analyses. Our implementation is applicable to real-world JavaScript programs running on multiple platforms. We have implemented concolic testing, an analysis to track origins of nulls and undefined, a simple form of taint analysis, an analysis to detect likely type inconsistencies, and an object allocation profiler in Jalangi. Resume
Koushik Sen is an associate professor in the Department of Electrical Engineering and Computer Sciences at the University of California, Berkeley. His research interest lies in Software Engineering, Programming Languages, and Formal methods. He is best known for his work on “DART: Directed Automated Random Testing” and concolic testing. |
The Next 700 Asynchronous Programming Models
Thu 10:30-11:30 am - Network
Philipp Haller, Typesafe, Switzerland
Reactive programming will subsume the next 700 asynchronous programming models! Each of these will be invented to support composition of asynchronous programs. This talks starts with, C#'s Async model and the Rx model. Async enables direct-style programming with futures. Rx is based on observable asynchronous event streams which can be composed and queried using LINQ-style operators. In this talk, we're going to show how to make Rx programming more natural and intuitive. For this, we're going to generalize Scala's Async feature which, so far, has been used to program with non-blocking futures in a familiar direct style. Resume
|
TypeScript: a Type System for Toolability
Thu 1:00-2:00 pm - Network
Luke Hoban, Microsoft, USA
TypeScript is a language and toolset that makes it easier to write cross-platform, application-scale JavaScript. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Types are introduced to support tooling, including static analysis, completion lists, refactoring and other rich modern IDE capabilities. The TypeScript type system is designed to capture the runtime semantics of JavaScript faithfully, and to enable modelling the practical design elements of JavaScript APIs. These motivations have led to a non-traditional type system, favoring qualities like easy escape hatches, inference, structural typing and full erasability. I will discuss the TypeScript language, and its broader implications. Resume
|
Write-Once, Run-Anywhere for the Cloud
Thu 2:00-3:00 pm - Network
Chandra Krintz, U California Santa Barbara, USA
Recent advances in cloud platforms have simplified cloud use by providing developers with complete software/runtime stacks for execution of their web-accessible applications and services. PaaS systems offer programmatic access to scalable, distributed, and fault tolerant cloud services which eliminates the need for developers to write or deploy their own and enabling them to focus on their innovation. I present AppScale, a PaaS platform that emulates: Google App Engine. API-compatibility with App Engine means that any of the three million active App Engine apps today execute over AppScale without modification. This, in combination with the fact that AppScale executes anywhere a virtual machine can be instantiated (a laptop, an on-premise cluster, a local data center, Amazon EC2 or other IaaS), means that AppScale gives developers choice across all of the most popular deployment options available today, with no code rewrite — bringing "write-once, run-anywhere" to cloud applications. Resume
|