<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Alex</title>
 <link href="https://aleksandar-b.github.io/blog/atom.xml" rel="self"/>
 <link href="https://aleksandar-b.github.io/blog/"/>
 <updated>2026-04-12T12:23:05+00:00</updated>
 <id>https://aleksandar-b.github.io/blog</id>
 <author>
   <name>Alex</name>
 </author>
 
 
   
   <entry>
     <title>Plato and Software Engineering</title>
     <link href="https://aleksandar-b.github.io/blog/posts/plato-and-software-engineering"/>
     <updated>2026-04-12T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/plato-and-software-engineering</id>
     <content type="html">&lt;p&gt;The quote in question is from &lt;strong&gt;Timaeus&lt;/strong&gt;, which is often used to describe Plato’s Forms and particulars:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“What is that which always is and has no becoming; and what is that which is always becoming and never is?”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The correct translation should read:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“What is that which always is &lt;strong&gt;(in the same state)&lt;/strong&gt; and has no becoming &lt;strong&gt;(and perishing)&lt;/strong&gt;, and what is that which is always becoming &lt;strong&gt;(and perishing)&lt;/strong&gt; &lt;del&gt;but&lt;/del&gt; &lt;strong&gt;(and)&lt;/strong&gt; never is &lt;strong&gt;(in the same state)&lt;/strong&gt;”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You could see this is correct translation because in the very next sentence he elaborates:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;That which is apprehended by intelligence and reason &lt;strong&gt;is always in the same state&lt;/strong&gt;; but that which is conceived by opinion with the help of sensation and without reason, is always in a process of &lt;strong&gt;becoming and perishing&lt;/strong&gt; and never really is.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He also repeats this distinction in several other books, but with different wordings.&lt;/p&gt;

&lt;p&gt;Exact distinction exists in software modeling as Value objects vs Entities objects in Domain Driven Design.&lt;/p&gt;

&lt;p&gt;Where Entities:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;have &lt;strong&gt;lifecycle&lt;/strong&gt; (can be created and deleted or &lt;strong&gt;become and perish&lt;/strong&gt;)&lt;/li&gt;
  &lt;li&gt;can be &lt;strong&gt;changed&lt;/strong&gt; (&lt;strong&gt;they are never in the same state&lt;/strong&gt;)&lt;/li&gt;
  &lt;li&gt;have multiple instances (particulars) of a class&lt;/li&gt;
  &lt;li&gt;are identifiable by ID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Value objects:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;don’t have lifecycle (&lt;strong&gt;have no becoming and perishing&lt;/strong&gt;)&lt;/li&gt;
  &lt;li&gt;are immutable (&lt;strong&gt;they are always in the same state&lt;/strong&gt;)&lt;/li&gt;
  &lt;li&gt;have only one instance&lt;/li&gt;
  &lt;li&gt;identifiable by properties&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;τί τὸ ὂν ἀεί, γένεσιν δὲ οὐκ ἔχον, καὶ τί τὸ γιγνόμενον μὲν ἀεί, ὂν δὲ οὐδέποτε; 27d&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;τὸ μὲν δὴ νοήσει μετὰ λόγου περιληπτόν, ἀεὶ κατὰ ταὐτὰ ὄν, τὸ δ᾽ αὖ δόξῃ μετ᾽ αἰσθήσεως ἀλόγου δοξαστόν, γιγνόμενον καὶ ἀπολλύμενον, ὄντως δὲ οὐδέποτε ὄν. 28a&lt;/p&gt;
&lt;/blockquote&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>AGI as a Tool Maker</title>
     <link href="https://aleksandar-b.github.io/blog/posts/AGI-as-a-tool-maker"/>
     <updated>2025-01-02T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/AGI-as-a-tool-maker</id>
     <content type="html">&lt;p&gt;I’ve been thinking about Schopenhauer’s distinction between knowledge of perception and knowledge of conception, how that relates to AGI, and wanted to see what others think. Here’s a quick breakdown:&lt;/p&gt;

&lt;h3 id=&quot;schopenhauers-distinction&quot;&gt;Schopenhauer’s Distinction&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Knowledge of Perception (Understanding)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Comes from our senses.&lt;/li&gt;
  &lt;li&gt;Involves a mental process of forming a hypothesis about the cause as some external object behind our sensations.&lt;/li&gt;
  &lt;li&gt;Results in an intuitive, rather than purely abstract, mental image.&lt;/li&gt;
  &lt;li&gt;According to Schopenhauer, this is the only way to generate new knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Knowledge of Conception (Reasoning)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Abstract, verbal, or symbolic knowledge.&lt;/li&gt;
  &lt;li&gt;Serves mainly to store and transmit what we’ve discovered through perception.&lt;/li&gt;
  &lt;li&gt;Doesn’t (on its own) create truly new insights about reality—rather, it refines or rearranges what we’ve already observed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Examples from History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Galileo’s Telescope&lt;/strong&gt;: Without building a new tool (the telescope) to extend his perception, could he have discovered Jupiter’s moons or mountains on the Moon? Abstract reasoning alone probably wouldn’t cut it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Large Hadron Collider (LHC)&lt;/strong&gt;: A huge experimental apparatus that led to the discovery of the Higgs boson. Was there any way to confirm its existence by pure thought experiment alone? Most would say no—someone had to perceive (via sensors, detectors, etc.) new data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cosmic Microwave Background Radiation&lt;/strong&gt;: In 1964, Arno Penzias and Robert Wilson were using a radio antenna to study the sky. They kept detecting persistent static, which they tried to eliminate by every method they could think of (even cleaning out pigeon droppings!). Eventually, they realized the noise wasn’t instrument error but a faint signal coming uniformly from all directions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AGI as a Tool-Maker?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One intriguing extension of this idea is how it relates to Artificial General Intelligence (AGI). If we follow Schopenhauer’s line of thought, an AGI might be most valuable not just as a conceptual engine (running endless abstract computations) or a tool user but as a tool-maker—designing new instruments or experiments to expand our perceptions in realms we currently can’t observe.&lt;/p&gt;

&lt;p&gt;Without novel tools that feed new sensory data to our scientific community (human or machine), we might be stuck re-hashing the same concepts indefinitely. The real breakthroughs happen when we push the boundaries of what we can perceive—like building bigger colliders, telescopes, or detectors that show us something truly new.&lt;/p&gt;

&lt;p&gt;• Do you agree with Schopenhauer’s stance that all truly new knowledge stems from perception?&lt;/p&gt;

&lt;p&gt;• Could humanity have discovered the Higgs boson or Jupiter’s moons purely via “thinking really hard,” without actually looking or measuring?&lt;/p&gt;

