hmn/src/templates/src/fishbowls/simplicity-performance/simplicity-performance.html

4830 lines
210 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="chatlog">
<!-- Emojis by Twitter's Twemoji https://twemoji.twitter.com/ -->
<div class="chatlog__message-group">
<div id="chatlog__message-container-845391778659958854" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="845391778659958854">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><strong>Topic:</strong> The Relationship of Simplicity and Performance</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845391807831736370" class="chatlog__message-container " data-message-id="845391807831736370">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:05 PM">13:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hello everyone! This fishbowl (topic: <a href="https://github.com/AsafGartner/hmn_fishbowl/discussions/30" target="_blank">https://github.com/AsafGartner/hmn_fishbowl/discussions/30</a>) was prompted by a conversation that occurred in the <a class="inserted-after" href="https://dion.systems/" target="_blank">Dion Systems</a> server. The topic arose when discussing the use of standard library containers, data structures, or other APIs, and comparing that with other approaches, like writing your own allocators and data structures.
My argument was that something in, say, a standard library, is not necessarily an ideal version of, say, an <a class="inserted-after" href="https://en.wikipedia.org/wiki/Memory_management" target="_blank">allocator</a> or generic data structure implementation. Such things are often intended to span across a very wide space of use-cases, and are therefore required to be more generic. This introduces cruft and performance problems in use-cases that do not require such genericism. For instance, <a class="inserted-after" href="https://en.wikipedia.org/wiki/Region-based_memory_management" target="_blank">memory arenas</a> versus a traditional <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">malloc</span> and <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">free</span> API. Memory arenas will always allocate faster than <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">malloc</span>, and it isn't because they have had more engineering time poured into optimizing them, but rather because they have a much simpler job to do. In this way, abstractions are, to some degree, coupled with their underlying implementation. I was attempting to use this point to make the case that Handmade is not anti-abstraction, it's anti-trusting-abstractions-without-evidence.
That kicked off the conversation regarding performance vs. simplicity. In this fishbowl I am hoping to discuss with you all a few questions, like "how do we define simplicity?", "what are characteristics of 'simple' code?", and "how does 'simpler' code, in the way that we mean it, perhaps lead to performance advantages?"
So I guess we should start with the definition of 'simple', since that seems like it's overloaded on many fronts.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845391859471351888" class="chatlog__message-container " data-message-id="845391859471351888">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:05 PM">13:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Adding roles now...</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845392219968241714" class="chatlog__message-container " data-message-id="845392219968241714">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><img loading="lazy" class="chatlog__emoji chatlog__emoji--large" alt="👋" title="wave" src="files\twemoji_1f44b.svg"></span>
</div></div>
</div>
</div>
<div id="chatlog__message-container-845392611568255088" class="chatlog__message-container " data-message-id="845392611568255088">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:08 PM">13:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I hope we don't spend the entire time discussing the definition of simplicity <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"> but I do think it's probably good to clear up yeah.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845392662239641651" class="chatlog__message-container " data-message-id="845392662239641651">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right---that alone is a rathole that could last hours <img loading="lazy" class="chatlog__emoji " alt="😄" title="smile" src="files\twemoji_1f604.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845392924208267324" class="chatlog__message-container " data-message-id="845392924208267324">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:09 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">At the very least we have the Rich Hickey "<a class="inserted-after" href="https://www.youtube.com/watch?v=SxdOUGdseq4" target="_blank">Simple Made Easy</a>" definitions, which are that <em>simple</em> means "not entangled", roughly, whereas <em>easy</em> means "close at hand". And those two things are pretty much completely independent.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:43 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845393020815278091" class="chatlog__message-container " data-message-id="845393020815278091">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:10 PM">13:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And because this is HMN, I expect we all broadly have a decent shared understanding of what we mean by "simple".</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:10 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845401148529967115" class="chatlog__message-container " data-message-id="845401148529967115">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs (audience)</span>
<span class="chatlog__timestamp">May 21, 2021 01:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Maybe someone should point out the etymology for <em>complex</em>. I&#39;m at least thinking of these other words: <em>simplex</em>, <em>duplex</em>, <em>complicated</em>. The latter one especially, I think in French <em>plier</em> is to <em>fold</em></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845401275025719307" class="chatlog__message-container " data-message-id="845401275025719307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos (audience)</span>
<span class="chatlog__timestamp">May 21, 2021 01:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah this was hinted at by ben&#39;s comment about the rich hickey definitions, in which he does just that</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845401291026858015" class="chatlog__message-container " data-message-id="845401291026858015">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:42 PM">13:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but it&#39;s worth making it explicit</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845401458048237589" class="chatlog__message-container " data-message-id="845401458048237589">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:43 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah the terminology Hickey uses is &quot;complect&quot;, a word meaning &quot;to entangle&quot; or &quot;to braid together&quot;</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845393258107502633" class="chatlog__message-container " data-message-id="845393258107502633">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I was thinking about this definition of simplicity in anticipation of this conversation, and I do think it makes sense to outline some various ideas of what simplicity means to us. But I am going to propose we explore the way various kinds of simplicity relate to performance. That'll give us more to talk about and we don't have to agree on a single definition to get to good stuff.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845393311174098945" class="chatlog__message-container " data-message-id="845393311174098945">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Sounds good! I'm good with that route.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845393447799226379" class="chatlog__message-container " data-message-id="845393447799226379">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:11 PM">13:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah, I partly think that the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span> or <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simplicity</span> word is overloaded-enough to the point that it can be unhelpful or really muddied. But we often use it as a "hand-wavey" handle to certain ideas that, in my estimation, are more concrete.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845394010445053955" class="chatlog__message-container " data-message-id="845394010445053955">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">My take on it is probably a bit of a "vulgar" way to define <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span>. I think some folks would like simple defined in purely abstract information-theoretic terms. Something you could write proofs or religions about...</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845394475449581588" class="chatlog__message-container " data-message-id="845394475449581588">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:15 PM">13:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To me I just work backwards from the reality that I want good software, and a lot of people who know what they're talking about agree that something called <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span> is relevant, and I arrive at something like this. Something is <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span> when it is easy to work with, easy to implement, easy to use, easy to understand, etc, especially when it also solves a problem that can seem hard without this "something".</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845394704781672540" class="chatlog__message-container " data-message-id="845394704781672540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The last bit might be the most important</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845393855334842418" class="chatlog__message-container " data-message-id="845393855334842418">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos (audience)</span>
<span class="chatlog__timestamp">May 21, 2021 01:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think something similar to the hickey definition, but not quite the same, is &quot;direct&quot;</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845393894417498192" class="chatlog__message-container " data-message-id="845393894417498192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:13 PM">13:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">when you want to do X you do X, not X and several other things as well</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:13 PM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="this">
<img class="chatlog__emoji chatlog__emoji--small" alt="this" src="files/681668525076643858-AD96C.png" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845395354107379774" class="chatlog__message-container " data-message-id="845395354107379774">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:19 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I see, interesting. Yeah one concrete aspect I was going to bring up had to do with <em>number of codepaths</em>, particularly that do non-duplicative and uniform work, and I was hoping on relating that to performance by pointing out the reality that uniform work is easier to predict, easier to optimize than an equivalent <em>large</em> number of codepaths with many concepts muddied.
And I think that ties into <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">easy to implement</span>, because fewer codepaths =&gt; less implementation work. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">easy to use</span>, as fewer interfaces to fewer codepaths =&gt; fewer things to understand. etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845395583329108078" class="chatlog__message-container " data-message-id="845395583329108078">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:20 PM">13:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's not <em>just</em> number of codepaths I am trying to get at, though, and I am not sure if you guys have ideas or if it's not fruitful to rathole on that. But I often think of what I am describing as "orthogonality" of codepaths. When each codepath does one slice of the problem, and can be composed with other codepaths to form all the points you need in the "space of features" that you require for your problem.
In that sense, each codepath is like an axis, and you can build a "point" by composing use of those codepaths, <em>or</em> the lack thereof, e.g. (codepath1, codepath2, 0, codepath4). And of course, all codepaths are parameterized too (or can be).</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:23 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845395943888519200" class="chatlog__message-container " data-message-id="845395943888519200">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content"><span class="chatlog__markdown-pre chatlog__markdown-pre--inline">easy to implement</span>, because fewer codepaths =&gt; less implementation work
</div></div>This is why we have <span class="chatlog__markdown-mention" title="rxi#5759">@rxi</span> here, because one of the things I've noticed is that his code is both what I would consider very simple, and probably as a result, very small (compared to what others, including myself, would probably come up with)</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:23 PM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845396102668615750" class="chatlog__message-container " data-message-id="845396102668615750">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:22 PM">13:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And that's something I'd like to probe into a bit at some point, because the design of e.g. microui goes beyond "solve only the problems you have" into "have fewer problems", somehow</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:31 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845396281609814026" class="chatlog__message-container " data-message-id="845396281609814026">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:23 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right. I think that draws out the line between where I agree with what <span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> said and where I disagree, or at least am a bit weary.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845396514339029013" class="chatlog__message-container " data-message-id="845396514339029013">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:23 PM">13:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Number of codepaths in a literal sense does seems like a useful way to make literal the notion of simplicity to me - that's the part where I'm on board.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845397133854113832" class="chatlog__message-container " data-message-id="845397133854113832">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:26 PM">13:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The analogy to orthogonality makes me more uncomfortable. Because that sounds to me like the mental framework goes: I sit down and identify <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N</span> effects I need to achieve and therefore write the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N</span> simplest codepaths I can think of. But I think that's just the beginning. Overtime it might turn out that fewer codepaths actually could do it all.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845397453134233661" class="chatlog__message-container " data-message-id="845397453134233661">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:27 PM">13:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If the idea is that a program is a set of points we want to bundle together, and our software is made up of some "spanning vectors", and as long as we can get to the points we want we've decomposed the problem, that would be awesome... but the intuition that kicks in seems misleading to me.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845397509702549525" class="chatlog__message-container " data-message-id="845397509702549525">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:27 PM">13:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We don't have a test for "linear independence" between code paths.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845397638064504911" class="chatlog__message-container " data-message-id="845397638064504911">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:28 PM">13:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(This feels only half related now that I finish the thought)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845397992043315242" class="chatlog__message-container " data-message-id="845397992043315242">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:29 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">But I think that's just the beginning. Overtime it might turn out that fewer codepaths actually could do it all.
</div></div>Yeah I agree with this quite strongly (and this exact process happens when I am doing lego-bricked code). I think that is why I like the number of codepaths as some kind of measurement. Because if you implement a <em>smaller number</em> of codepaths that produce the same space of effects, then you've found a <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span>r solution (because there are fewer codepaths, fewer axes, with the same number of points).
Yeah I suppose the reason I don't like "number of codepaths" alone is that it feels like it is missing something. And thinking about it a bit more, I think what that "missing thing" is, is how this intersects with the set of features or properties desired by some software. So for example, if I only have <em>one</em> very specific feature in mind, and I don't want to parameterize it at all, then I just want a function that is like <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">void DoTheThing(void)</span> (or maybe it returns something). And that is the best solution <em>for that particular space of features</em>, right, since anything more would be wasting my time. <em>But</em>, if it turns out that I actually did want to parameterize it, or compose pieces of <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">DoTheThing</span> together, leave some out, etc., then this would not be adequate. I am not sure if that means it's "not simple", though. But I think it <em>does</em> mean that it's not always better to have fewer codepaths, because that could mean coupling of things you don't want coupled.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:30 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845398424224530472" class="chatlog__message-container " data-message-id="845398424224530472">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(52, 152, 219)" title="Allen4th#9584">Allen4th</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '845397133854113832')">
The analogy to orthogonality makes me more uncomfortable. Because that sounds to me like the mental framework goes: I sit down and identify <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N</span> effects I need to achieve and therefore write the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N</span> simplest codepaths I can think of. But I think that's just the beginning. Overtime it might turn out that fewer codepaths actually could do it all. </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">As a concrete example of this, the command list design of microui simplifies drawing down to just a few small primitives, where otherwise you might have to implement custom drawing functions for buttons, windows, scrollbars, etc.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:31 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845398679182770176" class="chatlog__message-container " data-message-id="845398679182770176">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah, actually, on this front, not to get OOP all wrapped up into this, but I think this is one huge problem that I think exists with OOP-style design or architecture, because it <em>assumes</em> the primitives, and gets them from a top-down design style (that is also mixed up with 'modelling the real world', or something that might superficially seem like a 'real world' thing).
That is just an aside though, let's please not start talking about OOP, but I thought it was relevant.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:33 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845398994653544479" class="chatlog__message-container " data-message-id="845398994653544479">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:33 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">But I think it does mean that it's not always better to have fewer codepaths, because that could mean coupling of things you don't want coupled.
</div></div>I have more I want to say about this, but we'd be hashing out the role of simplicity in making good software and a protocol for measuring complexity via codepath count - which is not the topic at hand, so maybe we can put a pin in it for now?</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:34 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845399183850340372" class="chatlog__message-container " data-message-id="845399183850340372">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:34 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah that makes sense, I think this probably gives us a good feeling for the "sub-space" in which we have similar intuitions for simplicity.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845399206398001192" class="chatlog__message-container " data-message-id="845399206398001192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:34 PM">13:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Unless another participant has more to say?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845399346060460080" class="chatlog__message-container " data-message-id="845399346060460080">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:35 PM">13:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If not we can start relating some of these ideas to performance.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845399698561957918" class="chatlog__message-container " data-message-id="845399698561957918">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="rxi#5759">@rxi</span> I'm curious to what end you have "simplicity" in mind as you're designing something (however you define it)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845399727788130334" class="chatlog__message-container " data-message-id="845399727788130334">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e2d8d41642ab506856842f35a14d0182-CDCD1.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(244, 127, 255)" title="rexollycounty#5648" data-user-id="208957354287431682">rexollycounty</span>
<span class="chatlog__timestamp">May 21, 2021 01:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think i am alright with that definition of simplicity, i think much of what i would consider <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span> would be to have the least amount of accidental complexity as possible for the problem (which <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> often mentions). I think few codepaths would be a good measure of that</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845399807539413012" class="chatlog__message-container " data-message-id="845399807539413012">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:37 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm guessing it's not as heavy on the linear algebra as Ryan's thought process, but I could be wrong <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845399919221407776" class="chatlog__message-container " data-message-id="845399919221407776">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:37 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">No, and to clarify, my mental model here is not what I am thinking about <em>as I am programming</em>, but it's rather after-the-fact trying-to-make-sense-of what I am doing. Or trying to digest the lessons that I encounter into a boiled-down form that explains them all.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:38 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845400061697589309" class="chatlog__message-container " data-message-id="845400061697589309">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:38 PM">13:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And for whatever reason, the linear algebra is really intuitive for me when trying to do that <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845400709042274325" class="chatlog__message-container " data-message-id="845400709042274325">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:40 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We can start talking about performance and sprinkle in additional simplicity-defining talk when we need to again, right?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845400814273298443" class="chatlog__message-container " data-message-id="845400814273298443">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 01:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I think that's inevitable, especially if the topic title is accurate and there is indeed a "relationship" between them. We'll have to bounce back and forth (which is fine)</span>
<span class="chatlog__edited-timestamp" title="21-May-21 01:41 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845401141319434290" class="chatlog__message-container " data-message-id="845401141319434290">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I think I first realized all this a while back in a specific <a class="inserted-after" href="http://4coder.net/" target="_blank">4coder</a> problem, thought it might be interesting to break down that problem and show how I made performance worse by being complicated.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
<div class="chatlog__reaction" title="4coder_icon">
<img class="chatlog__emoji chatlog__emoji--small" alt="4coder_icon" src="files/671187514379337738-5679F.png" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845401164085460993" class="chatlog__message-container " data-message-id="845401164085460993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 01:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that sounds very interesting</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845401328415014922" class="chatlog__message-container " data-message-id="845401328415014922">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:43 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The most useful thing I took away from that moment was the irony that it was complicated because I was trying to worry about performance.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845401437697212456" class="chatlog__message-container " data-message-id="845401437697212456">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:43 PM">13:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Alright, one minute to sketch it out...</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="popcorn">
<img class="chatlog__emoji chatlog__emoji--small" alt="🍿" src="files/1f37f-60085.svg" loading="lazy">
<span class="chatlog__reaction-count">4</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845402582242426890" class="chatlog__message-container " data-message-id="845402582242426890">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:48 PM">13:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In 4coder I have contents for a buffer stored in UTF-8. I want to interpret that UTF-8 at least a little bit to get codepoints. I also need to parse that UTF-8 to get tokens. Then when I wanted to add virtual whitespace for the first time, I needed to run a light parser to determine indentation for a few cases, and emit wrap points. Once I had all of that I can render a buffer with virtual whitespace.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845403598263418930" class="chatlog__message-container " data-message-id="845403598263418930">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 01:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The first time I tried to do this, it was simply an accumulation of little layers over time. First it was a loop over ASCII that goes straight to the screen. After a bit it had the ability to wrap, and so the ASCII loop got just a bit more complex for tracking and implementing that. Then it got a bit more complex when tokens were added for syntax highlighting, and the position in the ASCII had to track with a position in a token buffer. Then it got a bit more complex when I was pulling one unicode codepoint from a buffer where I used to just read a single byte of ASCII. Then finally I worked in the parser that is running on that stream of tokens that is tracking with the UTF-8 reader loop and emitting smarter wrap points and indents. -- The point is it was all one big loop trying to avoid any intermediate passes and just pull everything out in one go.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845404030192582685" class="chatlog__message-container " data-message-id="845404030192582685">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:53 PM">13:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The reason I did it that way was partially because it was always the least work thing to do from moment to moment (although my maintenance burden was getting out of control), but also because I thought that making code go fast meant tolerating no slop everywhere. So it was all setup to do exactly the amount of work that was needed to advance the state of the rendering logic across all layers, and no more than that.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845404461479886859" class="chatlog__message-container " data-message-id="845404461479886859">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:55 PM">13:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In later iterations I have broken things down into phases. This means:</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845404575427198996" class="chatlog__message-container " data-message-id="845404575427198996">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:55 PM">13:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">1. Things are simpler, I don't have to track down <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N</span> locations where I might have gotten parse logic wrong, because it's not interleaved with anything else</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845404765717266452" class="chatlog__message-container " data-message-id="845404765717266452">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:56 PM">13:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">2. I can do a better job of optimizing things, because I can actually take advantage of pipelining and wrap my head around something well enough to work on it</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845404968697856020" class="chatlog__message-container " data-message-id="845404968697856020">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 01:57 PM">13:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">3. When I have bugs I can more easily track down which part of my solution first introduced the issue, because I can just examine intermediate values and walk through the code responsible for the first bad intermediate</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-845402722705997904" class="chatlog__message-container " data-message-id="845402722705997904">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">May 21, 2021 01:48 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">hi</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="wave">
<img class="chatlog__emoji chatlog__emoji--small" alt="👋" src="files/1f44b-9E658.svg" loading="lazy">
<span class="chatlog__reaction-count">4</span>
</div>
<div class="chatlog__reaction" title="bread">
<img class="chatlog__emoji chatlog__emoji--small" alt="🍞" src="files/1f35e-E167A.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845405385380593676" class="chatlog__message-container " data-message-id="845405385380593676">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/0-EB806.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="bumbread27#9116" data-user-id="934740907385847858">bumbread</span>
<span class="chatlog__timestamp">May 21, 2021 01:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So it might "seem" like simplicity makes code slow, but what actually happens is that the simplicity help manage and optimize in the future. Maybe it's worth investing in simplicity instead of optimization that may turn out premature</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845406091294801970" class="chatlog__message-container " data-message-id="845406091294801970">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Mhm. I think that is definitely a pre-mature optimization story. I also think it also highlights that doing the simple thing <em>right now</em> might be more work than hacking in one more thing, but it really doesn't take long for you to get to the point where you've spent more on maintenance than you would have on the simple thing.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845406278653050890" class="chatlog__message-container " data-message-id="845406278653050890">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You mentioned that there was a performance issue with how you had it before?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845406317950533652" class="chatlog__message-container " data-message-id="845406317950533652">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:02 PM">14:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Even though there was "no slop"?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845406530084798475" class="chatlog__message-container " data-message-id="845406530084798475">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right. So for one thing it's a pipeline issue.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845406607802105877" class="chatlog__message-container " data-message-id="845406607802105877">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:04 PM">14:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If I do all the UTF-8 to Unicode in one go, I can do smart stuff to get a good ratio on that.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845406865789681714" class="chatlog__message-container " data-message-id="845406865789681714">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:05 PM">14:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Think of pulling one codepoint out at a time, between tracking tokens, tracking a parser state, emitting various channels of output, etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845407168127828019" class="chatlog__message-container " data-message-id="845407168127828019">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:06 PM">14:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The other is that, since the maintenance burden was so high, my iteration time was very slow. In the less tightly wound version I have now a cache was much easier to add without causing bugs. I have no idea if I could have pulled off a cache in the first version. And it turns out a cache does a lot for this problem.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845407390034952192" class="chatlog__message-container " data-message-id="845407390034952192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So in what sense would you consider your new design "simpler" than your previous one? It does have more layers after all <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845407504003498024" class="chatlog__message-container " data-message-id="845407504003498024">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I was going to comment on that. It <em>does</em> seem a lot simpler, but it has a larger number of steps (and maybe that qualifies as a larger number of codepaths?).</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845407651134439466" class="chatlog__message-container " data-message-id="845407651134439466">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There aren't really less layers. For instance in pulling one unicode codepoint out a time, I still needed to abstract that because this wasn't the only place I needed that translation.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845407803798716497" class="chatlog__message-container " data-message-id="845407803798716497">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:08 PM">14:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So the way it got pulled out was a weird set of macros and structs that track the translation state.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845408032023511070" class="chatlog__message-container " data-message-id="845408032023511070">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:09 PM">14:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's "simpler" because if you just accept the idea "we're going to have some slop, first we'll do translation then we'll operate on it" it turns out you can then have a reusable translation that is cranked up to a way higher speed.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845408135089881091" class="chatlog__message-container " data-message-id="845408135089881091">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:10 PM">14:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Instead of having like two or three composable macros you have one function (fewer codepaths).</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845408240267558963" class="chatlog__message-container " data-message-id="845408240267558963">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ahhh okay interesting.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845408790069116968" class="chatlog__message-container " data-message-id="845408790069116968">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:12 PM">14:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I was also going to comment on the caching side. One thing I've noticed is that there is usually not too large of a distance between recompute-everything-on-every-frame or every-call, and a cache. So framing things as "queries", over <em>some</em> mutable state, but not necessarily storing exactly what you need, leads to caching more easily. And, I've often heard the "recompute everything all the time" described as "simpler" than trying to store things, and I have that intuition as well.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845409192675639307" class="chatlog__message-container " data-message-id="845409192675639307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:14 PM">14:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or, it is the kind of code that arises out of saying something like "I don't care about performance here yet, I am just going to do the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">simple</span>st thing and get everything computing properly", and I think it's interesting that there seems to be some connection between this kind of "simple" approach and a path to layering good optimizations over it.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845409350264553513" class="chatlog__message-container " data-message-id="845409350264553513">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:14 PM">14:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And more of an allergy to introducing state that needs to be tracked is also probably a good way to keep the <em>space of possible state permutations</em> smaller, which also feels "simpler" to me in a way.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845409882202177557" class="chatlog__message-container " data-message-id="845409882202177557">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:17 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is all interesting to me because it feels like it goes a bit against the advice that is usually given around these circles.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845409927937916948" class="chatlog__message-container " data-message-id="845409927937916948">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:17 PM">14:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or really, against how people often take that advice.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410136804556851" class="chatlog__message-container " data-message-id="845410136804556851">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:18 PM">14:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Like in your case Allen, it sounds like you were doing exactly the usual Handmade Approved Path™ of just solving a very specific problem very specifically</span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:18 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410313490268210" class="chatlog__message-container " data-message-id="845410313490268210">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:18 PM">14:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">When in fact the best solution <em>still</em> solves a pretty specific problem but in a way that is some ways less specific</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410507593875507" class="chatlog__message-container " data-message-id="845410507593875507">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:19 PM">14:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The ultimate result in your case, though, was less code to maintain, a smaller surface area of your program, fewer "codepaths" whatever that might mean</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410697441312851" class="chatlog__message-container " data-message-id="845410697441312851">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:20 PM">14:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And amusingly to me it feels like your final solution is not that far off a level of "abstraction" that many people might arrive at if they didn't go through the very specific thing first.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410748415082506" class="chatlog__message-container " data-message-id="845410748415082506">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:20 PM">14:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But, your abstraction <em>works</em>, and a naive attempt might not.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410875841577020" class="chatlog__message-container " data-message-id="845410875841577020">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:20 PM">14:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I realize I'm deviating from the topic of performance here <img loading="lazy" class="chatlog__emoji " alt="😬" title="grimacing" src="files\twemoji_1f62c.svg"></span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:21 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845410892715393054" class="chatlog__message-container " data-message-id="845410892715393054">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:21 PM">14:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I need to get back to that</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845410977436532736" class="chatlog__message-container " data-message-id="845410977436532736">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well Allen made a really important point here that I don't want to miss, which is that something that is easier to maintain implies that it requires <em>less time</em> and <em>less effort</em> to maintain, which implies a <em>larger number of iterations</em> and a more manageable set of tasks to layer optimizations into.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="point_up">
<img class="chatlog__emoji chatlog__emoji--small" alt="☝️" src="files/261d-3A498.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845411086756479006" class="chatlog__message-container " data-message-id="845411086756479006">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ah yeah</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845411239127416873" class="chatlog__message-container " data-message-id="845411239127416873">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:22 PM">14:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">on that note, I suppose we could also explore our experience with systems that are <em>hard</em> to get good performance out of</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845411275634114560" class="chatlog__message-container " data-message-id="845411275634114560">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is it. If I can't get anything else across from that story, I would hope this still makes it. Your capacity for handling ever increasing difficult problems is a finite resource.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">4</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845411381293219850" class="chatlog__message-container " data-message-id="845411381293219850">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:23 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We can indeed not expect humans to evolve past our current capabilities for dealing with complexity, at least any time soon! (And there is no obvious reason to suspect that such evolution would occur, at least in my eyes) And we do not <em>already have</em> infinite capabilities there, so clearly there is <em>some limit</em> to the complexity we can manage reasonably well. So the hardest problems are about taking all that we know and compounding it to a simpler set of concepts, so that the "complexity ceiling" is a bit higher from where we start.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:24 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845411871912624128" class="chatlog__message-container " data-message-id="845411871912624128">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">sure, and even something as "simple" as <em>very directly</em> solving a specific problem might be locally more complex and difficult to deal with</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845412365411024949" class="chatlog__message-container " data-message-id="845412365411024949">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I guess my answer to how simplicity and performance can go hand in hand is that both of them are <em>hard earned</em> refinements. Making something simpler without giving up performance isn't easy to accomplish, but if you can do it, you'll give yourself more room in your complexity budget, with the extra room in that budget you might find it's not so hard to get performance somewhere new.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845413428821753927" class="chatlog__message-container " data-message-id="845413428821753927">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '845411239127416873')">
on that note, I suppose we could also explore our experience with systems that are <em>hard</em> to get good performance out of </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Trying to brainstorm about this. Frankly I don't have a whole lot of experience when it comes to this kind of thing, mostly because most of the programming problems I have dealt with in life have been invented by me, so I can conveniently change the constraints, or avoid nasty performance problems more easily.
But let's say you're working with, you know, some <em>file format</em> designed by <em>some people</em> somewhere... hypothetically speaking... in some theoretical scenario. You're now locked into those constraints if you hope to be working with files stored in that format.
The characteristics I think of here have to do with "distance", between some pattern of data extraction, and how that data is stored. Maybe what I am getting at is how much work goes into decompression.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845413600789397566" class="chatlog__message-container " data-message-id="845413600789397566">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well so I could talk directly about laughably slow things at work if we need to <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845413620085948476" class="chatlog__message-container " data-message-id="845413620085948476">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So for instance, let's say some VERY HYPOTHETICAL FILE FORMAT you're dealing with happens to be storing a <em>tree of some kind</em>.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845413753360613437" class="chatlog__message-container " data-message-id="845413753360613437">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And in order to decode, say, the strings at each node in the tree, you have to do more-or-less all of the work required by a <em>full decode</em>.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845413839066890250" class="chatlog__message-container " data-message-id="845413839066890250">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:32 PM">14:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In other words, there's a larger "distance" between the compressed form, and the decompression of <em>just</em> the strings and the hierarchy, but nothing else.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845414004205420605" class="chatlog__message-container " data-message-id="845414004205420605">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:33 PM">14:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That is a lot harder to do something simpler, and therefore something that requires less work and is more performant, because the compressed data was not compressed with this particular use-case in mind, it seems.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845414142142840902" class="chatlog__message-container " data-message-id="845414142142840902">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:33 PM">14:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So now, to get good performance for the problem of "at light speed, decode this file and just do a real quick gather of all the strings and which things they relate to in the tree, so we can do a very quick search over massive files in this format", it's a whole lot more complicated.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845414178856501278" class="chatlog__message-container " data-message-id="845414178856501278">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '845413600789397566')">
Well so I could talk directly about laughably slow things at work if we need to <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"> </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:34 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am interested in this too <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845414411098259467" class="chatlog__message-container " data-message-id="845414411098259467">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:35 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">sure, so in your case there's just a lot of friction in the way of doing a new thing that the designers didn't intend</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845414475402051594" class="chatlog__message-container " data-message-id="845414475402051594">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:35 PM">14:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess what I'd ask, though, is how much of that is because of "simplicity"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845414759711899648" class="chatlog__message-container " data-message-id="845414759711899648">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well, I suppose I was thinking of it as compression. The more you compress, the more distance you add between a given decompression and the compressed data. Compression is also not free, and in that sense is "less simple". It also requires a larger number of codepaths on either side, because it's adding more decompression code.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:39 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845415211422056499" class="chatlog__message-container " data-message-id="845415211422056499">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Unfortunately I don't know enough about HYPOTHETICAL FILE FORMAT to really probe much further</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845415282540675154" class="chatlog__message-container " data-message-id="845415282540675154">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:38 PM">14:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(Ryan and Allen work at <a class="inserted-after" href="http://www.radgametools.com/" target="_blank">RAD</a> on the new debugger, so you can imagine what we're talking about)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845415320356782080" class="chatlog__message-container " data-message-id="845415320356782080">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am personally referring to <a class="inserted-after" href="https://en.wikipedia.org/wiki/DWARF" target="_blank">DWARF</a>, yes</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845415536573284403" class="chatlog__message-container " data-message-id="845415536573284403">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:39 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A part of what makes this an interesting example would start with picking apart how data pipelines influence performance.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845415662528757790" class="chatlog__message-container " data-message-id="845415662528757790">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:40 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">sure, sounds interesting</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845415951453257729" class="chatlog__message-container " data-message-id="845415951453257729">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'll give the quick outline, but here's the additional reading if you really want to understand: <a href="https://fgiesen.wordpress.com/2018/03/05/a-whirlwind-introduction-to-dataflow-graphs/" target="_blank">https://fgiesen.wordpress.com/2018/03/05/a-whirlwind-introduction-to-dataflow-graphs/</a></span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845416273289805846" class="chatlog__message-container " data-message-id="845416273289805846">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:42 PM">14:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The performance issue with DWARF is that it packs things together in such a way that the only way to "discover" things is by fully unpacking everything in sequence.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845416371097436160" class="chatlog__message-container " data-message-id="845416371097436160">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:42 PM">14:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's like if you store things in a linked list.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845416448477495327" class="chatlog__message-container " data-message-id="845416448477495327">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:43 PM">14:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">With a linked list you can't start doing work on node <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N</span> until you've discovered node <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">N - 1</span></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845416555452825700" class="chatlog__message-container " data-message-id="845416555452825700">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:43 PM">14:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">With DWARF it's not links you need, but sizes of information that is only determined by decoding the compressed representation that <span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> was talking about.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845416872475099186" class="chatlog__message-container " data-message-id="845416872475099186">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:44 PM">14:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Either way the concept here is that there is some work which is not negligible to do, and it not only "blocks" you from getting the info for this element, but it also "blocks" you from discovering the next element.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845416954503626803" class="chatlog__message-container " data-message-id="845416954503626803">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:45 PM">14:45</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Therefore the only way to find "all strings" as Ryan was saying is to do all of the work.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845417189103239178" class="chatlog__message-container " data-message-id="845417189103239178">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:46 PM">14:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's the performance issue. Is this lack of simplicity? I haven't thought about that as much. You could certainly reduce the number of cases you have to unpack in DWARF and make it simpler, but it would still have this problem.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845417314459582515" class="chatlog__message-container " data-message-id="845417314459582515">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:46 PM">14:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But what is pretty clear I think, is that you could get that performance back without increasing the complexity.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845417415227473930" class="chatlog__message-container " data-message-id="845417415227473930">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:46 PM">14:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So it is at least another example that <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Complexity + RunningTime</span> is not a conserved quantity. There are win-wins.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:48 PM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845418355439566858" class="chatlog__message-container " data-message-id="845418355439566858">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am not exactly sure right now how "coupling" relates to all of this, but I've found myself thinking about it as well (when describing how codepaths can be orthogonal, and how that relates to expected sets of features). What is sort of interesting is how, by having a dependency between one full task and another full task, is that you introduce a "dependency", or... "couple?" those two tasks.
So, in one use case, you actually <em>are</em> decoding everything. And the coupling for that is probably fine (although for pipelining reasons you are still pessimized to a degree). But in another, when you <em>aren't</em>, the "coupling" or "dependency chain" hurts you more, and ideally things were broken down further into more "orthogonal pieces". For example, <em>one way</em> of encoding hierarchies + strings, <em>plus</em> another layer of describing the rest of the "full information" of each node for instance (and maybe each "header" has a pointer into here), within this example.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:51 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845418919250362368" class="chatlog__message-container " data-message-id="845418919250362368">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:52 PM">14:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That matters a lot less if you are <em>just</em> doing a full-parse, but if you want the task of getting a "breadth-first-scan" of everything to be in the "space of features you'd like", then ideally you have another "orthogonal codepath" that can be used for "header information". I don't know if that makes any sense, I am still trying to grapple with this!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845419378765463572" class="chatlog__message-container " data-message-id="845419378765463572">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 02:54 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">See, I wouldn't take it that way. And this is where I think orthogonality isn't doing you any favors. Doing more shouldn't mean more code paths <em>by default</em>.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 02:56 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845419627345346630" class="chatlog__message-container " data-message-id="845419627345346630">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:55 PM">14:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In this case, the thing that would solve the scan would also accelerate the full parse in one system.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845419831443849216" class="chatlog__message-container " data-message-id="845419831443849216">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:56 PM">14:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The problem is you'd have to be willing to shake up the whole DWARF thing, and end up with something incompatible. A quick fix couldn't do both.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845420071970668575" class="chatlog__message-container " data-message-id="845420071970668575">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 02:57 PM">14:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(Take all of the claims about DWARF that I make with an implicit "as far as I know")</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420386417246248" class="chatlog__message-container " data-message-id="845420386417246248">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well, when I say "another orthogonal codepath", I also mean subtracting from the existing codepath, and the full thing being a composition of both of them. So right now, you have one codepath that is like:
<span class="chatlog__markdown-pre chatlog__markdown-pre--inline">unparsed file -- (full parse) --&gt; decoded info</span>
And, for instance, with an acceleration layer on top, you "decouple" certain pieces from <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">(full parse)</span>, with the full parse being now a composition of <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">(header parse) -&gt; (rest of info parse)</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420462938521621" class="chatlog__message-container " data-message-id="845420462938521621">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 02:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think I am getting lost in the mines of moria, as it were</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420513458651186" class="chatlog__message-container " data-message-id="845420513458651186">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But what that means is that you can stop short of <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">(rest of info)</span>.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420540319236138" class="chatlog__message-container " data-message-id="845420540319236138">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '845420462938521621')">
I think I am getting lost in the mines of moria, as it were </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 02:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah maybe this is too in the weeds :P</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420748918489099" class="chatlog__message-container " data-message-id="845420748918489099">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 03:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I think this is probably a bit out there. Hard to talk concretely about DWARF without first spending a really long time on the introduction to the problems.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420837431410729" class="chatlog__message-container " data-message-id="845420837431410729">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It sounds to me, though, like the complexity of DWARF and your specific performance issues with it aren't actually too closely related</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845420967865352203" class="chatlog__message-container " data-message-id="845420967865352203">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:01 PM">15:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">at least not if Allen thinks that you could get performance gains without really changing how "simple" the thing is</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845420969346859008" class="chatlog__message-container " data-message-id="845420969346859008">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(52, 152, 219)" title="Allen4th#9584">Allen4th</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '845420748918489099')">
Yeah I think this is probably a bit out there. Hard to talk concretely about DWARF without first spending a really long time on the introduction to the problems. </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah, probably not the best example, I just brought it up because that is the most notable example I've had of "systems that seem complicated that have performance problems", and I was trying to brainstorm. All of my personal programming work has not really dealt with this nearly as much.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:01 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845421071863906304" class="chatlog__message-container " data-message-id="845421071863906304">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 03:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What I mean to say is that you don't have to increase complexity to get performance gains.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845421320422424577" class="chatlog__message-container " data-message-id="845421320422424577">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:02 PM">15:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You could sort of just shuffle the complexity around add some take some away. But I think this statement raises an interesting general point:
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">the complexity of DWARF and your specific performance issues with it aren't actually too closely related</div></div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845421622071525387" class="chatlog__message-container " data-message-id="845421622071525387">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:03 PM">15:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's hard for me to put my finger on exactly the issue, but it's something like "arguing from lack of imagination" (not meant as an insult)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422025983393852" class="chatlog__message-container " data-message-id="845422025983393852">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:05 PM">15:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What I'm trying to get at is that if there is a relationship between these, we wouldn't necessarily see it now.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422143642402827" class="chatlog__message-container " data-message-id="845422143642402827">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:05 PM">15:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We would tend to understand it in light of a newer simpler format that completely sidesteps the performance problem.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845422158851211295" class="chatlog__message-container " data-message-id="845422158851211295">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">sure, I can't say for sure that they are <em>unrelated</em></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422249761833042" class="chatlog__message-container " data-message-id="845422249761833042">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:06 PM">15:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but at least for now it's hard to say if they are</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422276077158480" class="chatlog__message-container " data-message-id="845422276077158480">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:06 PM">15:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">here's the sort of question I have in mind though</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845422294766977085" class="chatlog__message-container " data-message-id="845422294766977085">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">May 21, 2021 03:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Agreed.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845422452888436736" class="chatlog__message-container " data-message-id="845422452888436736">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I agree. Sorry to derail it with that, I was just searching my head for problems that might be related.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845422531070394438" class="chatlog__message-container " data-message-id="845422531070394438">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The question: For whatever problem you're working on, what is stopping you from making it more performant?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422630316146769" class="chatlog__message-container " data-message-id="845422630316146769">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:07 PM">15:07</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you can tell that extra work is being done, what is stopping you from changing that</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422747064467456" class="chatlog__message-container " data-message-id="845422747064467456">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:08 PM">15:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">maybe in the DWARF case the answer is "the format isn't well-designed for my use case", and that's maybe related to simplicity, maybe not</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845422833970446396" class="chatlog__message-container " data-message-id="845422833970446396">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:08 PM">15:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can tell you though that for some of what I've had to deal with, it's <em>very</em> related to simplicity</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845423263744000041" class="chatlog__message-container " data-message-id="845423263744000041">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is why I think "orthogonality" and "coupling" are actually important. If there is only one "axis" that produces some set of features, then if you wanted a subset of those features produced by a subset of that "code axis", you're out of luck. But if the format was designed with a few orthogonal pieces of information (requiring a few orthogonal codepaths), you can go along each "axis" independently, thus avoiding work implied by traversing along the other axes. <em>And</em>, you can still get to the full thing, by traversing all N orthogonal axes (whereas in the 1-axis case, that is the only possible path).</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:12 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845423280386867200" class="chatlog__message-container " data-message-id="845423280386867200">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:10 PM">15:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But I will set that aside</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:10 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845423312770301993" class="chatlog__message-container " data-message-id="845423312770301993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '845422833970446396')">
I can tell you though that for some of what I've had to deal with, it's <em>very</em> related to simplicity </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am interested to hear more on this</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845423462171410492" class="chatlog__message-container " data-message-id="845423462171410492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Really it just goes back to what Allen was talking about in his 4coder example</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845423527418789939" class="chatlog__message-container " data-message-id="845423527418789939">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:11 PM">15:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">how difficult is it to a) conceptualize the problem, and b) actually apply a change</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845423951999270922" class="chatlog__message-container " data-message-id="845423951999270922">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:12 PM">15:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So if I find that something is slow, it might be hard to even find out what is going on (often the case in larger codebases made by many people over time, and especially in heavily OOP stuff (although I don't think OOP is <em>exactly</em> to blame))</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845424111182020669" class="chatlog__message-container " data-message-id="845424111182020669">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:13 PM">15:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But even when I do know what is going on, it might be really difficult to actually change something, either because it's <em>huge</em>, or because it's hard to change things without breaking unrelated things.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845424173432963092" class="chatlog__message-container " data-message-id="845424173432963092">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:13 PM">15:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And both of these are issues of complexity.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845424374336979006" class="chatlog__message-container " data-message-id="845424374336979006">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Okay I know I said I'd set this aside, and I promise to stop, but <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">hard to change things without breaking unrelated things</span> sounds like N things that are not orthogonal!</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845424425981706260" class="chatlog__message-container " data-message-id="845424425981706260">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:14 PM">15:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(Okay <em>now</em> I am done, continue)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845424699978416159" class="chatlog__message-container " data-message-id="845424699978416159">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well in this case it's more like "hey let's just reuse this function because it seems convenient"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845424750225784882" class="chatlog__message-container " data-message-id="845424750225784882">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:16 PM">15:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"oops I guess our use case is <em>kinda</em> different let's just special-case it"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845424752642359346" class="chatlog__message-container " data-message-id="845424752642359346">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:16 PM">15:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">etc.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845424957101441086" class="chatlog__message-container " data-message-id="845424957101441086">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It reminds me a lot of Casey's lecture he gave recently about the grass planting algorithm in The Witness, did you guys see that lecture? I don't think he uploaded it anywhere, unfortunately...</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:17 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845424990153080852" class="chatlog__message-container " data-message-id="845424990153080852">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:17 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But as in the case Allen talked about, there's value to reusing things, especially from a maintenance perspective. I've just been going through the app adding a new permissions check to <em>basically everything</em> because it wasn't well-centralized before.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845425035724193794" class="chatlog__message-container " data-message-id="845425035724193794">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:17 PM">15:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Nope, didn't see it unfortunately</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845425159116554292" class="chatlog__message-container " data-message-id="845425159116554292">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:17 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well, I'll give (my recollection of) the gist of what he was getting at.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845425616571727902" class="chatlog__message-container " data-message-id="845425616571727902">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:19 PM">15:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The high level problem was that grass planting was taking a really long time, it took something like 30 seconds to place a "plant radius" (or whatever) and have the grass fully planted. And one of the big performance problems, I guess, was actually the <em>raycasting</em>, which was being used to project a ray from something in the up-direction onto the ground, so that it was easy to find out which up-axis position each grass thing needed to be planted at.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845425875965050950" class="chatlog__message-container " data-message-id="845425875965050950">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:20 PM">15:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And digging into what was happening in that raycast function, it was a very generic codepath that did things like gather the list of entities (allocation) that could possibly be hit, test the ray against all of them, etc. etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845425982277025882" class="chatlog__message-container " data-message-id="845425982277025882">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:21 PM">15:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And the way to make this fast for the problem at hand (grass planting) required decoupling a few of the pieces that made up the generic raycast.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845426463615614976" class="chatlog__message-container " data-message-id="845426463615614976">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:22 PM">15:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So at first it was like:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-c hljs cpp"><span class="hljs-comment">// Z is up/down</span>
<span class="hljs-keyword">for</span> each planting X/Y position in <span class="hljs-keyword">this</span> square
{
get ray from -up- <span class="hljs-function">to the ground
<span class="hljs-title">Array</span><span class="hljs-params">(Entity)</span> entities </span>= <span class="hljs-function">find all entities that could possibly be <span class="hljs-title">hit</span> <span class="hljs-params">(broad phase)</span>
<span class="hljs-keyword">for</span> each entity in entities
</span>{
<span class="hljs-function">test ray against <span class="hljs-title">entity</span> <span class="hljs-params">(narrow phase)</span>
<span class="hljs-keyword">if</span> hit
</span>{
<span class="hljs-built_in">set</span> planting Z as the ray endpoint's Z
<span class="hljs-keyword">break</span>;
}
}
}</div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845426823588216862" class="chatlog__message-container " data-message-id="845426823588216862">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:24 PM">15:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But you can actually shift a bunch of work out of this loop, and have it only occur once---notably, finding the set of entities that can be intersected with. You aren't just casting a bunch of generic rays, you're actually casting a very specific set of rays, in one direction, against a uniform set of entities, in one particular place in the world, and you don't even necessarily want to care about all possible entities. Maybe you just want to care about the ground entities, or something like that.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:24 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845427116476071977" class="chatlog__message-container " data-message-id="845427116476071977">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:25 PM">15:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I think this is sort of a similar example of <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">hey let's just reuse this function because it seems convenient</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845427290623311952" class="chatlog__message-container " data-message-id="845427290623311952">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah, sure</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845427493305319444" class="chatlog__message-container " data-message-id="845427493305319444">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:27 PM">15:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's pretty easy to keep in your head though, and easy to directly make a change to. Pretty simple overall.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845427768215863306" class="chatlog__message-container " data-message-id="845427768215863306">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(Well, the actual code that was really being hit originally was not very simple, there was a ton of stuff happening across several different codepaths, I am boiling it down quite a bit, from my recollection... But <em>in effect</em> the boiled down loop version is where the performance issue lies, and it required collapsing everything to notice)</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:28 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845427815632863262" class="chatlog__message-container " data-message-id="845427815632863262">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Even so, it's <em>direct</em>, to use Demetri's term</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845428443163918386" class="chatlog__message-container " data-message-id="845428443163918386">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:30 PM">15:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What so often ends up happening at work, and I think elsewhere, is that there are many layers involved in the implementation, and each has their own constraints and expectations, and they just don't play well with each other</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845428507219591171" class="chatlog__message-container " data-message-id="845428507219591171">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:31 PM">15:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it's hard to bypass these layers (and doing so incurs a maintenance penalty down the line)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845428623027601448" class="chatlog__message-container " data-message-id="845428623027601448">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:31 PM">15:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it's hard to change what the layers expect or how many layers there are (because they're used <em>everywhere</em>)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429081772130314" class="chatlog__message-container " data-message-id="845429081772130314">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:33 PM">15:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and maybe each layer seems mostly fine in isolation (here's your <a class="inserted-after" href="https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping" target="_blank">ORM</a>, and here's your models that expect to use the ORM features, and here's your "services" that expect access to all the models, and here's your "controllers" that expect all the services, etc.)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429188902912011" class="chatlog__message-container " data-message-id="845429188902912011">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:33 PM">15:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">a lot of the time performance problems arise at the boundaries, or sometimes just <em>because</em> of the boundaries</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429343512428594" class="chatlog__message-container " data-message-id="845429343512428594">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:34 PM">15:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">maybe you need to fetch way more from the database than you need, because the next layer up can't handle missing data</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429499020574760" class="chatlog__message-container " data-message-id="845429499020574760">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:34 PM">15:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or maybe you have a diamond problem where something at the "service" layer can't get optimizations from lower down because they have to go through two different models along the way.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429660673638420" class="chatlog__message-container " data-message-id="845429660673638420">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:35 PM">15:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Even so, I'm not sure I would say this is <em>because</em> of the complexity; you could write equally wasteful stuff very directly.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429695012405279" class="chatlog__message-container " data-message-id="845429695012405279">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:35 PM">15:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But the complexity is what makes it hard to fix.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845429928585461792" class="chatlog__message-container " data-message-id="845429928585461792">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:36 PM">15:36</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So that's kind of my whole thesis on the issue. I don't think simplicity and performance are directly related much at all. But I think simplicity is <em>critical</em> if you want to actually have any hope of addressing performance problems.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:36 PM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845430301274538024" class="chatlog__message-container " data-message-id="845430301274538024">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah that all makes sense, and I agree with the thesis to a degree, although I think what I would say is that simplicity can often impact constraints (by removing some, for example), and fewer constraints can mean more performant code.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845430445977239573" class="chatlog__message-container " data-message-id="845430445977239573">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:38 PM">15:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For example, the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">malloc</span> and <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">free</span> vs. memory arenas question.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845430597459509279" class="chatlog__message-container " data-message-id="845430597459509279">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:39 PM">15:39</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The issue here, in my estimation, is what I mentioned in <span class="chatlog__markdown-mention">#fishbowl-audience</span>, which is basically that "simplicity" is a bundle of things and not really that helpful of a word frankly, so it doesn't make a lot of sense to me to say it is or is not related---but rather that the relationship is complicated, because it's comprised of many pieces.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845431202001584138" class="chatlog__message-container " data-message-id="845431202001584138">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:41 PM">15:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">On the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">malloc</span>/<span class="chatlog__markdown-pre chatlog__markdown-pre--inline">free</span> vs. arenas question, I think the "simple" part of arenas is that which removes constraints, and this is reflected in an API for an arena, and the implementation. The implementation can be super small before it is useful (and in my experience, remains nearly trivial). Usage of an arena is also simple, where you just push things onto it, and this is because the constraint of "the user must be able to free anything they have allocated individually", which is present in the design of <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">malloc</span> and <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">free</span>, has been removed.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-845431527730577408" class="chatlog__message-container " data-message-id="845431527730577408">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="21-May-21 03:43 PM">15:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And in that sense, the problem statement is simpler because there are fewer constraints, which leads to the implementation being simpler, which leads to the API being simpler, which ultimately means less work happening, which ultimately means better performance.</span>
<span class="chatlog__edited-timestamp" title="21-May-21 03:43 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845432257841201152" class="chatlog__message-container " data-message-id="845432257841201152">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:45 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(discussion is happening in <span class="chatlog__markdown-mention">#fishbowl-audience</span>: <a href="https://discord.com/channels/239737791225790464/708458209131757598/845431499792318565" target="_blank">https://discord.com/channels/239737791225790464/708458209131757598/845431499792318565</a>)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845434049467121714" class="chatlog__message-container " data-message-id="845434049467121714">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Alright looks like we've about exhausted <span class="chatlog__markdown-mention">#fishbowl</span> talk, maybe time to digest the conversation! Thanks everyone for participating, was really interesting. <img loading="lazy" class="chatlog__emoji " alt="👋" title="wave" src="files\twemoji_1f44b.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845434132591149097" class="chatlog__message-container " data-message-id="845434132591149097">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">May 21, 2021 03:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah this was really good to dig into!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-845434702709653514" class="chatlog__message-container " data-message-id="845434702709653514">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">May 21, 2021 03:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><strong>[End of Fishbowl]</strong>
The beginning of this conversation has been pinned, so if you'd like to read it from the start, go there! See you next time.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="wave">
<img class="chatlog__emoji chatlog__emoji--small" alt="👋" src="files/1f44b-9E658.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>