<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Donald Wono</title>
    <description>The latest articles on Forem by Donald Wono (@donald_wono_2494bee04aa88).</description>
    <link>https://forem.com/donald_wono_2494bee04aa88</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3747029%2F27ec3f95-3720-4d47-973a-ede65cc77b2a.png</url>
      <title>Forem: Donald Wono</title>
      <link>https://forem.com/donald_wono_2494bee04aa88</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/donald_wono_2494bee04aa88"/>
    <language>en</language>
    <item>
      <title>The math behind "Vibe Coding": Why 75% of startups are crushed by Giants.</title>
      <dc:creator>Donald Wono</dc:creator>
      <pubDate>Tue, 24 Feb 2026 14:21:10 +0000</pubDate>
      <link>https://forem.com/donald_wono_2494bee04aa88/the-math-behind-vibe-coding-why-75-of-startups-are-crushed-by-giants-51i7</link>
      <guid>https://forem.com/donald_wono_2494bee04aa88/the-math-behind-vibe-coding-why-75-of-startups-are-crushed-by-giants-51i7</guid>
      <description>&lt;p&gt;Right now, my feed is flooded with influencers telling developers they can "vibe code" an AI wrapper over the weekend, launch it, and retire to Bali.&lt;/p&gt;

&lt;p&gt;The narrative is that AI has made building software so easy that anyone can become a millionaire overnight. But nobody is talking about what happens on Monday.&lt;/p&gt;

&lt;p&gt;If your product is so simple that you can build it by chatting with an AI for 48 hours, &lt;strong&gt;so can 10,000 other people&lt;/strong&gt;. And more importantly, a "Giant" (like Google, Microsoft, or OpenAI) can build it as a native feature in an afternoon.&lt;/p&gt;

&lt;p&gt;As an indie dev building a BI tool (&lt;strong&gt;NeoShift BI&lt;/strong&gt;), I prefer looking at databases over hype. I grabbed a dataset of 409 real startup post-mortems from Kaggle and dropped it into NeoShift to see what actually kills tech companies.&lt;/p&gt;

&lt;p&gt;Here is the brutal reality check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Zero-Moat Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0seklidvu43wo7b08g1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0seklidvu43wo7b08g1.png" alt="Bar chart showing startup failure reasons" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "get rich quick" influencers tell you that startups fail because they run out of cash or build a bad product. The data says otherwise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Only 18.8% failed because they ran out of budget.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only 19.8% failed because of poor market fit.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The overwhelming majority of these startups were slaughtered by two things: &lt;strong&gt;Established Giants (75.3%)&lt;/strong&gt; and &lt;strong&gt;Intense Market Competition (71.1%)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you are vibe-coding a generic AI wrapper, you aren't competing on code quality. You are walking straight into a meat grinder against incumbents with 100x the capital, distribution, and brand recognition. Execution is cheap; defensibility is hard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to survive: Strategic Invisibility&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't want to just look at static charts, so I fed this live data into a new AI feature I just shipped for NeoShift BI called "Insight Blocks." I asked the AI to analyze the failure rates and generate a strategic playbook for solo developers.&lt;/p&gt;

&lt;p&gt;Here is what the AI wrote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"For solo developers, survival demands strategic invisibility. The path forward is not to build 'better' versions of existing tools or compete in crowded categories. Instead, target hyper-specific micro-niches—problems so narrow that Giants cannot justify the opportunity cost of pursuing them. &amp;gt;&lt;br&gt;
A $500K annual revenue niche is irrelevant to a public company but life-changing for an individual. Build for audiences measured in thousands: tools for niche professions (court reporters, arborists, yacht brokers), or workflows specific to regional regulations. The goal is to operate below the radar of competitive threats. Dominate the overlooked corners where Giants won't follow."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8omh0iq3fwlp15jyt39g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8omh0iq3fwlp15jyt39g.png" alt="AI Insight Block text" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the full breakdown&lt;/p&gt;

&lt;p&gt;If you want to interact with the data, and see the full AI-generated Executive Summary, I published the interactive dashboard here (No login required):&lt;br&gt;
👉 &lt;a href="https://bi.neoshift.ai/#/public/dashboard/startup-failure-prediction-69981982ba424041a0deaf35" rel="noopener noreferrer"&gt;Neoshift BI - Startup Failure Prediction Dashboard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🏆 &lt;strong&gt;The NeoShift BI Open Beta Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To celebrate shipping our new AI Insight and Image blocks, I am extending the NeoShift Open Beta until March 31st and launching a month-long data storytelling challenge.&lt;/p&gt;

