The document summarizes the evolution of asynchronous JavaScript programming. It begins with callbacks being the fundamental way to handle asynchronous code. This led to issues like callback hell and loss of error handling. Promises were introduced to help address these issues by providing a cleaner way to handle asynchronous operations with methods like then() and catch(). However, promises could still result in unreadable code if used improperly for control flow. Generators and async/await were later introduced to allow asynchronous code to be written in a synchronous, blocking-like fashion using keywords like yield and await. Overall, the document traces the progression from callbacks to promises to generators and async/await as ways to improve the handling of asynchronous code in JavaScript.
Functional programming is gaining more and more popularity. I would like to present basics of functional programming, which everyone could use in daily work. I talk about functions, currying & function composition. I present utility functions, which can improve our code readability, make it more reusable and testable.
Think Async: Asynchronous Patterns in NodeJSAdam L Barrett
JavaScript is single threaded, so understanding the async patterns available in the language is critical to creating maintainable NodeJS applications with good performance. In order to master “thinking in async”, we’ll explore the async patterns available in node and JavaScript including standard callbacks, promises, thunks/tasks, the new async/await, the upcoming asynchronous iteration features, streams, CSP and ES Observables.
Functional programming is gaining more and more popularity. I would like to present basics of functional programming, which everyone could use in daily work. I talk about functions, currying & function composition. I present utility functions, which can improve our code readability, make it more reusable and testable.
Think Async: Asynchronous Patterns in NodeJSAdam L Barrett
JavaScript is single threaded, so understanding the async patterns available in the language is critical to creating maintainable NodeJS applications with good performance. In order to master “thinking in async”, we’ll explore the async patterns available in node and JavaScript including standard callbacks, promises, thunks/tasks, the new async/await, the upcoming asynchronous iteration features, streams, CSP and ES Observables.
Session 3 - 안정민 UI 모듈화로 워라밸 지키기
2019년 9월 6일 네이버 쇼핑 개발자 meet up 행사인 'SHOWROOM' 에 발표된 자료입니다.
보다 자세한 내용은 http://nshop-developer.github.io 을 참고해주세요.
(2019년 9월 30일 오후 오픈 예정)
This was a talk given at HTML5DevConf SF in 2015.
Ever wanted to write your own Browserify or Babel? Maybe have an idea for something new? This talk will get you started understanding how to use a JavaScript AST to transform and generate new code.
Redux saga: managing your side effects. Also: generators in es6Ignacio Martín
Explanation of redux-saga for its use in React and React Native. Contains an explanation about ES6 generators, used in sagas, with emphasis in generators to manage async code.
Presented at the December 2017 Philly Cocoaheads December meetup.
A beginner friendly intro to Reactive Programming through RxSwift. If you’re curious about RxSwift or just want to learn about another approach to handling asynchronous code in Swift, come check this out! We will explore the basic concepts of Reactive Programming and walk through concrete examples of using RxSwift to simplify networking, auth, and other common issues when building an iOS app.
Swift is a new programming language introduced by Apple for iOS and Mac app development. It has the best of both C and Objective-C with speed, interactivity and modern conventions.
Session 3 - 안정민 UI 모듈화로 워라밸 지키기
2019년 9월 6일 네이버 쇼핑 개발자 meet up 행사인 'SHOWROOM' 에 발표된 자료입니다.
보다 자세한 내용은 http://nshop-developer.github.io 을 참고해주세요.
(2019년 9월 30일 오후 오픈 예정)
This was a talk given at HTML5DevConf SF in 2015.
Ever wanted to write your own Browserify or Babel? Maybe have an idea for something new? This talk will get you started understanding how to use a JavaScript AST to transform and generate new code.
Redux saga: managing your side effects. Also: generators in es6Ignacio Martín
Explanation of redux-saga for its use in React and React Native. Contains an explanation about ES6 generators, used in sagas, with emphasis in generators to manage async code.
Presented at the December 2017 Philly Cocoaheads December meetup.
A beginner friendly intro to Reactive Programming through RxSwift. If you’re curious about RxSwift or just want to learn about another approach to handling asynchronous code in Swift, come check this out! We will explore the basic concepts of Reactive Programming and walk through concrete examples of using RxSwift to simplify networking, auth, and other common issues when building an iOS app.
Swift is a new programming language introduced by Apple for iOS and Mac app development. It has the best of both C and Objective-C with speed, interactivity and modern conventions.
The Strange World of Javascript and all its little Asynchronous BeastsFederico Galassi
Javascript is a wonderland populated by all kinds of exotic beasts. Callbacks, events, promises, functional programming, reactive programming, streams, generators are all part of this incredible asynchronous bestiary. We’re talking of insidious or even ferocious things, a great danger to the unwary programmer. Let’s look at them, learn from them, tame them and finally put them to our own advantage. Let’s stop Javascript from being an unfamiliar place and make it feel much more like home.
Talk I held on 14/05/2014 at JsDay, Verona, Italy. Corrected slides.
http://2014.jsday.it/talk/the-strange-world-of-javascript-and-all-its-little-asynchronous-beasts/
Feedback!
https://joind.in/talk/view/11280
Follow me on Twitter!
https://twitter.com/federicogalassi
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
This is presentation from Nemetschek Bulgaria - one of the partners of HackBulgaria's JavaScript course.
The topic is Async JS -How does the event loop in JS works and what are the benefits of the Promises.
A design pattern provides a general reusable solution for the common problems that occur in software design. The pattern typically shows relationships and interactions between classes or objects. The idea is to speed up the development process by providing well-tested, proven development/design paradigms. Design patterns come in three different categories. Creational patterns include the generation of object instances. Structure refers to how an object is made and how things behave and interact In this Webinar(Live Meetup) we will be covering - What is node js - When to use node js - Async I/O operations in node js - Advantages of Async/Await - Some interesting - async patterns - Performance comparison
A quick introduction into promises and observables by Stefan Charsley.
Presented on 23rd July 2020 for Palmerston North Software Developers meetup group.
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Domenic Denicola
This talk takes a deep dive into asynchronous programming patterns and practices, with an emphasis on the promise pattern.
We go through the basics of the event loop, highlighting the drawbacks of asynchronous programming in a naive callback style. Fortunately, we can use the magic of promises to escape from callback hell with a powerful and unified interface for async APIs. Finally, we take a quick look at the possibilities for using coroutines both in current and future (ECMAScript Harmony) JavaScript.
Promises are so passé - Tim Perry - Codemotion Milan 2016Codemotion
Promises saved JavaScript from callback hell, but we’re not out of the woods yet. Anybody who’s written heavily asynchronous code knows there’s still pain in the promise’d land, from the flood of extra ceremony required to the frustratingly fractured function scope. Fortunately, this isn’t the end of the line, and with generators and JavaScript's upcoming async/await syntax we can do even better. In this talk we’ll look at where asynchronous development is going next, how it’s going solve your problems, and what you need to do to put it into practice today.
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...Doug Jones
We rarely dive into current programming languages, touting the next new framework or the new features that will be out next year. This is about JavaScript the language as it exists today, what I picked up in going from C# to JS, and what C# picked up from JS along the way as well. It is based on Douglas Crockford's seminal book "JavaScript: The Good Parts".
Slowly but surely, promises have spread throughout the JavaScript ecosystem, standardized by ES 2015 and embraced by the web platform. But the world of asynchronous programming contains more patterns than the simple single-valued async function call that promises represent. What about things like streams, observables, async iterators—or even just cancelable promises? How do they fit, both in the conceptual landscape and in your day-to-day programming?
For the last year, I've been working to bring an implementation of I/O streams to the browser. Meanwhile, designs for a cancelable promise type (sometimes called "tasks") are starting to form, driven by the needs of web platform APIs. And TC39 has several proposals floating around for more general asynchronous iteration. We'll learn about these efforts and more, as I guide you through the frontiers of popular libraries, language design, and web standards.
One of JavaScript’s strengths is how it handles asynchronous code. Async is one of the most important and often misunderstood part of Javascript or any other language. Async is hard because we, as human beings, can’t do two conscious actions at once and think about both of them at the same moment. In this talk we will see how asynchronous JavaScript evolved over the years. It all started with callbacks… and it landed on generators!
Presentation I presented at Codemotion 2015 in Rome.
It's about how to build and share reproducible, portable development environments with Vagrant and Docker
This is a talk I gave at IPC 2014 in Munich.
It's about how to build durable web apis based on the experience gained at Namshi while we were developing our SOA architecture
PHP is the King, nodejs is the Prince and Lua is the fool.
An overview about how the IT architecture changed at Namshi, a fashion e-commerce based in Dubai
Presentation given during the phpDay 2014 in Verona.
It's about how to build durable web apis based on the experience gained at Namshi while we were developing our SOA architecture
Webinar Zend, http://www.zend.com/it/company/news/event/1081_webinar-introduzione-a-git
Introduzione a GIT, ai comandi principali, qualche trucchetto e best practice
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
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.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
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
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/
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
15. JS IS NON-BLOCKING
JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
16. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
//cart
loadUserInfo()
loadCartItems()
retrieveExchangeRates()
calculateTotal()
17. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
18. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
can we do this?
19. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
we could but…..
we are blocking!
20. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
we have to “wait”
50. I ❤ CALLBACK
Callbacks are the fundamental unit
of asynchrony in JS
But sometimes they’re not enough
for the evolving landscape
of async programming as JS matures
52. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
54. PROMISE
This lets asynchronous methods return
values like synchronous methods
instead of the final value
we get a promise.
A promise represents a proxy for a value
not necessarily known
when the promise is created
55.
56. Up until ES2015/ES6,
JS itself has actually
never had any direct notion of
asynchrony built into it
PROMISE
57. JS runs inside a hosting environment
(the browser/nodejs)
The event loop is handled by it
PROMISE
83. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
87. GENERATOR
function *foo(){
let x = 1
yield
return x
}
const g = foo()
let n = g.next()
console.log(n)
// {value: undefined, done: false}
n = g.next()
console.log(n)
// {value: 1, done: true}
88. GENERATOR
function *foo(){
let x = 1
yield
return x
}
const g = foo()
let n = g.next()
console.log(n)
// {value: undefined, done: false}
n = g.next()
console.log(n)
// {value: 1, done: true}
89. GENERATOR
function *foo(){
let x = 1
yield
return x
}
const g = foo()
let n = g.next()
console.log(n)
// {value: undefined, done: false}
n = g.next()
console.log(n)
// {value: 1, done: true}
90. GENERATOR
function *foo(){
let x = 1
yield
return x
}
const g = foo()
let n = g.next()
console.log(n)
// {value: undefined, done: false}
n = g.next()
console.log(n)
// {value: 1, done: true}
98. GENERATOR
function *bar(){
let x = 14
let y = yield * x
return y
}
const g = bar()
let n = g.next()
console.log(n)
//{value: undefined, done: false}
n = g.next(3)
console.log(n)
//{value: 42, done: true}
99. function *bar(){
let x = 14
let y = yield * x
return y
}
GENERATOR
const g = bar()
let n = g.next()
console.log(n)
//{value: undefined, done: false}
n = g.next(3)
console.log(n)
//{value: 42, done: true}
100. function *bar(){
let x = 14
let y = yield * x
return y
}
GENERATOR
const g = bar()
let n = g.next()
console.log(n)
//{value: undefined, done: false}
n = g.next(3)
console.log(n)
//{value: 42, done: true}
101. function *bar(){
let x = 14
let y = yield * x
return y
}
GENERATOR
const g = bar()
let n = g.next()
console.log(n)
//{value: undefined, done: false}
n = g.next(3)
console.log(n)
//{value: 42, done: true}
106. GENERATOR + PROMISE
the iterator should listen for the promise to
resolve (or reject)
then either resume the generator with the
fulfilment message
or throw an error into the generator with
the rejection reason)
107. GENERATOR + PROMISE
function *getTotal() {
let total = 0
try {
const userInfo = yield loadUserInfo()
const cartItems = yield loadCartItems()
const exr = yield retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
112. ASYNC/AWAIT
async function getTotal() {
let total = 0
try {
const userInfo = await loadUserInfo()
const cartItems = await loadCartItems()
const exr = await retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}
113. JS unlike a lot of other languages
never blocks
handling I/O is typically performed
via events and callbacks
function getTotal() {
let total = 0
try {
const userInfo = loadUserInfo()
const cartItems = loadCartItems()
const exr = retrieveExchangeRates()
total = calculateTotal(userInfo, cartItems, exr)
} catch (error) {
}
return total
}