<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://geekindata.com/blog</id>
    <title>GeekInData Blog</title>
    <updated>2026-04-08T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://geekindata.com/blog"/>
    <subtitle>GeekInData Blog</subtitle>
    <icon>https://geekindata.com/img/logo.svg</icon>
    <entry>
        <title type="html"><![CDATA[Automate Your Microsoft Fabric Workloads with Apache Airflow]]></title>
        <id>https://geekindata.com/blog/1-fabric-airflow</id>
        <link href="https://geekindata.com/blog/1-fabric-airflow"/>
        <updated>2026-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A practical guide to coordinating Fabric workloads with Apache Airflow.]]></summary>
        <content type="html"><![CDATA[<p>Microsoft Fabric is strongest when the work inside it is repeatable. The moment you have ingestion jobs, notebook runs, warehouse refreshes, semantic model updates, or validation steps that need to happen in sequence, orchestration becomes a first-class requirement rather than an afterthought.</p>
<p>Apache Airflow is a good fit when you want clear scheduling, dependency control, retries, and visibility across the whole pipeline. A DAG gives you a readable contract for how a data flow should behave, which makes it easier to debug failures and easier to explain the system to other engineers.</p>
<!-- -->
<p>The practical pattern is simple: keep the workload logic in Fabric, keep orchestration in Airflow, and make each task do a single thing well. That separation keeps your pipelines easier to test, easier to recover, and much easier to extend when new datasets or downstream consumers appear.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-airflow-fits">Where Airflow fits<a href="https://geekindata.com/blog/1-fabric-airflow#where-airflow-fits" class="hash-link" aria-label="Direct link to Where Airflow fits" title="Direct link to Where Airflow fits" translate="no">​</a></h2>
<p>Use Airflow when you need more than a scheduled notebook or a manual run button. It helps when one job depends on another, when a failure should retry automatically, or when multiple pieces of the workflow need a shared execution model.</p>
<p>Fabric still handles the data work itself. Notebooks, pipelines, lakehouse tasks, and warehouse operations stay where they belong. Airflow coordinates them. That division keeps the orchestration layer lightweight and keeps the business logic closer to the platform that executes it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-practical-structure">A practical structure<a href="https://geekindata.com/blog/1-fabric-airflow#a-practical-structure" class="hash-link" aria-label="Direct link to A practical structure" title="Direct link to A practical structure" translate="no">​</a></h2>
<p>One useful pattern is:</p>
<ul>
<li class="">ingest raw data into a landing zone</li>
<li class="">validate the structure and basic quality rules</li>
<li class="">transform the data in Fabric notebooks or pipelines</li>
<li class="">refresh semantic models or downstream outputs</li>
<li class="">notify on success or failure</li>
</ul>
<p>Each task should do one thing clearly. If a task grows too large, it becomes harder to rerun and harder to diagnose when something breaks. Smaller tasks create cleaner retries and make partial recovery much more manageable.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-to-watch-for">What to watch for<a href="https://geekindata.com/blog/1-fabric-airflow#what-to-watch-for" class="hash-link" aria-label="Direct link to What to watch for" title="Direct link to What to watch for" translate="no">​</a></h2>
<p>The most common mistakes are not technical, they are architectural. Teams often try to make the orchestrator do too much, duplicate business logic across tools, or hide failures behind a single broad step.</p>
<p>That approach makes the system fragile. A better design is to keep the orchestration thin and explicit. When each step is visible, the entire flow is easier to reason about and easier to change later.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-pattern-works">Why this pattern works<a href="https://geekindata.com/blog/1-fabric-airflow#why-this-pattern-works" class="hash-link" aria-label="Direct link to Why this pattern works" title="Direct link to Why this pattern works" translate="no">​</a></h2>
<p>Airflow is good at timing, dependency management, and operational control. Fabric is good at data processing inside Microsoft’s analytics stack. Combining them gives you a practical system where each tool does the part it is best at.</p>
<p>That is the real value of the pattern: not adding more tools, but reducing friction between scheduling, execution, and maintenance.</p>
<blockquote>
<p>Key idea: use Airflow to coordinate the workflow, not to replace the logic already living inside Fabric.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="related-reading">Related reading<a href="https://geekindata.com/blog/1-fabric-airflow#related-reading" class="hash-link" aria-label="Direct link to Related reading" title="Direct link to Related reading" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://geekindata.com/blog/3-azure-image-classification">Image Classification Web App with Azure AI Services</a> for another example of keeping platform logic and product logic separated.</li>
<li class=""><a class="" href="https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp">Can Databricks Genie Build My Deck and Deploy My App?</a> for a look at AI-assisted platform workflows in practice.</li>
</ul>
<p><a href="https://www.linkedin.com/pulse/automate-your-microsoft-fabric-workloads-apache-neelakantam-kz1if" target="_blank" rel="noopener noreferrer" class="">Read the original LinkedIn post</a></p>]]></content>
        <author>
            <name>Sai Prudhvi Neelakantam</name>
            <uri>https://linkedin.com/in/saiprudhvineelakantam/</uri>
        </author>
        <category label="Databricks" term="Databricks"/>
        <category label="Microsoft Fabric" term="Microsoft Fabric"/>
        <category label="Airflow" term="Airflow"/>
        <category label="Data Engineering" term="Data Engineering"/>
        <category label="Orchestration" term="Orchestration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Real-time Motion Tracking and Pose Estimation]]></title>
        <id>https://geekindata.com/blog/2-pose-estimation</id>
        <link href="https://geekindata.com/blog/2-pose-estimation"/>
        <updated>2026-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A practical look at real-time motion tracking, pose estimation, and the tradeoffs behind live AI systems.]]></summary>
        <content type="html"><![CDATA[<p>Real-time pose estimation is one of those problems that looks simple from the outside and becomes interesting immediately once you start handling actual video streams. The core goal is to identify body landmarks quickly enough that the output feels live, which means latency and stability matter just as much as model accuracy.</p>
<p>A good implementation balances three concerns: getting frames into the pipeline efficiently, running inference reliably, and presenting the results in a way that is easy to understand. When the visualization is clear, the technical work underneath becomes easier to trust and easier to demo.</p>
<!-- -->
<p>The most useful lesson is that real-time systems are shaped by tradeoffs. You will usually need to simplify the pipeline, reduce unnecessary processing, and measure performance in the same environment where the app will actually run.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-pose-estimation-really-needs">What pose estimation really needs<a href="https://geekindata.com/blog/2-pose-estimation#what-pose-estimation-really-needs" class="hash-link" aria-label="Direct link to What pose estimation really needs" title="Direct link to What pose estimation really needs" translate="no">​</a></h2>
<p>The model is only part of the product. A real-time experience also depends on frame capture, buffering, rendering, and how much delay the user can tolerate. If any one of those pieces lags, the result feels unreliable even if the model is technically accurate.</p>
<p>That is why the entire pipeline matters. You are not just detecting keypoints. You are building a system that has to process a continuous stream and remain responsive under changing conditions.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="practical-implementation-choices">Practical implementation choices<a href="https://geekindata.com/blog/2-pose-estimation#practical-implementation-choices" class="hash-link" aria-label="Direct link to Practical implementation choices" title="Direct link to Practical implementation choices" translate="no">​</a></h2>
<p>The most useful approach is to keep the pipeline lean:</p>
<ul>
<li class="">resize frames only as much as needed</li>
<li class="">avoid redundant preprocessing</li>
<li class="">keep inference and visualization separate</li>
<li class="">measure end-to-end latency, not just model latency</li>
</ul>
<p>This makes debugging simpler and helps you understand where time is actually being spent. Often the slowest part is not the model itself but the glue around it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-live-demos-fail">Why live demos fail<a href="https://geekindata.com/blog/2-pose-estimation#why-live-demos-fail" class="hash-link" aria-label="Direct link to Why live demos fail" title="Direct link to Why live demos fail" translate="no">​</a></h2>
<p>Real-time demos often fail because they are built for the ideal case instead of the messy one. A smooth demo needs stable frame timing, predictable inference behavior, and a visual output that remains readable when confidence fluctuates.</p>
<p>The better engineering choice is usually the boring one: smaller inputs, fewer moving parts, and a UI that favors clarity over effects.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-to-take-away">What to take away<a href="https://geekindata.com/blog/2-pose-estimation#what-to-take-away" class="hash-link" aria-label="Direct link to What to take away" title="Direct link to What to take away" translate="no">​</a></h2>
<p>Pose estimation is a good reminder that AI systems are not just model exercises. They are product exercises. The model has to fit the workflow, and the workflow has to fit the user.</p>
<blockquote>
<p>Key idea: real-time AI is a systems problem as much as it is a model problem.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="related-reading">Related reading<a href="https://geekindata.com/blog/2-pose-estimation#related-reading" class="hash-link" aria-label="Direct link to Related reading" title="Direct link to Related reading" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://geekindata.com/blog/3-azure-image-classification">Image Classification Web App with Azure AI Services</a> for a complementary look at production AI feature design.</li>
<li class=""><a class="" href="https://geekindata.com/blog/1-fabric-airflow">Automate Your Microsoft Fabric Workloads with Apache Airflow</a> for orchestration patterns that keep AI systems organized.</li>
</ul>
<p><a href="https://www.linkedin.com/pulse/real-time-motion-tracking-pose-estimation-sai-prudhvi-neelakantam-xuohf" target="_blank" rel="noopener noreferrer" class="">Read the original LinkedIn post</a></p>]]></content>
        <author>
            <name>Sai Prudhvi Neelakantam</name>
            <uri>https://linkedin.com/in/saiprudhvineelakantam/</uri>
        </author>
        <category label="Computer Vision" term="Computer Vision"/>
        <category label="Pose Estimation" term="Pose Estimation"/>
        <category label="Real-Time AI" term="Real-Time AI"/>
        <category label="Inference" term="Inference"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Image Classification Web App with Azure AI Services]]></title>
        <id>https://geekindata.com/blog/3-azure-image-classification</id>
        <link href="https://geekindata.com/blog/3-azure-image-classification"/>
        <updated>2026-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to build a simple image classification web app with Azure AI Services and Custom Vision.]]></summary>
        <content type="html"><![CDATA[<p>An image classification app is a strong starting point for teams that want to add computer vision without building every layer from scratch. Azure AI Services and Custom Vision make it practical to move from a dataset to a working web app in a way that is approachable for both developers and non-specialists.</p>
<p>The useful pattern is to keep the user interface simple and let the AI service do the heavy lifting. Users upload an image, the app sends it to the model, and the result comes back with a clear label and confidence score. That makes the experience understandable and easy to validate.</p>
<!-- -->
<p>The bigger architectural lesson is that production-ready AI features still need the basics: input validation, request limits, logging, and a path to iterate on the model when the data changes. A good demo becomes a good product when it keeps those fundamentals in place.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="start-with-the-user-flow">Start with the user flow<a href="https://geekindata.com/blog/3-azure-image-classification#start-with-the-user-flow" class="hash-link" aria-label="Direct link to Start with the user flow" title="Direct link to Start with the user flow" translate="no">​</a></h2>
<p>The first step is not the model, it is the journey. A clean interface should make the action obvious: choose an image, submit it, and see a result. If the flow is complicated, the AI feature feels harder than it really is.</p>
<p>That is why a minimal layout works well. It keeps the focus on the core interaction and avoids distracting people with unnecessary controls.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-the-backend-predictable">Keep the backend predictable<a href="https://geekindata.com/blog/3-azure-image-classification#keep-the-backend-predictable" class="hash-link" aria-label="Direct link to Keep the backend predictable" title="Direct link to Keep the backend predictable" translate="no">​</a></h2>
<p>Once the request reaches Azure AI Services, the application should behave predictably. The service call should be wrapped in error handling, and the app should be ready for cases where confidence is low or the response is slower than expected.</p>
<p>In practice, that means:</p>
<ul>
<li class="">validating file type and size before upload</li>
<li class="">returning a clear error if inference fails</li>
<li class="">showing confidence and labels in plain language</li>
<li class="">logging enough detail to debug bad results later</li>
</ul>
<p>Those basics are what turn a demo into something you can actually operate.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-pattern-is-useful">Why this pattern is useful<a href="https://geekindata.com/blog/3-azure-image-classification#why-this-pattern-is-useful" class="hash-link" aria-label="Direct link to Why this pattern is useful" title="Direct link to Why this pattern is useful" translate="no">​</a></h2>
<p>Custom Vision is especially useful when you want to teach a model a specific domain. It gives you a fast path from labeled examples to a working classifier without having to build everything from first principles.</p>
<p>That makes it a good fit for internal tools, proof-of-concepts, and product experiments that need to move quickly without sacrificing structure.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-matters-most">What matters most<a href="https://geekindata.com/blog/3-azure-image-classification#what-matters-most" class="hash-link" aria-label="Direct link to What matters most" title="Direct link to What matters most" translate="no">​</a></h2>
<p>The best AI applications are not the most complex. They are the ones that feel dependable and easy to use. Keep the interface obvious, keep the model feedback clear, and keep the system simple enough that it can be maintained.</p>
<blockquote>
<p>Key idea: make the app simple, then make the AI dependable.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="related-reading">Related reading<a href="https://geekindata.com/blog/3-azure-image-classification#related-reading" class="hash-link" aria-label="Direct link to Related reading" title="Direct link to Related reading" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://geekindata.com/blog/2-pose-estimation">Real-time Motion Tracking and Pose Estimation</a> for another production-minded computer vision pattern.</li>
<li class=""><a class="" href="https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp">Can Databricks Genie Build My Deck and Deploy My App?</a> for a broader look at AI tooling inside a data platform.</li>
</ul>
<p><a href="https://www.linkedin.com/pulse/image-classification-web-app-azure-ai-services-neelakantam-eavuf" target="_blank" rel="noopener noreferrer" class="">Read the original LinkedIn post</a></p>]]></content>
        <author>
            <name>Sai Prudhvi Neelakantam</name>
            <uri>https://linkedin.com/in/saiprudhvineelakantam/</uri>
        </author>
        <category label="Azure AI" term="Azure AI"/>
        <category label="Custom Vision" term="Custom Vision"/>
        <category label="Image Classification" term="Image Classification"/>
        <category label="Web App" term="Web App"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Can Databricks Genie Build My Deck and Deploy My App?]]></title>
        <id>https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp</id>
        <link href="https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp"/>
        <updated>2026-04-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Real-world testing of Databricks Genie Code for presentation generation and web app deployment.]]></summary>
        <content type="html"><![CDATA[<p>Can Databricks Genie make a PowerPoint like this based on my data and use my company template exactly?
Can it develop and deploy a web app integrating my Genie space?</p>
<p>I have been stress-testing the new Databricks Genie Code, and it is setting a new bar for AI assistants in enterprise data platform technology.</p>
<p><img decoding="async" loading="lazy" alt="Databricks Genie Code announcement visual" src="https://geekindata.com/assets/images/genie-code-hero-58e6311b290fc09f396987347010b8e2.png" width="1000" height="523" class="img_ev3q"></p>
<!-- -->
<p>Most of the buzz around Genie Code focuses on handling data questions or building ETL pipelines. But I wanted to push it further: how does it actually perform from a day-to-day developer and business user's perspective?</p>
<p>After putting it through its paces, Genie Code gives off more Claude Code and Cursor vibes than Copilot, but with enterprise data security. Because it lives natively within Databricks, it already has deep context regarding your enterprise data, governance, and platform architecture, meaning less waste of extra tokens or struggling with complex context windows.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="two-use-cases-that-stood-out">Two use cases that stood out<a href="https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp#two-use-cases-that-stood-out" class="hash-link" aria-label="Direct link to Two use cases that stood out" title="Direct link to Two use cases that stood out" translate="no">​</a></h2>
<ol>
<li class="">Making a PowerPoint heavily based on data insights.
I connected Genie Code with an open-source PPTX skill from Anthropic (the same one used for Claude Code) to create a PowerPoint based on data in Databricks. Instead of just returning insights in chat, it autonomously generated a beautiful 9-slide PowerPoint deck complete with charts and graphs, and the best part is every element is editable. It is a massive time-saver that turns raw data directly into boardroom-ready presentations for monthly or quarterly meetings.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="Genie Code creating a full presentation from enterprise data" src="https://geekindata.com/assets/images/genie-code-workspace-skill-and-ppt-generation-3776e1aeb6e8a37546fa4b48b578a052.jpeg" width="800" height="1014" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Example slide generated by Genie Code showing user preference analytics" src="https://geekindata.com/assets/images/genie-code-ppt-user-preferences-slide-c3c0394b4a881ab9b47d3b84b603addc.jpeg" width="1280" height="692" class="img_ev3q"></p>
<p>Bonus: If you customize the skill, it can decrypt your company template, then pick and replace the most suitable slides for the related data.</p>
<ol start="2">
<li class="">Web app development and deployment in Databricks.
This is definitely possible with many IDEs like Cursor or Claude Code today using the Databricks MCP, but I still have to reference or point the agent in the right direction to deploy a web app. Genie Code, however, already has the context of your platform. So, not only did it write the web app code, but it also reasoned through platform constraints in real time. When it realized the Databricks CLI was not available on the specific serverless compute I was using, it seamlessly pivoted and successfully deployed the live dashboard to <code>azure.databricksapps.com</code>.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="Genie Code deployment output showing successful app publish" src="https://geekindata.com/assets/images/genie-code-app-deployment-success-6ff249ee221e40ac0822a347fb9d7826.jpeg" width="1280" height="759" class="img_ev3q"></p>
<p>Seeing this in action makes Databricks' internal benchmarks make a lot of sense. They recently reported Genie Code hitting a 77.1% success rate on real-world tasks, compared to just 32.1% for leading coding agents using MCP servers.</p>
<p><img decoding="async" loading="lazy" alt="Benchmark chart comparing Genie Code and leading coding agents" src="https://geekindata.com/assets/images/genie-code-benchmark-chart-5d4d2faedd433e3f6d2606934b02a0b2.jpeg" width="1280" height="621" class="img_ev3q"></p>
<p>Context is everything, and having an AI that actually knows your platform inside and out changes the game.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="related-reading">Related reading<a href="https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp#related-reading" class="hash-link" aria-label="Direct link to Related reading" title="Direct link to Related reading" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://geekindata.com/blog/1-fabric-airflow">Automate Your Microsoft Fabric Workloads with Apache Airflow</a> for another orchestration-heavy workflow pattern.</li>
<li class=""><a class="" href="https://geekindata.com/blog/3-azure-image-classification">Image Classification Web App with Azure AI Services</a> for a practical example of shipping an AI feature into a web app.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="read-more">Read more<a href="https://geekindata.com/blog/4-databricks-genie-powerpoint-webapp#read-more" class="hash-link" aria-label="Direct link to Read more" title="Direct link to Read more" translate="no">​</a></h2>
<ul>
<li class="">Genie Code: <a href="https://lnkd.in/e_rKqdsP" target="_blank" rel="noopener noreferrer" class="">https://lnkd.in/e_rKqdsP</a></li>
<li class="">Anthropic skills: <a href="https://lnkd.in/eHMcHuJp" target="_blank" rel="noopener noreferrer" class="">https://lnkd.in/eHMcHuJp</a></li>
<li class="">Extend Genie Code with agent skills: <a href="https://lnkd.in/eVEj77tU" target="_blank" rel="noopener noreferrer" class="">https://lnkd.in/eVEj77tU</a></li>
</ul>
<p>This also leaves a question for Copilot in Microsoft Fabric: Agent mode that has context of my Fabric items and data soon?</p>
<p><code>#Databricks #Genie #DatabricksGenieCode #AI</code></p>]]></content>
        <author>
            <name>Sai Prudhvi Neelakantam</name>
            <uri>https://linkedin.com/in/saiprudhvineelakantam/</uri>
        </author>
        <category label="Databricks" term="Databricks"/>
        <category label="Genie Code" term="Genie Code"/>
        <category label="AI Assistant" term="AI Assistant"/>
        <category label="Enterprise Data" term="Enterprise Data"/>
        <category label="Automation" term="Automation"/>
    </entry>
</feed>