&lt;p&gt;I have unlocked &lt;strong&gt;1 Free Public Share Link&lt;/strong&gt; for all Basic users who sign up.&lt;/p&gt;

&lt;p&gt;Use Beta Code: BETA-1F2FF553&lt;br&gt;
Link: &lt;a href="https://bi.neoshift.ai/#/register" rel="noopener noreferrer"&gt;Neoshift BI - Register&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Challenge:&lt;/strong&gt;&lt;br&gt;
Find a weird, interesting, or contrarian dataset (if you need inspiration, Kaggle is a goldmine for amazing free datasets). Drop it into NeoShift, let the AI generate an Insight report, and drop your public link in the comments below.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Friday, March 27th,&lt;/strong&gt; the dashboard with the highest combined score wins a &lt;strong&gt;Free Lifetime Enterprise Account with 100GB data storage and 5 user seats&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to win (100 Point System):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;+10 points for creating a Public Share Link.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;+10 points for having 2 or more types of charts on your dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;+15 points for adding an AI Insight Block to your dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;+15 points for adding an Image Block to your dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;+10 to +50 points based on traffic (10 pts for 10-49 unique views, scaling up to 50 pts for 500+ views).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there is a tie, we will look at which dashboard has the most unique views.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📊 Track the Live Standings:&lt;/strong&gt;&lt;br&gt;
I am tracking the competition using—you guessed it—a NeoShift dashboard connected to our Google Analytics API. The board is wide open right now. Claim the #1 spot today:&lt;br&gt;
👉 &lt;a href="https://bi.neoshift.ai/#/public/dashboard/competition-leader-board-699a737cb276d816bf8f319d" rel="noopener noreferrer"&gt;Live Competition Leaderboard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's see what you can build. May the best data win! 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>career</category>
      <category>startup</category>
    </item>
    <item>
      <title>I analyzed 153,000 Tech Layoffs to see if AI is actually stealing our jobs.</title>
      <dc:creator>Donald Wono</dc:creator>
      <pubDate>Thu, 19 Feb 2026 10:20:43 +0000</pubDate>
      <link>https://forem.com/donald_wono_2494bee04aa88/i-analyzed-153000-tech-layoffs-to-see-if-ai-is-actually-stealing-our-jobs-4a03</link>
      <guid>https://forem.com/donald_wono_2494bee04aa88/i-analyzed-153000-tech-layoffs-to-see-if-ai-is-actually-stealing-our-jobs-4a03</guid>
      <description>&lt;p&gt;There is a growing trend of executives blaming "AI automation" for recent tech layoffs. Analysts call it "AI-washing"—using the AI hype cycle as a scapegoat to mask internal financial issues or over-hiring.&lt;/p&gt;

&lt;p&gt;I was tired of the think-pieces, so I wanted to look at the raw data.&lt;/p&gt;

&lt;p&gt;I grabbed a dataset tracking 153,522 tech layoffs across 35 major companies (Jan 2025 - Feb 2026) and dropped it into my BI tool, &lt;strong&gt;NeoShift BI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is what the data actually says.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Reality of AI-Driven Layoffs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbf62zxn77g5pid37st3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbf62zxn77g5pid37st3.png" alt="Pie Chart showing AI Layoff causes. 14.15% by AI, 31.77% partially attributed to AI, 54.08% had no relations to AI" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;14.15%&lt;/strong&gt; were explicitly tagged as being driven by AI automation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;31.77%&lt;/strong&gt; were partially attributed to it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;54.08%&lt;/strong&gt; had no relation to AI.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nearly half of all workforce reductions in this dataset involved AI in some capacity. It is not just a scapegoat; it is a measurable factor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where the money is moving&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6beea71edb84bj9xxl4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6beea71edb84bj9xxl4e.png" alt="Graph showing Tech Jobs in demand" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While legacy departments are shrinking, the dataset also tracks open headcount. Hiring for roles like &lt;strong&gt;ML Engineers&lt;/strong&gt; and &lt;strong&gt;Cloud Security Engineers&lt;/strong&gt; is surging, with average salaries hovering near the $200k mark. The jobs aren't disappearing; they are transitioning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play with the data yourself&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't want to just post static screenshots.&lt;/p&gt;

