<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ⚫️ nothingness negates itself</title>
    <description>The latest articles on DEV Community by ⚫️ nothingness negates itself (@dualyticalchemy).</description>
    <link>https://dev.to/dualyticalchemy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F375538%2F4a9566d0-65cc-453c-bf48-70eb6e9168cf.jpg</url>
      <title>DEV Community: ⚫️ nothingness negates itself</title>
      <link>https://dev.to/dualyticalchemy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dualyticalchemy"/>
    <language>en</language>
    <item>
      <title>Answer: Am I suffering "divitis"? (CSS especialist needed) [closed]</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Mon, 24 Jan 2022 11:56:55 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/answer-am-i-suffering-divitis-css-especialist-needed-closed-4nfm</link>
      <guid>https://dev.to/dualyticalchemy/answer-am-i-suffering-divitis-css-especialist-needed-closed-4nfm</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Gn-iPj_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/2164179/am-i-suffering-divitis-css-especialist-needed/2164191#2164191" rel="noopener noreferrer"&gt;
              &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: Am I suffering "divitis"? (CSS especialist needed)
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Jan 29 '10&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/2164179/am-i-suffering-divitis-css-especialist-needed/2164191#2164191" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y9mJpuJP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          38
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wif5Zq3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;It looks perfect. This should be taken as an example!&lt;/p&gt;

&lt;p&gt;One symptom of "divitis" is when you see a list of &lt;code&gt;&amp;lt;div&amp;gt;'s&lt;/code&gt; instead of using a &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;.&lt;/p&gt;

    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/2164179/am-i-suffering-divitis-css-especialist-needed/2164191#2164191" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Answer: How to use code blocks in HTML</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Sat, 22 Jan 2022 22:31:36 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/answer-how-to-use-code-blocks-in-html-3pa2</link>
      <guid>https://dev.to/dualyticalchemy/answer-how-to-use-code-blocks-in-html-3pa2</guid>
      <description>&lt;p&gt;why not re-style &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; with that class name instead of introducing &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;-itis 🚬😐? &lt;/p&gt;


&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Gn-iPj_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/10379015/how-to-use-code-blocks-in-html/10379064#10379064" rel="noopener noreferrer"&gt;
              &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: How to use code blocks in HTML
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Apr 30 '12&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/10379015/how-to-use-code-blocks-in-html/10379064#10379064" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y9mJpuJP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          3
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wif5Zq3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;You probably want to do it in cascading style sheets (&lt;a href="http://en.wikipedia.org/wiki/CSS" rel="nofollow"&gt;CSS&lt;/a&gt;). Create some CSS with the look you want, and things marked as &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; should take on that appearance. For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;style type="text/css"&amp;gt;
code { background-color: gray; color: blue; }
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;p&amp;gt;Some code:&amp;lt;/p&amp;gt;
&amp;lt;code&amp;gt;My&lt;/code&gt;&lt;/pre&gt;…
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/10379015/how-to-use-code-blocks-in-html/10379064#10379064" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>add</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Thu, 23 Dec 2021 13:29:25 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/add-504k</link>
      <guid>https://dev.to/dualyticalchemy/add-504k</guid>
      <description>&lt;ul&gt;