&lt;p&gt;• How does this tie into modern AI research? If AI were to truly “discover” something, would it need the capacity to design experiments and gather new data?&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Ship of Theseus and Chassis Number</title>
     <link href="https://aleksandar-b.github.io/blog/posts/ship-of-theseus-and-chassis-number"/>
     <updated>2024-12-24T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/ship-of-theseus-and-chassis-number</id>
     <content type="html">&lt;h3 id=&quot;practical-solution-for-a-philosophical-problem&quot;&gt;Practical solution for a philosophical problem&lt;/h3&gt;

&lt;p&gt;Long time ago I had an interview for an SWE position in some automotive startup and of the questions was something like “How would you distinquish two cars?”. I said I would use ID but I saw that interviewer was not satisfied with my answer.&lt;/p&gt;

&lt;p&gt;Later, after investigation, I find out that &lt;strong&gt;&lt;em&gt;chassis number&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;VIN&lt;/em&gt;&lt;/strong&gt; (Vehicle identification number) is used to uniqely identify car or distinquish two cars from each other.&lt;/p&gt;

&lt;p&gt;So you can basically replace all parts &lt;em&gt;except&lt;/em&gt; &lt;em&gt;chassis&lt;/em&gt; and it will be considered the same car.
If you replace chassis, then it is &lt;em&gt;not the same car&lt;/em&gt; anymore.&lt;/p&gt;

&lt;p&gt;Try to replace it and if police stops you they will see on your vehicle license or Vehicle Registration(in USA) that VIN on the chassis does not match the one in the document. So you will be at risk of being accused of driving stolen vehicle.&lt;/p&gt;

&lt;p&gt;This is just one example how people can find practical solutions for age old philosophical problems.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Fed Chairman Game</title>
     <link href="https://aleksandar-b.github.io/blog/posts/fed-chairman-game"/>
     <updated>2024-12-22T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/fed-chairman-game</id>
     <content type="html">&lt;p&gt;I recreated an old flash game - &lt;strong&gt;Fed chairman&lt;/strong&gt;, an economic simulation.&lt;/p&gt;

&lt;p&gt;You can play it &lt;a href=&quot;https://fed-chairman-game-bay.vercel.app/&quot;&gt;here&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://fed-chairman-game-bay.vercel.app/&quot;&gt;https://fed-chairman-game-bay.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aleksandar-b/blog/gh-pages/_posts/Screenshot%202024-11-04%20at%2014.42.59.png&quot; alt=&quot;Screenshot 2024-11-04 at 14.42.59.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;TODO: additional indicators&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;[] Money supply&lt;/li&gt;
  &lt;li&gt;[] Exhange rate&lt;/li&gt;
  &lt;li&gt;[] Jolts&lt;/li&gt;
  &lt;li&gt;[] Long term bonds&lt;/li&gt;
  &lt;li&gt;[] Housing prices&lt;/li&gt;
  &lt;li&gt;[] Balance of trade&lt;/li&gt;
  &lt;li&gt;[] Nominal GDP growth&lt;/li&gt;
&lt;/ul&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Causality Is Not Enough</title>
     <link href="https://aleksandar-b.github.io/blog/posts/causality-is-not-enough"/>
     <updated>2023-09-26T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/causality-is-not-enough</id>
     <content type="html">&lt;p&gt;There is this opinion that what LLMs needs in order to achieve superinteligence is ability for causal thinking.&lt;/p&gt;

&lt;p&gt;While I agree that causal inference is important thing it is not the whole theoretical picture. I say theoretical because there is also practical inconvinience of testing AGI hypothesis which is the only way known to expand our knowledge.&lt;/p&gt;

&lt;p&gt;But let’s stick with theoretical picture and what is missing.&lt;/p&gt;

&lt;p&gt;I claim that what is missing is &lt;strong&gt;The Principle of Sufficient Reason&lt;/strong&gt; which states that:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;For every thing that exists there must be a &lt;strong&gt;Reason why&lt;/strong&gt; (explanation) it is that way and not the otherwise.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or as Wolff put it in more generic form:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Nothing is without a reason why it is rather than not. - Wolff&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you have read David Deutsch’s things about explanation he is actually talking there about the principle of sufficient reason, and for me those two terms are the same.&lt;/p&gt;

&lt;h3 id=&quot;the-reason-why&quot;&gt;The Reason Why?&lt;/h3&gt;

&lt;p&gt;It is said that question &lt;strong&gt;Why?&lt;/strong&gt; is the mother of all science. And when you ask why you expect to be responded with &lt;strong&gt;reason why&lt;/strong&gt; or explanation.&lt;/p&gt;

&lt;h3 id=&quot;causality-deals-exclusively-with-change&quot;&gt;Causality deals exclusively with Change&lt;/h3&gt;
&lt;p&gt;Where can Causality be applied as an explanation/reason? What questions that starts with Why? can be explained with Causality? The answer is that causality is an explanation only for &lt;strong&gt;changes&lt;/strong&gt; , virtual or physical, and nothing more. 
For example our physical world is a world of constant change and flux. That is why causality is used as an explanation in various natural sciences like physics. Also in computer programs that simulate some part of physical world or imagined world. Everything in our world can be thought as a cause and effect because that’s all there is. Why termometar raised(&lt;strong&gt;change&lt;/strong&gt;) to 30 degrees? Becuse some previous &lt;strong&gt;change&lt;/strong&gt; happened before (sun appeared in sky and rays entered through window).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Question: &lt;strong&gt;Why&lt;/strong&gt; termometar raised(change) to 30 degrees? / Effect
&lt;strong&gt;Reason&lt;/strong&gt;: Sun appeared(change) in sky before and rays entered(change) through window. / Cause&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;four-roots-of-reason&quot;&gt;Four roots of Reason&lt;/h3&gt;
&lt;p&gt;It turns out that the reason can be of four types and that causality is just one of four types.
If you ask a question:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why &lt;em&gt;2+3=5&lt;/em&gt; ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;causality can not be explanation because there is no &lt;strong&gt;change&lt;/strong&gt; and subsequently no cause and effect but there is reason and consequent. Or when you ask:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Why does a triangle with equal angles also have sides of equal length?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You are not dealing with changes. So you can not say it is because some thing happened before. 
Explanation or Reason for this kind of math questions lies in Time&amp;amp;Space as apriori pure peception and the reason must be grounded in time&amp;amp;space in order to be sufficient or in another words to be called good explanation.&lt;/p&gt;

