It’s happening, JavaScript is one of the most popular languages and it’s conquering the server side and the internet of things as well. JavaScript is just eighteen years old, and the future is bright. But how this future looks like? How can we improve JavaScript to make it better, focusing on large scale projects with millions lines of code?
With projects like asm.js and Emscripten, Mozilla is beginning to see JavaScript as a virtual machine and compiler target. Will it change how we think about and how we use JavaScript? How compiling C++ code to really fast JavaScript code will transform the web? At mloc.js we are bringing together representatives of major browser vendors, industrial users with large web projects, and authors of compile-to-JS projects with the goal of moving the web forward. Together we will discuss what will be possible with the web platform in the next 10 years.
mloc.js 2014 is a conference for people interested in the future of the language and the platform, the possibilites of JavaScript on the web and on the server side. For people doing or planning to do big JavaScript projects. And for people would like to see how is it possible to improve JavaScript by making it smarter, faster and sexy.
Check our summary video of last year:
Speakers
-
Jeff Harrell @juxtajeff · Paypal
Director of UI engineering at PayPal. A JavaScript hacker who's excited about bringing node.js to large scale organizations.
Release the Kraken at 10:00 - 10:40 on Day 1 (Thursday)
Discover how PayPal introduced JavaScript and node.js into a large organization with thousands of Java developers, how and where they are using node.js and Kraken.js in their technology stack, some pitfalls encountered along the way and the overall responses they’ve seen.
-
Daniel Steigerwald @steida
JavaScript Developer and Consultant, Este.js Creator, Member of the Google Developers Expert Program
What should the average JS ninja know about upcoming JavaScript and Browser features? at 10:40 - 11:20 on Day 1 (Thursday)
The days of static and unchanging technology are gone. It's time to welcome the next-generation of the JavaScript language and web tools: a practical and concise introduction to transpilers, polyfils, and other techniques that are ready for production this year.
-
Ben L. Titzer · Google
New optimizations of Google Chrome's V8 at 11:40 - 12:20 on Day 1 (Thursday)
Busting jank, banishing the jitter, and sending your JS performance through the roof with new optimizations targeted at reducing pause times through asynchrony and incrementalism, and an ever-increasing scope of JIT compiler optimizations targeting all JavaScript programs.
-
Eddy Bruel @ejpbruel · Mozilla
I'm a platform hacker for Mozilla. I aspire to be one day as great as the people I get to work with.
How JavaScript Objects are Implemented at 12:20 - 13:00 on Day 1 (Thursday)
A JavaScript object is a collection of named properties. Although such a collection could be implemented as a simple hash map, reality is a lot more complex.
In this talk, we will take a look at how SpiderMonkey implements objects internally. In particular, we uses two data structures, known as shape trees and slot vectors, to minimize the memory footprint of our objects. This representation also allows property access in the JIT to be optimized, using a technique called inline caching.
Arrays are treated somewhat differently from other objects, so we will take a look at them as well. Array elements are stored separately from named properties, and don't require the use of a shape tree. This is true even if the array has holes in it. There are exceptions, however, where we store elements as ordinary properties.
Because of the way objects are represented, certain operations, such as property deletion, can adversely affect the performance of your code. As we go along, we will explain how each of these operations is implemented, and under what circumstances you should avoid them. -
Maxime Chevalier-Boisvert @Love2Code · Université de Montréal
Maxime Chevalier-Boisvert holds a master's degree from McGill University and is currently pursuing a PhD at Université de Montréal as part of the Dynamic Language Team. Her area of study is compiler design and optimization, with a focus on dynamic programming languages, JIT compilers and type analysis.
JIT compilation techniques at 14:20 - 15:00 on Day 1 (Thursday)
One of the main advantages of Just-In-Time (JIT) compilers over their Ahead-Of-Time (AOT) counterparts lies in the ability to adapt their optimization strategies to the parameters of the program being executed. This is particularly important when working with dynamic programming languages such as JavaScript. In this talk, we introduce adaptive compilation strategies aiming to fulfill the seemingly conflicting goals of producing more optimal machine code while reducing compilation time.
-
Jaswanth Sreeram · Intel Corporation
Jaswanth Sreeram is a Research Scientist at Intel Labs where he works on Parallel JavaScript. His main interests are programming languages, compilers, parallelism and he is deeply excited by how these fields can come together to make the web better. He received his MS and PhD degrees from Georgia Tech.
Parallel Javascript at 15:00 - 15:40 on Day 1 (Thursday)
Client devices today have an abundance of parallel hardware in the form of multiple cores, SIMD units and powerful GPUs, all of which have so far been out of reach for JavaScript developers. Our goal is to change that. Parallel JavaScript is a set of language extensions to JavaScript that allow developers to harness client-side parallel hardware without sacrificing the safety or productivity of JavaScript. In this talk we describe the programming model and API for Parallel JavaScript and outline the key design considerations that influenced it, including compatibility with upcoming EcmaScript features.
-
Guillaume Lathoud
I develop interactive maps for the touristic branch. I like code generation for performance, math, UX, API design and implementation, and caring about developers and users.
JS optimization techniques at 16:00 - 16:40 on Day 1 (Thursday)
JavaScript functions permit to think, write and structure applications in a powerful and versatile manner, using functions as objects, as constructors, hoisting, closures... But this power has a performance cost when doing repetitive computations on large amounts of data. This talk proposes a few alternatives to functions, where high-speed code is generated, while still thinking and writing 'function-like'. Examples include mutual tail-call optimization, map/filter/reduce and math computations, suggesting simple, productive ways to expand the JavaScript language, as well as more open directions of research.
-
Shriram Krishnamurthi @ShriramKMurthi · Brown University
With collaborators, Shriram has created several influential systems: DrRacket (programming environment), Margrave (security policy analyzer), FrTime and Flapjax (reactive programming languages), and Lambda-JS and TeJaS (semantics and types for JavaScript). When he travels, he searches for stuffed animals that will enliven his office.
JavaScript as an Intermediate Language at 16:40 - 17:20 on Day 1 (Thursday)
Numerous languages now compile to JavaScript, and its ubiquity in the browser seems to make this inevitable. However, JavaScript appears to be a mediocre target for language deployment, erecting both obvious and subtle obstacles. I will discuss some of these issues, especially drawing on our experiences deploying Racket and Pyret in the browser.
-
Domenic Denicola @domenic · Lab49
I do Node.js servers, HTML5 Windows 8 apps, and other JS. I like promises, ES6, and maintaining other peoples' libraries. I work at @lab49.
Streams for the Web at 10:00 - 10:40 on Day 2 (Friday)
Streams are a fundamental programming primitive for representing the flow of data through your system. It's time we brought this powerful tool to the web. What if we could stream data from a HTTP request, through a web worker that transforms it, and then into a
<video>
` tag? Over the last year, I've been working on the WHATWG streams specification, which builds upon the lessons learned in Node.js, to provide a suitable abstraction for needs of the extensible web.
I'll discuss briefly why streams are important, what they enable, and the role we envision them playing in the future of the web platform. Mostly, though, I want to help you understand streams, at a deep level. In the course of writing this specification, I've learned a lot about streams, and I want to share that knowledge with you. At the core, they are a very simple and beautiful abstraction. I think we've done a good job capturing that abstraction, and producing an API the web can be proud of. I'd love to tell you all about it. -
Stoyan Stefanov @stoyanstefanov · Facebook
He is a Facebook engineer fixing the performance of social plugins (e.g. Like button). Author of books on JavaScript and web performance, organizer of perfplanet.com's web performance advent calendar. Plays guitar and performs live with the band called Anaconda Limousine.
Introduction to React at 10:40 - 11:20 on Day 2 (Friday)
React is a new, open source library from Facebook and Instagram. It's a library for building user interfaces for web applications. Let's talk about how React addresses the performance challenges (DOM manipulations, event handling) when building highly dynamic web interfaces.
-
Anton Ekblad · Chalmers University of Technology
I'm a PhD student with the functional programming group at Chalmers University of Technology, with a particular interest in compilers. I also like natural languages, psychology, anthropology, history and other subjects relating to human interaction.
Hastily Paving the Way for Diversity at 11:40 - 12:20 on Day 2 (Friday)
Functional languages such as Haskell have garnered a lot of attention in the last few years, promising fewer lines of code, increased programmer productivity and more reliable software. But how friendly is the browser platform to these not-quite-mainstream languages? This talk will discuss the implementation of the Haste Haskell-to-Javascript compiler, how well Javascript does or doesn't fulfill Haste's needs from a target language, and how Javascript could be nicer target for developers of compilers for functional languages.
A rich flora of programming languages is important for any platform; one language does not fit all applications, and the cross pollination of ideas enabled by a diverse language environment is highly beneficial in advancing the platform as a whole. From this, it follows that anyone involved in the browser as a platform should be quite interested in making it an attractive environment where a diverse set of languages can thrive. -
Alexander Fritze @alexfritze · OniLabs
Creator of the Stratified JavaScript language and cofounder of Oni Labs, a company with the mission to fundamentally re-engineer the web app stack and radically simplify the creation of complex web applications.
Building real-time web applications with Stratified JavaScript at 12:20 - 13:00 on Day 2 (Friday)
In this talk I will show how you can build real-time web applications with minimal effort using the 100% JS web app server Conductance. Conductance is built on Stratified JavaScript, an advanced version of JavaScript that makes asynchronous code modular and composable on a fundamental language level. It allows us to construct large applications in a conventional and intuitive sequential style without resorting to callbacks, promises or other complexity-inducing programming structures.
-
Alessandro Pignotti @alexpignotti · Leaning Technologies Ltd.
Co-founder and chief developer @leaningtech. I work on duetto, a C++ compiler for the Web. I am a huge fan of C++ and open-source.
Duetto: C++ as the platform language for the Web at 14:20 - 15:00 on Day 2 (Friday)
At Leaning Technologies, we believe that the Web will be the media of choice to deliver applications and games to users in next future. Our vision is that the Web should be considered as a platform, with HTML5 APIs as its system calls and JS as its machine language. In this talk, we will present Duetto, our C++ compiler designed to expose all the capabilities and limitations of this platform to the programmer. Duetto allows to write full client-server Web applications in standard C++, and to port existing C++ codebases to the Web.
-
David Galeano @davidgaleano · Turbulenz
Co-founder of Turbulenz Limited. Technical Director of EA Tech Graphics at Electronics Arts. Team leader of RenderWare Graphics at Criterion Software.
JavaScript and the browser as a platform for game development at 15:00 - 15:40 on Day 2 (Friday)
I will present games that are possible today and the problems that Turbulenz and its partners found and solved during their development. The talk will also introduce what new language features and APIs are required in order to take browser games to the next quality level.
-
Adam Rocska · EPAM systems
Enterprise JavaScript Architectures - With some vanilla topping at 16:00 - 16:40 on Day 2 (Friday)
When something totally new gets to be built or developed, the Front End developers start to fizz, what framework should they use. Would it be *yet another javascript framework* ? And we've lost them.
Picking an already existing framework or solution is not the only option. How would You plan Your architecture? How would You create something that’s actually reusable on a wide range, companywide? At first it may seem that picking an existing framework is the best choice, since development starts to progress fast enough, but the difference between an aproach tailored to the companies temperament, mindset, requirements, features and a framework tailored for freelancers and other open-source community fellows is exactly the same as buying a suit in a generic clothing suit or fetching a tailor to start tailoring a custom suit that best fits You! A lot depends on the tailor of-course (the Architect), but one thing is for sure, picking Native JavaScript with a strong Front End architect, and/or a strong Front End team is more fun, and it brings business benefits for a long time, saving project development money, and overtake competitors in the never ending race by shipping features at a higher pace.
I will show you a viewpoint on planning such a Vanilla architecture as a whole, including quality assurance, code documentation without too much effort, deployment, and also proper architectural planning and task delegation.
This is your last chance. After this, there is no turning back. You take the blue pill – the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill – you stay in Wonderland, and I show you how deep the rabbit hole goes. Remember, all I'm offering is the truth – nothing more.
Schedule
Day 1 - Thursday
Time | Slot | |
---|---|---|
09:00 - 9:50 | Registration & breakfast | |
09:50 - 10:00 | Welcome | |
10:00 - 10:40 | Release the Kraken | |
10:40 - 11:20 | What should the average JS ninja know about upcoming JavaScript and Browser features? | |
11:20 - 11:40 | Break | |
11:40 - 12:20 | New optimizations of Google Chrome's V8 | |
12:20 - 13:00 | How JavaScript Objects are Implemented | |
13:00 - 14:20 | Lunch | |
14:20 - 15:00 | JIT compilation techniques | |
15:00 - 15:40 | Parallel Javascript | |
15:40 - 16:00 | Break | |
16:00 - 16:40 | JS optimization techniques | |
16:40 - 17:20 | JavaScript as an Intermediate Language | |
17:20 - 17:40 | Closing |
Day 2 - Friday
Time | Slot | |
---|---|---|
09:00 - 10:00 | Lightning talks / arrival coffee | |
10:00 - 10:40 | Streams for the Web | |
10:40 - 11:20 | Introduction to React | |
11:20 - 11:40 | Break | |
11:40 - 12:20 | Hastily Paving the Way for Diversity | |
12:20 - 13:00 | Building real-time web applications with Stratified JavaScript | |
13:00 - 14:20 | Lunch | |
14:20 - 15:00 | Duetto: C++ as the platform language for the Web | |
15:00 - 15:40 | JavaScript and the browser as a platform for game development | |
15:40 - 16:00 | Break | |
16:00 - 16:40 | Enterprise JavaScript Architectures - With some vanilla topping | |
16:40 - 16:55 | Goodbye |
Location
Sponsors
Tickets
Organizers
-
Medea Baccifava @Medea_Baccifava
Prezi
I am an innovative professional working in advisory and international marketing positions in Europe and Asia. In current position at Prezi, I deliver small- and large-scale projects, from optimization to communication, handling international events like mloc.js, RAMP and Stretch.
-
András Bártházi @ba78
Prezi
I'm a lead engineer at Prezi. I love JavaScript and love big projects making our users happy. I believe that JavaScript has a very important role in the future of the web and we can make it better.
-
Attila Szabó @szaboat
Prezi
Organizer of the budapest.js meetup. Javascript, python, django and mountainbike enthusiast.
-
Gergely Hodicska @felhobacsi
Ustream
I am the Senior Engineering Manager at Ustream and I oversee all site, streaming, and infrastructure teams. Early on, I specialized in building and operating large scale web applications, including the design and development of several Alexa Top 100 sites. Nowadays I focus on improving the way we develop at Ustream, creating effective processes and building a culture where our engineers can not just continuously deliver but also continuously improve. I strongly believe in teamwork, devops and lifelong learning.
-
José Enrique D'Arnaude
Prezi
I am a C++ developer who has interest in any technology that helps cross platform development. Passionated about computer graphics, performance and football.
Contact
Contact us if you have a question, or you believe you would have a story to share: contact@mloc-js.com
Code of Conduct
We stand for a welcoming community.
At our conferences we encourage respectful smart conversations that help improvement and inspire innovation. Sexism, racism, and being an asshole in general is not appreciated. If you do so, get prepared to be challenged by conference staff, who will probably ask what's wrong with you.