Over the last few years, Airbnb’s frontend architecture has evolved to keep pace with the rapid advancement happening the JavaScript world. Starting as a humble Rails 2 + Prototype.js app in 2008, the frontend stack powering airbnb.com has gone through a few revisions, including a push towards single-page app architecture with Backbone.js and Handlebars.js, an adventure into isomorphic JavaScript with Rendr (our library for using Node.js to server-render Backbone SPAs), and most recently, a move toward React.js and a re-envisioning of our build pipeline to take advantage of CommonJS, ES6, and a Node.js-based transform system. Spike Brehm, software engineer on the @AirbnbNerds team, will walk through how we approached and executed on these changes. Plus, get excited to see a preview of our new approach to isomorphic JavaScript, allowing us to server-render React components from our Rails app. Spike Brehm is a software engineer at Airbnb who specializes in building rich web experiences. As a JavaScript nerd, he has spent the last few years shipping web apps and prototyping Airbnb’s front-end stack, experimenting with “isomorphic JavaScript” — apps that have the flexibility to run on both the client and sever using the same codebase.
This document compares and contrasts UI and UX design. It defines UI design as focusing on the interaction with products and services, while UX design focuses on what a person feels when using a product. The document outlines principles of good UI design, including structure, simplicity, visibility, feedback, tolerance, and reuse. It also discusses principles of good UX design such as usefulness, usability, desirability, accessibility, credibility, and findability. Examples of companies with good UX design are provided. The document concludes by noting that while related, UI and UX design have distinct purposes and goals.
This document summarizes Next.js, a JavaScript framework for building single-page applications. It discusses key Next.js features like server-side rendering, automatic code splitting, prefetching and inline critical CSS. It provides demo links and instructions for setting up a basic Next.js project using npm. Overall, Next.js is presented as a batteries-included solution for building production-ready PWAs with features like routing and optimization out of the box.
User experience design (UX) aims to enhance user satisfaction and productivity by improving the usability, accessibility, and pleasure provided in the interaction between the user and the product. UX design uses techniques from human-centered design and information architecture to understand users and specify program requirements from the early stages of product development. Service design applies similar human-centered principles to the design of services to improve customer experience. Key benefits of UX and service design include higher conversion rates, reduced costs, improved customer satisfaction and loyalty, and a competitive advantage.
The web is changing every day and it’s so hard to follow and implement all the new and fancy stuff that is being built. Cool new frameworks, libraries, methodologies and new approaches to solving problems. Usually is not that easy to deprecate some old technology and migrate to the new one. There are not many developers that still want to work with Angular 1 or Backbone and moving to something new is becoming necessary. If this sounds familiar to you, then this talk is for you! There is an innovative way to migrate from the old technology, to change the applications step by step
The document discusses JSS (Sitecore JavaScript Services) and Helix principles in the context of a real project. It provides an overview of JSS and Helix, describes how the speaker's organization implemented their first JSS site using a contract-first approach and Helix principles, and offers tips and tricks including using custom rendering content resolvers and optimizing the Layout Service response.
The Figma prototyping hacks will be covering best practices and tips needed to get the best out of prototyping. Some of these can be simple prototyping hacks that when combined with other hacks will create a complex transition or interaction. The hacks can be random and do not have to be sequentially related.
This document discusses headless architecture for ecommerce websites. Headless architecture separates the front-end interface from the back-end database, allowing them to develop independently through APIs. This offers performance and modularity benefits. Specifically, it can improve page load speeds and conversion rates. It also allows front-end and back-end developers to specialize and work separately. The document recommends headless ecommerce solutions like PWA Studio and Vue Storefront as representing the future of ecommerce development.
This document discusses micro frontends, which divide large web applications into independent, standalone units. It outlines the issues with traditional monolithic applications, such as increased complexity and difficulty scaling. Micro frontends address these issues by allowing independent teams to work on separate application pieces with different technologies. The document covers micro frontend design considerations, communication patterns between units, and technical implementations using Angular Elements and the Frint framework.
A micro frontend architecture is an approach to developing web applications as a composition of small frontend apps. Instead of writing a large monolith frontend application, the application can be broken down into domain-specific micro frontends, which are self-contained and can be developed and deployed independently. Each micro frontend can be owned by verticalised domain specific teams. Micro frontends do have advantages and disadvantages and they are not suitable in many cases. When micro frontends is a potential solution, make sure to use a domain driven top-down approach, with no big design upfronts. Keep it simple! Frontend Developer Love Amsterdam - 30 January 2018
Excited about the new reactive web features? Come to this session to learn some of the best practices to make sure that you get started on the right foot.
The Overview and basic guidance on User interface designing and User experience designing for designer and developers, The Difference in User Interface designing and User Experience Designing.
Micro frontends" is a new trend in large single page applications (SPA). Single page applications have become increasingly large and resemble in behavior and life-cycle the server side monolith. Just as there is a movement to split server side monolithic applications into multiple robust micro-services, there is also a movement towards splitting up the client app into multiple parts that can be developed, and more importantly - deployed, independently thus increasing agility and lowering the risk of unexpected regressions in other parts of the application.
The document discusses user experience (UX) and how it differs from common sense and information architecture. UX focuses on understanding user needs and designing products and services to meet those needs. The value of UX is that it leads to faster and better solutions, greater productivity, and helps companies avoid failures caused by not understanding users. UX combines skills like strategy, research, design and development to simplify complexity and create desirable, feasible and viable solutions from the user's perspective. It is important to involve UX early in projects to avoid costly redesigns later. The amount of time a UX project takes depends on its scope, from a few days for simple projects to over a month for complex ones.
This document compares the React, Angular, and Vue JavaScript frameworks. It discusses their histories, key features, benefits, disadvantages, and performance. Angular is a TypeScript framework developed by Google, while React was made by Facebook and uses JSX. Vue takes ideas from both and is easier to learn. The document considers questions about which to choose and recommends Angular for structure, React for flexibility, and Vue for smallest size. It provides an overview of each framework's programming concepts, usage, learning curves, and long-term support.
This document discusses design systems and atomic design. It introduces atomic design as a methodology for creating interface design systems in a hierarchical way from small reusable components (atoms) up to full pages. It then provides details on how to create a designers kit, which includes style guides, pattern libraries, and mockups/templates. Finally, it outlines pros and cons of design systems, such as increased consistency but higher upfront costs.
Front-End Engineering is about engineering an intuitive, interactive, and consistent user experience for web applications and websites The basic ingredients required for front end development are: HTML : To design basic page structure and content CSS : For visual editing JavaScript : To make websites more interactive
This document provides an overview of optimizing tasks and enhancing team performance using Agile methodology techniques. It discusses implementing Agile operations through various phases including planning, design, analysis, implementation, testing and maintenance. It also covers departmental overviews, current team performance metrics, prioritizing development tasks, and comparing different software development methodologies like Scrum and Kanban. The document includes details on planning the Agile project with estimated costs and timelines, defining the project team structure, and estimating future performance improvements after implementing Agile strategies.
How Airbnb managed to handle global payments, search & discovery, messaging & communication, trust & safety, user experience, and growth strategies.
This document provides an overview of the big data technology stack, including the data layer (HDFS, S3, GPFS), data processing layer (MapReduce, Pig, Hive, HBase, Cassandra, Storm, Solr, Spark, Mahout), data ingestion layer (Flume, Kafka, Sqoop), data presentation layer (Kibana), operations and scheduling layer (Ambari, Oozie, ZooKeeper), and concludes with a brief biography of the author.
The document discusses how temporary markets can occupy underutilized urban spaces and serve as incubators for local food, artisans, music, and start-ups. It provides examples of proxy in San Francisco which curated temporary uses over 5 years in a stalled development area, the Brooklyn Night Bazaar in New York which was a 2 month planned, 3 day event to address stalled development and regulations, and Flash Markets in Boston which designed new kiosks to match the visual identity of the district and support a local fruit and flower stand owner.
Pop-up shops are temporary retail spaces that can revitalize neighborhoods. They benefit cities by attracting customers and activating empty spaces, benefit retailers by allowing them to test new concepts in low-risk ways, and benefit citizens by increasing foot traffic and variety of retail options. Examples in San Francisco and Oklahoma City demonstrate how pop-up shops have been successfully used to stimulate local economies and bring vibrancy back to areas.
The document describes Airbnb's search architecture. It discusses how Airbnb indexes over 800,000 listings across 190 countries using Lucene and maintains the index in real-time. It also covers the various components involved in ranking search results, including over 150 ranking signals, loading ranking models, and performing second pass ranking on results.
The document discusses the depaving method of tactical urbanism, which involves removing unnecessary pavement in urban areas to create green spaces. Depaving began in 2007 in Portland, Oregon as a way to beautify neighborhoods, reduce stormwater pollution, and remove excess pavement. It has since gained popularity and support from government organizations and grants. Depaving can create space for other transportation modes like sidewalks and bike lanes while improving pedestrian safety. However, challenges include disruption during construction and limiting future expansion. Partnerships between organizations help advance depaving projects. Continued advocacy, marketing, and tactical urbanism are seen as key to the future growth of depaving efforts.
Slides from TransferWise presentation at the AWS Pop-up Loft London evening event Open Banking: Innovation for Customers.
All 21 entrants to The Stackies: Marketing Technology Stack Awards for June 2015. Visit chiefmartec.com to read about the winning stacks.
This document discusses integrating Browserify and CommonJS dependency management into Rails' asset pipeline Sprockets. It describes: 1) Limitations of Sprockets for managing JavaScript dependencies and the benefits of using Browserify and CommonJS. 2) How to integrate Browserify into Sprockets using a custom Tilt template that runs Browserify to bundle dependencies. 3) Enhancing the build pipeline to transpile ES6 code using a Browserify transform.
Cucumber FactoryGirl capybara shoulda spork database_cleaner launchy selenium timecop simplecov guard spork guard-rspec guard-spork guard-test guard-cucumber guard-livereload guard-bundler guard-rails guard-rspec guard-spork guard-test guard-cucumber guard-livereload guard-bundler guard-rails guard-rspec guard-spork guard-
Webpack is the fundamental building block of all modern Javascript application frameworks. While being flexible and powerful its plain configuration can be quite hard to understand if you just want things to "work like expected". Symfony's opinionated webpack wrapper "Encore" allows you to setup a flexible asset pipeline with 20 lines of code. This talk and its supporting git repo shows some of the concepts and ends up with a fully working Symfony 4.1 application utilizing a combined React, Vue.js and jQuery (sic) frontend. https://github.com/elmariachi111/encore-demo
This document summarizes a presentation about building a single page image editing application called SnapyX using HTML5 and related technologies. It describes using HTML5 features like canvas and File API for image uploading and processing, CSS3 grids for layout, and Backbone.js with plugins for the client-side architecture including offline storage with IndexedDB. It acknowledges challenges with experimental browsers and technologies but is proud of publishing an app to the Windows Store.
This presentation talks about an Ekino (www.ekino.com) application made for Microsoft Techdays 2012 in Paris. This application is based on many new technologies : HTML5, CSS3, IndexedDB, File API, D'n'D, SPA, IE10.
In a world of emerging JavaScript, is Rails getting left behind? Are server-side MVC applications out and static single page applications in? In this talk I’ll describe how we’ve used webpack(er) and Vue to revitalize our JavaScript approach within an aging Rails application. You can have it both ways.
1) The document discusses how to build modular web applications using the JavaScript frameworks Backbone.js and RequireJS. It advocates separating an application into reusable components using the Model-View-Controller (MVC) pattern and composing the interface from independent views. 2) RequireJS allows code to be split into bite-sized modules and defines dependencies between modules. This supports large-scale application development and avoids dependency issues. 3) The document provides an example of a fictitious stock trading application called Bullsfirst that demonstrates these techniques and emphasizes the importance of architecture for engaging web applications.
As a software consultant, I get to see a lot of interesting code. In this particular instance a client was in the process of transforming their web application to a rich, interactive interface with the help of another company. The project kicked off using Backbone and things were great. Until they were not great. Pages starting getting more and more involved and blame started being thrown at the technology choice. A move to Ember.js ensued and the app was rewritten. But architecturally bad decisions don't hide long, and soon the rewrite was preforming even worse. That's when I stepped in, with the help of another consultant, to solve the performance issues once and for all. Our solution used Backbone.js and it was fast. This is that journey.
The document discusses isomorphic JavaScript, which allows JavaScript code to run on both the client and server. It provides examples using libraries like Underscore.js and Handlebars.js isomorphically. Frameworks like Meteor, Mojito, and Rendr are introduced that support building isomorphic apps. The benefits are around performance, SEO, and code maintainability. The presentation concludes with a demo of building features into an sample isomorphic blog application.
1. Developing web applications has become increasingly complex over the years, requiring developers to choose frameworks, configure apps, and handle deployment. 2. Templates can help streamline development by providing pre-configured starting points for common stacks and handling boilerplate configuration. 3. Tools like Vagrant and Docker can help isolate development environments and more easily simulate production. 4. Frameworks like Brunch and Yeoman can automate frontend tasks like compilation, minification, and live reloading.
1) Isomorphic JavaScript allows code to run on both the client and server by being environment-agnostic or shimmed for different environments. 2) It improves performance by enabling faster initial page loads and improves SEO by allowing search engines to crawl single page apps. 3) Popular libraries like Underscore, Backbone, Handlebars, and React can be used isomorphically, and isomorphic applications exist on a spectrum from sharing small parts of code to entire applications.
This document provides an overview of setting up a Ruby on Rails application that integrates AngularJS and Twitter Bootstrap. It discusses why these technologies are used together and how to set them up, including installing necessary gems, modifying files, and adding AngularJS controllers. Code examples are provided to demonstrate basic CRUD functionality using Rails and AngularJS. The document concludes by describing the presenters' consulting company and providing contact information.
I prepared this presentation to introduce Ruby on Rails to a group of students at Università di Catania. It is not enough to get a good grasp of Rails, the presentation in fact was supported by live coding, where I started created a Phrasalbook (no more blog engine please :) )
The document compares Django and Ruby on Rails frameworks. It outlines some key similarities like the MTV/MVC patterns and relationships. It also highlights differences like routing syntax and autogenerated code in Rails. The document recommends Rails developers learn from its asset pipeline, template tags, and simplified routing while avoiding overgenerated code. It provides resources for learning Rails and introduces the consulting company Agiliq.
Isomorphic JavaScript applications can share the same code and run on both the front end and back end. It is also a spectrum containing applications that share minimal bits of validation logic with ones that share a bulk of the application code. Nashorn is a new JavaScript engine for Java that was released with Java 8. The Nashorn JavaScript engine makes isomorphic web apps on the JVM possible by allowing the exact same browser code to run on the server. This enables us to achieve the don’t-repeat-yourself (DRY) principle, by reducing repetition in a multitier architecture. This presentation covers the key concepts, rationale, and categories of Isomorphic JavaScript and how it makes your large applications maintainable.
These are my slide from talk at PHPDay in Verona 20014. Forget about classic website where UX is not so important. We are living in time where usability is one of the important thing if you are building some business client oriented web service. In locastic we are working on CRM that is based on Symfony2 as backend and AngularJS as frontend solution. How to connect this two frameworks? What are best practices? What are disadvantageous? How to take best from both worlds? These are topics I will cover in my talk with real examples.
Ruby on Rails com certeza é a estrela que elevou Ruby ao patamar de linguagem praticamente obrigatória a todo programador moderno. Porém muitos esquecem que Rails não é a única forma de desenvolver aplicações Web e muitas vezes nem é a melhor opção. O Ecossistema Ruby evolui a passos largos, todos os novos frameworks Web em Ruby adotaram o padrão Rack, que facilita a interoperabilidade entre frameworks Ruby. Além disso muitos estão olhando para o mundo da alta concorrência com novas tecnologias como Node.JS, mas o mundo Ruby tem opções robustas e testadas em produção como EventMachine. Enfim, vamos tentar aumentar o leque de soluções web com Ruby, além do Rails, traçando um paralelo com a plataforma .NET.