It's that time of year!
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 2015 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 2014:
Speakers
-
Michael Ficarra
Michael is best known for his significant contributions to the CoffeeScript programming language. He spends his days daydreaming about the future of programming languages while working on JavaScript static analysis tooling at Shape Security in Mountain View, California. In the evenings, he is involved with the design of many compile-to-JavaScript programming languages, and contributes to FOSS tools for JavaScript program analysis and transformation.
Getting Started With PureScript at 10:00 - 10:40 on Day 1 (Thursday)
PureScript is a small, modern pure functional programming language that compiles to JavaScript. It is written in and inspired by Haskell, with an expressive static type system designed for natural, effortless interaction with existing JavaScript programs. In this gentle introduction to the PureScript programming language, we will examine its type system, syntax, idioms, and current best practices. Once we get comfortable with the basics, we will look at PureScript implementations of familiar JavaScript tasks and analyse the advantages/disadvantages of their PureScript counterparts. Finally, we will take a look at how PureScript is evolving and how it is being used.
-
Andre Staltz · Futurice
Andre is a user interface engineer at Futurice, with extensive knowledge in reactive programming. He is a contributor to RxJS, has built RxMarbles, written an introduction to reactive programming which went viral, and collaborated to design ReactiveX.io. His current mission is to redefine how we understand and structure user interfaces with the reactive web framework Cycle.js.
How Reactive Programming can help reduce code spaghetti at 10:40 - 11:20 on Day 1 (Thursday)
When applications become large enough, complexity arises. Some of it is accidental complexity, which programmers often identify and know how to fix. On the other hand, essential complexity is unavoidable and hard to handle. Reactive Programming has been praised lately for its power in event-driven problems, but it has more aspects which make it useful in your codebase. We will see how the reactive pattern can help organize essential complexity and produce separation of concerns.
-
Christian Wirth · Oracle Labs
Christian Wirth is a Research Manager at Oracle Labs. His team is implementing a JavaScript engine on top of the Graal Java VM. As part of the Graal/Truffle team, he wants to make software development easier by providing tools to simplify language interoperability.
Graal.JS: High-performant JavaScript on the JVM at 11:40 - 12:20 on Day 1 (Thursday)
This talk presents Graal.JS, a JavaScript engine implemented in Java, executed on top of the Graal VM (http://openjdk.java.net/projects/graal/). Implemented as AST interpreter, Graal.JS executes code with high performance, by partial evaluation of the AST to automatically derive compiled code. Performance is evaluated both on industry-standard benchmarks and Node.JS applications. Using the Truffle API also allows interoperability with other languages like Ruby, Python, or R.
-
Richard Feldman
Richard is a functional programmer who specializes in pushing the limits of browser-based UIs. He's built a framework that performantly renders hundreds of thousands of shapes in HTML5 Canvas, a JavaScript immutables library that seamlessly interoperates with normal JS collections, and a Web App for long-form writing that functions like a desktop app in the absence of an Internet connection.
Growing the Oasis: Elm in Production at 12:20 - 13:00 on Day 1 (Thursday)
Coding in JavaScript can feel like building things in a desert: for even the most adept programmers, the harsh environment inevitably makes it harder to get things done. When you introduce Elm to your code base, it feels like an oasis has appeared in the desert. Within that oasis, working conditions are much nicer. Syntax is clean and concise. Organizing dependencies is a breeze. Refactoring doesn’t break anything. Runtime exceptions are unheard-of. In short, Things Just Work. It would be great to have this experience everywhere, but few projects can justify the risk and time cost of a complete rewrite. Better to introduce this oasis as a small part of an existing project, and then to grow it over time so that more and more of the code base can reap the benefits of Elm. This talk explores how best to incorporate Elm into an existing JavaScript code base, as well as the benefits and challenges encountered along the way. Come see how enjoyable the oasis can be!
-
Benjamin Bouvier · Mozilla
Benjamin is a Compiler Engineer at Mozilla Corporation, working on implementing the JavaScript virtual machine, including the just-in-time (JIT) and ahead-of-time (AOT) compilation engines. He's been adding features to the extraordinarily optimizable subset of JavaScript, known as asm.js (support of the float32 type, SIMD.js), helping to make them real fast in plain JS as well. His current goal is to get asm.js performance even closer to native. On his spare time, he implements open-source web services that can be self-hosted, to give back control and data ownership to users.
Closing the gap with native performance at 14:20 - 15:00 on Day 1 (Thursday)
The last few years have seen the growing use and optimization of asm.js, a portable subset of JavaScript designed to maximize predictable performance of JavaScript with predictability. Optimizing compilers, like SpiderMonkey and soon Chakra, Mozilla's and Microsoft's respective JavaScript engines, can recognize and validate asm.js code and generate optimized machine code ahead of time. Moreover, C++ codebases can be easily compiled to asm.js thanks to the Emscripten cross-compiler. While asm.js performance is close to native performance, there are a few remaining features in JavaScript needed to allow maximal performance of compiled applications (e.g. SIMD, threads). We will discuss these features and reflect about what the future of asm.js may look like.
-
Eli Mattson · Shape Security
Eli is a software engineer at Shape Security where he works on securing web sites from automated attacks. An aspiring JavaScript aficionado, he enjoys dreaming up new ways to stay secure online.
Secure Peer-to-Peer Browser Communication at 15:00 - 15:40 on Day 1 (Thursday)
Encrypted direct messaging two browsers? There’s a lot of specialized tools designed to communicate securely, but what if truly private communication was as simple as opening a browser? This talk will explore the challenges of building a JavaScript driven decentralized network including trusted peer lookups in a partitioned system, mitigating malicious peers, and handling tracker failures. We will discuss using nodeJS, webRTC, and PGP to create a robust, decentralized, system for establishing trusted communications between browsers.
-
Péter Márton · RisingStack
Peter Marton is the CTO and co-founder of RisingStack. He specialised in full-stack and isomorphic JavaScript; Node.js and React.js. He brews his own beer with a Node.js-powered IoT brewing machine and wrote an in-depth React.js tutorial that went viral. He is currently working on building scalable microservice-based infrastructures.
Isomorphic applications at 16:00 - 16:40 on Day 1 (Thursday)
There is no such thing as separated client and server app in the isomorphic era, there are only environments (browser, server, IoT device etc.). One app is running on both client and server side: this the end of the SEO pain and code duplications.
-
Guillaume Marty · Mozilla
Guillaume has been working in the web industry for 1.5 decades and works at Mozilla on Firefox OS, the web based mobile OS. He's passionate about web technologies: he creates and contributes to open source projects on his spare time. In meatspace, he’s fascinated by drawing, foreign languages and video games - you can’t probably beat him at Magical Drop III.
Crash course in compile-to-the-web at 16:40 - 17:20 on Day 1 (Thursday)
It’s 2015. The web is omnipresent and omnipotent, and yet some vendors continue to ship proprietary formats and software. But vendor lock-in doesn’t have to be a fatality. Many techniques are available to run almost anything on our beloved browser: playing video games and Flash files, reading PDF and even watching DVD! In this talk, you’ll be introduced to existing compilation strategies so you can get started writing your own compiler today! Proprietary format? Compile it!
-
Attila Szegedi · Oracle
Principal Member of Technical Staff at Oracle, working on the Nashorn JavaScript runtime. He is also known for his work on Mozilla Rhino (another JavaScript runtime), a contributor to Kiji, Twitter’s server-optimized Ruby runtime, the author of Dynalink – the dynamic linker framework for languages on the JVM, as well as one of the past principal developers of the FreeMarker templating language runtime.
Nashorn: Making This Rhinoceros Thunder at 10:00 - 10:40 on Day 2 (Friday)
This talk will explain good practices for writing performant server-side applications with Nashorn. It's a didactical walk-through of building a web application in several stages (from most naive to most sophisticated) with improving performance in every step, presenting measurements and explaining the mechanism of the performance improvement. The goal is for the audience to gain an understanding of how these practices leverage inner workings of Nashorn for achieving best performance so that they can use them in their own systems to integrate Nashorn efficiently.
-
Jouni Kaplas · Futurice
Jouni is a web craftsman and minimalist who believes great code reads like a story. He finds beauty in creating solutions to stand the test of time. Jouni is known for ferociously attacking the difficult problems and showing no mercy for workarounds. He occasionally wears colorful socks to trick his colleagues into thinking he's not an evil mastermind.
Storing all state on the server side at 10:40 - 11:20 on Day 2 (Friday)
State is evil, and I hope we have all learned it at this point. But if it is so evil, why do we still accept the chore of handling it in the front-end? What if we could imprison all state to the server side instead, subscribe to it and regard view rendering just as a side-effect of data changes? Our team is building a data-driven, business critical industrial UI application for our client. Our application state as well as major parts of our UI state live nowadays on the server side. In this talk I will tell you how we did it, how it has affected our application and what kind of interesting side-benefits we have had because of it.
-
Jan Vitek · Northeastern University
Jan Vitek is an educator who dabbles in programming technologies. He led the design of the first real-time Java virtual machine to be deployed on a plane, worked on the design of the still-born programming language Thorn, helped analyze the behavior of JavaScript and create realistic benchmarks with JSBench. In his spare time he is re-implementing the R programming language for data analytics and adding sound types to TypeScript.
Benchmarks killed the beast: Understanding JS performance for fun and profit at 11:40 - 12:20 on Day 2 (Friday)
Who knows what JavaScript programs do in the privacy of your browser’s sandbox? Surprisingly, even the experts who implement JS at Apple, Microsoft, Mozilla, and Google are guessing which new tricks to put in their compilers. This talk tells the tale of a research project started on a lark, six years ago, in an academic lab, and how it ended killing one of the most promising technologies for optimizing JS programs. I'll argue that automatically creating benchmarks is a key to tracking the changing nature of JS applications. I’ll show you some tools we have built along the way and tell a few war stories.
-
Andre Staltz
Workshop: How Reactive Programming can help reduce code spaghetti at 14:20 - 15:15 on Day 2 (Friday)
When applications become large enough, complexity arises. Some of it is accidental complexity, which programmers often identify and know how to fix. On the other hand, essential complexity is unavoidable and hard to handle. Reactive Programming has been praised lately for its power in event-driven problems, but it has more aspects which make it useful in your codebase. We will see how the reactive pattern can help organize essential complexity and produce separation of concerns.
-
Michael Ficarra
Workshop: Getting Started With PureScript at 15:25 - 16:20 on Day 2 (Friday)
PureScript is a small, modern pure functional programming language that compiles to JavaScript. It is written in and inspired by Haskell, with an expressive static type system designed for natural, effortless interaction with existing JavaScript programs. In this gentle introduction to the PureScript programming language, we will examine its type system, syntax, idioms, and current best practices. Once we get comfortable with the basics, we will look at PureScript implementations of familiar JavaScript tasks and analyse the advantages/disadvantages of their PureScript counterparts. Finally, we will take a look at how PureScript is evolving and how it is being used.
-
Richard Feldman
Workshop: Growing the Oasis: Elm in Production at 16:30 - 17:25 on Day 2 (Friday)
Coding in JavaScript can feel like building things in a desert: for even the most adept programmers, the harsh environment inevitably makes it harder to get things done. When you introduce Elm to your code base, it feels like an oasis has appeared in the desert. Within that oasis, working conditions are much nicer. Syntax is clean and concise. Organizing dependencies is a breeze. Refactoring doesn’t break anything. Runtime exceptions are unheard-of. In short, Things Just Work. It would be great to have this experience everywhere, but few projects can justify the risk and time cost of a complete rewrite. Better to introduce this oasis as a small part of an existing project, and then to grow it over time so that more and more of the code base can reap the benefits of Elm. This talk explores how best to incorporate Elm into an existing JavaScript code base, as well as the benefits and challenges encountered along the way. Come see how enjoyable the oasis can be!
Schedule
Day 1 - Thursday
Time | Slot | |
---|---|---|
09:00 - 9:50 | Registration & breakfast | |
09:50 - 10:00 | Welcome | |
10:00 - 10:40 | Getting Started With PureScript | |
10:40 - 11:20 | How Reactive Programming can help reduce code spaghetti | |
11:20 - 11:40 | Break | |
11:40 - 12:20 | Graal.JS: High-performant JavaScript on the JVM | |
12:20 - 13:00 | Growing the Oasis: Elm in Production | |
13:00 - 14:20 | Lunch | |
14:20 - 15:00 | Closing the gap with native performance | |
15:00 - 15:40 | Secure Peer-to-Peer Browser Communication | |
15:40 - 16:00 | Break | |
16:00 - 16:40 | Isomorphic applications | |
16:40 - 17:20 | Crash course in compile-to-the-web | |
17:20 - 17:40 | Closing Day 1 | |
17:40 - 18:30 | Dinner | |
18:30 - 24:00 | Party / Refactoring Dojo - Sponsored by EPAM |
Day 2 - Friday
Time | Slot | |
---|---|---|
09:00 - 09:50 | Breakfast | |
09:50 - 10:00 | Welcome | |
10:00 - 10:40 | Nashorn: Making This Rhinoceros Thunder | |
10:40 - 11:20 | Storing all state on the server side | |
11:20 - 11:40 | Break | |
11:40 - 12:20 | Benchmarks killed the beast: Understanding JS performance for fun and profit | |
12:20 - 13:00 | Lightning Talks | |
13:00 - 14:20 | Lunch | |
14:20 - 15:15 | Workshop: How Reactive Programming can help reduce code spaghetti | |
15:15 - 15:25 | Break | |
15:25 - 16:20 | Workshop: Getting Started With PureScript | |
16:20 - 16:30 | Break | |
16:30 - 17:25 | Workshop: Growing the Oasis: Elm in Production | |
17:25 - 17:35 | Closing Ceremony |
Workshop
Reactive Programming - Andre Staltz (14:20)
Resource: https://github.com/staltz/rxjs-training
PureScript - Michael Ficarra (15:25)
Setup:
- PureScript: http://www.purescript.org/download/
- Node: https://nodejs.org/download/
- Make: http://www.gnu.org/software/make/
- Browser
Elm - Richard Feldman (16:30)
Location
Sponsors
Organizers
-
José Roca @joseroca
Prezi
I am the Engineering Manager of Tooling teams at Prezi. I not only work on growing and coaching teams but I work closely with developers to see how I can help them be happier and more productive by the use of different tools and technologies.
-
Laszlo Pandy
Prezi
Engineering manager of the JavaScript team at Prezi, where we love all JavaScript technologies especially TypeScript, Haxe, Emscripten and Elm.
-
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.
-
Attila Balogi
Prezi
Co-Organising international tech conferences in Budapest with 300-1000 participants. Project management of the events, Design and execute global communication campaigns for Stretch, Mloc.JS, Craft, Redefine Conferences.
-
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.
Contact
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.