<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://f1x4ska.catchmedia.com/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>f1xska - f1x:archtecture</title>
        <description></description>
        <link>https://f1x4ska.catchmedia.com/</link>
        <lastBuildDate>Thu, 14 May 2026 13:43:15 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://f1x4ska.catchmedia.com/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>f1xska</title>
            <link>https://f1x4ska.catchmedia.com/</link>
        </image>
        <item>
            <title>attraction-proximity</title>
            <link>https://f1x4ska.catchmedia.com/doku.php?id=f1x:archtecture:attraction-proximity&amp;rev=1740086702&amp;do=diff</link>
            <description>&lt;table&gt;&lt;tr&gt;&lt;th colspan=&quot;2&quot; width=&quot;50%&quot;&gt;2025/02/20 06:12&lt;/th&gt;&lt;th colspan=&quot;2&quot; width=&quot;50%&quot;&gt;current&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 1:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;====== Attraction/proximity ======&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;====== Attraction/proximity ======&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;To discover objects of same kind &amp;quot;attraction/proximity&amp;quot; mechanism is used. It is based on special &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;Subscription&lt;/strong&gt;&amp;quot; object providing method &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;attractor&lt;/strong&gt;&amp;quot; that results in multidimension KV list defining &amp;quot;attractor hash key&amp;quot; (AHK). The key is used by Router to route the object to Matcher node using DHT-like scheme. It sits there until its TTL expires (future: when its resource limit is exhausted).&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;To discover objects of same kind &amp;quot;attraction/proximity&amp;quot; mechanism is used. It is based on special &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;Attraction&lt;/strong&gt;&amp;quot; object providing method &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;get_ahk&lt;/strong&gt;&amp;quot; that results in multidimension KV list defining &amp;quot;attractor hash key&amp;quot; (AHK). The key is used by Router to route the object to Matcher node using DHT-like scheme. It sits there until its TTL expires (future: when its resource limit is exhausted).&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;Published Data Objects might provide &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;attractor&lt;/strong&gt;&amp;quot; method. In this case Router forwards the objects to relevant Matcher.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;Published Data Objects might provide &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;get_ahk&lt;/strong&gt;&amp;quot; method. In this case Router forwards the objects to relevant Matcher.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;The Matcher is likely to have many&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Subscription and&amp;#160;&lt;/strong&gt;Data objects with the same AHK and needs a way to rank and filter results.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;The Matcher is likely to have many Data objects with the same AHK and needs a way to rank and filter results&lt;strong class=&quot;diff-mark&quot;&gt;, based on voluntary fields&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;The Matcher uses method &amp;quot;proximity&amp;quot;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;on Subscription&amp;#160;&lt;/strong&gt;object on each matching object to find proximity score. This and amount of &amp;quot;matching&amp;quot; objects define amount of references to objects to be sent to Attration initiator.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;The Matcher uses method &amp;quot;proximity&amp;quot;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;of Attraction&amp;#160;&lt;/strong&gt;object on each matching&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Data&amp;#160;&lt;/strong&gt;object to find proximity score. This and amount of &amp;quot;matching&amp;quot; objects define amount of references to objects to be sent to Attration initiator.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;Sample flow for case &amp;quot;Need to find nearby female babysitter not younger than 13 tonight, with budget of 20 nis per hour. Minimum 4 hours&amp;quot;:&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;Sample flow for case &amp;quot;Need to find nearby female babysitter not younger than 13 tonight, with budget of 20 nis per hour. Minimum 4 hours&amp;quot;:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&amp;#160; - A&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;parent&amp;#160;&lt;/strong&gt;creates Object of kind&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Subscription&amp;#160;&lt;/strong&gt;with objects filter &amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;Need:&lt;/strong&gt;BabySitter&amp;quot; with&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;fields:&amp;#160;&lt;/strong&gt;gender,&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;geolocation. Other optional fields&amp;#160;&lt;/strong&gt;&amp;quot;min age&amp;quot;, &amp;quot;max age&amp;quot;, availability hours and budget per hour might&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;also be specified&lt;/strong&gt;. The object has reference to object&lt;strong class=&quot;diff-mark&quot;&gt;-&amp;gt;&lt;/strong&gt;method that is to be called on each match - likely notifications generator. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160; - A&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Parent&amp;#160;&lt;/strong&gt;creates Object of kind&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Attractor&amp;#160;&lt;/strong&gt;with objects filter &amp;quot;BabySitter&amp;quot; with&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;mandatory (geolocation) and voluntary (&lt;/strong&gt;gender, &amp;quot;min age&amp;quot;, &amp;quot;max age&amp;quot;, availability hours and budget per hour might&lt;strong class=&quot;diff-mark&quot;&gt;) fields&lt;/strong&gt;.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;\\&amp;#160; \\&amp;#160;&lt;/strong&gt;The&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Attractor&amp;#160;&lt;/strong&gt;object has reference to object&lt;strong class=&quot;diff-mark&quot;&gt;→&lt;/strong&gt;method that is to be called on each match - likely notifications generator.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;The object is at work in three places: \\&amp;#160; &amp;#160; &amp;#160; &amp;#160;- At Matcher node, that handles the AHK. The node forwards top 10 matching objects (in order of proximity) to realm of the Attractor object through its Router. \\ &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&amp;#160; - The Object is exported and hits Router, that&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;calculates hash Person-Gender-Geo and forwards&amp;#160;&lt;/strong&gt;it to Matcher node&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;using DHT lookup&lt;/strong&gt;. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; &amp;#160; &amp;#160; - At Router node, that acts on behalf of the realm - here it forwards matching objects to Realm node \\ &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&amp;#160; - A girl&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;creates&amp;#160;&lt;/strong&gt;Object of kind&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;DHT and object&amp;#160;&lt;/strong&gt;&amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;Candidate:&lt;/strong&gt;BabySitter&amp;quot; with fields: gender, geolocation.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Other optional&amp;#160;&lt;/strong&gt;fields age, availability hours and minimum payment per hour&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;might also be specified&lt;/strong&gt;. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; &amp;#160; &amp;#160; - At Realm node itself - here the callback is called for each matching object \\&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&amp;#160; - The Object is exported and hits Router, that&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;calculates hash Person-Gender-Geo and forwards it&amp;#160;&lt;/strong&gt;to Matcher node&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;using DHT lookup&lt;/strong&gt;. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160; - The&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Attractor&amp;#160;&lt;/strong&gt;Object is exported and hits Router, that&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;uses method &amp;quot;get_ahk&amp;quot; to get AHK. The object is then forwarded&amp;#160;&lt;/strong&gt;it to&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;corresponding&amp;#160;&lt;/strong&gt;Matcher node.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;\\&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&amp;#160; - Matcher node&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;matches&amp;#160;&lt;/strong&gt;Attractor and matching objects, uses &amp;quot;proximity&amp;quot; method to create list of candidates, ordered by proximity score, to be sent back to&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;User&amp;#160;&lt;/strong&gt;(via his Router node). &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160; - A girl&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;publishes&amp;#160;&lt;/strong&gt;Object of kind &amp;quot;BabySitter&amp;quot; with&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;AHK&amp;#160;&lt;/strong&gt;fields: gender, geolocation.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Voluntary&amp;#160;&lt;/strong&gt;fields&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;are&amp;#160;&lt;/strong&gt;age, availability hours and minimum payment per hour.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;\\&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&amp;#160; - Once on&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;User&lt;/strong&gt;&amp;#039;s node,&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;method&amp;#160;&lt;/strong&gt;&amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;MatchFound&lt;/strong&gt;&amp;quot; is called&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;with array of candidate objects&lt;/strong&gt;. It might&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;then&amp;#160;&lt;/strong&gt;create results popup notification or show results.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160; - The Object is exported and hits&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;her&amp;#160;&lt;/strong&gt;Router, that&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;uses &amp;quot;get_ahk&amp;quot;&amp;#160;&lt;/strong&gt;to&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;find appropriate&amp;#160;&lt;/strong&gt;Matcher node.&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;\\&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160; - Matcher node&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;sees&amp;#160;&lt;/strong&gt;Attractor and matching&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;BabySitter&amp;#160;&lt;/strong&gt;objects, uses &amp;quot;proximity&amp;quot; method to create list of candidates, ordered by proximity score, to be sent back to&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;the Parent&amp;#039;s realm&amp;#160;&lt;/strong&gt;(via his Router node).&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;\\&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160; - Once on&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;Parent&lt;/strong&gt;&amp;#039;s node,&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;the&amp;#160;&lt;/strong&gt;&amp;quot;&lt;strong class=&quot;diff-mark&quot;&gt;Found&lt;/strong&gt;&amp;quot;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;callback method&amp;#160;&lt;/strong&gt;is called. It might&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;get list of &amp;quot;Visible&amp;quot; candidate objects and decide what to do about them (&lt;/strong&gt;create results popup notification or show results&lt;strong class=&quot;diff-mark&quot;&gt;)&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 20 Feb 2025 21:25:02 +0000</pubDate>
        </item>
    </channel>
</rss>
