Small presentation for Charleston.js on the Async algebraic data type in JavaScript (demo omitted) as an alternative way to work with asynchronous control structures than Promises & async/await.
We're going to dive into function currying, function composition, eta-conversion and ramda.js in order to discover how we can refactor some JavaScript code to be point-free and give us concise, testable and reusable functions that express our intent.
Some Functional Programming in JavaScript and Ramda.jsRobert Pearce
A small take on functional programming in JavaScript (JS) with Ramda.js. In the demos, we refactor updating a deeply nested object using the Ramda REPL and refactor analysis of UK rainfall data with Ramda and TypeScript.
The emergence of functional compile-to-JavaScript languages opens the world of functional programming to web developers and the world of web development to functional programmers, but what tools are out there for functional programmers to use when they need to work with modern ECMAScript (JavaScript)? We'll shine a light on JavaScript's functional aspects, see an overview of popular functional programming tools and focus in on a few (ramda.js and crocks.js) that make currying, composition, point-free style and Algebraic Data Types in JavaScript only an `import` away.
Tracking huge files with Git LFS - LinuxCon 2016Tim Pettersen
Developers love Git for its raw speed, powerful history traversal, distributed nature, and (of course) the fact that it was originally built by Linus Torvalds. What we don't love is the fact that, out of the box, Git has terrible support for tracking large binary files!
Fortunately, developers from Atlassian and GitHub have teamed up to work on an open source, MIT licensed project to solve this problem: Git LFS (Large File Support). This means researchers, web designers, game developers, multimedia producers and all other developers who need to work with large data and rich media can move off legacy centralized systems and start using modern version control.
This session covers the computer science behind Git LFS' internals & architecture, CLI usage and how to build an effective Git LFS workflow for a software team.
Writing and debugging code is hard, but testing shouldn't be. This talk will discuss common techniques for writing simpler tests that still exercise your production code while preventing you from spending time debugging test code.
We're going to dive into function currying, function composition, eta-conversion and ramda.js in order to discover how we can refactor some JavaScript code to be point-free and give us concise, testable and reusable functions that express our intent.
Some Functional Programming in JavaScript and Ramda.jsRobert Pearce
A small take on functional programming in JavaScript (JS) with Ramda.js. In the demos, we refactor updating a deeply nested object using the Ramda REPL and refactor analysis of UK rainfall data with Ramda and TypeScript.
The emergence of functional compile-to-JavaScript languages opens the world of functional programming to web developers and the world of web development to functional programmers, but what tools are out there for functional programmers to use when they need to work with modern ECMAScript (JavaScript)? We'll shine a light on JavaScript's functional aspects, see an overview of popular functional programming tools and focus in on a few (ramda.js and crocks.js) that make currying, composition, point-free style and Algebraic Data Types in JavaScript only an `import` away.
Tracking huge files with Git LFS - LinuxCon 2016Tim Pettersen
Developers love Git for its raw speed, powerful history traversal, distributed nature, and (of course) the fact that it was originally built by Linus Torvalds. What we don't love is the fact that, out of the box, Git has terrible support for tracking large binary files!
Fortunately, developers from Atlassian and GitHub have teamed up to work on an open source, MIT licensed project to solve this problem: Git LFS (Large File Support). This means researchers, web designers, game developers, multimedia producers and all other developers who need to work with large data and rich media can move off legacy centralized systems and start using modern version control.
This session covers the computer science behind Git LFS' internals & architecture, CLI usage and how to build an effective Git LFS workflow for a software team.
Writing and debugging code is hard, but testing shouldn't be. This talk will discuss common techniques for writing simpler tests that still exercise your production code while preventing you from spending time debugging test code.
GIT: Content-addressable filesystem and Version Control SystemTommaso Visconti
Git presentation, internals, advanced use and workflow examples.
Presentation by Tommaso Visconti http://www.tommyblue.it for DrWolf srl http://www.drwolf.it
PuppetDB: New Adventures in Higher-Order Automation - PuppetConf 2013Puppet
"PuppetDB: New Adventures in Higher-Order Automation" by
Deepak Giridharagopal, Director of Engineering, Puppet Labs.
Presentation Overview: PuppetDB gives users fast, robust, centralized storage for Puppet-produced data. The 1.0 version landed at Puppetconf 2012, and now we're one year older and one year wiser. It's been deployed in thousands of sites, people have written libraries and tools on top of it, and there's been plenty of activity in the past year. We've tightly integrated it into Puppet Enterprise. We've added new features like report storage, event querying, import/export, better HTTP endpoints, and unified querying. And though we've added features, we've also made PuppetDB faster and consume less disk space. This talk will cover what's happened in the PuppetDB world between Puppetconf 2012 and now. We'll go into the new features, talk about performance and correctness, and discuss lessons learned.
Speaker Bio: Deepak is Director of Engineering at Puppet Labs, one of the authors of PuppetDB, and a many-times-over Puppetconf veteran. Prior to joining Puppet Labs, he was Principal Engineer at Dell/MessageOne, using Puppet to manage thousands of production systems.
Short introduction about vcs & git usage.
Aimed to introduce concept of version control system and git to people who didn't used git or vcs yet. Doesn't introduce deep part of git or operating policy for git. Just focus on simple introduction about main functionality and abstracted internal design.
Node Tools For Your Grails Toolbox - Gr8Conf 2013zanthrash
Grails has many tools available but when it comes to front end asset management (compile, concatenate, minify, cache-busting) there are a lot of nice tools coming out of the node.js space,
SOOCon24 - Showing that you care about security - OpenSSF ScorecardsChris Swan
Open Source Security Foundation (OpenSSF) Scorecards provide a way for open source users to determine whether maintainers are being diligent about securing their link in the software security supply chain. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
This presentation will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across and organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
Genomics Is Not Special: Towards Data Intensive BiologyUri Laserson
Genomics and life sciences is using antiquated technology for processing data. As the data volume is increasing in the life sciences, many in the biology community are reinventing the wheel, without realizing the existence of a rich ecosystem of tools for processing large data sets: Hadoop.
Efficient client-server interactions make or break a web application. This talk as about advanced techniques, which can be used with popular frameworks, to improve performance, and simplify data manipulations.
WebAssembly (aka wasm) is a new, standardized compilation target for the web, available in all modern browsers. But since it's so low level it can be difficult to see how it will revolutionize the future generations of React apps and potentially even power React itself. In this talk Jay will reveal what it is, how you can use it today, and the incredible opportunities it will continue to unlock.
Reactive programming nut and compiler enthusiast. Jay is a Senior Software Engineer at Netflix. Lover of all things open source, his contributions span numerous ecosystems. Former RxJS core team member and author of core-decorators, git-blame-someone-else, and co-author of redux-observable.
It is the slides for COSCUP[1] 2013 Hands-on[2], "Learning Python from Data".
It aims for using examples to show the world of Python. Hope it will help you with learning Python.
[1] COSCUP: http://coscup.org/
[2] COSCUP Hands-on: http://registrano.com/events/coscup-2013-hands-on-mosky
In my experience with JavaScript/Node.js devs, I find out that Streams is a topic still mostly unexplored and sometimes even feared. This is probably one of the most beautiful features of Node.js and it can be adopted also in the browser. Once you grasp the fundamentals, you'll be able to solve some ordinary programming challenges in a much more elegant and efficient way, so this is a very interesting topic. In this talk, I will cover the following topics: Streams: when and how; Different types of streams; Built-in and custom streams; Composability; Stream utils; Streams in the browser.
You've been given a task. You need to download some files from a server to your local machine. The files are fairly small, and you can list and access these files from the remote server through a REST API. You'd like to download them as fast as possible. The catch? There's a billion of them. Yes, one billion files.
How would would you do this? Would you do this synchronously in a single for loop? Would you use a producer/consumer queue with threads? Multiprocessing? Asyncio?
In this talk, we'll examine 3 different mechanisms for concurrently downloading files: multithreading, multiprocessing, and asyncio.
For each of these mechanisms we'll look at design best practices, how to handle debugging and error handling, and of course the overall performance. By examining three different approaches using the same data set, we gain a better understanding of the tradeoffs of each approach so we can pick the right library for the job.
Defeating firefox by Muneaki Nishimunea - CODE BLUE 2015CODE BLUE
The number of corporations establishing bug bounty programs in order to accomplish early discovery of vulnerabilities is increasing. So far, I have reported vulnerabilities in Firefox and received 45,000 USD (5,400,000 JPY) in bounties from the developer, which is the Mozilla Foundation. As a matter of fact, the vulnerabilities discovered in Firefox have a trend however, the awareness of the trend has not being raised among the Firefox developers and every time a new feature is implemented, a similar vulnerability is repeatedly created in the code. In this session, based on the vulnerabilities I have discovered in the past, I will introduce the patterns of vulnerabilities frequently observed in Firefox and delineate the root cause of those vulnerabilities. In addition, I will introduce my practical method that will allow you to effectively discover bugs in Firefox. This method is actually applicable not only to Firefox but any other open source software as it is based on an issue particular to open source software.
Collabnix Community conduct webinar on regular basis. Swapnasagar Pradhan, an engineer from VISA delivered a talk on Traefik this January 11th 2020. Check this out.
GIT: Content-addressable filesystem and Version Control SystemTommaso Visconti
Git presentation, internals, advanced use and workflow examples.
Presentation by Tommaso Visconti http://www.tommyblue.it for DrWolf srl http://www.drwolf.it
PuppetDB: New Adventures in Higher-Order Automation - PuppetConf 2013Puppet
"PuppetDB: New Adventures in Higher-Order Automation" by
Deepak Giridharagopal, Director of Engineering, Puppet Labs.
Presentation Overview: PuppetDB gives users fast, robust, centralized storage for Puppet-produced data. The 1.0 version landed at Puppetconf 2012, and now we're one year older and one year wiser. It's been deployed in thousands of sites, people have written libraries and tools on top of it, and there's been plenty of activity in the past year. We've tightly integrated it into Puppet Enterprise. We've added new features like report storage, event querying, import/export, better HTTP endpoints, and unified querying. And though we've added features, we've also made PuppetDB faster and consume less disk space. This talk will cover what's happened in the PuppetDB world between Puppetconf 2012 and now. We'll go into the new features, talk about performance and correctness, and discuss lessons learned.
Speaker Bio: Deepak is Director of Engineering at Puppet Labs, one of the authors of PuppetDB, and a many-times-over Puppetconf veteran. Prior to joining Puppet Labs, he was Principal Engineer at Dell/MessageOne, using Puppet to manage thousands of production systems.
Short introduction about vcs & git usage.
Aimed to introduce concept of version control system and git to people who didn't used git or vcs yet. Doesn't introduce deep part of git or operating policy for git. Just focus on simple introduction about main functionality and abstracted internal design.
Node Tools For Your Grails Toolbox - Gr8Conf 2013zanthrash
Grails has many tools available but when it comes to front end asset management (compile, concatenate, minify, cache-busting) there are a lot of nice tools coming out of the node.js space,
SOOCon24 - Showing that you care about security - OpenSSF ScorecardsChris Swan
Open Source Security Foundation (OpenSSF) Scorecards provide a way for open source users to determine whether maintainers are being diligent about securing their link in the software security supply chain. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
This presentation will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across and organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
Genomics Is Not Special: Towards Data Intensive BiologyUri Laserson
Genomics and life sciences is using antiquated technology for processing data. As the data volume is increasing in the life sciences, many in the biology community are reinventing the wheel, without realizing the existence of a rich ecosystem of tools for processing large data sets: Hadoop.
Efficient client-server interactions make or break a web application. This talk as about advanced techniques, which can be used with popular frameworks, to improve performance, and simplify data manipulations.
WebAssembly (aka wasm) is a new, standardized compilation target for the web, available in all modern browsers. But since it's so low level it can be difficult to see how it will revolutionize the future generations of React apps and potentially even power React itself. In this talk Jay will reveal what it is, how you can use it today, and the incredible opportunities it will continue to unlock.
Reactive programming nut and compiler enthusiast. Jay is a Senior Software Engineer at Netflix. Lover of all things open source, his contributions span numerous ecosystems. Former RxJS core team member and author of core-decorators, git-blame-someone-else, and co-author of redux-observable.
It is the slides for COSCUP[1] 2013 Hands-on[2], "Learning Python from Data".
It aims for using examples to show the world of Python. Hope it will help you with learning Python.
[1] COSCUP: http://coscup.org/
[2] COSCUP Hands-on: http://registrano.com/events/coscup-2013-hands-on-mosky
In my experience with JavaScript/Node.js devs, I find out that Streams is a topic still mostly unexplored and sometimes even feared. This is probably one of the most beautiful features of Node.js and it can be adopted also in the browser. Once you grasp the fundamentals, you'll be able to solve some ordinary programming challenges in a much more elegant and efficient way, so this is a very interesting topic. In this talk, I will cover the following topics: Streams: when and how; Different types of streams; Built-in and custom streams; Composability; Stream utils; Streams in the browser.
You've been given a task. You need to download some files from a server to your local machine. The files are fairly small, and you can list and access these files from the remote server through a REST API. You'd like to download them as fast as possible. The catch? There's a billion of them. Yes, one billion files.
How would would you do this? Would you do this synchronously in a single for loop? Would you use a producer/consumer queue with threads? Multiprocessing? Asyncio?
In this talk, we'll examine 3 different mechanisms for concurrently downloading files: multithreading, multiprocessing, and asyncio.
For each of these mechanisms we'll look at design best practices, how to handle debugging and error handling, and of course the overall performance. By examining three different approaches using the same data set, we gain a better understanding of the tradeoffs of each approach so we can pick the right library for the job.
Defeating firefox by Muneaki Nishimunea - CODE BLUE 2015CODE BLUE
The number of corporations establishing bug bounty programs in order to accomplish early discovery of vulnerabilities is increasing. So far, I have reported vulnerabilities in Firefox and received 45,000 USD (5,400,000 JPY) in bounties from the developer, which is the Mozilla Foundation. As a matter of fact, the vulnerabilities discovered in Firefox have a trend however, the awareness of the trend has not being raised among the Firefox developers and every time a new feature is implemented, a similar vulnerability is repeatedly created in the code. In this session, based on the vulnerabilities I have discovered in the past, I will introduce the patterns of vulnerabilities frequently observed in Firefox and delineate the root cause of those vulnerabilities. In addition, I will introduce my practical method that will allow you to effectively discover bugs in Firefox. This method is actually applicable not only to Firefox but any other open source software as it is based on an issue particular to open source software.
Collabnix Community conduct webinar on regular basis. Swapnasagar Pradhan, an engineer from VISA delivered a talk on Traefik this January 11th 2020. Check this out.
Sprockets is an easy solution to managing large JavaScript codebases by letting you structure it, bundle it with related assets, and consolidate it as one single file, with pre-baked command-line tooling, CGI front and Rails plugin. It's a framework-agnostic open-source solution that makes for great serving performance while helping you structure and manage your codebase better.
lwref: insane idea on reference countingGleb Smirnoff
My presentation at BSDCan 2014 on very cheap reference counting mechanism for multiprocessor kernel. Based on a function that can be restarted due to being atomic to memory, despite being several instructions long.
How to Lose Functional Programming at WorkRobert Pearce
This is a collection of tips on how to unsuccessfully introduce and keep functional programming styles and principles in your workplace, told by someone who has done all of them.
Teamwork is vital to the health of our projects and companies, but there are behaviours we encounter – and exhibit, ourselves – in our organisations that negatively impact the self-confidence, emotional stability and productivity of our teammates. Let's dive in to these behaviours and scenarios to see what we can discover and perhaps remedy.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
AI Genie Review: World’s First Open AI WordPress Website CreatorGoogle
AI Genie Review: World’s First Open AI WordPress Website Creator
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-genie-review
AI Genie Review: Key Features
✅Creates Limitless Real-Time Unique Content, auto-publishing Posts, Pages & Images directly from Chat GPT & Open AI on WordPress in any Niche
✅First & Only Google Bard Approved Software That Publishes 100% Original, SEO Friendly Content using Open AI
✅Publish Automated Posts and Pages using AI Genie directly on Your website
✅50 DFY Websites Included Without Adding Any Images, Content Or Doing Anything Yourself
✅Integrated Chat GPT Bot gives Instant Answers on Your Website to Visitors
✅Just Enter the title, and your Content for Pages and Posts will be ready on your website
✅Automatically insert visually appealing images into posts based on keywords and titles.
✅Choose the temperature of the content and control its randomness.
✅Control the length of the content to be generated.
✅Never Worry About Paying Huge Money Monthly To Top Content Creation Platforms
✅100% Easy-to-Use, Newbie-Friendly Technology
✅30-Days Money-Back Guarantee
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIGenieApp #AIGenieBonus #AIGenieBonuses #AIGenieDemo #AIGenieDownload #AIGenieLegit #AIGenieLiveDemo #AIGenieOTO #AIGeniePreview #AIGenieReview #AIGenieReviewandBonus #AIGenieScamorLegit #AIGenieSoftware #AIGenieUpgrades #AIGenieUpsells #HowDoesAlGenie #HowtoBuyAIGenie #HowtoMakeMoneywithAIGenie #MakeMoneyOnline #MakeMoneywithAIGenie
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
2. about me
Hi, I'm Robert
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
3. about me
Hi, I'm Robert
• My kiwi wife & I have just moved back from New Zealand
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
4. about me
Hi, I'm Robert
• My kiwi wife & I have just moved back from New Zealand
• Started out at Jack Russell Software w/ Tom Wilson in 2011
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
5. about me
Hi, I'm Robert
• My kiwi wife & I have just moved back from New Zealand
• Started out at Jack Russell Software w/ Tom Wilson in 2011
• Currently with Articulate, the e-learning software company
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
6. about me
Hi, I'm Robert
• My kiwi wife & I have just moved back from New Zealand
• Started out at Jack Russell Software w/ Tom Wilson in 2011
• Currently with Articulate, the e-learning software company
• Work with FP in JS all day
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
7. about me
Hi, I'm Robert
• My kiwi wife & I have just moved back from New Zealand
• Started out at Jack Russell Software w/ Tom Wilson in 2011
• Currently with Articulate, the e-learning software company
• Work with FP in JS all day
• Learn Haskell (λ) in my free time
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
8. about me
Hi, I'm Robert
• My kiwi wife & I have just moved back from New Zealand
• Started out at Jack Russell Software w/ Tom Wilson in 2011
• Currently with Articulate, the e-learning software company
• Work with FP in JS all day
• Learn Haskell (λ) in my free time
• Pretend to know what I'm doing
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 2
9. Question:
what are we going to do?
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 3
16. Use case?
• reactjs component library monorepo
• make it easy to bootstrap a new package
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 5
17. Use case?
• reactjs component library monorepo
• make it easy to bootstrap a new package
• solution:
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 5
18. Use case?
• reactjs component library monorepo
• make it easy to bootstrap a new package
• solution:
1. make templates
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 5
19. Use case?
• reactjs component library monorepo
• make it easy to bootstrap a new package
• solution:
1. make templates
2. make CLI app to collect options
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 5
20. Use case?
• reactjs component library monorepo
• make it easy to bootstrap a new package
• solution:
1. make templates
2. make CLI app to collect options
3. replace dummy template bits with options
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 5
43. drawbacks with callbacks
• asynchronous callbacks (like in fs.readFile) don't return a
value to caller
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 9
44. drawbacks with callbacks
• asynchronous callbacks (like in fs.readFile) don't return a
value to caller
• (not composable...easily)
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 9
45. drawbacks with callbacks
• asynchronous callbacks (like in fs.readFile) don't return a
value to caller
• (not composable...easily)
• don't work well with control flow (if (fs.readFile(...)))
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 9
46. drawbacks with callbacks
• asynchronous callbacks (like in fs.readFile) don't return a
value to caller
• (not composable...easily)
• don't work well with control flow (if (fs.readFile(...)))
• inevitably nest ---->
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 9
48. Callbacks are the narrowing spiral
staircase to hell. They are control
flow as designed by M.C. Escher.
— Dr. Boolean, Professor Frisby's Mostly Adequate Guide to
Functional Programming
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 11
50. Promises are awesome! But...
• values; not computations (like a function or other structure)
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 12
51. Promises are awesome! But...
• values; not computations (like a function or other structure)
• don't support cancellation
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 12
52. Promises are awesome! But...
• values; not computations (like a function or other structure)
• don't support cancellation
• don't support nesting
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 12
53. Promises are awesome! But...
• values; not computations (like a function or other structure)
• don't support cancellation
• don't support nesting
• impure
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 12
54. !
might not phase you at all
i still ❤ callbacks & promises
but let's see a different tool!
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 13
56. what exactly is an Async (aka Task)?
• "lazy Sum Type that implements an asynchronous control
structure"
• will not execute until needed
• keeps track of its internals (
!
for cleanup & cancellation)
Async e a = Rejected e | Resolved a
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 15
57. example in the wild wrapping the axios library
https://github.com/articulate/asyncios
// POST request
asyncios({
method: 'POST',
url: '/user?ID=12345',
data: { firstName: 'Fred', lastName: 'Flinstone' },
})
.fork(
error => console.log(error),
response => console.log(response)
)
@RobertWPearce | rwp.im | 2019-08-23 charleston.js 16