&lt;p&gt;I actually used this dataset to test a new feature I shipped today for NeoShift BI: Public Dashboards. You don't need to log in or create an account. You can click the link below to interact with the live charts, hover over the data points yourself:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://bi.neoshift.ai/#/public/dashboard/layoffsai-impact-6996c59e739ef6c8766d3080" rel="noopener noreferrer"&gt;Layoffs/AI Impact&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building the Dashboard (Product Update)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are curious about how the visualizations were made, I recently unified the AI generation UI in NeoShift.&lt;/p&gt;

&lt;p&gt;I literally just uploaded the raw Kaggle CSV, and the AI handled the SQL joins and charting was easily done by describing what I wanted to see. If you work with messy datasets or need to build client portals without paying per-user licensing fees, come try the Open Beta.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What dataset should I visualize next? Let me know in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>dataengineering</category>
      <category>ai</category>
      <category>career</category>
    </item>
    <item>
      <title>I built an "Agentic" SQL Generator because LLMs are bad at syntax.</title>
      <dc:creator>Donald Wono</dc:creator>
      <pubDate>Wed, 18 Feb 2026 06:40:07 +0000</pubDate>
      <link>https://forem.com/donald_wono_2494bee04aa88/i-built-an-agentic-sql-generator-because-llms-are-bad-at-syntax-10od</link>
      <guid>https://forem.com/donald_wono_2494bee04aa88/i-built-an-agentic-sql-generator-because-llms-are-bad-at-syntax-10od</guid>
      <description>&lt;p&gt;I’ve been quiet for the last week. No marketing, no tweets.&lt;br&gt;
I’ve been heads-down refactoring the core engine of my tool, &lt;a href="https://bi.neoshift.ai" rel="noopener noreferrer"&gt;NeoShift BI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Building a "Text-to-SQL" tool is easy. There are 100 tutorials on how to do it.&lt;br&gt;
Building one that actually works in production—handling messy APIs, SQL errors, and client-facing dashboards—is a nightmare.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of the 3 major engineering challenges I solved this week.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;1. The "Self-Healing" SQL Engine (Agentic AI)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;br&gt;
LLMs are great, but they hallucinate.&lt;br&gt;
Sometimes they try to query a column that doesn't exist. Sometimes they mess up a JOIN syntax.&lt;br&gt;
In the old version, if the generated SQL failed, the user just got a red error message: Postgres Error: Column 'revenue' does not exist.&lt;/p&gt;

&lt;p&gt;The user would then leave. Churn. 📉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;br&gt;
I implemented an &lt;strong&gt;Agentic Loop&lt;/strong&gt;.&lt;br&gt;
Now, when the user asks a question:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Generates SQL.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;System Executes SQL.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IF Error:&lt;/strong&gt; The System catches the error message (e.g., Syntax Error).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Loop:&lt;/strong&gt; The System feeds the original SQL + the Error Message back to the AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Fixes:&lt;/strong&gt; "Oh, I see. I used the wrong alias. Here is the corrected query."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Success.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The user never sees the error. They just see the chart. It’s a "Junior Dev" that fixes its own bugs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3cdxqk5mrltcybhe3cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3cdxqk5mrltcybhe3cp.png" alt="Logs from Terminal showing AI Iteration"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;2. The "Real World" API Connector&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;br&gt;
Most BI tools have a "Generic API Connector" that is useless.&lt;br&gt;
They usually only support a basic GET request.&lt;br&gt;
But if you've ever worked with real SaaS APIs (Stripe, Shopify, or internal tools), you know they require:&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Cursor-based Pagination&lt;/strong&gt; (fetching 10,000 rows).&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Dynamic Headers&lt;/strong&gt; (Auth tokens).&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;State-based Syncing&lt;/strong&gt; (Only fetch data that changed since last_sync).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt;&lt;br&gt;
I re-wrote the ingestion engine to support all of this.&lt;br&gt;
You can now define:&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Path/Query Parameters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Body Parameters&lt;/strong&gt; (for complex POST search queries)&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Incremental Syncing&lt;/strong&gt; via Cursor + State&lt;/p&gt;

