SlideShare a Scribd company logo
TechTalk
The fundamental problems of
GUI applications
& why people choose React
Vu Nguyen
vu.nguyen@will.vn
TL;DR
• All applications for normal users are GUI applications.
• The fundamental problem is rendering GUI
(include assembling GUI, handling user input and
integrating with application logic).
• This is not another talk about React, ES2015, Webpack,
and other fancy things!
Desktop applications are GUI applications
Desktop applications are GUI applications
Mobile applications are GUI applications

Recommended for you

Node, express & sails
Node, express & sailsNode, express & sails
Node, express & sails

An intro & wordshop to Node.js. Coving the node architecture, Npm and then HelloWorld in NodeJS then Express and finallJSy sailsJS

webexpressjavascript
React js Online Training
React js Online TrainingReact js Online Training
React js Online Training

http://www.learntek.org/product/react-js-training/ http://www.learntek.org Learntek is global online training provider on Big Data Analytics, Hadoop, Machine Learning, Deep Learning, IOT, AI, Cloud Technology, DEVOPS, Digital Marketing and other IT and Management courses. We are dedicated to designing, developing and implementing training programs for students, corporate employees and business professional.

react jsjsreact js online training
HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashed

Peter Lubbers from Kaazing gave a presentation on HTML5 features such as Web Workers, Geolocation, and WebSockets. He discussed how these new technologies allow for asynchronous background processing, location detection, and bi-directional real-time communications without polling. Browser support for HTML5 features was also reviewed.

Desktop applications are GUI applications
Mobile applications are GUI applications
Web applications are GUI applications
Every application you use daily
is
GUI applications
Every application you use daily
is
GUI applications
(We developers* are the only ones
that work with terminal**)
* Including programmers, hackers, specialists, etc.
** Even the terminal itself is a GUI application!
So if you want to build an application
for normal users,
you have no choice but GUI application!

Recommended for you

Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class

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.

isomorphicnode.jsjavascript
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016

This document provides an overview of modern web development with Delphi and React. It discusses how traditional "fat" web applications are no longer preferred and introduces key concepts in modern web development like JavaScript, HTML5 APIs, DOM, jQuery, single page applications, and React. It explains what React is and core React concepts like components, properties, state, virtual DOM, JSX syntax and lifecycle methods. It also discusses how Delphi can be used to build backend APIs that a React front-end can communicate with.

reactdelphijavascript
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스

The document discusses emerging web technologies including web components, web graphics, service workers, WebRTC, web animations, and transpilers. It compares these technologies to native platforms, and how browsers work differently than CPUs and GPUs. The document contains links to additional resources on these topics.

webcomponentswebglwww20kr
Let’s build a basic GUI application (1)
(without GUI library & framework)
Tier 1: Operating System
Bare metal
What do we have?
• A drawing buffer for output
• An input processing unit
• A programming language
• No GUI library or framework
Let’s build things from scratch*!
* Sample code using JavaScript.
1235
The game loop
Process input
Update state
Render
while (playing) {
processInput();
updateState();
render();
waitForNextFrame();
}

Recommended for you

JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations

No one wants a slow loading, slow reacting application. As page weight has increased so has the dependency on JavaScript to drive rich user experiences. Today many pages load over 2MBs of JavaScript, but is this healthy? Do your scripts and dependencies perform well? In this session we will review common JavaScript performance bottlenecks, how to detect them and how to eliminate them. This session will review common bad coding syntax, architecture and how to replace them with better alternatives. You will also be exposed to caching, code organization, build and deployment best practices that produce the best user experiences. Finally, you will see how to use the navigation timing and performance timing APIs to fine tune your applications to produce a fast, lean application your customers will love.

web performancejavascript
Develop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will loveDevelop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will love

Do you want to leverage HTML, CSS and JavaScripts APIs to deliver rich user experiences that outlive the framework du jour? Do You want to understand good front-end application architecture and performance principles. Then you want to build applications in Vanilla JS. Despite popular belief Vanilla JS is not as difficult to master and implement as you might think. In this tutorial Chris Love will demonstrate how to apply many common web performance optimization, good architecture and tricks to build a fast, native-like application user experience customers desire without dependency on large, fast food frameworks. This tutorial will demonstrate the following concepts: - Applying the 14kb Rule for Instant Loading - Markup Management - Eliminating Excess AJAX Calls - Working With and Around Application Cache - Applying Service Workers and HTTP/2 For Even Better User Experiences - Leveraging common browser APIs & good architecture

html5javascriptweb performance
Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"

Начинаете новый проект и не знаете что же выбрать: gulp+browserify, webpack или может brunch? SVG или PNG спрайты? На сколько сабдоменов шардить ресурсы? С повсеместным приходом HTTP/2.0 лучшие практики оптимизации загрузки веб-сайтов и приложений весьма изменились, однако наши инструменты -- нет. Как же деливерить несколько раз в день и не вынуждать пользователен перескачивать весь бандл? Я расскажу об ограничениях HTTP/1.1, почему возникли бандлеры, как внутри работает HTTP/2.0, какие проблемы он решает, что такое server push, развею пару мифов о минификации, поведаю про преимущества progressive rendering, изменениях в whatwg html5 стандарте и покажу два способа (es6 modules и commonjs без препроцессинга) организации модулей на клиенте.

javascriptjsbundling
The game state
var gameState = {
score: 1235,
time: 1200,
player: {
x: 120,
y: 30,
},
enemies: [ … ],
bullets: [ … ]
};
1235
The rendering function
function render() {
renderBackground();
renderEnemies();
renderCharacter();
renderBullets();
renderScore();
renderTimeBar();
swapBuffer();
}
1235
Updating state
function updateScore(val) {
gameState.score += val;
}
function updatePosition(dx, dy) {
gameState.player.x += dx;
gameState.player.y += dy;
}
Life of a GUI application
state
1
1235
render()

Recommended for you

Booting up with polymer
Booting up with polymerBooting up with polymer
Booting up with polymer

In this presentation we'll take a look at building a full stack web application using Polymer and Web Components. After a quick introduction to Polymer, we’ll see how we can handle things like authentication, pagination of large data sets, and adapting our UI to different viewports. We’ll also review what’s needed for moving our app to production and optimizing our User Experience with quick load times and transition animations.

web componentsvaadinspring
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone

Introduction and Comparison of polpular JS Frameworks Knockout, Ember, Angular and Backbone. The presentation descrobes How and when to select each framework.

knockoutemberangular
Polymer / WebComponents
Polymer / WebComponentsPolymer / WebComponents
Polymer / WebComponents

- Nuxeo has historically used different technologies for its UI such as ZPT, JSF, and AngularJS but is now exploring using Web Components with frameworks like Polymer and React. - Polymer helps build custom elements and adds sugar to remove boilerplate from element registration, lifecycle callbacks, and observers. Nuxeo elements could provide reusable UI building blocks. - The new Nuxeo Web UI would use the DOM as the framework and include Nuxeo elements for data and UI, layouts for convention-based dynamic loading, and testing with WCT and nuxeo-ftest.

webcomponentsmeetupnuxeo
Life of a GUI application
state
1
1235
1235
state
2
render()
render()
updateState()
Life of a GUI application
state
1
1235
1235
state
2
render()
render()
processInput()
updateState()
processInput()
Life of a GUI application
state
1
1235
1235
state
2
render()
render()
processInput()
updateState()
processInput()
Luckily you don’t have to
write “the loop” yourself.
The operating system handles it for you.

