Leo Meyerovich

San Francisco, California, United States Contact Info
4K followers 500+ connections

Join to view profile

About

Graphistry: We're 100X'ing investigations with graph visualization & graph AI, infused…

Contributions

Activity

Join now to see all activity

Experience & Education

  • Graphistry

View Leo’s full experience

See their title, tenure and more.

or

By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.

Publications

  • Empirical Analysis of Programming Language Adoption

    Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)

    Some programming languages become widely popular while others fail to grow beyond their niche or disappear altogether. This paper uses survey methodology to identify the factors that lead to language adoption. We analyze large datasets, including over 200,000 SourceForge projects, 590,000 projects tracked by Ohloh, and multiple surveys of 1,000-13,000 programmers.

    We report several prominent findings. First, language adoption follows a power law; a small number of languages account for…

    Some programming languages become widely popular while others fail to grow beyond their niche or disappear altogether. This paper uses survey methodology to identify the factors that lead to language adoption. We analyze large datasets, including over 200,000 SourceForge projects, 590,000 projects tracked by Ohloh, and multiple surveys of 1,000-13,000 programmers.

    We report several prominent findings. First, language adoption follows a power law; a small number of languages account for most language use, but the programming market supports many languages with niche user bases. Second, intrinsic features have only secondary importance in adoption. Open source libraries, existing code, and experience strongly influence developers when selecting a language for a project. Language features such as performance, reliability, and simple semantics do not. Third, developers will steadily learn and forget languages, and the overall number of languages developers are familiar with is independent of age. Developers select more varied languages if their education exposed them to different language families. Finally, when considering intrinsic aspects of languages, developers prioritize expressivity over correctness. They perceive static types as more valuable for properties such as the former rather than for correctness checking.

    Other authors
    See publication
  • Parallel schedule synthesis for attribute grammars

    Principles and Practice of Parallel Computing (PPOPP)

    We examine how to synthesize a parallel schedule of structured traversals over trees. In our system, programs are declaratively specified as attribute grammars and parallel traversals for GPUs and multicore CPUs are defined by a compiler. Our synthesizer automatically, correctly, and quickly schedules the attribute grammar.

    Scheduling impacts performance and software integration. We therefore introduce a declarative language of schedules where programmers may sketch any part of the…

    We examine how to synthesize a parallel schedule of structured traversals over trees. In our system, programs are declaratively specified as attribute grammars and parallel traversals for GPUs and multicore CPUs are defined by a compiler. Our synthesizer automatically, correctly, and quickly schedules the attribute grammar.

    Scheduling impacts performance and software integration. We therefore introduce a declarative language of schedules where programmers may sketch any part of the schedule and the synthesizer will complete the rest. For the same motivation, the synthesizer answers debugging queries about if and how schedules may be completed and enumerates scheduling choices for autotuning.

    This paper presents our cubic-time schedule synthesizer, and its support for finding, specifying, debugging, and autotuning schedules. We evaluate our approach with two case studies. First, we created the first parallel schedule for a large fragment of CSS and report a 3X speedup on multicore hardware. Second, we created a GPU-accelerated visualization language for real-time interactive animations of over 100,000 nodes.

    See publication
  • Superconductor: A Language for Big Data Visualization

    LASH-C

    We present SUPERCONDUCTOR: a high-level visualization lan- guage for interacting with large data sets. It has three design goals that we distilled from popular visualization languages:
    • Scale. Visualizations should support thousands or even millions of data points. For example, Matlab and Circos1 are used for static visualizations of large data sets.
    • Interactivity. Interactions should be within 100ms and anima- tion should achieve 30fps. For example, JavaScript and its li- braries such…

    We present SUPERCONDUCTOR: a high-level visualization lan- guage for interacting with large data sets. It has three design goals that we distilled from popular visualization languages:
    • Scale. Visualizations should support thousands or even millions of data points. For example, Matlab and Circos1 are used for static visualizations of large data sets.
    • Interactivity. Interactions should be within 100ms and anima- tion should achieve 30fps. For example, JavaScript and its li- braries such as D3 [2] are used for animating data and orches- trating interactions with users.
    • Productivity. Programming should be at least as high-level as JavaScript. Designers invoke and customize visualizations in the above systems, and even create new ones from scratch. They less frequently do so with C++ and OpenGL.
    Visualization languages support one or two of the above goals, but only SUPERCONDUCTOR seeks to address all three.

    See publication
  • How not to survey developers and repositories: experiences analyzing language adoption

    Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU)

    We present cross-sectional analyses of programming language use and reflect upon our experience in doing so. In particular, we directly analyze groups of 1,500-13,000 developers by using questionnaires and 260,000 developers indirectly so by mining 210,000 software repositories. Our analysis reveals programming language adoption phenomena surrounding developer age, birth year, workplace, and software repository preference.

    We find that survey methods are increasingly accessible and…

    We present cross-sectional analyses of programming language use and reflect upon our experience in doing so. In particular, we directly analyze groups of 1,500-13,000 developers by using questionnaires and 260,000 developers indirectly so by mining 210,000 software repositories. Our analysis reveals programming language adoption phenomena surrounding developer age, birth year, workplace, and software repository preference.

    We find that survey methods are increasingly accessible and relevant, but there are distinctive problems in examining developers and code repositories. We show that analyzing software repositories suffers from sample bias problems similar to those encountered when directly polling developers. Such bias limits the general validity of research claims based on analysis of software repositories. We aid future empirical researchers by describing concrete practices and opportunities to improve the results of developer and software repository surveys.

    Other authors
    See publication
  • Socio-PLT: principles for programming language adoption

    Onwards

    Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for a sociologically-grounded programming language theory: socio-PLT.

    Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design. For example, many programming language features provide benefits…

    Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for a sociologically-grounded programming language theory: socio-PLT.

    Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design. For example, many programming language features provide benefits that programmers cannot directly or immediately observe and therefore may not find compelling. From clean water to safe sex, the health community has long examined how to surmount similar observability barriers. We use such results from outside of programming language theory to frame a research agenda that should help us understand the social foundations of languages. Finally, we examine implications of our approach, such as for the design space of language features and the assessment of scientific research into programming languages.

    Other authors
    See publication
  • Data parallel programming for irregular tree computations

    USENIX Workshop on Hot Topics in Parallelism (HotPar)

    The adoption of data parallel primitives to increase multicore utilization presents an opportunity for aggressive compiler optimization. We examine computations over the tree abstract datatype (ADT) in particular.

    For better utilization than approaches like flattening, we argue that transformations should specialize for common data and computation regularities. For example, we demonstrate a novel pattern that exploits regularity in node labeling as a SIMD parallelism opportunity, which…

    The adoption of data parallel primitives to increase multicore utilization presents an opportunity for aggressive compiler optimization. We examine computations over the tree abstract datatype (ADT) in particular.

    For better utilization than approaches like flattening, we argue that transformations should specialize for common data and computation regularities. For example, we demonstrate a novel pattern that exploits regularity in node labeling as a SIMD parallelism opportunity, which we call SIMTask parallelism. For better applicability, we argue for better linguistic support of irregularity. For example, we show how the future primitive might be used to tolerate occasional data dependencies in an otherwise associative computation.

    We validate our approach on two tree computations: RepMin, popular in the functional programming community, and \benchmark{intrinsic widths}, a stage of webpage layout in a prototype web browser. We show speedups over traditional versions of these computations of 124X and 10X, respectively.

    See publication
  • Conscript: Specifying and enforcing fine-grained security policies for javascript in the browser

    Security and Privacy (Oakland S&P)

    Much of the power of modern Web comes from the ability of a Web page to combine contents and JavaScript code from disparate servers on the same page. While the ability to create such mash-ups is attractive for both the user and the developer because of extra functionality, because of code inclusion, the hosting site effectively opens itself up for attacks and poor programming practices within every JavaScript library or API it chooses to use. In other words, expressiveness comes at the price of…

    Much of the power of modern Web comes from the ability of a Web page to combine contents and JavaScript code from disparate servers on the same page. While the ability to create such mash-ups is attractive for both the user and the developer because of extra functionality, because of code inclusion, the hosting site effectively opens itself up for attacks and poor programming practices within every JavaScript library or API it chooses to use. In other words, expressiveness comes at the price of losing control. To regain the control, it is therefore valuable to provide means for the hosting page to restrict the behavior of the code that it may include.

    This paper presents ConScript, an client-side advice implementation for security, built on top of Internet Explorer 8. ConScript allows the hosting page to express fine-grained application-specific security policies that are enforced at runtime. In addition to presenting 17 widely-ranging security and reliability policies that ConScript enables, we also show how policies can be generated automatically through static analysis of server-side code or runtime analysis of client-side code. We also present a type system that helps ensure correctness of ConScript policies. To show the practicality of ConScript in a range of settings, we compare the overhead of ConScript enforcement and conclude that it is significantly lower than that of other systems proposed in the literature, both on micro-benchmarks as well as large, widely-used applications such as MSN, GMail, Google Maps, and Live Desktop.

    See publication
  • Fast and parallel webpage layout

    World Wide Web Conference (WWW)

    The web browser is a CPU-intensive program. Especially on mobile devices, loading of webpages is too slow, spending much of its time in processing a document's appearance. Due to power constraints, most hardware improvements will come in the form of parallel architectures. This is also true of mobile devices such as phones. Current browsers, however, do not yet fully exploit hardware parallelism, so we are designing a parallel mobile browser. In this paper, we introduce new algorithms for CSS…

    The web browser is a CPU-intensive program. Especially on mobile devices, loading of webpages is too slow, spending much of its time in processing a document's appearance. Due to power constraints, most hardware improvements will come in the form of parallel architectures. This is also true of mobile devices such as phones. Current browsers, however, do not yet fully exploit hardware parallelism, so we are designing a parallel mobile browser. In this paper, we introduce new algorithms for CSS selector matching, layout solving, and font rendering, which represent key components for a fast layout engine. Evaluation on popular sites shows speedups as high as 80x. We also formulate layout solving with attribute grammars, enabling us to not only parallelize our algorithm but prove that it computes in O(log) time and without reflow.

    See publication
  • Object views: Fine-grained sharing in browsers

    World Wide Web Conference (WWW)

    Browsers do not currently support the secure sharing of JavaScript objects between principals. We present this problem as the need for object views, which are consistent and controllable versions of objects. Multiple views can be made for the same object and customized for the recipients. We implement object views with a JavaScript library that wraps shared objects and interposes on all access attempts. The security challenge is to fully mediate access to objects shared through a view and…

    Browsers do not currently support the secure sharing of JavaScript objects between principals. We present this problem as the need for object views, which are consistent and controllable versions of objects. Multiple views can be made for the same object and customized for the recipients. We implement object views with a JavaScript library that wraps shared objects and interposes on all access attempts. The security challenge is to fully mediate access to objects shared through a view and prevent privilege escalation. We discuss how object views can be deployed in two settings: same-origin sharing with rewriting-based JavaScript isolation systems like Google Caja, and inter-origin sharing between browser frames over a message-passing channel.

    To facilitate simple document sharing, we build a policy system for declaratively defining policies for document object views. Notably, our document policy system makes it possible to hide elements without breaking document structure invariants. We discuss how object views can be deployed in two settings: same-origin sharing with rewriting-based JavaScript isolation systems like Google Caja, and inter-origin sharing between browser frames over a message-passing channel.

    See publication
  • Secure cooperative sharing of JavaScript, browser, and physical resources

    Web 2.0 Security & Privacy (W2SP)

    For better application-level controls on mashups, we advocate extending the Single Origin Policy and associated primitives to support a cooperative model that allows applications to express explicit sharing policies over browser, Javascript, and physical resources.

    First, we introduce an isolation model for content loading that is more complete than those of surveyed browser proposals. Second, we present new primitives to enable an application to secure its use of untrusted content by…

    For better application-level controls on mashups, we advocate extending the Single Origin Policy and associated primitives to support a cooperative model that allows applications to express explicit sharing policies over browser, Javascript, and physical resources.

    First, we introduce an isolation model for content loading that is more complete than those of surveyed browser proposals. Second, we present new primitives to enable an application to secure its use of untrusted content by delegating browser, JavaScript, and physical resources in a fine-grained and reliable manner. Finally, essential to adoption, we propose an architecture based on designs for related abstractions with low performance and implementation costs.

    See publication
  • Flapjax: a programming language for Ajax applications

    Object-Oriented Programming, Systems, Languages & Applications (OOPSLA)

    This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides event streams, a uniform abstraction for communication within a program as well as with external Web services. Second, the language itself is reactive: it automatically tracks data dependencies and propagates updates along those…

    This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides event streams, a uniform abstraction for communication within a program as well as with external Web services. Second, the language itself is reactive: it automatically tracks data dependencies and propagates updates along those dataflows. This allows developers to write reactive interfaces in a declarative and compositional style.

    Flapjax is built on top of JavaScript. It runs on unmodified browsers and readily interoperates with existing JavaScript code. It is usable as either a programming language (that is compiled to JavaScript) or as a JavaScript library, and is designed for both uses. This paper presents the language, its design decisions, and illustrative examples drawn from several working Flapjax applications.

    See publication
  • Parallelizing the web browser

    USENIX Workshop on Hot Topics in Parallelism (HotPar)

    We argue that the transition from laptops to handheld computers will happen only if we rethink the design of web browsers. Web browsers are an indispensable part of the end-user software stack but they are too inefficient for handhelds. While the laptop reused the software stack of its desktop ancestor, solid-state device trends suggest that today's browser designs will not become sufficiently (1) responsive and (2) energy-efficient. We argue that browser improvements must go beyond JavaScript…

    We argue that the transition from laptops to handheld computers will happen only if we rethink the design of web browsers. Web browsers are an indispensable part of the end-user software stack but they are too inefficient for handhelds. While the laptop reused the software stack of its desktop ancestor, solid-state device trends suggest that today's browser designs will not become sufficiently (1) responsive and (2) energy-efficient. We argue that browser improvements must go beyond JavaScript JIT compilation and discuss how parallelism may help achieve these two goals. Motivated by a future browser-based application, we describe the preliminary design of our parallel browser, its work-efficient parallel algorithms, and an actor-based scripting language.

    See publication
  • Verification and change-impact analysis of access-control policies

    International Conference on Software Engineering (ICSE)

    Sensitive data are increasingly available on-line through the Web and other distributed protocols. This heightens the need to carefully control access to data. Control means not only preventing the leakage of data but also permitting access to necessary information. Indeed, the same datum is often treated differently depending on context.

    System designers create policies to express conditions on the access to data. To reduce source clutter and improve maintenance, developers…

    Sensitive data are increasingly available on-line through the Web and other distributed protocols. This heightens the need to carefully control access to data. Control means not only preventing the leakage of data but also permitting access to necessary information. Indeed, the same datum is often treated differently depending on context.

    System designers create policies to express conditions on the access to data. To reduce source clutter and improve maintenance, developers increasingly use domain-specific, declarative languages to express these policies. In turn, administrators need to analyze policies relative to properties, and to understand the effect of policy changes even in the absence of properties.

    This paper presents Margrave, a software suite for analyzing role-based access-control policies. Margrave includes a verifier that analyzes policies written in the xacml lan- guage, translating them into a form of decision-diagram to answer queries. It also provides semantic differencing information between versions of policies. We have implemented these techniques and applied them to policies from a working software application.

    See publication