&lt;p&gt;This Reason Schopenhauer called Reason of Being and he proposed following classification of Reason.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Reason of Becoming&lt;/strong&gt; (causality) - Why hydrogen mixed with oxygen explodes?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reason of Being&lt;/strong&gt; (time&amp;amp;space) - Why &lt;em&gt;2+3=5&lt;/em&gt; ?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reason of Knowing&lt;/strong&gt; (formal logic) - Why is this statement true?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reason of Acting&lt;/strong&gt; (Law of motives) - Why there is a statue of Churchil?&lt;/li&gt;
&lt;/ul&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>My Take on Superinteligence</title>
     <link href="https://aleksandar-b.github.io/blog/posts/my-take-on-superinteligence"/>
     <updated>2023-07-29T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/my-take-on-superinteligence</id>
     <content type="html">&lt;p&gt;Creating new knowledge is an act of transitioning from known effect to unknown cause.
That unknown cause we imagine as some external object. We call this hypothesis. &lt;/p&gt;

&lt;p&gt;This transition from known effect to unknown cause is known also as abductive reasoning (Pierce), conjecture (Popper), understanding (Schopenhauer) or a simply a guess.&lt;/p&gt;

&lt;p&gt;Now, no matter how smart AGI gets he does not have ability to correctly guess right hypotheses out of million possible hypotheses. For validation he needs feedback from real world or controlled experiment. Knowledge is a process of trial and error in every field - from simple insect perception, through market discovery all the way to scientific theories.&lt;/p&gt;

&lt;p&gt;I don’t belive prophecies that superinteligent AGI will discover all there is by just simply contemplating.&lt;/p&gt;

&lt;p&gt;That is why I am thinking of creating an app where ChatGPT can propose hypotheses and how to test them and people can crowdfund experiments to confirm those hypothesis.&lt;/p&gt;

&lt;p&gt;So basically it will be a list of hypotheses for known problems with ability to crowdfund it.&lt;/p&gt;

&lt;p&gt;If my thinking is correct then the future will look a lot like ChatGPT proposing hypotheses and humans working on funding and making experiments to confirm the hypothesis. This will be the new economy. The whole world will be one big lab.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>On the Understanding</title>
     <link href="https://aleksandar-b.github.io/blog/posts/on-the-understanding"/>
     <updated>2023-04-01T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/on-the-understanding</id>
     <content type="html">&lt;p&gt;Recent discussions about Artificial General Intelligence (AGI) suggest that we may be on the verge of creating machines that are “generally intelligent.” However, there are two main objections:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;AGI cannot truly understand&lt;/li&gt;
  &lt;li&gt;AGI cannot create any new knowledge&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this post, I will argue that these two issues are closely related. To do so, I will draw upon Arthur Schopenhauer’s philosophical distinction between Understanding and Reason. I will also show how Understanding, in Schopenhauer’s view, differs fundamentally from abstract Reasoning and why this matters when assessing AGI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Schopenhauer’s Concept of Understanding&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Understanding is the same in all animals and in all men; it has everywhere the same simple form—knowledge of causality, transition from effect to cause, and from cause to effect, nothing more. - Arthur Schopenhauer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;According to Schopenhauer, Understanding is fundamentally the knowledge of cause and effect. This faculty arose in living creatures with the development of the first sense organs, allowing raw sensory data to become perceptions. When an organism’s senses are stimulated (the “effect”), the mind infers a corresponding “cause” (an external object or event). This direct, intuitive leap from an observed effect to its underlying cause is what Schopenhauer calls direct Understanding. 
Perception is the end result of this process of causal inference and it is consider it to be one of the forms of Understanding (the lowest form).&lt;/p&gt;

&lt;p&gt;Humans also have indirect Understanding, which further analyzes causal connections not just on the body (e.g., what is causing this particular sensation?) but between external objects themselves. This gave rise to scientific inquiry and all systematic exploration of how the world works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.1. Causality - changes of states not objects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If we want to dig a little deeper into his philosophy of Causality we can see that for him causality is “director of all changes”. What causality deals with is changes of states. So in his opinion it is wrong to say that single Object A is a cause of Object B in case of some change. On closer inspection we see that state A (object A + preconditions) is the cause of state B once change happens. We won’t go too much here about his notion of causality, but we can say that it closely matches Finite State Machine concept.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. How Understanding Differs from Reasoning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Schopenhauer draws a strict distinction between Understanding and Reasoning:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Understanding&lt;/strong&gt;: The intuitive, causal inference that we share with animals—though humans can do it in more sophisticated ways (indirectly).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Reasoning&lt;/strong&gt;: The ability to form abstract concepts from our perceptions. This is unique to humans. Through Reason, we create general ideas, words, and language; we store, combine, and communicate knowledge in a symbolic form.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Although Reason is a remarkable leap—enabling language, the passage of knowledge across generations, and much of civilization—Schopenhauer insists it is secondary to Understanding. Reason depends on the raw material that Understanding provides through perception of the world.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“No entirely original and new knowledge will result from abstract reasoning alone; that is to say, no knowledge whose material neither lay already in perception nor was drawn from self-consciousness.” - Arthur Schopenhauer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, you cannot generate brand-new insights purely through logical manipulation of concepts. At some level, the knowledge must be grounded in actual perception—real-world cause and effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Why Perception Trumps Conception&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many people might think that pure, logical Reasoning is more advanced or more “human.” Yet Schopenhauer strongly defends the primary role of perceptual, immediate causal knowledge. Abstract concepts, he argues, are merely tools to organize or communicate those direct insights.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“Every simpleton has Reason—give him the premises, and he will draw the conclusion; whereas primary, intuitive knowledge is supplied by the Understanding.” - Arthur Schopenhauer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. Creating Knowledge: Two Transitions of Causality&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.1. Transition From Effect to Unknown Cause: The Realm of Science&lt;/strong&gt;
Scientists study the world by noticing certain effects (e.g., a strange reading on a sensor) and inferring a cause. This includes forming hypotheses, designing experiments, and uncovering new phenomena. The Understanding is doing the heavy lifting, supplying intuitive leaps or sudden insights (“flashes of insight”) that unveil new causal connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.2. Transition From Known Cause to Desired Effect: The Realm of Engineering&lt;/strong&gt;
Engineers, tinkerers, and inventors start with a known set of causes (materials, mechanisms, processes) and strive to produce a specific outcome (the “desired effect”). If existing knowledge does not apply perfectly (state that produced effect is not the same), they resort to trial and error—hands-on tinkering that again relies on seeing and feeling what works, adjusting on the fly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. How This Relates to AGI&lt;/strong&gt;
AGI systems today often excel at manipulating abstract representations (language models, data patterns, etc.). However, Schopenhauer’s account suggests that true Understanding—the ability to infer genuinely new causal knowledge—cannot arise solely through symbolic processing or pattern recognition.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;AGI and Understanding&lt;/p&gt;

    &lt;p&gt;Many AI methods rely on large-scale pattern recognition and statistical inference. They do not (yet) ground these patterns in direct, causal engagement with the world in the same way humans and animals do.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;AGI and Creating New Knowledge&lt;/p&gt;

    &lt;p&gt;Without that grounding in real sensory, hands-on experimentation (and the moment-to-moment “flash of insight”) which is the end result of Understanding, an AI might be unable to spontaneously discover truly novel causal links. The process of Understading where he infers causes is per definition new knowledge because it establises causal connections and objects where they did not exist earlier.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;5.1. The Coffee Test by Steve Wozniak&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An example of 2nd transition (From Known Cause to Desired Effect) appears in Steve Wozniak’s famous “coffee test”: once AGI learns how to make a coffee in his home (1st transition) it should be able to walk into someone’s home, find the kitchen, and make a cup of coffee on its own (2nd transition).&lt;/p&gt;