Recommended for you

General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript

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.

node.jsjavascriptweb
Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native apps

React Native is gaining maturity as a cross-platform mobile app development solution. With a strong community around the ecosystem, mobile app development is all set to become simpler and enjoyable. This talk is about various techniques and tools that are available for building, testing and deploying React Native apps for Android and iOS platforms.

reactnativecontinuous delivery
Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application

"Refactoring to a Single Page Application" by Marcello Teodori In origine era il monolite. Spesso dietro una startup web di successo c'è un'applicazione in tecnologia singola (Java, Rails, ecc.) che cresce finché fatica a scalare all'aumentare degli utenti e con essa il relativo processo di sviluppo all'aumentare degli sviluppatori. Sul back-end una strategia consolidata è suddividere progressivamente il monolite in microservice. Per il front-end la soluzione duale è estrarre gradualmente il codice HTML, CSS e JavaScript in una Single Page Application, applicando diverse tecniche come quelle maturate durante la mia esperienza in Workshare.

marcello teodorijavascriptcodemotion
The fundamental problems
of GUI applications
The problems
• Creating and assembling GUI
• Handling user input
• Integrating GUI & business logic
Basic GUI application architecture
Viewstate
render()
input input
logic
Assembling GUI
Viewstate
render()
input input
logic
Viewstate
render()
input input
logic
Viewstate
render()
input input
logic

Recommended for you

Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction

AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly and succinctly. AngularJS's data binding and dependency injection eliminate much of the code you would otherwise have to write. And it all happens within the browser, making it an ideal partner with any server technology.

angularwebstack academy bangalorefullstack web developer
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applications

Progressive Web Applications (PWA) is a comprehensive term describing web applications that implement a base set of browser platform features like HTTPS, Web Manifest and Service Workers. But it bleeds beyond the scope of an application's code because browsers are enabling qualified web applications to offer the same user experiences native application enjoy. This includes prominent home screen placement, push notifications, eliminated browser chrome and app store placement. Become a Progressive Web App expert with my course: Progressive Web Apps (PWA) Beginner to Expert -> http://PWACourse.com

businesstechnologyprogressive web applications
Primero bgu e
Primero bgu ePrimero bgu e
Primero bgu e

El documento define las Tecnologías de la Información y la Comunicación (TICs) y las Nuevas Tecnologías de la Información y la Comunicación (NTICs), explica las diferencias entre ambas, y menciona algunas ventajas de las TICs. En particular, señala que las TICs son tecnologías para gestionar y enviar información de un lugar a otro, mientras que las NTICs han sido posibles por la aparición de la tecnología digital y ordenadores más potentes. Luego enumera 10 diferencias clave y varias

Assembling GUI
Viewstate
render()
input input
logic
Viewstate
render()
input input
logic
Viewstate
render()
input input
logic
input
render()
Tier 1
• Creating and assembling GUI → render() function
• Handling user input → (…)
• Integrating GUI & business logic → do it yourself
What does a modern
operating system offers?
Tier 1: Operating System
Bare metal
Process input
Update state
Render
onClick()
onKeydown()
WM_LBUTTONDOWN
WM_KEYDOWN
onPaint()
WM_PAINT
Application
business logic
Application
input logic
Application
rendering logic
Operating System ApplicationEvent system

Recommended for you

Seymour Paper on December 1, 2015 Changes in the Discovery Rules
Seymour Paper on December 1, 2015 Changes in the Discovery RulesSeymour Paper on December 1, 2015 Changes in the Discovery Rules
Seymour Paper on December 1, 2015 Changes in the Discovery Rules

This document summarizes cases and issues relating to the application of the proportionality standards established in the 2015 amendments to the Federal Rules of Civil Procedure. It discusses how some courts have applied proportionality to limit certain discovery requests. It also addresses changes in attorney practices, judicial involvement in discovery matters, and whether the amendments apply to pending cases. Overall, the document analyzes the early impacts and interpretations of the proportionality requirements under the amended federal discovery rules.

Your Future
Your FutureYour Future
Your Future

It is time to discover your future! Talk to the "Advisor"!

destinyfuturecareer
The Power of Storytelling: Why Stories Matter
The Power of Storytelling: Why Stories MatterThe Power of Storytelling: Why Stories Matter
The Power of Storytelling: Why Stories Matter

Stories are one of the most effective ways humans communicate and make sense of reality. Neuroscience research shows that storytelling facilitates understanding between speakers and listeners by transporting people to different perspectives. While facts alone are meaningless, stories provide context that help reframe people's understanding of facts. Effective leaders recognize the power of storytelling to begin dialogues and inspire others. Stories follow common structures like having a beginning, middle, end, hero's journey, and plot points that build suspense to emotionally engage audiences.

change managementstorytelling
What does a modern operating system offers?
• Handle “the loop”
• Process raw input and provide event system
What does a modern operating system offers?
• Creating and assembling GUI → (defer to app platform)
• Handling user input → Event system
• Integrating GUI & business logic → do it yourself
Let’s build a basic GUI application (2)
(without GUI library & framework)
Tier 1: Operating System
Tier 2: App Platform
Close to bare metal
What do we have? (at tier 2)
• Component system
• Event system
Sample code using Windows API*
* Win32 & COM API. Read more:
https://msdn.microsoft.com/en-us/library/windows/desktop/ff381399(v=vs.85).aspx

Recommended for you

Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...

We explore Telstra’s 5 year Digital transformation journey which started in 2011 where 20% of their customer transactions were digital compared to 56% in H1 2016. Telstra’s broad focus on being a more digital rather than physical company aligned with massive investment in IT systems together with their long term organic transformation route is also explored giving a clear indication of strategic imperatives to achieve successful digital transformation. Through interviewing Monty Hamilton, Director of Digital Operations, we look at some of Telstra’s key achievements including their launch of a crowd-sourced customer support model, startup accelerator and their Digital First Program to name a few.

telstradigital transformationstrategic aquisitions
Cements
CementsCements
Cements

This document discusses various dental cements, their properties, uses, and applications. It focuses on zinc oxide eugenol cement and calcium hydroxide cement. Zinc oxide eugenol cement is widely used and has good biocompatibility but poor mechanical properties. Modifications have improved strength. Calcium hydroxide cement has high pH and promotes pulp healing when used as a liner or temporary filling. Both cements are soluble but help maintain pulp vitality due to their properties.

PPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
PPT Shalat Sunnah Muakkad dan Ghoiru MuakkadPPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
PPT Shalat Sunnah Muakkad dan Ghoiru Muakkad

Shalat sunnah muakad adalah shalat sunnah yang sering dilakukan oleh Nabi Muhammad SAW seperti shalat rawatib, malam, tarawih dan idain. Shalat ini dilakukan secara individu tanpa adzan dan iqomah, dua rakaat, dan bacaannya dapat dibaca keras atau pelan. Ada beberapa jenis shalat sunnah muakad seperti rawatib, malam, tarawih dan idain.

