{"id":92,"date":"2008-07-03T19:08:57","date_gmt":"2008-07-04T00:08:57","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=92"},"modified":"2008-07-03T19:54:59","modified_gmt":"2008-07-04T00:54:59","slug":"they-love-me-not","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=92","title":{"rendered":"They love me not"},"content":{"rendered":"<p>My GPCE paper was rejected, and rather harshly. You can read the reviews below. My analysis is that I was rejected for not being incremental to prior work in the field. <!--more--><\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; review 1 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>PAPER: 41<br \/>\nTITLE: Modular Generation and Customization<\/p>\n<p>OVERALL RATING: 1 (weak accept)<br \/>\nREVIEWER&#8217;S CONFIDENCE: 2 (medium)<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; REVIEW &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>This paper addresses an interesting problem: generating a variety of<br \/>\nrepresentations of some data, even when that data evolves over time.<br \/>\nIt distills the problem into an interesting challenge problem in order<br \/>\nto raise awareness of this problem and provide a common problem for<br \/>\nuse in evaluating different solutions.  It also proposes a solution to<br \/>\nthis problem in the form of &#8220;differential trees&#8221; that can be used to<br \/>\ndescribe data and transformations on that data.<\/p>\n<p>I think that the problem and the proposed solution are quite<br \/>\ninteresting and would be right for the GPCE audience.  The field trees<br \/>\nand differential trees overcome many of the problems in dealing with<br \/>\nunique names and positions in sequences that are found in program,<br \/>\ndata, and model transformations.<\/p>\n<p>There are, however, some problems with the presentation of the paper.<br \/>\nAlthough the paper claims to solve this problem of dealing with the<br \/>\nevolution of data, and the transformations that will still be<br \/>\napplicable, without change, to the modified data, not enough space is<br \/>\ndevoted to explaining this in the solution.  In Section 4.2, on page<br \/>\n8, column 1, we have the sentence &#8220;As we saw in the previous section,<br \/>\nit is this positional correspondence between Data and Form that allows<br \/>\nCustomize to survive the evolution of Data.&#8221;  But this is no further<br \/>\nexplanation of why this is.  The reader can figure it on his or her<br \/>\nown but I would expect some explanation of why this all works out.<\/p>\n<p>The preceding description of transformations in differential trees is<br \/>\nalso not always so clear.  The semantics of this language are<br \/>\nrelegated to a PDF file on the Subtext web site.  This might be OK if<br \/>\nwe had a better description of the example in 4.2.  For example, it<br \/>\nseems that &#8220;body&#8221; is the instantiated body of the function given to<br \/>\nmap but this isn&#8217;t made clear.<\/p>\n<p>I think that there is room for some discussion of semantics since the<br \/>\nauthor is using a larger font size that used in most of the other<br \/>\npapers.<\/p>\n<p>The discussion of transformations also suffers in section 3.  The<br \/>\n&#8220;Field tree summary&#8221; claims &#8220;Field trees solve the challenge problem<br \/>\nby providing stable identities and positions so that transformations<br \/>\nexpressed in those terms can be composed modularly.&#8221;  There is no way<br \/>\nto evaluate the validity of this claim since we do not, at this point,<br \/>\nsee any of these such transformations &#8211; only the results of them.  On<br \/>\npage 5, column 2, we read &#8220;Fig 9 shows who Customize transforms Form<br \/>\ninto CustomForm&#8221;, but we only see the result of this transformation.<br \/>\nIn order to see that the field tree is a good data structure over<br \/>\nwhich transformations can be applied we really need to see more<br \/>\nclearly how one expresses transformations over them.  A little<br \/>\npseudo-code or something would be helpful here.  Granted, the<br \/>\ndifferential trees provide this solution, but on the first reading of<br \/>\nthe paper one is left wondering how transformations on field trees<br \/>\nwould behave.<\/p>\n<p>Overall I really like the ideas presented in this paper, but the<br \/>\npresentation is sometimes rather hard to follow.<\/p>\n<p>Minor concerns:<\/p>\n<p>abstract, item 2 in column 2 of page 1:  It isn&#8217;t clear what you mean<br \/>\nby &#8220;unshifting positions&#8221; at this point.<\/p>\n<p>page 4, column 2: Is the discussion of trees to represent positions is<br \/>\nnot really needed.   There are other more important things that should<br \/>\nbe said and this discussion could be removed.<\/p>\n<p>Other parts are also note so clear in the presentation.<br \/>\nI found the description of field trees in column 1 of page 5<br \/>\nconfusing.  A little more description about how field trees are<br \/>\ndisplayed in the figures would help before getting into the contents<br \/>\nof the trees.  Even just adding a statement about fields with no<br \/>\nvalues but only positions are shown with no colon would be helpful.<br \/>\nAlso, the fact that positions are reused &#8211; as described in the third<br \/>\nparagraph of 3.3 could be moved up.   After we understand the<br \/>\nstructure and visualization of the trees, then get into the encoding<br \/>\nof XML in field trees. <\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; review 2 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>PAPER: 41<br \/>\nTITLE: Modular Generation and Customization<\/p>\n<p>OVERALL RATING: 3 (strong accept)<br \/>\nREVIEWER&#8217;S CONFIDENCE: 2 (medium)<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; REVIEW &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>This well-written paper presents a challenge problem that captures the<br \/>\ntradeoff between modularity and flexibility that often occurs when<br \/>\ntransforming programs in a source language (such as a database schema)<br \/>\nto programs in a target language (such as an HTML form): how to preserve<br \/>\nmanual customizations made to the result of automatic generation.  In<br \/>\na well-motivated progression towards a satisfying solution of this<br \/>\nchallenge problem, the author presents the concepts of positions (which<br \/>\nstably identify keys in a sequence), field trees (which organize<br \/>\nexpressions in a hierarchy of positions), and differential trees (which<br \/>\ngeneralize spreadsheets to declarative specifications of field trees and<br \/>\ncomputations on them).  These concepts are situated within the author&#8217;s<br \/>\nlarger project of so-called transformative programming.<\/p>\n<p>I find these concepts compelling as a programming model and convincing<br \/>\nas a solution to the challenge problem.  The relation between the paper<br \/>\nand the general tradeoff between modularity and flexibility would be<br \/>\nstrengthened if the author could mention (without details, as space<br \/>\nis limited) the same machinery solving more instances of the tradeoff<br \/>\nbesides the single concrete challenge problem.  I also wonder how this<br \/>\nwork relates to Benjamin Pierce et al.&#8217;s Harmony\/Boomerang project.<\/p>\n<p>Minor comments:<\/p>\n<p>On page 4, &#8220;The current implementation &#8230; this notional tree&#8221;, in<br \/>\nparticular &#8220;ordered before it, by ascending serial number&#8221;, is unclear<br \/>\nbecause two orderings have been mentioned: one on positions defined<br \/>\nby the sequence abstraction and one on serial numbers defined by this<br \/>\nparticular implementation.<\/p>\n<p>Also on page 4, &#8220;objects ID&#8217;s&#8221; -> &#8220;object ID&#8217;s&#8221;<\/p>\n<p>On page 6, the top of the left column discusses storing positions in a<br \/>\nfield tree whereas the bottom discusses storing paths of positions in a<br \/>\nfield tree, if I understand correctly.  This distinction is a bit subtle<br \/>\nso I would appreciate the text confirming or denying it.<\/p>\n<p>On page 7, the discussion of the := mode (the third paragraph) is<br \/>\nunclear.  I can&#8217;t figure out: what goes wrong if I replace := by :: in<br \/>\nFigure 10(e)?  For that matter, why distinguish between : and :: at all? <\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; review 3 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>PAPER: 41<br \/>\nTITLE: Modular Generation and Customization<\/p>\n<p>OVERALL RATING: -3 (strong reject)<br \/>\nREVIEWER&#8217;S CONFIDENCE: 3 (high)<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; REVIEW &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>The author presents a solution in the context of subtext for the<br \/>\nproblem of modular customization of generators. The example problem is<br \/>\na system where a database model changes and the application code has<br \/>\nto be updated to take new, removed, or reordered fields into<br \/>\naccount. The authors propose an example challenge, and builds towards<br \/>\na solution by introducing a sequential data structure where positions<br \/>\ndon&#8217;t change on inserts or deletions, such that positions are a stable<br \/>\nidentity for an element of the data structure. Next, the sequences are<br \/>\nincluded in trees to allows structured objects \/ records \/<br \/>\nfields. Finally, the complete solution in subtext is presented, called<br \/>\ndifferential trees. Differential trees unify data with the<br \/>\ncustomization\/transformation. The tree describes the customization of<br \/>\nreferences to other definitions using overriding differences.<\/p>\n<p>+ the underlying proposed model of subtext seems simple and elegant<\/p>\n<p>&#8211; however the paper is rather confusing and vague, perhaps due to<br \/>\n  being premature<\/p>\n<p>&#8211; the argument that the proposed challenge reflects the actual problem<br \/>\n  of generation and customization in practice is missing<\/p>\n<p>&#8211; a good story about how this works with multi-language programming is<br \/>\n  missing<\/p>\n<p>&#8211; insufficient discussion of related work in customization (in<br \/>\n  particular virtual classes).<\/p>\n<p>The writing is unnecessarily vague. Maybe this is due to prematurity<br \/>\nof the work. The structure of the paper, from positional sequences to<br \/>\nfield trees to differential trees is not helpful to me. Actually, the<br \/>\npart I found most comprehensible are the differential trees. Maybe<br \/>\nreversing the paper would help: first explain the complete solution of<br \/>\ndifferential trees, then dissect its ingredients.<\/p>\n<p>I advice to be much more explicit about your definitions of positional<br \/>\nsequences, field trees, and differential trees. Including some<br \/>\nformalization or pseudo code for some of the operations might be<br \/>\nhelpful. More concrete examples would help as well.<\/p>\n<p>The proposed challenge is too limited. I&#8217;m not convinced that the<br \/>\nchallenge you introduce reflects the complexity of the problem.<br \/>\nPlease justify the change from practice (structured HTML generation,<br \/>\nintegration of the database in the language\/editor). You simplify the<br \/>\nproblem enormously by introducing a universal representation and<br \/>\ncomplete integration. However, complete integration frequently solves<br \/>\nall problems. Yet, in many cases complete integration is not<br \/>\ndesirable. I admit that it might actually be the only complete<br \/>\nsolution, but this should still be very clearly motivated. Also,<br \/>\nplease clearly identify that this is the key to the solution.<\/p>\n<p>Large parts of the paper revolve around positioning of<br \/>\nfields. However, I would argue that the order of fields in the<br \/>\ndatabase and data model should be insignificant altogether (according<br \/>\nto good design principles). Therefore, I don&#8217;t get the significance of<br \/>\nthe position sequences to the generation and customization<br \/>\nproblem. After that, two main themes remain: 1) avoiding textual<br \/>\nidentifiers for stable identity and 2) customization by describing<br \/>\nonly overriding differences.<\/p>\n<p>For 1), you employ a new development environment with a new,<br \/>\nstructured\/visual form of editing code. This solves the issue, but<br \/>\nit&#8217;s hardly a contribution to explain that in this paper: it&#8217;s<br \/>\ncompletely obvious that this solves the unstable nature of textual<br \/>\nidentifiers.<\/p>\n<p>For 2), you employ differential trees. That is definitely an<br \/>\nattractive solution, but similar solutions exist that are not even<br \/>\nreferred to. In particular, this kind of customization is highly<br \/>\nrelated to virtual classes and in particular the simplicity of your<br \/>\napproach reminds me of the essential operators of the DEEP calculus<br \/>\n(&#8220;Eliminating Distinctions of Class: Using prototypes to Model Virtual<br \/>\nClasses&#8221;). This paper is largely about typing, but the kind of<br \/>\ncustomization that is possible is very similar to yours. I suggest to<br \/>\nat least compare your work to prototypes and virtual classes.<\/p>\n<p>The complete story about how this will be the core of a multi-language<br \/>\nsystem is missing. I get the idea, but there is no discussion at all<br \/>\nabout the mapping of multiple languages to the proposed differential<br \/>\ntree core of subtext. How are customizations going to be specified?<\/p>\n<p>The reader is currently a bit overwhelmed by the introduction of a<br \/>\nseries of unusual names, which obscure the actual underlying<br \/>\ntechniques. I would suggest to stick to more conventional<br \/>\nterminology. Too much significance is attached to the introduction of<br \/>\nnames, which are also used to list the contributions.<\/p>\n<p>The discussion of position sequences in 3.1 is not clear enough. The<br \/>\npaper describes the solution of using serial numbers only very<br \/>\nbriefly.<\/p>\n<p>Inline examples would make 4.1 more clear. In particular, on the first<br \/>\nread I had problems understanding:<\/p>\n<p>* &#8220;The assignments of values to fields are seen as a set of<br \/>\n  definitions whose implications are worked out, a process called<br \/>\n  integration&#8221;<\/p>\n<p>* &#8220;The arrows on the right indicate references between fields, and<br \/>\n  serve as non-textual identifiers for anonymous fields.&#8221; ~ This is<br \/>\n  confusing because the fields actually appears to have names in the<br \/>\n  example.<\/p>\n<p>* &#8220;&#8221;live&#8221; execution&#8221; ~ please provide a bit more context of how the<br \/>\n  trees will be used in subtext to understand this. Currently, you<br \/>\n  assume that the reader is familiar with what subtext is.<\/p>\n<p>* &#8220;Every definition expresses an overriding difference between its<br \/>\n  containers and their definitions&#8221; ~ It&#8217;s completely clear later, but<br \/>\n  an inline example would clear this up completely.<\/p>\n<p>In general, it seems to be that the part on differential trees does<br \/>\nnot describe the solution to the challenge in full detail. You don&#8217;t<br \/>\ngo back to the challenge to show step by step how the introduction of<br \/>\na company and the removal of a phone number works. Figure 11: for<br \/>\ndifferential trees, it&#8217;s unclear what determines the ordering of the<br \/>\nelements when the contents of the CustomForm gets evaluated. How is a<br \/>\nposition assigned to a new definition, for example what controls the<br \/>\nposition of the new id2 definition? What mechanism makes phone come<br \/>\nlast in the result, as required?<\/p>\n<p>Some more minor details:<\/p>\n<p>* page 5, at the top of the right column please refer to Figure 3 when<br \/>\n  you are discussing Figure 9.<\/p>\n<p>* page 5: &#8220;Note that these new positions are allocated once when the<br \/>\n  transformations are written, not every time they are executed&#8221; ~<br \/>\n  This is unclear. I don&#8217;t get this note at this point.<\/p>\n<p>* page 5: &#8220;the name of the position can be changed&#8221;. I assume a name<br \/>\n  is a purely symbolic name for presentation purpose, but could you be<br \/>\n  a bit more specific about the role of the name.<\/p>\n<p>* page 6: &#8220;But we also don&#8217;t want to hard-code hex strings for<br \/>\n  internal position IDs&#8221; ~ I can see what you want to say here, but<br \/>\n  readers will wonder where hex strings suddenly come in. Please<br \/>\n  rephrase.<\/p>\n<p>* page 6, second paragraph (&#8220;The problem could be solved&#8221;). After<br \/>\n  reading the rest of the paper I understand this part, but at this<br \/>\n  point it is rather unclear. It would help a lot of you would give<br \/>\n  the reader more context information earlier in the paper.<\/p>\n<p>* page 8: &#8220;These approaches handle customization through roundtrip<br \/>\n  engineering&#8221;. That statement is a bit too general. <\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; review 4 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>PAPER: 41<br \/>\nTITLE: Modular Generation and Customization<\/p>\n<p>OVERALL RATING: -3 (strong reject)<br \/>\nREVIEWER&#8217;S CONFIDENCE: 4 (expert)<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; REVIEW &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>Summary of the Paper:<\/p>\n<p>A method, &#8220;field trees&#8221; for labelling places in code is described.<br \/>\nA generalization called &#8220;diffential trees&#8221; is built on<br \/>\nthe field tree foundation.  These schemes are used to<br \/>\n&#8220;solve&#8221; the problem of propagating informatoin to<br \/>\nmultiple targets in generated software artifacts.<\/p>\n<p>Comments for the Authors<\/p>\n<p>I found your paper impossible to read, because you did not use terms<br \/>\nthat I understood, and your key terms were never defined crisply.<br \/>\nConsequently, I did not understand except in the vaguest sense what<br \/>\nyou were trying to tell me.<\/p>\n<p>You define &#8220;positional sequence to be a sorted map from a domain of<br \/>\nidentifiers&#8221;.  Usually when one defines a map (you mean this in<br \/>\nmathematical sense, right?), one defines a domain and a range.  What&#8217;s<br \/>\nthe range of a &#8220;positional sequence&#8221;?  What does &#8220;sorted map&#8221; mean?<br \/>\nYou don&#8217;t provide decent definition, and you don&#8217;t provide an example.<br \/>\nOK, I&#8217;m already lost, I have no intuition and no examples.<\/p>\n<p>&#8220;Field tress are nested positional sequences&#8221;.  OK, I already don&#8217;t<br \/>\nknow what positional sequences are.  So now I don&#8217;t know what field<br \/>\ntrees are.  If I believe that positional sequences are a mathematical<br \/>\n&#8220;map&#8221;, I don&#8217;t know what &#8220;nested maps&#8221; are.  You show an example<br \/>\n(Figure 8) and claim some kind of connection between id for Data<br \/>\ncontaining 1234 and value 1234 but I don&#8217;t see how this relationship<br \/>\nis justified.  Offering me an implementation in an appendix which<br \/>\nisn&#8217;t provided in the paper is pointless.<\/p>\n<p>&#8220;Positions are encoded as a path &#8230; from the root of this tree&#8221;.<br \/>\nLike, child1.child3.child9.child2?  And what if a subtree gets<br \/>\ndeleted? Gets moved?<\/p>\n<p>&#8220;Differential tres declaratively specify field tree transformations&#8221;.<br \/>\nOK, how?  THe answer, &#8220;&#8230;by example&#8221; isn&#8217;t adequate for a technical<br \/>\npaper in which this is the supposed to be the primary result.<\/p>\n<p>Regarding the problem definition: I would have characterized<br \/>\nit as:<br \/>\n      Data &#8212;Gen1&#8211;> Form1<br \/>\n      |      |<br \/>\n      |      &#8211;Gen2&#8211;> Form2<br \/>\n    evolve<br \/>\n      |<br \/>\n      |<br \/>\n      V<br \/>\n     Data&#8217; &#8212;Gen1&#8211;> Form1<br \/>\n            |<br \/>\n             &#8211;Gen2&#8211;> Form2<\/p>\n<p>which gives you a completely different view of the world.<br \/>\nNow what I need  is given that I&#8217;ve computed Gen1(Data) (==>form1),<br \/>\nhow do I compute Gen1(Data+delta) where Data+Delta==Data&#8217;?<br \/>\nIdeally, it is some function<br \/>\n    Update(Data,delta)=Gen1(Data)+Mods(Data,delta)<br \/>\nso I can take the original result Gen1(Data) and patch (&#8220;+&#8221;)<br \/>\nit. This gives you a completely different view of the problem.<br \/>\nCheck out finite differencing.<\/p>\n<p>Now, most of your argument seems to be how to label a place in source<br \/>\ncode.  You don&#8217;t like comments containing generated symbols &#8220;because<br \/>\nthey are invisible to many tools&#8221;.  So your solution is propose some<br \/>\n*one* tool that stores a database of &#8220;persistent internal IDs&#8221;.  I<br \/>\ndon&#8217;t see how this is different than the generated symbols, and I<br \/>\ndon&#8217;t see how this makes getting tools any easier, now I have to have<br \/>\n*your* specific tool.<\/p>\n<p>You claim to somehow use differential trees to &#8220;generate&#8221; the code?<br \/>\nHow? Where does a differential tree encode all the crud that really<br \/>\nmakes up an HTML page?<\/p>\n<p>Finally, you whole scheme seems focused around some simply reshuffling<br \/>\nof a few fields.  Changes in real programs are often more interesting<br \/>\nthan that.  What if the problem is fields move from one page to<br \/>\nanother?  If they are added together to get the new result?<br \/>\nUltimately the problem is one of traceability: one has to be able to<br \/>\nsay how one element of code was derived from underlying structures<br \/>\n(e.g., this HTML output field was derived from the database).  So a<br \/>\ntrace that somehow links the database slot to the HTML code that<br \/>\ndepends on it, along with an indication of the dependency type seems<br \/>\nfundamental.  I don&#8217;t how a position numbering scheme can provide that<br \/>\ntraceability.<\/p>\n<p>That&#8217;s the major stuff.<\/p>\n<p>Minor stuff:<\/p>\n<p>What on earth does PHP have to do with this paper? All of<br \/>\nyour points could have been made with just the HTML.<\/p>\n<p>But if the HTML form had been embedded in a PHP script,<br \/>\nI don&#8217;t see how you would have generated whatever PHP code<br \/>\nfrom whatever the examples you had in the paper.<\/p>\n<p>Points in favor or against (sent to authors)<\/p>\n<p>&#8211; Incoherent definitions of key concepts and results <\/p>\n","protected":false},"excerpt":{"rendered":"<p>My GPCE paper was rejected, and rather harshly. You can read the reviews below. My analysis is that I was rejected for not being incremental to prior work in the field.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_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_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-92","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfEnU-1u","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=92"}],"version-history":[{"count":0,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/92\/revisions"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=92"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=92"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}