&lt;p&gt;How do humans learn to make coffee in the first place? Primarily with 1st transition: you press a button, register a change (the machine pours coffee) as an effect and your brain directly infers that your button press (change) was the cause. This direct experimentation is how “new” knowledge is formed—transitioning from known effect to unknown cause and pinning the right cause to the effect. You can then “extend the range of it’s applicability” by generalising that knowledge of causal state A that produced state B. The way you store it is in abstract form (verbal or written) and then it becomes part of realm of Reasoning. Think about IKEA manual as perfect example of that.&lt;/p&gt;

&lt;p&gt;The same idea is conveyed here in this [Twitter thread] by François Chollet (https://x.com/fchollet/status/1736483628971082111)&lt;/p&gt;

&lt;p&gt;But we have two issues here:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;The state that produced effect may not the be same in new situation. So you need tinkering or trail and error, not just Reasoning. Schopenhauer points out that causality depends on a complete set of conditions (a total state) rather than just single objects. If even one of those conditions changes in a new situation, the same effect might not happen. Therefore, you need trial and error (not just abstract Reasoning) to discover or restore the missing conditions. If any one of these elements is missing or altered (e.g., different machine model might have unfamiliar buttons or unclear labels, filter or pod system, no filter in place), you don’t truly have the same state that produced the effect before. Simply “knowing the instructions” (Reason) isn’t enough—you often have to tinker (adjust, observe, repeat) to pinpoint and fix whichever condition is off in the new setup.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Saying that AGI can apply that knowledge to &lt;em&gt;novel&lt;/em&gt; situations blures the fact that what AGI is actually doing is applying EXISTING knowledge (created with causal inference) to novel situation. The only moment when new knowledge is created is when someone observed cause and effect relation through Understanding. In other words new knowledge is not the same as application of that knowledge.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In both science and engineering, genuinely new knowledge requires more than just abstract conceptual manipulation. It demands direct contact with the world’s causal structure.&lt;/p&gt;

&lt;p&gt;It is possible that future research in robotics, embodied cognition, and continual learning will help AIs develop something closer to Schopenhauer’s notion of Understanding. But for now, these remain open challenges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Conclusion&lt;/strong&gt;
By grounding these philosophical insights in practical examples like making coffee, assembling IKEA furniture, or the process of discovery in science, we see that true knowledge—true causal Understanding—always arises from direct, perceptual interaction with the world. For now, AGI systems lack that grounding, which raises fundamental questions about whether they can ever genuinely understand or create knowledge in the way humans do.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Objects are first of all objects of perception, not of thought, and all knowledge of objects is originally and in itself perception. Perception, however, is by no means mere sensation, but the understanding is already active in it. The thought, which is added only in the case of men, not in the case of the brutes, is mere abstraction from perception, gives no fundamentally new knowledge, does not itself establish objects which were not before, but merely changes the form of the knowledge already won through perception,  makes it abstract knowledge in concepts, whereby its concrete or perceptible character is lost, but, on the other hand, combination of it becomes possible, which immeasurably extends the range of its applicability. - Arthur Schopenhauer&lt;/p&gt;
&lt;/blockquote&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Subject oriented programming</title>
     <link href="https://aleksandar-b.github.io/blog/posts/sop"/>
     <updated>2023-03-28T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/sop</id>
     <content type="html">&lt;blockquote&gt;
  &lt;p&gt;There is no object without a subject - Arthur Schopenhauer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;If a tree falls in a forest and no one is around to hear it, does it make a sound? - Unknown author&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://dl.acm.org/doi/pdf/10.1145/165854.165932&quot;&gt;Subject-oriented programming&lt;/a&gt; challenges the traditional object-oriented programming (OOP) paradigm by recognizing the importance of subjects in the software development process. As Arthur Schopenhauer once said, an object cannot be understood without considering the subject that perceives it. And every subject has different subjective view of the object.&lt;/p&gt;

&lt;h3 id=&quot;shift-in-perspective&quot;&gt;Shift in perspective&lt;/h3&gt;
&lt;p&gt;In subject oriented programing, the classical object model is, in many respects, the model of objects &lt;strong&gt;seen by any one subject&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In contrast to the OOP, which emphasizes the object’s role in software development, subject-oriented programming emphasizes the subject’s perspective of the object. OOP has often neglegted Subjects, resulting in applications with a single “God class” that attempts to represent every possible viewpoint. This approach leads to complicated and confusing code.&lt;/p&gt;

&lt;h3 id=&quot;domain-driven-design-and-microservices&quot;&gt;Domain-Driven Design and Microservices&lt;/h3&gt;
&lt;p&gt;To address this issue, domain-driven design (DDD) emphasizes bounded contexts, representing specific subjects’ perspectives on the domain. Microservices, which act as &lt;strong&gt;subject containers&lt;/strong&gt;, further reinforce this idea. Rather than calling these contexts “bounded contexts,” we should consider calling them “Subjects”.&lt;/p&gt;

&lt;h3 id=&quot;division-of-labor-inside-of-a-company&quot;&gt;Division of labor inside of a company&lt;/h3&gt;
&lt;p&gt;Subject can be individual or group of people with a common goal. In economy there is this notion of division of labor where groups specialize in some small aspect of the problem so they could solve it more efficiently. In large enterprises those groups are often called departments. So, we should consider a subject as an entity, inside of a company, that has some task to solve. In order to do that it uses objects as host of helpers that form a community and where objects are seen from a very narrow and focused viewpoint in order to solve a problem at hand.&lt;/p&gt;

&lt;h3 id=&quot;subject-decomposition&quot;&gt;Subject Decomposition&lt;/h3&gt;
&lt;p&gt;Subject decomposition is the process of breaking down a complex service into smaller, more manageable services. While this process is commonly referred to as “functional decomposition” or “domain decomposition” given the significance of subjects in shaping our understanding of objects, it may be more accurate to refer to it as “subject decomposition.” This approach involves identifying the different subjects within a system and their unique perspectives on the objects they interact with.
We must recognize that a multiplicity of subjective views delocalizes the concept of object.There is no “global state of the object”, each perspective can be separated in space and time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aleksandar-b/blog/gh-pages/_posts/sop.png&quot; alt=&quot;SOP&quot; /&gt;&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>On the Status field</title>
     <link href="https://aleksandar-b.github.io/blog/posts/on-the-status-field-and-bounded-context"/>
     <updated>2023-03-15T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/on-the-status-field-and-bounded-context</id>
     <content type="html">&lt;p&gt;I want to talk about new code smell - I want to name it as multiple substatuses code smell. Based on this I also want to propose a new practical solution for decomposing bounded context.&lt;/p&gt;

&lt;p&gt;You may have come across so-called “God classes” in your code, which typically have a status or state field along with several other “substatuses” like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;paymentStatus&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;shippingStatus&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;submissionStatus&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ticket&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;customerId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;shippingStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;shippingAddress&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;paymentStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;paymentId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;submissionStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;submissionId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is a code smell &lt;strong&gt;multiple substatuses&lt;/strong&gt; and it is a clear sign that you are dealing here with &lt;strong&gt;multiple bounded contexts&lt;/strong&gt; or “subjects” which have their own view of same object. Decomposing them is more of an art then science and there is no clear way how to do that. There are “heuristics” that can help you with that process like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Different vocabulary&lt;/li&gt;
  &lt;li&gt;Different teams&lt;/li&gt;
  &lt;li&gt;Different policy&lt;/li&gt;
  &lt;li&gt;Different business goal
….etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want to propose this new practical solution for decomposing bounded contexts based on the presence of multiple substatuses. If a class has more than one status field, it is a sign that each substatus should be part of a different bounded context, complete with its own processes and workflows. You can then encapsulate these contexts within their own microservices, allowing for independent deployability and easier management. Status field is very important when looking from outside, it is end result of some complex process that runs inside of that context.&lt;/p&gt;

&lt;p&gt;Our God class should be decomposed into several microservices: Delivery, Finance, Lodgement.&lt;/p&gt;

&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ticket&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;customerId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;c1&quot;&gt;// Delivery context&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;shippingStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;shippingAddress&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;c1&quot;&gt;// Finance context&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;paymentStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;paymentId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;// Lodgement context&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;submissionStatus&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;submissionId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Each new class inside of microservice should have a loose reference to ticket with ticketId.&lt;/p&gt;

&lt;h4 id=&quot;crm-microservice&quot;&gt;CRM microservice&lt;/h4&gt;
&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Ticket&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;customerId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;finance-microservice&quot;&gt;Finance microservice&lt;/h4&gt;
&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Payment&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;ticketId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;delivery-microservice&quot;&gt;Delivery microservice&lt;/h4&gt;

&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Shipment&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;ticketId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;address&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;lodgement-microservice&quot;&gt;Lodgement microservice&lt;/h4&gt;

&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Submission&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;ticketId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;externalId&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It’s worth noting that, for view models where you serve JSON to the frontend for display purposes, it is acceptable to have multiple substatuses. In such cases, data can be retrieved and composed from multiple microservices through an API Gateway. However, as a general rule, you should avoid having multiple substatuses in a single database table.&lt;/p&gt;

&lt;p&gt;By following this practical approach to decomposing bounded contexts, you can improve the maintainability and scalability of your code while reducing the risk of tightly coupled components.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Don't instantiate value objects</title>
     <link href="https://aleksandar-b.github.io/blog/posts/dont-instantiate-value-objects"/>
     <updated>2023-03-14T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/dont-instantiate-value-objects</id>
     <content type="html">&lt;p&gt;Values = Abstractions&lt;/p&gt;

&lt;h4 id=&quot;values-are-not-instantiated&quot;&gt;Values are not instantiated&lt;/h4&gt;

&lt;p&gt;The main thing that distinquish value objects from entities is that values are &lt;em&gt;pure&lt;/em&gt; abstractions. Oposite of abstraction is a concrete thing (this or that). Something that can be identifieable by pointing finger to it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aleksandar-b/blog/gh-pages/_posts/table_abstract.png&quot; alt=&quot;Abstractions/Values&quot; /&gt;
The act of transitioning from abstraction to concrete is called instantiation.&lt;/p&gt;

&lt;p&gt;Ergo, concept of instance does not apply to values. Abstractions can be instatiated but at that point they become entity(particular thing).&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;When you write &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2 + 2 = 4&lt;/code&gt; you can not say that 4 came into existence. Number 4 existed before this calculation.&lt;/p&gt;

&lt;p&gt;While when you write &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new User(name: &quot;Jody Lecompte&quot;, state: Lousiana)&lt;/code&gt; you have put into existence particular user which did not existed before in your system.&lt;/p&gt;

&lt;h3 id=&quot;principle-of-individuation&quot;&gt;Principle of individuation&lt;/h3&gt;
&lt;p&gt;In real world we instantiate by identifying concrete thing we are talking about. How we identify? With time and space. I know you are not same as me because you are at different location in space at this point in time than I am. There is also contextual identification like when I say “My aunt”. Everyone can identify that person based on context.&lt;/p&gt;

&lt;p&gt;In programming we first used memory location to identify objects. Now we use GUIDs.&lt;/p&gt;

&lt;h3 id=&quot;new-keyword&quot;&gt;New keyword&lt;/h3&gt;
&lt;p&gt;On conceptual level both your application entity classes and value classes are abstractions, with one difference that entity classes are instantiated while value classes always stay at the abstraction layer. 
It is remarkable that no one knows how keyword &lt;em&gt;new&lt;/em&gt; came into existence and what was it’s purpose. Yet it is ubiquitous. In early OOP languages like Smalltalk and Simula objects/entities are created by explicit request (the &lt;em&gt;new&lt;/em&gt; operation), and are destroyed by a garbage-collector when no longer needed. &lt;em&gt;new&lt;/em&gt; keyword was a command that says to computer - put this thing into existence. So conceptually &lt;strong&gt;it is not correct&lt;/strong&gt; to use &lt;em&gt;new&lt;/em&gt; keyword for values.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aleksandar-b/blog/gh-pages/_posts/carbon.png&quot; alt=&quot;Abstractions/Values can not be instantiated&quot; /&gt;&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>What is Object oriented programming - once and for all.</title>
     <link href="https://aleksandar-b.github.io/blog/posts/what-is-oop"/>
     <updated>2023-03-13T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/what-is-oop</id>
     <content type="html">&lt;h3 id=&quot;programming-is-simulation&quot;&gt;Programming is simulation&lt;/h3&gt;

&lt;p&gt;What distinquishes OOP from other programming paradigms? For example - what distinquishes OOP from Functional programming?&lt;/p&gt;

&lt;p&gt;I would like to talk about forgotten definition of early OOP which viewed that all programming is simulation. It was forgotten in 80s and early 90s when academics entered the field and in their desperate need to categorise everything tried to categorise OOP also. Certainly not all problems in programming require simulaiton approach - just some. For non complex tasks like data transformations, calculations, CRUD etc you can use Functional programming. What is common to all these non complex task is that they lack TIME component. But what exactly do we mean when we say that? I will try to answer bellow - it is not exactly time but something that is only possible through time.&lt;/p&gt;

&lt;p&gt;You certainly know, or had to memorise this dry academic categorisation of OOP:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Encapsulation&lt;/li&gt;
  &lt;li&gt;Polymorphism&lt;/li&gt;
  &lt;li&gt;Inheritance&lt;/li&gt;
  &lt;li&gt;Abstraction&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I would like to restate the view from early 80s when OOP viewed the programming as simulation. It was influenced by Simula btw.&lt;/p&gt;

&lt;p&gt;What are objects? In real world we have objects and in programming we have objects. OOP was created to simulate some real world objects.&lt;/p&gt;

&lt;p&gt;What it means to simulate? Let’s have a look at description of Uncle Bob Martin about how OOP was created. At one moment he was very close to find what exactly is specific difference between OOP and other paradigms, but then he went on with typical encapsulation, polymorphism etc..&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;OBJECT-ORIENTED PROGRAMMING
The second paradigm to be adopted was actually discovered two years earlier, in 1966,
by Ole Johan Dahl and Kristen Nygaard. These two programmers noticed that the
function call stack frame in the ALGOL language could be moved to a heap, thereby
allowing local variables declared by a function to exist long after the function returned.
The function became a constructor for a class, the local variables became instance
variables, and the nested functions became methods. This led inevitably to the discovery
of polymorphism through the disciplined use of function pointers&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you see what is the key part here? I will tell you - that part is “&lt;strong&gt;exist&lt;/strong&gt; &lt;em&gt;long after the function returned&lt;/em&gt;.”. This was breakthrough. It means that objects can &lt;strong&gt;live&lt;/strong&gt;, to have &lt;strong&gt;existence&lt;/strong&gt;. In another words - you created simulation. To exists or to live means that passage of time does not anihiliate concrete identifieable object. Existence is only possible in time, even just for a split of a second. Existence has a lifecycle - something can come into existence, go out of existence and be changed during existence (state), while biggest changes being coming and going out of existence. Something that does not come into existence but can be defined is considered eternal or atemporal like abstractions. For example number two. Functional programming is all about abstractions that don’t come into existence and don’t change it’s properties or states. But you can not build anything usefull this way, you are just doing math. Complex aplication are complex because they try to simulate some part of real world.&lt;/p&gt;

&lt;p&gt;So we see that Simulation has some parts that should be defined:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Existence (only possible in Time)&lt;/li&gt;
  &lt;li&gt;Objects (identifieable things)&lt;/li&gt;
  &lt;li&gt;Change - Objects interact with each other (they act on some other objects or are being acted upon)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those 3 things can not exist without each other.
Objects require existence so they can live, otherwise they would be blury abstractions.
But to exist is to have causal power or ability to change something or being changed by something.
And there is no time or existence without some change.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Is Country an Entity or Value object?</title>
     <link href="https://aleksandar-b.github.io/blog/posts/is-country-entity-or-value"/>
     <updated>2023-03-13T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/is-country-entity-or-value</id>
     <content type="html">&lt;p&gt;Let’s explore some edge case where you have a Country class that serves only as a value to some other entity.&lt;/p&gt;

&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Country&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Do you think this should be a value or an entity?&lt;/p&gt;

&lt;p&gt;It depends on a context of your application of course but it also depends how you define entity.&lt;/p&gt;

&lt;p&gt;Most of programmers define Entity as everything that can be identifiable. Usually it has some id. So in this case it is Entity.&lt;/p&gt;

&lt;p&gt;Some add that it must have lifecycle. In this case it is value.&lt;/p&gt;

&lt;p&gt;I would like to add 3rd distinction - Causal power.&lt;/p&gt;

&lt;p&gt;Something has causal power if it has capacity to do something or have something done to it.&lt;/p&gt;

&lt;p&gt;Or in simpler terms:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ability to act upon something or being acted upon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So if Country class is value if it does not have direct or indirect methods to change some entity or being changed by them.&lt;/p&gt;

&lt;p&gt;Direct:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Is not changed by some other entity via method calls&lt;/li&gt;
  &lt;li&gt;Does not change other entity via method calls&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Indirect:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Does not listen to events&lt;/li&gt;
  &lt;li&gt;Does not dispatch any event by itself&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you create a simulation/program you created live enitites that interact with each other. To live is to have causal power. The whole world is interaction. If something has an ID but it does not participate in causal order of the world it is the same as if it does not exist - it is just dead abstraction.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>What are Value Objects (Wonkish)</title>
     <link href="https://aleksandar-b.github.io/blog/posts/what-are-value-objects-(Wonkish)"/>
     <updated>2022-02-06T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/what-are-value-objects-(Wonkish)</id>
     <content type="html">&lt;blockquote&gt;
  &lt;p&gt;“What is that which always is in the same state and has no becoming and perishing, and what is that which is always becoming and perishing but never is in the same state?”  -Plato&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post I argue that value objects are programming language substitute for abstractions in natural languages where they appear as common nouns.&lt;/p&gt;

&lt;h4 id=&quot;values-are-pure-abstractions&quot;&gt;Values are &lt;em&gt;pure abstractions&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;The main feature that distinquish value objects from entities is that values are pure abstractions(universals, concepts, plato’s form). All differences between values and entities are derived from this ultimate distinction.&lt;/p&gt;

&lt;p&gt;Bellow is a list of differences and the consequences they have.&lt;/p&gt;

&lt;h4 id=&quot;values-are-not-instantiated&quot;&gt;Values are not instantiated&lt;/h4&gt;
&lt;p&gt;Concept of instance does not apply to values. Abstractions can be instatiated but at that point they become entity(particular thing). On conceptual level both your application entity classes and value classes are abstractions, with one difference that entity classes are instantiated while value classes always stay at the abstraction layer. It is remarkable that no one knows how keyword &lt;em&gt;new&lt;/em&gt; came into existence and what was it’s purpose. Yet it is ubiquitous. In early OOP languages like Smalltalk and Simula objects/entities are created by explicit request (the &lt;em&gt;new&lt;/em&gt; operation), and are destroyed by a garbage-collector when no longer needed. So conceptually &lt;em&gt;it is not correct&lt;/em&gt; to use &lt;em&gt;new&lt;/em&gt; keyword for values.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/aleksandar-b/blog/gh-pages/_posts/carbon.png&quot; alt=&quot;Abstractions/Values can not be instantiated&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Removing new keyword reads like a functional programming in Typescript
&lt;img src=&quot;https://raw.githubusercontent.com/aleksandar-b/blog/gh-pages/_posts/carbon%20(1).png&quot; alt=&quot;Abstractions/OOP without new&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;concept-of-existence-is-not-applicable-to-abstractions&quot;&gt;Concept of existence is not applicable to abstractions&lt;/h4&gt;
&lt;p&gt;Since they can’t be instantiated, it is said that concept of existence is not applicable to abstractions. It is meaningless to speak about them as coming into existence or going out of the existence. When you write 2 + 3 = 5 there is no notion that 5 came into existence. No, it is timeless relation.&lt;/p&gt;

&lt;p&gt;Let’s look at typical example of value - number two. What exactly is number two?
Number two is an abstraction that subsumes all particular pairs of entitites out there. It subsumes pair of apples in your kitchen, pair chairs in your office, pair of shoes, two persons married. While all those particular entities may come and go out of the existence, what remains is the abstraction two. Since it never comes into existence and existence is only possible in time it is said that abstraction two is eternal or atemporal. To paraphrase Plato’s distinction between being and becoming: Number two always is in the same state but it does not (be)come into existence (and go out of existence) - it &lt;strong&gt;does not have lifecycle&lt;/strong&gt;.&lt;/p&gt;

&lt;h4 id=&quot;abstractions-dont-change&quot;&gt;Abstractions don’t change&lt;/h4&gt;
&lt;p&gt;Abstractions can have attributes like entities, but they don’t change it’s attributes. Changing it’s attributes causes it to be different abstraction. This is because abstractions are common properties accross collection of phenomena. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Money(2, &quot;$&quot;)&lt;/code&gt; is different abstraction than &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Money(10, &quot;$&quot;)&lt;/code&gt; because we are are not talking anymore about the same collection. In today’s jargon we would say they are immutable.&lt;/p&gt;

&lt;h4 id=&quot;abstractions-dont-have-state&quot;&gt;Abstractions don’t have state&lt;/h4&gt;
&lt;p&gt;Since they can’t be created and ergo they can’t be changed it follows that they don’t have state. State is defined as snapshot of properties of an entity at some particular time. We could also associate with Plato who said about forms that “they are always in the same state”.&lt;/p&gt;

&lt;h4 id=&quot;abstractions-can-not-be-shared-or-copied-there-is-only-one-instance-of-it&quot;&gt;Abstractions can not be shared or copied, there is only one instance of it&lt;/h4&gt;
&lt;p&gt;In a expresion 1+1=2 it is meaningles to ask which number two did I change, as it is also meaningless to answer with: that number two or other one. There is only one number two.&lt;/p&gt;

&lt;h4 id=&quot;abstractions-lack-causal-power&quot;&gt;Abstractions lack causal power&lt;/h4&gt;
&lt;p&gt;Since they can’t be put into existence, they can’t influence other entities or being influenced by them - they are outside of the causal order of the world. They can be just compared, related and measured.&lt;/p&gt;

&lt;h4 id=&quot;abstractions-are-common-nouns&quot;&gt;Abstractions are common nouns&lt;/h4&gt;
&lt;p&gt;Natural languages distinquishes between common nouns and proper nouns. It is usefull heuristic which shows that programming languages should also distinquish those concepts.
Common nouns are generic things like country, while proper nouns are specific entities like Spain. Spain came into existence in some point in time and space, changed it’s attributes through time, and will eventually go out of the existence.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Dependency inversion principle from history</title>
     <link href="https://aleksandar-b.github.io/blog/posts/ioc"/>
     <updated>2021-09-09T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/ioc</id>
     <content type="html">&lt;p&gt;I think I found earliest example of inversion of control/dependency inversion principle.&lt;/p&gt;

&lt;p&gt;Context: In &lt;em&gt;1885&lt;/em&gt; an Austrian parlament held a session to discuss a military conflict in the Balkan between Serbia and Bulgaria over some Turkish land caused by some unbalanced serbian king. At that time Austria was an ally of Serbia and Russia was an ally of Bulgaria.&lt;/p&gt;

&lt;p&gt;Everyone in Austria was eager to help Serbia because enemies Russians where on the other side. A parlament member asked minister of foreign affairs count Kálnoky a question whether Austria is determined to defend Serbia’s interest under any circumstances?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Austria can not defend interests of Serbia under any circumstances. &lt;strong&gt;Doing that she would make her politics dependent upon one much smaller country&lt;/strong&gt;, who besides that does not give enough assurance that “it would not be governed by impulses but by reason”.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you think a little bit WW1 and WW2 started because of &lt;em&gt;violation of this principle&lt;/em&gt;. Everyone was connected to everyone through network of interlocking &lt;a href=&quot;https://www.iwm.org.uk/history/what-you-need-to-know-about-pre-first-world-war-alliances&quot;&gt;alliances&lt;/a&gt;. Assasination of prince Ferdinand and the war that followed was not localised between Serbia and Austria. Russia, violating this principle, felt it necessary to back Serbia and that triggered domino effect.&lt;/p&gt;

&lt;p&gt;So the next time you violate IOC principle be aware of the consequences it had.&lt;/p&gt;

&lt;p&gt;Adendum:
If country is entity, and alliance is coupling, what is alliance’s purpose? It seems it is to defend vital interest of country for survival and only in that circumstances coupling is allowed. What is an analogy in software?&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Tech Books</title>
     <link href="https://aleksandar-b.github.io/blog/posts/tech-books"/>
     <updated>2021-06-11T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/tech-books</id>
     <content type="html">&lt;p&gt;Here is the list of my favorite tech books so far:&lt;/p&gt;

&lt;p&gt;A++&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Refactoring - Martin Fowler&lt;/li&gt;
  &lt;li&gt;Practical Object-Oriented Design in Ruby - Sandy Metz&lt;/li&gt;
  &lt;li&gt;The Pragmatic programmer - Andy Hunt and Dave Thomas&lt;/li&gt;
  &lt;li&gt;Refactoring UI - Adam Wathan and Steve Schroger&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A+&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Smalltalk best practice patterns - Kent Beck&lt;/li&gt;
  &lt;li&gt;Designing Data-Intensive Applications - Martin Kleppmann&lt;/li&gt;
  &lt;li&gt;Node.js Design patterns - Luciano Mammino and Mario Casciaro&lt;/li&gt;
  &lt;li&gt;Refactoring to patterns - Joshua Kerievsky&lt;/li&gt;
  &lt;li&gt;The little Schemer - Daniel P. Friedman and Matthias Felleisen&lt;/li&gt;
  &lt;li&gt;Working Effectively with Legacy Code - Michael C. Feathers&lt;/li&gt;
&lt;/ul&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>On Bitcoin</title>
     <link href="https://aleksandar-b.github.io/blog/posts/bitcoin"/>
     <updated>2021-06-10T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/bitcoin</id>
     <content type="html">&lt;p&gt;In this article I will try to look at Bitcoin through 4 aspects and compare it with similar existing occurences.&lt;/p&gt;

&lt;p&gt;Abstract:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Technology behind it - where I compare it with Morse code.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;High valuation of Bitcoin - where I compare it with Pokemon/Baseball cards.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Influence on people - where I compare it with comunism, nacism, goldbuggery and phenomenon of usefull idiots.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Practical consequences that can have - where I compare it with Holocaust or Great Depression.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;technology-behind-it&quot;&gt;Technology behind it&lt;/h3&gt;
&lt;p&gt;Bitcoin is Morse code of money. That thought striked me while I was reading &lt;a href=&quot;https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319&quot;&gt;Code&lt;/a&gt; by Charles Petzold. While not directly related to my theme here, he points out that in order to communicate we have multiple available options (voice, written word, Morse code). While Morse code is inferior tech to voice and writen word, it can be usefull for some funny edge cases like if you want to communicate at night with your friend that lives near you without disturbing anyone else.&lt;/p&gt;

&lt;p&gt;The same is with Bitcoin and crypto in general - Inferior technology for every day use case given existing alternatives, but good in some special circumstances like when being trapped in an island with autocrat that wants to take your money.&lt;/p&gt;

&lt;p&gt;What is money and why Bitcoin fails as money?&lt;/p&gt;

&lt;p&gt;I consider money as the third most important human institution ever created after language and free market price system.&lt;/p&gt;

&lt;p&gt;Being able to easely exchange it for any other commodity or service is what constitutes money. Money is a evolutionary institution - because money was initially the most saleable commodity of all commodities out there in a barter economy. Actors in barter exchanges eventually realize that they can more easily execute such exchanges if they hold stocks of comodities that are greatly desired by other members of the trading community. Eventually this process reveals the one good which is the most saleable.&lt;/p&gt;

&lt;p&gt;Hayek:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;it would be more helpful … if “money” were an adjective describing a property which different things could possess to varying degrees&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If we translate this into coding language he makes the claim that money is a role one thing can possess. Let’s call it moneyness.  And we can have various algoritms that implement that role - some are bad and slow, some are good and fast.&lt;/p&gt;

&lt;p&gt;So the feature that money has the most and that other goods don’t have in that degree is &lt;a href=&quot;https://myslu.stlawu.edu/~shorwitz/Papers/Subjectivist%20Money%20JEEH%201990.pdf&quot; title=&quot;availabilty yield&quot;&gt;&lt;em&gt;availabilty yield&lt;/em&gt;&lt;/a&gt;. When one holds a stock of money, one has something available, waiting to perform its ultimate service of exchanging for non-money goods and services. In this article Horwitz introduces the concept - &lt;em&gt;degrees of moneyness&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;What can be said is that financial assets have degrees of “moneyness” about them, and that different financial assets can be placed along a moneyness continuum.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bitcoin has several problems that puts him at the bottom on the scale of moneyness:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;high exchange fees&lt;/li&gt;
  &lt;li&gt;can do just limited numbers of transactions (&amp;lt;4.6 per second)&lt;/li&gt;
  &lt;li&gt;it’s a copy of the rigid gold standard which caused the Great Depression&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;high-valuation-of-bitcoin&quot;&gt;High valuation of Bitcoin&lt;/h3&gt;
&lt;p&gt;Bitcoin should be looked upon as rare asset like Pokemon cards whose price can skyrocket because of it’s rarity and mistique around that. But being in a league with Pokemon cards is not a fair comparison. Pokemons, because it attributed to socialization, where somewhat usefull, Bitcoin is not usefull at all.&lt;/p&gt;

&lt;h3 id=&quot;influence-on-people&quot;&gt;Influence on people&lt;/h3&gt;
&lt;p&gt;What is behind recent Bitcoin high demand is a perfect hype of ignorance and ideology. It is fueled mostly by two groups of people:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Tech austrian crackpots. They are former internet austrians and goldbugs who are now using silicon valley aura as disquise. Austrian school of economics become popular after the great recession among normies.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The second group are regular programmers, who are practitioners by default. They don’t understand what money is and are not interested in theory and history of money. Because they lack knowledge and interest in subject, they try to compensate that by talking about some frivoulous tech implementation details they find interesting like blockchain, proof of work, tokens etc. They are like those programmers who can not comprehend the big picture in the codebase.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;practical-consequences-that-can-have&quot;&gt;Practical consequences that can have&lt;/h3&gt;
&lt;p&gt;How long can this last and what will be consequences?&lt;/p&gt;

&lt;p&gt;Quite a lot. Since what determines price of everything is our own subjective beliefs. History has thought as that beliefs can last millenia and that they are mostly wrong. Delusions are normal state of things through history. There is no point to list you all unrational delusions in the past 500 years. No point to tell you about Salem witches trials just 300 years ago, bloody religious wars in Europe, holocaust, communism. Those people seriously believed in their ideas and more importantly they believed in that for many centuries. The disasterous efects it can have if suddenly becomes legal tender can be comapared with Great Depression or Holocaust.&lt;/p&gt;
</content>
   </entry>
   
 
   
   <entry>
     <title>Intro</title>
     <link href="https://aleksandar-b.github.io/blog/posts/intro"/>
     <updated>2021-06-09T00:00:00+00:00</updated>
     <id>https://aleksandar-b.github.io/blog/posts/intro</id>
     <content type="html">&lt;p&gt;Welcome to my blog.&lt;/p&gt;

&lt;p&gt;I will use this blog to write mostly about books I am reading, problems I am encountering in tech, and above all - economics. :love. Until then, stay strong and eat your vegies.&lt;/p&gt;
</content>
   </entry>
   
 
 
</feed>