The application state
struct {
int score,
int time,
PLAYER player,
ENEMIES enemies,
BULLETS bullets
} gameState;
1235
The rendering function
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
PAINT_STRUCT ps;
HDC hdc;
switch (message) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// ...
EndPaint(hWnd, &ps);
break;
}
};
1235
Composing components
• Create child windows
• Attach them to the app window
• In response to WM_PAINT:
• Pass WM_PAINT to child windows
Handling input
• Handling user input
Response to input events WM_LBUTTONDOWN, WM_KEYDOWN
• Handling application life cycle WM_CREATE, WM_DESTROY

Recommended for you

ИБ-игры для взрослых в стиле Agile
ИБ-игры для взрослых в стиле AgileИБ-игры для взрослых в стиле Agile
ИБ-игры для взрослых в стиле Agile

Бизнес ИБ-игра "А что если" в стиле Agile в рамках конференции BIS Summit 2016

cybersecurityкибербезопасностьgamification
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to One

Story of architecture evolution of one project from zero to Lambda Architecture. Also includes information on how we scaled cluster as soon as architecture is set up. Contains nice performance charts after every architecture change.

redisperformance tuningbig data
Digital Transformation in Retail Banking
Digital Transformation in Retail BankingDigital Transformation in Retail Banking
Digital Transformation in Retail Banking

This document discusses how visual analytics can help drive digital transformation in the retail banking industry. It covers key trends like demographic changes, evolving customer behaviors, and increasing regulations that are challenging traditional banks. It advocates using visual analytics to improve customer centricity, operational efficiencies, risk management, and other initiatives. Case studies are presented showing how banks like ANZ and Swedbank have used visual analytics platforms like Qlik to gain insights from data and remain competitive against technology companies.

Process input
Update state
Render
onClick()
onKeydown()
WM_LBUTTONDOWN
WM_KEYDOWN
onPaint()
WM_PAINT
Application
business logic
Application
input logic
Application
rendering logic
Operating System ApplicationEvent system
What does a modern
application platform offers?
Tier 1: Operating System
Tier 2: App Platform
Close to bare metal
Android Platform
• Composing elements: XML Layout, GUI components
• Handling user input: Event system
• Integrating business logic: Callback
<Button
xmlns:android="http://schemas..."
android:id="@+id/button_send"
android:text="@string/button_send"
android:onClick="sendMessage" />
public void sendMessage(View view) {
// Do something
}
http://developer.android.com/guide/topics/ui/controls/button.html
Windows Presentation Foundation (WPF)
• Composing elements: XAML, GUI components
• Handling user input: Event system
• Integrating business logic: Handler
<Button
Grid.Column="1" Grid.Row="3"
Margin="0,10,0,0" Width="125"
Height="25" HorizontalAlignment="Right"
Click="Button_Click">View</Button>
private void Button_Click(
object sender, RoutedEventArgs e) {
// Do something
}
https://msdn.microsoft.com/en-us/library/mt270964.aspx

Recommended for you

NLP meetup 2016.10.05 - Bódogh Attila: xdroid
NLP meetup 2016.10.05 - Bódogh Attila: xdroidNLP meetup 2016.10.05 - Bódogh Attila: xdroid
NLP meetup 2016.10.05 - Bódogh Attila: xdroid

Beszéd és érzelemdetektálás

xdroidnlp meetup
Dev ops with smell v1.2
Dev ops with smell v1.2Dev ops with smell v1.2
Dev ops with smell v1.2

Last update to the DevOps anti-patterns talk that IMO deserves separate upload. It was about anti patterns captured consulting several projects on their DevOps adoption. There are few common pitfalls we can see repeating again and again over DevOps culture discovery. This talk is my experience summary there

anti-patternscicd
MasterCard Digital Strategy
MasterCard Digital StrategyMasterCard Digital Strategy
MasterCard Digital Strategy

This document outlines Mastercard's digital strategy to target customers ages 21-45 through social media platforms and their website. It discusses promoting their "Priceless Moments" campaign on Twitter, Instagram, and Facebook. The strategy aims to establish Mastercard as a trusted brand by highlighting responsible credit card use and offering perks to new customers like lower interest rates. It also focuses on an easy-to-use mobile-friendly website and app with quick access to answers. Mastercard plans to engage customers through content marketing, webinars, and customer-generated videos shared on social media. The goal is to acquire 500,000 new customers in 6 months by offering financial planning seminars. The estimated budget for this digital strategy is $

advertising
Web Platform (HTML & JS)
• Composing elements: HTML, GUI components
• Handling user input: Event system
• Integrating business logic: Callback
<button
style="width:100px;height:40px"
onclick="sayHello()">
Say Hello
</button>
function sayHello(e) {
// Do something
}
What does an application platform offers?
• Creating and assembling GUI → Pre-built components,
Domain specific language (DSL) for GUI
• Handling user input → Event system
• Integrating GUI & business logic → Callback, set state
Let’s build a basic GUI application (3)
(without GUI library & framework)
Tier 1: Operating System
Tier 2: App Platform
Tier 3: App
What do we have? (at tier 3, HTML & JS)
• DSL & pre-built GUI components
• Event system
• Callback & set component state
• No GUI library or framework.
We still want to create our custom components!
Let’s build a TODO application.

Recommended for you

пр Сколько зарабатывают специалисты по ИБ в России 2016
пр Сколько зарабатывают специалисты по ИБ в России 2016пр Сколько зарабатывают специалисты по ИБ в России 2016
пр Сколько зарабатывают специалисты по ИБ в России 2016

Информация по зарплатам Специалистов и Директоров по ИБ в России по материалам журанала "Зарплатомер"

пр Что ожидают работодатели от молодых специалистов
пр Что ожидают работодатели от молодых специалистовпр Что ожидают работодатели от молодых специалистов
пр Что ожидают работодатели от молодых специалистов

Моя презентация, которую читал на VIII Международной научно-практической конференции студентов, аспирантов и молодых ученых "Информационные технологии в науке"

работаdiabloстуденты
Healthcare guide to Social Media Marketing
Healthcare guide to Social Media MarketingHealthcare guide to Social Media Marketing
Healthcare guide to Social Media Marketing

Today's healthcare marketing requires both offline and online strategies to meet the increasing number of engaged patients searching for healthcare information online. Websites must focus on user experience through responsive design, resource centers, clear information, and lead capture. Blogging on a healthcare provider's website can drive traffic and referrals. Social media, like Twitter, is also used by many physicians, while local directory listings remain important. An effective social media strategy involves consistency, engaging with others, adding value, and monitoring effectiveness. The key questions for healthcare marketers are whether they are providing readily available answers for patients and doing enough to market their facilities.

reviewmarketingfacebook
The application state
var appState = {
todos: [{
title: “hello”,
complete: false
}, {
title: “world”,
complete: false
}]
};
Updating state
function addTodo(label) {
appState.todos.push({
title: label,
completed: false
});
}
function toggle(index) {
var item = appState.todos[index];
item.completed = !item.completed;
}
The rendering function
function render() {
// !?
}
The rendering function – First try
function render() {
var $listTodos = document.getElementById(“todos”)
for (var i=0; i < appState.todos; i++) {
// update, insert or delete DOM elements
}
var $numActive = document.getElementById(“num-active”)
$numActive.innerHTML = getNumActive();
// ...
}

Recommended for you

Digital Banking
Digital BankingDigital Banking
Digital Banking

