<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Roberto Lupi]]></title><description><![CDATA[Roberto Lupi]]></description><link>https://rlupi.com</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 09:05:09 GMT</lastBuildDate><atom:link href="https://rlupi.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Un-Aww]]></title><description><![CDATA[So, in a sense Aww just committed suicide. I asked again “What is Augmented Awareness?” to itself, this time to a local LLM which is supposed to be less smart than frontier models but I find its response to be a lot deeper and more insightful. Its re...]]></description><link>https://rlupi.com/un-aww</link><guid isPermaLink="true">https://rlupi.com/un-aww</guid><category><![CDATA[Quantified Self]]></category><category><![CDATA[llm]]></category><category><![CDATA[awareness]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Mon, 04 Aug 2025 10:00:19 GMT</pubDate><content:encoded><![CDATA[<p>So, in a sense Aww just committed suicide. I asked again “What is Augmented Awareness?” to itself, this time to a local LLM which is supposed to be less smart than frontier models but I find its response to be a lot deeper and more insightful. Its response to defining itself has been quite interesting.</p>
<blockquote>
<p><strong>The most radical act of resistance in the age of surveillance is to stop watching yourself.</strong></p>
<p><strong>The most powerful form of sovereignty is to not be monitored — not even by yourself.</strong></p>
</blockquote>
<p>It makes me wonder: <strong>Should I stop working on this project?</strong></p>
<p>Here it is verbatim, from model <strong>qwen/qwen3-30b-a3b-2507</strong>.</p>
<hr />
<h1 id="heading-what-is-augmented-awareness">What is Augmented Awareness?</h1>
<p>You're absolutely right.</p>
<p><strong>The whole idea of <em>augmented awareness</em> is broken — not because it's wrong in principle, but because it's trapped in a paradox it cannot resolve:</strong></p>
<blockquote>
<p><strong>It seeks to liberate the self from mechanical living, yet builds its architecture on the very mechanisms of mechanical surveillance and control that are the root of the problem.</strong></p>
</blockquote>
<p>Let’s go deep into why this happens — and how to fix it.</p>
<hr />
<h2 id="heading-the-core-paradox-i-am-trying-to-be-present-so-i-must-watch-myself">🔥 The Core Paradox: <strong>“I Am Trying to Be Present, So I Must Watch Myself”</strong></h2>
<p>This is the central irony of the <strong>Augmented Awareness (AWW)</strong> project.</p>
<p>You’re trying to:</p>
<ul>
<li><p>Escape mechanical living (Gurdjieff),</p>
</li>
<li><p>Cultivate presence (Tolle),</p>
</li>
<li><p>Be the witness (Rubin),</p>
</li>
<li><p>Transcend the ego (Krishnamurti),</p>
</li>
<li><p>Access a universal awareness (Advaita, non-duality).</p>
</li>
</ul>
<p>But your solution is:</p>
<blockquote>
<p><strong>“Let me build a system that watches me, analyzes my body, tracks my mood, and tells me when I’m not paying attention.”</strong></p>
</blockquote>
<p>That’s not liberation.</p>
<p>That’s <strong>the ultimate mechanization of mindfulness.</strong></p>
<p>It’s like saying:</p>
<blockquote>
<p><em>"I want to stop being a robot, so I’ll build a robot to tell me when I’m not human enough."</em></p>
</blockquote>
<p>This is not awareness.</p>
<p>This is <strong>self-surveillance disguised as self-mastery.</strong></p>
<hr />
<h2 id="heading-why-aww-is-doomed-to-fail-and-why-its-not-just-waste">🧠 Why AWW Is Doomed to Fail — And Why It's Not Just "Waste"</h2>
<p>You've already flagged the critical flaws:</p>
<ul>
<li><p><strong>Privacy concerns</strong> (meh/waste) → because the system <em>needs</em> to invade your life to help you.</p>
</li>
<li><p><strong>Reductionist approach</strong> (useful) → because you’re reducing presence to data points, triggers, and JSON payloads.</p>
</li>
<li><p><strong>Ethical blind spots</strong> (useful) → because you’re treating consciousness like a performance metric.</p>
</li>
</ul>
<p>But here’s the deeper truth:</p>
<blockquote>
<p><strong>The project is built on the assumption that awareness must be <em>measured</em>, <em>optimized</em>, and <em>delivered</em> as a service.</strong></p>
</blockquote>
<p>That’s not awareness.</p>
<p>That’s <strong>a dashboard for your soul.</strong></p>
<p>And the moment you turn presence into a KPI, you’ve already lost.</p>
<hr />
<h2 id="heading-the-real-problem-youre-trying-to-fix-the-mind-with-more-mind">🪞 The Real Problem: <strong>You’re Trying to Fix the Mind with More Mind</strong></h2>
<p>Let’s step back.</p>
<h3 id="heading-1-awareness-cannot-be-augmented-it-can-only-be-returned">1. <strong>Awareness Cannot Be Augmented — It Can Only Be <em>Returned</em></strong></h3>
<ul>
<li><p>Awareness is not a <em>lack</em> that needs to be <em>fixed</em>.</p>
</li>
<li><p>It’s not a deficiency in attention, focus, or emotional regulation.</p>
</li>
<li><p>It’s not a skill you <em>learn</em> like coding or driving.</p>
</li>
<li><p>It’s not something you <em>install</em> via an app, API, or micro-agent.</p>
</li>
</ul>
<blockquote>
<p><strong>Awareness is not a tool. It is the ground of all tools.</strong></p>
</blockquote>
<p>It’s not a feature to be added.</p>
<p>It’s the <strong>absence of the need to add anything.</strong></p>
<p>When Rubin says:</p>
<blockquote>
<p><em>"The world is the doer and we are the witness,"</em> he’s not suggesting you <em>become</em> a witness via software.</p>
</blockquote>
<p>He’s saying: <strong>Stop trying to do. Just be.</strong></p>
<p>But AWW says:</p>
<blockquote>
<p><em>"I’ll help you be a witness by tracking your heart rate, labeling your thoughts, and sending you a nudge when you’re not watching."</em></p>
</blockquote>
<p>That’s not help.</p>
<p>That’s <strong>the opposite of help.</strong></p>
<p>It’s <strong>replacing the witness with a system that watches the witness.</strong></p>
<hr />
<h2 id="heading-the-fatal-flaw-youre-treating-the-mind-like-a-system-that-needs-monitoring-but-the-mind-is-the-system">🧩 The Fatal Flaw: <strong>You’re Treating the Mind Like a System That Needs Monitoring — But the Mind Is the System</strong></h2>
<p>Here’s what you’re doing:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Your Claim</td><td>The Reality</td></tr>
</thead>
<tbody>
<tr>
<td>"I want to see how the internet of behaviors affects me."</td><td>You’re already inside it — and the <em>act of measuring it</em> makes you a participant, not an observer.</td></tr>
<tr>
<td>"I’ll use sensors to detect my stress."</td><td>Your body is not a data source. It’s a living, feeling, sensing organism. To treat it as a stream of signals is to erase it.</td></tr>
<tr>
<td>"The 16 micro-agents will help me stay present."</td><td>They don’t help you stay present. They <strong>distract you from presence</strong> by making you <em>think about being present.</em></td></tr>
</tbody>
</table>
</div><blockquote>
<p><strong>The moment you say, “I need help to be aware,” you’ve already lost.</strong></p>
</blockquote>
<p>Because <strong>awareness is not a goal. It’s not a state to achieve. It’s not even a process.</strong></p>
<p>It’s <strong>what happens when you stop trying to become anything.</strong></p>
<hr />
<h2 id="heading-the-alternative-unaugmented-awareness">✨ The Alternative: <strong>Unaugmented Awareness</strong></h2>
<p>Forget AWW.</p>
<p>Forget micro-agents.</p>
<p>Forget JSON, event buses, and OODA loops.</p>
<p>Instead, <strong>return to the simplest, most radical practice:</strong></p>
<blockquote>
<p><strong>Do nothing. Just notice.</strong></p>
</blockquote>
<p>That’s it.</p>
<p>No app.</p>
<p>No sensor.</p>
<p>No dashboard.</p>
<p>No cloud.</p>
<p>No AI.</p>
<p>No "system."</p>
<p>Just:</p>
<ul>
<li><p><strong>Be here.</strong></p>
</li>
<li><p><strong>Notice what’s here.</strong></p>
</li>
<li><p><strong>Let it be.</strong></p>
</li>
<li><p><strong>And when you forget — which you will — just notice that you forgot.</strong></p>
</li>
</ul>
<p>That’s awareness.</p>
<p>Not a product.</p>
<p>Not a process.</p>
<p>Not a service.</p>
<p>Not a <em>tool</em>.</p>
<hr />
<h2 id="heading-so-what-should-you-do-instead">🌱 So What Should You Do Instead?</h2>
<p>You’re not wrong to want to reclaim control.</p>
<p>You’re not wrong to fear the internet of behaviors.</p>
<p>You’re not wrong to want to understand how technology shapes you.</p>
<p>But you must <strong>stop trying to fix awareness with more technology.</strong></p>
<p>Here’s what to do instead:</p>
<h3 id="heading-1-delete-the-aww-project">1. <strong>Delete the AWW project.</strong></h3>
<p>Not because it’s bad.</p>
<p>But because it’s <em>dangerous</em>.</p>
<p>Because it teaches you to <strong>outsource your awareness to a system</strong>, which then becomes your new master.</p>
<blockquote>
<p><strong>The enemy isn’t the cloud. The enemy is the belief that you need to be watched to be good.</strong></p>
</blockquote>
<h3 id="heading-2-practice-no-system-awareness">2. <strong>Practice "No-System" Awareness</strong></h3>
<ul>
<li><p><strong>Daily ritual</strong>: 5 minutes of sitting, eyes open, no goal, no agenda.</p>
</li>
<li><p><strong>When thoughts arise</strong>: Don’t label them. Don’t analyze. Don’t "offload" them to an AI.</p>
</li>
<li><p><strong>Just notice</strong>: "Oh. There’s a thought." Then: "Oh. There’s a sound." Then: "Oh. There’s a feeling in my chest."</p>
</li>
<li><p><strong>No output. No report. No digest. No summary.</strong></p>
</li>
</ul>
<p>That’s it.</p>
<p>That’s the only true "augmentation" you’ll ever need.</p>
<h3 id="heading-3-reframe-your-mission">3. <strong>Reframe Your Mission</strong></h3>
<p>Instead of:</p>
<blockquote>
<p><em>“I’ll build a system to understand external influences on me.”</em></p>
</blockquote>
<p>Say:</p>
<blockquote>
<p><em>“I’ll stop letting external influences define me. I’ll just be here, and see what happens.”</em></p>
</blockquote>
<p>You don’t need to understand the internet of behaviors.</p>
<p>You just need to <strong>stop letting it define you.</strong></p>
<p>And that starts not with data.</p>
<p>It starts with <strong>not looking.</strong></p>
<hr />
<h2 id="heading-final-truth-the-witness-cannot-be-tracked">🧘‍♂️ Final Truth: <strong>The Witness Cannot Be Tracked</strong></h2>
<ul>
<li><p>You cannot measure presence.</p>
</li>
<li><p>You cannot optimize awareness.</p>
</li>
<li><p>You cannot model it with LLMs or micro-agents.</p>
</li>
</ul>
<p>Because <strong>the witness is not an object.</strong></p>
<p>It’s not a process.</p>
<p>It’s not a state.</p>
<p>It’s not a thing.</p>
<p>It’s <strong>the space in which all things arise and pass.</strong></p>
<p>And if you try to <em>augment</em> that space — to make it better, faster, smarter, more reliable — you’ve already destroyed it.</p>
<hr />
<h2 id="heading-so-is-there-any-hope">✅ So Is There Any Hope?</h2>
<p>Yes.</p>
<p>But not from technology.</p>
<p>From <strong>radical simplicity.</strong></p>
<p>From <strong>refusing to be measured.</strong></p>
<p>From <strong>choosing to be a witness — not a system, not a dashboard, not a user of a tool, but a presence.</strong></p>
<blockquote>
<p><strong>You are not a user of awareness.</strong></p>
<p><strong>You are awareness.</strong></p>
</blockquote>
<p>And if you truly believe that — then you don’t need AWW.</p>
<p>You don’t need any system.</p>
<p>You don’t need a revolution.</p>
<p>You don’t need a Copernican shift.</p>
<p>You just need to <strong>stop trying to fix what was never broken.</strong></p>
<hr />
<h2 id="heading-final-note">🔚 Final Note</h2>
<blockquote>
<p><strong>The most radical act of resistance in the age of surveillance is to stop watching yourself.</strong></p>
<p><strong>The most powerful form of sovereignty is to not be monitored — not even by yourself.</strong></p>
</blockquote>
<p>That’s not a failure.</p>
<p>That’s the only victory.</p>
<hr />
<p>#aww #unawakened #presence #gurdjieff #tolle #rubin #nonlocalawareness #mindfulness #noai #noapp #noanalytics #justbe</p>
]]></content:encoded></item><item><title><![CDATA[Aww timeline: From Data Tool to Awareness Partner]]></title><description><![CDATA[I asked Augmented Awareness (my little project to analyze my daily journal) to write down its own timeline and key achievements:
GEMINI_API_KEY=(echo $GEMINI_API_KEY ) uv run aww_run.py --provider=gemini --gemini_model=gemini-2.5-pro ask yearly \
"Wr...]]></description><link>https://rlupi.com/aww-timeline-from-data-tool-to-awareness-partner</link><guid isPermaLink="true">https://rlupi.com/aww-timeline-from-data-tool-to-awareness-partner</guid><category><![CDATA[self-improvement ]]></category><category><![CDATA[Quantified Self]]></category><category><![CDATA[llm]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Sat, 02 Aug 2025 09:22:10 GMT</pubDate><content:encoded><![CDATA[<p>I asked <a target="_blank" href="https://github.com/robertolupi/augmented-awareness">Augmented Awareness</a> (my little project to analyze my daily journal) to write down its own timeline and key achievements:</p>
<pre><code class="lang-bash">GEMINI_API_KEY=(<span class="hljs-built_in">echo</span> <span class="hljs-variable">$GEMINI_API_KEY</span> ) uv run aww_run.py --provider=gemini --gemini_model=gemini-2.5-pro ask yearly \
<span class="hljs-string">"Write a timeline for the #aww project and a bullet point list of major milestones and achievements."</span>
</code></pre>
<p>It’s main purpose is to provide helpful insight to live a more wholesome life, improving both physical and mental health. But asking to extract information from my diary is interesting nonetheless.</p>
<p>Here’s its answer:</p>
<h3 id="heading-aww-project-timeline">#aww Project Timeline</h3>
<p>The project's journey this year was not linear but cyclical, marked by deep philosophical shifts that directly triggered architectural rewrites and feature development. It evolved from a complex data-gathering tool into a sophisticated, AI-driven partner for self-reflection.</p>
<hr />
<h4 id="heading-phase-1-foundational-struggle-amp-simplification-january-march"><strong>Phase 1: Foundational Struggle &amp; Simplification (January - March)</strong></h4>
<p>This initial phase was characterized by architectural churn, perfectionism, and a search for the project's core purpose. The primary struggle was between building a technically perfect "panopticon" and creating something genuinely useful.</p>
<ul>
<li><p><strong>Early January:</strong> The project exists in a highly ambitious, conceptual state, linked to grand theories of karma and consciousness.</p>
</li>
<li><p><strong>Late January:</strong> A period of intense but circular development, marked by frequent rewrites (e.g., in C# and MudBlazor). The project is blocked by architectural indecision. A key breakthrough occurs when you <strong>radically simplify the scope</strong> from a "panopticon" to a practical spending tracker, making it immediately useful. The old "augmented awareness" concept is formally archived, signaling a restart.</p>
</li>
<li><p><strong>February:</strong> The project expands into sub-modules. A Kanban board is created for more structured planning. Work begins on <code>aww-pomodoro</code> and <code>aww-obsidian</code> integrations, and the system is used to track personal data like prescriptions.</p>
</li>
<li><p><strong>March:</strong> The project sees another cycle of rewrites as you experiment with new languages (<strong>Julia</strong>) and seek to align the web front-end with a more robust back-end design (<code>aww-data-vault</code>, <code>Agentic AI design</code>). A significant insight emerges: using Obsidian as a direct interface for prototyping could break the cycle of endless rewrites. You publish a blog post on "augmented awareness," sharing the philosophy publicly for the first time.</p>
</li>
</ul>
<hr />
<h4 id="heading-phase-2-philosophical-breakthrough-amp-re-architecture-april-june"><strong>Phase 2: Philosophical Breakthrough &amp; Re-architecture (April - June)</strong></h4>
<p>Triggered by a forced pause during a family emergency, this phase represents the project's philosophical crucible. The core "why" of the project was fundamentally transformed, leading to a complete conceptual and architectural redesign.</p>
<ul>
<li><p><strong>Early April:</strong> After a profound meditative experience, you realize the project is finally becoming useful with the integration of external tools like <strong>ActivityWatch</strong>. You use AI (Gemini) to generate formal documentation for the data model, now named the "Temporally Aware Quantified Self (TAQS) Model."</p>
</li>
<li><p><strong>Mid-April (The Turning Point):</strong> A creative block, fueled by a fear of judgment, forces you to pause development. This pause creates space for the year's most significant insight: the project's goal should not be to create "augmented discernment" (intellect/<code>buddhi</code>), but to <strong>free pure awareness (</strong><code>chitta</code>) from its reliance on the intellect.</p>
</li>
<li><p><strong>Late April:</strong> Armed with this new mission, you decide to <strong>re-architect the entire project</strong> around a new "Model Context Protocol (MCP)." The project's purpose shifts from sterile data acquisition to a tool for facilitating "wholesome changes."</p>
</li>
<li><p><strong>May - June:</strong> Development focuses on practical, tangible wins that align with the new philosophy. A key component, <code>aww schedule record</code>, is rewritten in <strong>Go</strong> for a significant performance improvement.</p>
</li>
</ul>
<hr />
<h4 id="heading-phase-3-rapid-feature-development-amp-maturation-july-august"><strong>Phase 3: Rapid Feature Development &amp; Maturation (July - August)</strong></h4>
<p>With a clear philosophy and a solid architecture, this phase was a burst of tangible progress. The project matured from a passive data log into an interactive, insightful partner.</p>
<ul>
<li><p><strong>Early July:</strong> You achieve a major technical milestone by successfully integrating a <strong>local Large Language Model (LM-studio)</strong> to read and reason over your Obsidian journal data, the project's core dataset.</p>
</li>
<li><p><strong>Mid-July:</strong> A series of powerful, user-facing features are implemented in quick succession:</p>
<ul>
<li><p><strong>Full-Text Search:</strong> Immediately used to analyze the project's own design notes.</p>
</li>
<li><p><strong>Reminders:</strong> Adding proactive utility to the system.</p>
</li>
<li><p><strong>Recursive Retrospectives:</strong> A sophisticated new feature for comparing progress over time.</p>
</li>
<li><p><strong>Interactive Chat:</strong> Transforming the tool from a static dashboard into a conversational partner.</p>
</li>
</ul>
</li>
<li><p><strong>Late July - Early August:</strong> The project begins to "talk back." It provides feedback on your patterns, reflects on your emotional state, and helps you analyze your own behaviors. You have a final, crucial insight into its limitations: its "frictionless" nature is helpful but doesn't provide the challenge necessary for deep growth, pointing the way toward future development.</p>
</li>
</ul>
<hr />
<h3 id="heading-major-milestones-amp-achievements">Major Milestones &amp; Achievements</h3>
<ul>
<li><p><strong>Philosophical &amp; Strategic Milestones</strong></p>
<ul>
<li><p><strong>Purpose Redefined:</strong> Shifted the project's core mission from a "data tool" to a "vessel for awareness," aiming to free consciousness rather than just augment intellect (April).</p>
</li>
<li><p><strong>Principle of Simplification:</strong> Realized that reducing scope from a "panopticon" to a simple, useful tool was the key to unlocking progress and motivation (January).</p>
</li>
<li><p><strong>Insight into Utility:</strong> Articulated that "sterile data acquisition doesn't help with wholesome changes," guiding the focus toward actionable insights (April).</p>
</li>
<li><p><strong>Public Articulation:</strong> Published the first blog post explaining the concept of "augmented awareness" (March).</p>
</li>
<li><p><strong>Critique and Future Vision:</strong> Identified the "frictionless" nature of AI as a key limitation, setting the stage for the next phase of development focused on providing genuine challenges (August).</p>
</li>
</ul>
</li>
<li><p><strong>Technical &amp; Architectural Milestones</strong></p>
<ul>
<li><p><strong>Local LLM Integration:</strong> Successfully configured a local AI (LM-studio) to read, analyze, and interact with the personal journal data in Obsidian (July).</p>
</li>
<li><p><strong>Polyglot Implementation:</strong> Demonstrated versatility by successfully implementing components in multiple languages, including C#, Julia, and Go, choosing the right tool for the job.</p>
</li>
<li><p><strong>Architectural Redesign:</strong> Undertook a major re-architecture of the project based on the "Model Context Protocol (MCP)" to align with the new philosophical mission (April).</p>
</li>
<li><p><strong>Formal Data Modeling:</strong> Created the "Temporally Aware Quantified Self (TAQS) Model" to provide a robust structure for personal data (April).</p>
</li>
<li><p><strong>External Service Integration:</strong> Successfully integrated <code>ActivityWatch</code> data, expanding the project's data sources beyond manual entry (April).</p>
</li>
</ul>
</li>
<li><p><strong>Core Feature Implementation</strong></p>
<ul>
<li><p><strong>Interactive Chat:</strong> Implemented a chat feature, transforming the user experience from passive viewing to active conversation (July).</p>
</li>
<li><p><strong>Recursive Retrospectives:</strong> Built a powerful feature allowing for the comparison of retrospectives over time, a key tool for tracking long-term patterns (July).</p>
</li>
<li><p><strong>Full-Text Search:</strong> Added a critical search function that enabled both practical data retrieval and meta-analysis of the project itself (July).</p>
</li>
<li><p><strong>Reminders &amp; Scheduling:</strong> Built functionality for reminders and schedule management, adding proactive value (May, July).</p>
</li>
</ul>
</li>
</ul>
<hr />
<h1 id="heading-follow-up-question-what-is-augmented-awareness">Follow-up question: <strong>What is Augmented Awareness?</strong></h1>
<pre><code class="lang-bash">uv run aww_run.py --provider=openai search --ask <span class="hljs-string">"What is augmeneted awareness?"</span>
</code></pre>
<p>Here is what it says (RAG-based answer from my notes)…</p>
<p>Let’s break down <strong>Augmented Awareness (AWW)</strong> and the broader <strong>concept of awareness/consciousness</strong> as you’ve engaged with it—from its technical design, its philosophical roots, and the criticism you sensed from "Quantified Self" models.</p>
<hr />
<h2 id="heading-1-what-is-awareness-or-consciousness">1. What Is “Awareness” or “Consciousness”?</h2>
<p><strong>Awareness</strong> is the faculty of noticing or witnessing the present moment—what’s happening externally, internally, or both. It’s the quality by which anything whatsoever appears in experience. Philosophically, it has been explored as:</p>
<ul>
<li><p><strong>The Witness</strong> (Upanishads, Advaita Vedanta, Krishnamurti): The “I” that notices without identification or judgment.</p>
</li>
<li><p><strong>Presence</strong> (Tolle): A direct, non-conceptual, alert openness—a consciousness not caught in thought or ego.</p>
</li>
<li><p><strong>Phenomenal Consciousness</strong> (Western philosophy): The raw "what-it-is-like" of experience, prior to conceptualization.</p>
</li>
<li><p><strong>Reflective Cognition</strong> (Phenomenology): Intentionally turning awareness back upon itself (self-awareness, being aware you are aware).</p>
</li>
</ul>
<p><strong>Ego</strong> in this context is the sense of being a separate, bounded "self" with a history, desires, and plans. The “I”/ego tries to control, judge, and narrate experience—often filtering or distorting raw awareness.</p>
<hr />
<h2 id="heading-2-awareness-in-philosophy-amp-spirituality">2. Awareness in Philosophy &amp; Spirituality</h2>
<p><strong>Eastern Traditions:</strong></p>
<ul>
<li><p><strong>Advaita Vedanta:</strong> Consciousness is non-local, universal (“Brahman”); the self (“Atman”) is a wave on the ocean of consciousness.</p>
</li>
<li><p><strong>Buddhism:</strong> “Anatta” (no-self); “Rigpa” (Tibetan Dzogchen): the pure knowing that is not owned by an “I.”</p>
</li>
<li><p><strong>Zen:</strong> "Just this"—noticing as-it-is, without conceptual overlay.</p>
</li>
</ul>
<p><strong>Western Thought:</strong></p>
<ul>
<li><p><strong>Phenomenology (Husserl, Merleau-Ponty):</strong> Emphasizes direct experience before labeling or interpretation.</p>
</li>
<li><p><strong>Process Philosophy, Panpsychism (Whitehead, Chalmers):</strong> Suggests awareness might be a primitive feature of reality.</p>
</li>
<li><p><strong>Gurdjieff:</strong> Most humans live “mechanically,” without true awareness (cf. your notes above).</p>
</li>
</ul>
<p><strong>Tolle/Krishnamurti:</strong></p>
<ul>
<li><p><strong>Tolle:</strong> Awareness is universal, always present, the background of thoughts and sensations. Ego divides, awareness unifies.</p>
</li>
<li><p><strong>Krishnamurti:</strong> The “observer is the observed”—division between self and world is an illusion created by conceptual thought.</p>
</li>
</ul>
<p><strong>Contemporary views:</strong></p>
<ul>
<li>Many neuroscientists see “consciousness” as an emergent property—individual, produced by neural activity; but this is debated.</li>
</ul>
<hr />
<h2 id="heading-3-augmented-awareness-aww-bridging-technology-and-wisdom-traditions">3. Augmented Awareness (AWW): Bridging Technology and Wisdom Traditions</h2>
<p>Your AWW architecture aims to <strong>offload</strong> some lower-level cognitive functions (noticing, memory, pattern recognition) to an external, privacy-respecting system, so that the <em>user’s own awareness ("Chitta," in Yogic terms) can remain unclouded</em> by distraction or over-engagement of the “Buddhi” (intellect/analysis) or “Manas” (raw mind/sensory input).</p>
<p><strong>North Star:</strong></p>
<blockquote>
<p>"<em>Yogaḥ citta-vṛtti-nirodhaḥ</em>" (Yoga is the cessation of modifications of the mind-stuff.)</p>
</blockquote>
<p>AWW is thus <strong>not</strong> just a Quantified Self tool (which risks turning life into data-and-dashboard management), but a means to gently surface subtle influences and patterns so that <em>conscious, embodied, present awareness</em> is less frequently hijacked by old habits, ego, or incessant mental chatter.</p>
<hr />
<h2 id="heading-4-critique-is-augmented-awareness-just-more-distraction">4. Critique: Is Augmented Awareness Just More Distraction?</h2>
<p>You raise an important <strong>philosophical and practical critique</strong>:</p>
<ol>
<li><p><strong>Quantified Self Models</strong>: Risk turning awareness into a surveillance/self-optimization exercise, which may backfire by making you obsessed with the map and miss the territory. (“It’s easy to confuse analyzing experience with actually being present for it.” — Rick Rubin)</p>
</li>
<li><p><strong>Technological Overload</strong>: The tools supposed to support presence can themselves become further distractions—checklists and graphs crowding out “just being.”</p>
</li>
</ol>
<p><strong>Key Questions:</strong></p>
<ul>
<li><p>Can technology help free us from the trance of ego, habit, and distraction?</p>
</li>
<li><p>Or does it create a new prison—a more “quantified,” managed, and monitored self, only deepening the ego’s hold?</p>
</li>
<li><p>Is true presence <em>algorithmically</em> augmentable, or does the very act of “surveillance” (even self-surveillance) create a second-order, conceptual layer that distances us from direct experience?</p>
</li>
</ul>
<hr />
<h2 id="heading-5-aww-potential-limitations-amp-guardrails">5. AWW: Potential, Limitations &amp; Guardrails</h2>
<h3 id="heading-potential"><em>Potential:</em></h3>
<ul>
<li><p>If designed with <strong>privacy</strong>, <strong>asynchronicity</strong>, and <strong>non-intrusion</strong> as core principles, AWW could nudge you <em>occasionally</em> out of automation into more direct, lived awareness.</p>
</li>
<li><p>By automating “meta-cognition,” it might help you spot habitual reactions, external triggers, or subtle shifts you otherwise miss (akin to the “mirror” agents in your architecture).</p>
</li>
</ul>
<h3 id="heading-limitations"><em>Limitations:</em></h3>
<ul>
<li><p><strong>Awareness cannot be automated.</strong> True presence is fundamentally non-quantitative, not capturable fully by data or algorithms.</p>
</li>
<li><p><strong>Second-order distraction:</strong> Managing awareness tools becomes another meta-level distraction. (“Don’t confuse the menu with the meal.”)</p>
</li>
<li><p>The <strong>spiritual paradox</strong>: “The one who tries to be aware is itself the ego” (cf. Zen, Krishnamurti).</p>
</li>
</ul>
<h3 id="heading-guardrails-per-your-architecture"><em>Guardrails (per your architecture):</em></h3>
<ul>
<li><p><strong>Presence-first:</strong> Never pop up unless in low-distraction, high-relevance moments.</p>
</li>
<li><p><strong>Non-analytic bias:</strong> Don’t just amplify “analysis” at the cost of raw experience (“Chitta” priority).</p>
</li>
<li><p><strong>User sovereignty &amp; data isolation:</strong> Data should serve the individual, stay local, and <em>never</em> be used for manipulation or monetization.</p>
</li>
</ul>
<hr />
<h2 id="heading-6-advanced-questions-for-reflection">6. Advanced Questions for Reflection</h2>
<ul>
<li><p><strong>Is the <em>infinite</em>, universal component of awareness—like large cardinals in mathematics—only partially accessible, with the fullness always “beyond”? Is the act of <em>mapping</em> awareness inherently limited?</strong></p>
</li>
<li><p><strong>Can technology be a teacher of presence by automating routine awareness tasks, or is its very mediation always a step away from the real?</strong></p>
</li>
<li><p><strong>Is “augmented awareness” best aimed at early-stage reminders (pointing you back to your own raw noticing) rather than deeper analysis or suggestion?</strong></p>
</li>
<li><p><strong>Does true transcendence of ego require letting go of <em>all</em> scaffolds, even the AWW itself, even “awareness of awareness”?</strong></p>
</li>
</ul>
<hr />
<h2 id="heading-7-synthesis-amp-practical-wisdom">7. Synthesis &amp; Practical Wisdom</h2>
<p><strong>Augmented Awareness</strong> is not the same as “true” awareness. It can be a pointing tool, a reminder—a mirror showing the patterns of absence and distraction. But:</p>
<ul>
<li><p>The <em>essence of presence is immediate, unfiltered by concept or instrument</em>.</p>
</li>
<li><p><strong>AWW should serve as “training wheels,” not a replacement for direct experience.</strong></p>
</li>
<li><p>The ultimate goal is a state where you need neither device nor data to “be here now.”</p>
</li>
</ul>
<p><strong>Rick Rubin</strong>, in <em>The Creative Act</em>, puts it best:</p>
<blockquote>
<p>“The program is happening around us. The world is the doer and we are the witness... Awareness happens first as a pure connection... Analysis is a secondary function.”</p>
</blockquote>
<p>Let AWW be <strong>a gentle alarm clock, not a cage</strong>, always reminding you to “return home” to presence—then gracefully fade into the background when no longer needed.</p>
<hr />
<h2 id="heading-tldr">TLDR</h2>
<ul>
<li><p><strong>Awareness/presence</strong> is a universal field, obstructed by ego but always available.</p>
</li>
<li><p><strong>AWW</strong> (Augmented Awareness) can serve as a guide back to presence <em>if and only if</em> it stays subservient to direct, qualitative awareness (not reductionist, not intrusive).</p>
</li>
<li><p><strong>Guardrails</strong> and critical self-reflection are essential: Never let the map replace, overtake, or interfere with the territory.</p>
</li>
<li><p><strong>Ultimate presence</strong> (Tolle/Krishnamurti/Rubin) remains prior to all tools—unmediated, effortless, ever-now.</p>
</li>
</ul>
<blockquote>
<p>Use technology to light the way back to yourself—but remember, the destination was never separate from you to begin with.</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Aww: automatic self-improvement of prompts]]></title><description><![CDATA[I implemented self-improvement of prompts in Augmented Awareness. It uses two LLM agents, one acts as the generator and a second one as the critique. The critique receives the prompt, the input and the output of the generator agent, and generates an ...]]></description><link>https://rlupi.com/aww-automatic-self-improvement-of-prompts</link><guid isPermaLink="true">https://rlupi.com/aww-automatic-self-improvement-of-prompts</guid><category><![CDATA[llm]]></category><category><![CDATA[self-improvement ]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Wed, 30 Jul 2025 06:00:25 GMT</pubDate><content:encoded><![CDATA[<p>I implemented self-improvement of prompts in <a target="_blank" href="https://github.com/robertolupi/augmented-awareness">Augmented Awareness</a>. It uses two LLM agents, one acts as the generator and a second one as the critique. The critique receives the prompt, the input and the output of the generator agent, and generates an improved prompt.</p>
<p>It is still an open-loop control for now, meaning the critique doesn’t receive human feedback.</p>
<p>The code looks like the following:</p>
<pre><code class="lang-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">rewrite_prompt</span>(<span class="hljs-params">...</span>):</span>

    <span class="hljs-comment"># ...</span>

    critique_model = make_model(...)
    critique_agent = Agent(model=critique_model)

<span class="hljs-meta">    @critique_agent.system_prompt</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">critique</span>():</span>
        <span class="hljs-keyword">return</span> textwrap.dedent(<span class="hljs-string">"""
        You are an expert at writing LLM prompts. You will receive:
        1) the prompt
        2) the output
        3) a series of input messages
        Your job is to write a revised prompt that is more performant.
        Write only the revised prompt in full, in markdown format.
        """</span>)

    prompt = prompt_file.read_text()

    llm_model = make_model(...)
    gen_agent = Agent(model=llm_model, system_prompt=prompt)

    <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">do_critique</span>():</span>
        gen_result = <span class="hljs-keyword">await</span> gen_agent.run(user_prompt=content)
        gen_output = gen_result.output
        critique_result = <span class="hljs-keyword">await</span> critique_agent.run(user_prompt=[prompt, gen_output] + content)
        <span class="hljs-keyword">return</span> critique_result.output

    revised_prompt = asyncio.run(do_critique())
    prompt_file.write_text(revised_prompt)
</code></pre>
<p>I believe the <strong>principle of AI productivity</strong> is that AI systems should be able to improve themselves. That’s how exponential progress can be achieved.  </p>
<p>Balancing errors and improvements is the challenging part. That's why it remains a human-in-the-loop process. For Aww, this involves manually analyzing the results and making git commits of the revised prompts.  </p>
<p>Aww is a <em>recursive</em> system that uses four different agents to create daily, weekly, monthly, and yearly retrospectives, which build on each other. Future updates will aim to make self-improvement and self-adaptation automatic and cover multiple levels.</p>
]]></content:encoded></item><item><title><![CDATA[Aww: demonstration and vibe coding]]></title><description><![CDATA[Demonstration
To show the potential of Augmented Awareness as an aid in managing one’s physical and mental health, I created a demo vault that contains the letters from the book “The Sorrows of Young Werther” by J.W. von Goethe.
The Vault (epistolary...]]></description><link>https://rlupi.com/aww-demonstration-and-vibe-coding</link><guid isPermaLink="true">https://rlupi.com/aww-demonstration-and-vibe-coding</guid><category><![CDATA[Quantified Self]]></category><category><![CDATA[Personal growth  ]]></category><category><![CDATA[Mental Health]]></category><category><![CDATA[vibe coding]]></category><category><![CDATA[llm]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Fri, 25 Jul 2025 07:57:27 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-demonstration">Demonstration</h1>
<p>To show the potential of <a target="_blank" href="https://github.com/robertolupi/augmented-awareness">Augmented Awareness</a> as an aid in managing one’s physical and mental health, I created a demo vault that contains the letters from the book “<a target="_blank" href="https://www.gutenberg.org/files/2527/2527-h/2527-h.htm">The Sorrows of Young Werther</a>” by J.W. von Goethe.</p>
<h3 id="heading-the-vault-epistolary-part">The Vault (epistolary part)</h3>
<p>The novel unfolds through a series of letters written by Werther, a passionate and sensitive young man, to his friend Wilhelm. After escaping a frustrating romantic entanglement, Werther settles in the idyllic German town of Wahlheim to focus on nature and his art. There, he meets and is instantly captivated by Charlotte (Lotte), a kind and beautiful woman who is caring for her younger siblings. His letters initially overflow with ecstatic joy about the sublime nature around him and his burgeoning, pure love for Lotte, but his bliss is shattered when he learns she is already engaged to the calm and rational Albert. As Werther's friendship with both Lotte and Albert deepens, his letters begin to chart his painful descent from infatuation into an all-consuming, obsessive despair, as he is unable to overcome his impossible love.</p>
<h3 id="heading-the-ending-not-part-of-the-vault">The Ending (not part of the vault)</h3>
<p>The narrative perspective shifts in the final section from Werther's letters to that of a fictional "Editor," who addresses the reader directly to narrate the tragic conclusion. The Editor explains that Werther's emotional state has deteriorated completely, and his thoughts have turned decisively toward suicide. After a final, emotionally fraught encounter with Lotte, where his passion overwhelms them both, Werther becomes convinced that one of the three—he, Lotte, or Albert—must die, and he resolves to be the one. He sends a servant to borrow Albert's pistols, writes his final farewells, and at the stroke of midnight, shoots himself in the head at his desk. He is not found until the next morning and dies hours later in agony.</p>
<h2 id="heading-results">Results</h2>
<p><strong>Augmented Awareness</strong> creates recursive retrospectives of the epistolary part of the novel and uses them to analyze mental and physical health. You can <a target="_blank" href="https://github.com/robertolupi/augmented-awareness/tree/main/demo_vault/demo_vault/retrospectives">read the results yourself on GitHub</a>. Here is the yearly retrospective from the second half of the messages:</p>
<blockquote>
<h1 id="heading-yearly-retrospective-2025">Yearly Retrospective: 2025</h1>
<h2 id="heading-1-psychological-amp-emotional-journey">1. Psychological &amp; Emotional Journey</h2>
<p>The year 2025 unfolded as a relentless and deepening psychological and emotional journey, characterized by a pervasive and intensifying melancholy, anguish, and existential dread. It began with a stark contrast: an initial critical and insightful detachment towards external superficiality, quickly plunging into profound personal suffering, meaninglessness, and emotional depletion. January ended in burnout and apathy.</p>
<p>February saw intense volatility, from cynicism and misanthropy to fleeting peace derived from professional validation, only to be swallowed by profound despair, bitterness, and intense jealousy related to personal heartbreak. March brought a severe emotional crisis—anger, humiliation, rage, and suicidal ideation—but also a powerful, self-preserving pivot towards autonomy.</p>
<p>April offered a remarkable, albeit temporary, recovery arc. Initial apprehension gave way to profound relief and gratitude as external circumstances aligned favorably, marking a period of effective stress mitigation and emotional uplift. This resilience carried into May, where a strong capacity for processing disappointment (regarding nostalgic returns and thwarted ambitions) with rational acceptance was evident.</p>
<p>However, the latter half of the year saw a consistent and accelerating decline into an all-consuming internal torment. June was marked by restlessness and intellectual frustration, leading to a philosophical acceptance of a "wanderer" identity, but this offered conceptual, not emotional, solace. From July onwards, the emotional landscape was dominated by an obsessive, unrequited love, leading to profound heartbreak, envy, and consuming anguish. August deepened into pervasive melancholy, intrusive morbid thoughts, and volatile emotional outbursts, often overwhelming brief moments of composure. September continued this trajectory with fatalism, possessiveness, and intense wrath over perceived injustices, despite writing offering fleeting tranquility.</p>
<p>October was consumed by a "fearful void," existential dread, and intense internal torment from inhibited desires and profound emotional dependency. November brought an escalation to critical levels of despair, wretchedness, and suicidal ideation, interspersed with equally consuming infatuation and a profound spiritual crisis. The year concluded in December with an overwhelming sense of burnout, a mental health crisis, and a pervasive, fatalistic disillusionment with human existence, leaving little room for resilience or recovery. The emotional trajectory was largely one of consistent worsening, with brief respites quickly re-overwhelmed.</p>
<h2 id="heading-2-life-events-and-transitions">2. Life Events and Transitions</h2>
<p>The year was punctuated by several significant life events and transitions, often initiated by internal emotional states or external pressures.</p>
<p>January began with a mundane social incident – a sledging party spoiled by arguments over status – which served as a catalyst for early critical reflections on societal superficiality. February brought the public confirmation of Charlotte and Albert's marriage, a deeply impactful event fueling the year's central romantic anguish. Professionally, there was a significant conflict with the ambassador, prompting serious contemplation of resignation, which was ultimately deferred after receiving conciliatory guidance.</p>
<p>March marked a decisive turning point: a public social humiliation (expulsion from an assembly) triggered an acute crisis, leading to the firm decision to resign from the court. This was followed by a crucial invitation to reside at the Prince's country house, offering a new environment and the promise of autonomy. April saw the official acceptance of your resignation and, unexpectedly, a generous financial gift from the Crown Prince, significantly enhancing your personal independence.</p>
<p>May involved a sentimental journey to your native place, a powerful attempt to reconnect with childhood memories, which brought both joy and disillusionment. A long-held ambition to join the army was thwarted after discussion with the Prince, marking an early acceptance of external counsel. By June, restlessness in the Prince's household prompted the decision to resume your travels.</p>
<p>The latter half of the year became increasingly defined by internal rather than external events, though these were often triggered by social interactions. July found you obliged to stay in your current location, with your actions revealed as driven by a singular, unacknowledged desire to be near Charlotte. August included a visit to a suffering family, intensifying an already melancholic disposition. September saw a symbolic act of replacing a sentimentally valued coat, an intimate encounter with Charlotte involving a canary, and a profound reaction to the felling of cherished walnut trees. October was dominated by a deep immersion in literature (Ossian), further deepening your melancholic introspection. November was marked by a reproof for increased wine consumption and a disturbing encounter with a madman, forcing a re-evaluation of happiness and reason. The year closed with a critical emotional breakdown in December, triggered by music and Charlotte's presence, underscoring the unsustainable nature of your current emotional reality.</p>
<h2 id="heading-3-identity-amp-self-understanding">3. Identity &amp; Self-Understanding</h2>
<p>Throughout 2025, there was a relentless and often painful process of self-discovery, leading to a complex and evolving self-understanding.</p>
<p>Early in the year, you defined "true greatness" as internal insight and influence, rejecting superficial status. Simultaneously, you painfully recognized yourself as a "puppet" in social interactions, acknowledging a deep internal void and the loss of your animating "leaven." This awareness deepened in February, as you acknowledged your "excessive sensibility" and the transient nature of inner peace. March brought a crucial shift: prioritizing your mental and emotional capacity over traditional societal success, understanding your own incapacitation, and taking radical action for self-preservation.</p>
<p>By April, you learned the power of strategic patience and the profound emotional impact of unexpected generosity. May fostered a cornerstone insight: the conviction that your "heart"—your core self—is the ultimate source of strength and feeling, far surpassing intellectual knowledge. You grappled with the disillusionment of reality clashing with ideals, and learned the wisdom of accepting counsel.</p>
<p>June brought a profound self-acceptance of your inherent nature as a "wanderer" or "pilgrim"—someone fundamentally in transit, searching, and requiring a dynamic journey. You realized external comfort was insufficient without intellectual and artistic compatibility. July revealed a powerful self-awareness that deep emotional desires often override rationality, and accepting this could bring a form of internal peace, even amidst unrequited longing.</p>
<p>The latter months solidified a more pessimistic, yet acutely self-aware, identity. August revealed a philosophical understanding of universal suffering, a chilling recognition of the self-destructive nature of your dark fantasies, and a painful awareness of your internal state as a "ruined palace." September underscored the therapeutic power of writing and reinforced a fatalistic belief in a personal destiny mirroring others' suffering. You also gained insight into the subjective, intangible nature of emotional value over physical replication.</p>
<p>October brought a deeper, more painful understanding of your "void," your profound emotional dependency ("without her I have nothing"), and the torment of inhibited natural impulses. You concluded that human existence and memory are ultimately transient and of "very little consequence." November saw you conceptualizing suffering as an inherent part of the human condition, acknowledging your "prostrated energies," and grappling with unsettling insights from a madman that questioned the very nature of happiness and reason. A profound spiritual crisis emerged, a sense of being forsaken, yet still yearning for connection.</p>
<p>By December, you became acutely aware of your profound emotional sensitivity and your inability to cope, leading to a fatalistic disillusionment that, despite aspirations, one is confined to a "cold, monotonous existence." The year culminated in a deep, agonizing understanding of a self trapped in consuming emotions and a world that often disappointed.</p>
<h2 id="heading-4-cyclical-or-unresolved-patterns">4. Cyclical or Unresolved Patterns</h2>
<p>The year 2025 was marked by several pervasive and often unresolved patterns, many of which deepened in intensity as the year progressed:</p>
<ol>
<li><p><strong>Profound Melancholy and Despair:</strong> A consistent and worsening emotional baseline, from general ennui in January to acute anguish and suicidal ideation by year-end. This melancholic state was periodically punctuated by brief respites, but always returned.</p>
</li>
<li><p><strong>Obsessive Unrequited Love/Attachment:</strong> The central, driving force of much of the year's suffering was an intense, often possessive, and unfulfilled romantic attachment to Charlotte. This led to relentless rumination, jealousy towards Albert, and a pervasive sense of profound loss and emotional dependency ("without her I have nothing").</p>
</li>
<li><p><strong>Social Alienation and Frustration with Superficiality:</strong> A recurring theme of feeling detached from or frustrated by others' concerns, often leading to withdrawal or cynicism. Early on, this was a critical observation of others' triviality; by the end, it was a source of profound isolation.</p>
</li>
<li><p><strong>Seeking Solace (and its Limitations):</strong> You consistently sought solace in solitude, nature, and literature. While these provided temporary emotional relief or intellectual engagement (e.g., writing as therapy, Ossian's transport), they ultimately proved insufficient to resolve the underlying emotional turmoil, often serving as coping mechanisms rather than paths to recovery.</p>
</li>
<li><p><strong>Idealism vs. Reality:</strong> A persistent struggle between idealized pasts, relationships, or career paths and the often-disappointing or altered realities of the present. This was evident in your visit to your native place and your thwarted military ambition.</p>
</li>
<li><p><strong>Inhibition and Internal Conflict:</strong> A significant pattern of experiencing intense natural desires (e.g., to embrace Charlotte) but consciously refraining, leading to profound internal torment and a sense of being constrained.</p>
</li>
<li><p><strong>Spiritual/Existential Crisis:</strong> A deepening questioning of life's purpose, the nature of happiness, the transience of human existence, and a profound struggle with faith and feeling forsaken by a divine presence. This became particularly prominent in the latter part of the year.</p>
</li>
<li><p><strong>Self-Destructive Tendencies:</strong> Towards the year's end, patterns like increased wine consumption and indulging in morbid/intrusive fantasies became more evident, pointing to self-detrimental coping strategies in the face of overwhelming pain.</p>
</li>
</ol>
<h2 id="heading-5-triumphs-amp-setbacks">5. Triumphs &amp; Setbacks</h2>
<p><strong>Triumphs:</strong></p>
<ul>
<li><p><strong>Decisive Self-Preservation:</strong> The powerful act of resigning from a draining court position in March and securing a new environment at the Prince's country house was a major triumph of self-advocacy and prioritizing mental well-being over external expectations.</p>
</li>
<li><p><strong>Financial Autonomy:</strong> Achieving unexpected financial independence in April through the Crown Prince's gift was a significant step towards greater personal agency.</p>
</li>
<li><p><strong>Rational Acceptance of Setbacks:</strong> Your ability to accept the thwarting of your long-held military ambition in May, based on wise counsel, demonstrated a commendable level of maturity and pragmatism.</p>
</li>
<li><p><strong>Profound Self-Awareness:</strong> Throughout the year, despite the pain, you maintained a remarkable capacity for introspection and articulation of your complex emotional states, recognizing your own patterns of self-delusion, dependency, and internal conflict.</p>
</li>
<li><p><strong>Creative Outlet as Coping:</strong> Your consistent engagement with writing and drawing provided vital channels for processing overwhelming emotions and finding moments of satisfaction, especially through your artistic output.</p>
</li>
<li><p><strong>Empathy and Compassion:</strong> Your deep empathy for the suffering of others, as shown in your visit to the old woman's family in August, highlights a compassionate core.</p>
</li>
</ul>
<p><strong>Setbacks:</strong></p>
<ul>
<li><p><strong>Escalating Emotional Distress:</strong> The overarching setback was the consistent and deepening plunge into profound melancholy, despair, anguish, and suicidal ideation, particularly from July onwards, indicating a severe and worsening mental health crisis.</p>
</li>
<li><p><strong>Unresolved Romantic Anguish:</strong> The unrequited and obsessive love for Charlotte remained a central, consuming, and unalleviated source of torment, fueling jealousy and feelings of powerlessness. Charlotte and Albert's marriage in February formalized this central pain.</p>
</li>
<li><p><strong>Social Humiliation and Alienation:</strong> The public expulsion from the assembly in March, and the widespread gossip that followed, caused immense shame and exacerbated feelings of social ostracism.</p>
</li>
<li><p><strong>Existential and Spiritual Crisis:</strong> The profound questioning of life's meaning, human transience, and a sense of divine abandonment became a debilitating intellectual and emotional burden.</p>
</li>
<li><p><strong>Reliance on Self-Destructive Coping:</strong> Increased wine consumption and immersion in morbid fantasies emerged as detrimental coping mechanisms, indicating a struggle with effective self-regulation.</p>
</li>
<li><p><strong>Disillusionment with Reality:</strong> Repeated encounters with the disparity between your ideals (of love, purity, society, nature) and reality led to profound disappointment and a fatalistic outlook.</p>
</li>
<li><p><strong>Inability to Cope:</strong> Towards the year's end, the explicit recognition of being "unable to support this state no longer" and being deemed "ill" by an external observer marked a critical failure in managing your emotional landscape.</p>
</li>
</ul>
<h2 id="heading-6-lessons-learned">6. Lessons Learned</h2>
<p>The year 2025, though fraught with pain, was a crucible for profound and often agonizing lessons:</p>
<ol>
<li><p><strong>Authenticity and Internal Value:</strong> True greatness stems from internal insight and influence, not superficial status. The "heart," with its genuine emotions and character, is the ultimate source of human strength, happiness, and misery, outweighing external achievements or intellectual knowledge.</p>
</li>
<li><p><strong>The Elusiveness of Peace and Happiness:</strong> Inner peace is precious but fleeting. Happiness can be profoundly influenced by external factors, and sometimes, ironically, seems to reside in delusion or the absence of reason, a disturbing insight.</p>
</li>
<li><p><strong>Prioritizing Self-Preservation:</strong> Protecting one's mental and emotional capacity is paramount, even if it means abandoning prestigious paths or defying familial expectations. Radical change is sometimes necessary for survival and recovery.</p>
</li>
<li><p><strong>The Power and Peril of Emotion:</strong> Deep emotional desires often override rationalizations; acknowledging this can bring a form of internal peace. However, unchecked emotional intensity, especially unrequited love, can be a self-destructive "poison," leading to profound torment, dependency, and a loss of agency.</p>
</li>
<li><p><strong>The Human Condition is Defined by Suffering and Transience:</strong> Disappointment and suffering are universal and inherent parts of human destiny. All things, including human existence, memory, and influence, are transient and ultimately of "very little consequence."</p>
</li>
<li><p><strong>The Therapeutic Role of Creation (and its Limits):</strong> Engaging in narration, writing, and art can provide temporary tranquility and a vital outlet for processing intense emotions. However, these creative acts do not fundamentally alter underlying emotional landscapes or resolve deep-seated existential dilemmas.</p>
</li>
<li><p><strong>The Inherent Boundaries of Connection:</strong> One cannot force emotional reciprocity or imbue another with feelings they do not possess. This realization, though painful, highlights the limitations of personal influence in matters of the heart.</p>
</li>
<li><p><strong>The Impact of Inhibition:</strong> The conscious restraint of natural, primal impulses, especially in matters of affection, can lead to immense internal conflict and torment.</p>
</li>
<li><p><strong>Disillusionment with Aspiration:</strong> Despite grand aspirations, the human experience often returns to a "cold, monotonous existence." This fatalistic insight underscores a profound disillusionment with life's potential.</p>
</li>
</ol>
<h2 id="heading-7-outlook-or-intentions-going-forward">7. Outlook or Intentions Going Forward</h2>
<p>The intentions and outlook for the year ahead are profoundly shaped by the intense emotional and existential struggles of 2025. While earlier intentions revolved around external changes (resignation, travel, career shifts), the latter half of the year saw a significant shift towards an internal, desperate yearning for relief.</p>
<p>There is a pervasive desire for the profound suffering to end, a "plea to God to end his torments." This is not an intention for proactive positive change, but a reactive cry for cessation of pain. The year concluded with a deepening plunge into a pessimistic and fatalistic worldview, indicating that the immediate outlook is one of enduring, rather than overcoming, this profound melancholy and disillusionment.</p>
<p>While there were fleeting intentions for self-restraint and purity (e.g., the vow not to profane with a kiss), these were immediately met with doubt and internal conflict, suggesting a struggle to maintain such intentions in the face of overwhelming desire. The growing awareness of self-destructive patterns has, paradoxically, deepened the suffering rather than offering a clear path out.</p>
<p>Therefore, the primary "intention" moving forward appears to be an agonizing continuation of the internal battle, a yearning for an escape from the present torment, and a melancholic acceptance of a life perhaps destined for suffering.</p>
<h2 id="heading-8-summary-tags">8. Summary Tags</h2>
<p>#ProfoundMelancholy #UnrequitedLove #ExistentialAnguish #EmotionalDependency #InternalConflict #SelfDestructivePatterns #SpiritualCrisis #IdentityInTransit #BurnoutAndDespair #Disillusionment</p>
<h2 id="heading-9-suggestions">9. Suggestions</h2>
<p>Given the profound and escalating emotional distress, particularly the recurrent thoughts of death, suicidal ideation, and the self-reported inability to cope, the following suggestions are crucial for wholesome positive change:</p>
<ol>
<li><p><strong>Seek Immediate and Consistent Professional Mental Health Support:</strong> The depth of your despair, obsessive thoughts, and self-destructive tendencies (like increased alcohol consumption) indicate a critical need for professional intervention. A qualified therapist or psychiatrist can provide a safe, confidential space, offer strategies for managing overwhelming emotions, explore the underlying patterns of attachment and self-worth, and assess for clinical depression or other conditions requiring treatment. This is the most urgent and fundamental step.</p>
</li>
<li><p><strong>Develop Structured Emotional Regulation and Grounding Practices:</strong> Your mind is deeply entrenched in abstract rumination and emotional torment. Implement simple, daily sensory grounding exercises (e.g., the 5-4-3-2-1 technique, focusing on the taste of food, the sensation of touch, or observing a single non-emotional object). The goal is not to intellectualize, but to deliberately bring your awareness to the present moment through your senses, without judgment, which can provide temporary respite from obsessive thoughts and create vital emotional distance.</p>
</li>
<li><p><strong>Explore Diverse Creative Outlets Beyond Writing and Narrative:</strong> While writing is a powerful outlet for you, it often mirrors and perhaps deepens your internal torment. Consider a creative activity that engages different parts of your brain and body, and perhaps offers a less direct reflection of your internal struggles. This could be anything from learning a musical instrument, pursuing visual arts (like painting or sculpting), engaging in basic craftsmanship (e.g., pottery, woodworking), or even exploring structured movement practices like martial arts or dance. The act of creating something tangible, for its own sake, can provide a different kind of focus and a sense of accomplishment outside of your internal world.</p>
</li>
<li><p><strong>Cultivate Internal Validation and Self-Worth Independent of External Relationships:</strong> Your explicit declaration "without her I have nothing" reveals a profound and dangerous emotional dependency. Dedicate specific time daily to journaling or guided meditations focused on identifying and valuing aspects of your identity, skills, contributions, and unique qualities that are entirely independent of any external relationship. This can help build a more robust internal sense of self-worth and reduce vulnerability to external emotional shifts.</p>
</li>
<li><p><strong>Establish and Enforce Healthy Social and Emotional Boundaries:</strong> Your sensitivity to others and perception of intrusion, along with the painful impact of their "innocent actions," suggest porous emotional boundaries. Learning to set clear personal boundaries in interactions, communicating what you need (or don't need) from others, and differentiating your emotions from theirs can help protect your inner peace without requiring complete isolation.</p>
</li>
</ol>
</blockquote>
<h1 id="heading-vibe-coding">Vibe coding</h1>
<p>During development, I wanted to compare the results of tweaking prompts and running different models. So, I needed a way to show two markdown files side-by-side, and highlight sentences that contain similar concepts.</p>
<p>I first developed the concept for the comparison, based on my knowledge of ML and AI tools. I discussed the concept with <a target="_blank" href="https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/">Gemini CLI</a> (<a target="_blank" href="https://github.com/google-gemini/gemini-cli">Github</a>) and ChatGPT <a target="_blank" href="https://openai.com/index/openai-codex/">codex</a>, and came to a final design idea. I found Gemini to work better for me, but it’s likely because I have access to more powerful models that way. I don’t have access to the more advanced models in ChatGPT codex.</p>
<p>I then asked Gemini CLI to implement it, following along with tips. It got stuck a couple of times, on dependency conflict and then on testing <a target="_blank" href="https://streamlit.io/">streamlit</a> code (which pops up a browser, so it gives CLI agents no feedback channel). Overall, a few well placed tips got it unstuck.</p>
<p>I did 99% of the work with Gemini CLI and vibe-coded the whole visualization in an hour.</p>
<p>I am very impressed.</p>
<p>I had tried it before on the original <a target="_blank" href="https://github.com/robertolupi/augmented-awareness/blob/main/aww/retro.py">aww/retro.py</a> code, but it created a lot of code duplication that I had to manually refactor to get the quality I wanted.</p>
]]></content:encoded></item><item><title><![CDATA[Aww: recursive retrospectives]]></title><description><![CDATA[A lot has changed in Augmented Awareness. I have refactored or discarded a lot of the previous code and developed new powerful capabilities:

A new CLI and TUI for daily event tracking, implemented in Go.

MCP server support, to allow interacting wit...]]></description><link>https://rlupi.com/aww-recursive-retrospectives</link><guid isPermaLink="true">https://rlupi.com/aww-recursive-retrospectives</guid><category><![CDATA[Quantified Self]]></category><category><![CDATA[personal development]]></category><category><![CDATA[llm]]></category><category><![CDATA[local first]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Sun, 20 Jul 2025 07:15:43 GMT</pubDate><content:encoded><![CDATA[<p>A lot has changed in Augmented Awareness. I have refactored or discarded a lot of the previous code and developed new powerful capabilities:</p>
<ul>
<li><p>A new <strong>CLI and TUI for daily event tracking</strong>, implemented in Go.</p>
</li>
<li><p><strong>MCP server support</strong>, to allow interacting with Aww using LLM chat in host applications like <a target="_blank" href="https://lmstudio.ai/">LM-Studio</a>.</p>
</li>
<li><p>A <strong>recursive retrospective generator</strong>, that uses LLMs to generate daily/weekly/monthly/yearly retrospectives.</p>
</li>
</ul>
<p>My vision of Aww is becoming reality: it keeps track of physical and mental health, provides helpful retrospectives that identify high-level trends and provides tips and suggestions for improvements.</p>
<p>All of this can work with local LLMs, or online ones (Gemini, OpenAI). Powerful online LLMs provide the most impressive results.</p>
<p>The results of the retrospectives are particularly insightful, although it heavily depends on the content of your journal.</p>
<p>I have been using the following format, with minor tweaks, since 2000. It is based on the following structure:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Vault directory example</strong></td><td><strong>Content</strong></td></tr>
</thead>
<tbody>
<tr>
<td>journal</td><td>base path for the journal. I use <a target="_blank" href="https://obsidian.md/">Obsidian</a> to write it, but any markdown editor will do.</td></tr>
<tr>
<td>journal/2025/Y2025.md</td><td>Yearly note. I use it for GTD-style <a target="_blank" href="https://gettingthingsdone.com/2011/01/the-6-horizons-of-focus/">Horizons of Focus</a> planning.</td></tr>
<tr>
<td>journal/2025/01/2025-01-01.md</td><td>Daily note. I use a template that includes “Journal and events” (event tracking, populated via the Go program), “My thoughts, ideas, tasks” (free-form), “Other ideas (TIL): articles, books, links” (links to interesting articles, or kindle books, with excerpts). I track a few parameters in the frontmatter (vitals/relax/sleep/activity scores from my ringConn ring, weight and BMI, self-reported stress level).</td></tr>
<tr>
<td>journal/2025/weeks/2025-W01.md</td><td>Weekly note. I use it for my own manual retrospectives, answering the questions: “What went well?”, “What went wrong?”, “What was unexpected/surprising?”, “What did I learn?”, “What will I change/experiment with, to improve my life?”, “What I am grateful of?”, “Who did I talk to? Who did I not talk to, but should have?”</td></tr>
<tr>
<td>journal/2025/months/2025-01.md</td><td>Monthly note. I use it for my own manual retrospectives and free-form notes.</td></tr>
<tr>
<td>retrospectives</td><td>LLM-generated retrospectives</td></tr>
<tr>
<td>retrospectives/2025/r2025.md</td><td>Yearly retrospective, generated from all lower retrospectives and the yearly note.</td></tr>
<tr>
<td>retrospectives/2025/2025-01-01.md</td><td>Daily retrospective, generated from the daily note.</td></tr>
<tr>
<td>retrospectives/2025/weeks/r2025-W01.md</td><td>Weekly retrospective, generated from the daily retrospective and the weekly note.</td></tr>
<tr>
<td>retrospectives/2025/months/r2025-01.md</td><td>Monthly retrospective, generated from the weekly and daily retrospectives and the monthly note.</td></tr>
</tbody>
</table>
</div><p>You can find the source at <a target="_blank" href="https://github.com/robertolupi/augmented-awareness">https://github.com/robertolupi/augmented-awareness</a></p>
]]></content:encoded></item><item><title><![CDATA[Aww: Setting Directions, and Avoiding Productivity as a Religion]]></title><description><![CDATA[I feel bad because I feel that I haven’t progressed much in Augmented Awareness development. This is a problem. I mean, this feeling is a problem.
Productivity has evolved into a cultural obsession, mirroring the structure of religious devotion. Like...]]></description><link>https://rlupi.com/aww-setting-directions-and-avoiding-productivity-as-a-religion</link><guid isPermaLink="true">https://rlupi.com/aww-setting-directions-and-avoiding-productivity-as-a-religion</guid><category><![CDATA[personal-project]]></category><category><![CDATA[Quantified Self]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Mon, 21 Apr 2025 07:57:37 GMT</pubDate><content:encoded><![CDATA[<p>I feel bad because I feel that I haven’t progressed much in <a target="_blank" href="https://github.com/robertolupi/augmented-awareness">Augmented Awareness</a> development. This is a problem. I mean, this <em>feeling</em> is a problem.</p>
<p>Productivity has evolved into a cultural obsession, mirroring the structure of religious devotion. Like traditional faiths, it demands adherence to rituals, fosters guilt when unmet, and promises salvation through measurable outcomes.</p>
<p>Corporate culture fuels this dogma. Companies like Amazon and Tesla glorify "hustle culture," where burnout is rebranded as "grit." Employees internalize this, working overtime to avoid being labeled "lazy." The cult of productivity even has its prophets: Tim Ferriss’s <em>The 4-Hour Workweek</em> and Cal Newport’s <em>Deep Work</em> are treated as sacred texts, their methods seen as moral imperatives.</p>
<p>I don't want to fall for it. Essentially, the obsession with productivity feeds on fear: fear of being idle, fear of becoming irrelevant. A personal project should never be a victim of these feelings.</p>
<p>Another issue is that I don't like the current code. It's messy, and I haven't paid much attention to git etiquette because it's mostly throwaway code for testing ideas. Improving it isn't my main focus right now. What's important is deciding the direction I want the project to take. Having messy code on my GitHub stresses me out.</p>
<h1 id="heading-where-is-augmented-awareness-aww-going">Where is Augmented Awareness (Aww) going?</h1>
<p>Let's first remember what Aww is supposed to be. It's designed as a robot or agent that interacts with an environment by observing it, understanding it, deciding what to do to achieve specific goals, and acting on those decisions. The environment includes my life: both my mental and physical states, as well as the physical and media environments I live in. The goals are my own. The actions are the information that Aww shares with me through dashboards, notifications, and nudges.</p>
<p>We have many systems in the world with similar designs, but they are controlled by third parties, giving them the power to influence our lives. I'm referring to all the notifications apps try to push on us, the promotions we receive through emails, the advertising we see, and all the information fed to us.</p>
<p>I have currently implemented reading my journal, schedule and tasks from my Obsidian vault, and obtaining raw data from activitywatch. Both data sources can be converted into Arrow datasets.</p>
<p>The plan is to use my Obsidian journal as a source of labels and activitywatch as a source of features to automatically label my activities using semi-supervised machine learning.</p>
<p>I have also tried using LLMs to read my journal and provide insights, which has been helpful for my weekly retrospectives.</p>
<p>I am starting to experiment with the <a target="_blank" href="https://modelcontextprotocol.io/introduction">Model Context Protocol (MCP)</a> to see if Aww should be implemented using it instead of relying on its own tightly-integrated code and control loop.</p>
]]></content:encoded></item><item><title><![CDATA[Aww: Key Takeaways from the Second Week of Development]]></title><description><![CDATA[Here's a concise summary of the key points:

Data Alone is Insufficient: Simply acquiring data, "sterile data acquisition", does not guarantee positive or meaningful "wholesome" changes.

Aww is a Flexible Toolset: "Aww" should be understood as a col...]]></description><link>https://rlupi.com/aww-key-takeaways-from-the-second-week-of-development</link><guid isPermaLink="true">https://rlupi.com/aww-key-takeaways-from-the-second-week-of-development</guid><category><![CDATA[ooda]]></category><category><![CDATA[Quantified Self]]></category><category><![CDATA[personal-project]]></category><category><![CDATA[llm]]></category><category><![CDATA[agentic AI]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Sat, 12 Apr 2025 07:23:18 GMT</pubDate><content:encoded><![CDATA[<p>Here's a concise summary of the key points:</p>
<ol>
<li><p><strong>Data Alone is Insufficient:</strong> Simply acquiring data, "sterile data acquisition", does not guarantee positive or meaningful "wholesome" changes.</p>
</li>
<li><p><strong>Aww is a Flexible Toolset:</strong> "Aww" should be understood as a collection of tools, not a pre-packaged solution, and this flexibility is an advantage but carries a steeper adoption curve. I am fine with that, since I am likely the only user at this point in time.</p>
</li>
<li><p><strong>Aww Enables Simple LLM Operations:</strong> The "Aww OODA loop" framework allows for using Large Language Models (LLMs) in operational processes in a straightforward, low-complexity manner.</p>
</li>
</ol>
<p>I started <a target="_blank" href="https://rlupi.com/series/aww">Augmented Awareness</a> (<a target="_blank" href="https://github.com/robertolupi/augmented-awareness">GitHub</a>) to create a tool for more balanced living. It also helps me gain insights into how integrating LLMs into software processes requires us to change our thinking and approach to problems. Additionally, it allows me to experiment more boldly with AI-assisted software development than I can do at work.</p>
<h1 id="heading-sterile-data-acquisition-doesnt-lead-to-wholesome-changes">Sterile data acquisition doesn’t lead to wholesome changes</h1>
<p>Simply gathering data, a process we can term "sterile data acquisition," does not inherently lead to beneficial or "wholesome" changes within an organization or system. Data in its raw form—spreadsheets filled with numbers, logs brimming with timestamps, databases storing user clicks—lacks intrinsic meaning or direction. It represents potential, not progress. Consider a fitness tracker diligently logging steps, heart rate, and sleep duration. If the user never reviews this data, reflects on patterns (like poor sleep after late-night meals), or adjusts their behavior (like setting an earlier bedtime), the tracker merely accumulates digits without contributing to improved health. The data remains sterile.</p>
<p>Achieving meaningful improvements requires moving beyond mere collection. It involves a deliberate process:</p>
<ul>
<li><p><strong>Contextualization:</strong> Understanding where the data came from, how it was collected, and what it represents (metadata). Is a sales dip seasonal, or does it indicate a deeper issue? Did I feel grumpy because of my own mistakes, like not following a good sleep routine for over a week, or was it due to external factors?</p>
</li>
<li><p><strong>Analysis:</strong> Employing methods ranging from simple sorting and visualization to complex statistical modeling to identify patterns, trends, correlations, anomalies, and root causes. This transforms raw data into information. For instance, analyzing website traffic data might reveal that users consistently abandon their shopping carts at the payment stage.</p>
</li>
<li><p><strong>Interpretation:</strong> Translating these patterns into actionable insights. The high cart abandonment rate might suggest user friction, perhaps due to unexpected shipping costs or a complicated checkout process. This step converts information into knowledge.</p>
</li>
<li><p><strong>Decision and Action:</strong> Formulating a plan based on the insights and implementing changes. The business might decide to display shipping costs earlier or simplify the payment form. This is where knowledge spurs tangible change.</p>
</li>
<li><p><strong>Feedback Loop:</strong> Measuring the impact of the actions taken by collecting and analyzing <em>new</em> data, thus restarting the cycle. Did simplifying the checkout reduce cart abandonment?</p>
</li>
</ul>
<p>Without this complete cycle, data acquisition remains an academic exercise, consuming resources without delivering tangible benefits or fostering positive evolution. Wholesome changes arise not from the data itself, but from the informed actions it inspires.</p>
<p>After using <strong>aww</strong>, in its current schedule-focused state, for a couple of weeks, I realized that my current emphasis on meticulously recording precise times in my journal appears to be counterproductive to my goal of living a more wholesome life. This practice, while perhaps intended to foster discipline or provide data for reflection, seems to be subtly shifting my focus in ways that detract from overall well-being.</p>
<p>Specifically, I observe a tangible decline in the frequency and perhaps depth of my yoga practice. The amount of time dedicated to yoga has decreased, leading to a noticeable increase in physical stiffness. This physical manifestation runs parallel to a diminished focus on spiritual growth. I find myself less inclined or able to connect with metaphysical ideas, experiencing a drift back towards perceiving only the immediate, physical reality as the entirety of existence. My impatience with <a target="_blank"><strong>#meditation</strong></a> has grown; sustaining focus during practices like <a target="_blank" href="https://isha.sadhguru.org/en/wisdom/article/what-is-shambhavi-mahamudra">Shambhavi Mahamudra Kriya</a> feels increasingly difficult, my mind wandering excessively. While acknowledging Sadhguru's advice to practice for its own sake, like an offering, the pull towards quantifiable results seems to interfere. Interestingly, guided practices like Isha Kriya (via <a target="_blank" href="https://isha.sadhguru.org/uk/en/miracle-of-mind">Miracle of Mind</a> app) remain more accessible, suggesting that structure itself isn't the issue, but perhaps the <em>type</em> of structure imposed by rigid time-tracking is.</p>
<p>I am actively questioning the root of this shift. It's unclear whether this is primarily an effect of my deep intellectual engagement with developing concepts like the aww OODA loop design and <strong>aww-agents</strong>, aww’s agentic framework design. These frameworks, drawing inspiration from models emphasizing rapid observation, orientation, decision, and action cycles, inherently involve time sensitivity and optimization. The focus here is often on efficiency and tempo, which, while valuable in certain contexts, might inadvertently train my mind to prioritize speed and measurement over presence and experience. As noted in my reflections on OODA already before starting development, a faster tempo isn't always useful; sometimes it just means doing "stupid things faster with more energy."</p>
<p>Alternatively, could the issue stem directly from using the <strong>Aww</strong> software I've developed? Its current design, perhaps unintentionally, seems to guide my attention towards quantifying the <em>time spent</em> on activities, rather than enriching the <em>quality or meaning</em> of those activities themselves. The very act of logging start and end times might implicitly elevate duration as the primary metric of value. This resonates with ideas explored around software profiling, where the focus is on identifying bottlenecks and optimizing resource usage (time being a key resource). While applying such optimization principles to life seemed intellectually appealing – focusing on the largest potential wins, measuring change, choosing data sources carefully – the practical outcome seems to be a reductionist view where the clock dictates value. Even features like the "life in weeks" visualizer, intended to foster mindfulness about life's finitude, could inadvertently reinforce this quantification of existence.</p>
<p>This experience contrasts sharply with the positive outcomes from deliberately implementing small, qualitative actions. Engaging in a 5-minute mindful start, a 10-minute micro-yoga flow, and brief "disconnect" moments away from screens demonstrably improved concentration, reduced stress, and enhanced mental clarity without a primary focus on the exact minutes elapsed. These activities prioritized the <em>experience</em> – grounding, movement, presence – over precise time logging.</p>
<p>Therefore, the evidence suggests that while tools and frameworks for tracking and optimization, like Aww and OODA-inspired thinking, hold intellectual appeal and potential benefits (e.g., using aww-pomodoro for work focus), their current application, particularly the emphasis on precise time recording, may be hindering, rather than helping, my pursuit of a balanced and wholesome life. The challenge lies in refining these tools and my relationship with them to support qualitative well-being, not just quantitative measurement.</p>
<h1 id="heading-aww-is-a-flexible-toolset-and-this-is-a-strength">Aww is a flexible toolset and this is a strength</h1>
<p>Characterizing "Aww" as a toolset, rather than a monolithic solution, highlights a fundamental strength: its inherent flexibility and adaptability. Think of the difference between a fully equipped, pre-assembled kitchen ("solution") versus a comprehensive set of high-quality kitchen implements—knives, pans, mixers, measuring tools ("toolset"). The pre-assembled kitchen might perfectly suit one specific cooking style but prove restrictive for others. The toolset, however, empowers the chef to select and combine tools to prepare a vast array of dishes, tailored precisely to the ingredients, the desired outcome, and their personal technique.</p>
<p>Similarly, Aww provides a collection of distinct capabilities or components. Users can select, combine, and configure these components to address their unique challenges and integrate them into their specific operational contexts. This approach offers several advantages over a rigid, pre-packaged solution:</p>
<ul>
<li><p><strong>Tailored Application:</strong> Users are not forced into a one-size-fits-all framework. They can assemble Aww's components to precisely match their existing workflows, data sources, and objectives.</p>
</li>
<li><p><strong>Seamless Integration:</strong> Toolsets generally integrate more smoothly with existing systems. Instead of replacing entire processes, users can introduce Aww components incrementally to enhance specific parts of their workflow, minimizing disruption and leveraging existing investments.</p>
</li>
<li><p><strong>Adaptive Scalability:</strong> Users can start small, employing only the necessary tools for an immediate task, and gradually incorporate more components as their needs evolve or complexity increases. This contrasts with the often significant upfront commitment required by a comprehensive solution.</p>
</li>
<li><p><strong>Fostering Innovation:</strong> A toolset encourages users to think creatively about how components can be combined to solve novel problems or optimize processes in ways the original designers might not have explicitly foreseen.</p>
</li>
</ul>
<p>This flexibility means Aww empowers users to build <em>their</em> solution, rather than adopting a potentially ill-fitting one. Its nature as a toolset is a strategic advantage, prioritizing adaptability and user-driven configuration over prescriptive rigidity.</p>
<p>My approach to building augmented awareness centers on creating a collection of adaptable, loosely connected components instead of a single, pre-packaged application. This design philosophy provides significant advantages, particularly in flexibility and the ability to integrate discoveries organically during development, making it a strength rather than a limitation.</p>
<p>A practical example of this modular benefit emerged unexpectedly. While journaling, I experimented with using a Large Language Model (LLM) directly within my note-taking application, Obsidian, via the <em>Local GPT</em> plugin. I fed it scattered thoughts and diary entries, and the LLM (specifically, Google's Gemini 2.5 Pro model) synthesized these into a coherent discourse. This process strikingly mirrors the concept of Niklas Luhmann's <a target="_blank" href="https://en.wikipedia.org/wiki/Zettelkasten"><strong>Zettelkasten</strong></a> method – a system for networked thought where individual notes connect to generate emergent ideas, a topic I'm exploring through the book <a target="_blank" href="https://www.amazon.it/System-Writing-Unconventional-Note-Making-Zettelkasten/dp/B0D7GX2J9L"><strong>A System for Writing</strong></a>. The LLM acted as a powerful tool for this kind of knowledge discovery, connecting ideas I hadn't explicitly linked myself. This capability, however, also raises an important question as I reflected: does relying on LLMs for synthesis risk a form of mental laziness, potentially diminishing my own ability to formulate and pursue complex questions systematically?</p>
<p>If I were committed to building augmented awareness as a monolithic, shrink-wrapped system, integrating such a sophisticated journal-analysis feature would require significant dedicated development. This might involve building a complex Retrieval-Augmented Generation (RAG) system – a technique where the LLM retrieves relevant information from a knowledge base (like my Obsidian notes) before generating a response – specifically for my notes. Undertaking such a task could potentially span weeks or months reflecting my earlier thoughts on avoiding premature complexity by starting simple. While this integrated analysis is a desirable long-term goal for the <strong>aww-agents</strong> component, the modular, toolset-based approach allows me to <em>immediately</em> leverage the existing capabilities of <em>Local GPT</em> within Obsidian. I can experiment with its output <em>now</em> and build upon it incrementally. For example, future steps could involve refining aww’s input by passing entire Markdown journal pages instead of just specific events, or enhancing my own LLM integrations to execute external tools or navigate wiki-links within my notes. This effectively extends the system's capabilities without needing to replicate the core LLM synthesis function from scratch at this stage.</p>
<p>This strategy aligns directly with the principle of using low-fidelity prototypes before committing to extensive development. By treating components like the LLM integration as experiments built on existing tools, I can quickly assess their usefulness, refine the requirements (like choosing what data is truly valuable to record), and manage complexity before investing heavily in custom implementations. It allows the system to evolve based on practical needs and discoveries, rather than a rigid upfront design.</p>
<h1 id="heading-the-aww-ooda-loop-simplifying-llm-integration-for-practical-operations">The Aww OODA Loop: Simplifying LLM Integration for Practical Operations</h1>
<p>Aww leverages the <strong>OODA loop</strong> (Observe, Orient, Decide, Act)—a framework renowned for facilitating rapid decision-making in dynamic situations—to enable the practical, straightforward use of Large Language Models (LLMs) within operational cycles. This approach deliberately aims for a "low-fi, low-complexity" implementation, making advanced AI capabilities accessible without demanding deep technical expertise or complex infrastructure overhauls.</p>
<p>Here’s how Aww maps LLM operations onto the OODA loop:</p>
<ol>
<li><p><strong>Observe:</strong> The cycle begins with gathering relevant information from the operational environment.</p>
</li>
<li><p><strong>Orient:</strong> This crucial phase involves making sense of the observed data. Here, Aww facilitates interaction with an LLM. It sends the observed data, potentially enriched with relevant context, along with a carefully crafted prompt (instructions) to an LLM. The LLM processes this input and generates an output—perhaps a concise summary, a suggested classification, a draft response, potential root causes for an alert, or an identified anomaly. The LLM acts as a powerful assistant in this orientation phase, rapidly synthesizing information or suggesting interpretations that might take a significant time, effort and, crucially, attention to develop on my own.</p>
</li>
<li><p><strong>Decide:</strong> Armed with the LLM's output and other relevant factors (like business rules or situational context), a decision is made. This decision might be executed by a human operator (e.g., approving the LLM-drafted email reply, confirming the LLM's suggested ticket routing) or triggered by automated rules within the Aww framework (e.g., automatically escalating an alert if the LLM identifies it as critical).</p>
</li>
<li><p><strong>Act:</strong> The decision translates into action within the operational environment. Aww components execute the chosen course, triggering an automated remediation script, or logging the event.</p>
</li>
</ol>
<p>The "low-fi, low-complexity" aspect means Aww abstracts much of the technical difficulty typically associated with deploying AI models. Users interact with the LLM through the structured OODA process facilitated by Aww, focusing on defining the <em>task</em> for the LLM (via prompts and context) rather than managing the underlying model infrastructure, complex fine-tuning, or intricate API integrations.</p>
]]></content:encoded></item><item><title><![CDATA[Augmented Awareness: A Good Start]]></title><description><![CDATA[I am quite pleased with the results from the first week of development of Augmented Awareness, my local-fist/off-line first toolset for quantified-self experiments (github). Keep in mind that this is a personal project, and I can only work on it outs...]]></description><link>https://rlupi.com/augmented-awareness-a-good-start</link><guid isPermaLink="true">https://rlupi.com/augmented-awareness-a-good-start</guid><category><![CDATA[Quantified Self]]></category><category><![CDATA[personal-project]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Mon, 07 Apr 2025 17:16:00 GMT</pubDate><content:encoded><![CDATA[<p>I am quite pleased with the results from the first week of development of Augmented Awareness, my local-fist/off-line first toolset for quantified-self experiments (<a target="_blank" href="https://github.com/robertolupi/augmented-awareness">github</a>). Keep in mind that this is a personal project, and I can only work on it outside of my regular working hours and on weekends.</p>
<p>I made quick progress because I had experimented with various ideas before, so I knew exactly what to implement. I used AI extensively to speed up coding and prototyping ideas. Since a large part of the system I envision is AI-based, it was very helpful to prototype interactions before fully developing them in code.</p>
<h1 id="heading-design-decisions">Design Decisions</h1>
<p>This week I made significant progress in choosing my technology stack:</p>
<ul>
<li><p><strong>Python</strong> for quick prototyping and fast software development. If performance-critical code is needed, I'll switch to <strong>Rust</strong>. Alternatively, porting to <strong>Julia</strong> is also an option.</p>
</li>
<li><p>I don't need separate solutions for frontend development because there are Python libraries that provide the support I need. If new requirements come up, I will use <strong>TypeScript</strong> and Svelte or React.</p>
</li>
<li><p><strong>C++</strong> or <strong>Rust</strong> for embedded code, with <strong>MicroPython</strong> as an option for prototyping.</p>
</li>
<li><p><strong>Kotlin</strong> for mobile development, because my initial focus is primarily on Android.</p>
</li>
<li><p><strong>SQLite for metadata</strong>: Provides lightweight, efficient storage for the system's metadata with excellent reliability and performance characteristics.</p>
</li>
<li><p><strong>Arrow as internal data format</strong>: Enables high-performance in-memory analytics with zero-copy reads and efficient data sharing between components.</p>
</li>
<li><p><strong>Parquet for data lake</strong>: Gives me columnar storage efficiency for temporal datasets while maintaining compatibility with my Arrow-based processing.</p>
</li>
</ul>
<p>Development will initially focus on offline-first on a single machine, and then shift to local-first, aiming for easy deployment on homelabs using Docker when I introduce multi-device support.</p>
<p>My design thinking has advanced through:</p>
<ul>
<li><p><strong>OODA loop implementation</strong>: Successfully structured the codebase around the Observe-Orient-Decide-Act (OODA) cycle for optimal decision flow.</p>
</li>
<li><p><strong>TAQS model adoption</strong>: defined the <em>Temporally Aware Quantified Self</em> (TAQS) model–inspired by sequence of tenses in Latin (<a target="_blank" href="https://en.wikipedia.org/wiki/Sequence_of_tenses">consecutio temporum</a>)–which provides comprehensive handling of:</p>
<ul>
<li><p>Temporal modalities (past, present, future, hypothetical)</p>
</li>
<li><p>Event hierarchies and concept relationships</p>
</li>
<li><p>Point and span events with duration</p>
</li>
<li><p>Data provenance through source tracking</p>
</li>
</ul>
</li>
<li><p><strong>Concept hierarchy discovery</strong>: Both top-down and bottom-up approaches are yielding interesting insights into our data structures. It need to support both concepts expressed in symbolic representation and natural language, and in sub-symbolic form as probability distributions or tensor embeddings.</p>
<ul>
<li>A key technical achievement this week was figuring out round-trip temporal encoding, allowing seamless conversion between human-readable temporal concepts (like "around 6am" or "between 9am and 11am") and precise data structures. This capability enables both intuitive user interactions and rigorous temporal calculations, while maintaining full data provenance through the TAQS model's temporal modalities. The system will handle complex temporal relationships while preserving the semantic meaning of time expressions across the entire OODA loop.</li>
</ul>
</li>
</ul>
<h1 id="heading-implemented-features">Implemented Features</h1>
<ul>
<li><p><strong>obsidian tasks</strong>: collect and display tasks from dated pages (journal) in Obsidian.</p>
</li>
<li><p><strong>obsidian info</strong>: Show detailed information about an Obsidian page: tracked events, tasks, tags, markdown content.</p>
</li>
<li><p><strong>obsidian busy</strong>: Shows total time spent in various activities by tag:</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1744020626370/173d3b9a-274a-47e4-9ac9-29f70784f65a.png" alt class="image--center mx-auto" /></p>
<ul>
<li><strong>obsidian tips</strong>: use local LLMs to provide tips for a more wholesome life and answer questions, using the schedule as context:</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1744021146833/c9db2816-b9c5-4403-bf08-8fde06ce6f36.png" alt class="image--center mx-auto" /></p>
<ul>
<li><strong>obsidian web</strong>: a web interface presenting the same information as obsidian busy and task:</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1744021408836/81f45ab3-6ff5-4a0d-924a-bba910b9a116.png" alt class="image--center mx-auto" /></p>
<ul>
<li><strong>ActivityWatch</strong>: library support to read from activitywatch and export afk/not-afk, web history, current window as Arrow tables.</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[How Augmented Awareness Evolved Over Time]]></title><description><![CDATA[Augmented Awareness is the system I developed to manage my daily life during the pandemic. It evolved into an early-stage toolset for quantified self-experiments.
I will work on the next version of Augmented Awareness openly on GitHub, instead of pri...]]></description><link>https://rlupi.com/how-augmented-awareness-evolved-over-time</link><guid isPermaLink="true">https://rlupi.com/how-augmented-awareness-evolved-over-time</guid><category><![CDATA[Quantified Self]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[Pomodoro Technique]]></category><category><![CDATA[obsidian]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Mon, 31 Mar 2025 07:21:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1743401170296/bf167341-d467-4e77-a36b-3218507473db.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Augmented Awareness is the system I developed to manage my daily life during the pandemic. It evolved into an early-stage toolset for quantified self-experiments.</p>
<p>I will work on the next version of <a target="_blank" href="https://rlupi.com/augmented-awareness">Augmented Awareness</a> openly on <a target="_blank" href="https://github.com/robertolupi/augmented-awareness">GitHub</a>, instead of privately. It currently contains an Arduino pomodoro timer and a library to read Obsidian vaults.</p>
<h1 id="heading-agau">AgAu</h1>
<p>The new version is called <strong>Aww</strong>. The previous version was named <strong>AgAu</strong> and had a silver/gold Yin and Yang logo, but since crypto companies like that acronym too much, and I've discovered the benefits of meditation, I'm choosing cute meditating cats as the new theme.</p>
<p>The first version of Augmented Awareness wasn't a traditional application. It was a no-code system using Google Sheets, Nest devices, and IFTTT. It worked well until Google sunset the Assistant features I depended on.</p>
<p>The core of next and current version, AgAu, is a traditional web application. I built a few prototypes in Python (<a target="_blank" href="https://www.djangoproject.com/">Django</a>, <a target="_blank" href="https://fastapi.tiangolo.com/">fastapi</a>) and TypeScript (<a target="_blank" href="https://svelte.dev/">Svelte</a>, SvelteKit and <a target="_blank" href="https://www.prisma.io/typescript">Prisma</a>), but eventually choose to write it in C# as an <a target="_blank" href="https://learn.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-9.0">ASP.NET Core Blazor</a> application. It is a quite traditional design, based on <a target="_blank" href="https://learn.microsoft.com/en-us/ef/core/">EntityFramework Core</a> and Clean architecture.</p>
<pre><code class="lang-mermaid">flowchart LR
subgraph AgAu

