<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="376681" data-post-id="376681">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The purpose is efficient derived value management - automatic dependency tracking and selective memoization of computed values during re-renders.</p>
<p>But I think you’re absolutely right that we should think about this differently.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376681" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-376681" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376681"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
    <div class="postbit" id="376684" data-post-id="376684">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>After thinking through this discussion more deeply, I realize it probably makes sense to <strong>take a step back and think about generic composability patterns first</strong>. The reactive patterns we’ve been discussing (derived values, memoization, etc.) would need to work within the constraints of whatever composability architecture we settle on.</p>
<p>React’s hooks are praised precisely because they enable composability – extracting and reusing stateful logic across components. If Hologram is going to have reactive patterns, they should compose just as elegantly (even if the implementation looks different due to Elixir’s functional nature).</p>
<p>I’ve just created a new thread specifically about <a href="https://forum.elixirforum.com/t/composability-patterns-for-hologram-looking-for-your-ideas/73073" rel="nofollow">composability patterns for Hologram</a></p>
<p><a class="mention" href="/u/garrison" rel="nofollow">@garrison</a> <a class="mention" href="/u/jam" rel="nofollow">@jam</a> <a class="mention" href="/u/lucassifoni" rel="nofollow">@Lucassifoni</a> <a class="mention" href="/u/venkatd" rel="nofollow">@venkatd</a> – I’d love to get your input on this broader composability question. The insights you’ve shared here have been incredibly valuable, and I think they’ll be just as relevant to thinking through how actions, state operations, and any eventual reactive patterns should compose together.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376684" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-376684" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376684"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="376688" data-post-id="376688">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t want to beat this topic to death but I wrote a lot of words here without providing any “visual” examples so I just want to rectify that before moving on. I’m intentionally using JS to avoid syntax bikeshedding.</p>
<p>Here is a function written in the “declarative” style:</p>
<pre data-code-wrap="javascript"><code class="lang-javascript">function Dashboard({id}) {
  const user = db.loadUser(id);
  const name = user.first + ' ' + user.last;
  const theme = user.settings.theme || 'light';
  const summary = computeExpensiveSummary(user.subscriptions);

  return &lt;div class={theme}&gt;Hello {name}, your summary: {summary}&lt;/div&gt;;
}
</code></pre>
<p>Note that this is just code. It’s not intended to be any particular framework. This component would be re-run on each “render”, whatever that happens to mean. To make it faster, you might memoize a couple of lines:</p>
<pre data-code-wrap="diff"><code class="lang-diff">- const user = db.loadUser(id);
+ const user = memoize(db.loadUser, [id]);
- const summary = computeExpensiveSummary(user.subscriptions);
+ const summary = memoize(computeExpensiveSummary, [user.subscriptions]);
</code></pre>
<p>Note that memoizing trivial things like the <code>name</code> or <code>theme</code> is probably not worth the overhead. This is why it’s important that memoization is a <em>choice</em>.</p>
<p>Imagine that instead of providing tools like <code>memoize</code> we wrote a framework where you can define a computation graph which handles it automatically:</p>
<pre data-code-wrap="javascript"><code class="lang-javascript">function Dashboard(props) {
  const graph = newGraph(props);
  graph.addNode('user', ({id}) =&gt; { return db.loadUser(id) });
  graph.addNode('name', ({user}) =&gt; { return user.first + ' ' + user.last });
  graph.addNode('theme', ({user}) =&gt; { return user.settings.theme || 'light'});
  graph.addNode('summary', ({user}) =&gt; { return computeExpensiveSummary(user.subscriptions) });

  graph.addTemplate(({theme, name, summary}) =&gt; {
    return &lt;div class={theme}&gt;Hello {name}, your summary is: {summary}&lt;/div&gt;;
  });
  return graph;
}
</code></pre>
<p>I hope it’s clear why React did not opt for an API like this. Perhaps “inexpressive” was a poor choice of words, as I think you could technically make this “graph language” as expressive as React+Hooks. But it’s completely divorced from “actual code” in a way that makes me uncomfortable.</p>
<p>If nothing else at least I’ve finally found a way to describe why I don’t like <code>Ecto.Multi</code> lol</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376688" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-376688" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376688"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="376689" data-post-id="376689">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="derek-zhou" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/120/19943_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  derek-zhou
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="garrison" data-post="34" data-topic="72968">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>If nothing else at least I’ve finally found a way to describe why I don’t like <code>Ecto.Multi</code> lol</p>
</blockquote>
</aside>
<p>I use Ecto.Multi all the time. Yes, it is not as expressive as <code>Repo.tranact/2</code> but it is good enough for simple transactions, like 2~3 database ops. That’s 90% of all my database transactions. And it make potential foot gun impossible.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376689" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-376689" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376689"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="376692" data-post-id="376692">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jam" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jam/120/36266_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jam
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="garrison" data-post="29" data-topic="72968">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>You can do all sorts of cool things at compile time! Just be sure to <a href="https://svelte.dev/blog/runes#Runtime-reactivity" rel="noopener nofollow ugc">mind the graveyard</a>.</p>
</blockquote>
</aside>
<p>Svelte 3 was glorious in terms of ergonomics. IME, it just worked and was a joy to work with.</p>
<p>Regarding the reasons cited for the move to Svelte 5 in that link:</p>
<ol>
<li><strong>Writing svelte code outside of svelte components had a different syntax</strong><br>
This was a little annoying but unless you were writing a library, you’d rarely encounter it.</li>
<li><strong>The compiler couldn’t see dependencies that were moved outside of the <code>$:</code></strong><br>
I never experienced this issue but I could see how this would be annoying, not a dealbreaker imo.</li>
<li><strong>Signals</strong><br>
It seems Rich was heavily influenced, rightly or wrongly, by the performance Solid’s signals achieved. Svelte 3 was plenty fast and already more performant than React but Solid’s benchmarks were certainly much faster. IMO, Svelte lost some of its simplicity and value proposition in this transition but maybe it was the right move. Beyond the performance gains, they do seem to be an excellent pair for sync engines: <a href="https://youtu.be/YQT26cnCKqo?si=JKkfKgokzpK_0gTO" rel="noopener nofollow ugc">https://youtu.be/YQT26cnCKqo?si=JKkfKgokzpK_0gTO</a></li>
</ol>
<p>Bart can correct me if I’m wrong, but I suspect Hologram can avoid <span class="hashtag-raw">#2</span> with macro + call graph. Maybe <span class="hashtag-raw">#1</span> is a non-issue as well with macros. If Hologram’s ultimate vision is to be local-first, then maybe taking a hard look at <span class="hashtag-raw">#3</span> makes sense.</p>
<p>I think React’s approach was fine for its time but the state of the art has moved beyond that. I don’t think it’s a mistake that Solid, Vue, and Svelte have all converged to essentially the same solution with a different syntax.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376692" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-376692" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376692"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="376694" data-post-id="376694">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I will again dodge the JS framework debate because I am only trying to share a perspective here and you should of course use whatever tools make you happy. I do not agree the SOTA has moved beyond React, though.</p>
<aside class="quote no-group" data-username="jam" data-post="36" data-topic="72968">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jam/48/36266_2.png" class="avatar"> jam:</div>
<blockquote>
<p>I don’t think it’s a mistake that Solid, Vue, and Svelte have all converged to essentially the same solution with a different syntax.</p>
</blockquote>
</aside>
<p>Yes, Svelte specifically converged towards runtime and <em>away from compile-time</em>, which was the important bit in context.</p>
<p>But if you feel you had a good experience with Svelte’s compile-time stuff then your perspective is of course appreciated (I have not used Svelte).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376694" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-376694" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376694"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #36"></div>
  </section>