The document discusses digital banking and omni-channel banking. It covers topics like internet banking, mobile banking, the internet of things, customer experience, content creation, data analytics, predictive analytics, CRM systems, and ensuring consistency across channels. The key aspects are using customer data and insights to improve the customer experience across online, mobile, and physical channels to provide a seamless omni-channel banking experience.

marketinginternetbig data
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...

This document summarizes a presentation given by Guga Stocco of Banco Original and David Bressler of CA Technologies about digital transformation in banking. The presentation discusses how focusing on customer experience can drive successful digital transformation. It also shares the story of how Banco Original embraced open banking by utilizing APIs to rethink what it means to be a bank and provide a frictionless customer experience. The presentation covers topics like fintech innovation, mobile and agile strategies, and how platforms can inform customer experiences.

ca world 16 apim & application developmentapido3x86s
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey

Customer loyalty and retention, two of the most important considerations in measuring business success in banking, are created by truly knowing your customer and offering a superior customer experience. However, banks need to improve customer experience, and digital channels are the best way to achieve this. Many FIs know this already, yet still find it difficult to seize the opportunity, despite knowing many customer pain points, such as no real onboarding process, a personalization gap, and lack of a seamless omni-channel experience. In this new Backbase webinar, we have talked to the renowned industry thought leader Jim Marous, co-publisher of The Financial Brand and publisher of the Digital Banking Report, about the importance of digital channels, about onboarding, and about the multi-channel process. The webinar agenda covers: The importance of digital channels Digital onboarding The commitment to the digital The real online customer experience: the omni-channel process

60 seconds onboardingcustomer experiencefinovate demo
So far, we have defined application state
and logic just fine.
The only hard part that kept us back is
rendering step.
(Include generating HTML, keeping updated with app state
and registering event callbacks)
The rendering function – Second try
var lastState; // store last appState for comparing
function render() {
var $listTodos = document.getElementById(“todos”)
for (var i=0; i < appState.todos; i++) {
// update, insert or delete DOM elements
}
var $numActive = document.getElementById(“num-active”)
$numActive.innerHTML = getNumActive();
// ...
lastState = deepClone(appState);
}
We have tried storing last application state
for rendering only changed parts.
This is what frameworks like Angular.js or
Backbone (Underscore) offers.
Enter
MVC & MVP

Recommended for you

Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015

Building Multi-Tenant and SaaS products in PHP with the open source Innomatic Platform. Let’s look at how you can build multi-tenant applications and SaaS products in PHP faster and better with the open source Innomatic Platform. Presentation at CloudConf 2015

innomaticsaasphp
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con InnomaticCostruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic

Innomatic è la piattaforma open source per creare applicazioni multi-tenant e piattaforme SaaS in PHP.

saasmulti-tenantphp
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...

The document discusses the evolution of MongoDB and the introduction of MongoDB Stitch and Triggers. Key points include: 1) MongoDB Stitch allows developers to build event-driven functions that execute in response to events like database changes or third party webhooks. 2) Stitch Triggers coordinate change streams from MongoDB to pass change events to an event coordinator, which ensures functions execute correctly. 3) An example application called the MongoDB Swagstore is presented to demonstrate how Stitch Triggers could be used to update inventory, send shipping notifications, and more in response to database changes.

mongodbmongodb world
MVC
• Applying Separation of
Concern to GUI applications.
• Input event
→ Controller
→ Model
→ View
MVP
• Applying Separation of
Concern to GUI applications.
• Model → Presenter → View
• View → Presenter → Model
Backbone.js
var Todo = Backbone.Model.extend({
default: { title: "", complete: false },
toggle: function() {
this.save(…); // trigger "change" (model)
}
});
var TodoView = Backbone.View.extend({
template: …,
events: …, // callback to manipulate model (handled by controller)
initialize: {
this.listenTo(this.model, "change", this.render); // listen to "change"
},
render: function() { … }, // rendering function (view)
// …
});
Angular.js (version 1)
function TodoCtrl($scope) {
var todos = $scope.todos = [];
$scope.addTodo = function() { // user event
todos.push({ title: $scope.newTodo, completed: false }); // update state
};
$scope.$watchCollection("todos", function() { // state-change event
// …
});
}
<form id="todo-form" ng-submit="addTodo()"> … </form>
<ul id="todo-list">
<li ng-repeat="todo in todos"> … </li>
</ul>

Recommended for you

MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development

Talking about how to build smart design and architecture for app development. Let your app can easy develop and deploy components on your app. And more topic of version control and quality improvement.

developmentiosobjective-c
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and Mobile

Learn about the fundamentals of AngularJS and how it can help you quickly build powerful web and mobile applications. This session will explore why AngularJS is a good choice for a front-end framework and demonstrate some of the power it gives you.

databasedbms
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native

What is React Native? How does React Native work? Writing React Native Expo Components, props, and states Component lifecycle Declarative and imperative Event handling User input Style Layout Data access Publishing your Project

reactreact native
What does a
application MV* framework offers?
Tier 1: Operating System
Tier 2: App Platform
Tier 3: App
What does a MV* framework offers?
• Creating and assembling GUI → view, template
• Handling user input → user event
• Integrating GUI & business logic
→ state-change event (Backbone.js, Angular.js)
Wow, so many concepts!
model, view, template, controller, presenter,
user event, state-change event
Let’s return to our starting architecture
Life of a GUI application
state
1
1235
1235
state
2
render()
render()
processInput()
updateState()
processInput()

Recommended for you

Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説

This document is about a seminar on Windows Phone 8.1 application development. It discusses topics like the purpose of the seminar, tools for app development like Visual Studio 2013 Update 2, user interface design basics, controls, extending controls, connecting data and UI, app packaging and deployment, platform commonalities and differences, and managing app state and data roaming.

windows phone 8.1 visual studio
Introduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R ShinyIntroduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R Shiny

Shiny is an R library for building interactive webapps. Shiny allows rapid prototyping and quick production of dashboards and interactive data visualisations. This is especially important in situations where putting a real data-driven prototype in the hands of the end user allows for better refining of requirements before passing off to a web development team. This allows to speed up the delivery process and reducing the dependencies on other teams. Code and solution to exercises available on github: https://github.com/amguedes/ShinySeminar

rdata sciencedata mining
cse581_03_EventProgramming.ppt
cse581_03_EventProgramming.pptcse581_03_EventProgramming.ppt
cse581_03_EventProgramming.ppt

This document discusses event-based programming and how it differs from procedural programming. In event-based programming, code is executed upon activation of events rather than in sequential order. The system waits for user input events, which then trigger program methods. When an input event occurs, a data structure describing the event is placed on an event queue. The program enters an event loop that continuously removes events from the queue and processes them by calling event dispatch routines.

Enter React solution
Let’s put aside the fancy ways to define
application state.
The only hard part is rendering step.
The application state
var appState = {
todos: [{
title: “hello”,
complete: false
}, {
title: “world”,
complete: false
}]
};
Updating state
function addTodo(label) {
appState.todos.push({
title: label,
completed: false
});
}
function toggle(index) {
var item = appState.todos[index];
item.completed = !item.completed;
}

Recommended for you

Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB Stitch

Vous avez des données précieuses dans MongoDB; et alors qu'il est important d'utiliser ces données pour donner de la valeur à vos utilisateurs et clients, il peut s'avérer difficile de le faire de manière sûre et sécurisée. Dans cette session, vous apprendrez à connecter simplement vos utilisateurs aux données dont ils ont besoin à l’aide de MongoDB Stitch.