&lt;p&gt;Basically, if you can curl it, I can chart it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdjr5jzioyow48i6rv13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdjr5jzioyow48i6rv13.png" alt="REST API Incremental Sync options"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;3. Architecture for "Shared Dashboards" (Solving the Cost Problem)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;br&gt;
I wanted to let users share dashboards with their clients (Client Portals).&lt;br&gt;
The industry standard (Power BI) charges a "View License" per user. This is because every time a user views a dashboard, it hits the database.&lt;/p&gt;

&lt;p&gt;If I let my users have unlimited viewers, and they all hit BigQuery at once, I’d go bankrupt on compute costs. 💸&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix: Smart Caching Strategy&lt;/strong&gt;&lt;br&gt;
I implemented a middleware caching layer using &lt;strong&gt;MongoDB&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Ingestion:&lt;/strong&gt; We sync data from your source (API/SQL) into BigQuery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;View Caching:&lt;/strong&gt; When a dashboard is loaded, we check the TTL (Time To Live).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;• Pro Plan: 1 Hour TTL.&lt;/p&gt;

&lt;p&gt;• Business Plan: 30 Minute TTL.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Fetch:&lt;/strong&gt; If the cache is valid, we serve the data instantly from MongoDB (Fast &amp;amp; Cheap). If expired, we hit BigQuery once, update the cache, and serve.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The Result:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• My users get &lt;strong&gt;Unlimited Viewers&lt;/strong&gt; for a flat rate.&lt;/p&gt;

&lt;p&gt;• Dashboards load in milliseconds (no waiting for heavy SQL queries).&lt;/p&gt;

&lt;p&gt;• My BigQuery bill doesn't explode.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/Z9Ow1uUVQA4"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;It’s been a heavy week of coding, but the platform finally feels like a "Product" and not just a "Project."&lt;/p&gt;

&lt;p&gt;We are currently in &lt;strong&gt;Open Beta&lt;/strong&gt;.&lt;br&gt;
If you want to try the &lt;strong&gt;Self-Healing SQL&lt;/strong&gt; or the &lt;strong&gt;API Connector&lt;/strong&gt;, come break it.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://bi.neoshift.ai" rel="noopener noreferrer"&gt;Neoshift BI&lt;/a&gt;&lt;br&gt;
Invite Code: BETA-A5C60983 (Unlocks the Basic tier for free during beta).&lt;/p&gt;

&lt;p&gt;(&lt;em&gt;Feedback on the API connector is especially welcome!&lt;/em&gt;)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>dataengineering</category>
      <category>saas</category>
    </item>
    <item>
      <title>Stop console.log-ing your JSON. Visualize APIs instantly instead.</title>
      <dc:creator>Donald Wono</dc:creator>
      <pubDate>Wed, 04 Feb 2026 10:36:39 +0000</pubDate>
      <link>https://forem.com/donald_wono_2494bee04aa88/stop-consolelog-ing-your-json-visualize-apis-instantly-instead-5bol</link>
      <guid>https://forem.com/donald_wono_2494bee04aa88/stop-consolelog-ing-your-json-visualize-apis-instantly-instead-5bol</guid>
      <description>&lt;p&gt;We've all been there. You need to check the data from a 3rd party API (Stripe, Weather, Crypto, or your own backend).&lt;/p&gt;

&lt;p&gt;The Old Way:&lt;/p&gt;

&lt;p&gt;Open Postman/Insomnia.&lt;/p&gt;

&lt;p&gt;Send GET request.&lt;/p&gt;

&lt;p&gt;Stare at a massive wall of nested JSON text.&lt;/p&gt;

&lt;p&gt;Copy-paste it into a JSON formatter to make sense of it.&lt;/p&gt;

&lt;p&gt;The New Way (What I built): I realized I was wasting hours just trying to "see" the data structure. So I added a generic API Connector to my tool, NeoShiftBI.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/rdw44IUqV-4"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;It treats any JSON endpoint like a database table.&lt;/p&gt;

&lt;p&gt;How it works (The 30-second workflow):&lt;/p&gt;

&lt;p&gt;Select Method: GET / POST.&lt;/p&gt;