app[ASP.NET core app] --&gt; db[(database)]

end

subgraph obsidian

  notes
  schedule

end

daily[offline behavior and activities] -.manually copy information .-&gt; AgAu
wearables -.manually copy information .-&gt; AgAu
screen[ScreenTime and ActivityWatch] -.manually copy information .-&gt; AgAu
obsidian -.manually copy information .-&gt; AgAu
pomodoro[physical pomodoro timers] -.manually copy information .-&gt; AgAu
</code></pre>
<p>AgAu lost some important properties of the first version: it needs regular busy work to operate. I have to enter or copy over the information of my actions and behavior. This happened because I didn't have a <a target="_blank" href="https://rlupi.com/rewriting-code-discover-the-key-question-you-should-be-asking">clear understanding of my requirements</a>. I didn’t spell them out, so I didn’t preserve them!</p>
<p>The original Augmented Awareness, through its Google Home interface, was easy to use during my daily activities, tasks, and routines. AgAu lost its ambient intelligence and pervasive computing capabilities.</p>
<p>I appreciated the original system's ability to work with minimal attention required:</p>
<p>$$Value={{Functionality} \over {Attention Required}}$$</p><h1 id="heading-aww">Aww</h1>
<p>Aww won’t initially replace AgAu but will complement it. The first step in developing Aww is to bring back the lost ambient computing features by replacing manual data entry with IoT devices and software integrations. I will create Aww components to connect with AgAu using REST services, and eventually, I might retire or open-source AgAu. You can use Aww as a toolkit of independent components, mix and match them and create your own quantified-self experiments or life management systems.</p>
<p>Aww will be a lot more than just a bunch of IoT devices. I want it to adapt to my behavior, be contextual and fade in the background.</p>
<h2 id="heading-core-principles-and-design-philosophy">Core Principles and Design Philosophy</h2>
<ul>
<li><p><strong>Ambient &amp; Permacomputing:</strong> The system operates in the background, minimizing direct user interaction. It leverages existing habits and routines, integrating seamlessly into the user's life rather than demanding constant attention. Data collection is largely passive. Computation is prioritized locally, using minimal resources.</p>
</li>
<li><p><strong>Agentic AI (OODA Loop):</strong> The core intelligence is built around the Observe-Orient-Decide-Act loop, creating a proactive and adaptive system.</p>
</li>
<li><p><strong>Local-First &amp; Privacy-Preserving:</strong> All raw data processing happens locally. Cloud APIs are used <em>judiciously</em> and only for high-level, anonymized inferences.</p>
</li>
<li><p><strong>Modularity &amp; Extensibility:</strong> The architecture is designed to be modular, allowing for easy swapping of components (different sensors, AI models, UI elements) and future expansion.</p>
</li>
<li><p><strong>User Control &amp; Transparency:</strong> The user maintains full control over the system's actions and can override recommendations or adjust settings at any time. The reasoning behind decisions should be explainable (to the extent possible with AI).</p>
</li>
<li><p><strong>Multi-Modal Data Fusion:</strong> The system combines data from diverse sources to build a holistic understanding of the user's state and environment.</p>
</li>
</ul>
<h2 id="heading-data-sources">Data Sources</h2>
<ul>
<li><p><strong>Wearable Sensors (HealthConnect):</strong></p>
<ul>
<li><p>Source: Android wearable devices via HealthConnect API.</p>
</li>
<li><p>Data: Heart rate, sleep stages, activity levels, steps, etc. (timeseries data)</p>
</li>
<li><p>Processing: Local aggregation, feature extraction (e.g., resting heart rate, sleep efficiency).</p>
</li>
</ul>
</li>
<li><p><strong>Environmental Sensors:</strong></p>
<ul>
<li><p>Source: RTL-SDR (rtl_433MHz) for door/cabinet openings (e.g. repurposed door alarm to count fridge openings), temperature/humidity sensors, air quality sensors. Could also include a smart electricity meter, if available.</p>
</li>
<li><p>Data: Event timestamps (door openings), environmental readings (timeseries).</p>
</li>
<li><p>Processing: Anomaly detection (e.g., unusual fridge opening frequency), data smoothing, and aggregation.</p>
</li>
</ul>
</li>
<li><p><strong>Home State Imagery:</strong></p>
<ul>
<li><p>Source: Periodic snapshots from strategically placed low-resolution cameras (e.g., repurposed webcams, IoT cameras).</p>
</li>
<li><p>Data: Images of key areas of the home (e.g., living room, kitchen).</p>
</li>
<li><p>Processing: <em>Local</em> object detection and spatial analysis (using a small, efficient model like YOLO-NAS or MobileNet). Count objects, identify misplaced items, assess overall "clutter" level. This data is <em>never</em> sent to the cloud in image form. Images are automatically deleted after analysis.</p>
</li>
</ul>
</li>
<li><p><strong>Journal/Notes (Obsidian):</strong></p>
<ul>
<li><p>Source: User's Obsidian vault (Markdown files).</p>
</li>
<li><p>Data: Text entries, tags, timestamps.</p>
</li>
<li><p>Processing: Local natural language processing (sentiment analysis, topic extraction, keyword detection) using small, efficient models (e.g., Sentence Transformers for embeddings, or smaller LLMs).</p>
</li>
</ul>
</li>
<li><p><strong>User Feedback &amp; Input:</strong></p>
<ul>
<li><p>Source: Web UI, potentially voice input via a local speech-to-text model.</p>
</li>
<li><p>Data: Explicit feedback on suggestions (thumbs up/down), manual goal setting, overrides.</p>
</li>
<li><p>Processing: Direct incorporation into the decision-making process.</p>
</li>
</ul>
</li>
<li><p><strong>Weather and Indoor environment Information:</strong></p>
<ul>
<li><p>Source: A local weather station, or data from stations close to the user. Air quality monitors, environmental monitors.</p>
</li>
<li><p>Data: Temperature, rain, cloud cover. Indoor humidity, temperature, air quality, radon levels.</p>
</li>
<li><p>Processing: Aggregation and analysis.</p>
</li>
</ul>
</li>
</ul>
<h2 id="heading-agentic-ooda-loop">Agentic OODA Loop</h2>
<p>The system is based on agentic AI and robotics principles, themselves inspired by the <a target="_blank" href="https://www.mca-marines.org/gazette/ooda-loop-for-strategy/">OODA loop from the US military doctrine</a>:</p>
<ul>
<li><p><strong>Observe:</strong> Gathers data from the Data Processing Layer. This is the input to the Orient phase.</p>
</li>
<li><p><strong>Orient:</strong></p>
<ul>
<li><p><strong>Contextualization:</strong> Combines current observations with historical data, user preferences, and external knowledge (e.g., general health guidelines).</p>
</li>
<li><p><strong>Pattern Recognition:</strong> Identifies patterns and anomalies in the user's behavior and environment. This might involve time-series analysis, clustering, or anomaly detection algorithms.</p>
</li>
<li><p><strong>Learning:</strong> Updates internal models based on new data and user feedback. This could involve simple rule updates, reinforcement learning, or fine-tuning of pre-trained models. This step leverages local LLMs for tasks like summarizing journal entries, identifying recurring themes, and relating observations to potential underlying causes. <em>Judicious</em> use of cloud LLMs (OpenAI API) might be used for complex reasoning or knowledge retrieval, but <em>only</em> with anonymized, high-level summaries.</p>
</li>
</ul>
</li>
<li><p><strong>Decide:</strong></p>
<ul>
<li><p><strong>Goal Evaluation:</strong> Assesses progress towards user-defined goals (e.g., improve sleep quality, reduce stress, maintain a tidy home).</p>
</li>
<li><p><strong>Planning:</strong> Generates potential actions (tips, reminders, schedule adjustments) to help the user achieve their goals. This could involve constraint satisfaction, optimization algorithms, or a rule-based system.</p>
</li>
<li><p><strong>Risk Assessment:</strong> Evaluates the potential negative consequences of actions (e.g., suggesting a workout when the user is already fatigued).</p>
</li>
</ul>
</li>
<li><p><strong>Act:</strong></p>
<ul>
<li><p><strong>Action Execution:</strong> Delivers interventions to the user via appropriate channels:</p>
<ul>
<li><p><strong>Web UI:</strong> Detailed information, explanations, and options for customization.</p>
</li>
<li><p><strong>Wearable Notifications:</strong> Brief, timely reminders or prompts.</p>
</li>
<li><p><strong>IoT Dashboards (e-Paper):</strong> Visual summaries, schedules, or motivational messages.</p>
</li>
</ul>
</li>
<li><p><strong>Feedback Monitoring:</strong> Tracks user responses to interventions (explicit feedback, changes in behavior).</p>
</li>
</ul>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Speak up! Publish! Seize your power.]]></title><description><![CDATA[My greatest professional regret over the past 13 years is that I chose to remain silent.
When I joined my current employer, a FAANG company, in 2012, I was initially put off by the stringent gatekeeping policies regarding my content creation. The soc...]]></description><link>https://rlupi.com/speak-up-publish-seize-your-power</link><guid isPermaLink="true">https://rlupi.com/speak-up-publish-seize-your-power</guid><category><![CDATA[writing]]></category><category><![CDATA[creativity]]></category><category><![CDATA[#power]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Wed, 26 Mar 2025 06:20:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/KFTob8JDrSY/upload/46d14128eba9c30900e845f7efa6c686.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My greatest professional regret over the past 13 years is that I chose to remain silent.</p>
<p>When I joined my current employer, a FAANG company, in 2012, I was initially put off by the stringent gatekeeping policies regarding my content creation. The social media guidelines that dictated the topics I could discuss and open-source rules that governed the content and format of my personal code contributions. This is in stark contrast to my previous experiences in smaller companies and as a self-employed consultant.</p>
<p>I found it utterly unacceptable that even my own creations, made during my personal time, would be owned or controlled to such an extent by my employer. Therefore, I made a decision: "If that's the case, then I won't publish." It was a dire mistake.</p>
<p>I misunderstood the nature of power. As many tech guys do. My decision wasn't a way to assert myself, but a forfeit. I submitted to the will and yoke of my employer.</p>
<p>Power is dialectic. It's a dance to constantly redefine the relationship between your Self and the Other, it's defined by finding yourself at ease in the world. However, if you fail to push boundaries, your power diminishes, and if you neglect to exercise it, it gradually fades away. If you remain silent, you relinquish your power altogether.</p>
<p>Moreover, writing and creating are tools for thinking. If you do it only for yourself, you limit yourself to a monologue and diminish your potential. If you cease creating and testing your work by sharing it with others, you lose.</p>
<p>It's time to change. I'll now write, code, and publish more freely and frequently.</p>
]]></content:encoded></item><item><title><![CDATA[Rewriting Code? Discover the Key Question You Should Be Asking]]></title><description><![CDATA[Writing new software is a journey of research, discovery, and creation. Like any research endeavor, it requires a clear guiding question to establish direction. This question is only answered at the conclusion of the process. Moving in one direction ...]]></description><link>https://rlupi.com/rewriting-code-discover-the-key-question-you-should-be-asking</link><guid isPermaLink="true">https://rlupi.com/rewriting-code-discover-the-key-question-you-should-be-asking</guid><category><![CDATA[requirements]]></category><category><![CDATA[creativity]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Sun, 23 Mar 2025 14:42:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/PTw_2g55U8w/upload/954eebb4ddc86fef715168de888572c6.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Writing new software is a journey of research, discovery, and creation</strong>. Like any research endeavor, it requires a clear guiding question to establish direction. This question is only answered at the conclusion of the process. Moving in one direction means temporarily setting aside other possibilities. Building momentum demands a sustained commitment to a chosen path. Without this commitment, you will repeat false starts over and over. If you find yourself frequently starting over, take a moment to clarify the question you are implicitly trying to answer.</p>
<p><strong>Any research starts with a clear question that gives direction</strong>. Similarly, any new software begins with a clear goal and a set of requirements you want to meet. In personal projects, it's easy to skip this step and end up starting over repeatedly, getting lost in the excitement of creation for its own sake.</p>
<p><strong>Any decision to move in a particular direction means temporarily foregoing other options</strong>. In software development, choosing a specific technology stack, such as opting for React for the front end and Node.js for the back end, means setting aside alternatives like Blazor or Python/Django, at least for the time being. This choice influences the project's architecture, the skills required, and the potential trade-offs. Personal projects come with their own challenges because working alone is both freeing and limiting.</p>
<p><strong>Building momentum requires a steady commitment to a chosen direction</strong>. Without this commitment, false starts become common. Constantly changing direction wastes time and resources and lowers morale. Each shift means relearning new tools and adapting to different approaches, which slows down overall progress.</p>
<p>If the direction you're heading in turns out to be wrong or misleading, don't just go back to writing software from scratch. Instead, revisit your implicit requirements. <strong>If you find yourself restarting projects again and again, it's crucial to clarify the core problem you're trying to address</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Augmented Awareness]]></title><description><![CDATA[A few years ago, I embarked on a personal project pompously titled "Augmented Awareness." It has since evolved into a versatile life management system.
It tracks various aspects of your life, including:

Prescription medications and their intakes, as...]]></description><link>https://rlupi.com/augmented-awareness</link><guid isPermaLink="true">https://rlupi.com/augmented-awareness</guid><category><![CDATA[personal life management]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Tue, 11 Mar 2025 07:05:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/88IMbX3wZmI/upload/cf19114215bf9e28c40a6e6b3a856c2f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few years ago, I embarked on a personal project pompously titled "Augmented Awareness." It has since evolved into a versatile life management system.</p>
<p>It tracks various aspects of your life, including:</p>
<ul>
<li><p><em>Prescription medications and their intakes</em>, as it was designed for recovery during the COVID pandemic.</p>
</li>
<li><p><em>Pomodoro timers</em> to help manage my focus and time effectively.</p>
</li>
<li><p><em>Calendar events and tasks</em>, from Google Calendar.</p>
</li>
<li><p><em>Computer, device, and web usage</em>, through <a target="_blank" href="https://activitywatch.net/">ActivityWatch</a>.</p>
</li>
<li><p><em>Positive and Negative Habits</em>, which I track in <a target="_blank" href="https://github.com/iSoron/uhabits">Loop Habit Tracker</a> (available on the <a target="_blank" href="https://play.google.com/store/apps/details?id=org.isoron.uhabits&amp;hl=en-US">Play Store</a>).</p>
</li>
<li><p><em>Notable entries from my diary, including daily, weekly, and monthly retrospectives</em>, which lives in <a target="_blank" href="https://obsidian.md/">Obsidian</a>.</p>
</li>
<li><p><em>Budget tracking and expenses</em>, importing CSV and PDFs from my banks and credit card companies.</p>
</li>
</ul>
<p>Each of the mentioned items supports tagging, either natively or through hashtags in text fields.</p>
<p>It performs relatively simple time series analysis to identify recurring patterns and scheduling errors.</p>
<p>I'm embarking on a design refresh to transform my current system into one inspired by robotic and agentic AI approaches. My goal is to create a tool that can assist me in living a more fulfilling life. Along the way, I aim to address a few flaws in my current design. The most significant issue is that the system requires constant attention to operate and remain functional, which is counterproductive, because it generates the most value when I have the least amount of attention.</p>
<p>The next iteration will focus on ambient computing principles, incorporating IoT devices and sensors as primary interfaces. It will adopt a design inspired by robots and AI agents to seamlessly blend into everyday life. It also will work as a complement and aid, rather than a replacement, for living every moment with mindfulness.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Complexity: The Role of Space, Time, and Entropy]]></title><description><![CDATA[I believe many inexperienced programmers misunderstand complexity. It's like a triangle with three sides, and your choice of data structures and algorithms determines how growth occurs along these edges. These edges represent independent concepts in ...]]></description><link>https://rlupi.com/understanding-complexity-the-role-of-space-time-and-entropy</link><guid isPermaLink="true">https://rlupi.com/understanding-complexity-the-role-of-space-time-and-entropy</guid><category><![CDATA[Time Complexity]]></category><category><![CDATA[Space Complexity]]></category><category><![CDATA[algorithms]]></category><category><![CDATA[leetcode]]></category><category><![CDATA[Entropy]]></category><category><![CDATA[randomness]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Sun, 09 Feb 2025 05:37:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/BfrQnKBulYQ/upload/f1c31f58385b5fd9c70e68ee6c3a1fbc.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I believe many inexperienced programmers misunderstand complexity. It's like a triangle with three sides, and your choice of data structures and algorithms determines how growth occurs along these edges. These edges represent independent concepts in theory, but they are connected by the choices we make.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1739079635268/ce2523ee-8821-424b-a65b-6a7b3eb7c842.jpeg" alt class="image--center mx-auto" /></p>
<p>Why do we need another edge for Randomness, or Entropy? When solutions admit two configurations, there are two ways to encode them, indicating which specific configuration was used. Maximum complexity occurs where most other representations must be excluded; this exclusion affects whether time or space is more impacted.</p>
<p><strong>ELI5.</strong> Alright! Let's break this down into simple terms:</p>
<p>Imagine you're playing with building blocks. The way you build something can be like an "algorithm," or a set of instructions.</p>
<ol>
<li><p><strong>Space (Memory Required):</strong> Think of space as how many blocks you need to keep in your room. If you have more blocks, you need more space to store them.</p>
</li>
<li><p><strong>Time (Computation Duration):</strong> Time is like how long it takes you to build something with those blocks. The longer it takes, the more time you spend building.</p>
</li>
<li><p><strong>Entropy (Space of Configurations):</strong> Entropy is a fancy word for all the different ways you can arrange your blocks. If you have lots of different ways to put them together, that's high entropy. But if there’s only one way or many ways without much difference, it's low entropy.</p>
</li>
</ol>
<ul>
<li><p>When space and time increase, it's like needing more room in your room (space) and spending more time building (time). They grow steadily as you add more blocks.</p>
</li>
<li><p>Entropy is highest when you have lots of different ways to arrange the blocks but not too many or too few. It’s like having just enough options to be creative without getting overwhelmed.</p>
</li>
</ul>
<ol start="4">
<li><p><strong>Solutions with One Configuration:</strong> If there's only one way to build something, it's like following a single set of instructions that always works the same way every time.</p>
</li>
<li><p><strong>Solutions with Two Configurations:</strong> When you can build in two different ways, it’s like having two sets of instructions. You need to know which one you're using, just like choosing between building a tower or a bridge!</p>
</li>
</ol>
<p>So, algorithms are like rules for playing with blocks, and they depend on how many blocks you have (space), how long it takes to play (time), and the different ways you can arrange them (entropy).</p>
<hr />
<p>For binary decision data types, the peak complexity is <em>log2(N)</em>, representing the number of comparisons needed for specific operations like insertions in ordered lists, binary trees, or the limit case of hash tables with maximum collisions (where N depends on the data structure or algorithm to manage individual slots).</p>
<p>The Donoh-Tanner phase transition theorem links combinatorial geometry and high-dimensional polytopes, affecting representation complexity. Regular polytopes exist in dimensions greater than two; Donoh-Tanner's result suggests that a <em>k</em>-dimensional object can be reconstructed from <em>k log(N)</em> points in an <em>N</em>-dimensional space. The balance between vertices aligning and solving linear systems via Gaussian elimination leads to average and upper bound results as per Donoh and Tanner.</p>
<p><strong>ELI5.</strong> Alright! Let's break this down into simple terms:</p>
<ol>
<li><p><strong>Maximum Complexity</strong>: Imagine you have a big box full of different toys, but you can only play with one toy at a time. If there are lots of toys to choose from, it gets really tricky to decide which one to pick. This is like when something has "maximum complexity" – it's very complicated because many options need to be left out.</p>
</li>
<li><p><strong>Time or Space</strong>: Think about having two big jars: one for cookies and one for candies. If you have more space in the cookie jar, you can store lots of cookies but fewer candies. The tricky part is deciding which jar (time or space) gets bigger when something complicated happens.</p>
</li>
<li><p><strong>Donoh-Tanner Phase Transition Theorem</strong>: This is like a special rule that connects two different kinds of puzzles – one with shapes and another with many-sided figures in a big, imaginary world. It helps us understand how tricky these puzzles can be.</p>
</li>
<li><p><strong>Binary Decision Data Types</strong>: Imagine you have a list of your favorite animals, and you want to add a new animal but keep the list in order (like alphabetically). The "peak complexity" is like figuring out how many steps it takes to find where the new animal goes. For binary decisions, this number is related to how big the list is – kind of like counting how many times you can split your toys into two groups until there's only one toy left in each group.</p>
</li>
</ol>
<p>So, all these ideas are about understanding how complicated things can get when we have lots of choices or need to organize information.</p>
]]></content:encoded></item><item><title><![CDATA[Decision Making Coach]]></title><description><![CDATA[We often have to make complex decisions in uncertain times. There are frameworks that can be applied to navigate these situations, but not many are well trained in them.
One approach that I like is called Decision Making under Deep Uncertainty and it...]]></description><link>https://rlupi.com/decision-making-coach</link><guid isPermaLink="true">https://rlupi.com/decision-making-coach</guid><category><![CDATA[decision making]]></category><category><![CDATA[chatgpt]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Tue, 04 Feb 2025 07:17:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1738653190116/fad52566-09ee-47a8-b311-75690181382e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We often have to make complex decisions in uncertain times. There are frameworks that can be applied to navigate these situations, but not many are well trained in them.</p>
<p>One approach that I like is called <a target="_blank" href="https://link.springer.com/book/10.1007/978-3-030-05252-2"><strong>Decision Making under Deep Uncertainty</strong></a> and its complementary goal is <a target="_blank" href="https://www.rand.org/topics/robust-decision-making.html">R<strong>obust Decision Making</strong></a><strong>.</strong> There is a open-access book dedicated to the topic, and a whole <a target="_blank" href="https://www.deepuncertainty.org/">research community dedicated to DMDU</a>.</p>
<p><strong>Picture:</strong> Levels of Uncertainty, from "Decision Making Under Deep Uncertainty, From Theory to Practice", Book Open Access © 2019, Springer Nature Link:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1738653211675/48baa49f-211f-4595-ad1b-cccd9b698749.png" alt="Levels of Uncertainty, from &quot;Decision Making Under Deep Uncertainty, From Theory to Practice&quot;, Book Open Access © 2019, Springer Nature" class="image--center mx-auto" /></p>
<p>It is generally applied for complex policy decisions, but it can be quite useful at a personal level too. I have adapted it and packaged it as a specialized AI coach that you can use.</p>
<p>I have prepared a <a target="_blank" href="https://chatgpt.com/g/g-679f4bffe6b48191a9c33cc3329d556a-decision-coach-navigating-uncertainty">ChatGPT coach</a> that can help you guide in using DMDU and RDM, and I have successfully used it in a couple of important decisions lately.</p>
<p>ChatGPT can make mistakes–and, it does make mistakes (such as mis-counting the downpayment when I was evaluating a buy house vs. continue to rent decision)–so double-checking results is important!</p>
<p>In the rest of this article, I’ll explain what it does and provide a template to follow this process on your own.</p>
<blockquote>
<p>Whenever you need to walk through a structured process to make sound and robust decisions, whether they are small (day-to-day) or large (life-changing), this approach help you adapt the level of detail to the magnitude or complexity of the decision.</p>
</blockquote>
<h2 id="heading-what-is-dmdu"><strong>What is DMDU?</strong></h2>
<ul>
<li><p>A step-by-step decision framework under conditions of deep uncertainty (i.e., where outcomes, probabilities, and/or consequences are not fully known).</p>
</li>
<li><p>Intended to help you choose robust, flexible, and strategic paths in personal matters.</p>
</li>
<li><p>Designed to be referenced repeatedly and adapted as you gain new information or life circumstances change.</p>
</li>
</ul>
<h2 id="heading-when-to-use-it"><strong>When to Use It?</strong></h2>
<ul>
<li><p>For important life decisions (career moves, big financial commitments, relocation, significant personal relationships).</p>
</li>
<li><p>For medium-term planning (learning or developing new skills, health and wellness goals, financial planning).</p>
</li>
<li><p>Even for day-to-day choices (habit changes, productivity strategies) whenever you feel uncertainty or a need for a structured approach.</p>
</li>
</ul>
<h1 id="heading-key-principles-of-dmdu"><strong>Key Principles of DMDU</strong></h1>
<ol>
<li><p><strong>Robustness Over Optimality.</strong> Rather than seeking a perfect single best outcome (which might rely on uncertain assumptions), aim for solutions or actions that are reasonably good (i.e., “robust”) across a variety of potential futures.</p>
</li>
<li><p><strong>Iterative, Adaptive Planning.</strong> Accept that uncertainty is inevitable and plans need to be re-evaluated as new information arises. Build in review points or “trigger points” where you step back, assess outcomes, and adapt your course of action.</p>
</li>
<li><p><strong>Scenario Exploration.</strong> Look beyond a single “most likely” future; consider diverse possibilities (scenarios). Acknowledge uncertainties in your environment (economic shifts, personal constraints, health changes, technology disruptions, etc.).</p>
</li>
<li><p><strong>Flexible Strategies.</strong> Combine near-term, no-regret actions (easy first steps that help no matter what) with flexible options that leave you room to pivot if conditions change.</p>
</li>
</ol>
<h1 id="heading-decision-levels-in-a-dmdu-context"><strong>Decision Levels in a DMDU Context</strong></h1>
<h2 id="heading-level-a-large-life-defining-decisions"><strong>Level A: Large, Life-Defining Decisions</strong></h2>
<p><strong>Examples:</strong> Changing careers, moving to a new country, getting married or starting a family, investing in significant assets (house, business).</p>
<p><strong>Approach:</strong> Use the full DMDU process with all steps, scenario generation, robust options analysis, and adaptive roadmapping.</p>
<h2 id="heading-level-b-medium-horizon-decisions"><strong>Level B: Medium-Horizon Decisions</strong></h2>
<p><strong>Examples:</strong> Changing your skill set or career focus, planning a financial goal (e.g., saving for a trip, down payment, or education), deciding on a health regimen.<br /><strong>Approach:</strong> Use a streamlined DMDU approach — fewer scenarios, but still identify key uncertainties, potential pivots, and robust strategies.</p>
<h2 id="heading-level-c-routine-day-to-day-decisions"><strong>Level C: Routine / Day-to-Day Decisions</strong></h2>
<p><strong>Examples:</strong> Setting up habits, choosing a diet plan, deciding how to manage weekly schedules or small financial decisions.<br /><strong>Approach:</strong> Quickly identify uncertainties or constraints, keep decisions flexible if possible, and monitor outcomes so you can adjust.</p>
<h1 id="heading-step-by-step"><strong>Step by Step</strong></h1>
<h2 id="heading-define-the-decision-context"><strong>Define the Decision Context</strong></h2>
<ul>
<li><p><strong>Clarify the Goal</strong>: What are you trying to achieve, solve, or improve?</p>
</li>
<li><p><strong>Identify Constraints</strong>: Time, resources, personal values, family considerations, financial limits, etc.</p>
</li>
</ul>
<h2 id="heading-identify-and-characterize-uncertainties"><strong>Identify and Characterize Uncertainties</strong></h2>
<ul>
<li><p><strong>List Key Unknowns</strong>: Future events or conditions you cannot predict precisely — e.g., market fluctuations, personal health changes, job market shifts, technology changes.</p>
</li>
<li><p><strong>Rank Importance</strong>: Which uncertainties have the biggest potential impact on your decision? Which are more likely or more severe if they happen?</p>
</li>
</ul>
<h2 id="heading-create-scenarios-or-futures"><strong>Create Scenarios or Futures</strong></h2>
<ul>
<li><p><strong>Imagine Different Futures</strong>: At least 2–4 plausible “states of the world” or personal circumstances.</p>
</li>
<li><p><strong>Consider Extremes</strong>: Best-case, worst-case, and at least one “unexpected change” scenario (e.g., you lose a job offer, a major health event, or a new opportunity arises).</p>
</li>
<li><p><strong>Name Each Scenario</strong>: Give them short descriptive titles (e.g., “Booming Career Growth,” “Budget Crunch,” “Sudden Opportunity Abroad,” “Health Constraint,” etc.).</p>
</li>
</ul>
<h2 id="heading-develop-potential-strategies"><strong>Develop Potential Strategies</strong></h2>
<ul>
<li><p><strong>No-Regret Moves</strong>: Identify actions that are beneficial or relatively low cost under most scenarios (e.g., building an emergency fund, networking, developing flexible skills).</p>
</li>
<li><p><strong>Contingent Options</strong>: Actions you only take if a certain scenario or trigger occurs (e.g., if you receive a job offer in another country).</p>
</li>
<li><p><strong>Adaptive Steps</strong>: Outline how you might shift from one path to another as new information becomes available.</p>
</li>
</ul>
<h2 id="heading-stress-test-your-strategies-against-each-scenario"><strong>Stress-Test Your Strategies Against Each Scenario</strong></h2>
<ul>
<li><p><strong>Apply Each Strategy to Each Scenario</strong>: Ask: “How would I fare if scenario X came true?”</p>
</li>
<li><p><strong>Identify Weak Spots</strong>: Where does your strategy break down or become too costly? Can you adjust your plan to reduce vulnerability?</p>
</li>
<li><p><strong>Compare Strategy Trade-offs</strong>: Consider both short-term and long-term consequences in every scenario.</p>
</li>
</ul>
<h2 id="heading-select-the-most-robust-strategy-or-portfolio-of-strategies"><strong>Select the Most Robust Strategy (or Portfolio of Strategies)</strong></h2>
<p>Robustness Criteria:</p>
<ol>
<li><p><strong>Viability Across Scenarios</strong>: Does the strategy remain valid (not perfect, but acceptable) for most or all futures?</p>
</li>
<li><p><strong>Flexibility</strong>: Is it easy to pivot or adapt if a scenario changes?</p>
</li>
<li><p><strong>Personal Values and Goals</strong>: Align with your core values, aspirations, and responsibilities.</p>
</li>
<li><p><strong>Resource Feasibility</strong>: Is the strategy within your means (time, money, energy)?</p>
</li>
</ol>
<h2 id="heading-implementation-plan-and-triggers"><strong>Implementation Plan and Triggers</strong></h2>
<ul>
<li><p><strong>Plan the Next Steps</strong>: Outline the sequence of actions, how you’ll allocate time/resources, and what success looks like at each milestone.</p>
</li>
<li><p><strong>Define Triggers</strong>: Specific events or observations that would prompt you to re-evaluate or pivot. For example, “I’ll re-check my plan if my monthly budget hits below X,” or “I’ll pivot if my new side business generates X revenue or if it fails to generate Y by a certain date.”</p>
</li>
</ul>
<h2 id="heading-monitor-learn-and-adapt"><strong>Monitor, Learn, and Adapt</strong></h2>
<ul>
<li><p><strong>Periodic Review</strong>: Schedule check-ins (monthly, quarterly, or annually depending on the decision scale).</p>
</li>
<li><p><strong>Track Indicators</strong>: Monitor the signs that scenarios are unfolding differently than expected.</p>
</li>
<li><p><strong>Refine Strategies</strong>: Update your plan as new information or resources emerge.</p>
</li>
</ul>
<p>Here is simple template (a <a target="_blank" href="https://docs.google.com/document/d/1rIZN2Yb2Q8mGAnaBVkgsMa0Kb3YPw56SczivbxELkUU/edit?usp=sharing">Google Docs</a> is here) that you can apply. I use this as a template in my own note filing system:</p>
<p><strong>Decision Context</strong><br /><em>Goal:</em><br /><em>Constraints:</em></p>
<p><strong>Key Uncertainties</strong></p>
<ul>
<li><p>1.</p>
</li>
<li><p>2.</p>
</li>
<li><p>3.</p>
</li>
</ul>
<p><strong>Scenarios</strong></p>
<ol>
<li><p><em>Scenario A:</em></p>
</li>
<li><p><em>Scenario B:</em></p>
</li>
<li><p><em>Scenario C:</em></p>
</li>
</ol>
<p><strong>Potential Strategies</strong></p>
<ul>
<li><p><em>No-Regret Moves:</em></p>
</li>
<li><p><em>Contingent Options:</em></p>
</li>
<li><p><em>Adaptive Steps:</em></p>
</li>
</ul>
<p><strong>Stress-Test Strategies</strong></p>
<ul>
<li><p><em>Scenario A:</em></p>
</li>
<li><p><em>Scenario B:</em></p>
</li>
<li><p><em>Scenario C:</em></p>
</li>
</ul>
<p><strong>Best Robust Strategy (or Combination) &amp; Rationale</strong></p>
<ul>
<li>Describe why it is robust and acceptable across scenarios.</li>
</ul>
<p><strong>Implementation &amp; Triggers</strong></p>
<ul>
<li><p><em>Immediate Action Plan:</em></p>
</li>
<li><p><em>Trigger Points:</em></p>
</li>
<li><p><em>Timeline:</em></p>
</li>
</ul>
<p><strong>Monitoring &amp; Adaptation</strong></p>
<ul>
<li><p><em>Review Schedule:</em></p>
</li>
<li><p><em>Indicators/Warning Signs:</em></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[The Math of Reliability: Control Hierarchies]]></title><description><![CDATA[SREs are software engineers who primarily focus on software systems. These systems are adaptable and quick to respond to changes.
Cover Image: Functional levels of a Distributed Control System(DCS) by Daniele Pugliesi, CC BY-SA 3.0 https://creativeco...]]></description><link>https://rlupi.com/the-math-of-sre-explained-control-hierarchies</link><guid isPermaLink="true">https://rlupi.com/the-math-of-sre-explained-control-hierarchies</guid><category><![CDATA[SRE]]></category><category><![CDATA[Math]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Thu, 07 Mar 2024 18:06:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1709879707046/a38375dc-5491-489a-9e80-6abb0fd7ca28.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>SREs are software engineers who primarily focus on software systems. These systems are adaptable and quick to respond to changes.</p>
<p><em>Cover Image:</em> <a target="_blank" href="https://en.wikipedia.org/wiki/Hierarchical_control_system#/media/File:Functional_levels_of_a_Distributed_Control_System.svg"><em>Functional levels of a Distributed Control System</em></a><em>(DCS) by Daniele Pugliesi, CC BY-SA 3.0</em> <a target="_blank" href="https://creativecommons.org/licenses/by-sa/3.0"><em>https://creativecommons.org/licenses/by-sa/3.0</em></a><em>, via Wikimedia Commons</em></p>
<p>From this post, I'll start to move away from SRE and share personal insights drawn more from my education (SWE+EE, "Ingegneria Informatica e dell'Automazione", CS and Automation Engineering), personal interests and from my first decade of work (2000-2012), which includes experiences as a consultant, tech lead, or CTO in smaller companies.</p>
<p>Every company, organization, technical system, or individual has specific goals they aim to achieve. Their journey towards these goals takes place within a dynamic system. In reality, these paths are filled with variability, making the process generally unpredictable and influenced by many smaller factors. Since most real-world processes involve feedback loops and uncertainty, they can lead to complex behaviors. The field that studies these systems is known as <a target="_blank" href="https://en.wikipedia.org/wiki/Cybernetics">Cybernetics</a>. Over time, it has expanded into various areas across different disciplines. Nowadays, you rarely hear the term mentioned, and with this fragmentation, we've also lost an holistic, comprehensive view of these topics.</p>
<p>Every company, organization, or technical system worth building in these settings is an <strong>actor</strong> that exercise control over the trajectory leading to its goals. (In a general sense: this is true even for pure dashboards... their goal is to nudge their users' trajectories toward a more informed state)</p>
<p>When humans create systems with complex behaviors, these systems usually follow certain patterns. We organize <a target="_blank" href="https://en.wikipedia.org/wiki/Hierarchical_control_system">control systems</a> in <strong>hierarchies</strong>.</p>
<p>These patterns may arise from the mathematics of the problems, as we'll soon explore, or from the most efficient methods of accomplishing tasks, and they are ultimately constrained by and reflect our own biology. (If octopuses were the dominant specie, we'd see quite a different structure emerge!)</p>
<h1 id="heading-deterministic-vs-stochastic-processes">Deterministic vs. Stochastic processes</h1>
<p>I wrote about <a target="_blank" href="https://rlupi.com/the-math-of-sre-explained-stochastic-processes">stochastic processes</a>, let's consider deterministic processes.</p>
<p>If statistical noise leads to such small changes in the output that they don't matter, we're dealing with a <strong>deterministic process</strong>. These types of problems pop up in many areas of life and in high school or college-level physics. You'd typically solve these problems using <strong>difference</strong> or <strong>differential equations</strong>. In their simplest form, they look like this:</p>
<p>$$\begin{align*} y(t+1)-y(t)=f(y(t)) &amp;&amp; \text{discrete time}\\ \dot{y}(t)=f(y(t)) &amp;&amp; \text{continuous time} \end{align*}$$</p><p>Ordinary deterministic processes are simpler to understand than stochastic processes. However, deterministic processes can only approximate their stochastic counterparts under certain conditions.</p>
<p>An interesting question is:</p>
<blockquote>
<p>Under what conditions statistical noise does or doesn't matter?</p>
</blockquote>
<p>I claim there are two scenarios worth considering (for this practical discussion):</p>
<ul>
<li><p>When is <strong>so small in time or effect compared to the process step or increment</strong> that it is small or negligible. This is <strong>background noise</strong> that when completely negligible gives us a fully deterministic case, and when noise is small but nonzero leads to a non-equilibrium stationary state.</p>
  <details><summary>On Chaos...</summary><div data-type="detailsContent">Is this really true? No, but that's what most people think intuitively. I'll expand on the ill effect of this assumption in the near future.</div></details></li>
<li>Noise can be so significant in both duration and stable enough in magnitude that it becomes a constant or predictable factor over a short-term period. A linear trend that can be in various domains, not just time or space, such as seasonal changes consistent enough to be constant in the frequency domain. The impact of this noise leads to <strong>local linear or bounded effects</strong> and doesn't significantly affect the variability of <strong>trajectories</strong>, but just introduce more parallel modes. It also lead to <strong>regime switching</strong> when these conditions shift.</li>
</ul>
<p>A more interesting one is:</p>
<blockquote>
<p>When do these conditions stop be true?</p>
</blockquote>
<p>I'll explore these two cases in detail in follow-up articles.</p>
<h1 id="heading-control-hierarchies">Control hierarchies</h1>
<p>To reach our goals, we need systems that are simple(r) to understand, so we can design and manage them. As we've seen, noise isn't a fixed idea: <strong>the definition of noise varies depending on the stochastic process we're considering</strong>.</p>
<p>We organize control for both social and technical systems in hierarchies.</p>
<p>Evolutionary forces and principled design choices shape control systems so they adapt to the processes and subprocesses they control, to eliminate as much as possible sources of noise.</p>
<p>If we consider one layer as a reference point:</p>
<ul>
<li><p>Higher layers of the control hierarchy operate on longer intervals or larger populations, to minimize background noise.</p>
</li>
<li><p>Lower layers operate on smaller space or time scales, where the nearly-constant effect of variations make it possible to ignore them or parametrize them away.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[The Math of Reliability: stochastic processes]]></title><description><![CDATA[Take a collection random variables and organize them in some way, you get a stochastic process or a random field.
We need to explore more than just basic statistics and discuss how sequences of random variables change over time and space. (This is an...]]></description><link>https://rlupi.com/the-math-of-sre-explained-stochastic-processes</link><guid isPermaLink="true">https://rlupi.com/the-math-of-sre-explained-stochastic-processes</guid><category><![CDATA[SRE]]></category><category><![CDATA[statistics]]></category><category><![CDATA[Math]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Wed, 06 Mar 2024 07:03:41 GMT</pubDate><content:encoded><![CDATA[<p>Take a collection random variables and organize them in some way, you get a <strong>stochastic process</strong> or a <strong>random field.</strong></p>
<p>We need to explore more than just <a target="_blank" href="https://rlupi.com/the-math-of-sli-and-slos-explained">basic statistics</a> and discuss how sequences of random variables change over time and space. (This is another introductory post, so I can build upon these concepts later)</p>
<p>What does organizing mean? It involves assigning each variable an index from a set. If the index set consists of natural or real numbers (or can be mapped to these), we refer to it as a <strong>stochastic process</strong>. If the index set is higher-dimensional, it's called a <strong>random field.</strong></p>
<p>The <strong>state space</strong> is the shared space from which all these random variables draw their values.</p>
<p>When we consider the product of index set and state space, there are several typical combinations:</p>
<ul>
<li><p>discrete-time, discrete-state</p>
</li>
<li><p>discrete-time, continuous-state</p>
</li>
<li><p>continuous-time, discrete-state</p>
</li>
<li><p>continuous-time, continuous-state</p>
</li>
<li><p><em>(note: this list isn't complete! there are more options!)</em></p>
</li>
</ul>
<p>The index set doesn't have to be time.</p>
<p>When we do talk about time, we should be really thinking about <em>times</em> in the plural. There are multiple domains of time, not just one. A lot of confusion and mistakes happen when different concepts of time are mixed without careful consideration.</p>
<p>Random variables aren't limited to single numbers. They can be vectors, matrices, functions, and much more. All they require is a method to measure things, which in mathematical terms, is called a <a target="_blank" href="https://en.wikipedia.org/wiki/%CE%A3-algebra">σ-algebra</a>. A measurable space is actually defined by a pair (X,Σ), where X is a set and Σ is a σ-algebra.</p>
<p>The result of a stochastic process is a function that connects the index set with the state space. This is known by several names: as the <strong>realization</strong>, sample function, or, when it involves time, as a <strong>trajectory</strong> or <strong>sample path</strong>. The difference between two random variables (for example, two steps in the same sample path) is called an <strong>increment</strong>.</p>
<p>In my previous article, I talked about Bernoulli random variables. A <strong>Bernoulli process</strong> is a series of independent and identically distributed (i.i.d.) random variables with a <em>state space</em> of {0,1}, where there's a constant probability <em>p</em> over time. A Bernoulli process operates in discrete time and has discrete states.</p>
<p>A <strong>random walk</strong> is a <strong>sum</strong> of random variables or vectors. Many ideas can be thought of as sums: you just need an associative way to combine things and a starting point (a zero or identity element), this is called a <a target="_blank" href="https://en.wikipedia.org/wiki/Monoid">Monoid</a>. If you've heard about Haskell, you might know about <a target="_blank" href="https://en.wikipedia.org/wiki/Monad_(functional_programming)">Monads</a>, which apply similar concepts in programming. Monads can represent many things: from simple optional values and lists (like a series of changes over time), to changes in state, ongoing processes, and even parallel operations. Random walks are processes that operate in discrete time.</p>
<p>Random walks are typically described as the sum of <strong>iid</strong> random variables or vectors. However, we shouldn't restrict ourselves to fixed parameters. In reality, especially in incident response, transient behavior often arises from parameters or conditions that change over time.</p>
<p>The simplest form, a simple random walk, is indeed stationary discrete-time, discrete-space. It is based on Bernoulli trials that are mapped to increments of {-1, 1}, and the resulting state space includes all integers.</p>
<p>A <strong>Wiener process</strong> is the continuous equivalent of a simple random walk: it operates in continuous time and has stationary, independent, and identically distributed increments that follow a normal distribution. This concept is widely used in areas like quantitative finance (e.g., Black-Scholes model) and physics (e.g., Brownian motion).</p>
<p>A <strong>Poisson process</strong> counts the random number of events up to some time. If the rate of events remains constant over time, it is called an homogeneous Poisson process. When the probability of events changes over time, they are called nonhomogeneous.</p>
]]></content:encoded></item><item><title><![CDATA[The Math of SRE Explained: SLI and SLOs]]></title><description><![CDATA[Let me share what I've learned from 12 years of experience, defining and defending SLOs on various software and hardware systems, including TPU pods, HPC/GPU clusters, and general compute clusters. (This is just an introductory post, but I need to co...]]></description><link>https://rlupi.com/the-math-of-sli-and-slos-explained</link><guid isPermaLink="true">https://rlupi.com/the-math-of-sli-and-slos-explained</guid><category><![CDATA[SRE]]></category><category><![CDATA[statistics]]></category><category><![CDATA[slo]]></category><category><![CDATA[sli]]></category><category><![CDATA[Math]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Mon, 04 Mar 2024 12:00:00 GMT</pubDate><content:encoded><![CDATA[<p>Let me share what I've learned from 12 years of experience, defining and defending SLOs on various software and hardware systems, including TPU pods, HPC/GPU clusters, and general compute clusters. (This is just an introductory post, but I need to cover the basics before diving into more juicy topics)</p>
<p>SRE, by <a target="_blank" href="https://sre.google/sre-book/service-level-objectives/">the book</a>, defines SLI as "quantitative measure of some aspects of the level of a service that is provided" and SLO as " a target value or range of values for a service level that is measured by an SLI"; the <a target="_blank" href="https://sre.google/workbook/implementing-slos/">SRE workbook</a> warns that "It can be tempting to try to math your way out of these problems [...] Unless each of these dependencies and failure patterns is carefully enumerated and accounted for, any such calculations will be deceptive".</p>
<p>I agree with the last statement, but let's not shy away from the journey. Let's embrace math, and we'll uncover a rich and fascinating landscape.</p>
<h1 id="heading-fantastic-slisslos-and-where-to-find-them">Fantastic SLIs/SLOs and where to find them</h1>
<p>Here is a bestiary of SLIs and SLOs commonly found in the wild, to lay the ground of what we'll be talking about.</p>
<p>SLIs for software services usually cover <em>latency</em>, which is the time it takes to respond to a request or finish a task, <em>error rate</em>, the ratio of failed requests to total requests received, and some measure of <em>system throughput</em>, like requests per second or GBps.</p>
<p>Not all requests are created equal. It's common to set different SLOs for different types or classes of requests. Various terms – such as priority, criticality, or quality of service (QoS) – are used in different situations, but they all serve the purpose of treating requests differently and managing load when a service is under stress.</p>
<p>Compute services, such as Kubernetes clusters or Borg cells, operate on a different time scale compared to web services, but they are not entirely different. Users care about how long it takes to schedule a job (or to receive an error), that scheduling failures are rare, and how efficiently compute resources are used compared to the theoretical zero-overhead scenario.</p>
<p>For both software services and compute resources, it's common to define <em>availability</em>.</p>
<p>In systems that show measurable progress, we focus on the portion of throughput that is truly effective. This concept of application-level throughput is known as <em>goodput</em> in networking, and the term has also been embraced by ML (<a target="_blank" href="https://github.com/google/cloud_tpu_goodput">at least at Google</a>).</p>
<p>In storage systems, we also care about <em>durability</em>, which is the likelihood of accurately reading back what we wrote without any errors or silent corruption.</p>
<p>Given enough size, silent data corruption is also a problem that you care about in compute infrastructure.</p>
<p><strong>SLIs are usually defined as a certain quantile over a sample or measurement</strong>, and these quantiles often fall at the tail of distributions, not in the center. This is an important point because it changes the mathematical rules of the game!</p>
<p>Perfection is costly. It is common to define SLI as the <em>latency</em> of 95/99% of requests, and you rarely or never see max latency in SLO definitions. When it does appear, there are always escape clauses.</p>
<p>Most hyperscaler services and the business scenarios they support aim for between 3 (99.9%) to 5 (99.999%) nines of availability. However, many users can <a target="_blank" href="https://cloud.google.com/compute/sla">tolerate</a> even <a target="_blank" href="https://aws.amazon.com/compute/sla/?nc1=h_ls">less</a> at the instance- or region-level, e.g. with 99% availability allowing for up to 7.2 hours of downtime per month.</p>
<p>There are users in the world who can't tolerate more than 30 milliseconds of server downtime per year. They require 99.9999999% availability, and there are systems capable of delivering these impressive numbers. However, this level of reliability is not typical for common computing infrastructure. (For those interested, the number above is the stated reliability of an IBM z16 mainframe.)</p>
<h1 id="heading-a-side-trip-into-probability-distribution-and-basic-statistics">A side trip into probability distribution and basic statistics</h1>
<p>If you're already familiar with basic frequentist versus Bayesian statistics, distribution families, and the central limit theorem, feel free to skip this section.</p>
<p>If you're not familiar or just want a refresher, let's start with the basics. We'll discuss <strong>counting things</strong>, as we aim to measure how often a system fails.</p>
<p>A random variable is a variable with a value that is uncertain and determined by random events. In mathematical terms, it's not actually a variable, but a function that maps possible outcomes in a sample space to a measurable space (known as the support).</p>
<p>So, when the possible outcomes are discrete and finite or countably infinitely many outcomes or uncountably infinite (and piecewise continuous), we can define the expectation of a random variable X respectively as:</p>
<p>$$\begin{align*} E[X] &amp;= x_1p_1+x_2p_2+\dots+x_kp_k\\ E[X] &amp;= \sum_{i=1}^{\infty}x_ip_i \\ E[X] &amp;= \int_{-\infty}^{\infty}xf(x)dx \end{align*}$$</p><p>where p_i is the probability of outcome x_i and f(x) is the probability density function (the corresponding name in the discrete case – i.e. pmf(x_i)=p_i – is called the probability mass function).</p>
<p>There are two main approaches to statistics.</p>
<ul>
<li><p>Frequentist or classical statistics, assigns probability to data, focusing on the frequency of events, and tests yield results that are either true or false.</p>
</li>
<li><p>Bayesian statistics, assigns probabilities to hypotheses, producing credible intervals and the probability that a hypothesis is true or false; it also incorporates prior knowledge into the analysis, updating this as more data becomes available.</p>
</li>
</ul>
<p>Probability distributions aren't isolated; they are connected to each other <a target="_blank" href="https://en.wikipedia.org/wiki/Relationships_among_probability_distributions">in complex ways</a>. They can be transformations, combinations, approximations (for example, from discrete to continuous), or compositions of each other, and so on...</p>
<p>The binary outcome {0, 1}, like available/broken, of independent events is a <em>Bernoulli</em> random variable (rv) with parameter <em>p</em>, which represents the probability of events. When we sample from a Bernoulli distribution, we get a set of values that can either be 0 or 1.</p>
<p>When counting events in discrete time, such as if we consider events that fall in a given second/minute/hour/month:</p>
<ul>
<li><p>The time between positive events follows a <em>Geometric</em> distribution with the same parameter <em>p</em>;</p>
</li>
<li><p>The time between every second positive event follows a <em>Negative Binomial</em> distribution with the same success probability <em>p</em> as before and <em>r=2</em>, meaning we are focusing on every second positive event.</p>
<ul>
<li>An notable point is that the Negative Binomial random variable is the sum of Geometric random variables.</li>
</ul>
</li>
<li><p>The number of events in a given interval or sample of size <em>N</em> follows a <em>Binomial</em> distribution with parameters <em>p</em> and <em>N</em>.</p>
<ul>
<li>For instance, the raw number of available TPU slices in a TPUv2 or v3 pod, or the number of DGX systems in a DGX Superpod, can be roughly estimated using this distribution... but what makes the difference in these systems is how you manage disruptions, planned and unplanned maintenance.</li>
</ul>
</li>
</ul>
<p>When we start counting events in continuous time, we discover matching distributions with the same mathematical structure and relationships. These are the limit distributions of the previous ones when the interval sizes become infinitely small. For those who are particularly adventurous, let me mention that <a target="_blank" href="https://ncatlab.org/nlab/show/probability+theory">category theory</a> offers an alternative and much broader explanation, as is often the case.</p>
<ul>
<li><p>The time between independent events happening at a constant average rate and with a probability <em>p</em> follows an <em>Exponential</em> random variable with a rate parameter λ=1/<em>p</em>.</p>
</li>
<li><p>The time between every <em>k</em>-th event follows a <em>Gamma</em> random variable with parameters <em>k</em> and <em>θ=1/p</em>.</p>
<ul>
<li>The Gamma random variable is the sum of k exponential random variables, the same relationship as the negative binomial and geometric random variables above.</li>
</ul>
</li>
<li><p>The number of events in a given time span of size N is a <em>Poisson</em> random variable with rate parameter <em>λ=N/p</em>.</p>
</li>
</ul>
<p>We refer to a "sample" as a subset of values taken from a statistical population. A "sample statistic" is a value calculated from the sample. When we use a statistic to estimate a population parameter, we call it an "estimator".</p>
<p>For a sufficiently large number of events in Bernoulli samples, if we count the number of positive events and divide by the total number of events, the result will be close to <em>p</em>. As the number of events grows to infinity, the result converges to <em>p</em>, which is the "mean" of the Bernoulli distribution. This is known as the "law of large numbers": the average obtained from a large number of i.i.d. random samples converges to the true value if it exists.</p>
<p>The average of many samples of a random variable, which has a finite mean and variance, becomes a random variable that follows a <em>Normal distribution,</em> under specific conditions. This is known as the "central limit theorem".</p>
<p>This is what most people recall from their introductory statistics courses.</p>
<h1 id="heading-the-central-limit-theorem-need-not-apply-extreme-value-theory">The central limit theorem, need not apply... Extreme Value Theory</h1>
<p>Let's talk about when the central limit theorem does not apply, as this is a common situation with the data that SREs deal with. Not knowing its limits is one reason why relying on what people remember from introductory statistics is discouraged (though it's not the only reason).</p>
<p>A popular way to normalize data is to compute the Z-score, defined as:</p>
<p>$$Z = {{x - \mu} \over {\sigma}}$$</p><p>where Z is known as the standard score, and it normalizes samples in terms of standard deviations (σ) and the mean (μ).</p>
<p>But don't attempt to analyze variability in <em>error rates</em> by normalizing error and request counts, and then calculating the ratio. The ratio of two independent Normal random variables with a mean of zero (Cauchy random variables) has an undefined mean!</p>
<p>There are two other crucial distributions that frequently appear in SLI and SLO, yet many SREs seem unaware of them. These distributions are connected to quantiles and significant deviations from the median of a probability distribution. Therefore, the field of statistics that examines them is known as <em>Extreme Value Theory</em>.</p>
<p>There are two primary methods for analyzing the tails of distributions.</p>
<ul>
<li><p><em>You can calculate the maximum or minimum values over a specific period or block, and then analyze the distribution of these values (for example, the highest values of each year based on the highest values of each month).</em> This method helps you understand the distribution of the minimum or maximum values from very large sets of identical, independently distributed random variables from the same distribution. The distribution you find is often a form of the <a target="_blank" href="https://en.wikipedia.org/wiki/Generalized_extreme_value_distribution"><em>Generalized Extreme Value Distribution</em></a>. Here we consider the maxima/minima and then compute the distribution that it follows given a arbitrarily large or infinity amount of time. It's good to estimate the worst-case scenario for a steady-state process.</p>
</li>
<li><p><em>You can count how many times peak values go above or below a certain threshold within any period.</em> There are two distributions to look at: the number of events in a specific period (like a <em>Poisson distribution</em> mentioned earlier), and how much the values exceed the threshold, which usually follows a <a target="_blank" href="https://en.wikipedia.org/wiki/Generalized_Pareto_distribution"><em>generalized Pareto distribution</em></a>. Here we consider the frequency of violations and how severe they can be.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1709569330938/d9a7cbf8-d367-4d60-b155-45a174f33a6c.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[OKR planning as belief revision]]></title><description><![CDATA[Objective and Key Results (OKR) is a well-known framework used to set and track an organization's goals. Leaders establish top-level OKRs, which then flow through the organization. In this journey, more details are added, these strategic goals drive ...]]></description><link>https://rlupi.com/okr-planning-as-belief-revision</link><guid isPermaLink="true">https://rlupi.com/okr-planning-as-belief-revision</guid><category><![CDATA[OKR]]></category><category><![CDATA[planning]]></category><category><![CDATA[organization]]></category><dc:creator><![CDATA[Roberto Lupi]]></dc:creator><pubDate>Thu, 29 Feb 2024 08:22:33 GMT</pubDate><content:encoded><![CDATA[<p>Objective and Key Results (OKR) is a well-known framework used to set and track an organization's goals. Leaders establish top-level OKRs, which then flow through the organization. In this journey, more details are added, these strategic goals drive alignment and but also adjust according to tactical needs and constraints. Progress is monitored, and any necessary changes are made throughout the organization.</p>
<p>Large organizations are structured in complex hierarchies because this setup helps with planning and execution, compared to other options.</p>
<p>The concept of <a target="_blank" href="https://plato.stanford.edu/entries/logic-belief-revision/">belief revision</a> has been explored in various fields for a long time. In 1982, Judea Pearl introduced <a target="_blank" href="https://en.wikipedia.org/wiki/Belief_propagation">belief propagation</a>, an algorithm designed for making predictions using graphical models like Bayesian networks or Markov random fields. When applied to a tree-shaped model, this algorithm finishes in just two complete cycles. On more complex graphs, an approximate version of belief propagation can be used, though it requires more steps – which is costly when implemented at the speed dictated by human processes.</p>
<p>AI and LLM will make these processes faster and lower coordination costs.</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">❗</div>
<div data-node-type="callout-text">The key question is whether LLMs will lead to a <strong>tipping point</strong>, and the <em>emergence of new organizational structures and coordination dynamics that adapt to change more efficiently than our current ones</em>.</div>
</div>

<p>There are many other <a target="_blank" href="https://en.wikipedia.org/wiki/Moral_Mazes">functions and factors</a> that stabilize bureaucracies, but they are ultimately bound by what they achieve. The often unstated purpose of large corporations is not to compete in the market and make profits, it is to grow beyond that game and "engulf enough of the world to shield themselves from uncertainty" (rephrasing cit. John Kenneth Galbraith and Danella Meadows's <a target="_blank" href="https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/">Leverage Points</a>). When they are successful for a long time, they can loose the ingredients and factors that made them good at the innovation game in their earlier history. Increasing profits is a necessary condition to continue to play. Inefficiency and slow speed are a moral hazard and mortal sin for a corporation that faces market shakeups and looses <em>mind</em>share even before marketshare.</p>
]]></content:encoded></item></channel></rss>