{"id":1553,"date":"2016-01-24T00:33:19","date_gmt":"2016-01-23T23:33:19","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=1553"},"modified":"2017-02-17T13:36:52","modified_gmt":"2017-02-17T12:36:52","slug":"the-liskov-substitution-principle","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/","title":{"rendered":"The Liskov Substitution Principle"},"content":{"rendered":"<p>I have a number of web-based presentations online on the software craftsmanship topic. You can find these on the <a href=\"https:\/\/entropywins.wtf\/craftsmanship\">software craftsmanship page<\/a> of my website.<\/p>\n<p>I&#8217;ve just written an abstract for a presentation on the so-called Liskov Substitution Principle. This is a presentation I&#8217;ve done a number of times and have refined over time. You can <a href=\"https:\/\/github.com\/JeroenDeDauw\/slides\/blob\/master\/craftmanship\/LSP\/README.md\">read the abstract<\/a> and <a href=\"http:\/\/bit.ly\/solid-lsp\">view the slides<\/a>, though the slides are not really made for usage outside of a presentation. Here is the abstract:<\/p>\n<h3>The Liskov Substitution Principle<\/h3>\n<p>Everyone knows how to do inheritance. You create an interface or a base class and implement it or derive from it. Done.<\/p>\n<p>Good software design is however not quite that easy. When using inheritance, a number of basic principles should be held into account. Favoring composition over inheritance, not using inheritance for code reuse and using narrow, well segregated, interfaces come to mind. Even though amongst this list of fundamentals and critical in nature, the Liskov Substitution Principle is not well-known by many developers.<\/p>\n<p>This presentation will introduce to said principle, and teach you how to both recognize violations and deal with the consequences. Examples of typical violations are provided, the undesired results are outlined and means to avoid these pitfalls are explained.<\/p>\n<h4>Audience<\/h4>\n<p>This presentation is aimed at developers. It is suitable both for people new to the field and those with many years of experience. Knowledge of inheritance is required.<\/p>\n<p>Examples are mainly in PHP and Java, though the presentation also applies to other OOP languages. All examples are trivial, so knowledge of these languages is not required, while of course a plus.<\/p>\n<h4>Topic list<\/h4>\n<p>The covered topics include:<\/p>\n<ul>\n<li>Definition of the LSP<\/li>\n<li>The classical Rectangle and Square example<\/li>\n<li>Shotgun surgery<\/li>\n<li>How to avoid being lynched by your fellow developers<\/li>\n<li>Representations<\/li>\n<li>Collections meet LSP<\/li>\n<\/ul>\n<h4>Slides<\/h4>\n<p>The presentation contains high quality slides with lots of long complicated sentences, citations and detailed proofs, to ensure sufficient seriousness.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1556\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/lsp0\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png\" data-orig-size=\"800,500\" data-comments-opened=\"1\" 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=\"The Liskov Substitution Principle\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png\" class=\"alignnone size-full wp-image-1556\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png\" alt=\"The Liskov Substitution Principle\" width=\"800\" height=\"500\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1555\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/lsp1\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp1.png\" data-orig-size=\"800,500\" data-comments-opened=\"1\" 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=\"The Liskov Substitution Principle\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp1.png\" class=\"alignnone size-full wp-image-1555\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp1.png\" alt=\"The Liskov Substitution Principle\" width=\"800\" height=\"500\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1554\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/lsp2\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp2.png\" data-orig-size=\"800,500\" data-comments-opened=\"1\" 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=\"The Liskov Substitution Principle\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp2.png\" class=\"alignnone size-full wp-image-1554\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp2.png\" alt=\"The Liskov Substitution Principle\" width=\"800\" height=\"500\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have a number of web-based presentations online on the software craftsmanship topic. You can find these on the software&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_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":[7],"tags":[328,395,446,176,179,316,396],"class_list":["post-1553","post","type-post","status-publish","format-standard","hentry","category-programming","tag-clean-code","tag-inheritance","tag-liskov-substitution-principle","tag-object-orientated","tag-oop","tag-software-design","tag-solid"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Liskov Substitution Principle - Blog of Jeroen De Dauw<\/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.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Liskov Substitution Principle - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"I have a number of web-based presentations online on the software craftsmanship topic. You can find these on the software&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-23T23:33:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-02-17T12:36:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\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\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"The Liskov Substitution Principle\",\"datePublished\":\"2016-01-23T23:33:19+00:00\",\"dateModified\":\"2017-02-17T12:36:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/\"},\"wordCount\":328,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/lsp0.png\",\"keywords\":[\"Clean Code\",\"Inheritance\",\"Liskov Substitution Principle\",\"Object Orientated\",\"OOP\",\"Software design\",\"SOLID\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/\",\"name\":\"The Liskov Substitution Principle - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/lsp0.png\",\"datePublished\":\"2016-01-23T23:33:19+00:00\",\"dateModified\":\"2017-02-17T12:36:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/lsp0.png\",\"contentUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/lsp0.png\",\"width\":800,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/01\\\/24\\\/the-liskov-substitution-principle\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Liskov Substitution Principle\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeroendedauw\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Liskov Substitution Principle - Blog of Jeroen De Dauw","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.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/","og_locale":"en_US","og_type":"article","og_title":"The Liskov Substitution Principle - Blog of Jeroen De Dauw","og_description":"I have a number of web-based presentations online on the software craftsmanship topic. You can find these on the software&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2016-01-23T23:33:19+00:00","article_modified_time":"2017-02-17T12:36:52+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"The Liskov Substitution Principle","datePublished":"2016-01-23T23:33:19+00:00","dateModified":"2017-02-17T12:36:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/"},"wordCount":328,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png","keywords":["Clean Code","Inheritance","Liskov Substitution Principle","Object Orientated","OOP","Software design","SOLID"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/","url":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/","name":"The Liskov Substitution Principle - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png","datePublished":"2016-01-23T23:33:19+00:00","dateModified":"2017-02-17T12:36:52+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png","width":800,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"The Liskov Substitution Principle"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-p3","jetpack-related-posts":[{"id":1966,"url":"https:\/\/www.entropywins.wtf\/blog\/2017\/02\/17\/why-every-single-argument-of-dan-north-is-wrong\/","url_meta":{"origin":1553,"position":0},"title":"Why Every Single Argument of Dan North is Wrong","author":"Jeroen","date":"2017-02-17","format":false,"excerpt":"This blog post is a reply to Dan's presentation Why Every Element of SOLID is Wrong. Dan's presentation is crammed full with straw man argumentation in which he misinterprets what the SOLID principles are about. After refuting each principle he proposes an alternative, typically a well-accepted non-SOLID principle that does\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2017\/02\/slide_19.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2017\/02\/slide_19.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2017\/02\/slide_19.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2017\/02\/slide_19.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1145,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/15\/presentation-the-s-in-stupid\/","url_meta":{"origin":1553,"position":1},"title":"Presentation: The S in STUPID","author":"Jeroen","date":"2013-11-15","format":false,"excerpt":"In about two weeks, I will be giving a presentation about static code at 0\u00d720, the Gent hackerspace. This is a follow up on the Clean Functions presentation I gave there about\u00a0 a month ago. Like that one, \u201cThe S in STUPID\u201d is all about how to write clean code\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1131,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/09\/08\/clean-functions\/","url_meta":{"origin":1553,"position":2},"title":"Clean functions","author":"Jeroen","date":"2013-09-08","format":false,"excerpt":"Last week I gave a presentation titled \u201cClean functions\u201d to my Wikidata colleagues. As the title suggests, this presentation is all about how to create clean functions that are easy to understand and modify. Why did I go with this particular design topic rather then one of the dozens of\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2495,"url":"https:\/\/www.entropywins.wtf\/blog\/2019\/02\/28\/applications-as-frameworks\/","url_meta":{"origin":1553,"position":3},"title":"Applications as Frameworks","author":"Jeroen","date":"2019-02-28","format":false,"excerpt":"What are the differences between building on top of a framework and building on top of an application? How does using an application as a framework cause problems, and how can these problems be avoided? That is what this post is all about. Decoupled web application In your typical web\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2019\/02\/grumpy-cat-no.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2019\/02\/grumpy-cat-no.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2019\/02\/grumpy-cat-no.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1363,"url":"https:\/\/www.entropywins.wtf\/blog\/2014\/07\/12\/component-design\/","url_meta":{"origin":1553,"position":4},"title":"Component design","author":"Jeroen","date":"2014-07-12","format":false,"excerpt":"This week I gave a presentation titled \"Component design: Getting cohesion and coupling right\" at Wikimedia Deutschland. Components are a level of organization, in between classes and layers. They are an important mechanism in avoiding monolithic designs and big balls of mud. While everyone can recognize a component when they\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"slides-0-first","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2014\/07\/slides-0-first-1024x547.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2014\/07\/slides-0-first-1024x547.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2014\/07\/slides-0-first-1024x547.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2877,"url":"https:\/\/www.entropywins.wtf\/blog\/2022\/09\/21\/advice-for-junior-developers\/","url_meta":{"origin":1553,"position":5},"title":"Advice for junior developers","author":"Jeroen","date":"2022-09-21","format":false,"excerpt":"Over the 15+ years of my development career, I have learned several things that significantly increase my effectiveness. In this post, I share those learnings with you. Structure: Generic Advice -- Important context and motivation for the technical advice Technical Advice -- The main course Recommended Reading -- Links to\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=1553"}],"version-history":[{"count":3,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1553\/revisions"}],"predecessor-version":[{"id":1999,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1553\/revisions\/1999"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=1553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=1553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=1553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}