&lt;li&gt;[ ] tmux and tmux-plugins (&lt;a href="https://github.com/tmux-plugins/list"&gt;https://github.com/tmux-plugins/list&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] lazydocker, &lt;/li&gt;
&lt;li&gt;[ ] todo.txt, &lt;/li&gt;
&lt;li&gt;[ ] ack, &lt;/li&gt;
&lt;li&gt;[ ] html-xml-utils, &lt;/li&gt;
&lt;li&gt;[ ] unified-alps, &lt;/li&gt;
&lt;li&gt;[ ] stoplight, &lt;/li&gt;
&lt;li&gt;[ ] some validators[0], &lt;/li&gt;
&lt;li&gt;[ ] alder (&lt;a href="https://github.com/aweary/alder"&gt;https://github.com/aweary/alder&lt;/a&gt;), &lt;/li&gt;
&lt;li&gt;[ ] tig, &lt;/li&gt;
&lt;li&gt;[ ] vim_cubed, &lt;/li&gt;
&lt;li&gt;[ ] fzf and fd (&lt;a href="https://github.com/junegunn/fzf"&gt;https://github.com/junegunn/fzf&lt;/a&gt; &lt;a href="https://mike.place/2017/fzf-fd/"&gt;https://mike.place/2017/fzf-fd/&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] vim-seek, &lt;/li&gt;
&lt;li&gt;[ ] vim-surround, &lt;/li&gt;
&lt;li&gt;[ ] gti,&lt;/li&gt;
&lt;li&gt;[ ] httrack,&lt;/li&gt;
&lt;li&gt;[ ] lynx, &lt;/li&gt;
&lt;li&gt;[ ] links, &lt;/li&gt;
&lt;li&gt;[ ] urlview, &lt;/li&gt;
&lt;li&gt;[ ] irssi, &lt;/li&gt;
&lt;li&gt;[ ] newsboat,&lt;/li&gt;
&lt;li&gt;[ ] ranger,&lt;/li&gt;
&lt;li&gt;[ ] basics and workflows&lt;a href="https://github.com/nerdfiles/Hybrid.AngularAMD.HATEOAS/blob/master/resources/grunt-default.png"&gt;1&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;[ ] diceware and blackjack or dining philosophers or byzantine generals?,&lt;/li&gt;
&lt;li&gt;[ ] mutt,&lt;/li&gt;
&lt;li&gt;[ ] cmus,&lt;/li&gt;
&lt;li&gt;[ ] frotz (&lt;a href="http://www.ifarchive.org/indexes/if-archive.html"&gt;http://www.ifarchive.org/indexes/if-archive.html&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] cygwin (&lt;a href="https://blog.miguelgrinberg.com/post/web-development-on-windows-does-not-need-to-suck"&gt;https://blog.miguelgrinberg.com/post/web-development-on-windows-does-not-need-to-suck&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] yeoman/yo,&lt;/li&gt;
&lt;li&gt;[ ] yUML (e.g., yEd2kingly),&lt;/li&gt;
&lt;li&gt;[ ] gruntjs,&lt;/li&gt;
&lt;li&gt;[ ] gulpjs,&lt;/li&gt;
&lt;li&gt;[ ] pm2,&lt;/li&gt;
&lt;li&gt;[ ] nodemon,&lt;/li&gt;
&lt;li&gt;[ ] almond/r.js,&lt;/li&gt;
&lt;li&gt;[ ] docker-compose,&lt;/li&gt;
&lt;li&gt;[ ] wp-cli,&lt;/li&gt;
&lt;li&gt;[ ] ng (angularAMD, &lt;a href="https://angular.io/guide/testing-code-coverage"&gt;https://angular.io/guide/testing-code-coverage&lt;/a&gt;, etc.),&lt;/li&gt;
&lt;li&gt;[ ] sirv (&lt;a href="https://www.npmjs.com/package/sirv-cli"&gt;https://www.npmjs.com/package/sirv-cli&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] surge.sh,&lt;/li&gt;
&lt;li&gt;[ ] heroku, &lt;/li&gt;
&lt;li&gt;[ ] netlify?,&lt;/li&gt;
&lt;li&gt;[ ] storybook?,&lt;/li&gt;
&lt;li&gt;[ ] node-red?,&lt;/li&gt;
&lt;li&gt;[ ] npx,&lt;/li&gt;
&lt;li&gt;[ ] npm (e.g., &lt;code&gt;&amp;gt; $(npm run | percol&lt;/code&gt;)[3]),&lt;/li&gt;
&lt;li&gt;[ ] mongod,&lt;/li&gt;
&lt;li&gt;[ ] protractor,&lt;/li&gt;
&lt;li&gt;[ ] cucumber,&lt;/li&gt;
&lt;li&gt;[ ] cypress,&lt;/li&gt;
&lt;li&gt;[ ] jest (hydration),&lt;/li&gt;
&lt;li&gt;[ ] karma,&lt;/li&gt;
&lt;li&gt;[ ] glances,&lt;/li&gt;
&lt;li&gt;[ ] django,&lt;/li&gt;
&lt;li&gt;[ ] tornado  (&lt;a href="https://www.tornadoweb.org/en/stable/options.html"&gt;https://www.tornadoweb.org/en/stable/options.html&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] nginx,&lt;/li&gt;
&lt;li&gt;[ ] apache,&lt;/li&gt;
&lt;li&gt;[ ] owasp zap (&lt;a href="https://www.zaproxy.org/docs/desktop/cmdline/"&gt;https://www.zaproxy.org/docs/desktop/cmdline/&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] ps,&lt;/li&gt;
&lt;li&gt;[ ] ghostscript, &lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;magick mogrify -resize NN% file.png&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;[ ] convert,&lt;/li&gt;
&lt;li&gt;[ ] brew,&lt;/li&gt;
&lt;li&gt;[ ] curses (&lt;a href="https://github.com/thobbs/multitail-curses"&gt;https://github.com/thobbs/multitail-curses&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] calcurse (&lt;a href="https://opensource.com/article/18/10/calcurse"&gt;https://opensource.com/article/18/10/calcurse&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] etcd,&lt;/li&gt;
&lt;li&gt;[ ] clusterluck,&lt;/li&gt;
&lt;li&gt;[ ] pandoc (specifically slideshow building),&lt;/li&gt;
&lt;li&gt;[ ] openchain,&lt;/li&gt;
&lt;li&gt;[ ] holochain (zomes),&lt;/li&gt;
&lt;li&gt;[ ] handshake wallets,&lt;/li&gt;
&lt;li&gt;[ ] nix (&lt;a href="https://nixos.wiki/wiki/Nix_Installation_Guide"&gt;https://nixos.wiki/wiki/Nix_Installation_Guide&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] zsh,&lt;/li&gt;
&lt;li&gt;[ ] fish shell,&lt;/li&gt;
&lt;li&gt;[ ] jsdoc,&lt;/li&gt;
&lt;li&gt;[ ] css-specificity,&lt;/li&gt;
&lt;li&gt;[ ] jekyll  (&lt;a href="https://pmarsceill.github.io/just-the-docs/#getting-started"&gt;https://pmarsceill.github.io/just-the-docs/#getting-started&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;[ ] gem,&lt;/li&gt;
&lt;li&gt;[ ] ctags,&lt;/li&gt;
&lt;li&gt;[ ] mosh,&lt;/li&gt;
&lt;li&gt;[ ] iptables,&lt;/li&gt;
&lt;li&gt;[ ] winston (&lt;a href="https://github.com/winstonjs/winston/tree/2.x#using-winston-in-a-cli-tool"&gt;https://github.com/winstonjs/winston/tree/2.x#using-winston-in-a-cli-tool&lt;/a&gt;), &lt;/li&gt;
&lt;li&gt;[ ] wiredep (&lt;a href="https://github.com/taptapship/wiredep-cli"&gt;https://github.com/taptapship/wiredep-cli&lt;/a&gt;), &lt;/li&gt;
&lt;li&gt;[ ] webpack (is this zuckerbug's?),&lt;/li&gt;
&lt;li&gt;[ ] qemu,&lt;/li&gt;
&lt;li&gt;[ ] cli's for load balancers, facades, circuit breakers, gateways, etc.,&lt;/li&gt;
&lt;li&gt;[ ] ionic (capacitor),&lt;/li&gt;
&lt;li&gt;[ ] android studio,&lt;/li&gt;
&lt;li&gt;[ ] consul,&lt;/li&gt;
&lt;li&gt;[ ] keyware cli to cache invalidate semantic keyed links for MRUs,&lt;/li&gt;
&lt;li&gt;[ ] etc.&lt;a href="https://github.com/nerdfiles/oh-my-grid/blob/master/package.json#L6-L34"&gt;2&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;[0] &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G9k51SYJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/102306/147171466-0ae934fe-e42b-45fa-9da3-8a26ca710282.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G9k51SYJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/102306/147171466-0ae934fe-e42b-45fa-9da3-8a26ca710282.jpg" alt="ext_138_image1.jpg" width="215" height="226"&gt;&lt;/a&gt;, lighthouse, or&lt;/p&gt;

&lt;p&gt;[3] &lt;code&gt;aliases: run, rum, urn&lt;/code&gt;&lt;/p&gt;

</description>
      <category>walkingdatabase</category>
    </item>
    <item>
      <title>if you aren't developing RESTful systems, you are historically and semantically NOT doing web development</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Sun, 15 Nov 2020 14:35:55 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/if-you-aren-t-developing-restful-systems-you-are-historically-and-semantically-not-doing-web-development-52id</link>
      <guid>https://dev.to/dualyticalchemy/if-you-aren-t-developing-restful-systems-you-are-historically-and-semantically-not-doing-web-development-52id</guid>
      <description>&lt;p&gt;please, you have to stop wasting my time with your opinion that i "just want to be right," especially if you don't actually know the circumstances around fielding's work.&lt;/p&gt;

&lt;p&gt;you are in fact shitting on his life's work, because you don't actually read timbl, amundsen or any of them.&lt;/p&gt;

&lt;p&gt;just like with black issues, you want to have opinions and be "respected" about stuff you have not done any due dilligence in.&lt;/p&gt;

&lt;p&gt;you literally have a search engine right in front of you, and you think i am sharing just my "dogmatic" opinion. &lt;/p&gt;

&lt;p&gt;no, i think there is a different issue as to why you're so focused on tone policing and respectability politics.&lt;/p&gt;

&lt;p&gt;given the state of the world and me being black, come the fuck on. read the room, you are all striking out in more ways than just bastardizing and misrepresenting REST and the web itself, more concerned with white-knighting and gatekeeping. you didn't even engage REST, and i am trying to tear down these gates.&lt;/p&gt;

&lt;p&gt;[UPDATE]: "A data format SHOULD incorporate hypertext links if hypertext is the expected user interface paradigm." &lt;a href="https://www.w3.org/TR/webarch/#hypertext"&gt;https://www.w3.org/TR/webarch/#hypertext&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you are not putting hyperlinks in your JSON response, you are engaging in BAD PRACTICE and not developing SEMANTIC WEB based on LINKED DATA&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hypernames</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Tue, 27 Oct 2020 03:53:58 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/hypernames-14lg</link>
      <guid>https://dev.to/dualyticalchemy/hypernames-14lg</guid>
      <description>&lt;p&gt;Names usually point us to persons, places or things, so we learn, by the age of 3 or 4, maybe even younger. Later we learn that names apply to many other kinds of things: events, decisions, holes, spaces, directions, ideas, none of which technically are "persons", "places" or "things", per se. And yet, it is the purpose of a name to cover them all, to do them justice, and to lead us, presumably to them, however it is they are to be approach or engaged either spatio-temporally or intellectually.&lt;/p&gt;

&lt;p&gt;So we have all kinds of names as well, if not more than the previous set of kinds of things, for which we then need new kinds of names for our kinds of names for our kinds of whatevers which happen to, as we might expect, carry on differentiating in their various and copious ways. Of course, there are simple names like "John" but also there are names like "Yu" or "AdapterFactoryMessageContainerFormatterSingletonFactor" or even "127.0.0.1" or "OpenPGP.v3-asdf". It's also obviously conceivable that a name can only be its true meaning if it is written in a certain color or if it is uttered only, never written. The list of criteria for a name is endless, truly. And yet the list of kinds of things also seems endless — which is bigger, the list of names or the list of kinds of things?&lt;/p&gt;

&lt;p&gt;They certainly pick out things in the world, but why do &lt;em&gt;these&lt;/em&gt; special symbols or characters do so in just the way they do, whereas non-special characters do not? What really is so different from a E and a ℇ or ∃, well, they were all introduced at different times, by different persons, probably. Something about their form and style carried along with the fact of their origination. And yet, they all mean very much different things, or can at any rate, and sometimes they can be used to say the same thing as one would as if they were all interchangeable. So the rules seem to emerge out of meaning thus and so in just the way one does, as often as one does, and apparently these symbols, often enough, are successful at reflecting the models of that fact of reality as it was then and conceivably re-portrayable in the future, given the meanings of words stick around, as it were, to how things are going on with us. The environment certainly also seems to play a role, in re-enforcing these singular multiples, but how might we determine their fit in the semiotic system-theoretic model of hypermedia communication?&lt;/p&gt;

</description>
      <category>hypermedia</category>
      <category>webdev</category>
      <category>rest</category>
      <category>naming</category>
    </item>
    <item>
      <title>Introducing Domain-driven Hypermedia-oriented Design (DHD)</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Mon, 19 Oct 2020 04:27:38 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/introducing-domain-driven-hypermedia-oriented-design-dhd-2jfg</link>
      <guid>https://dev.to/dualyticalchemy/introducing-domain-driven-hypermedia-oriented-design-dhd-2jfg</guid>
      <description>&lt;p&gt;Or “Development”? Whatever a developer chooses to take from this post, it may be applied to development per se, in some areas, just a little? Who’s to say? It’s a well-charted territory: Mike Amundsen (BDFL) already has developed and architected many rigorous and swaggerly demonstrations of the much feared “generic web client”, wherein our understanding is brought to discuss the requirements for both a server too. His book Building Hypermedia APIs with HTML5 and Node kickstarted a campaign, really, of a general style and focus of writing software that is explicit, scientific, testable, highly evolvable and modular: but hypermedia-oriented. Of course, the “first issues” of his “api-starter” repository might be to add Yeoman templates. What might they look like, for Data (fixtures, mocks, etc. directory under “support” in DDD) or Resources (are these not “apps” in DDD?)? What reasons might we have for choosing this configuration over that in our template patterns: is it to produce “pages”, web page elements, native app components, content-management system paradigms have many “widget” and “structural” representational Data Types (&lt;a href="https://nerdfiles.keybase.pub/hmd-Eec1iMcXoAAFdeR.jpg"&gt;message models&lt;/a&gt;?); — does it, the response, need &lt;a href="https://schema.org/"&gt;schema.org&lt;/a&gt; trappings and properties?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XTpkHdJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w7yqensb48rsi4r2f8ba.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XTpkHdJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w7yqensb48rsi4r2f8ba.jpg" alt="Hypermedia Made Easy. OSLC Fest. Amundsen, Mike. 05-2020."&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://g.mamund.com/2020-05-oslcfest"&gt;Hypermedia Made Easy&lt;/a&gt;. OSLC Fest. Amundsen, Mike. 05-2020.&lt;/p&gt;

&lt;p&gt;Amundsen asks us to think in terms of “actions” (see &lt;a href="https://schema.org/Action"&gt;schema.org/Action&lt;/a&gt;, which should probably be a store house for all the representation templates Amundsen has envisioned or which we could add) and “properties” when problem solving, less “data” or even “resource”:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Your data model is not your object model is not your resource model is not your affordance model” (Mike Amundsen. 2016).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Developers may find Amundsen’s existing code repositories fruitful and fun to deploy, as he also produces YouTube videos guiding new developers and chronicling his journey, thoughts, patterns and inventions for hypermedia-orientation, in general. His most recent book (&lt;a href="https://www.goodreads.com/book/show/45416219-design-and-build-great-web-apis"&gt;Design and Build Great Web APIs&lt;/a&gt;. Nov 2019.), as of the time of this writing, covers a lot of the server-side considerations: testing, deploying, shutting down, evolving, continuous integration, etc. of the hypermedia orientation. (I’ll be using that term a lot, basically to distinguish thinking that is RESTful versus what is &lt;a href="https://goodapi.co/blog/rest-vs-graphql"&gt;so-called-REST&lt;/a&gt;. It’s not really up for debate anymore: if you’re not putting discoverable links in your responses as continuations of your application state, your API is not RESTful, and likely undermines the main goal REST set out to achieve and enable for further extension, refinement, advancement, etc.) Here, I would like to focus on what seems like a necessary intersection between domain-driven design and hypermedia-oriented design (or at any rate, the best examples of them that I could reproduce myself or find; hence, the mention of Amundsen, but there are others who focus on the front end, like &lt;a href="https://github.com/petejohanson/angular-hy-res"&gt;angular-hy-res&lt;/a&gt;, or like himself, &lt;a href="https://www.npmjs.com/package/hal"&gt;HAL&lt;/a&gt; modules and apiary, etc. exist). Few, however, have achieved the perfection in implementation of the idea as Amundsen, as his “starter” is more like an environment in which to work at the data and object levels, but also templating of patterns of Data in “representors” (&lt;a href="https://www.github.com/mamund/api-starter/tree/master/darrt%2Frepresentors%2Fprag-json.js"&gt;representation templates&lt;/a&gt;). The primary “invention” which I am introducing, is perhaps a bit of a bit. Maybe not, in any event, since hypermedia is woefully absent on our internets as a widely-deployed thing, I wanted first to make a prediction: of how hypermedia relates to a kind of “civilizational index” if you will. Why should we need “another X”, even if it has been around for N years? What do “domains” and “orientation” have to do with the failures of internet campaign sites the promise to end political regimes (do any of them ever really do that?) or of developers' promises to turn code into literal freedom (through markets or whatever). Many have these ideas were conceived with adaptations, extensions and refinements to REST that no one ever talks about. They show you how to implement some CRUD, title their article “REST dies by the infinite glory of GraphQL” then promise that if it’s not your keys it’s not your bitcoin only ever if it’s not your money if you’re not spending it, or something.&lt;/p&gt;
&lt;h2&gt;
  
  
  Objects are dead; long-live the Resource! Or —
&lt;/h2&gt;

&lt;p&gt;[ See codepen: &lt;a href="https://codepen.io/nerdfiles/pen/oNLxVpR"&gt;https://codepen.io/nerdfiles/pen/oNLxVpR&lt;/a&gt; ] My invention is something like Margaret Runchey’s (&lt;a href="https://patents.google.com/patent/US7774388B1/en"&gt;Model of Everything patent&lt;/a&gt;), or at any rate, what I thought she was going on about: use the [rel] and the [class] expressions within the response as a generic input for &lt;a href="http://langsec.org/bof-handout.pdf"&gt;formal input verification&lt;/a&gt; of a virtual state machine. What does this mean? You can representation pretty much anything in the class and relation space of a reason, and yet both in some way bring about more HTTP requests: CSS triggers background images and imports, etc., relations in HTML, depending on their name, do browser-specific things and other times not. Most IANA relations aren’t processed. But yet, we can pass all kinds of “syntax” into these attributes to which “on-demand” behaviors occur: we can lazily load them, transclude them, &lt;code&gt;preload&lt;/code&gt;, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/prefetch"&gt;&lt;code&gt;prefetch&lt;/code&gt;&lt;/a&gt;, etc.&lt;/p&gt;

&lt;p&gt;So it isn’t so much an invention but a challenge, an opportunity and a proposal: use link relation and CSS class to express &lt;a href="https://www.github.com/mamund/api-starter/tree/master/darrt%2Ftransitions.js"&gt;transitions&lt;/a&gt; in the “ubiquitous language” of domain-driven design, as the “role” is next to follow in terms of &lt;a href="https://www.w3.org/WAI/PF/aria/roles"&gt;WAI-ARIA&lt;/a&gt;. Make link relations for roles, like widgets and structures; make link relations for different CSS styles: make that “dark mode” setting itself a “link relation”, etc. How would you express that link relation? “alternate stylesheet”? Kind of boring. In any case, it’ll probably be a very clever link in a “native app” or an SPA, so how it is implemented may look anything but like a link: it might be an iPhone radio button toggle that fires an HTTP request on “true” for some object that was stored locally, etc.&lt;/p&gt;

&lt;p&gt;I want to know the “name” we’d give for a “dark mode” link relation, and which resources would it appear on: would my “hamburger menu” be discoverable via only my API resources: using “up”, “prev”, even “back”, etc.? “settings/dark-mode”? Or just “dark-mode”: why does it need to be a link relation? Well, I want it available strictly via API, but on what resource? Is it itself a resource? /api/user/me/settings/dark-mode/true?&lt;/p&gt;

&lt;p&gt;But how would I find it situation in the “library” that is your API namespace? Users and Products and all that, like Services, are usually bottom floor. Upper level ontologies have things like “Events” and “Types” and “Proposition”. We’re not asking for something as heady or as garden variety: tags, lists, menus, etc. are all covered by ARIA. could an API tell me all its “menus”? Could an API itself have an actual help menu? Like if I asked: /api/help/, as opposed to “login”. What would “help” represent? A CLI, a manpage, Wal-mart’s customer service number in a linkless JSON response?&lt;/p&gt;



&lt;p&gt;So with hope I have dulled you with enough meandering questions so as to prime you to be a brutal in your critique and analysis as possible for this concept map I present, for it may even be foolishly combined at the outset!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V4Y7lJGt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t67mor096971vmruldra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V4Y7lJGt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t67mor096971vmruldra.png" alt="First draft, file (rectangles) and folder (rhombuses) architecture: combining Domain-driven Design and Hypermedia-oriented Design"&gt;&lt;/a&gt;&lt;br&gt;
First draft, file (rectangles) and folder (rhombuses) architecture: combining Domain-driven Design and Hypermedia-oriented Design&lt;/p&gt;

&lt;p&gt;&lt;em&gt;((Maybe use &lt;a href="https://developer.okta.com/blog/2020/03/23/microservice-security-patterns#use-paseto-tokens-over-jwt"&gt;PASETO&lt;/a&gt; for authz and &lt;a href="https://firebase.google.com/docs/functions/firestore-events"&gt;Firestore&lt;/a&gt; instead of RTDB? add any number of “databases”; write your own, whatever. I may have to write the implementation of PASETO to Passport.))&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Other ideas: non-standard link relations, ASCII-like CSS class names
&lt;/h2&gt;

&lt;p&gt;Imagine declaring relations in &lt;a href="https://github.com/jaime-olivares/yuml-diagram/wiki"&gt;YUML&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="[server]-uploads-&amp;gt;[client]" 
      href="https://example.com/do-something" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or set up a CSS framework that parses YUML as CSS class names and does something smart in CSS with grids or flex, pseudo elements and other style properties.&lt;/p&gt;

&lt;p&gt;[Originally published at &lt;a href="https://medium.com/@dualyticalchemy/introducing-domain-driven-hypermedia-oriented-design-dhd-6c9b387751bf"&gt;medium.com&lt;/a&gt;.]&lt;/p&gt;

</description>
      <category>hypermedia</category>
      <category>domaindrivendesign</category>
      <category>rest</category>
      <category>webdev</category>
    </item>
    <item>
      <title>listen, web developer!</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Sun, 11 Oct 2020 16:43:27 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/listen-web-developer-1e62</link>
      <guid>https://dev.to/dualyticalchemy/listen-web-developer-1e62</guid>
      <description>&lt;p&gt;if the developer is not putting links in their JSON or XML response, they are not doing web development! it's that simple! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pJokXeNZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yzbxiixiqrq2jow0pkub.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pJokXeNZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yzbxiixiqrq2jow0pkub.jpg" alt="think domain driven hypermedia oriented design!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;one philosophical decision, or perhaps ontological commitment, implicit to the definition of the web is that &lt;em&gt;links&lt;/em&gt; are distributed; the web is fundamentally a distributed hypermedia application. it runs on port 80. links are distributed throughout its territory, notably &lt;em&gt;inside&lt;/em&gt; of hypermedia. often, most often, hypermedia is served at some URL, like &lt;code&gt;.../kitten.jpg&lt;/code&gt; (notice the file extension). why not: &lt;code&gt;.../kitten/&lt;/code&gt;? well, usually because achieving this technically can be politically and technically difficult within an organization. nevertheless, it is obtainable and consistent with the terms of semantic web.&lt;/p&gt;

&lt;p&gt;your JSON response could also be served as &lt;code&gt;.../kitten.json&lt;/code&gt; but you usually don't, it's usually prefigured into an API somewhere; let alone &lt;em&gt;adding links&lt;/em&gt; is a non-trivial task within maybe API frameworks, like even ExpressJS, HapiJS, LoopBack, and so on. so usually the prototypical example response is something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET ./kitten.jpg
&amp;lt;some jpeg that is text-like&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;GET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;./kitten/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"morton"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but all hypermedia requires is embedding links in the HTTP response payload (hypermedia control can be extricated from REST, but that leaves us to wonder: what was the point of REST? well, it's first use-case is distributed control through hypermedia!), the entire raison d'etre of ReST is the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET ./kitten.jpg
  &amp;lt;ul&amp;gt;
    &amp;lt;li&amp;gt;&amp;lt;a rel="link-relation-type" href="/#state-machine-route?continuation-token={%= cont_token %}"&amp;gt;State Machine Route&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;/ul&amp;gt;
  ...
  rest of the jpeg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and for &lt;code&gt;application/json...&lt;/code&gt; subtypes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"morton"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"links"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"rel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{% state || 'link-relation-type' %}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"href"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{macroForBaseUrlReplacement}/#state-machine-route?continuation-token={%= cont_token %}"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;so now the client can navigation and discover "links" conceived through the &lt;code&gt;[rel]&lt;/code&gt; attribute. think of baruch spinoza's "order and connection" of ideas and things: these &lt;code&gt;[rel]&lt;/code&gt;s are the events, whether relations or decisions, of the state machine, expressed in HTTP Verb &lt;code&gt;Request&lt;/code&gt;s like &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, etc. and resolve into HTTP Status &lt;code&gt;Response&lt;/code&gt;s (if you're familiar with Express, etc.). one could say that &lt;code&gt;POST&lt;/code&gt;, e.g., is not a "relation" but rather a decision, so it has no place in the list of &lt;code&gt;[rel]&lt;/code&gt;s. i would argument that an alias can be constructed that is a link relation that maps to all the HTTP Verbs. so we get:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /kitten.jpg (or /kitten/; or /kitten.json)&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"links"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"href"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"rel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"POST"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we get an &lt;code&gt;HTTP 200&lt;/code&gt;. one question is what that response should look like for a 200 versus, say, a 201 given we're looking for a "kitten". which links should be available, and why? is the kitten in a grocery store? is it being purchased in a shop? what is the background of the resource model? this will determine the "syntax of the affordance" in the resource served. the client will do "the right thing", presumably, when it discovers the link and integrates its business into the grander schema of the internet of things.&lt;/p&gt;

&lt;p&gt;but what other schemas are there? one line in particular is relevant:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"rel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in the HTML into which it is given, it will likely be rendered so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"create"&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but really, it could be rendered anywhere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;uri:header=&lt;/span&gt;&lt;span class="s"&gt;"create"&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  ...
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in which case, there will be JavaScript that is doing something Smart, Fun, Sexy and Cool (and presumably Perceivably, Operably, Understandably and Robustly); DOM updates, traversals and manipulations and all.&lt;/p&gt;

&lt;p&gt;however, these are naming opportunities we're overlooking, for "create" could be anything, really:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;  open
  version
  v1
  create.v1
  create:partOf
  go/north
  play
  replay
  update
  continue
  next
  continuation
  narration
  action
  potentialAction
  tradeAction
  O-panel__header--active
  rgb(--(...),--var(...),99)
  library/&lt;span class="ge"&gt;**&lt;/span&gt;/shelves/createdAd
  ∀x(Fx&amp;amp;¬G)
  m/5nYUWL0hAWy0Hw4T33XpnTnf0WQ7eOgCBQJUpMZs8=
&lt;span class="p"&gt;  127.&lt;/span&gt;0.0.1/login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you get the idea (link relations exist: &lt;a href="https://www.iana.org/assignments/link-relations/link-relations.xhtml"&gt;https://www.iana.org/assignments/link-relations/link-relations.xhtml&lt;/a&gt;, &lt;a href="http://microformats.org/wiki/existing-rel-values"&gt;http://microformats.org/wiki/existing-rel-values&lt;/a&gt;, &lt;a href="https://schema.org/SoftwareApplication):"&gt;https://schema.org/SoftwareApplication):&lt;/a&gt; many different ways to express the interstructural matters of architectural style in a semiotic plane of consistency. &lt;/p&gt;

&lt;p&gt;margaret runchey envisions a similar idea back in 2001 or earlier, of link relations as transaction identifiers &lt;em&gt;owning people as data&lt;/em&gt;, as it were, as such "establishing a symbolic identity by formalizing referential relationship between a resource event (you) and an identifier": &lt;a href="https://patents.google.com/patent/US7774388B1/en"&gt;https://patents.google.com/patent/US7774388B1/en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;it's data that, at the most, owns other data. which is presupposed as sensible and true in most Western ontologies, to some extent: a dog owns it own hair, surely.&lt;/p&gt;

&lt;p&gt;"... there is also a built-in internal link through Unitary Integrated Ontology to predicate logic constructions. ... UR-URL ..." (Ibid.) and so on.&lt;/p&gt;

&lt;p&gt;at any rate, what DDD does in infrastructure, Amundsen does in "data.js" in his starter, or at least explicitly: infra incorporates domains, so models are given living data, their data types are wedded to repositories, which i believe should exist in infrastructure at its base. the modules aspect, in interfaces like HTTP, is where DDD and HOD (hypermedia-oriented design) make first contact.&lt;/p&gt;

&lt;p&gt;i'm reminded of a question in the philosophy corridors of w3c: "Isn’t there a need for cacheing the results of the various reasoners in a FOL form?" (&lt;a href="https://www.w3.org/community/philoweb/2014/01/15/syllogism/"&gt;https://www.w3.org/community/philoweb/2014/01/15/syllogism/&lt;/a&gt;) it haunts me today. could a state machine use such a "memory" of reasoners housed in the web (add "memories", but also "apologies" and "guesses" (see CALM)? like an archive.org of publically, biblically accessible links to results of all propositional knowledge. what if we switch our conceptual focus to probabilistic knowledge (Sarah Moss): how will we achieve new results for MCMC algorithms claiming mathematical forms of novel inner structural and hyperdimensional complexity. could such an engine find your car keys? probably. it'd be a link in a Resource Directory (CoAP/CoRE) in your programmable home. in any event, it'll be programmable through semantic web, namely timbl's invention: Linked Data. if it is raining and the key is outside and Smith has ten coins in his pocket, etc. (see Gettier) so perhaps these reasoners would fumble, in which case we introduce the concept of "anaphora"; Smith and Jones get their own indexicalized non-representational pronoun meaning tags "he_sub(jones)". the Gettier problem vanished in our syntax, since intuitively &lt;em&gt;we&lt;/em&gt; do not think that Smith thinks &lt;em&gt;he_sub(smith)&lt;/em&gt; will get the job. why should Gettier get to couch in a conversational or casual pronoun embedding rule that loses, conveniently,  tracking of pronoun veridicality exactly necessary for his argument to be "successful", when Sebastian Roedl formalizes explicitly pronoun use in symbolic relations structured inherently to joint spontaneous knowledge in his paper "You and I"? is it something we commonly "translate away" when converting sentences like "S has ten coins in their pocket"? does the gettier problem hold if jones and smith are a-gender? probably. if they are robots or epistemic agents or things of any sort for all sorts of language, in every language, because the logic rules gettier mentions and the one i am calling out here that he couches in are always processed one way within a socio-cultural mileu? probably not. but i digress.&lt;/p&gt;

&lt;p&gt;if the web is a "virtual state machine" as Roy Fielding suggests, try yEd2Kingly: &lt;a href="https://github.com/brucou/yed2Kingly#examples"&gt;https://github.com/brucou/yed2Kingly#examples&lt;/a&gt; to build out your RESTful hypermedia systems according to Mike Amundsen's DARRT: &lt;a href="https://github.com/mamund/api-starter/blob/master/darrt/"&gt;https://github.com/mamund/api-starter/blob/master/darrt/&lt;/a&gt;. put hypermedia controls in your images and serve Winamp media players or cryptowallets inside them. give them voice commands, via DOM development, so now images can be served on simple web hosts and intercommunicate with APIs that respond to those voice commands over whatever host device is serving the media, given whatever host capabilities that media is reactively written to support. now the media can crawl about, through people sharing it, can report back interactions to a server, true, but if it has a cryptowallet to which it is passing &lt;code&gt;continuation_token&lt;/code&gt;s, then the requestions can be made transactions with eventual consistency and disorderly programming via (Bloom/Bud and reasoning according to CALM: &lt;a href="https://speakerdeck.com/jhellerstein/the-calm-theorem-positive-directions-for-distributed-computing"&gt;https://speakerdeck.com/jhellerstein/the-calm-theorem-positive-directions-for-distributed-computing&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>hypermedia</category>
      <category>ddd</category>
      <category>webdev</category>
      <category>rest</category>
    </item>
    <item>
      <title>Todo list combining CLI and HATEOAS</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Fri, 09 Oct 2020 19:41:54 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/todo-list-combining-cli-and-hateoas-14b0</link>
      <guid>https://dev.to/dualyticalchemy/todo-list-combining-cli-and-hateoas-14b0</guid>
      <description>&lt;p&gt;basically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/notes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rawNotesList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../cli/notes.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;utf8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;flag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;r&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parsedNotesList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rawNotesList&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;links&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;self&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/notes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;actions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;add-note&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/notes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;command&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;responseWithControlData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;note&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;parsedNotesList&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;links&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;actions&lt;/span&gt;

  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseWithControlData&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/notes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;command&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;add&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;failed to add content&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cliCapture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CliCapture&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;notesPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./notes.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;added from server&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We could analogize this CoAP/CoRE and Amundsen's DARRT approach: anything really can substitute for "CliCapture" and wherever &lt;code&gt;fs&lt;/code&gt; is available, we can expand its capabilities with a resource directory mapping to HTTP (&lt;a href="https://github.com/JelmerT/coap-rd/blob/master/requesthandlers.js#L82"&gt;https://github.com/JelmerT/coap-rd/blob/master/requesthandlers.js#L82&lt;/a&gt;) with transitions:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9H3q7Te5v8Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://github.com/nerdfiles/notes-cli/blob/master/cli/server/index.js#L19-L56"&gt;https://github.com/nerdfiles/notes-cli/blob/master/cli/server/index.js#L19-L56&lt;/a&gt; and &lt;a href="https://github.com/nerdfiles/notes-cli/blob/master/cli/server/index.js#L69-L73"&gt;https://github.com/nerdfiles/notes-cli/blob/master/cli/server/index.js#L69-L73&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cli</category>
      <category>hateoas</category>
      <category>hypermedia</category>
      <category>node</category>
    </item>
    <item>
      <title>CALM RESTful ROCA style with AngularJS</title>
      <dc:creator>⚫️ nothingness negates itself</dc:creator>
      <pubDate>Wed, 07 Oct 2020 20:25:13 +0000</pubDate>
      <link>https://dev.to/dualyticalchemy/calm-restful-roca-style-with-angularjs-3oi9</link>
      <guid>https://dev.to/dualyticalchemy/calm-restful-roca-style-with-angularjs-3oi9</guid>
      <description>&lt;p&gt;link dump. that's it (sharted &lt;a href="https://medium.com/@dualyticalchemy/calm-restful-roca-style-with-angularjs-86b45dd9b94"&gt;here&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;the web fundamentally is a distributed hypermedia application&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;browser controls &lt;a href="https://roca-style.org/#server-side"&gt;https://roca-style.org/#server-side&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AngularJS ui-router &lt;a href="https://ui-router.github.io/ng1/tutorial/hellogalaxy"&gt;https://ui-router.github.io/ng1/tutorial/hellogalaxy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;angular-state-machine &lt;a href="https://github.com/tafax/angular-state-machine"&gt;https://github.com/tafax/angular-state-machine&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;angularAMD &lt;a href="https://github.com/marcoslin/angularAMD"&gt;https://github.com/marcoslin/angularAMD&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;hypermedia controls &lt;a href="https://github.com/petejohanson/angular-hy-res"&gt;https://github.com/petejohanson/angular-hy-res&lt;/a&gt; (other examples &lt;a href="https://dev.to/daniellittledev/type-safe-hypermedia-controls-8le"&gt;https://dev.to/daniellittledev/type-safe-hypermedia-controls-8le&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;restangular &lt;a href="https://github.com/mgonto/restangular"&gt;https://github.com/mgonto/restangular&lt;/a&gt; (still needful?)&lt;/li&gt;
&lt;li&gt;ng-a11y &lt;a href="https://github.com/dequelabs/ngA1"&gt;https://github.com/dequelabs/ngA1&lt;/a&gt; [see figure 1]&lt;/li&gt;
&lt;li&gt;require-css &lt;a href="https://github.com/guybedford/require-css"&gt;https://github.com/guybedford/require-css&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;use amundsen's DARRT with &lt;a href="https://github.com/badgateway/ketting/wiki/Hypermedia"&gt;https://github.com/badgateway/ketting/wiki/Hypermedia&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;sam-angular &lt;a href="https://github.com/brusand/sam-angular"&gt;https://github.com/brusand/sam-angular&lt;/a&gt; (e.g.)&lt;/li&gt;
&lt;li&gt;clusterluck &lt;a href="https://www.npmjs.com/package/clusterluck"&gt;https://www.npmjs.com/package/clusterluck&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;paseto &lt;a href="https://developer.okta.com/blog/2020/03/23/microservice-security-patterns#use-paseto-tokens-over-jwt"&gt;https://developer.okta.com/blog/2020/03/23/microservice-security-patterns#use-paseto-tokens-over-jwt&lt;/a&gt; (if you must use session)&lt;/li&gt;
&lt;li&gt;abandon CAP theorem, embrace CALM theorem &lt;a href="https://speakerdeck.com/jhellerstein/the-calm-theorem-positive-directions-for-distributed-computing?slide=45"&gt;https://speakerdeck.com/jhellerstein/the-calm-theorem-positive-directions-for-distributed-computing?slide=45&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;hypermedia-oriented design (&lt;a href="http://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf"&gt;http://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf&lt;/a&gt;), richardson maturity design model, hypermedia view-based design, hypermedia modeling&lt;/li&gt;
&lt;li&gt;segmented discourse representation theory (sdrt) model &lt;a href="http://homepages.inf.ed.ac.uk/alex/papers/iwcs4.pdf"&gt;http://homepages.inf.ed.ac.uk/alex/papers/iwcs4.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;odrl model &lt;a href="https://www.w3.org/TR/odrl-model/#infoModel"&gt;https://www.w3.org/TR/odrl-model/#infoModel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;wai-aria model &lt;a href="https://www.w3.org/WAI/PF/aria/roles"&gt;https://www.w3.org/WAI/PF/aria/roles&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;rail model &lt;a href="https://web.dev/rail/"&gt;https://web.dev/rail/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;prpl pattern &lt;a href="https://web.dev/apply-instant-loading-with-prpl/"&gt;https://web.dev/apply-instant-loading-with-prpl/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;xdi/rdf/schema.org/etc.&lt;/li&gt;
&lt;li&gt;core/coap &amp;gt; mqtt&lt;/li&gt;
&lt;li&gt;async REST, ARREST, resthooks.org&lt;/li&gt;
&lt;li&gt;microservices: use scale cube (&lt;a href="https://microservices.io/articles/scalecube.html"&gt;https://microservices.io/articles/scalecube.html&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;microservice design canvas (&lt;a href="https://dzone.com/articles/streamlined-microservice-design-in-practice"&gt;https://dzone.com/articles/streamlined-microservice-design-in-practice&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;use YUML (DDDers may enjoy &lt;a href="https://github.com/jaime-olivares/yuml-diagram"&gt;https://github.com/jaime-olivares/yuml-diagram&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;web sequence diagrams &lt;a href="https://www.websequencediagrams.com/"&gt;https://www.websequencediagrams.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;html is a programming language &lt;a href="https://mortoray.com/2019/02/11/of-course-html-is-a-programming-language/?unapproved=107123&amp;amp;moderation-hash=e319816e50ae9ded3fa797491957fe94#comment-107123"&gt;https://mortoray.com/2019/02/11/of-course-html-is-a-programming-language/?unapproved=107123&amp;amp;moderation-hash=e319816e50ae9ded3fa797491957fe94#comment-107123&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;microformats &lt;a href="http://microformats.org/wiki/existing-rel-values"&gt;http://microformats.org/wiki/existing-rel-values&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;link relations &lt;a href="https://www.iana.org/assignments/link-relations/link-relations.xhtml"&gt;https://www.iana.org/assignments/link-relations/link-relations.xhtml&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;json schema tool &lt;a href="https://www.jsonschema.net"&gt;https://www.jsonschema.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;quicktype &lt;a href="https://app.quicktype.io/"&gt;https://app.quicktype.io/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;css selectors &lt;a href="https://frontend30.com/css-selectors-cheatsheet/"&gt;https://frontend30.com/css-selectors-cheatsheet/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;flex help &lt;a href="https://flexbox.help/"&gt;https://flexbox.help/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/niqdev/angular-q-extras"&gt;https://github.com/niqdev/angular-q-extras&lt;/a&gt;
developers may wish to use ionic v4 (v1.3.3?, but install ionic@4 , etc.).&lt;/li&gt;
&lt;li&gt;gist &lt;a href="https://www.semanticarts.com/gist/"&gt;https://www.semanticarts.com/gist/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;bitemporal data &lt;a href="https://en.wikipedia.org/wiki/Bitemporal_Modeling"&gt;https://en.wikipedia.org/wiki/Bitemporal_Modeling&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;cqrs &lt;a href="https://github.com/KABA-CCEAC/angular.CQRS/"&gt;https://github.com/KABA-CCEAC/angular.CQRS/&lt;/a&gt; (&lt;a href="https://itnext.io/1-year-of-event-sourcing-and-cqrs-fb9033ccd1c6"&gt;https://itnext.io/1-year-of-event-sourcing-and-cqrs-fb9033ccd1c6&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;organic-css &lt;a href="http://krasimir.github.io/organic-css/"&gt;http://krasimir.github.io/organic-css/&lt;/a&gt; (use with Atomic BEM)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;figure 1:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uYdp-lFH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/png3k7ptxse4su0am0xx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uYdp-lFH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/png3k7ptxse4su0am0xx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;different roles whose logics imply representational application controls expressible in hypermedia (SVG, etc.)&lt;/p&gt;

</description>
      <category>rest</category>
      <category>hypermedia</category>
      <category>owlviz</category>
      <category>angular</category>
    </item>
  </channel>
</rss>
