{"id":451,"date":"2020-06-03T17:58:37","date_gmt":"2020-06-03T17:58:37","guid":{"rendered":"https:\/\/www.allendowney.com\/blog\/?p=451"},"modified":"2020-06-03T17:58:37","modified_gmt":"2020-06-03T17:58:37","slug":"think-dsp-v1-1","status":"publish","type":"post","link":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/","title":{"rendered":"Think DSP v1.1"},"content":{"rendered":"\n<p>For the last week or so I have been working on an update to <em>Think DSP<\/em>.  The <a href=\"https:\/\/greenteapress.com\/wp\/think-dsp\/\">latest version is available now from Green Tea Press<\/a>.  Here are some of the changes I made:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Running on Colab<\/h4>\n\n\n\n<p>All notebooks now run on Colab.  Judging by my inbox, many readers find it challenging to download and run the code.  Running on Colab is a lot easier.<\/p>\n\n\n\n<p>If you want to try an example, <a href=\"https:\/\/colab.research.google.com\/github\/AllenDowney\/ThinkDSP\/blob\/master\/code\/chap01preview.ipynb\">here&#8217;s a preview of Chapter 1<\/a>.  And if you want to see where we&#8217;re headed, <a href=\"https:\/\/colab.research.google.com\/github\/AllenDowney\/ThinkDSP\/blob\/master\/code\/chap10preview.ipynb\">here\u2019s a preview of Chapter 10<\/a>.  You can <a href=\"http:\/\/allendowney.github.io\/ThinkDSP\/\">get to the rest of the notebooks from here<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">No more thinkplot<\/h4>\n\n\n\n<p>For the first edition, I used a module called <code>thinkplot<\/code> that provides functions that make it easier to use Matplotlib.  It also overrides some of the default options.<\/p>\n\n\n\n<p>But since I wrote the first edition, Matplotlib has improved substantially.  I found I was able to eliminate <code>thinkplot<\/code> with minimal changes.  As a result, the code is simpler and the figures look better.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Still using thinkdsp<\/h4>\n\n\n\n<p>I provide a module called <code>thinkdsp<\/code> that contains classes and functions used throughout the book.  I think this module is good for learners.  It lets me hide details that would otherwise be distracting.  It lets me present some topics &#8220;top-down&#8221;, meaning that we learn how to use some features before we know how they work.  <\/p>\n\n\n\n<p>And when you learn the API provided by <code>thinkdsp<\/code>, you are also learning about DSP.  For example, <code>thinkdsp<\/code> provides classes called Signal, Wave, and Spectrum.<\/p>\n\n\n\n<p>A Signal represents a continuous function; a Wave represents a sequence of discrete samples.  So Signal provides make_wave, but Wave does not provide make_signal.  When you use this API, you understand implicitly that this is a one-way operation: you can sample a Signal to get a Wave, but you cannot recover a Signal from a Wave.<\/p>\n\n\n\n<p>On the other hand, you can convert from Wave to Spectrum and from Spectrum to Wave, which implies (correctly) that they are equivalent representations of the same information.  Given one, you can compute the other.<\/p>\n\n\n\n<p>I realize that not everyone loves it when a book uses a custom library like <code>thinkdsp<\/code>.  When <a href=\"https:\/\/www.amazon.com\/gp\/customer-reviews\/RAV2OUFIMDK0M\/ref=cm_cr_arp_d_rvw_ttl?ie=UTF8&amp;ASIN=1491938455\">people don&#8217;t like<\/a> <em>Think DSP<\/em>, this is the most common reason.   But looking at <code>thinkdsp<\/code> with fresh eyes, I am doubling down; I still think it&#8217;s a good way to learn.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Less object-oriented<\/h4>\n\n\n\n<p>Nevertheless, I found a few opportunities to simplify the code, and in particular to make it less object-oriented.  I generally like OOP, but I acknowledge that there are drawbacks.  One of the biggest is that it can be hard to keep an inheritance hierarchy in your head and easy to lose track of what classes provide which methods.<\/p>\n\n\n\n<p>I still think the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Template_method_pattern\">template pattern<\/a> is a good way to present a framework: the parent class provides the framework and child classes fill in the details.<\/p>\n\n\n\n<p>However, based on feedback from readers, I have come to realize that object-oriented programming is not as universally known and loved as I assumed.<\/p>\n\n\n\n<p>In several places I found that I could eliminate object-oriented features and simplify the code without losing explanatory power.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Pretty, pretty good<\/h4>\n\n\n\n<p>Coming back to this book after some time, I think it&#8217;s pretty good.  If you are interested in digital signal processing, I think the computation-first approach is a good way to get started.  And if you are not interested in digital signal processing, maybe I can change your mind!<\/p>\n\n\n\n<p>Here are the links again:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Here&#8217;s <a href=\"https:\/\/greenteapress.com\/wp\/think-dsp\/\">the latest version from Green Tea Press<\/a>. <\/li><li><a href=\"https:\/\/colab.research.google.com\/github\/AllenDowney\/ThinkDSP\/blob\/master\/code\/chap01preview.ipynb\">Here&#8217;s a preview of Chapter 1<\/a>.  that you can run in a browser.<\/li><li>And <a href=\"https:\/\/colab.research.google.com\/github\/AllenDowney\/ThinkDSP\/blob\/master\/code\/chap10preview.ipynb\">here\u2019s a preview of Chapter 10<\/a>.  <\/li><li>You can <a href=\"http:\/\/allendowney.github.io\/ThinkDSP\/\">get to the rest of the notebooks from here<\/a>.<\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the last week or so I have been working on an update to Think DSP. The latest version is available now from Green Tea Press. Here are some of the changes I made: Running on Colab All notebooks now run on Colab. Judging by my inbox, many readers find it challenging to download and run the code. Running on Colab is a lot easier. If you want to try an example, here&#8217;s a preview of Chapter 1. And if&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[72,73,16,74],"class_list":["post-451","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-digital-signal-processing","tag-dsp","tag-python","tag-think-dsp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Think DSP v1.1 - Probably Overthinking It<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Think DSP v1.1 - Probably Overthinking It\" \/>\n<meta property=\"og:description\" content=\"For the last week or so I have been working on an update to Think DSP. The latest version is available now from Green Tea Press. Here are some of the changes I made: Running on Colab All notebooks now run on Colab. Judging by my inbox, many readers find it challenging to download and run the code. Running on Colab is a lot easier. If you want to try an example, here&#8217;s a preview of Chapter 1. And if... Read More Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Probably Overthinking It\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-03T17:58:37+00:00\" \/>\n<meta name=\"author\" content=\"AllenDowney\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AllenDowney\" \/>\n<meta name=\"twitter:site\" content=\"@AllenDowney\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"AllenDowney\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\"},\"author\":{\"name\":\"AllenDowney\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/#\/schema\/person\/4e5bfb2e9af6c3446cb0031a7bf83207\"},\"headline\":\"Think DSP v1.1\",\"datePublished\":\"2020-06-03T17:58:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\"},\"wordCount\":620,\"publisher\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/#organization\"},\"keywords\":[\"digital signal processing\",\"DSP\",\"python\",\"Think DSP\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\",\"url\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\",\"name\":\"Think DSP v1.1 - Probably Overthinking It\",\"isPartOf\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/#website\"},\"datePublished\":\"2020-06-03T17:58:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.allendowney.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Think DSP v1.1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/#website\",\"url\":\"https:\/\/www.allendowney.com\/blog\/\",\"name\":\"Probably Overthinking It\",\"description\":\"Data science, Bayesian Statistics, and other ideas\",\"publisher\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.allendowney.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/#organization\",\"name\":\"Probably Overthinking It\",\"url\":\"https:\/\/www.allendowney.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/03\/probably_logo.png\",\"contentUrl\":\"https:\/\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/03\/probably_logo.png\",\"width\":714,\"height\":784,\"caption\":\"Probably Overthinking It\"},\"image\":{\"@id\":\"https:\/\/www.allendowney.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/AllenDowney\",\"https:\/\/www.linkedin.com\/in\/allendowney\/\",\"https:\/\/bsky.app\/profile\/allendowney.bsky.social\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/#\/schema\/person\/4e5bfb2e9af6c3446cb0031a7bf83207\",\"name\":\"AllenDowney\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.allendowney.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fb01b3a7f7190bea1bbf7f0852e686c2f8c03b099222df2ce4bc7926f15bcb43?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fb01b3a7f7190bea1bbf7f0852e686c2f8c03b099222df2ce4bc7926f15bcb43?s=96&d=mm&r=g\",\"caption\":\"AllenDowney\"},\"url\":\"https:\/\/www.allendowney.com\/blog\/author\/allendowney_6dbrc4\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Think DSP v1.1 - Probably Overthinking It","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":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/","og_locale":"en_US","og_type":"article","og_title":"Think DSP v1.1 - Probably Overthinking It","og_description":"For the last week or so I have been working on an update to Think DSP. The latest version is available now from Green Tea Press. Here are some of the changes I made: Running on Colab All notebooks now run on Colab. Judging by my inbox, many readers find it challenging to download and run the code. Running on Colab is a lot easier. If you want to try an example, here&#8217;s a preview of Chapter 1. And if... Read More Read More","og_url":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/","og_site_name":"Probably Overthinking It","article_published_time":"2020-06-03T17:58:37+00:00","author":"AllenDowney","twitter_card":"summary_large_image","twitter_creator":"@AllenDowney","twitter_site":"@AllenDowney","twitter_misc":{"Written by":"AllenDowney","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/#article","isPartOf":{"@id":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/"},"author":{"name":"AllenDowney","@id":"https:\/\/www.allendowney.com\/blog\/#\/schema\/person\/4e5bfb2e9af6c3446cb0031a7bf83207"},"headline":"Think DSP v1.1","datePublished":"2020-06-03T17:58:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/"},"wordCount":620,"publisher":{"@id":"https:\/\/www.allendowney.com\/blog\/#organization"},"keywords":["digital signal processing","DSP","python","Think DSP"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/","url":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/","name":"Think DSP v1.1 - Probably Overthinking It","isPartOf":{"@id":"https:\/\/www.allendowney.com\/blog\/#website"},"datePublished":"2020-06-03T17:58:37+00:00","breadcrumb":{"@id":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.allendowney.com\/blog\/2020\/06\/03\/think-dsp-v1-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.allendowney.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Think DSP v1.1"}]},{"@type":"WebSite","@id":"https:\/\/www.allendowney.com\/blog\/#website","url":"https:\/\/www.allendowney.com\/blog\/","name":"Probably Overthinking It","description":"Data science, Bayesian Statistics, and other ideas","publisher":{"@id":"https:\/\/www.allendowney.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.allendowney.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.allendowney.com\/blog\/#organization","name":"Probably Overthinking It","url":"https:\/\/www.allendowney.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.allendowney.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/03\/probably_logo.png","contentUrl":"https:\/\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/03\/probably_logo.png","width":714,"height":784,"caption":"Probably Overthinking It"},"image":{"@id":"https:\/\/www.allendowney.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/AllenDowney","https:\/\/www.linkedin.com\/in\/allendowney\/","https:\/\/bsky.app\/profile\/allendowney.bsky.social"]},{"@type":"Person","@id":"https:\/\/www.allendowney.com\/blog\/#\/schema\/person\/4e5bfb2e9af6c3446cb0031a7bf83207","name":"AllenDowney","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.allendowney.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fb01b3a7f7190bea1bbf7f0852e686c2f8c03b099222df2ce4bc7926f15bcb43?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fb01b3a7f7190bea1bbf7f0852e686c2f8c03b099222df2ce4bc7926f15bcb43?s=96&d=mm&r=g","caption":"AllenDowney"},"url":"https:\/\/www.allendowney.com\/blog\/author\/allendowney_6dbrc4\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1655,"url":"https:\/\/www.allendowney.com\/blog\/2025\/11\/04\/think-dsp-second-edition\/","url_meta":{"origin":451,"position":0},"title":"Think DSP second edition","author":"AllenDowney","date":"November 4, 2025","format":false,"excerpt":"I have started work on a second edition of Think DSP! You can see the current draft here. I started this project in part because of this announcement: Once in a while, a few of the Scicloj friends will meet to learn about signal processing, following the Think DSP book\u2026","rel":"","context":"In \"DSP\"","block_context":{"text":"DSP","link":"https:\/\/www.allendowney.com\/blog\/tag\/dsp\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1357,"url":"https:\/\/www.allendowney.com\/blog\/2024\/08\/23\/probably-the-book\/","url_meta":{"origin":451,"position":1},"title":"Probably the Book","author":"AllenDowney","date":"August 23, 2024","format":false,"excerpt":"Last week I had the pleasure of presenting a keynote at posit::conf(2024). When the video is available, I will post it here [UPDATE here it is]. https:\/\/www.youtube.com\/watch?v=YKMZIzYBgTk In the meantime, you can read the slides, if you don't mind spoilers. For people at the conference who don't know me, this\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2024\/08\/are_you_normal_windshield_wiper.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2024\/08\/are_you_normal_windshield_wiper.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2024\/08\/are_you_normal_windshield_wiper.gif?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2024\/08\/are_you_normal_windshield_wiper.gif?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1704,"url":"https:\/\/www.allendowney.com\/blog\/2026\/01\/09\/bayesian-decision-analysis\/","url_meta":{"origin":451,"position":2},"title":"Bayesian Decision Analysis","author":"AllenDowney","date":"January 9, 2026","format":false,"excerpt":"At PyData Global 2025 I presented a workshop on Bayesian Decision Analysis with PyMC. The video is available now. This workshop is based on the first session of the Applied Bayesian Modeling Workshop I teach along with my colleagues at PyMC Labs. If you would like to learn more, it\u2026","rel":"","context":"In \"bayesian statistics\"","block_context":{"text":"bayesian statistics","link":"https:\/\/www.allendowney.com\/blog\/tag\/bayesian-statistics\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/PLGVZCDnMOq0qmerwB1eITnr5AfYRGm0DF\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":586,"url":"https:\/\/www.allendowney.com\/blog\/2021\/04\/30\/whats-new-in-think-bayes-2\/","url_meta":{"origin":451,"position":3},"title":"What&#8217;s new in Think Bayes 2?","author":"AllenDowney","date":"April 30, 2021","format":false,"excerpt":"I'm happy to report that the second edition of Think Bayes is available for preorder now. What's new in the second edition? I wrote a new Chapter 1 that introduces conditional probability using the Linda the Banker problem and data from the General Social Survey.I added new chapters on survival\u2026","rel":"","context":"In \"bayesian statistics\"","block_context":{"text":"bayesian statistics","link":"https:\/\/www.allendowney.com\/blog\/tag\/bayesian-statistics\/"},"img":{"alt_text":"Cover of Think Bayes second edition","src":"https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2021\/04\/think_bayes_2e_cover.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1255,"url":"https:\/\/www.allendowney.com\/blog\/2024\/03\/08\/think-python-goes-to-production\/","url_meta":{"origin":451,"position":4},"title":"Think Python Goes to Production","author":"AllenDowney","date":"March 8, 2024","format":false,"excerpt":"Think Python has moved into production, on schedule for the official publication date in July -- but maybe earlier if things go well. To celebrate, I have posted the next batch of chapters on the new site, up through Chapter 12, which is about Markov text analysis and generation, one\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2024\/03\/Think_Python_3e_cover.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1541,"url":"https:\/\/www.allendowney.com\/blog\/2025\/04\/06\/announcing-think-stats-3e\/","url_meta":{"origin":451,"position":5},"title":"Announcing Think Stats 3e","author":"AllenDowney","date":"April 6, 2025","format":false,"excerpt":"The third edition of Think Stats is on its way to the printer! You can preorder now from Bookshop.org and Amazon (those are affiliate links), or if you can't wait to get a paper copy, you can read the free, online version here. Here's the new cover, still featuring a\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/04\/image-2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/04\/image-2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/04\/image-2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.allendowney.com\/blog\/wp-content\/uploads\/2025\/04\/image-2.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/posts\/451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/comments?post=451"}],"version-history":[{"count":3,"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/posts\/451\/revisions"}],"predecessor-version":[{"id":457,"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/posts\/451\/revisions\/457"}],"wp:attachment":[{"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/media?parent=451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/categories?post=451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.allendowney.com\/blog\/wp-json\/wp\/v2\/tags?post=451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}