{"id":1073,"date":"2011-12-17T15:30:00","date_gmt":"2011-12-17T20:30:00","guid":{"rendered":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript"},"modified":"2019-11-14T08:56:32","modified_gmt":"2019-11-14T13:56:32","slug":"a-case-for-using-coffeescript","status":"publish","type":"post","link":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/","title":{"rendered":"A Case For Using CoffeeScript"},"content":{"rendered":"<p>If you\u2019re interested in CoffeeScript, then I\u2019m sure by now you have read Ryan Florence\u2019s blog post titled <a href=\"http:\/\/ryanflorence.com\/2011\/2012\/case-against-coffeescript\/\">\u201cA Case Against Using CoffeeScript\u201d<\/a>. In this post, Ryan explains that he uses CoffeeScript at work, and he likes the language, but in his opinion it is too difficult to comprehend and too difficult to debug. My response to this, in the immortal words of Dwight Schrute, \u201cfalse!\u201d<\/p>\n<p>Before we get started, let me just say that this article is more about disagreeing with some of the statements made in Ryan\u2019s post, its purpose is not to \u201csell\u201d you on CoffeeScript, but merely point out that CoffeeScript is not something to be scared of. If you want somewhere to show you how awesome CoffeeScript is, I would recommend checking out the <a href=\"http:\/\/jashkenas.github.com\/coffee-script\">official CoffeeScript site<\/a> and <a href=\"http:\/\/userinexperience.com\/?p=732\">CoffeeScript is for Closers<\/a> by Brandon Satrom.<\/p>\n<p><!--more--><\/p>\n<p>Let me start out by saying that I think Ryan is making two completely unrelated assertions in his post:<\/p>\n<ol>\n<li>CoffeeScript is too difficult to debug.<\/li>\n<li>CoffeeScript is too difficult to comprehend.<\/li>\n<\/ol>\n<p>I feel that the first issue definitely has some validity, but the second really holds no water for me at all.<\/p>\n<h2>Too Difficult To Comprehend?<\/h2>\n<p>To say that CoffeeScript is too difficult to comprehend seems silly to me. Every language has features in it that, when used poorly, can create horrible unreadable code. If\u00a0 a developer wants to leverage a language in a way that causes unreadable code, there isn\u2019t a language in existence that will stop them. Just saying that code is \u201cbad\u201d or \u201cunreadable\u201d should be a red flag in most language arguments, since these adjectives are usually a matter of personal preference, but too often delivered as fact.<\/p>\n<p>A big part of his argument revolves around \u201cone liners\u201d. As if CoffeeScript is a horrible language because it allows you to do a lot on one line. And by giving developers this ability (gasp!) they will write horrible code and make terrible choices! I hate to break it to you, many languages give you the ability to do a ton of work in a single unreadable line. Python? Check. Ruby? Double check. C#? With LINQ, absolutely! Java? Can you say \u201cfluent\u201d interfaces? Scala? Absolutely. And unfortunately, I can write some pretty horrible one-liners in JavaScript, especially with everyone\u2019s favorite library jQuery.<\/p>\n<p>Reasonable developers will write reasonable code. Bad developers will screw up any language. I guess CoffeeScript gives developers more chances to write crappy unreadable code than some languages, but I don\u2019t think that JavaScript is one of them.<\/p>\n<h2>CoffeeScript\u2019s \u201cBad\u201d Parts<\/h2>\n<p>Yes, CoffeeScript has a few warts. But is its ability to call methods without parentheses a \u201cbad\u201d part? I don\u2019t know, ask a Ruby developer then ask a Java fan (do those exist still? I kid. I kid.). I\u2019m sure you\u2019d get two different answers. Given the example that Ryan had:<\/p>\n<pre class=\"brush: js;\">dfd = $.ajax\r\n  url: url\r\n  format: 'json'\r\n  method: 'get'<\/pre>\n<p>I\u2019m sure that many developers would find that hard to read, while other developers might not be too offended by it. In this case though, CoffeeScript still allows you to put curly braces around the object literal or parentheses around the method call, but does encourage you to be terse. CoffeeScript isn\u2019t perfect, but the alternative is JavaScript, and so I think if we wanted to get into that war, I believe that CoffeeScript would come out on top.<\/p>\n<p>And don\u2019t take that as me saying JavaScript is bad, because it isn\u2019t, it is a great language. What I am saying is that if we want to start comparing which language has more peculiarities, I think that JavaScript would come out on top.<\/p>\n<h2>CoffeeScript Is Hard To Debug?<\/h2>\n<p>This second part of his argument is one that I think needs a bit more attention, but unfortunately it is the part that he touches on the least. I\u2019ll be completely upfront, I\u2019ve found that CoffeeScript can definitely be more difficult to debug than JavaScript in some cases.<\/p>\n<p>I have run into a few situations where I\u2019ve written a chunk of code in CoffeeScript and I\u2019ve received some very odd messages from the CoffeeScript compiler. This has actually been the biggest source of frustration writing CoffeeScript, is that there are places where ambiguities in the language can be accidentally introduced and you\u2019ll get an error saying something along the lines of \u201cunexpected statement start\u201d. Then you have to hunt down the cause of this error.<\/p>\n<p>As far as CoffeeScript being compiled to JavaScript causing problems with debugging, well, I haven\u2019t been overly encumbered by it. Sure, the more expressive statements in CoffeeScript can generate a fair chunk of JavaScript, but that is precisely the tradeoff for making CoffeeScript more expressive, it is hiding a lot of the work that it is doing behind the scenes. However most of the statements you write in everyday CoffeeScript, with the exception of a few curly braces and semi-colons,\u00a0 compile almost 1 to 1 with their JavaScript counterparts.<\/p>\n<p>But I think that it is the generated JavaScript that really scares people. They think of a ton of generated JavaScript and they cringe at having to debug it. But I think that it is rarely an issue, for a few different reasons:<\/p>\n<ol>\n<li>CoffeeScript doesn\u2019t rename variables \u2013 If I put a watch in my JavaScript debugging tool for a particular variable, then that variable will get inspected, just as if I was using it in JavaScript (because in the end I am!).<\/li>\n<li>CoffeeScript generates mostly readable JavaScript \u2013 Despite the big chunk of code that Ryan\u2019s comprehension example produced, I think it is still fairly readable. The example combined a comprehension, string interpolation, a boolean check, and assigned the results to an array. The resulting JavaScript is just a loop with an if statement.<\/li>\n<li>Console.log \u2013 I can use console.log in my CoffeeScript in the exact same way I use it in my JavaScript, and it works just fine.<\/li>\n<li>Debugger \u2013 I can still write \u201cdebugger\u201d into my source and force the browser to break on a line. No, I don\u2019t have to hunt and peck through JavaScript source to find where a line of CoffeeScript compiled to, this jumps me right to it. (If you have never written the \u201cdebugger;\u201d statement into your JavaScript, you should try it one day)<\/li>\n<\/ol>\n<p>What I think the problem really comes down to is tooling. If CoffeeScript was natively supported by the browser, you wouldn\u2019t be asking for tools to view the generated ASTs, you would want a debugger. The fact that I can\u2019t view CoffeeScript in the browser and set a breakpoint and debug at that level is annoying, but it isn\u2019t annoying enough that I want to give up the expressiveness that CoffeeScript provides me.<\/p>\n<h2>Why Would I Use It?<\/h2>\n<p>Now that I spent all this time telling you that it doesn\u2019t suck, I should probably tell you why you might actually want to use it! On a personal level I think that it has a cleaner syntax. I like its roots in Ruby and Python and reading CoffeeScript feels better to me. But I think the real power lies in its expressiveness.<\/p>\n<p>It gives me features like classes, string interpolation, comprehensions, an existential operator, reasonable \u201cfor\u201d loops, chained boolean expressions, everything is a value, predicative boolean expressions, etc\u2026 without taking away any of the flexibility and power that JavaScript gives me. For example, it has classes, but they are truly just syntactic sugar on top of JavaScripts prototypical inheritance mechanisms. I can even build up objects using prototypes in CoffeeScript just like I would do in JavaScript.<\/p>\n<p>The list goes on and on. I could write a whole blog post about it, but the <a href=\"http:\/\/jashkenas.github.com\/coffee-script\/\">CoffeeScript website<\/a> lays it out for you far better than I ever could.<\/p>\n<h2>If It Makes Your Life Better, Use It.<\/h2>\n<p>I know there are concerns about whether CoffeeScript will be around in 5 years. And honestly, I don\u2019t know the answer to that question, but its inclusion in Rails 3.1 by default can\u2019t hurt! I know that future versions of JavaScript will be better for CoffeeScript having existed. CoffeeScript is open source, and people today are writing a reasonable amount of code in it. I can\u2019t imagine that in the future the CoffeeScript compiler will just up and die, if anything it will leverage future constructs in JavaScript and you will start to see the languages converge more.<\/p>\n<p>When I want to use a tool, I always look at it and weigh the risks of using the tool versus the benefits. At the end of the day I think that the benefits that CoffeeScript gives me outweigh the risks, if you don\u2019t agree, then don\u2019t use it. But if it makes your life easier, and you\u2019re not risking the farm by using it, then by all means have at it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you\u2019re interested in CoffeeScript, then I\u2019m sure by now you have read Ryan Florence\u2019s blog post titled \u201cA Case Against Using CoffeeScript\u201d. In this post, Ryan explains that he uses CoffeeScript at work, and he likes the language, but in his opinion it is too difficult to comprehend and too difficult to debug. My [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":1130,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[4],"tags":[59],"class_list":["post-1073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-insights","tag-web-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.3.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>A Case For Using CoffeeScript - Simple Thread<\/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.simplethread.com\/a-case-for-using-coffeescript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Case For Using CoffeeScript\" \/>\n<meta property=\"og:description\" content=\"If you\u2019re interested in CoffeeScript, then I\u2019m sure by now you have read Ryan Florence\u2019s blog post titled \u201cA Case Against Using CoffeeScript\u201d. In this post, Ryan explains that he uses CoffeeScript at work, and he likes the language, but in his opinion it is too difficult to comprehend and too difficult to debug. My [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/\" \/>\n<meta property=\"og:site_name\" content=\"Simple Thread\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Simple-Thread-164373486939165\/\" \/>\n<meta property=\"article:published_time\" content=\"2011-12-17T20:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-14T13:56:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.simplethread.com\/wp-content\/uploads\/2011\/12\/coffee.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"1365\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Justin Etheredge\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JustinEtheredge\" \/>\n<meta name=\"twitter:site\" content=\"@simple_thread\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Justin Etheredge\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/\"},\"author\":{\"name\":\"Justin Etheredge\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/#\\\/schema\\\/person\\\/0fb3ffb38b4a6c996a1cf80baf95a35b\"},\"headline\":\"A Case For Using CoffeeScript\",\"datePublished\":\"2011-12-17T20:30:00+00:00\",\"dateModified\":\"2019-11-14T13:56:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/\"},\"wordCount\":1497,\"commentCount\":17,\"image\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2011\\\/12\\\/coffee.jpg\",\"keywords\":[\"web development\"],\"articleSection\":[\"Insights\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/\",\"url\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/\",\"name\":\"A Case For Using CoffeeScript - Simple Thread\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2011\\\/12\\\/coffee.jpg\",\"datePublished\":\"2011-12-17T20:30:00+00:00\",\"dateModified\":\"2019-11-14T13:56:32+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/#\\\/schema\\\/person\\\/0fb3ffb38b4a6c996a1cf80baf95a35b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2011\\\/12\\\/coffee.jpg\",\"contentUrl\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2011\\\/12\\\/coffee.jpg\",\"width\":2048,\"height\":1365,\"caption\":\"coffee\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/a-case-for-using-coffeescript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.simplethread.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Case For Using CoffeeScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/#website\",\"url\":\"https:\\\/\\\/www.simplethread.com\\\/\",\"name\":\"Simple Thread\",\"description\":\"Powering Energy Software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.simplethread.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/#\\\/schema\\\/person\\\/0fb3ffb38b4a6c996a1cf80baf95a35b\",\"name\":\"Justin Etheredge\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/Justin-96x96.jpg\",\"url\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/Justin-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.simplethread.com\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/Justin-96x96.jpg\",\"caption\":\"Justin Etheredge\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/JustinEtheredge\"],\"url\":\"https:\\\/\\\/www.simplethread.com\\\/author\\\/jetheredge\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Case For Using CoffeeScript - Simple Thread","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.simplethread.com\/a-case-for-using-coffeescript\/","og_locale":"en_US","og_type":"article","og_title":"A Case For Using CoffeeScript","og_description":"If you\u2019re interested in CoffeeScript, then I\u2019m sure by now you have read Ryan Florence\u2019s blog post titled \u201cA Case Against Using CoffeeScript\u201d. In this post, Ryan explains that he uses CoffeeScript at work, and he likes the language, but in his opinion it is too difficult to comprehend and too difficult to debug. My [&hellip;]","og_url":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/","og_site_name":"Simple Thread","article_publisher":"https:\/\/www.facebook.com\/Simple-Thread-164373486939165\/","article_published_time":"2011-12-17T20:30:00+00:00","article_modified_time":"2019-11-14T13:56:32+00:00","og_image":[{"width":2048,"height":1365,"url":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2011\/12\/coffee.jpg","type":"image\/jpeg"}],"author":"Justin Etheredge","twitter_card":"summary_large_image","twitter_creator":"@JustinEtheredge","twitter_site":"@simple_thread","twitter_misc":{"Written by":"Justin Etheredge","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#article","isPartOf":{"@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/"},"author":{"name":"Justin Etheredge","@id":"https:\/\/www.simplethread.com\/#\/schema\/person\/0fb3ffb38b4a6c996a1cf80baf95a35b"},"headline":"A Case For Using CoffeeScript","datePublished":"2011-12-17T20:30:00+00:00","dateModified":"2019-11-14T13:56:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/"},"wordCount":1497,"commentCount":17,"image":{"@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2011\/12\/coffee.jpg","keywords":["web development"],"articleSection":["Insights"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/","url":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/","name":"A Case For Using CoffeeScript - Simple Thread","isPartOf":{"@id":"https:\/\/www.simplethread.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#primaryimage"},"image":{"@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2011\/12\/coffee.jpg","datePublished":"2011-12-17T20:30:00+00:00","dateModified":"2019-11-14T13:56:32+00:00","author":{"@id":"https:\/\/www.simplethread.com\/#\/schema\/person\/0fb3ffb38b4a6c996a1cf80baf95a35b"},"breadcrumb":{"@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#primaryimage","url":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2011\/12\/coffee.jpg","contentUrl":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2011\/12\/coffee.jpg","width":2048,"height":1365,"caption":"coffee"},{"@type":"BreadcrumbList","@id":"https:\/\/www.simplethread.com\/a-case-for-using-coffeescript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.simplethread.com\/"},{"@type":"ListItem","position":2,"name":"A Case For Using CoffeeScript"}]},{"@type":"WebSite","@id":"https:\/\/www.simplethread.com\/#website","url":"https:\/\/www.simplethread.com\/","name":"Simple Thread","description":"Powering Energy Software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.simplethread.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.simplethread.com\/#\/schema\/person\/0fb3ffb38b4a6c996a1cf80baf95a35b","name":"Justin Etheredge","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2017\/03\/Justin-96x96.jpg","url":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2017\/03\/Justin-96x96.jpg","contentUrl":"https:\/\/www.simplethread.com\/wp-content\/uploads\/2017\/03\/Justin-96x96.jpg","caption":"Justin Etheredge"},"sameAs":["https:\/\/x.com\/JustinEtheredge"],"url":"https:\/\/www.simplethread.com\/author\/jetheredge\/"}]}},"_links":{"self":[{"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/posts\/1073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/comments?post=1073"}],"version-history":[{"count":0,"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/posts\/1073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/media\/1130"}],"wp:attachment":[{"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/media?parent=1073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/categories?post=1073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.simplethread.com\/wp-json\/wp\/v2\/tags?post=1073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}