<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Insights on Trobz</title>
		<link>https://trobz.com/insights/</link>
		<description>Recent content in Insights on Trobz</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<atom:link href="https://trobz.com/insights/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>AI in Odoo: Fundamentals of Vectors, Embeddings &amp; the field_vector Module</title>
				<link>https://trobz.com/insights/ai-vectors-embeddings-field-vector-odoo/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/ai-vectors-embeddings-field-vector-odoo/</guid>
				<description>&lt;h2 id=&#34;fundamentals-vectors-and-embeddings&#34;&gt;Fundamentals: Vectors and Embeddings&lt;/h2&gt;&#xA;&lt;h3 id=&#34;what-is-a-vector&#34;&gt;What Is a Vector?&lt;/h3&gt;&#xA;&lt;p&gt;In computer science and data work, a vector is an ordered list of numbers, for example &lt;code&gt;[1.2, -0.5, 0.8]&lt;/code&gt;. In mathematics and physics, a vector describes magnitude and direction. In AI, it is used to represent features or coordinates in a multi-dimensional space.&lt;/p&gt;&#xA;&lt;h3 id=&#34;what-are-embeddings&#34;&gt;What Are Embeddings?&lt;/h3&gt;&#xA;&lt;p&gt;An &lt;strong&gt;embedding&lt;/strong&gt; is a vector that represents a real-world object, such as a piece of text, an image, a user or a product, in a form that machines can process and compare.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design Patterns in Odoo: Chain of Responsibility</title>
				<link>https://trobz.com/insights/design-patterns-odoo-chain-of-responsibility/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/design-patterns-odoo-chain-of-responsibility/</guid>
				<description>&lt;p&gt;Imagine building a quality-inspection pipeline for a factory, where every product goes through a sequence of checks. At first, you hard-code the checks in one linear block of code. Over time, new checks are added, some need to be reordered and special cases appear. The large &lt;code&gt;if/else&lt;/code&gt; block or monolithic function becomes hard to change, and adding or reordering checks becomes risky.&lt;/p&gt;&#xA;&lt;p&gt;This is where the Chain of Responsibility pattern helps. In this post, we look at how the pattern works through three practical examples.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design Patterns in Odoo: Facade</title>
				<link>https://trobz.com/insights/design-patterns-odoo-facade/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/design-patterns-odoo-facade/</guid>
				<description>&lt;p&gt;When developing for Odoo, especially in large modules, you often need external libraries to extend functionality. These libraries can be complex and rarely fit naturally with the Odoo framework, which tends to lead to tightly coupled code that is hard to maintain.&lt;/p&gt;&#xA;&lt;p&gt;The Facade pattern helps with this. It wraps such a library behind a simple, Odoo-friendly interface. Let&amp;rsquo;s look at how the pattern works and how Odoo uses it for external integrations.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design Patterns in Odoo: Proxy</title>
				<link>https://trobz.com/insights/design-patterns-odoo-proxy/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/design-patterns-odoo-proxy/</guid>
				<description>&lt;p&gt;If you work with JavaScript code in Odoo, you may come across &lt;code&gt;Proxy&lt;/code&gt;. Proxy is a structural design pattern that provides a substitute for another object. A proxy controls access to the original object and can run extra logic before or after a request reaches it. Think of a security guard at a building entrance, who checks credentials before letting anyone in.&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview-of-the-pattern&#34;&gt;Overview of the Pattern&lt;/h2&gt;&#xA;&lt;p&gt;Sometimes accessing an object needs extra logic: delaying initialization, restricting access, caching results or handling other concerns. Changing the original object directly is not always a good idea, because it complicates the code and breaks the single responsibility principle.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Design Patterns in Odoo: Template Method</title>
				<link>https://trobz.com/insights/design-patterns-odoo-template-method/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/design-patterns-odoo-template-method/</guid>
				<description>&lt;p&gt;Imagine managing shipping in Odoo with every delivery carrier&amp;rsquo;s logic crammed into one place. For each action (getting a rate, sending a package or tracking it), you would face a long &lt;code&gt;if/elif/else&lt;/code&gt; block, and adding a new carrier would mean changing that code and risking the integrations that already work. It would be hard to scale, fragile and difficult to maintain.&lt;/p&gt;&#xA;&lt;p&gt;This is where the Template Method pattern comes in. In this post, we look at the pattern and at how Odoo&amp;rsquo;s delivery module implements it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Introducing odoo-addons-path: A Developer-Friendly Tool to Manage Odoo Addon Paths</title>
				<link>https://trobz.com/insights/introducing-odoo-addons-path/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/introducing-odoo-addons-path/</guid>
				<description>&lt;p&gt;Managing the &lt;a href=&#34;https://www.odoo.com/documentation/19.0/developer/reference/cli.html#cmdoption-odoo-bin-addons-path&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;addons_path&lt;/code&gt;&lt;/a&gt;&#xA; setting in Odoo projects looks simple until you maintain several repositories, submodules and more. Each project layout organizes addons in its own way, and the order of the directories matters: a misplaced folder can silently override a module or load the wrong custom module.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/trobz/odoo-addons-path&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;odoo-addons-path&lt;/a&gt;&#xA; removes that burden. It detects your project layout and assembles the final &lt;code&gt;addons_path&lt;/code&gt; in the right order, so developers no longer configure it by hand and risk mistakes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Introducing odoo-venv</title>
				<link>https://trobz.com/insights/introducing-odoo-venv/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/introducing-odoo-venv/</guid>
				<description>&lt;p&gt;How do you install and run Odoo? It sounds like a simple question, but you may be surprised by how many valid answers there are, depending on who you ask.&lt;/p&gt;&#xA;&lt;p&gt;Here is a non-exhaustive overview:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Odoo SA&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Maintains &lt;a href=&#34;https://nightly.odoo.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;DEB and RPM packages&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Maintains the official &lt;a href=&#34;https://github.com/odoo/docker/tree/master&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Odoo Docker Hub image&lt;/a&gt;&#xA;, built on Ubuntu images and its own DEB package&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCA (Odoo Community Association)&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Provides a Docker image for running tests: &lt;a href=&#34;https://github.com/oca/oca-ci&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;oca-ci&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Publishes OCA addons to a pip wheelhouse, which makes a pip-only approach possible&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Odoo integrators&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use Docker-based solutions, such as:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tecnativa/doodba&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Doodba&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Camptocamp&amp;rsquo;s &lt;a href=&#34;https://github.com/camptocamp/docker-odoo-project&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;docker-odoo-project&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Each approach has its merits. But the more layers of abstraction a setup relies on, the more complex and challenging local development becomes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Real Cost of Delaying an Odoo Upgrade and How to Control It</title>
				<link>https://trobz.com/insights/real-cost-delaying-odoo-upgrade/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/real-cost-delaying-odoo-upgrade/</guid>
				<description>&lt;p&gt;Most companies that delay an Odoo upgrade aren&amp;rsquo;t making a deliberate financial decision. They&amp;rsquo;re avoiding a disruption they can&amp;rsquo;t fully cost out, in favor of a status quo that feels manageable. The system runs. The team knows it. Finance hasn&amp;rsquo;t complained loudly enough.&lt;/p&gt;&#xA;&lt;p&gt;That calculation is often wrong, and the error tends to grow over time.&lt;/p&gt;&#xA;&lt;p&gt;This post breaks down what the delay actually costs: the charges that show up on invoices, the ones that don&amp;rsquo;t, and why the eventual migration gets more expensive the longer you wait.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What OCA Contribution Tells You About an Odoo Partner</title>
				<link>https://trobz.com/insights/oca-contribution-odoo-partner/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trobz.com/insights/oca-contribution-odoo-partner/</guid>
				<description>&lt;p&gt;Choosing an ERP partner is more than a technology decision. The partner you choose shapes how well the system fits your operations, how much risk the project carries and how easily the system can evolve in the years that follow.&lt;/p&gt;&#xA;&lt;p&gt;When companies with complex structures compare implementation partners, they often look for evidence beyond a sales pitch. One useful place to look is the partner&amp;rsquo;s role in the &lt;strong&gt;Odoo Community Association (OCA)&lt;/strong&gt;, the non-profit organisation that supports the collaborative development of open-source Odoo modules.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
