<?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[Ravi Verma's Dev Blog]]></title><description><![CDATA[Ravi Verma's Dev Blog]]></description><link>https://raviverma-pkd.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 26 Oct 2026 23:41:40 GMT</lastBuildDate><atom:link href="https://raviverma-pkd.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Website vs Custom Business App vs Software: Which for Your SME?]]></title><description><![CDATA[Small and medium enterprises in India face unique challenges. From managing inventory in bustling markets of Kanpur to handling online orders from across…]]></description><link>https://raviverma-pkd.hashnode.dev/website-vs-custom-business-app-vs-software-which-for-your-sme</link><guid isPermaLink="true">https://raviverma-pkd.hashnode.dev/website-vs-custom-business-app-vs-software-which-for-your-sme</guid><category><![CDATA[Web Development]]></category><category><![CDATA[business]]></category><category><![CDATA[startup]]></category><category><![CDATA[india]]></category><dc:creator><![CDATA[Ravi Verma]]></dc:creator><pubDate>Thu, 15 Oct 2026 09:12:22 GMT</pubDate><content:encoded><![CDATA[<h2>Understanding the Digital Needs of Indian SMEs</h2>
<p>Small and medium enterprises in India face unique challenges. From managing inventory in bustling markets of Kanpur to handling online orders from across states, technology choices can make or break growth. Many owners wonder whether a simple website, a custom business app, or dedicated software is the best investment.</p>
<p>The decision often depends on your business goals, budget, customer base, and daily operations. A website might suffice for visibility, while a custom app or software can streamline internal processes. Let's break down each option clearly.</p>
<h2>What Is a Website and When Does It Make Sense?</h2>
<p>A website serves as your online storefront. It provides information about your products, services, contact details, and can include e-commerce features for direct sales. For Indian SMEs, a well-designed website helps reach customers beyond local areas, especially with rising internet penetration in Tier 2 and Tier 3 cities.</p>
<p>Websites are generally cost-effective to build and maintain. They work across devices without installation. Updates are straightforward, and they integrate easily with digital marketing tools like SEO and social media. If your primary need is brand presence, lead generation, or online selling, a website is often the starting point.</p>
<p>However, websites have limitations for complex internal tasks. They are not ideal for real-time data processing, offline functionality, or handling sensitive business operations like payroll or supply chain management.</p>
<p><a href="https://pkdventures.in">PKD Ventures</a> specialises in <a href="/services/website-development">website development</a> that aligns with local business realities, ensuring mobile-first designs that perform well on affordable smartphones common in India.</p>
<h2>The Rise of Custom Business Apps</h2>
<p>A custom business app is a tailored mobile or web application built specifically for your company's needs. Unlike off-the-shelf solutions, it matches your exact workflows. For an Indian SME in manufacturing or retail, this could mean an app for field sales teams to update inventory in real time or track deliveries across cities.</p>
<p>Business apps shine in scenarios requiring mobility. Sales representatives can use them on the go, managers can monitor performance dashboards, and teams can collaborate seamlessly. Features like push notifications, offline access, and integration with UPI payments make them highly relevant in the Indian context.</p>
<p>Development costs are higher than basic websites, but the return on investment can be significant through improved efficiency and reduced errors. Many SMEs start with a minimum viable app and scale features over time.</p>
<p>If your business involves frequent customer interactions, logistics, or data collection from multiple locations, a custom business app could transform operations. Explore how <a href="/services/business-app-development">business app development</a> can address specific pain points for your team.</p>
<h2>Traditional Software Solutions Explained</h2>
<p>Software, in this context, usually refers to desktop or cloud-based programs designed for specific functions like accounting, ERP, CRM, or inventory management. These are more comprehensive than apps in some cases and often run on computers or servers.</p>
<p>For Indian businesses, software solutions help with compliance requirements such as GST filing, TDS calculations, and statutory reporting. Custom software development allows these tools to integrate with existing systems, local languages, and regional regulations.</p>
<p>Software tends to be robust for heavy data processing, reporting, and multi-user environments within an office setup. However, it may lack the portability of mobile apps. Cloud-based software is bridging this gap, offering access from anywhere with an internet connection.</p>
<p>Choosing software makes sense when your SME needs deep analytics, secure data storage, or automation of repetitive tasks. It often serves as the backbone for larger operations as the business grows.</p>
<p>Our <a href="/services/custom-software-development">custom software development</a> services focus on building scalable solutions that grow with Indian SMEs without unnecessary complexity.</p>
<h2>Key Differences: A Practical Comparison</h2>
<ul>
<li><p>Purpose: Websites focus on external communication and sales. Custom business apps emphasise mobility and user engagement. Software targets internal efficiency and data management.</p>
</li>
<li><p>Accessibility: Websites are accessible via browsers. Apps require download but offer better performance. Software can be installed on devices or accessed via cloud.</p>
</li>
<li><p>Cost: Websites usually have the lowest upfront cost. Apps and software require higher investment but deliver long-term savings through automation.</p>
</li>
<li><p>Development Time: A basic website can launch in weeks. Custom apps and software may take months depending on features.</p>
</li>
<li><p>Maintenance: All need updates, but software and apps often involve more ongoing technical support, especially with changing regulations like data privacy laws in India.</p>
</li>
<li><p>Integration: Modern solutions allow integration between websites, apps, and software. For example, a website can feed leads into a CRM software, while an app updates the central database.</p>
</li>
</ul>
<p>Consider your daily operations. A retail SME might need a website for customers, an app for delivery tracking, and software for accounts. Many businesses combine all three rather than choosing one.</p>
<h2>Factors to Consider for Your Indian Business</h2>
<p>Budget remains a top concern for SMEs. Start with what solves your most pressing problem. If customer acquisition is low, prioritise a website. If operational delays are hurting margins, look at custom software or apps.</p>
<p>Team skills matter too. Solutions that require minimal training work better for smaller teams. Factor in internet reliability – apps with offline modes are valuable in areas with inconsistent connectivity.</p>
<p>Scalability is crucial. Your chosen solution should handle growth, whether expanding to new cities or adding product lines. Security cannot be overlooked, especially with increasing cyber threats targeting Indian businesses.</p>
<p>Localisation features such as support for Hindi, regional languages, and integration with popular Indian payment gateways add significant value.</p>
<p>Before deciding, map your processes. Identify bottlenecks and match them to technology capabilities. Consulting with experts can prevent costly mistakes.</p>
<h2>Real-World Scenarios for Indian SMEs</h2>
<p>A Kanpur-based apparel manufacturer might use a website to showcase collections and take wholesale orders. A custom app could help sales agents capture orders from shops across Uttar Pradesh. Accounting software would manage compliance and finances.</p>
<p>A food delivery startup could begin with a simple website listing menus but quickly need a business app for order management and driver tracking. Software for inventory and supplier coordination would follow as volumes increase.</p>
<p>Service businesses like consultants or trainers often start with a professional website and later add booking apps or CRM software to manage client relationships efficiently.</p>
<p>The combination approach works best. A website attracts leads, an app nurtures customer relationships, and software handles backend operations.</p>
<h2>How AI Is Changing These Choices</h2>
<p>Artificial intelligence is influencing all three categories. AI-powered websites can offer personalised recommendations. Business apps use AI for predictive analytics and chatbots. Software increasingly incorporates machine learning for smarter reporting.</p>
<p>For forward-thinking SMEs, considering future AI integration is wise. This might influence whether you choose a flexible custom solution over rigid off-the-shelf products.</p>
<p>We help SMEs incorporate AI thoughtfully, whether through <a href="/services/ai-video-production">AI video production</a> for marketing websites or <a href="/services/ai-commercial-production">AI commercial production</a> to showcase app features effectively.</p>
<h2>Making the Right Decision</h2>
<p>There is no universal answer. The best choice depends on your specific business stage, industry, and objectives. Many successful Indian SMEs use a combination: a strong website for visibility, custom apps for engagement, and software for operations.</p>
<p>Start small, measure results, and scale. Focus on solutions that solve real problems rather than following trends. Regular evaluation ensures your technology investments continue delivering value.</p>
<p>If you are evaluating options for your business, assessing current processes against potential digital tools is a practical first step. Professional guidance can help align technology with your growth strategy.</p>
<p>Ready to explore the right digital solution for your SME? Connect with experts who understand Indian business contexts.</p>
<h2>Tools and Resources for SMEs</h2>
<p>Free online tools can help test ideas before full commitment. From website builders to basic app prototypes, experimenting costs little. For more advanced needs, professional development ensures reliability and security.</p>
<p>Staying updated through industry blogs and resources helps SMEs make informed choices as technology evolves rapidly in India.</p>
<p><a href="/blog">Visit our blog</a> for more practical technology guides tailored for Indian businesses. For personalised advice on selecting between websites, apps or software, reach out via our <a href="/contact">contact page</a>.</p>
<p>For project help, <a href="https://pkdventures.in/contact">contact PKD Ventures</a>.</p>
<hr />
<p><em>Originally published on <a href="https://pkdventures.in/blog/website-vs-custom-business-app-vs-software-india">PKD Ventures</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[How to Remove Image Backgrounds Entirely in the Browser With ONNX Runtime Web]]></title><description><![CDATA[Run an ONNX segmentation model in the browser with ONNX Runtime Web and export a transparent PNG without uploading the image.]]></description><link>https://raviverma-pkd.hashnode.dev/how-to-remove-image-backgrounds-entirely-in-the-browser-with-onnx-runtime-web</link><guid isPermaLink="true">https://raviverma-pkd.hashnode.dev/how-to-remove-image-backgrounds-entirely-in-the-browser-with-onnx-runtime-web</guid><category><![CDATA[Tutorial]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[WebAssembly]]></category><dc:creator><![CDATA[Ravi Verma]]></dc:creator><pubDate>Mon, 12 Oct 2026 06:54:18 GMT</pubDate><content:encoded><![CDATA[<p>Removing the background from a photo usually means uploading it to someone's server. For many people that's fine. But for a passport photo, an ID scan, or a picture of a family member, sending the file to a third party is a real cost.</p>
<p>You can do the whole job in the browser instead. In this tutorial, you'll load an image segmentation model with ONNX Runtime Web, run it on the user's device, turn the output into an alpha mask, and export a transparent PNG. The image never leaves the page.</p>
<h2>Prerequisites</h2>
<ul>
<li>Basic JavaScript and familiarity with <code>&lt;canvas&gt;</code></li>
<li>Node.js and a bundler such as Vite (<code>npm create vite@latest</code>)</li>
<li>A salient-object or portrait segmentation model exported to ONNX (U²-Net-style models are a common choice). Check the model's licence before using it in a product.</li>
</ul>
<p>Install the runtime:</p>
<pre><code class="language-bash">npm install onnxruntime-web
</code></pre>
<h2>How It Works</h2>
<p>A segmentation model takes an image and returns a value per pixel that says "how likely is this pixel to be foreground?" We'll:</p>
<ol>
<li>Resize the image to the model's input size and convert it to a float tensor.</li>
<li>Run the model.</li>
<li>Scale the output back to the original image size.</li>
<li>Use it as the alpha channel of the original pixels.</li>
</ol>
<h2>Step 1: Set Up the Page</h2>
<pre><code class="language-html">&lt;input type="file" id="file" accept="image/*" /&gt;
&lt;p id="status"&gt;&lt;/p&gt;
&lt;canvas id="out"&gt;&lt;/canvas&gt;
&lt;a id="download" download="cutout.png" hidden&gt;Download PNG&lt;/a&gt;
&lt;script type="module" src="/main.js"&gt;&lt;/script&gt;
</code></pre>
<h2>Step 2: Load the Model</h2>
<p>Load the session once and reuse it. Models are often tens of megabytes, so don't reload per image.</p>
<pre><code class="language-js">// main.js
import * as ort from 'onnxruntime-web';

