University of arizona mobile matters - technology, a means to an endThibault Imbert
Technology is fascinating, but should this be what's driving us? What are the things you can do to differentiate yourself today? With all that noise, what are things you should be looking at? In this talk we will look at the different technologies available today to build amazing experiences and what's coming tomorrow. We will focus on the importance of learning, crafting and getting out of your comfort zone and most importantly, never be religious about a technology.
YQL is an amazing tool to use and offer APIs to the world. As you can do the lot in JavaScript it is pretty simple to get started. There is however also the option that you do things wrong and make your end users and yourself unhappy. This talk works around some of the issues you might face.
Test Driven Game Development with Cocos2d.
This is the first part of my 8th Light University talk on how to effectively write unit tests for game development. We're using Cocos2d for the framework, but the principles apply to most game frameworks.
Atmosphere 2016 - Krzysztof Kaczmarek - Don't fear the brackets - Clojure in ...PROIDEA
Find out why Clojure delighted Uncle Bob and why is used by huge corporations like Netflix, Wallmart, Daily Mail, (Allegro is joining this list) and why, regarding Greenspun's tenth rule, you already wrote your software in lisp.
University of arizona mobile matters - technology, a means to an endThibault Imbert
Technology is fascinating, but should this be what's driving us? What are the things you can do to differentiate yourself today? With all that noise, what are things you should be looking at? In this talk we will look at the different technologies available today to build amazing experiences and what's coming tomorrow. We will focus on the importance of learning, crafting and getting out of your comfort zone and most importantly, never be religious about a technology.
YQL is an amazing tool to use and offer APIs to the world. As you can do the lot in JavaScript it is pretty simple to get started. There is however also the option that you do things wrong and make your end users and yourself unhappy. This talk works around some of the issues you might face.
Test Driven Game Development with Cocos2d.
This is the first part of my 8th Light University talk on how to effectively write unit tests for game development. We're using Cocos2d for the framework, but the principles apply to most game frameworks.
Atmosphere 2016 - Krzysztof Kaczmarek - Don't fear the brackets - Clojure in ...PROIDEA
Find out why Clojure delighted Uncle Bob and why is used by huge corporations like Netflix, Wallmart, Daily Mail, (Allegro is joining this list) and why, regarding Greenspun's tenth rule, you already wrote your software in lisp.
HTML5.tx 2013: Embedded JavaScript, HTML5 and the Internet of ThingsJesse Cravens
JavaScript is everywhere, but one of the most fascinating areas is in the crossroads of distributed, real time applications and microcontrollers. Take a look into the world of Node.js, HTML5 Connectivity APIs, and Embedded Linux, and how this world is changing the traditional client and server relationship. Explore the impact these trends are having on the HTML5 user interface, see demos of JavaScript powered microcontrollers (Arduino, XBee, Beaglebone, and the Raspberry Pi), learn asynchronous coding patterns, and discover some of the newer APIs that are helping JavaScript developers step out of the web browser and into the world of physical computing, robotics, and hardware.
Talk held at the FrOSCon 2013 on 24.08.2013 in Sankt Augustin, Germany
Agenda:
- Why Twitter Storm?
- What is Twitter Storm?
- What to do with Twitter Storm?
A high level view of how Netflix culture, open source technology, and custom software can build a continuous delivery pipeline to allow multiple deployments a day.
JavaScript Makers: How JS is Helping Drive the Maker MovementJesse Cravens
JavaScript is now running everywhere, but one of the most fascinating areas is in the crossroads of full stack JavaScript and prototyping boards. Join frog hacker, Jesse Cravens, and his 6 year old son Carter Clearwater, in a talk about how the open hardware and software revolutions are accelerating the everyday hacker's ability to innovate.
JavaScript's accessibility, friendly syntax, and asynchronous runtime, makes it the ideal programming language for makers of all levels, enabling a spectrum of entry points: those with experience in other languages can explore the more advance topics without being riddled with 'time-consuming' boilerplate, compilation, and multi-threading, while newbies and young learners can get started with a successful build in a matter of hours.
Discover newer JavaScript APIs. Explore a suite of prototyping boards, such as Arduino, Raspberry Pi, Beaglebone, and the Freescale Freedom, that are inspiring JavaScript developers to step out of the web browser and into the world of physical computing, robotics, and hardware. Leave with not only some new ideas for yourself but also your children.
Drupal 8 configuration system for coders and site builders - DrupalCamp Balti...swentel
Session given at DrupalCamp Baltics 2013. Overview of the configuration management system in Drupal 8. Covers the api, config entities, context system.
This talk was given on Oct 23 at HTML5DevConf in San Francisco. The topic was Continuous Delivery as it relates to JavaScript applications, using tools like grunt and jenkins.
How to write better code: in-depth best practices for writing readable, simpl...Oursky
From data structure and object to architecture to refactoring. YouTube videos included. Summary of Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin
References:
Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin (http://www.amazon.com/Clean-Code-Handbook-
Software-Craftsmanship/dp/0132350882)
Design Patterns: ELements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
The Clean Code Talks - "Global State and Singletons"
https://www.youtube.com/watch?v=-FRm3VPhseI
How to write better code: in-depth best practices for writing readable, simpl...Jane Chung
From data structure and object to architecture to refactoring. YouTube videos included. Summary of Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin
References:
Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin (http://www.amazon.com/Clean-Code-Handbook-
Software-Craftsmanship/dp/0132350882)
Design Patterns: ELements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
The Clean Code Talks - "Global State and Singletons"
https://www.youtube.com/watch?v=-FRm3VPhseI
The Sling Tracer tool, along with a brand new Chrome Developer plugin, helps introspect the Sling request processing to understand which code paths are executed, what gets written to the repository, which queries are fired, and lots of other details about request execution, in real time.
Slides from adaptTo conference https://adapt.to/2016/en/schedule/hey-sling--what-are-you-doing--sling-tracer-to-the-rescue.html
Lets look at writing a new Struts 2 application from square one, using the Yahoo User Interface (YUI) Library on the front end, and Struts 2 on the backend. YUI provides the glitz and the glamour, and Struts 2 provides the dreary business logic, input validation, and text formatting.
Troubleshooting Live Java Web Applicationsashleypuls
This talk examines methods and tools that can be used to uncover and resolve performance problems arising in Java web applications. It touches on a few common problems such as slow SQL and blocked threads. It uses various diagnostic tools to examine these problems including log files, jvisualvm, and New Relic. Finally, it evaluates the use of these tools in a production environment, separating them into what can and cannot be used in live production applications.
Knowing when is the right time to invest in growth, what should be the team size and structure can be overwhelming. I am sharing a few pieces of advice in this presentation that I hope you will find useful to build your first growth team.
Some people call it better marketing, others better product management. This presentation is about what a Growth team is about, why you need one, how to set it up, and what it means for the future of product development.
HTML5.tx 2013: Embedded JavaScript, HTML5 and the Internet of ThingsJesse Cravens
JavaScript is everywhere, but one of the most fascinating areas is in the crossroads of distributed, real time applications and microcontrollers. Take a look into the world of Node.js, HTML5 Connectivity APIs, and Embedded Linux, and how this world is changing the traditional client and server relationship. Explore the impact these trends are having on the HTML5 user interface, see demos of JavaScript powered microcontrollers (Arduino, XBee, Beaglebone, and the Raspberry Pi), learn asynchronous coding patterns, and discover some of the newer APIs that are helping JavaScript developers step out of the web browser and into the world of physical computing, robotics, and hardware.
Talk held at the FrOSCon 2013 on 24.08.2013 in Sankt Augustin, Germany
Agenda:
- Why Twitter Storm?
- What is Twitter Storm?
- What to do with Twitter Storm?
A high level view of how Netflix culture, open source technology, and custom software can build a continuous delivery pipeline to allow multiple deployments a day.
JavaScript Makers: How JS is Helping Drive the Maker MovementJesse Cravens
JavaScript is now running everywhere, but one of the most fascinating areas is in the crossroads of full stack JavaScript and prototyping boards. Join frog hacker, Jesse Cravens, and his 6 year old son Carter Clearwater, in a talk about how the open hardware and software revolutions are accelerating the everyday hacker's ability to innovate.
JavaScript's accessibility, friendly syntax, and asynchronous runtime, makes it the ideal programming language for makers of all levels, enabling a spectrum of entry points: those with experience in other languages can explore the more advance topics without being riddled with 'time-consuming' boilerplate, compilation, and multi-threading, while newbies and young learners can get started with a successful build in a matter of hours.
Discover newer JavaScript APIs. Explore a suite of prototyping boards, such as Arduino, Raspberry Pi, Beaglebone, and the Freescale Freedom, that are inspiring JavaScript developers to step out of the web browser and into the world of physical computing, robotics, and hardware. Leave with not only some new ideas for yourself but also your children.
Drupal 8 configuration system for coders and site builders - DrupalCamp Balti...swentel
Session given at DrupalCamp Baltics 2013. Overview of the configuration management system in Drupal 8. Covers the api, config entities, context system.
This talk was given on Oct 23 at HTML5DevConf in San Francisco. The topic was Continuous Delivery as it relates to JavaScript applications, using tools like grunt and jenkins.
How to write better code: in-depth best practices for writing readable, simpl...Oursky
From data structure and object to architecture to refactoring. YouTube videos included. Summary of Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin
References:
Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin (http://www.amazon.com/Clean-Code-Handbook-
Software-Craftsmanship/dp/0132350882)
Design Patterns: ELements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
The Clean Code Talks - "Global State and Singletons"
https://www.youtube.com/watch?v=-FRm3VPhseI
How to write better code: in-depth best practices for writing readable, simpl...Jane Chung
From data structure and object to architecture to refactoring. YouTube videos included. Summary of Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin
References:
Clean Code: A Handbook of Agile Software Craftsmanship: by Robert C Martin (http://www.amazon.com/Clean-Code-Handbook-
Software-Craftsmanship/dp/0132350882)
Design Patterns: ELements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
The Clean Code Talks - "Global State and Singletons"
https://www.youtube.com/watch?v=-FRm3VPhseI
The Sling Tracer tool, along with a brand new Chrome Developer plugin, helps introspect the Sling request processing to understand which code paths are executed, what gets written to the repository, which queries are fired, and lots of other details about request execution, in real time.
Slides from adaptTo conference https://adapt.to/2016/en/schedule/hey-sling--what-are-you-doing--sling-tracer-to-the-rescue.html
Lets look at writing a new Struts 2 application from square one, using the Yahoo User Interface (YUI) Library on the front end, and Struts 2 on the backend. YUI provides the glitz and the glamour, and Struts 2 provides the dreary business logic, input validation, and text formatting.
Troubleshooting Live Java Web Applicationsashleypuls
This talk examines methods and tools that can be used to uncover and resolve performance problems arising in Java web applications. It touches on a few common problems such as slow SQL and blocked threads. It uses various diagnostic tools to examine these problems including log files, jvisualvm, and New Relic. Finally, it evaluates the use of these tools in a production environment, separating them into what can and cannot be used in live production applications.
Similar to Workers of the web - BrazilJS 2013 (20)
Knowing when is the right time to invest in growth, what should be the team size and structure can be overwhelming. I am sharing a few pieces of advice in this presentation that I hope you will find useful to build your first growth team.
Some people call it better marketing, others better product management. This presentation is about what a Growth team is about, why you need one, how to set it up, and what it means for the future of product development.
FITC '14 Toronto - Technology, a means to an endThibault Imbert
Technology is fascinating, but should this be what drives us? What are the things you can do to differentiate yourself today? With all that noise, what are things you should be looking at?
In this talk, Thibault Imbert will look at the different technologies available today to build amazing experiences and what’s coming tomorrow. He will focus on the importance of learning, crafting and getting out of your comfort zone and most importantly, to never be religious about a technology.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
31. Most common use case
1. Responsive programming
When you have an expensive computation to perform
and don’t want to block the UI.
Friday, August 23, 13
32. By default, the UI thread
Rendering
Network
JavaScript6ms
2ms
8ms
16ms
UI Thread
Friday, August 23, 13
37. Life as a worker
What is available:
XMLHttpRequest
The Application Cache
Spawning other web workers
The navigator object
The location object (read-only)
setTimeout()/clearTimeout() and setInterval()/clearInterval()
Importing external scripts using the importScripts() method
What is not:
The DOM
The window object
The document object
The parent object
Friday, August 23, 13
38. Web Workers == Threads ?
Workers and threads
Friday, August 23, 13
39. 1. Workers are higher-level than threads and safe
First difference
Friday, August 23, 13
40. Why not threads?
Threads are hard to use.
Too low-level for web development.
We should not expose that level of complexity to web developers.
Locks, manual synchronization, race conditions, really?
Friday, August 23, 13
41. var worker = new Worker("background.js");
JSVM Impact on memory
Slow instantiation time
Thread
Higher-level than threads
Own heap
and stack
Friday, August 23, 13
46. With Web Workers, nothing is shared
var worker1 = new Worker("background-task-1.js");
var worker3 = new Worker("background-task-3.js");
var worker2 = new Worker("background-task-2.js");
Cloning
Cloning
Transfer of
ownership
Friday, August 23, 13
47. 1 Web Worker == 1 core ?
Workers and cores
Friday, August 23, 13
48. Workers and cores
UI Thread
(Thread 1)
Web Worker
(Thread 2)
Time
Single CPU
Friday, August 23, 13
51. Workers and cores
1. It is not possible to specify if a Web Worker
should run on a specific core.
Friday, August 23, 13
52. Workers and cores
1. It is not possible to specify if a Web Worker
should run on a specific core.
2. Web Workers on a single core CPU, will not run in
parallel but will still not block the UI.
Friday, August 23, 13
53. Workers and cores
1. It is not possible to specify if a Web Worker
should run on a specific core.
2. Web Workers on a single core CPU, will not run in
parallel but will still not block the UI.
3. On a multicore CPU, Web Workers can run truly in
parallel if the OS decides to.
Friday, August 23, 13
58. Background logic
self.postMessage('Hello from Web Worker!');
// create a new worker
var worker = new Worker("background.js");
// listen to the response from the Worker
worker.addEventListener('message', receiveMessage);
// callback handling the response, data is available in the event object
// outputs: Hello from Web Worker!
function receiveMessage (e)
{
console.log (e.data);
}
Current worker Send data
Friday, August 23, 13
59. Catching errors
var width = document.innerWidth;
self.postMessage(width);
// create a new worker
var worker = new Worker("background.js");
// listen to the response from the Worker
worker.addEventListener('error', receiveMessage);
// callback handling the error
// outputs: Uncaught ReferenceError: document is not defined
function receiveMessage (e)
{
console.log (e.data);
}
Trying to access an object not available from a Worker
Friday, August 23, 13
61. Data types supported for communication
Primitive types: Number, String, Boolean.
Friday, August 23, 13
62. Data types supported for communication
Primitive types: Number, String, Boolean.
Composite data types: plain JSON objects,
ImageData and TypedArray types.
Friday, August 23, 13
63. Running expensive computation
// create a new worker
var worker = new Worker("background.js");
// listen to the response from the Worker
worker.addEventListener('message', receiveMessage);
// callback handling the response, data is available in the event object
// outputs: 400000000
function receiveMessage (e)
{
console.log (e.data);
}
var slowSquare = function (n) {
var i = 0;
while (++i < n * n) {}
return i;
};
self.postMessage ( slowSquare( 20000 ) );
Friday, August 23, 13
65. Data cloning
self.postMessage('Hello from Web Worker!');
self.postMessage([1, 13, 34, 50]);
self.postMessage({name: Bob, age: 30});
self.postMessage([{name: Tom, age: 20}]);
Friday, August 23, 13
67. Data cloning
var data = [1, 2, 3, 4]
Web Worker A Web Worker B
clone
Friday, August 23, 13
68. Data cloning
var data = [1, 2, 3, 4]
self.postMessage(data);
Web Worker A Web Worker B
clone
Friday, August 23, 13
69. Data cloning
var data = [1, 2, 3, 4]
self.postMessage(data);
Web Worker A Web Worker B
[1, 13, 34, 50]
clone
Friday, August 23, 13
70. Data cloning
var data = [1, 2, 3, 4]
self.postMessage(data);
Web Worker A Web Worker B
[1, 13, 34, 50]
clone
data[2] = 100;
Friday, August 23, 13
71. Data cloning
var data = [1, 2, 3, 4]
self.postMessage(data);
Web Worker A Web Worker B
[1, 13, 34, 50]
clone
var incomingArray = e.data;
data[2] = 100;
Friday, August 23, 13
72. Data cloning
var data = [1, 2, 3, 4]
self.postMessage(data);
Web Worker A Web Worker B
[1, 13, 34, 50]
clone
var incomingArray = e.data;
// outputs: [1, 2, 3, 4]
console.log (incomingArray);
data[2] = 100;
Friday, August 23, 13
73. Data cloning
var data = [1, 2, 3, 4]
self.postMessage(data);
Web Worker A Web Worker B
[1, 13, 34, 50]
clone
var incomingArray = e.data;
// outputs: [1, 2, 3, 4]
console.log (incomingArray);
data[2] = 100;
Overhead
Friday, August 23, 13
74. Sending a 16mb typedarray with cloning
// Create a 16MB "file" and fill it.
var uInt8View = new Uint8Array(1024*1024*16);
for (var i = 0; i < uInt8View.length; ++i) {
uInt8View[i] = i;
}
// transfer ownership to the worker
worker.postMessage(uInt8View.buffer);
Friday, August 23, 13
75. Platform Time (ms)
iOS7 (Safari/iPhone 5) 214
iOS6 (Safari/iPhone 4S) 524
MacBook Pro (Chrome/10.8.4) 75
Sending a 16mb typedarray
Friday, August 23, 13
76. Transfer of ownership
// Create a 16MB "file" and fill it.
var uInt8View = new Uint8Array(1024*1024*16);
for (var i = 0; i < uInt8View.length; ++i) {
uInt8View[i] = i;
}
// transfer ownership to the worker
worker.postMessage(uInt8View.buffer, [uInt8View.buffer]);
Friday, August 23, 13
77. Transfer of ownership
Web Worker A Web Worker B
reference transferred
to Web Worker B
Friday, August 23, 13
78. Transfer of ownership
var data = [1, 2, 3, 4]
Web Worker A Web Worker B
reference transferred
to Web Worker B
Friday, August 23, 13
79. Transfer of ownership
var data = [1, 2, 3, 4]
self.postMessage(uInt8View.buffer,
Web Worker A Web Worker B
reference transferred
to Web Worker B
Friday, August 23, 13
80. Transfer of ownership
var data = [1, 2, 3, 4]
self.postMessage(uInt8View.buffer,
[uInt8View.buffer]);
Web Worker A Web Worker B
reference transferred
to Web Worker B
Friday, August 23, 13
81. Transfer of ownership
var data = [1, 2, 3, 4]
self.postMessage(uInt8View.buffer,
[uInt8View.buffer]);
Web Worker A Web Worker B
reference transferred
to Web Worker B
// triggers runtime exception
uInt8View.buffer = 12;
Friday, August 23, 13
82. Transfer of ownership
var data = [1, 2, 3, 4]
self.postMessage(uInt8View.buffer,
[uInt8View.buffer]);
Web Worker A Web Worker B
reference transferred
to Web Worker B
var incomingArray = e.data;
// triggers runtime exception
uInt8View.buffer = 12;
Friday, August 23, 13
83. Transfer of ownership
var data = [1, 2, 3, 4]
self.postMessage(uInt8View.buffer,
[uInt8View.buffer]);
Web Worker A Web Worker B
reference transferred
to Web Worker B
var incomingArray = e.data;
// outputs: [1, 2, 3, 4]
console.log (incomingArray);
// triggers runtime exception
uInt8View.buffer = 12;
Friday, August 23, 13
84. Transfer of ownership, almost a 3x boost
Platform Time (ms)
iOS7 (Safari/iPhone 5) 80 (was 214)
iOS6 (Safari/iPhone 4S) 162 (was 524)
MacBook Pro (Chrome/10.8.4) 37 (was 75)
Friday, August 23, 13
87. Exciting use case
2. Parallel programming
When you want to leverage multiple CPU cores by
having computations running concurrently to solve a
specific task.
Friday, August 23, 13
93. But...
1. Cloning overhead is high and limits
parallelization opportunities.
2. Transfer of ownership does not work for
parallelization.
Friday, August 23, 13
94. But...
1. Cloning overhead is high and limits
parallelization opportunities.
2. Transfer of ownership does not work for
parallelization.
3. A more efficient communication model has to
be designed for Web Workers to allow faster
communication.
Friday, August 23, 13
95. But...
1. Cloning overhead is high and limits
parallelization opportunities.
2. Transfer of ownership does not work for
parallelization.
3. A more efficient communication model has to
be designed for Web Workers to allow faster
communication.
Software transactional memory?
Friday, August 23, 13
97. OK, let’s see if you remember the main points.
Friday, August 23, 13
98. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13
99. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13
100. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13
101. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13
102. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13
103. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13
104. To summarize
1. Leverage Web Workers if you don’t want your UI
to lock: true or false?
2. Web Workers are available pretty much
everywhere on desktop and mobile: true or false?
3. Web Workers are as low-level as threads: true
or false?
4. Message cloning is faster than transfer of
ownership: true or false?
5. Web Workers work great to keep the UI
responsive: true or false?
6. Parallel programming and responsive
programming are the same things: true or false?
Friday, August 23, 13