&lt;p&gt;Paste URL: (e.g., &lt;a href="https://api.coingecko.com/.." rel="noopener noreferrer"&gt;https://api.coingecko.com/..&lt;/a&gt;.).&lt;/p&gt;

&lt;p&gt;Auth: Add your Bearer Token (if needed).&lt;/p&gt;

&lt;p&gt;Visualize: The AI scans the JSON response (even nested arrays) and auto-generates the schema. You can then ask questions like "Show me the price trend" and get a chart instantly.&lt;/p&gt;

&lt;p&gt;Why I built this: I'm a developer. I hate building "Admin Dashboards" just to monitor a few API endpoints. This is my lazy solution to that problem.&lt;/p&gt;

&lt;p&gt;It's currently in Open Beta (and free). If you have a messy API endpoint you want to test it on, give it a shot.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://bi.neoshift.ai/#/register" rel="noopener noreferrer"&gt;https://bi.neoshift.ai/#/register&lt;/a&gt;&lt;br&gt;
Invite Code: BETA-23D5BC9F&lt;/p&gt;

&lt;p&gt;(PS: I just added Lemon Squeezy payments today, so the checkout flow is brand new. Let me know if it breaks! 🍋)&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>tooling</category>
      <category>data</category>
    </item>
    <item>
      <title>I have 8 users and Google Gemini is my Marketing Manager. Week 1 Reality.</title>
      <dc:creator>Donald Wono</dc:creator>
      <pubDate>Tue, 03 Feb 2026 06:28:45 +0000</pubDate>
      <link>https://forem.com/donald_wono_2494bee04aa88/i-have-8-users-and-google-gemini-is-my-marketing-manager-week-1-reality-kp5</link>
      <guid>https://forem.com/donald_wono_2494bee04aa88/i-have-8-users-and-google-gemini-is-my-marketing-manager-week-1-reality-kp5</guid>
      <description>&lt;p&gt;Hey Dev.to! 👋&lt;/p&gt;

&lt;p&gt;I’m a developer, not a marketer. To be honest, I have no clue what I’m doing when it comes to selling software.&lt;/p&gt;

&lt;p&gt;So, last Monday, when I decided to pull the trigger and release the public beta of my new tool (NeoShiftBI), I decided to hire the only marketing manager I could afford: Google Gemini.&lt;/p&gt;

&lt;p&gt;I’ve been following its daily posting plans for LinkedIn, Twitter, and TikTok blindly.&lt;/p&gt;

&lt;p&gt;The Week 1 Results:&lt;/p&gt;

&lt;p&gt;Signups: 8 (mostly from spamming my friends on WhatsApp groups 😅).&lt;/p&gt;

&lt;p&gt;Marketing Strategy: "Do what the AI says."&lt;/p&gt;

&lt;p&gt;Current Status: Gemini told me to write a #watercooler post on Dev.to today to "build community," so here I am.&lt;/p&gt;

&lt;p&gt;Why I actually built this (The Origin Story)&lt;/p&gt;

&lt;p&gt;The previous company I worked at (an e-groceries platform) went under.&lt;/p&gt;

&lt;p&gt;While we were alive, one of our biggest pain point was data fragmentation. We had our app data in MongoDB, our Warehouse management system used PostgreSQL, and financial projections in Excel/Google Sheets.&lt;/p&gt;

&lt;p&gt;Although we had a data team, the requests always fell on us (the tech team) to build fragile ETL pipelines just to get a simple visualization for investors. It cluttered our backlog and killed our velocity.&lt;/p&gt;

&lt;p&gt;Now that I have a lot more free time, I decided to fix it.&lt;/p&gt;

&lt;p&gt;What I built:&lt;/p&gt;

&lt;p&gt;I built NeoShiftBI to automate that "Tech Team" bottleneck. (I actually wrote a technical deep-dive yesterday on how the MongoDB schema inference engine works here, but the short version is below).&lt;/p&gt;

&lt;p&gt;It connects to NoSQL/SQL/Sheets: No ETL required.&lt;/p&gt;

&lt;p&gt;AI Schema Detection: It scans the data and understands the relationships automatically (no manual joins).&lt;/p&gt;

&lt;p&gt;Text-to-SQL: You describe the chart you want ("Show me AOV by city") and the AI writes the query.&lt;/p&gt;

&lt;p&gt;The Current Struggles:&lt;/p&gt;

&lt;p&gt;Marketing: Clearly, 8 users isn't "Viral," but it's a start.&lt;/p&gt;

&lt;p&gt;Payments (The Pivot): I was trying to get approved by Paddle, but they just rejected me because I don't have "transaction history." (The classic chicken-and-egg problem for new SaaS). So, today I am pivoting and applying to Lemon Squeezy instead. Wish me luck with their compliance team! 🍋&lt;/p&gt;

&lt;p&gt;I’m giving out free upgrades to the Basic Plan for the beta cohort if anyone wants to roast my onboarding flow. &lt;br&gt;
Link: &lt;a href="https://bi.neoshift.ai/#/register" rel="noopener noreferrer"&gt;https://bi.neoshift.ai/#/register&lt;/a&gt; &lt;br&gt;
Beta Invite Code: BETA-C6423CDB&lt;/p&gt;

&lt;p&gt;Wish me luck (and hopefully Lemon Squeezy approves me soon).&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>gemini</category>
      <category>showdev</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>How I automated MongoDB JSON Flattening for Analytics (No ETL)</title>
      <dc:creator>Donald Wono</dc:creator>
      <pubDate>Mon, 02 Feb 2026 09:13:22 +0000</pubDate>
      <link>https://forem.com/donald_wono_2494bee04aa88/how-i-automated-mongodb-json-flattening-for-analytics-no-etl-5fao</link>
      <guid>https://forem.com/donald_wono_2494bee04aa88/how-i-automated-mongodb-json-flattening-for-analytics-no-etl-5fao</guid>
      <description>&lt;p&gt;I love MongoDB for its flexibility, but I’ve always hated building analytics dashboards on top of it.&lt;/p&gt;

&lt;p&gt;The problem is always the same: Nested JSON.&lt;/p&gt;

&lt;p&gt;If you want to visualize your data in a standard BI tool, you usually have to write a script or a complex aggregation pipeline ($unwind, anyone?) to flatten the arrays and objects into a tabular format.&lt;/p&gt;

&lt;p&gt;I got tired of maintaining those ETL scripts, so I built a tool to do it automatically.&lt;/p&gt;

&lt;p&gt;The Project: NeoShiftBI&lt;/p&gt;

&lt;p&gt;I’ve been building NeoShiftBI, an AI-powered analytics platform. My goal for the MongoDB connector was simple: Connect a cluster and get a flat table instantly.&lt;/p&gt;

&lt;p&gt;Here is a quick 90-second demo of how the auto-flattening and Incremental Sync works:&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/TDysN4_rKD0"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;How it works under the hood&lt;/p&gt;

&lt;p&gt;I built a custom schema inference engine (inferMongoSchema) to handle the translation to BigQuery. Here is the logic:&lt;/p&gt;

&lt;p&gt;Sampling &amp;amp; Recursion: The connector fetches a sample of up to 100 documents and recursively analyzes each field (analyzeDocument) to determine the most common data type.&lt;/p&gt;

&lt;p&gt;Type Normalization: MongoDB-specific types often break SQL pipelines. We normalize them on the fly:&lt;/p&gt;

&lt;p&gt;ObjectId → converted to string&lt;/p&gt;

&lt;p&gt;ISODate wrappers → extracted as clean timestamp&lt;/p&gt;

&lt;p&gt;The Flattening Strategy: Since BigQuery doesn't allow dots in column names, we flatten nested objects using an underscore separator.&lt;/p&gt;

&lt;p&gt;Input: {"user": {"address": {"city": "NYC"}}}&lt;/p&gt;

&lt;p&gt;Output Column: user_address_city&lt;/p&gt;

&lt;p&gt;Incremental Sync (CDC): Once the schema is set, we use a tracking column (like updated_at) to only fetch new or changed documents, preventing full-table scans on your production DB.&lt;/p&gt;

&lt;p&gt;Try the Beta (Feedback Wanted)&lt;/p&gt;

&lt;p&gt;I’m currently in Public Beta and I’m looking for developers with complex/messy MongoDB collections to stress-test the flattening logic.&lt;/p&gt;

&lt;p&gt;If you want to try it out, I’m upgrading all Dev.to users to the Basic Plan ($29/mo) for free during the beta.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://bi.neoshift.ai/#/register" rel="noopener noreferrer"&gt;https://bi.neoshift.ai/#/register&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Invite Code: BETA-790DA393&lt;/p&gt;

&lt;p&gt;Let me know if the parser handles your schema correctly or if you manage to break it! 🐛&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>dataengineering</category>
      <category>showdev</category>
      <category>database</category>
    </item>
  </channel>
</rss>