// Replace these with the values your model expects.
const MODEL_URL = '/models/segmentation.onnx';
const SIZE = 320;                       // model input width/height
const MEAN = [0.485, 0.456, 0.406];     // ImageNet-style normalization
const STD = [0.229, 0.224, 0.225];

let sessionPromise;
function getSession() {
  if (!sessionPromise) {
    sessionPromise = ort.InferenceSession.create(MODEL_URL, {
      executionProviders: ['wasm'],
    });
  }
  return sessionPromise;
}
</code></pre>
<p>The <code>wasm</code> backend works almost everywhere. ONNX Runtime Web also supports WebGPU, which can be much faster where available — see the runtime's docs for the correct import for your version.</p>
<h2>Step 3: Preprocess the Image</h2>
<p>Draw the image onto a small canvas at the model's input size, then convert RGBA bytes into a planar <code>float32</code> tensor in <code>[1, 3, H, W]</code> layout.</p>
<pre><code class="language-js">function toTensor(img) {
  const c = new OffscreenCanvas(SIZE, SIZE);
  const ctx = c.getContext('2d');
  ctx.drawImage(img, 0, 0, SIZE, SIZE);
  const { data } = ctx.getImageData(0, 0, SIZE, SIZE);

  const plane = SIZE * SIZE;
  const floats = new Float32Array(3 * plane);
  for (let i = 0; i &lt; plane; i++) {
    for (let ch = 0; ch &lt; 3; ch++) {
      const v = data[i * 4 + ch] / 255;
      floats[ch * plane + i] = (v - MEAN[ch]) / STD[ch];
    }
  }
  return new ort.Tensor('float32', floats, [1, 3, SIZE, SIZE]);
}
</code></pre>
<p>If your model expects <code>[1, H, W, 3]</code> or values in <code>0–255</code>, change this function. Getting preprocessing wrong is the most common reason for a mask that looks like noise.</p>
<h2>Step 4: Run Inference and Build the Mask</h2>
<pre><code class="language-js">async function removeBackground(img) {
  const session = await getSession();
  const feeds = { [session.inputNames[0]]: toTensor(img) };
  const results = await session.run(feeds);
  const out = results[session.outputNames[0]].data; // SIZE*SIZE values

  // Normalize output to 0..255
  let min = Infinity, max = -Infinity;
  for (const v of out) { if (v &lt; min) min = v; if (v &gt; max) max = v; }
  const maskSmall = new ImageData(SIZE, SIZE);
  for (let i = 0; i &lt; SIZE * SIZE; i++) {
    const a = Math.round(((out[i] - min) / (max - min || 1)) * 255);
    maskSmall.data.set([a, a, a, 255], i * 4);
  }

  // Scale the mask up to the original size
  const w = img.naturalWidth, h = img.naturalHeight;
  const maskCanvas = new OffscreenCanvas(SIZE, SIZE);
  maskCanvas.getContext('2d').putImageData(maskSmall, 0, 0);
  const big = new OffscreenCanvas(w, h);
  const bctx = big.getContext('2d');
  bctx.drawImage(maskCanvas, 0, 0, w, h);
  const mask = bctx.getImageData(0, 0, w, h).data;

  // Apply mask as alpha on the original pixels
  const canvas = document.getElementById('out');
  canvas.width = w; canvas.height = h;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0);
  const pixels = ctx.getImageData(0, 0, w, h);
  for (let i = 0; i &lt; w * h; i++) pixels.data[i * 4 + 3] = mask[i * 4];
  ctx.putImageData(pixels, 0, 0);

  canvas.toBlob((blob) =&gt; {
    const a = document.getElementById('download');
    a.href = URL.createObjectURL(blob);
    a.hidden = false;
  }, 'image/png');
}