mongodb.localparís
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps

With the upcoming release of Windows 8, Microsoft decided to bring HTML+Javascript into the world of Windows-platform application development as a first-class citizen. But make no mistake, this isn’t an attempt to somehow subvert Web developers—it’s more about enabling Web developers to leverage those skills in building “native” Windows applications running on the Windows 8 laptops, desktops, and slates. In this presentation, we’ll go over the basics of building a Windows 8 app using HTML and JavaScript, including a brief overview of what’s possible—and what’s not—for the Web developer seeking to “go native” on Windows.

javascriptwindows 8html
Android101
Android101Android101
Android101

David Marques gave a presentation on Android app development to a user group in São Paulo, Brazil. He began by introducing himself and his background in mobile development. The presentation covered the core components of Android apps including activities, services, content providers, and intent receivers. Marques explained how each component works and provided code examples. He emphasized doing background work in services on separate threads to avoid blocking the main thread.

androidmobile
The rendering function
React.createClass({
render: function() {
return (
<ul>
{
appState.todos.map(function(item) {
return <li> { item.title } </li>;
})
}
</ul>
);
}
});
Handle state change
React.createClass({
addTodoHandler: function() {
var label = this.refs.inputTodo.value;
addTodo(label); // update application state
this.forceUpdate(); // trigger rendering function
},
render: function() {
return (
<div>
<input ref="inputTodo"/>
<button onClick={this.addTodoHandler}/>
<ul> … </ul>
</div>
);}
});
Life of a GUI application
state
1
1235
1235
state
2
render()
render()
addTodoHandler()
addTodo()
toggleHandler()
toggle()
React lets us work with our classic architecture
and helps solving the hard part: rendering!
No need to rewrite our application in an opinion way.

Recommended for you

Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides

This document summarizes techniques for optimizing Angular application performance, including ahead of time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server side rendering. It provides code examples and compares boot times between different configurations. The techniques can improve first meaningful paint time by up to 86% compared to the default configuration.

angular optimization
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008

The document is a presentation about Silverlight 2 for developers. It includes an agenda covering CRUD, designers, patterns and testing. It discusses using Silverlight 2 for building applications with a dive log app as an example. It covers using services, securing applications, HTTP requests and using Blend. It also discusses using MVC patterns, separation of concerns, the presentation model pattern and implementing data binding, commands and value converters in applications.

tenz8techedsilverlight
Highload JavaScript Framework without Inheritance
Highload JavaScript Framework without InheritanceHighload JavaScript Framework without Inheritance
Highload JavaScript Framework without Inheritance

The project involves a front-end with UI widgets and a back-end with services, databases (.Net and MongoDB), and several standalone systems that interact. The front-end integrates with sites from over 70 brands. Widgets are created and their versions managed, with pros being the ability to change everything in new versions while maintaining backward compatibility, and cons being needing to fix bugs in all versions and get brands to update. Communication between widgets uses events both globally and bubbling up from children. Context is cloned and widgets reload on context changes. Load testing and error tracking are used. Plans exist to move more to front-end, use OOP and MVC patterns.

inheritanceframeworkjavascript
We only need to understand 2 functions
to start working with React:
- forceUpdate()
- render()
What does React offers?
• Creating and assembling GUI → React components
• Handling user input → user events
• Integrating GUI & business logic
→ keep GUI updated when application state changed
Why do people choose React?
What do people choose React?
• As we see, the only hard part is rendering step.
• React is a view library. It solves the right problem and
solves it well.
• It leaves application state for us. This is good because:
• We work with classic architecture of GUI applications.
• We can choose which architecture works best for us.
• We can migrate legacy applications to React without
changing so much code.

Recommended for you

Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"

React Native становится все более зрелым фреймворком для создания кросс платформенных мобильных приложений. Доклад основан на нашем опыте создания production приложения - от архитектуры до тестирования и CI. Рассмотрим вопрос переиспользования кода при разработке для разных платформ- что и сколько процентов можно переиспользовать и как этого достичь. Поговорим о том, как можно очень просто сделать offline-first приложение для чтения и создания данных. И чем нам в этом могут помочь Redux и Redux persist. Разберем, как максимально просто сделать навигацию в приложении. И, конечно же, какое production приложение без тестирования и continuous integration? Рассмотрим компонентное тестирование с Enzyme и интеграционное с Appium. А также, как максимально приблизить процесс deploy к тому, чему мы привыкли в web, с помощью CodePush.

frameworksjsfwdays
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai

Android Classes In Mumbai best android classes in mumbai with job assistance. our features are: expert guidance by it industry professionals lowest fees of 5000 practical exposure to handle projects well equiped lab after course resume writing guidance

android classes in mumbai best android classes in
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)

The document provides an overview of plugin development for Lotus Notes, Domino and Sametime applications using the Lotus Expeditor Toolkit. It discusses what plugins can do, how to install the Expeditor Toolkit plugin in Eclipse, the basic anatomy of a plugin, key extension points, and how to build user interfaces with SWT and jobs. The presentation also demonstrates how to create a sample plugin that reads data from a web service and displays it in a sidebar panel.

blugblug2011
How to choose a library or framework?
1. Write the prototype by your own
without using library or framework.
2. Understand what them offer.
3. Choose only which ones you need.
4. Keep in mind the design that you can switch to
another library later.
What’s next?
• Redux, an application state solution for React.
• Because we understand how to handle application state,
we can decide to use Redux or not. It’s up to you.
THANK YOU
Vu Nguyen
vu.nguyen@will.vn
TechTalk
TechTalk
The fundamental problems of
GUI applications
& why people choose React
Vu Nguyen
vu.nguyen@will.vn

Recommended for you

Advanced Coded UI Testing
Advanced Coded UI TestingAdvanced Coded UI Testing
Advanced Coded UI Testing

Shai Raiten's talk at the SELA Developer Practice (May 2013) about Advanced Coded UI using Visual Studio 2012. This presentation explain how to work with multiple UI maps, how to use various types of data sources, how to use LINQ and Reflection for project refactoring, and how to create and use logs and traces.

software testingmicrosoft visual studiotesting
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit

Google Web Toolkit (GWT) is an open source Java framework that allows web developers to create Ajax applications in Java and deploy them as optimized JavaScript. GWT provides tools for building AJAX applications in Java that are compiled into JavaScript for cross-browser compatibility. It handles browser inconsistencies and integrates with existing Java development tools, allowing developers to build and debug Rich Internet Applications using Java instead of JavaScript.

java web programminggoogle app enginecloud computing
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014

This document discusses a high productivity web development workflow. It recommends setting up pre-configured boilerplate code to minimize project setup time. Changes are automatically built, tested and deployed through continuous integration. Test cases should be written alongside code. Reusable components improve code quality. Servers should be thin with thick clients to improve workflow. Buildbot is introduced as an automation tool to continuously build, test and deploy code changes.

ciproductivityjavascript

More Related Content

What's hot

Angular 4
Angular 4Angular 4
Angular 4
Saurabh Juneja
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN Stack
Troy Miles
 
Node, express & sails
Node, express & sailsNode, express & sails
Node, express & sails
Brian Shannon
 
