A challenge in real-time collaborative web applications is maintaining consistent state across all participants. In the classroom application we’ve developed at Minerva, this state could involve things such as what document is currently showing on the main stage, whether poll results are visible to students, and chat messages.
Although it’s easy to use a drop-in pubsub solution to deliver messages from one browser to another, it’s much more difficult to maintain an eventual consistency guarantee for all the state that is communicated. Simultaneous and conflicting user actions, unequal network latencies, dropped connections, bogged down CPUs, and participants entering in the middle of a session all complicate matters.
In this talk, I’ll show how we extended Backbone to provide this consistency guarantee without requiring programmers to think about race conditions, all while using speculative updates to maintain a responsive web UI.
To enable screen reader support, press shortcut ⌘+Option+Z. To learn about keyboard shortcuts, press shortcut ⌘slash.
A design system can vastly improve your team's productivity, but most of all, it leads to better products! We're going to explore common approaches to building design systems, the technology behind them, and how to go about creating your own.
GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. I will walk through how to approach adding it to your React and Angular projects and explore the relationship between it and your UI. I will also explore the architecture of Apollo Client, one of the leading GraphQL client implementations.
PUT or PATCH? 200 or 201? HTTP or WebSockets? Today, protocols requiring enormous tribal knowledge rule the web when we really just care about calling remote functions. Introducing GRPC, an RPC framework from Google built on top of HTTP/2 and Protobuf. Define your API as plain old functions and generate idiomatic clients for a variety of platforms. In this talk, we’ll learn how to move faster and break fewer things with GRPC.
Depending on whom you ask, a websocket is either a pipe, a channel, or a protocol. We know they allow two-way communication between a browser and server, but if you don't understand how they work, using them can be a leap of faith. Join us for a deep dive into websockets. We'll start at the browser and see how to connect, inspect and debug. Then we'll use node.js to build a websocket server using TCP sockets. Finally, we'll use a few handy Linux tools to peak into the kernel and see what's going on at the very lowest level. Along the way, we'll give concrete definitions to sometimes vague terms, like "connection" and "listening". Love cool tools? We'll explore several for debugging websockets at every layer of the stack. Whether you're just discovering websockets, or have used them for years, you'll learn something new, and discover that all it takes to use them confidently is a little understanding.
When you go to a club or a party or a rave.. What is one of the most obvious things you notice about the music?
Since we are engineers, what comes first to mind when we see something repeating itself over and over again?
Automate the damn thing \m/
Ever try creating an app from scratch with Three.js or pure WebGL? I know I did, and I got nowhere fast. These platforms can be intimidating and tedious for those without an intimate knowledge of computer graphics.
In this talk we’ll explore how we replaced a buggy iOS app and an outsourced and abandoned Android app with a single React Native and ClojureScript app.
React Native allowed us to write a single codebase; GraphQL allowed us to eliminate the data-syncing issues that plagued the iOS app; ClojureScript let us move fast and recreate, in a matter of months, what took almost two years to build in Swift and Java.
We’ll discuss the obstacles that we encountered, how we circumvented them, and where we think the mobile industry will move. This is an exciting time to be (or become!) a mobile app developer.
Come learn how the event loop works in detail, how it affects the performance of your app, and how you can use this knowledge to your advantage!
"Works for me." The words spoken to dismiss a thousand bugs. "Can't Reproduce." Issue closed. "You're getting worked up over nothing." "It was just a joke." "I worked just as hard to get here." "It didn't bother me." Problem dismissed.
"Works for me" is a natural reaction when confronted with cultural issues that don't impact us directly. It's a statement that isn't inaccurate, but is wildly incomplete. We have to learn to see past our own experiences and see and accept the experiences of others.
This talk will dive into how and why dismissal of culture concerns happens in the tech community, and how we can combat it with knowledge and empathy.
This is the story of how I used Vue.js to build the redesigned UI of our web application. While I was initially skeptical, Vue made it easy to just try it out on a tiny feature at first, eventually building a full featured SPA without much more knowledge required than for the "Hello World" examples that I started with. Along the way, I learned some surprising things by trying a new tool and will share lessons about how framework creators can build tools that allow developers to be productive without sacrificing performance or an enjoyable user experience.
We live in a world with enormous amount of data presented to us and with the advancement of technology and research, we process more information and are empowered to make data-informed decision about many things in our lives. For example, we can get suggestions on the movies we are more likely to enjoy, be reminded by things we have to buy when we enter a grocery store and even avoid traffic congestions and receive fastest route getting from point a to b.
Data Visualization has played a critical role on our ability to consume large sets of data. Even though commonly used chart types such as bar charts and line charts have been effective ways to present data, leading publishers and companies have been exploring better ways to tell stories using data by leveraging the latest technology and research.
You can find a very early prototype (don't judge us for the UI) of building a simple radar chart. https://www.youtube.com/watch?v=ZBN24SJnp_Q
Agenda 1. State of Business Intelligence - Many BI solutions are focused on helping users to create common chart types faster which is great. - One the other hand, authoring for many advanced visualization still is a challenge because of a steep learning curve. 2. Change of Perception - Chart as an atomic unit of data visualization. - There are only handful of chart types to support. - It is impossible to create advanced visualizations without coding. 3. Opportunity to Change How We Author Data Visualization - We propose visual programming language for web data visualization authoring. - Provide set of fundamental building blocks and enable complex results to emerge from them. - By organizing building blocks, authors can configure complex data visualizations with interactions and animations which is important to effective story telling. 4. Demo - Common chart types with interactions and animations (Bar, Line, Pie, scatter plots) - Advanced data visualizations (Rebuilding NY Times examples) 5. Design Decisions and Challenges - Three.js - Lazy Evaluation - Interactions - Animations - Rendering
What a tangled web we weave. I don’t follow celebrity couples but it’s hard to ignore the love matrix that is the Kardashian family. With ES6 proxies, you can create behavior akin to pointers. Come listen as I throw shade and we learn about ES6 Proxies. We’ll learn about their behavior, how to use them as pointers, and how to use them to practice tree traversal. JS tree traversal will help you study for interviews, without having to setup a different environment.