<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://nirooba.me/feed.xml" rel="self" type="application/atom+xml" /><link href="https://nirooba.me/" rel="alternate" type="text/html" /><updated>2026-04-23T19:04:25+00:00</updated><id>https://nirooba.me/feed.xml</id><title type="html">Nirooba</title><subtitle>Personal blog and portfolio of Nirooba — writing about software, systems, and ideas.</subtitle><author><name>Nirooba</name><email>nirooba98@gmail.com</email></author><entry><title type="html">My Journey with Odoo</title><link href="https://nirooba.me/blog/2026/04/22/my-odoo-journey/" rel="alternate" type="text/html" title="My Journey with Odoo" /><published>2026-04-22T00:00:00+00:00</published><updated>2026-04-22T00:00:00+00:00</updated><id>https://nirooba.me/blog/2026/04/22/my-odoo-journey</id><content type="html" xml:base="https://nirooba.me/blog/2026/04/22/my-odoo-journey/"><![CDATA[<p>Before working at KA Imaging, I had never heard of Odoo. By the time I left, I had built custom models, shipped compliance-grade features, and successfully integrated it with CAD software. Here’s how that journey unfolded.</p>

<h2 id="the-problem-spreadsheets-everywhere">The Problem: Spreadsheets Everywhere</h2>

<p>When I joined KA Imaging, the business was running on spreadsheets. Orders, inventory, HR, financials — all of it scattered across files that were increasingly hard to maintain, reconcile, and trust. The team knew it wasn’t sustainable. We needed a proper system.</p>

<p>After evaluating a few options, we landed on Odoo — an open source ERP written in Python, with a modular architecture that covers everything from CRM and accounting to manufacturing and project management. The pitch was simple: one platform, deeply customizable, and no need to bolt together a dozen different tools.</p>

<h2 id="starting-in-the-cloud">Starting in the Cloud</h2>

<p>We started by hosting a standard Odoo instance on the cloud. For a while, it worked well enough. But as we got deeper into the platform, we hit a wall: our industry required a level of compliance that the out-of-the-box configuration simply couldn’t satisfy. We needed to modify the software itself — not just configure it.</p>

<p>That’s when we made the move to <strong>Odoo.sh</strong>, Odoo’s own managed hosting platform built on top of GitHub. Odoo.sh gave us a proper development workflow — branches, staging environments, automated builds — without having to manage infrastructure ourselves. More importantly, it gave us the ability to maintain a separate repository for our custom modules, keeping our changes clean and isolated from the upstream Odoo codebase. No monkey-patching, no risk of breaking things on the next update.</p>

<h2 id="getting-into-the-code">Getting into the Code</h2>

<p>Odoo’s architecture is Python all the way down on the backend. Models, business logic, access control, computed fields — everything is defined in Python using Odoo’s ORM. The frontend layer is driven by XML view definitions, which describe how data is rendered in the UI. It’s an unusual combination if you’re coming from a modern JS framework background, but it’s surprisingly powerful once it clicks.</p>

<p>Our customizations ranged from minor tweaks to significant additions:</p>

<ul>
  <li><strong>New models</strong> built from scratch to track domain-specific data that Odoo didn’t have out of the box</li>
  <li><strong>Extended existing modules</strong> to add compliance fields, validation rules, and audit trails</li>
  <li><strong>Custom reports</strong> and document templates tailored to our business needs</li>
  <li><strong>An integration with CAD software</strong> — which deserves its own post entirely, and will get one</li>
</ul>

<p>The compliance work was probably the most demanding. Healthcare and medical imaging carry strict requirements around data integrity and traceability, and translating those requirements into Odoo’s model layer took careful thought. Getting it right was deeply satisfying.</p>

<h2 id="what-i-think-of-odoo">What I Think of Odoo</h2>

<p>After all of it, my honest take: Odoo is one of the most versatile business platforms I’ve worked with.</p>

<p>For teams that don’t want to write any code, the standard modules cover an impressive range of business operations. For teams willing to get their hands dirty with Python, the sky is mostly the limit. You can extend nearly anything, override views, hook into the ORM lifecycle, and build integrations with external systems — all while benefiting from Odoo’s built-in authentication, permissions, UI framework, and reporting engine.</p>

<p>It’s not without rough edges. The XML-based frontend can feel clunky compared to modern tooling, and the documentation has gaps that push you toward reading source code. But the tradeoff is a remarkably complete foundation that would take years to build from scratch.</p>

<h2 id="looking-back">Looking Back</h2>

<p>Working with Odoo was one of the more rewarding technical experiences of my career so far. It pushed me to think beyond isolated features and consider how data, workflows, and users connect across an entire organization. It also gave me a deep appreciation for well-designed Python — Odoo’s codebase, at its best, is clean and idiomatic.</p>

<p>If your team is drowning in spreadsheets or patching together disconnected tools, Odoo is worth a serious look. And if you’re a developer curious about it — dive in. The Python is approachable, the community is active, and the problems are genuinely interesting.</p>

<p>More from this era coming soon, including the CAD integration story.</p>]]></content><author><name>Nirooba</name><email>nirooba98@gmail.com</email></author><category term="work" /><category term="python" /><summary type="html"><![CDATA[How I went from spreadsheets to a fully customized ERP — and what I learned building on Odoo at KA Imaging.]]></summary></entry><entry><title type="html">Why I’m Building in Public</title><link href="https://nirooba.me/blog/2026/04/15/building-in-public/" rel="alternate" type="text/html" title="Why I’m Building in Public" /><published>2026-04-15T00:00:00+00:00</published><updated>2026-04-15T00:00:00+00:00</updated><id>https://nirooba.me/blog/2026/04/15/building-in-public</id><content type="html" xml:base="https://nirooba.me/blog/2026/04/15/building-in-public/"><![CDATA[<p>There’s a version of work that only happens in private — tidy, finished, presented at the right moment. And there’s building in public, which is messier and more honest.</p>

<p>I’ve been thinking about why sharing unfinished work feels uncomfortable, and whether that discomfort is worth pushing through.</p>

<h2 id="the-perfectionism-trap">The perfectionism trap</h2>

<p>The problem with waiting until something is “ready” is that ready keeps moving. There’s always another edge case, another refactor, another thing to polish before it’s fit for human eyes.</p>

<p>Building in public forces a different relationship with quality. Not lower standards — different ones. The question shifts from <em>is this perfect?</em> to <em>is this useful or interesting to someone right now?</em></p>

<h2 id="what-you-gain">What you gain</h2>

<p><strong>Feedback earlier.</strong> The most valuable feedback comes before you’ve committed to a direction, not after.</p>

<p><strong>Accountability.</strong> Saying you’re working on something in public makes you more likely to actually finish it.</p>

<p><strong>A record.</strong> Looking back at how something was built is often more interesting than the thing itself.</p>

<h2 id="the-downside">The downside</h2>

<p>You will ship things that aren’t good. People will see half-finished ideas. Some things won’t work out and that’ll be visible.</p>

<p>I think that’s fine. Most people are too busy with their own work to care deeply about your incomplete projects.</p>

<hr />

<p>So I’m going to try it. Writing here, sharing projects before they’re done, thinking out loud. We’ll see how it goes.</p>]]></content><author><name>Nirooba</name><email>nirooba98@gmail.com</email></author><category term="thoughts" /><summary type="html"><![CDATA[On the value of sharing work before it's ready.]]></summary></entry></feed>