Videos provided via the JSConf YouTube channel.
Lines of code are spent. Writing maintainable software and combating technical debt requires constant vigilance and an uncompromising aesthetic affinity for small components that do one thing well. This talk will look at the shape of code ripe for modularization and exactly what steps are required to turn convoluted tangle of code into dozens of reusable sub–components suitable for publishing to npm.
Good programmers follow best practices; great programmers investigate them.
Usually, when you make changes to code you need to imagine what this code will do, how your components will look like and how colors fit. But you’ve got a computer for that!
A quick stroll through the horror land of mobile WebKit browser bugs. Dangerous forms and weeping angels lurk in the shadows, preying on the innocent mobile developers. Narrow escape passages and various walkarounds provided. Don’t blink, or you’ll end up using IE7 Mobile forever.
Discover how to create shorter simpler programs by modeling them as a circuit of intercommunicating processes.
Modern web applications and libraries have to maintain state, coordinate asynchronous events, and recover from failure. Over the course of development, the complexity of a program’s control flow graph can vary greatly from one program to another; in a disorganized program, complexity can quickly grow making the program brittle and difficult to maintain. Inspired by category theory, point-free, and functional reactive programming, this talk will present some ideas on how to describe a program as a circuit, and why it could help to minimize complexity over the program’s development.
OpenWebDevice is the first phone that will be launch running the glamorous project Boot to Gecko (B2G) from Mozilla.
With the leitmotiv ‘the web is the platform’, this new phone will try to change the p web, making it native to the phone!
Remember the time when Software Development Tools were very expensive and only available to trained professionals? Can you imagine per-app or per-user licensed Frameworks in today’s Web World? Join a journey on how the Web and Open Source changed the Software Development Tools Landscape; made them free and accessible.
Imagine a world where your phone, TV and computer could all communicate on a common platform. Imagine it was easy to add video chat to your web application. That’s the vision of WebRTC.
WebRTC implements open standards for real-time, plugin-free video, audio and data communication.
As Brendan Eich put it: “WebRTC is a new front in the long war for an open and unencumbered web.” We believe WebRTC can democratise and decentralise tools for content creation and communication – for telephony, gaming, video production, music making, news gathering and many other applications.
In this session show you how to use WebRTC to build real-time communication into your web apps:
what are MediaStream, PeerConnection and DataChannel?
how does WebRTC signalling work?
what are ICE, TURN and STUN?
what do I need server-side for WebRTC?
Facebook chat used to be notoriously unreliable. User complaints about disconnection, incorrect message counts, and missed messages dominated Facebook’s overall product feedback. New code frequently caused regressions because of untracked dependencies in our ginormous, monolithic codebase.
Not long ago, a small team set out to fix this by introducing modularity and unit testing. Along the way, we developed an approach that abandoned conventional MVC in favor of a functional style. The rewrite was a success: we were able to improve every important metric for chat, and we have continued to add features without causing regressions. Come learn about how we did it.
You might think a robot that can play Angry Birds on a tablet is the most ridiculous idea you’ve ever heard of – and you’d be right. However, you can use that little ‘bot for automated testing of your app on any mobile device. You already write tests, right? So you need a robot! (You always wanted one, anyway; now you have an excuse to make one!) I’ll show you how to make it, and how to program it JS.
In this talk, I will reveal my newest inventions and share their secret blueprints with the audience.
What happens when you use CSS regions with Web Components? How about using CSS Variables? Let’s explore how Variables, Shaders, Compositing, Regions & Exclusions can work in tandem with Web Components to deliver superior experience for the user.
The story behind Google Docs Offline and some of the fantastic hacks put in place to make it work. We changed people’s mindsets to “think offline” while re-architecting the apps to not rely on the network. Moving an internet company offline involves some hard work and has some serious challenges (performance, cross-browser compatibility, platform bugs, etc).
A few month later, node addons using libmysql showed up in npm. They were much faster. It sucked.
In 2012 I had enough and went back to to the drawing board resulting in a much faster parser.
This talk will introduce you to the art of high performance binary stream parsing in node.js.
Ever wondered what’s really happening under the hood when you apply translateZ(0)? Feeling shaky about how/when pesky CSS style recalcs are slowing things down? Do intermittent page flashes, having to use setTimeout(0) to trigger CSS transitions/animations, or unreliable DOM timers ever get you down? If so, we’ll explain how all this black magic works and more through the lens of WebKit’s rendering engine. Warning: there might be a lot of blood, guts, and C++ code.
Black magic, voodoo and David Blaine have nothing on iframes. iframes, for better or worse are used all over the web for all manor of dark arts. They’re capable of protecting your site from other people’s content, and equally capable of creating public APIs out of thin air.
Through developing JS Bin over the last 4 years, Remy has come to be very intimate with the iframe and it’s tricksey ways. This talk will share stories, tricks and upcoming new features of iframes.
iframes: sexy they are not. Freaky: they are!
A: "Dammit, we can't do this on the web :("
B: "You know, it's called the open web - you can change it!"
A: "I can't just fork the web from GitHub and make it do the things I want."
B: "Haha, no, it's not that simple. But you can talk to some people and if they think your API makes sense, get a browser project from GitHub and they will help you to implement your new API."
A: "But then it's just in one browser, not the web?"
B: "You got to start somewhere."
A: "Right... Can you help me get going?"
Implementing competitive printing support for PDF.JS is not possible with the current state of the web. Therefore, I started to work on some new mozPrintCallback API.
In this talk, I will share my experience with proposing a new API, how to implement it in a browser and how even hacking C++ code can be fun.
Data is everywhere! We build applications that collect it, and even better - other people collect it and give us access. But! Do we bring that data back to our apps? In this session, we’ll talk about patterns for integrating data into our client-side applications and sweep through a collection of exciting libraries that work with those patterns.
What is the difference between constructor inheritance and instance inheritance?
What is the property constructor about?
How does the instanceof operator really work?
What is the __proto__ property? Does it have a future?
How do I implement a type via an object instead of via a constructor function?
A child starts learning to read and write at age 5. Why can’t they start learning to program then, too? I am making Isla, a first programming language for young children. The accompanying environment is called Storytime and lets a child use Isla to write text adventures.
I’ll describe the Isla compiler and how I implemented the lexer, parser and interpreter. I’ll describe the design of the Isla grammar. Why is there no punctuation? Why are expressions like sentences? How did I enable array and object assignments, function calls, conditionals and logical rules in baby talk?
I cofounded OkCupid.com back in 2003. It was my fateful decision to base our whole stack on a single-threaded event-based library written in C++. It sucked; our code was stuffed with callback spaghetti and pyramids of death. But all of that changed when in 2006, we wrote the “Tame” system for C++, which we presented at USENIX ATC in 2007. This new system was compatible with the old code, but drastically improved our productivity by allowing straight-line code on either side of an a network call, much like threads supported all along.
I’ve seen the future, and it’s not in that layered .psd your designer just handed you. As designers and developers, we build things. And we do it often. But we don’t build websites or apps. We build systems. Systems that evolve and grow with a company, its users, and both of their needs. The way we design and build these systems should reflect the living, breathing things we want to create and leave more room for them to grow. The question is how do we accomplish this with static assets?
The answer is we set them all on fire. And start in the future. We start in the browser.
The Firefox desktop UI is powered by JS and Mozilla’s XUL platform, and in our first attempt to port Firefox over to Android, we used essentially the same architecture. However, drawing our own XUL-based UI killed startup time, responsiveness and memory use on Android, so about 10 months ago we decided start over with an entirely native Android UI.
We still use Gecko to render the same web experience you get on desktop, and a lot of the front-end browser logic is still written in JS, but we use a custom JSON message loop to communicate with a native Android UI written in Java and XML. Add-ons are an important part of the Mozilla story, so we also added JS APIs to allow add-on authors to manipulate this new native UI.
I’ll talk about the architecture of our app, challenges we faced, and how you can get involved with the project (including writing add-ons entirely in JS!).