</div>
    <div class="postbit" id="376695" data-post-id="376695">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="venkatd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/venkatd/120/9419_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  venkatd
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I would suggest rephrase as:<br>
”The purpose is reactivity - enabling automatic re-rendering when values change”</p>
<p>I deleted all mentions of implementation details to focus on the ideal API/DX.</p>
<p>(If we talk about memoization and such things in the problem statement, then we we allowing the implementation details to leak into the core design.)</p>
<p>Anyway, just a suggestion <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376695" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-376695" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376695"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="376699" data-post-id="376699">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="derek-zhou" data-post="35" data-topic="72968">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/derek-zhou/48/19943_2.png" class="avatar"> derek-zhou:</div>
<blockquote>
<p>Yes, it is not as expressive as <code>Repo.tranact/2</code> but it is good enough for simple transactions, like 2~3 database ops. That’s 90% of all my database transactions.</p>
</blockquote>
</aside>
<p>I don’t want to derail this into some sort of Ecto discussion (it was just an analogy).</p>
<p>What you may have noticed is that, <em>in general</em>, I am extremely avoidant of solutions that only handle simple cases. The reason, fundamentally, is that I think these solutions push you away from <em>trying</em> to do complex things, and I think that’s a big part of why “software” has become such a sad rigid husk of what it once was.</p>
<p>One little <code>Ecto.Multi</code> here, one little derived property there… no big deal.</p>
<p>But it’s death by a thousand cuts.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376699" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-376699" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376699"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #38"></div>
  </section>
</div>
    <div class="postbit" id="376705" data-post-id="376705">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="jam" data-post="36" data-topic="72968">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jam/48/36266_2.png" class="avatar"> jam:</div>
<blockquote>
<p>Bart can correct me if I’m wrong, but I suspect Hologram can avoid <span class="hashtag-raw">#2</span> with macro + call graph.</p>
</blockquote>
</aside>
<p>It depends on how the API will be designed, but generally, macros combined with a call graph will provide new possibilities in this regard.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376705" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-376705" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376705"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #39"></div>
  </section>
</div>
    <div class="postbit" id="376706" data-post-id="376706">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="venkatd" data-post="38" data-topic="72968" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/venkatd/48/9419_2.png" class="avatar"> venkatd:</div>
<blockquote>
<p>I would suggest rephrase as:<br>
”The purpose is reactivity - enabling automatic re-rendering when values change”</p>
<p>I deleted all mentions of implementation details to focus on the ideal API/DX.</p>
<p>(If we talk about memoization and such things in the problem statement, then we we allowing the implementation details to leak into the core design.)</p>
<p>Anyway, just a suggestion <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I rephrased it to focus on “efficient derived value management” rather than “reactivity” - since Hologram already has component reactivity built-in, what this feature actually adds is smart management of derived values during those re-renders.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376706" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/signals-computed-properties-and-other-reactivity-patterns-in-hologram/72968/41">Post #40</a>
	                </div>
	            </div>
              <div id="likers-container-376706" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376706"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #40"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/72968/load_more?page=5">Load more posts (1 remaining)</a>
</div></template></turbo-stream>