document.getElementById('file').addEventListener('change', async (e) =&gt; {
  const file = e.target.files[0];
  if (!file) return;
  const status = document.getElementById('status');
  const img = new Image();
  img.src = URL.createObjectURL(file);
  await img.decode();
  status.textContent = 'Processing on your device…';
  await removeBackground(img);
  status.textContent = 'Done. Nothing was uploaded.';
});
</code></pre>
<p>Open the browser's Network tab while you test. You'll see the model download once, and no request carrying the image.</p>
<h2>Step 5: Handle Slow Devices and Large Images</h2>
<ul>
<li><strong>Cap the output size.</strong> A 48-megapixel phone photo means a 48-million-iteration loop and a lot of memory. Downscale anything above, say, 4000px on the long edge before processing, and tell the user.</li>
<li><strong>Keep the UI responsive.</strong> Move <code>removeBackground</code> into a Web Worker (<code>OffscreenCanvas</code> works there) so the page doesn't freeze.</li>
<li><strong>Use threads where allowed.</strong> The wasm backend can use multiple threads, but only when the page is cross-origin isolated (COOP/COEP headers). Without them, it falls back to a single thread.</li>
<li><strong>Show honest progress.</strong> The first run includes downloading the model. Say "Downloading model (one time)…" so users don't think it's stuck. Cache the model with the Cache API or rely on HTTP caching.</li>
<li><strong>Don't want to manage all of this?</strong> Libraries such as <code>@imgly/background-removal</code> wrap ONNX Runtime Web with preprocessing, workers and model hosting handled for you.</li>
</ul>
<h2>Honest Limits</h2>
<ul>
<li><strong>Quality depends on the model.</strong> Hair, fur, glass and low-contrast edges are hard. Small, fast models blur edges; larger ones are slower to download and run.</li>
<li><strong>Upscaled masks are soft.</strong> A 320×320 mask stretched to 4000px will have fuzzy edges. Refinement steps help but add complexity.</li>
<li><strong>First load is heavy.</strong> Users on slow mobile data pay the model download cost up front.</li>
<li><strong>Old or low-memory devices may fail.</strong> Catch errors and offer a smaller image size instead of a blank screen.</li>
</ul>
<h2>Wrapping Up</h2>
<p>You now have a background remover that runs entirely on the user's device: load an ONNX model, preprocess into a tensor, run inference, and use the result as an alpha mask. The privacy win is real, and so are the trade-offs in model size and device speed.</p>
<p>If you want to compare your output against a working version, I built a free one here: <a href="https://pkdventures.in/tools/background-remover">Background Remover</a>. More free browser tools are at <a href="https://pkdventures.in/tools">pkdventures.in/tools</a>.</p>
<hr />
<p><em>I'm Ravi Verma, Director at PKD Ventures (<a href="https://pkdventures.in">pkdventures.in</a>), building software and free tools for Indian SMEs from Kanpur.</em></p>
]]></content:encoded></item></channel></rss>