Honors & Awards

  • Most Influential Paper (10yr) - OOPSLA

    ACM

    The OOPSLA’13 paper “Empirical Analysis of Programming Language Adoption” by Leo A. Meyerovich and Ariel S. Rabkin has been selected as the OOPSLA’13 Most Influential Paper Award.

    Some programming languages become wildly popular while others fade away. This paper seeks to answer why by performing an empirical study spanning hundreds of thousands of open-source software projects and interviews with thousands of programmers. The methodology used in the paper is thorough, and the paper…

    The OOPSLA’13 paper “Empirical Analysis of Programming Language Adoption” by Leo A. Meyerovich and Ariel S. Rabkin has been selected as the OOPSLA’13 Most Influential Paper Award.

    Some programming languages become wildly popular while others fade away. This paper seeks to answer why by performing an empirical study spanning hundreds of thousands of open-source software projects and interviews with thousands of programmers. The methodology used in the paper is thorough, and the paper provides insights of interest to the broader Programming Languages community. Overall, this paper is a role model for large-scale empirical and sociological studies of programming languages, making it worthy of the OOPSLA 2013 Most Influential Paper Award.

    --

    https://www.sigplan.org/Awards/OOPSLA/

    Presented annually to the author(s) of a paper presented at the OOPSLA held 10 years prior to the award year. The papers are judged by their influence over the past decade.

    Selection Committee The award given in year N is for the most influential paper presented at the conference held in year N-10. The selection committee consists of the following members:

    the current SIGPLAN Chair, ex officio,
    a member of the SIGPLAN EC appointed as committee Chair by the SIGPLAN Chair,
    the General Chair and Program Chair for OOPSLA N-10,
    the General Chair and Program Chair for OOPSLA N-1, and
    a member of the SIGPLAN EC appointed by the committee Chair.
    The SIGPLAN Chair shall adjudicate conflicts of interest, appointing substitutes to the committee as necessary.

  • Graphies Award - Data4Good: Curbing Misinformation

    Neo4j

    The annual GraphConnect Awards, otherwise known as "The Neo4j Graphies," recognize excellence in connected data across a variety of categories.

    --

    https://neo4j.com/videos/6-project-domino-fighting-covid-misinformation-at-scale-with-citizen-data-science/

  • Most Influential Paper (10yr) - OOPSLA

    SIGPLAN / OOPSLA

    Flapjax reimagines how to program client-based web applications by using abstractions dedicated to facilitating communication intensive applications with interactive interfaces. There are two central such abstractions in Flapjax, which were adopted from functional reactive programming: Event streams and so-called behaviors, with the latter modeling computations that bring themselves automatically up-to-date whenever data and computations they depend on change. This lets callbacks that are…

    Flapjax reimagines how to program client-based web applications by using abstractions dedicated to facilitating communication intensive applications with interactive interfaces. There are two central such abstractions in Flapjax, which were adopted from functional reactive programming: Event streams and so-called behaviors, with the latter modeling computations that bring themselves automatically up-to-date whenever data and computations they depend on change. This lets callbacks that are typically used in applications with interactive interfaces disappear from their designs … and with them also the hell of complexity they cause. Flapjax seamlessly builds on top of JavaScript without requiring a dedicated runtime and thus interoperates with existing applications written in JavaScript. This design choice lowers the barrier to entry and makes the language approachable to novice users. In terms of modern usage, the reactive style and event stream abstraction advocated by Flapjax have been adopted widely, both in mobile apps and on the web. Moreover, recent research has shown that beyond interactivity, behavior abstractions also facilitate correct-by-design distributed applications in presence of concurrency as well as crash and communication faults.

    ---

    https://www.sigplan.org/Awards/OOPSLA/

    Presented annually to the author(s) of a paper presented at the OOPSLA held 10 years prior to the award year. The papers are judged by their influence over the past decade.

    Selection Committee The award given in year N is for the most influential paper presented at the conference held in year N-10.

  • SIGPLAN Research Highlight 2014

    ACM

    For "Empirical Analysis of Programming Language Adoption", one of the three selected programming language research papers at the end of 2014.

    "SIGPLAN has selected papers from its sponsored conferences that are of high quality and broad appeal. These papers, called SIGPLAN Research Highlights, are selected by a committee representing SIGPLAN’s major conferences and elected officials."

  • Best Paper Award

    OOPSLA

    For our paper on the Empirical Analysis of Programming Language Adoption

  • PLDI Student Research Competition

    PLDI / ECOOP

    For the parallel program synthesis project (as part of the parallel browser) later published in PPOPP 2013.

  • Best Paper Award

    OOPSLA

    For our paper on the Flapjax language.

  • Qualcomm Innovation Fellowship

    Qualcomm

    Winner of a competition between 50 teams from Berkeley and Stanford. (First year that this fellowship was awarded.)

  • First Year Fellowship

    UC Berkeley

    Award for first year of studies.

  • NSF Graduate Research Fellowship

    National Science Foundation

    3 year fellowship

  • Outstanding Undergraduate (Honorable Mention)

    Computing Research Association

    Competition across all major universities for the best undergraduate computer science researchers.

  • UTRA

    Brown

    Undergraduate Teaching and Research Award

Languages

  • Russian

    -

  • Spanish

    -

More activity by Leo

View Leo’s full profile

  • See who you know in common
  • Get introduced
  • Contact Leo directly
Join to view full profile

People also viewed

Explore collaborative articles

We’re unlocking community knowledge in a new way. Experts add insights directly into each article, started with the help of AI.

Explore More

Add new skills with these courses