{"id":248,"date":"2009-07-26T14:00:05","date_gmt":"2009-07-26T13:00:05","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=248"},"modified":"2009-07-26T14:00:05","modified_gmt":"2009-07-26T13:00:05","slug":"on-to-0-2-refactoring-fun","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/","title":{"rendered":"On to 0.2 &#8211; Refactoring fun"},"content":{"rendered":"<p>Since the 0.1 release of <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Maps\" target=\"_blank\">Maps<\/a> and <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Semantic_Maps\" target=\"_blank\">Semantic Maps<\/a>, I&#8217;ve gotten quite some feedback on what features are in demand and what could be improved. Although I&#8217;ve not gotten any specific feedback on the extensions source code itself, I decided that refactoring it to get it as high quality as possible was probably the most important thing in the 0.2 release, since this would facilitate adding functionality and making changes to the existing features. The last few days I had some great fun with the refactoring.<\/p>\n<p>I started off with the <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Semantic_Maps#Form_Inputs\" target=\"_blank\">form inputs in Semantic Maps<\/a>. I changed the SMFormInput class, which gets inherited by the mapping service specific classes, by refactoring a whole bunch of common code up from the specific classes. I also went for a more OOP approach, and at some point got stuck cause I could not make static (shared) methods abstract (virtual\/must-inherit). After debating this problem with Yaron, and a bunch of people on multiple programming forums, I decided to use the <a href=\"http:\/\/nl2.php.net\/manual\/en\/language.oop5.patterns.php\" target=\"_blank\">factory model<\/a> and create instances of the classes instead of just calling static methods. After removing all static stuff from the classes, I added some abstract methods, that get called by formInputHTML(), which is now in the base class, and cannot be changed in the child&#8217;s, since it&#8217;s final. These abstract functions then get &#8216;filled up&#8217; in the child classes and contain the service specific code.<\/p>\n<p>I finished doing this yesterday, and am doing a very similar thing with the map classes in Maps now. The approach is basically identical, except for a change I made in how the map properties are handled (weakly typed instead of specificity defined class fields). This work is going hand in hand with another rafactoring to-do, which is the cleaning up of the <a href=\"http:\/\/developer.yahoo.com\/maps\/\" target=\"_blank\">Yahoo! Maps<\/a> and <a href=\"http:\/\/code.google.com\/apis\/maps\/\" target=\"_blank\">Google Maps<\/a> code in maps. In 0.1 a bunch of JS gets echo&#8217;d, and all the logic is done in PHP, which is a bad approach IMHO. I&#8217;m changing this to having one JS function to create a map, and just echo&#8217;ing the call to it with the correct parameters, and let the function do all the logic.<\/p>\n<p>I expect the later do be done today, and when it is I&#8217;m going to add the <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Semantic_Maps#Map_properties\" target=\"_blank\">centre parameter<\/a>, which has been missing so far in Maps.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since the 0.1 release of Maps and Semantic Maps, I&#8217;ve gotten quite some feedback on what features are in demand&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":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":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[112,115,136,154,156,180,181,195,227,231,285,300],"class_list":["post-248","post","type-post","status-publish","format-standard","hentry","category-programming","tag-google-maps","tag-gsoc","tag-javascript","tag-mapping","tag-mediawiki","tag-open-layers","tag-open-source","tag-php","tag-semantic-maps","tag-semantics","tag-wikimedia","tag-yahoo-maps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>On to 0.2 - Refactoring fun - 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\/2009\/07\/26\/on-to-0-2-refactoring-fun\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"On to 0.2 - Refactoring fun - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"Since the 0.1 release of Maps and Semantic Maps, I&#8217;ve gotten quite some feedback on what features are in demand&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2009-07-26T13:00:05+00:00\" \/>\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\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"On to 0.2 &#8211; Refactoring fun\",\"datePublished\":\"2009-07-26T13:00:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/\"},\"wordCount\":395,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"keywords\":[\"Google Maps\",\"GSoC\",\"JavaScript\",\"Mapping\",\"MediaWiki\",\"Open Layers\",\"Open Source\",\"PHP\",\"Semantic Maps\",\"Semantics\",\"Wikimedia\",\"Yahoo! Maps\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/\",\"name\":\"On to 0.2 - Refactoring fun - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"datePublished\":\"2009-07-26T13:00:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2009\\\/07\\\/26\\\/on-to-0-2-refactoring-fun\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"On to 0.2 &#8211; Refactoring fun\"}]},{\"@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":"On to 0.2 - Refactoring fun - 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\/2009\/07\/26\/on-to-0-2-refactoring-fun\/","og_locale":"en_US","og_type":"article","og_title":"On to 0.2 - Refactoring fun - Blog of Jeroen De Dauw","og_description":"Since the 0.1 release of Maps and Semantic Maps, I&#8217;ve gotten quite some feedback on what features are in demand&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2009-07-26T13:00:05+00:00","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\/2009\/07\/26\/on-to-0-2-refactoring-fun\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"On to 0.2 &#8211; Refactoring fun","datePublished":"2009-07-26T13:00:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/"},"wordCount":395,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"keywords":["Google Maps","GSoC","JavaScript","Mapping","MediaWiki","Open Layers","Open Source","PHP","Semantic Maps","Semantics","Wikimedia","Yahoo! Maps"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/","url":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/","name":"On to 0.2 - Refactoring fun - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"datePublished":"2009-07-26T13:00:05+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2009\/07\/26\/on-to-0-2-refactoring-fun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"On to 0.2 &#8211; Refactoring fun"}]},{"@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-40","jetpack-related-posts":[{"id":416,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/09\/12\/maps-and-semantic-maps-0-3-4-released\/","url_meta":{"origin":248,"position":0},"title":"Maps and Semantic Maps 0.3.4 released","author":"Jeroen","date":"2009-09-12","format":false,"excerpt":"Today a new version of Maps and Semantic Maps where released. This version, 0.3.4, mainly focused on the internal structure of the extensions, performance issues and bug fixes. Some small new features have been added though. Bug fixes Fixed some issues with invalid parameter handling. This comes down to 2\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":936,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/28\/maps-and-semantic-maps-0-6-5-released\/","url_meta":{"origin":248,"position":1},"title":"Maps and Semantic Maps 0.6.5 released","author":"Jeroen","date":"2010-07-28","format":false,"excerpt":"Maps and Semantic Maps 0.6.5 are now available for download. This release contains mainly internal changes to improve code modularity and fix some security concerns. Several bugs have been fixed as well, and a new hook has been added to Semantic Maps. This hook will get you the map format\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":846,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/06\/04\/maps-and-semantic-maps-0-6-1-released\/","url_meta":{"origin":248,"position":2},"title":"Maps and Semantic Maps 0.6.1 released","author":"Jeroen","date":"2010-06-04","format":false,"excerpt":"Maps and Semantic Maps 0.6.1 are now available for download. This release does not add any new features to 0.6, but contains multiple important bugfixes (Maps, SM). People running 0.6 are advised to upgrade. Especially people using Semantic Maps 0.6 in conjunction with Semantic Forms, as the mapping form inputs\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":479,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/10\/14\/working-on-maps-and-semantic-maps-0-4\/","url_meta":{"origin":248,"position":3},"title":"Working on Maps and Semantic Maps 0.4","author":"Jeroen","date":"2009-10-14","format":false,"excerpt":"Since the 0.3.4 release of both Maps and Semantic Maps, I've been putting the little free time I have to use by working on the to-do's for the next release. Originally this would have been 0.3.5, but I've added several things to it, that made me decide to make it\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":294,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/08\/05\/structural-changes-for-maps-and-sm-0-3\/","url_meta":{"origin":248,"position":4},"title":"Structural changes for Maps and SM 0.3","author":"Jeroen","date":"2009-08-05","format":false,"excerpt":"Just like version 0.2 of both Maps and Semantic Maps, version 0.3 will feature a variety of large structural changes, aimed at increasing the performance of the extensions, making it possible to add new features, but most of all, make it more modular, to allow people to easily extend them.\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":517,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/11\/03\/finally-maps-and-semantic-maps-0-4\/","url_meta":{"origin":248,"position":5},"title":"Finally! Maps and Semantic Maps 0.4!","author":"Jeroen","date":"2009-11-03","format":false,"excerpt":"It's been almost 2 months since Maps version 0.3.4 was released. Although I did waste a lot of my time at school, I managed to get quite some important work done in that period. Version 0.4 mainly addressed new functionality, and some thorough refactoring for Maps, and only introduced 2\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/248","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=248"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/248\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}