{"id":981,"date":"2026-06-10T12:22:00","date_gmt":"2026-06-10T12:22:00","guid":{"rendered":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/"},"modified":"2026-06-14T11:59:33","modified_gmt":"2026-06-14T11:59:33","slug":"nontrailing-separators-do-not-spark-joy","status":"publish","type":"post","link":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/","title":{"rendered":"Nontrailing separators don&#8217;t spark pleasure \u2022 Buttondown"},"content":{"rendered":"<p><br \/>\n<\/p>\n<div>\n<p>That is legitimate JSON:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"p\">{<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"nt\">&#8220;a&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"nt\">&#8220;b&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"nt\">&#8220;c&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><br \/>\n<span class=\"p\">}<\/span>\n<\/div>\n<p>That is invalid JSON:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"p\">{<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"nt\">&#8220;a&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"nt\">&#8220;b&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"nt\">&#8220;c&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"p\">}<\/span>\n<\/div>\n<p>The distinction is the final comma. The JSON grammar specifies {that a} comma can separate two members of an object however not postcede (&#8220;path&#8221;) a member. I believe this was a design mistake. Say we wish to add two new keys to the struct, one earlier than the &#8220;a&#8221; member and one after the &#8220;c&#8221; member. This is what it will seem like if trailing commas had been permitted:<\/p>\n<div class=\"codehilite\"><span\/>{<br \/>\n<span class=\"gi\">+   &#8220;x&#8221;: 0,<\/span><br \/>\n<span class=\"w\"> <\/span>   &#8220;a&#8221;: 1,<br \/>\n<span class=\"w\"> <\/span>   &#8220;b&#8221;: 2,<br \/>\n<span class=\"w\"> <\/span>   &#8220;c&#8221;: 3,<br \/>\n<span class=\"gi\">+   &#8220;y&#8221;: 4,<\/span><br \/>\n}\n<\/div>\n<p>It is the very same textual content transformation no matter the place we add the important thing. Within the present mannequin, we as a substitute have this:<\/p>\n<div class=\"codehilite\"><span\/>{<br \/>\n<span class=\"gi\">+   &#8220;x&#8221;: 0,<\/span><br \/>\n<span class=\"w\"> <\/span>   &#8220;a&#8221;: 1,<br \/>\n<span class=\"w\"> <\/span>   &#8220;b&#8221;: 2,<br \/>\n<span class=\"gd\">&#8211;   &#8220;c&#8221;: 3<\/span><br \/>\n<span class=\"gi\">+   &#8220;c&#8221;: 3,<\/span><br \/>\n<span class=\"gi\">+   &#8220;y&#8221;: 4<\/span><br \/>\n}\n<\/div>\n<p>These are totally different transformations! Equally if you wish to take away a component, you&#8217;ll be able to&#8217;t simply delete the corresponding line, you must delete the road after which verify that the final line would not have a trailing comma. Do not even get me began on all of the particular instances concerned in swapping two strains.<\/p>\n<p>JSON is not the one language with this downside. Haskell writes file varieties like this:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"c1\">&#8212; from https:\/\/play.haskell.org\/<\/span><br \/>\n<span class=\"kr\">knowledge<\/span><span class=\"w\"> <\/span><span class=\"kt\">Drone<\/span><span class=\"w\"> <\/span><span class=\"ow\">=<\/span><span class=\"w\"> <\/span><span class=\"kt\">Drone<\/span><br \/>\n<span class=\"w\">  <\/span><span class=\"p\">{<\/span><span class=\"w\"> <\/span><span class=\"n\">xPos<\/span><span class=\"w\"> <\/span><span class=\"ow\">::<\/span><span class=\"w\"> <\/span><span class=\"kt\">Int<\/span><br \/>\n<span class=\"w\">  <\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">yPos<\/span><span class=\"w\"> <\/span><span class=\"ow\">::<\/span><span class=\"w\"> <\/span><span class=\"kt\">Int<\/span><br \/>\n<span class=\"w\">  <\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">zPos<\/span><span class=\"w\"> <\/span><span class=\"ow\">::<\/span><span class=\"w\"> <\/span><span class=\"kt\">Int<\/span><br \/>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n<\/div>\n<p>This &#8220;partial bullet level&#8221; model of placing separators in the beginning of rows makes it simpler to alter the final row however tougher to alter the primary one. <\/p>\n<p>TLA+ has this downside too:<\/p>\n<p>This one&#8217;s annoying as a result of 1) you are always including new top-level variables whereas engaged on a spec and a pair of) the PlusCal DSL doesn&#8217;t have this downside:<\/p>\n<div class=\"codehilite\"><span\/>* Completely superb!<br \/>\n(*&#8211;algorithm foo {<br \/>\nvariables a; b; c;\n<\/div>\n<p>The worst offenders, IMO, are logic languages like Prolog. Not solely do not you might have trailing separators, you might have a particular terminating image:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"nf\">foo<\/span><span class=\"p\">(<\/span><span class=\"nv\">A<\/span><span class=\"p\">,<\/span> <span class=\"nv\">B<\/span><span class=\"p\">,<\/span> <span class=\"nv\">C<\/span><span class=\"p\">)<\/span> <span class=\"p\">:-<\/span><br \/>\n    <span class=\"nv\">A<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"c1\">% comma<\/span><br \/>\n    <span class=\"nv\">B<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"c1\">% comma<\/span><br \/>\n    <span class=\"nv\">C<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">3.<\/span> <span class=\"c1\">% interval!<\/span>\n<\/div>\n<p>I assume you&#8217;ll be able to type of consider it as funny-lookin&#8217; braces:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"nf\">foo<\/span><span class=\"p\">(<\/span><span class=\"nv\">A<\/span><span class=\"p\">,<\/span> <span class=\"nv\">B<\/span><span class=\"p\">,<\/span> <span class=\"nv\">C<\/span><span class=\"p\">)<\/span> <span class=\"p\">:-<\/span><br \/>\n    <span class=\"nv\">A<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n    <span class=\"nv\">B<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span><br \/>\n    <span class=\"nv\">C<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">3<\/span><br \/>\n<span class=\"p\">.<\/span>\n<\/div>\n<p>However this isn&#8217;t normal syntax and folks will take a look at you bizarre in the event you attempt it. And you continue to do not get trailing separators.<\/p>\n<h2>One thing higher<\/h2>\n<p>Some languages permit trailing separators:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"c1\">\/\/ go<\/span><br \/>\n<span class=\"nx\">legitimate<\/span><span class=\"w\"> <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"kd\">map<\/span><span class=\"p\">[<\/span><span class=\"kt\">string<\/span><span class=\"p\">]<\/span><span class=\"kt\">int<\/span><span class=\"p\">{<\/span><br \/>\n<span class=\"w\">        <\/span><span class=\"s\">&#8220;a&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">        <\/span><span class=\"s\">&#8220;b&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">        <\/span><span class=\"s\">&#8220;c&#8221;<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<\/div>\n<div class=\"codehilite\"><span\/><span class=\"c1\"># python<\/span><br \/>\n<span class=\"n\">legitimate<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><br \/>\n  <span class=\"s2\">&#8220;a&#8221;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n  <span class=\"s2\">&#8220;b&#8221;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span><br \/>\n  <span class=\"s2\">&#8220;c&#8221;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"p\">}<\/span>\n<\/div>\n<p>However I believe we will do one higher than that. Python and Go commas can path however not lead, which means we won&#8217;t go 100% bullet factors:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"c1\"># python once more<\/span><br \/>\n<span class=\"n\">invalid<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><br \/>\n    <span class=\"p\">,<\/span> <span class=\"s2\">&#8220;a&#8221;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><br \/>\n    <span class=\"p\">,<\/span> <span class=\"s2\">&#8220;b&#8221;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><br \/>\n    <span class=\"p\">,<\/span> <span class=\"s2\">&#8220;c&#8221;<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><br \/>\n<span class=\"p\">}<\/span>\n<\/div>\n<p>Now I personally assume that bullet factors are the bee&#8217;s knees and want extra languages allowed main separators. TLA+ truly has main conjunction and disjunction operations:<\/p>\n<div class=\"codehilite\"><span\/>\/\/ Not TLA+ however the identical semantics<br \/>\n|| &amp;&amp; a == 1<br \/>\n   &amp;&amp; b == 2<\/p>\n<p>|| &amp;&amp; a == 3<br \/>\n   &amp;&amp; b == 4\n<\/p><\/div>\n<p>You may&#8217;t path these, although, no writing (a &amp;&amp;).<\/p>\n<p>Essentially the most versatile I&#8217;ve seen is Alloy, which permits each main and trailing commas:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"c1\">\/\/ Alloy<\/span><br \/>\n<span class=\"kd\">sig<\/span><span class=\"w\"> <\/span><span class=\"n\">Legitimate<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">b<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><br \/>\n<span class=\"o\">}<\/span><\/p>\n<p><span class=\"kd\">sig<\/span><span class=\"w\"> <\/span><span class=\"n\">AlsoValid<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"n\">a<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"n\">b<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><br \/>\n<span class=\"o\">}<\/span>\n<\/div>\n<p>Alloy does go slightly power-mad right here, as a result of it additionally permits empty separators.<\/p>\n<div class=\"codehilite\"><span\/><span class=\"kd\">sig<\/span><span class=\"w\"> <\/span><span class=\"n\">StillValid<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"p\">,,<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"p\">,,,,,,,,,<\/span><br \/>\n<span class=\"w\">    <\/span><span class=\"p\">,,<\/span><span class=\"w\"> <\/span><span class=\"n\">b<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,,<\/span><br \/>\n<span class=\"o\">}<\/span>\n<\/div>\n<p>I&#8217;ve heard some individuals name this &#8220;stuttering&#8221;. I am unable to determine how one can commit crimes with this however you by no means know.<\/p>\n<h2>Satan&#8217;s advocate<\/h2>\n<p>One argument in opposition to trailing separators is that they make parsing ambiguous. Think about this Prolog: <\/p>\n<div class=\"codehilite\"><span\/><span class=\"nf\">foo<\/span><span class=\"p\">(<\/span><span class=\"nv\">A<\/span><span class=\"p\">,<\/span> <span class=\"nv\">B<\/span><span class=\"p\">)<\/span> <span class=\"p\">:-<\/span><br \/>\n    <span class=\"nv\">A<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n    <span class=\"nv\">B<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">2.<\/span><\/p>\n<p><span class=\"nf\">bar<\/span><span class=\"p\">(<\/span><span class=\"s s-Atom\">c<\/span><span class=\"p\">).<\/span>\n<\/div>\n<p>Right here it is fairly clear that foo and bar are separate definitions. But when we substitute the rule terminator with commas:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"nf\">foo<\/span><span class=\"p\">(<\/span><span class=\"nv\">A<\/span><span class=\"p\">,<\/span> <span class=\"nv\">B<\/span><span class=\"p\">)<\/span> <span class=\"p\">:-<\/span><br \/>\n    <span class=\"nv\">A<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span><br \/>\n    <span class=\"nv\">B<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span><\/p>\n<p><span class=\"nf\">bar<\/span><span class=\"p\">(<\/span><span class=\"s s-Atom\">c<\/span><span class=\"p\">),<\/span>\n<\/div>\n<p>Now it might be alternatively parsed that bar(c) is a part of the definition of foo\u2014 foo is just true when bar(c) can be true. <\/p>\n<p>As one other instance, that is legitimate Ruby:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"c1\"># prints 5<\/span><br \/>\n<span class=\"nb\">places<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"o\">.<\/span><br \/>\n<span class=\"w\">     <\/span><span class=\"n\">succ<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><br \/>\n<span class=\"w\">     <\/span><span class=\"n\">succ<\/span><span class=\"p\">()<\/span>\n<\/div>\n<p>If we may &#8220;path technique calls&#8221;, that is ambiguous:<\/p>\n<div class=\"codehilite\"><span\/><span class=\"n\">foo<\/span><span class=\"o\">.<\/span><br \/>\n<span class=\"w\">  <\/span><span class=\"n\">bar<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><br \/>\n<span class=\"w\">  <\/span><span class=\"n\">baz<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><\/p>\n<p><span class=\"n\">quux<\/span><span class=\"p\">()<\/span>\n<\/div>\n<p>Now it isn&#8217;t clear if quux() is a top-level perform or a way of foo.<\/p>\n<p>Each of these relate to regulate separators, not knowledge separators. Python has an edge knowledge case with trailing knowledge separators. The language makes use of parenthesis each for expression grouping like (2+3) and for tuple definition like (2,3). So how do you distinguish an expression analysis from a single-element tuple? With a trailing comma!<\/p>\n<div class=\"codehilite\"><span\/>&gt;&gt;&gt; x = (2+3)<br \/>\n&gt;&gt;&gt; kind(x)<\/p>\n<p>&gt;&gt;&gt; x = (2+3,)<br \/>\n&gt;&gt;&gt; kind(x)<\/p>\n<\/div>\n<p>Okay that is all I received. New (and remaining) preview launch of Logic for Programmers subsequent week.<\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/buttondown.com\/hillelwayne\/archive\/nontrailing-separators-do-not-spark-joy\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>That is legitimate JSON: { &#8220;a&#8221;: 1, &#8220;b&#8221;: 2, &#8220;c&#8221;: 3 } That is invalid JSON: { &#8220;a&#8221;: 1, &#8220;b&#8221;: 2, &#8220;c&#8221;: 3, } The distinction is the final comma. The JSON grammar specifies {that a} comma can separate two members of an object however not postcede (&#8220;path&#8221;) a member. I believe this was a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":983,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=","fifu_image_alt":"","jnews-multi-image_gallery":[],"jnews_single_post":[],"jnews_primary_category":[],"jnews_override_bookmark_settings":[],"jnews_social_meta":[],"jnews_override_counter":[],"footnotes":""},"categories":[5],"tags":[331,78,1342,1343,532],"class_list":["post-981","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developer-ai-open-source-ecosystem","tag-buttondown","tag-joy","tag-nontrailing","tag-separators","tag-spark"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nontrailing separators don&#039;t spark pleasure \u2022 Buttondown - Future News 24<\/title>\n<meta name=\"description\" content=\"Lookin&#x27; at you, JSON\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nontrailing separators don&#039;t spark pleasure \u2022 Buttondown - Future News 24\" \/>\n<meta property=\"og:description\" content=\"Lookin&#x27; at you, JSON\" \/>\n<meta property=\"og:url\" content=\"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/\" \/>\n<meta property=\"og:site_name\" content=\"Future News 24\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-10T12:22:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-14T11:59:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=\" \/>\n<meta name=\"author\" content=\"Future News 24\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Future News 24\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/\"},\"author\":{\"name\":\"Future News 24\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/person\\\/cecad1bde21cfc357cf70128144d6c83\"},\"headline\":\"Nontrailing separators don&#8217;t spark pleasure \u2022 Buttondown\",\"datePublished\":\"2026-06-10T12:22:00+00:00\",\"dateModified\":\"2026-06-14T11:59:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/\"},\"wordCount\":779,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/image-generator.buttondown.email\\\/api\\\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=\",\"keywords\":[\"Buttondown\",\"Joy\",\"Nontrailing\",\"separators\",\"spark\"],\"articleSection\":[\"Developer AI &amp; Open-Source Ecosystem\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/\",\"name\":\"Nontrailing separators don't spark pleasure \u2022 Buttondown - Future News 24\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/image-generator.buttondown.email\\\/api\\\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=\",\"datePublished\":\"2026-06-10T12:22:00+00:00\",\"dateModified\":\"2026-06-14T11:59:33+00:00\",\"description\":\"Lookin&#x27; at you, JSON\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#primaryimage\",\"url\":\"https:\\\/\\\/image-generator.buttondown.email\\\/api\\\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=\",\"contentUrl\":\"https:\\\/\\\/image-generator.buttondown.email\\\/api\\\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/10\\\/nontrailing-separators-do-not-spark-joy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/futurenews24.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nontrailing separators don&#8217;t spark pleasure \u2022 Buttondown\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#website\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/\",\"name\":\"Future News 24\",\"description\":\"The Smart Hub for AI and Next-Gen Innovation\",\"publisher\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/futurenews24.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#organization\",\"name\":\"Future News 24\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/fn24-favicon.png\",\"contentUrl\":\"https:\\\/\\\/futurenews24.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/fn24-favicon.png\",\"width\":250,\"height\":250,\"caption\":\"Future News 24\"},\"image\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/person\\\/cecad1bde21cfc357cf70128144d6c83\",\"name\":\"Future News 24\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g\",\"caption\":\"Future News 24\"},\"sameAs\":[\"https:\\\/\\\/futurenews24.com\"],\"url\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/author\\\/mridulpahuja20\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nontrailing separators don't spark pleasure \u2022 Buttondown - Future News 24","description":"Lookin&#x27; at you, JSON","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:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/","og_locale":"en_US","og_type":"article","og_title":"Nontrailing separators don't spark pleasure \u2022 Buttondown - Future News 24","og_description":"Lookin&#x27; at you, JSON","og_url":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/","og_site_name":"Future News 24","article_published_time":"2026-06-10T12:22:00+00:00","article_modified_time":"2026-06-14T11:59:33+00:00","og_image":[{"url":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=","type":"","width":"","height":""}],"author":"Future News 24","twitter_card":"summary_large_image","twitter_image":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=","twitter_misc":{"Written by":"Future News 24","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#article","isPartOf":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/"},"author":{"name":"Future News 24","@id":"https:\/\/futurenews24.com\/#\/schema\/person\/cecad1bde21cfc357cf70128144d6c83"},"headline":"Nontrailing separators don&#8217;t spark pleasure \u2022 Buttondown","datePublished":"2026-06-10T12:22:00+00:00","dateModified":"2026-06-14T11:59:33+00:00","mainEntityOfPage":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/"},"wordCount":779,"commentCount":0,"publisher":{"@id":"https:\/\/futurenews24.com\/#organization"},"image":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#primaryimage"},"thumbnailUrl":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=","keywords":["Buttondown","Joy","Nontrailing","separators","spark"],"articleSection":["Developer AI &amp; Open-Source Ecosystem"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/","url":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/","name":"Nontrailing separators don't spark pleasure \u2022 Buttondown - Future News 24","isPartOf":{"@id":"https:\/\/futurenews24.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#primaryimage"},"image":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#primaryimage"},"thumbnailUrl":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=","datePublished":"2026-06-10T12:22:00+00:00","dateModified":"2026-06-14T11:59:33+00:00","description":"Lookin&#x27; at you, JSON","breadcrumb":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#primaryimage","url":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img=","contentUrl":"https:\/\/image-generator.buttondown.email\/api\/emphasize-subject?subject=Nontrailing%20separators%20do%20not%20spark%20joy&author=Computer%20Things&date=2026-06-10&img="},{"@type":"BreadcrumbList","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/10\/nontrailing-separators-do-not-spark-joy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/futurenews24.com\/"},{"@type":"ListItem","position":2,"name":"Nontrailing separators don&#8217;t spark pleasure \u2022 Buttondown"}]},{"@type":"WebSite","@id":"https:\/\/futurenews24.com\/#website","url":"https:\/\/futurenews24.com\/","name":"Future News 24","description":"The Smart Hub for AI and Next-Gen Innovation","publisher":{"@id":"https:\/\/futurenews24.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/futurenews24.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/futurenews24.com\/#organization","name":"Future News 24","url":"https:\/\/futurenews24.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/futurenews24.com\/#\/schema\/logo\/image\/","url":"https:\/\/futurenews24.com\/wp-content\/uploads\/2026\/06\/fn24-favicon.png","contentUrl":"https:\/\/futurenews24.com\/wp-content\/uploads\/2026\/06\/fn24-favicon.png","width":250,"height":250,"caption":"Future News 24"},"image":{"@id":"https:\/\/futurenews24.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/futurenews24.com\/#\/schema\/person\/cecad1bde21cfc357cf70128144d6c83","name":"Future News 24","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g","caption":"Future News 24"},"sameAs":["https:\/\/futurenews24.com"],"url":"https:\/\/futurenews24.com\/index.php\/author\/mridulpahuja20\/"}]}},"_links":{"self":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts\/981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/comments?post=981"}],"version-history":[{"count":1,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":982,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts\/981\/revisions\/982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/media\/983"}],"wp:attachment":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/media?parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/categories?post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/tags?post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}