{"id":1906,"date":"2016-02-15T19:14:27","date_gmt":"2016-02-16T03:14:27","guid":{"rendered":"http:\/\/softwaredaily.wpengine.com\/?p=1906"},"modified":"2021-11-04T02:01:03","modified_gmt":"2021-11-04T09:01:03","slug":"reactive-programming-with-matthew-podwysocki","status":"publish","type":"post","link":"https:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/","title":{"rendered":"Reactive Programming with Matthew Podwysocki"},"content":{"rendered":"<p><img data-attachment-id=\"1907\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/matthew-podwysocki\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?fit=175%2C175&amp;ssl=1\" data-orig-size=\"175,175\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"matthew-podwysocki\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?fit=175%2C175&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?fit=175%2C175&amp;ssl=1\" decoding=\"async\" loading=\"lazy\" class=\"alignright size-full wp-image-1907\" style=\"border-radius: 50%; border: 1px solid #000000;\" src=\"https:\/\/i0.wp.com\/softwaredaily.wpengine.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?resize=175%2C175\" alt=\"matthew-podwysocki\" width=\"175\" height=\"175\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?w=175&amp;ssl=1 175w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/matthew-podwysocki.jpg?resize=80%2C80&amp;ssl=1 80w\" sizes=\"(max-width: 175px) 100vw, 175px\" data-recalc-dims=\"1\" \/><\/p>\n<h3>\u201cThe model-view-intent architecture is really cool and innovative \u2013 it\u2019s basically combining the technologies of observables with the virtual DOM, and you\u2019ve got this whole new paradigm of thinking.\u201d<\/h3>\n<p>Reactive programming emphasizes writing code that is readily responsive to events. It is an increasingly popular paradigm with highly interactive websites like Netflix. It draws on the value of functional programming calls like map, reduce, and flatmap.<\/p>\n<p>Matt joins us today to chat about reactive programming, the observer pattern, and his thoughts on where the future is going. If you are a fan of functional programming or JavaScript, you will enjoy this show. Matt is also speaking at the 2016 <a href=\"http:\/\/www.oreilly.com\/pub\/cpc\/5332\">O\u2019Reilly Fluent Conference<\/a>. If you want to win a free ticket to the conference, tweet about your favorite episode of Software Engineering Daily and tag <a href=\"https:\/\/twitter.com\/fluentconf\">@fluentconf<\/a> and <a href=\"https:\/\/twitter.com\/software_daily\">@software_daily<\/a>.<\/p>\n<p>Matt Podwysocki is the author ReactiveX JS and a software engineer at Microsoft.<\/p>\n<h3>Questions<\/h3>\n<ul>\n<li>What\u2019s wrong with the approach of using callbacks and events to solve problems in JavaScript?<\/li>\n<li>What is reactive programming?<\/li>\n<li>What types of asynchrony problems does Netflix have to deal with?<\/li>\n<li>How can we broadly think about the challenges asynchronous applications face?<\/li>\n<li>Why can we think of events as collections?<\/li>\n<li>In what ways has the observer pattern been implemented incorrectly in the past?<\/li>\n<li>What is it like to participate in an open source project with so many big, influential players?<\/li>\n<li>What\u2019s the future of ReactiveX?<\/li>\n<\/ul>\n<h3>Links<\/h3>\n<ul>\n<li><a href=\"http:\/\/reactivex.io\/documentation\/observable.html\">Observable<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Reactive_programming\">Reactive programming<\/a><\/li>\n<li><a href=\"http:\/\/maxogden.com\/node-streams.html\">Node Streams: How do they work?<\/a><\/li>\n<li><a href=\"http:\/\/reactivex.io\/\">ReactiveX<\/a><\/li>\n<li><a href=\"http:\/\/www.oodesign.com\/observer-pattern.html\">Observer Pattern<\/a><\/li>\n<li><a href=\"http:\/\/www.blackwasp.co.uk\/gofpatterns.aspx\">Gang of Four Patterns<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Iterator_pattern\">Iterator pattern<\/a><\/li>\n<li><a href=\"http:\/\/cycle.js.org\/\">Cycle.js<\/a><\/li>\n<li><a href=\"http:\/\/cycle.js.org\/model-view-intent.html\">Model-view-intent<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Cortana_(software)\">Cortana<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jhusain\">Jafar Husain<\/a><\/li>\n<li><a href=\"https:\/\/twitter.com\/mattpodwysocki\">Matt on Twitter<\/a><\/li>\n<\/ul>\n<h3><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>\u201cThe model-view-intent architecture is really cool and innovative \u2013 it\u2019s basically combining the technologies of observables with the virtual DOM, and you\u2019ve got this whole new paradigm of thinking.\u201d Reactive programming emphasizes writing code that is readily responsive to events. It is an increasingly popular paradigm with highly interactive websites like Netflix. It draws on<\/p>\n","protected":false},"author":2,"featured_media":1908,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1363,1084,14],"tags":[],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Reactive Programming with Matthew Podwysocki - Software Engineering Daily<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reactive Programming with Matthew Podwysocki - Software Engineering Daily\" \/>\n<meta property=\"og:description\" content=\"\u201cThe model-view-intent architecture is really cool and innovative \u2013 it\u2019s basically combining the technologies of observables with the virtual DOM, and you\u2019ve got this whole new paradigm of thinking.\u201d Reactive programming emphasizes writing code that is readily responsive to events. It is an increasingly popular paradigm with highly interactive websites like Netflix. It draws on\" \/>\n<meta property=\"og:url\" content=\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Engineering Daily\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-16T03:14:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-04T09:01:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/reactive-programming.jpg?fit=720%2C320\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"320\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Pranay\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@software_daily\" \/>\n<meta name=\"twitter:site\" content=\"@software_daily\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pranay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\"},\"author\":{\"name\":\"Pranay\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/609dd9667c84e7f6b8406a7a1bd2fb5c\"},\"headline\":\"Reactive Programming with Matthew Podwysocki\",\"datePublished\":\"2016-02-16T03:14:27+00:00\",\"dateModified\":\"2021-11-04T09:01:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\"},\"wordCount\":272,\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"articleSection\":[\"All Content\",\"JavaScript\",\"Podcast\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\",\"url\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\",\"name\":\"Reactive Programming with Matthew Podwysocki - Software Engineering Daily\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\"},\"datePublished\":\"2016-02-16T03:14:27+00:00\",\"dateModified\":\"2021-11-04T09:01:03+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/softwareengineeringdaily.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reactive Programming with Matthew Podwysocki\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"name\":\"Software Engineering Daily\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\",\"name\":\"Software Engineering Daily\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2022\/01\/cropped-logo-new.png?fit=296%2C139&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2022\/01\/cropped-logo-new.png?fit=296%2C139&ssl=1\",\"width\":296,\"height\":139,\"caption\":\"Software Engineering Daily\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/software_daily\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/609dd9667c84e7f6b8406a7a1bd2fb5c\",\"name\":\"Pranay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e85f4744ae484bd83dca0d08c8ce0625?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e85f4744ae484bd83dca0d08c8ce0625?s=96&d=retro&r=pg\",\"caption\":\"Pranay\"},\"url\":\"https:\/\/softwareengineeringdaily.com\/author\/pranay\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reactive Programming with Matthew Podwysocki - Software Engineering Daily","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/","og_locale":"en_US","og_type":"article","og_title":"Reactive Programming with Matthew Podwysocki - Software Engineering Daily","og_description":"\u201cThe model-view-intent architecture is really cool and innovative \u2013 it\u2019s basically combining the technologies of observables with the virtual DOM, and you\u2019ve got this whole new paradigm of thinking.\u201d Reactive programming emphasizes writing code that is readily responsive to events. It is an increasingly popular paradigm with highly interactive websites like Netflix. It draws on","og_url":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/","og_site_name":"Software Engineering Daily","article_published_time":"2016-02-16T03:14:27+00:00","article_modified_time":"2021-11-04T09:01:03+00:00","og_image":[{"width":720,"height":320,"url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/reactive-programming.jpg?fit=720%2C320","type":"image\/jpeg"}],"author":"Pranay","twitter_card":"summary_large_image","twitter_creator":"@software_daily","twitter_site":"@software_daily","twitter_misc":{"Written by":"Pranay","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/#article","isPartOf":{"@id":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/"},"author":{"name":"Pranay","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/609dd9667c84e7f6b8406a7a1bd2fb5c"},"headline":"Reactive Programming with Matthew Podwysocki","datePublished":"2016-02-16T03:14:27+00:00","dateModified":"2021-11-04T09:01:03+00:00","mainEntityOfPage":{"@id":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/"},"wordCount":272,"publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"articleSection":["All Content","JavaScript","Podcast"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/","url":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/","name":"Reactive Programming with Matthew Podwysocki - Software Engineering Daily","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/#website"},"datePublished":"2016-02-16T03:14:27+00:00","dateModified":"2021-11-04T09:01:03+00:00","breadcrumb":{"@id":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/softwareengineeringdaily.com\/2016\/02\/15\/reactive-programming-with-matthew-podwysocki\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareengineeringdaily.com\/"},{"@type":"ListItem","position":2,"name":"Reactive Programming with Matthew Podwysocki"}]},{"@type":"WebSite","@id":"https:\/\/softwareengineeringdaily.com\/#website","url":"https:\/\/softwareengineeringdaily.com\/","name":"Software Engineering Daily","description":"","publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareengineeringdaily.com\/#organization","name":"Software Engineering Daily","url":"https:\/\/softwareengineeringdaily.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2022\/01\/cropped-logo-new.png?fit=296%2C139&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2022\/01\/cropped-logo-new.png?fit=296%2C139&ssl=1","width":296,"height":139,"caption":"Software Engineering Daily"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/software_daily"]},{"@type":"Person","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/609dd9667c84e7f6b8406a7a1bd2fb5c","name":"Pranay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e85f4744ae484bd83dca0d08c8ce0625?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e85f4744ae484bd83dca0d08c8ce0625?s=96&d=retro&r=pg","caption":"Pranay"},"url":"https:\/\/softwareengineeringdaily.com\/author\/pranay\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2016\/02\/reactive-programming.jpg?fit=720%2C320&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p7GuoD-uK","_links":{"self":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/1906"}],"collection":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/comments?post=1906"}],"version-history":[{"count":0,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/1906\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media\/1908"}],"wp:attachment":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media?parent=1906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/categories?post=1906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/tags?post=1906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}