React js Online Training
React js Online TrainingReact js Online Training
React js Online Training
Learntek1
 
HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashed
Peter Lubbers
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
Spike Brehm
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Marco Breveglieri
 
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
민태 김
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
Chris Love
 
Develop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will loveDevelop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will love
Chris Love
 
Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"
Fwdays
 
Booting up with polymer
Booting up with polymerBooting up with polymer
Booting up with polymer
Marcus Hellberg
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Deepu S Nath
 
Polymer / WebComponents
Polymer / WebComponentsPolymer / WebComponents
Polymer / WebComponents
Arnaud Kervern
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
Spike Brehm
 
Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native apps
Leena N
 
Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application
Codemotion
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
WebStackAcademy
 
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applications
Chris Love
 

What's hot (20)

Angular 4
Angular 4Angular 4
Angular 4
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN Stack
 
Node, express & sails
Node, express & sailsNode, express & sails
Node, express & sails
 
React js Online Training
React js Online TrainingReact js Online Training
React js Online Training
 
HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashed
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
 
Develop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will loveDevelop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will love
 
Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"
 
Booting up with polymer
Booting up with polymerBooting up with polymer
Booting up with polymer
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
 
Polymer / WebComponents
Polymer / WebComponentsPolymer / WebComponents
Polymer / WebComponents
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
 
Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native apps
 
Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
 
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applications
 

Viewers also liked

Primero bgu e
Primero bgu ePrimero bgu e
Primero bgu e
EvelynLegarda6
 
Seymour Paper on December 1, 2015 Changes in the Discovery Rules
Seymour Paper on December 1, 2015 Changes in the Discovery RulesSeymour Paper on December 1, 2015 Changes in the Discovery Rules
Seymour Paper on December 1, 2015 Changes in the Discovery Rules
Richard Seymour
 
Your Future
Your FutureYour Future
Your Future
Dr. Mary Askew
 
The Power of Storytelling: Why Stories Matter
The Power of Storytelling: Why Stories MatterThe Power of Storytelling: Why Stories Matter
The Power of Storytelling: Why Stories Matter
Marie Ennis-O'Connor
 
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Capgemini
 
Cements
CementsCements
Cements
aruncs92
 
PPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
PPT Shalat Sunnah Muakkad dan Ghoiru MuakkadPPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
PPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
Intanrizkaagustia17
 
ИБ-игры для взрослых в стиле Agile
ИБ-игры для взрослых в стиле AgileИБ-игры для взрослых в стиле Agile
ИБ-игры для взрослых в стиле Agile
Aleksey Lukatskiy
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to One
Serg Masyutin
 
Digital Transformation in Retail Banking
Digital Transformation in Retail BankingDigital Transformation in Retail Banking
Digital Transformation in Retail Banking
Ferran Garcia Pagans
 
NLP meetup 2016.10.05 - Bódogh Attila: xdroid
NLP meetup 2016.10.05 - Bódogh Attila: xdroidNLP meetup 2016.10.05 - Bódogh Attila: xdroid
NLP meetup 2016.10.05 - Bódogh Attila: xdroid
Zoltan Varju
 
Dev ops with smell v1.2
Dev ops with smell v1.2Dev ops with smell v1.2
Dev ops with smell v1.2
Antons Kranga
 
MasterCard Digital Strategy
MasterCard Digital StrategyMasterCard Digital Strategy
MasterCard Digital Strategy
Megan Hodgman
 
пр Сколько зарабатывают специалисты по ИБ в России 2016
пр Сколько зарабатывают специалисты по ИБ в России 2016пр Сколько зарабатывают специалисты по ИБ в России 2016
пр Сколько зарабатывают специалисты по ИБ в России 2016
Andrey Prozorov, CISM, CIPP/E, CDPSE. LA 27001
 
пр Что ожидают работодатели от молодых специалистов
пр Что ожидают работодатели от молодых специалистовпр Что ожидают работодатели от молодых специалистов
пр Что ожидают работодатели от молодых специалистов
Andrey Prozorov, CISM, CIPP/E, CDPSE. LA 27001
 
Healthcare guide to Social Media Marketing
Healthcare guide to Social Media MarketingHealthcare guide to Social Media Marketing
Healthcare guide to Social Media Marketing
Jessika Phillips | NOW Marketing Group
 
Digital Banking
Digital BankingDigital Banking
Digital Banking
Nikolay Spasov
 
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
CA Technologies
 
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase
 

Viewers also liked (19)

Primero bgu e
Primero bgu ePrimero bgu e
Primero bgu e
 
Seymour Paper on December 1, 2015 Changes in the Discovery Rules
Seymour Paper on December 1, 2015 Changes in the Discovery RulesSeymour Paper on December 1, 2015 Changes in the Discovery Rules
Seymour Paper on December 1, 2015 Changes in the Discovery Rules
 
Your Future
Your FutureYour Future
Your Future
 
The Power of Storytelling: Why Stories Matter
The Power of Storytelling: Why Stories MatterThe Power of Storytelling: Why Stories Matter
The Power of Storytelling: Why Stories Matter
 
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
Telstra: Securing a Bright Digital Future for One of Australia’s Most Iconic ...
 
Cements
CementsCements
Cements
 
PPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
PPT Shalat Sunnah Muakkad dan Ghoiru MuakkadPPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
PPT Shalat Sunnah Muakkad dan Ghoiru Muakkad
 
ИБ-игры для взрослых в стиле Agile
ИБ-игры для взрослых в стиле AgileИБ-игры для взрослых в стиле Agile
ИБ-игры для взрослых в стиле Agile
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to One
 
Digital Transformation in Retail Banking
Digital Transformation in Retail BankingDigital Transformation in Retail Banking
Digital Transformation in Retail Banking
 
NLP meetup 2016.10.05 - Bódogh Attila: xdroid
NLP meetup 2016.10.05 - Bódogh Attila: xdroidNLP meetup 2016.10.05 - Bódogh Attila: xdroid
NLP meetup 2016.10.05 - Bódogh Attila: xdroid
 
Dev ops with smell v1.2
Dev ops with smell v1.2Dev ops with smell v1.2
Dev ops with smell v1.2
 
MasterCard Digital Strategy
MasterCard Digital StrategyMasterCard Digital Strategy
MasterCard Digital Strategy
 
пр Сколько зарабатывают специалисты по ИБ в России 2016
пр Сколько зарабатывают специалисты по ИБ в России 2016пр Сколько зарабатывают специалисты по ИБ в России 2016
пр Сколько зарабатывают специалисты по ИБ в России 2016
 
пр Что ожидают работодатели от молодых специалистов
пр Что ожидают работодатели от молодых специалистовпр Что ожидают работодатели от молодых специалистов
пр Что ожидают работодатели от молодых специалистов
 
Healthcare guide to Social Media Marketing
Healthcare guide to Social Media MarketingHealthcare guide to Social Media Marketing
Healthcare guide to Social Media Marketing
 
Digital Banking
Digital BankingDigital Banking
Digital Banking
 
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
Case Study: Open Banking, APIs and Digital Transformation—the Banco Original ...
 
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
Backbase webinar feat. Jim Marous: State of the Digital Customer Journey
 

Similar to The fundamental problems of GUI applications and why people choose React

Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Innomatic Platform
 
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con InnomaticCostruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Innoteam Srl
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
anistar sung
 
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and Mobile
Rocket Software
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
Eric Deng
 
Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説
shinobu takahashi
 
Introduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R ShinyIntroduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R Shiny
anamarisaguedes
 
cse581_03_EventProgramming.ppt
cse581_03_EventProgramming.pptcse581_03_EventProgramming.ppt
cse581_03_EventProgramming.ppt
tadudemise
 
Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB Stitch
MongoDB
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
JAX London
 
Android101
Android101Android101
Android101
David Marques
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides
David Barreto
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
Jonas Follesø
 
Highload JavaScript Framework without Inheritance
Highload JavaScript Framework without InheritanceHighload JavaScript Framework without Inheritance
Highload JavaScript Framework without Inheritance
FDConf
 
Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"
Fwdays
 
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai
Vibrant Technologies & Computers
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
Advanced Coded UI Testing
Advanced Coded UI TestingAdvanced Coded UI Testing
Advanced Coded UI Testing
Shai Raiten
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 

Similar to The fundamental problems of GUI applications and why people choose React (20)

Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
 
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con InnomaticCostruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
 
AngularJS for Web and Mobile
 AngularJS for Web and Mobile AngularJS for Web and Mobile
AngularJS for Web and Mobile
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
 
Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説
 
Introduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R ShinyIntroduction to interactive data visualisation using R Shiny
Introduction to interactive data visualisation using R Shiny
 
cse581_03_EventProgramming.ppt
cse581_03_EventProgramming.pptcse581_03_EventProgramming.ppt
cse581_03_EventProgramming.ppt
 
Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB Stitch
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
 
Android101
Android101Android101
Android101
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
 
Highload JavaScript Framework without Inheritance
Highload JavaScript Framework without InheritanceHighload JavaScript Framework without Inheritance
Highload JavaScript Framework without Inheritance
 
Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"
 
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Advanced Coded UI Testing
Advanced Coded UI TestingAdvanced Coded UI Testing
Advanced Coded UI Testing
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 

More from Oliver N

High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
Oliver N
 
WebRTC: Bring real-time to the web - Barcamp Saigon 2012
WebRTC: Bring real-time to the web - Barcamp Saigon 2012WebRTC: Bring real-time to the web - Barcamp Saigon 2012
WebRTC: Bring real-time to the web - Barcamp Saigon 2012
Oliver N
 
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
Oliver N
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
Oliver N
 
What does people say when they switch to Go?
What does people say when they switch to Go?What does people say when they switch to Go?
What does people say when they switch to Go?
Oliver N
 
Litibook - Feb 2016
Litibook - Feb 2016Litibook - Feb 2016
Litibook - Feb 2016
Oliver N
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
Oliver N
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 

More from Oliver N (8)

High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
 
WebRTC: Bring real-time to the web - Barcamp Saigon 2012
WebRTC: Bring real-time to the web - Barcamp Saigon 2012WebRTC: Bring real-time to the web - Barcamp Saigon 2012
WebRTC: Bring real-time to the web - Barcamp Saigon 2012
 
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
What does people say when they switch to Go?
What does people say when they switch to Go?What does people say when they switch to Go?
What does people say when they switch to Go?
 
Litibook - Feb 2016
Litibook - Feb 2016Litibook - Feb 2016
Litibook - Feb 2016
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
 

Recently uploaded

Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 

Recently uploaded (20)

Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 

