{"id":12276,"date":"2016-05-06T12:11:15","date_gmt":"2016-05-06T09:11:15","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=12276"},"modified":"2016-05-04T13:42:44","modified_gmt":"2016-05-04T10:42:44","slug":"yin-yang-python","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/","title":{"rendered":"The Yin and Yang of Python"},"content":{"rendered":"<p>It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been doing the same with Kotlin, but this is about Python.<\/p>\n<p>Now, this doesn\u2019t mean I\u2019m going to be changing my tune from here on out; after this, I\u2019m not really going to bringing up the weak points of Python. I\u2019m just going to continue talking about strong principles, practices, features, and tips and tricks. But this article was just inspired by a small revelation, and I decided to just roll with it.<\/p>\n<p>That inspiration was due to the revelation that the official Python logo looks vaguely like a yin yang symbol (apparently, it\u2019s called the Taijitu). To prove it, I made an alteration to the symbol, changing just the colors.<\/p>\n<p>So, let\u2019s look at the pros and cons of Python.<\/p>\n<h2>Dynamic Typing<\/h2>\n<p>Dynamic and duck typing is awesome. It can give you <i>so<\/i> much more freedom than a statically typed system. But it\u2019s not perfect. Like a lot of features that place limitations on what you can write, giving freedom goes hand in hand with allowing dangerous mistakes. For example, using a garbage collection system instead of manually creating and deleting objects restricts you from being able to manipulate pointers in other ways (which can actually lead to worse problems that forgetting to clean up your objects).<\/p>\n<p>In this case, by <i>not<\/i> restricting what types can go where, it becomes easier to pass in\/out an unexpected type that causes the system to fail. Because of this, it\u2019s often recommended to do more extensive of testing to be certain that usage of the code is correct and the code itself does what it should.<\/p>\n<p>I myself have had to deal with issues of dynamic typing <i>in<\/i> testing because I like to work top-down, and changes to lower types can cause tests to fail almost inexplicably. If there was compile-time type checking, it\u2019d be easier to know that these tests don\u2019t work anymore and why.<\/p>\n<p>To its credit though, Python has added type annotations, which allow for static analysers to at least give warnings, and <a href=\"http:\/\/mypy-lang.org\/\">mypy<\/a> is being created to add optional static type checking to python where it\u2019s wanted.<\/p>\n<h2>Everything is \u201cPublic\u201d<\/h2>\n<p>This is a lot like dynamic typing. In a lot of cases, it just makes things easier to do, and that definitely applies to keeping the code cleaner (no need for visibility modifier keywords), but it also makes it easier for problems to crop up. My biggest reason for liking this is simply the lack of needing to think about what it should be. Sometimes, though, I prefer to keep my details more hidden.<\/p>\n<h2>Oh So Simple<\/h2>\n<p>Easily my favorite thing about Python is that lack of syntactic overload. There are very few keywords that get in the way, and most special characters are only used in small situations, leaving the code filled mostly with <i>English<\/i> (assuming you name your variables well) and Math, which are very familiar to us. Forcing \u201ctab\u201d delineation makes it so that you don\u2019t have lines wasted on opening and closing braces (or similar) or keywords. The use of short-word keywords as operators instead of using full method-call syntax (I\u2019m look at you, \u201cin\u201d, which is also used well in for loops and comprehensions) makes some things just so much easier to read.<\/p>\n<p>What\u2019s crazy about the simplicity is the amount of power that is still available because or despite it.<\/p>\n<p>The only problem with such a simple syntax is that it has <i>forced<\/i> lambdas to be single-line expressions, unless Python decides to use a syntax that simply isn\u2019t Pythonic.<\/p>\n<h2>Explicit <code>self<\/code><\/h2>\n<p>I\u2019ve <a href=\"https:\/\/programmingideaswithjake.wordpress.com\/2014\/12\/20\/the-genius-of-pythons-self\/\">talked about this before<\/a>, the geniusness of having <code>self<\/code> be explicitly in the parameter list, but it clearly comes with a downside. I say \u201cclearly\u201d because I\u2019m pretty sure there are people out there complaining quite loudly about it. Having <code>this<\/code> be implicit is generally preferred, allowing you to 1) not need to use <code>this<\/code> in a reference when it\u2019s obvious, and 2) not need it cluttering up the parameter list.<\/p>\n<p>Mostly, when it comes to a language that allows you to just absently assign normal functions as methods on a class and vice versa, it\u2019s good to know where <code>this<\/code> or <code>self<\/code> comes from\/goes to. Kotlin has to have some interesting workarounds with their reflection classes in order to deal with this.<\/p>\n<p>Nonetheless, it can be kind of annoying to forget to reference a field with a <code>self.<\/code> before its name. It happens a lot, and it\u2019s annoying, frankly.<\/p>\n<h2>Truthiness and Operator Overloading<\/h2>\n<p>It\u2019s actually quite handy and surprisingly readable that you can check for an object\u2019s general \u201cemptiness\u201d just by checking its \u201ctruthiness\u201d. But, as an overloadable operator, there are almost never any times to bother implementing <code>__bool__()<\/code> on a custom type. Doing so for anything other to signify emptiness for a some sort of collection is likely to just be confusing for the next person to use it.<\/p>\n<p>The same can be said about all operator overloading; what it does may not be completely obvious. People abusing operator overloading in C++ is what made Java decide to not include it. But it can be <i>so<\/i> nice to use operators instead of method calls. Just in case, though, you should almost always provide a well-named method that does the same thing as the operator.<\/p>\n<h2>Descriptors<\/h2>\n<p>I literally wrote what I\u2019m hoping is <a href=\"https:\/\/programmingideaswithjake.wordpress.com\/python-descriptors-book\/\"><i>the<\/i> book on descriptors<\/a>, so I have a strong opinion about them. In a very loose sense, they\u2019re a form of operator overloading, so the same arguments about operator overloading apply here. But there\u2019s also the fact that descriptors (usually) work differently from class and instance level, as well as the difficulties of creating a well-designed descriptor storage system. Those make it a lot harder to justify their existence. But then you realize what has and can be done with them, and you realize that it\u2019d be difficult to live <i>without<\/i> them (especially since they\u2019re what make methods and properties work).<\/p>\n<p>I prefer the way that Kotlin did delegated properties, but the way Python\u2019s work is pretty cool, too.<\/p>\n<h2>Functional Programming-Friendly<\/h2>\n<p>Python has first-class functions (really easy to access ones at that; you don\u2019t need a <code>::<\/code> operator) and lambdas, which are the first steps toward making a language great for functional programming. Next, they have top-level functions (they don\u2019t need to be part of a class), which helps even more. But their lambdas are limited to a single expression, which is sometimes a heavy limitation, and immutability is nearly impossible in Python.<\/p>\n<h2>Outro<\/h2>\n<p>So, as you can see, there\u2019s good and bad to Python, as is the case for all languages. Unless a language can transcend the static vs dynamic debate, the OO vs FP debate, compiled vs interpreted debate, etc, every language will have pros and cons.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/programmingideaswithjake.wordpress.com\/2016\/04\/30\/yin-yang-of-python\/\">The Yin and Yang of Python<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\">WCG partner<\/a> Jacob Zimmerman at the <a href=\"http:\/\/programmingideaswithjake.wordpress.com\/\">Programming Ideas With Jake<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been doing the same with Kotlin, but this is about Python. Now, this doesn\u2019t mean I\u2019m going to be changing my tune from here on out; &hellip;<\/p>\n","protected":false},"author":51,"featured_media":1651,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[],"class_list":["post-12276","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The Yin and Yang of Python - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been\" \/>\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.webcodegeeks.com\/python\/yin-yang-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Yin and Yang of Python - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-06T09:11:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jacob Zimmerman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/jacobz_20\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jacob Zimmerman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/\"},\"author\":{\"name\":\"Jacob Zimmerman\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f54a53cfb8523f4ef6012aa63f075c39\"},\"headline\":\"The Yin and Yang of Python\",\"datePublished\":\"2016-05-06T09:11:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/\"},\"wordCount\":1203,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"articleSection\":[\"Python\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/\",\"name\":\"The Yin and Yang of Python - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"datePublished\":\"2016-05-06T09:11:15+00:00\",\"description\":\"It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The Yin and Yang of Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f54a53cfb8523f4ef6012aa63f075c39\",\"name\":\"Jacob Zimmerman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2dfdd9e2d35ed2224faf73968f8c597b5489fc345287e06e2571d3935a6bcc86?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2dfdd9e2d35ed2224faf73968f8c597b5489fc345287e06e2571d3935a6bcc86?s=96&d=mm&r=g\",\"caption\":\"Jacob Zimmerman\"},\"description\":\"Jacob is a certified Java programmer (level 1) and Python enthusiast. He loves to solve large problems with programming and considers himself pretty good at design.\",\"sameAs\":[\"https:\/\/programmingideaswithjake.wordpress.com\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/jacobz_20\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/jacob-zimmerman\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Yin and Yang of Python - Web Code Geeks - 2026","description":"It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been","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.webcodegeeks.com\/python\/yin-yang-python\/","og_locale":"en_US","og_type":"article","og_title":"The Yin and Yang of Python - Web Code Geeks - 2026","og_description":"It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been","og_url":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2016-05-06T09:11:15+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","type":"image\/jpeg"}],"author":"Jacob Zimmerman","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/jacobz_20","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Jacob Zimmerman","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/"},"author":{"name":"Jacob Zimmerman","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f54a53cfb8523f4ef6012aa63f075c39"},"headline":"The Yin and Yang of Python","datePublished":"2016-05-06T09:11:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/"},"wordCount":1203,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","articleSection":["Python"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/","url":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/","name":"The Yin and Yang of Python - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","datePublished":"2016-05-06T09:11:15+00:00","description":"It\u2019s time that I got a bit more real with you guys. Pretty much ever since I learned Python, I\u2019ve been touting it as a super amazing language. I\u2019ve been","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/11\/python-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/python\/yin-yang-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/www.webcodegeeks.com\/category\/python\/"},{"@type":"ListItem","position":3,"name":"The Yin and Yang of Python"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f54a53cfb8523f4ef6012aa63f075c39","name":"Jacob Zimmerman","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2dfdd9e2d35ed2224faf73968f8c597b5489fc345287e06e2571d3935a6bcc86?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2dfdd9e2d35ed2224faf73968f8c597b5489fc345287e06e2571d3935a6bcc86?s=96&d=mm&r=g","caption":"Jacob Zimmerman"},"description":"Jacob is a certified Java programmer (level 1) and Python enthusiast. He loves to solve large problems with programming and considers himself pretty good at design.","sameAs":["https:\/\/programmingideaswithjake.wordpress.com\/","https:\/\/x.com\/https:\/\/twitter.com\/jacobz_20"],"url":"https:\/\/www.webcodegeeks.com\/author\/jacob-zimmerman\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/12276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/51"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=12276"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/12276\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/1651"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=12276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=12276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=12276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}