The fundamental problems of GUI applications and why people choose React

  • 1. TechTalk The fundamental problems of GUI applications & why people choose React Vu Nguyen vu.nguyen@will.vn
  • 2. TL;DR • All applications for normal users are GUI applications. • The fundamental problem is rendering GUI (include assembling GUI, handling user input and integrating with application logic). • This is not another talk about React, ES2015, Webpack, and other fancy things!
  • 3. Desktop applications are GUI applications
  • 4. Desktop applications are GUI applications Mobile applications are GUI applications
  • 5. Desktop applications are GUI applications Mobile applications are GUI applications Web applications are GUI applications
  • 6. Every application you use daily is GUI applications
  • 7. Every application you use daily is GUI applications (We developers* are the only ones that work with terminal**) * Including programmers, hackers, specialists, etc. ** Even the terminal itself is a GUI application!
  • 8. So if you want to build an application for normal users, you have no choice but GUI application!
  • 9. Let’s build a basic GUI application (1) (without GUI library & framework) Tier 1: Operating System Bare metal
  • 10. What do we have? • A drawing buffer for output • An input processing unit • A programming language • No GUI library or framework Let’s build things from scratch*! * Sample code using JavaScript.
  • 11. 1235
  • 12. The game loop Process input Update state Render while (playing) { processInput(); updateState(); render(); waitForNextFrame(); }
  • 13. The game state var gameState = { score: 1235, time: 1200, player: { x: 120, y: 30, }, enemies: [ … ], bullets: [ … ] }; 1235
  • 14. The rendering function function render() { renderBackground(); renderEnemies(); renderCharacter(); renderBullets(); renderScore(); renderTimeBar(); swapBuffer(); } 1235
  • 15. Updating state function updateScore(val) { gameState.score += val; } function updatePosition(dx, dy) { gameState.player.x += dx; gameState.player.y += dy; }
  • 16. Life of a GUI application state 1 1235 render()
  • 17. Life of a GUI application state 1 1235 1235 state 2 render() render() updateState()
  • 18. Life of a GUI application state 1 1235 1235 state 2 render() render() processInput() updateState() processInput()
  • 19. Life of a GUI application state 1 1235 1235 state 2 render() render() processInput() updateState() processInput()
  • 20. Luckily you don’t have to write “the loop” yourself. The operating system handles it for you.
  • 21. The fundamental problems of GUI applications
  • 22. The problems • Creating and assembling GUI • Handling user input • Integrating GUI & business logic
  • 23. Basic GUI application architecture Viewstate render() input input logic
  • 24. Assembling GUI Viewstate render() input input logic Viewstate render() input input logic Viewstate render() input input logic
  • 25. Assembling GUI Viewstate render() input input logic Viewstate render() input input logic Viewstate render() input input logic input render()
  • 26. Tier 1 • Creating and assembling GUI → render() function • Handling user input → (…) • Integrating GUI & business logic → do it yourself
  • 27. What does a modern operating system offers? Tier 1: Operating System Bare metal
  • 28. Process input Update state Render onClick() onKeydown() WM_LBUTTONDOWN WM_KEYDOWN onPaint() WM_PAINT Application business logic Application input logic Application rendering logic Operating System ApplicationEvent system
  • 29. What does a modern operating system offers? • Handle “the loop” • Process raw input and provide event system
  • 30. What does a modern operating system offers? • Creating and assembling GUI → (defer to app platform) • Handling user input → Event system • Integrating GUI & business logic → do it yourself
  • 31. Let’s build a basic GUI application (2) (without GUI library & framework) Tier 1: Operating System Tier 2: App Platform Close to bare metal
  • 32. What do we have? (at tier 2) • Component system • Event system Sample code using Windows API* * Win32 & COM API. Read more: https://msdn.microsoft.com/en-us/library/windows/desktop/ff381399(v=vs.85).aspx
  • 33. The application state struct { int score, int time, PLAYER player, ENEMIES enemies, BULLETS bullets } gameState; 1235
  • 34. The rendering function LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) PAINT_STRUCT ps; HDC hdc; switch (message) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // ... EndPaint(hWnd, &ps); break; } }; 1235
  • 35. Composing components • Create child windows • Attach them to the app window • In response to WM_PAINT: • Pass WM_PAINT to child windows
  • 36. Handling input • Handling user input Response to input events WM_LBUTTONDOWN, WM_KEYDOWN • Handling application life cycle WM_CREATE, WM_DESTROY
  • 37. Process input Update state Render onClick() onKeydown() WM_LBUTTONDOWN WM_KEYDOWN onPaint() WM_PAINT Application business logic Application input logic Application rendering logic Operating System ApplicationEvent system
  • 38. What does a modern application platform offers? Tier 1: Operating System Tier 2: App Platform Close to bare metal
  • 39. Android Platform • Composing elements: XML Layout, GUI components • Handling user input: Event system • Integrating business logic: Callback <Button xmlns:android="http://schemas..." android:id="@+id/button_send" android:text="@string/button_send" android:onClick="sendMessage" /> public void sendMessage(View view) { // Do something } http://developer.android.com/guide/topics/ui/controls/button.html
  • 40. Windows Presentation Foundation (WPF) • Composing elements: XAML, GUI components • Handling user input: Event system • Integrating business logic: Handler <Button Grid.Column="1" Grid.Row="3" Margin="0,10,0,0" Width="125" Height="25" HorizontalAlignment="Right" Click="Button_Click">View</Button> private void Button_Click( object sender, RoutedEventArgs e) { // Do something } https://msdn.microsoft.com/en-us/library/mt270964.aspx
  • 41. Web Platform (HTML & JS) • Composing elements: HTML, GUI components ��� Handling user input: Event system • Integrating business logic: Callback <button style="width:100px;height:40px" onclick="sayHello()"> Say Hello </button> function sayHello(e) { // Do something }
  • 42. What does an application platform offers? • Creating and assembling GUI → Pre-built components, Domain specific language (DSL) for GUI • Handling user input → Event system • Integrating GUI & business logic → Callback, set state
  • 43. Let’s build a basic GUI application (3) (without GUI library & framework) Tier 1: Operating System Tier 2: App Platform Tier 3: App
  • 44. What do we have? (at tier 3, HTML & JS) • DSL & pre-built GUI components • Event system • Callback & set component state • No GUI library or framework. We still want to create our custom components! Let’s build a TODO application.
  • 45. The application state var appState = { todos: [{ title: “hello”, complete: false }, { title: “world”, complete: false }] };
  • 46. Updating state function addTodo(label) { appState.todos.push({ title: label, completed: false }); } function toggle(index) { var item = appState.todos[index]; item.completed = !item.completed; }
  • 47. The rendering function function render() { // !? }
  • 48. The rendering function – First try function render() { var $listTodos = document.getElementById(“todos”) for (var i=0; i < appState.todos; i++) { // update, insert or delete DOM elements } var $numActive = document.getElementById(“num-active”) $numActive.innerHTML = getNumActive(); // ... }
  • 49. So far, we have defined application state and logic just fine. The only hard part that kept us back is rendering step. (Include generating HTML, keeping updated with app state and registering event callbacks)
  • 50. The rendering function – Second try var lastState; // store last appState for comparing function render() { var $listTodos = document.getElementById(“todos”) for (var i=0; i < appState.todos; i++) { // update, insert or delete DOM elements } var $numActive = document.getElementById(“num-active”) $numActive.innerHTML = getNumActive(); // ... lastState = deepClone(appState); }
  • 51. We have tried storing last application state for rendering only changed parts. This is what frameworks like Angular.js or Backbone (Underscore) offers.
  • 53. MVC • Applying Separation of Concern to GUI applications. • Input event → Controller → Model → View
  • 54. MVP • Applying Separation of Concern to GUI applications. • Model → Presenter → View • View → Presenter → Model
  • 55. Backbone.js var Todo = Backbone.Model.extend({ default: { title: "", complete: false }, toggle: function() { this.save(…); // trigger "change" (model) } }); var TodoView = Backbone.View.extend({ template: …, events: …, // callback to manipulate model (handled by controller) initialize: { this.listenTo(this.model, "change", this.render); // listen to "change" }, render: function() { … }, // rendering function (view) // … });
  • 56. Angular.js (version 1) function TodoCtrl($scope) { var todos = $scope.todos = []; $scope.addTodo = function() { // user event todos.push({ title: $scope.newTodo, completed: false }); // update state }; $scope.$watchCollection("todos", function() { // state-change event // … }); } <form id="todo-form" ng-submit="addTodo()"> … </form> <ul id="todo-list"> <li ng-repeat="todo in todos"> … </li> </ul>
  • 57. What does a application MV* framework offers? Tier 1: Operating System Tier 2: App Platform Tier 3: App
  • 58. What does a MV* framework offers? • Creating and assembling GUI → view, template • Handling user input → user event • Integrating GUI & business logic → state-change event (Backbone.js, Angular.js)
  • 59. Wow, so many concepts! model, view, template, controller, presenter, user event, state-change event Let’s return to our starting architecture
  • 60. Life of a GUI application state 1 1235 1235 state 2 render() render() processInput() updateState() processInput()
  • 62. Let’s put aside the fancy ways to define application state. The only hard part is rendering step.
  • 63. The application state var appState = { todos: [{ title: “hello”, complete: false }, { title: “world”, complete: false }] };
  • 64. Updating state function addTodo(label) { appState.todos.push({ title: label, completed: false }); } function toggle(index) { var item = appState.todos[index]; item.completed = !item.completed; }
  • 65. The rendering function React.createClass({ render: function() { return ( <ul> { appState.todos.map(function(item) { return <li> { item.title } </li>; }) } </ul> ); } });
  • 66. Handle state change React.createClass({ addTodoHandler: function() { var label = this.refs.inputTodo.value; addTodo(label); // update application state this.forceUpdate(); // trigger rendering function }, render: function() { return ( <div> <input ref="inputTodo"/> <button onClick={this.addTodoHandler}/> <ul> … </ul> </div> );} });
  • 67. Life of a GUI application state 1 1235 1235 state 2 render() render() addTodoHandler() addTodo() toggleHandler() toggle()
  • 68. React lets us work with our classic architecture and helps solving the hard part: rendering! No need to rewrite our application in an opinion way.
  • 69. We only need to understand 2 functions to start working with React: - forceUpdate() - render()
  • 70. What does React offers? • Creating and assembling GUI → React components • Handling user input → user events • Integrating GUI & business logic → keep GUI updated when application state changed
  • 71. Why do people choose React?
  • 72. What do people choose React? • As we see, the only hard part is rendering step. • React is a view library. It solves the right problem and solves it well. • It leaves application state for us. This is good because: • We work with classic architecture of GUI applications. • We can choose which architecture works best for us. • We can migrate legacy applications to React without changing so much code.
  • 73. How to choose a library or framework? 1. Write the prototype by your own without using library or framework. 2. Understand what them offer. 3. Choose only which ones you need. 4. Keep in mind the design that you can switch to another library later.
  • 74. What’s next? • Redux, an application state solution for React. • Because we understand how to handle application state, we can decide to use Redux or not. It’s up to you.
  • 76. TechTalk The fundamental problems of GUI applications & why people choose React Vu Nguyen vu.nguyen@will.vn