<?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>DEV Community: Padmaraj Nidagundi</title>
    <description>The latest articles on DEV Community by Padmaraj Nidagundi (@padmarajnidagundi).</description>
    <link>https://dev.to/padmarajnidagundi</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F302891%2F9c2d9098-497a-4f5f-8d42-ef7d2edeae17.jpg</url>
      <title>DEV Community: Padmaraj Nidagundi</title>
      <link>https://dev.to/padmarajnidagundi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/padmarajnidagundi"/>
    <language>en</language>
    <item>
      <title>What Happens When 15+ Public APIs Keep Breaking? I Built a Fault-Tolerant Data Platform for India</title>
      <dc:creator>Padmaraj Nidagundi</dc:creator>
      <pubDate>Sat, 22 Aug 2026 08:28:27 +0000</pubDate>
      <link>https://dev.to/padmarajnidagundi/what-happens-when-15-public-apis-keep-breaking-i-built-a-fault-tolerant-data-platform-for-india-2al6</link>
      <guid>https://dev.to/padmarajnidagundi/what-happens-when-15-public-apis-keep-breaking-i-built-a-fault-tolerant-data-platform-for-india-2al6</guid>
      <description>&lt;p&gt;I started IndiaRealTime with a fairly simple idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if people could check useful, frequently changing information about India without opening five or ten different websites?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mandi prices. Fuel prices. Gold and silver rates. AQI. Weather alerts. Earthquakes. Bank holidays. Currency conversion. Cricket scores. And a growing list of other data.&lt;/p&gt;

&lt;p&gt;Most of this information already exists.&lt;/p&gt;

&lt;p&gt;The problem isn't necessarily finding the data.&lt;/p&gt;

&lt;p&gt;The problem is making all of those different sources work together reliably.&lt;/p&gt;

&lt;p&gt;That turned out to be a much more interesting engineering problem than I expected.&lt;/p&gt;

&lt;p&gt;Today, IndiaRealTime is built around roughly 20 independent WordPress plugins that consume around 15 public data sources and feed a single site.&lt;/p&gt;

&lt;p&gt;The most important design decision wasn't how to fetch the data.&lt;/p&gt;

&lt;p&gt;It was deciding what the website should do &lt;strong&gt;when the data source doesn't work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Live data is easy when every API is healthy.&lt;/p&gt;

&lt;p&gt;The interesting engineering starts when it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: public data doesn't mean reliable data
&lt;/h2&gt;

&lt;p&gt;India has a huge amount of publicly available information.&lt;/p&gt;

&lt;p&gt;Agricultural commodity prices are available through public systems.&lt;/p&gt;

&lt;p&gt;Air-quality information is published by government sources.&lt;/p&gt;

&lt;p&gt;Fuel prices are published by oil marketing companies.&lt;/p&gt;

&lt;p&gt;Weather and seismic information comes from different feeds.&lt;/p&gt;

&lt;p&gt;Financial information comes from exchanges and other providers.&lt;/p&gt;

&lt;p&gt;But these sources don't behave like one clean API.&lt;/p&gt;

&lt;p&gt;They have different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;response formats&lt;/li&gt;
&lt;li&gt;update schedules&lt;/li&gt;
&lt;li&gt;authentication requirements&lt;/li&gt;
&lt;li&gt;rate limits&lt;/li&gt;
&lt;li&gt;naming conventions&lt;/li&gt;
&lt;li&gt;failure modes&lt;/li&gt;
&lt;li&gt;geographic coverage&lt;/li&gt;
&lt;li&gt;data freshness&lt;/li&gt;
&lt;li&gt;maintenance schedules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One source might return JSON.&lt;/p&gt;

&lt;p&gt;Another might change a field name.&lt;/p&gt;

&lt;p&gt;Another might temporarily return an empty response.&lt;/p&gt;

&lt;p&gt;Another might be unavailable for several hours.&lt;/p&gt;

&lt;p&gt;Another might return HTTP 200 while the actual data is unusable.&lt;/p&gt;

&lt;p&gt;So the problem became:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do you build a website that depends on many external data sources without allowing one broken source to break the entire site?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question shaped most of IndiaRealTime's architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I chose one plugin per data source
&lt;/h2&gt;

&lt;p&gt;Instead of building one giant ingestion pipeline, I chose a deliberately modular architecture.&lt;/p&gt;

&lt;p&gt;Each major data source gets its own WordPress plugin.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Public data sources
        │
        ├── Source A
        ├── Source B
        ├── Source C
        ├── Source D
        └── ...
             │
             ▼
      Independent plugins
             │
      fetch → validate
             │
          normalize
             │
             ▼
        local cache
             │
             ▼
       WordPress theme
             │
             ▼
       IndiaRealTime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each plugin owns its own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fetching logic&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;normalization&lt;/li&gt;
&lt;li&gt;schedule&lt;/li&gt;
&lt;li&gt;cache&lt;/li&gt;
&lt;li&gt;failure handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means a failure in one source doesn't have to become a failure for the entire site.&lt;/p&gt;

&lt;p&gt;If a commodity API changes its response format, I want one component to have a problem.&lt;/p&gt;

&lt;p&gt;I don't want the weather pages, fuel pages, AQI pages and everything else to become collateral damage.&lt;/p&gt;

&lt;p&gt;This is essentially &lt;strong&gt;fault isolation at the application architecture level.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjd9iwsc2p93z2b7sdujr.png" alt=" " width="800" height="800"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  But then I discovered the real problem
&lt;/h2&gt;

&lt;p&gt;Suppose a visitor opens a fuel-price page.&lt;/p&gt;

&lt;p&gt;The site has a cached value from the previous successful fetch.&lt;/p&gt;

&lt;p&gt;Then the upstream source goes down.&lt;/p&gt;

&lt;p&gt;What should happen?&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Show an error
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unable to fetch current fuel price.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Technically honest.&lt;/p&gt;

&lt;p&gt;Terrible user experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: Show nothing
&lt;/h3&gt;

&lt;p&gt;Even worse.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 3: Keep showing the last successful value
&lt;/h3&gt;

&lt;p&gt;Now the user gets useful information, but it might be stale.&lt;/p&gt;

&lt;p&gt;For this project, I chose option 3.&lt;/p&gt;

&lt;p&gt;That led to one of the most important patterns in the system:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;stale-while-revalidate style fallback.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  When the API fails, keep the last good value
&lt;/h2&gt;

&lt;p&gt;The basic flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fetch new data
     │
     ▼
Is response valid?
   /       \
 yes       no
  │         │
  ▼         ▼
Normalize   Keep previous
  │         cached value
  ▼
Update cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is that a temporary upstream failure does not immediately become a broken page.&lt;/p&gt;

&lt;p&gt;If yesterday's fuel price was successfully retrieved and today's request fails, the system can continue serving the last known good value rather than replacing it with an error.&lt;/p&gt;

&lt;p&gt;There is also a short-lived failure flag so the application doesn't repeatedly hammer an upstream source that is already failing.&lt;/p&gt;

&lt;p&gt;This sounds simple.&lt;/p&gt;

&lt;p&gt;But it changes the reliability model considerably.&lt;/p&gt;

&lt;p&gt;The site doesn't have to choose between:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"live but broken"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"working but empty."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It can instead say:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Here is the last known good data while we try again."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Of course, that means freshness becomes part of the data model.&lt;/p&gt;

&lt;p&gt;A cached value isn't magically current.&lt;/p&gt;

&lt;p&gt;So the system needs to be honest about what it knows and when it last successfully obtained it.&lt;/p&gt;

&lt;p&gt;That distinction is important for any application that claims to provide "real-time" information.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real-time is really a freshness problem
&lt;/h1&gt;

&lt;p&gt;I think the phrase "real-time data" can be misleading.&lt;/p&gt;

&lt;p&gt;Fetching something every few minutes doesn't automatically make it real-time.&lt;/p&gt;

&lt;p&gt;What matters is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When was the source updated?&lt;/li&gt;
&lt;li&gt;When did we retrieve it?&lt;/li&gt;
&lt;li&gt;Did the retrieval succeed?&lt;/li&gt;
&lt;li&gt;Is the value valid?&lt;/li&gt;
&lt;li&gt;When should we try again?&lt;/li&gt;
&lt;li&gt;What do we display if the source fails?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you have multiple external sources, "real-time" becomes less about speed and more about &lt;strong&gt;freshness management&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, different datasets don't need identical schedules.&lt;/p&gt;

&lt;p&gt;Some information can be refreshed several times a day.&lt;/p&gt;

&lt;p&gt;Some information changes daily.&lt;/p&gt;

&lt;p&gt;Some feeds need much more frequent updates.&lt;/p&gt;

&lt;p&gt;So each plugin has its own schedule rather than forcing every source into one global polling system.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why the API health monitor exists
&lt;/h1&gt;

&lt;p&gt;Once you have one plugin, checking whether it works isn't particularly difficult.&lt;/p&gt;

&lt;p&gt;With around 20 independent plugins, manually checking logs becomes annoying.&lt;/p&gt;

&lt;p&gt;So IndiaRealTime has a separate API health-monitoring component.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Plugin A ──┐
Plugin B ──┤
Plugin C ──┤
Plugin D ──┤──&amp;gt; API Health Monitor
Plugin E ──┤
Plugin F ──┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One place to see which external integrations are healthy and which ones need attention.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is one of those engineering decisions that doesn't make the homepage look more impressive.&lt;/p&gt;

&lt;p&gt;But it makes operating the system much easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  Another challenge: PHP and JavaScript don't always agree
&lt;/h1&gt;

&lt;p&gt;One of the more unusual problems appeared in author attribution.&lt;/p&gt;

&lt;p&gt;The backend computes a hash in PHP.&lt;/p&gt;

&lt;p&gt;The frontend also needs to compute the corresponding value in JavaScript.&lt;/p&gt;

&lt;p&gt;That sounds trivial until integer behavior becomes relevant.&lt;/p&gt;

&lt;p&gt;PHP and JavaScript don't handle integer arithmetic in exactly the same way.&lt;/p&gt;

&lt;p&gt;In particular, reproducing 32-bit wraparound required explicit handling on the JavaScript side.&lt;/p&gt;

&lt;p&gt;The solution uses &lt;code&gt;Math.imul()&lt;/code&gt; so the JavaScript calculation can reproduce the intended 32-bit multiplication behavior.&lt;/p&gt;

&lt;p&gt;Without that, the backend and frontend can silently calculate different hashes.&lt;/p&gt;

&lt;p&gt;There isn't necessarily an obvious error on the page.&lt;/p&gt;

&lt;p&gt;The problem only appears when you compare the two results.&lt;/p&gt;

&lt;p&gt;This was a good reminder that &lt;strong&gt;cross-language compatibility isn't only about syntax or APIs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes it is about arithmetic semantics.&lt;/p&gt;




&lt;h1&gt;
  
  
  Location routing was another interesting problem
&lt;/h1&gt;

&lt;p&gt;IndiaRealTime has location-based URLs.&lt;/p&gt;

&lt;p&gt;The site needs to represent things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/state/city/category/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than maintaining a completely separate routing implementation for every state and city.&lt;/p&gt;

&lt;p&gt;The application parses location information through shared WordPress query variables such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ir_state
ir_sub
ir_sub2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That lets the same architecture handle many different locations.&lt;/p&gt;

&lt;p&gt;But flexible routing creates its own problems.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this segment a city?&lt;/li&gt;
&lt;li&gt;Is it a category?&lt;/li&gt;
&lt;li&gt;Is there a trailing slash?&lt;/li&gt;
&lt;li&gt;Does this URL represent a national page or a local page?&lt;/li&gt;
&lt;li&gt;What happens when a location name overlaps with another route?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are not glamorous problems.&lt;/p&gt;

&lt;p&gt;They're the kind of problems that show up after the architecture looks finished.&lt;/p&gt;

&lt;p&gt;So routing edge cases need dedicated tests rather than relying on manually opening a few URLs in a browser.&lt;/p&gt;




&lt;h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuv8ca94zp4aonlporxhk.png" alt=" " width="800" height="1733"&gt;
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Accessibility isn't just a CSS detail
&lt;/h1&gt;

&lt;p&gt;Another thing I wanted to take seriously was color.&lt;/p&gt;

&lt;p&gt;A data website naturally uses semantic colors.&lt;/p&gt;

&lt;p&gt;Green might mean good.&lt;/p&gt;

&lt;p&gt;Yellow might mean caution.&lt;/p&gt;

&lt;p&gt;Red might mean dangerous.&lt;/p&gt;

&lt;p&gt;AQI makes this especially important.&lt;/p&gt;

&lt;p&gt;If a page is communicating air-quality severity, color isn't merely decoration.&lt;/p&gt;

&lt;p&gt;It carries information.&lt;/p&gt;

&lt;p&gt;So the semantic colors are checked for WCAG contrast and considered against color-vision deficiencies.&lt;/p&gt;

&lt;p&gt;The AQI bands also follow the relevant CPCB scale rather than using an arbitrary visual gradient.&lt;/p&gt;

&lt;p&gt;That creates a useful engineering principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If color communicates data, color is part of the data presentation layer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It deserves testing just like an API response does.&lt;/p&gt;




&lt;h1&gt;
  
  
  Structured data is part of the architecture too
&lt;/h1&gt;

&lt;p&gt;IndiaRealTime isn't only rendering HTML for humans.&lt;/p&gt;

&lt;p&gt;The project also generates machine-readable structured data through Schema.org JSON-LD.&lt;/p&gt;

&lt;p&gt;That gives search engines and other systems a more explicit representation of what a page contains.&lt;/p&gt;

&lt;p&gt;The architecture therefore looks roughly like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             External sources
                    │
                    ▼
             Data fetchers
                    │
                    ▼
              Validation
                    │
                    ▼
               Normalize
                    │
                    ▼
              Cache/store
                    │
          ┌─────────┴─────────┐
          ▼                   ▼
     HTML pages          Schema.org JSON-LD
          │
          ▼
      Human users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And when fresh data is successfully updated, the system can use IndexNow to signal that updated content is available for crawling.&lt;/p&gt;

&lt;p&gt;Again, the idea isn't to make search engines the architecture.&lt;/p&gt;

&lt;p&gt;The goal is to make fresh data discoverable without waiting indefinitely for a crawler to happen to revisit the page.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why WordPress?
&lt;/h1&gt;

&lt;p&gt;This is probably the question developers will ask.&lt;/p&gt;

&lt;p&gt;Why build a data aggregation system with WordPress?&lt;/p&gt;

&lt;p&gt;The answer is that WordPress wasn't being used as a page builder.&lt;/p&gt;

&lt;p&gt;The project uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a custom WordPress theme&lt;/li&gt;
&lt;li&gt;PHP templates&lt;/li&gt;
&lt;li&gt;vanilla JavaScript/CSS&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;custom plugins&lt;/li&gt;
&lt;li&gt;WP-Cron&lt;/li&gt;
&lt;li&gt;WordPress's existing routing and content infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no page-builder dependency at the center of the architecture.&lt;/p&gt;

&lt;p&gt;WordPress provides the application framework, while the custom plugins provide the data-ingestion layer.&lt;/p&gt;

&lt;p&gt;That separation works reasonably well for this project.&lt;/p&gt;

&lt;p&gt;It also gives me a useful deployment and content-management environment without having to build an entire CMS from scratch.&lt;/p&gt;




&lt;h1&gt;
  
  
  But ~20 plugins isn't free
&lt;/h1&gt;

&lt;p&gt;The modular architecture has a clear tradeoff.&lt;/p&gt;

&lt;p&gt;Fault isolation is good.&lt;/p&gt;

&lt;p&gt;Maintainability is harder.&lt;/p&gt;

&lt;p&gt;With one plugin per source, shared conventions have to remain consistent.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transient naming&lt;/li&gt;
&lt;li&gt;cache durations&lt;/li&gt;
&lt;li&gt;failure flags&lt;/li&gt;
&lt;li&gt;error handling&lt;/li&gt;
&lt;li&gt;scheduling&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;data normalization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A monolith gives you more opportunities to centralize those conventions.&lt;/p&gt;

&lt;p&gt;A collection of independent plugins gives you more isolation.&lt;/p&gt;

&lt;p&gt;So the architecture deliberately chooses:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;more components + stronger isolation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;over:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;one central ingestion system + tighter coupling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm still interested in whether that is the correct long-term decision.&lt;/p&gt;




&lt;h1&gt;
  
  
  What IndiaRealTime currently covers
&lt;/h1&gt;

&lt;p&gt;The project currently brings together data and utilities across several categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  Prices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mandi/agricultural commodity prices&lt;/li&gt;
&lt;li&gt;Fuel prices&lt;/li&gt;
&lt;li&gt;LPG&lt;/li&gt;
&lt;li&gt;Precious metals&lt;/li&gt;
&lt;li&gt;Currency conversion&lt;/li&gt;
&lt;li&gt;Mutual fund NAVs&lt;/li&gt;
&lt;li&gt;FD rates&lt;/li&gt;
&lt;li&gt;Toll rates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Environment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Air quality&lt;/li&gt;
&lt;li&gt;Weather alerts&lt;/li&gt;
&lt;li&gt;Earthquake alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Civic and time
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bank holidays&lt;/li&gt;
&lt;li&gt;Pincode lookups&lt;/li&gt;
&lt;li&gt;Timezone conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Culture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Panchang&lt;/li&gt;
&lt;li&gt;Muhurat&lt;/li&gt;
&lt;li&gt;Vrat calendar&lt;/li&gt;
&lt;li&gt;Rashifal&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sport
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Live cricket scores&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact coverage depends on what the underlying sources make available.&lt;/p&gt;

&lt;p&gt;For example, fuel prices can be represented at city level rather than just showing a national average.&lt;/p&gt;




&lt;h1&gt;
  
  
  The part I like most: the site is actually a test of the architecture
&lt;/h1&gt;

&lt;p&gt;IndiaRealTime started as a website.&lt;/p&gt;

&lt;p&gt;But the longer I worked on it, the more it became an experiment in a different question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do you build a useful application on top of external systems that you don't control?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question applies far beyond India.&lt;/p&gt;

&lt;p&gt;It applies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;payment providers&lt;/li&gt;
&lt;li&gt;shipping APIs&lt;/li&gt;
&lt;li&gt;weather services&lt;/li&gt;
&lt;li&gt;financial APIs&lt;/li&gt;
&lt;li&gt;government data&lt;/li&gt;
&lt;li&gt;mapping services&lt;/li&gt;
&lt;li&gt;social APIs&lt;/li&gt;
&lt;li&gt;SaaS integrations&lt;/li&gt;
&lt;li&gt;public datasets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The upstream provider can change.&lt;/p&gt;

&lt;p&gt;The network can fail.&lt;/p&gt;

&lt;p&gt;The response can be malformed.&lt;/p&gt;

&lt;p&gt;The service can be rate-limited.&lt;/p&gt;

&lt;p&gt;The data can become stale.&lt;/p&gt;

&lt;p&gt;Your application still has to behave sensibly.&lt;/p&gt;

&lt;p&gt;That is why the stale-cache mechanism ended up being more important than some of the visible features.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I would change if I started again
&lt;/h1&gt;

&lt;p&gt;There are several things I'd approach differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Historical data earlier
&lt;/h2&gt;

&lt;p&gt;The project currently has historical tracking for some datasets such as fuel and AQI.&lt;/p&gt;

&lt;p&gt;Extending that to mandi and commodity prices is one of the next useful steps.&lt;/p&gt;

&lt;p&gt;A current value tells you what is happening.&lt;/p&gt;

&lt;p&gt;A history tells you why it matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. More automated contract testing
&lt;/h2&gt;

&lt;p&gt;External APIs change.&lt;/p&gt;

&lt;p&gt;Ideally, each source should have stronger automated checks that detect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;missing fields&lt;/li&gt;
&lt;li&gt;changed field types&lt;/li&gt;
&lt;li&gt;unexpected empty responses&lt;/li&gt;
&lt;li&gt;invalid values&lt;/li&gt;
&lt;li&gt;schema changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;before those changes reach production pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. More complete accessibility testing
&lt;/h2&gt;

&lt;p&gt;Color contrast is only one part of accessibility.&lt;/p&gt;

&lt;p&gt;The next step is broader testing for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keyboard navigation&lt;/li&gt;
&lt;li&gt;focus states&lt;/li&gt;
&lt;li&gt;semantic HTML&lt;/li&gt;
&lt;li&gt;screen readers&lt;/li&gt;
&lt;li&gt;form controls&lt;/li&gt;
&lt;li&gt;dynamic content&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. More granular geographic coverage
&lt;/h2&gt;

&lt;p&gt;The architecture can support more city-level data as the underlying sources permit it.&lt;/p&gt;

&lt;p&gt;That is especially useful for prices that vary geographically.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I learned building it
&lt;/h1&gt;

&lt;p&gt;The biggest lesson wasn't about WordPress.&lt;/p&gt;

&lt;p&gt;It wasn't about APIs.&lt;/p&gt;

&lt;p&gt;It wasn't even about caching.&lt;/p&gt;

&lt;p&gt;It was this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliability is often about deciding what to do when something goes wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anyone can build the happy path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API works
   ↓
Fetch data
   ↓
Display data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Production systems need the other diagram:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API works
   ↓
Fetch
   ↓
Validate
   ↓
Cache
   ↓
Display


API fails
   ↓
Detect failure
   ↓
Keep last known good value
   ↓
Record failure
   ↓
Retry later
   ↓
Continue serving
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That second path is where a lot of the engineering lives.&lt;/p&gt;




&lt;h1&gt;
  
  
  I'd like other developers to challenge this architecture
&lt;/h1&gt;

&lt;p&gt;IndiaRealTime is a working project, but I don't consider the architecture finished.&lt;/p&gt;

&lt;p&gt;I'm particularly interested in how other developers would approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stale data versus unavailable data&lt;/li&gt;
&lt;li&gt;API failure detection&lt;/li&gt;
&lt;li&gt;cache invalidation&lt;/li&gt;
&lt;li&gt;per-source scheduling&lt;/li&gt;
&lt;li&gt;contract testing for unstable APIs&lt;/li&gt;
&lt;li&gt;multi-source data normalization&lt;/li&gt;
&lt;li&gt;plugin-per-source architecture&lt;/li&gt;
&lt;li&gt;accessibility for data-heavy interfaces&lt;/li&gt;
&lt;li&gt;cross-language hashing&lt;/li&gt;
&lt;li&gt;large-scale geographic routing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've built something similar, I'd genuinely like to compare approaches.&lt;/p&gt;

&lt;p&gt;The project overview is on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/padmarajnidagundi/indiarealtime-com" rel="noopener noreferrer"&gt;https://github.com/padmarajnidagundi/indiarealtime-com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the live application is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IndiaRealTime:&lt;/strong&gt; &lt;a href="https://www.indiarealtime.com" rel="noopener noreferrer"&gt;https://www.indiarealtime.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm especially interested in hearing from developers who have had the same experience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the API works perfectly in development, and then production teaches you otherwise.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>data</category>
      <category>webdev</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Testing the New HTTP QUERY Method (RFC 10008): A Guide for Test Engineers and Developers</title>
      <dc:creator>Padmaraj Nidagundi</dc:creator>
      <pubDate>Wed, 08 Jul 2026 07:24:12 +0000</pubDate>
      <link>https://dev.to/padmarajnidagundi/testing-the-new-http-query-method-rfc-10008-a-guide-for-test-engineers-and-developers-5bi6</link>
      <guid>https://dev.to/padmarajnidagundi/testing-the-new-http-query-method-rfc-10008-a-guide-for-test-engineers-and-developers-5bi6</guid>
      <description>&lt;p&gt;HTTP has a new method. RFC 10008, published by the IETF as a Proposed Standard in June 2026, defines QUERY — a method that's safe and idempotent like GET, but carries a request body like POST.&lt;/p&gt;

&lt;p&gt;If you've ever encoded a huge filter object into a query string because GET couldn't carry a body, or used POST for a read-only search and lost cacheability in the process, QUERY closes that gap.&lt;/p&gt;

&lt;p&gt;This post is a practical breakdown of how to test it — manually, with Postman, with automation, and with AI in the loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR on the Spec&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Safe + idempotent — same guarantees as GET. Clients and proxies can retry it freely.&lt;br&gt;
Has a body — same shape as POST. No more 8000-octet URL limits (RFC 9110's recommended cap) for complex queries.&lt;br&gt;
Cacheable, but the cache key includes the body, not just the URL. This is the part most infra hasn't caught up to.&lt;br&gt;
Not CORS-safelisted — browser calls to QUERY always trigger a preflight OPTIONS, same as PUT/DELETE.&lt;br&gt;
New Accept-Query header — lets a resource advertise supported query formats, e.g.:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Accept-Query: "application/jsonpath", application/sql;charset="UTF-8"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Manual Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before any tooling, walk through these by hand:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Method support:&lt;/strong&gt; Does the endpoint even accept QUERY? Expect 405 Method Not Allowed on a lot of stacks right now — frameworks, gateways, and WAFs are still catching up.&lt;br&gt;
&lt;strong&gt;Idempotency:&lt;/strong&gt; Fire the identical request 5-10 times manually. No side effects, no state changes, same result every time.&lt;br&gt;
Body edge cases: empty body, malformed JSON, oversized payload, wrong Content-Type. Confirm you get 400/415 where expected, not a silent 200.&lt;br&gt;
&lt;strong&gt;Discovery:&lt;/strong&gt; Send OPTIONS or HEAD and check whether Allow: QUERY and Accept-Query show up.&lt;br&gt;
&lt;strong&gt;Caching:&lt;/strong&gt; Repeat the same QUERY through your CDN/proxy — check for cache hits. Then vary the body slightly and confirm the cache key changes accordingly (mismatches here = cache poisoning risk).&lt;br&gt;
CORS preflight: From a browser console, confirm an OPTIONS preflight actually fires before the QUERY request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. API Testing with Postman&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Postman doesn't have a built-in QUERY button yet, but it's easy to add:&lt;/p&gt;

&lt;p&gt;Method dropdown → "Custom method" → type QUERY.&lt;br&gt;
Set the body (raw JSON, or whatever your API expects) exactly like you would for POST.&lt;br&gt;
Explicitly set Content-Type — QUERY has no default assumption.&lt;br&gt;
Build a small test collection:&lt;/p&gt;

&lt;p&gt;javascript// pm.test examples for a QUERY request&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkjjzw18f17b8ndd39ce.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkjjzw18f17b8ndd39ce.png" alt=" " width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use Collection Runner (or Newman in CI) to fire the same QUERY N times in a loop and assert consistent responses — a fast, scriptable idempotency check.&lt;/p&gt;

&lt;p&gt;If your Postman version won't let you type a custom verb in the dropdown, switch to raw request mode or override the method via a pre-request script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Automation Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most HTTP libraries don't have a .query() shortcut yet. Treat it as a custom verb with a body, same pattern you'd use for any non-standard method.&lt;/p&gt;

&lt;p&gt;Java (REST-assured):&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmr2ei6vyvj8n49q0pf49.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmr2ei6vyvj8n49q0pf49.png" alt=" " width="799" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Python (requests):&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6yz4q170dc5edq7sj1yq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6yz4q170dc5edq7sj1yq.png" alt=" " width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;JavaScript (fetch, Node 18+):&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pgajnh9gm66iiswq8sq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pgajnh9gm66iiswq8sq.png" alt=" " width="792" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scenarios worth automating and running in CI:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Idempotency regression&lt;/strong&gt; — same QUERY 5x, assert byte-identical (or semantically identical) responses.&lt;br&gt;
&lt;strong&gt;Cache key correctness&lt;/strong&gt; — two near-identical bodies shouldn't collide in cache; two identical bodies should hit cache.&lt;br&gt;
&lt;strong&gt;Contract tests&lt;/strong&gt; — response schema stays stable regardless of query body shape (nested vs. flat filters).&lt;br&gt;
&lt;strong&gt;Negative tests&lt;/strong&gt; — oversized bodies, bad Accept-Query values, missing Content-Type.&lt;br&gt;
&lt;strong&gt;Infra checks&lt;/strong&gt; — confirm your WAF, API gateway, and load balancer actually pass QUERY through instead of blocking or silently rewriting it to POST.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Where AI Fits In&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the part that saves the most time day-to-day:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edge case generation:&lt;/strong&gt; paste the RFC summary + your endpoint spec into an LLM and ask for edge cases you haven't thought of — malformed Accept-Query values, boundary body sizes, cache-key collision attempts.&lt;br&gt;
&lt;strong&gt;Test script drafting:&lt;/strong&gt; ask AI to draft Postman pm.test blocks or REST-assured/pytest scaffolding for idempotency and caching checks, then review and tighten them yourself.&lt;br&gt;
&lt;strong&gt;Response diffing:&lt;/strong&gt; have AI compare payloads across repeated QUERY calls and flag subtle non-idempotent behavior — a stray timestamp, reordered array, inconsistent pagination cursor.&lt;br&gt;
&lt;strong&gt;Security review assist:&lt;/strong&gt; since WAF/CSRF rules are often written before QUERY existed, AI can help draft candidate test payloads (oversized bodies, unusual Accept-Query values) for your authorized security testing — always within your org's scope and rules of engagement.&lt;br&gt;
&lt;strong&gt;Doc gap-checking:&lt;/strong&gt; feed your API docs to AI and ask it to flag places where Accept-Query support isn't documented or where QUERY behavior isn't clearly distinguished from GET/POST.&lt;/p&gt;

&lt;p&gt;AI doesn't replace reading the spec — but it's genuinely good at generating breadth of coverage for a method this new, where nobody has a mature checklist yet.&lt;/p&gt;

&lt;p&gt;Quick Reference&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdmsaaf0a9vsydsbwodcx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdmsaaf0a9vsydsbwodcx.png" alt=" " width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;QUERY support is inconsistent across frameworks and infra right now — that's exactly the window where testing it thoroughly matters most, before assumptions get baked in.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;QUERY is still fresh and newborn *&lt;/em&gt;👶🏻 - expect inconsistent support across frameworks, proxies, and tools for a while. That's exactly why testing it thoroughly now, before it's baked into every stack, is worth the effort. &lt;a href="https://www.linkedin.com/pulse/testing-new-http-query-method-practical-guide-test-padmaraj-nidagundi-vnjff/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you run QUERY against your own stack yet? #testing #http #postman #automation #ai Curious what broke first — WAF, cache, or CORS. Drop it in the comments. Or reach me on email  padmaraj (dot) nidagundi (at) gmail.com&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>testing</category>
    </item>
    <item>
      <title>How test automation engineers survive and thrive in the AI 2025 Era.</title>
      <dc:creator>Padmaraj Nidagundi</dc:creator>
      <pubDate>Mon, 17 Feb 2025 19:02:28 +0000</pubDate>
      <link>https://dev.to/padmarajnidagundi/how-test-automation-engineers-survive-and-thrive-in-the-ai-2025-era-3m82</link>
      <guid>https://dev.to/padmarajnidagundi/how-test-automation-engineers-survive-and-thrive-in-the-ai-2025-era-3m82</guid>
      <description>&lt;p&gt;In 2025, test automation engineers are adapting and thriving in the AI era by leveraging new technologies and methodologies. Here are some key strategies and trends that are helping them succeed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upskilling and Continuous Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI and Machine Learning: Engineers are learning AI and machine learning concepts to understand how to integrate these technologies into their testing frameworks.&lt;br&gt;
New Tools and Technologies: Staying updated with the latest testing tools and frameworks that incorporate AI, such as AI-driven test automation platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; An engineer might take online courses on platforms like Coursera or Udacity to learn about AI and machine learning. They could also attend industry conferences like the AI Summit or the Selenium Conference to stay updated on the latest trends and tools&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-Driven Test Automation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Intelligent Test Generation: Using AI to generate test cases based on historical data and patterns, reducing the manual effort required to create test scripts.&lt;br&gt;
Predictive Analytics: Leveraging AI to predict potential defects and areas of the application that are more likely to fail, allowing for more targeted testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; Using a tool like Applitools, which employs AI to visually validate UI components and automatically detect differences, even those that might be missed by traditional pixel-based comparisons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced Test Coverage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Automated Exploratory Testing: AI can help in exploring the application in ways that manual testers might not think of, increasing the coverage and finding edge cases.&lt;br&gt;
Continuous Testing: Integrating AI-driven testing into CI/CD pipelines to ensure continuous and automated testing throughout the development lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; Implementing a tool like Mabl, which uses AI to automatically explore an application and generate test cases based on user behavior, ensuring that even edge cases are covered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improved Test Maintenance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Self-Healing Scripts: AI can help in identifying and fixing broken test scripts automatically, reducing the maintenance effort.&lt;br&gt;
Automated Test Data Management: Using AI to generate and manage test data, ensuring that tests are run with relevant and valid data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Utilizing Testim, an AI-driven test automation platform that offers self-healing test scripts. If a UI element changes, Testim can automatically update the test script to reflect the new element, reducing maintenance effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaboration with AI Tools:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI-Assisted Debugging: Tools that use AI to help identify the root cause of failures more quickly and accurately.&lt;br&gt;
Natural Language Processing (NLP): Using NLP to convert human language requirements into automated test scripts, making the testing process more intuitive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; Using a tool like Functionize, which employs NLP to convert plain English test cases into executable test scripts. This makes it easier for non-technical stakeholders to contribute to the testing process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus on Quality Assurance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shift-Left Testing: Incorporating testing earlier in the development process to catch defects sooner, reducing the cost and effort of fixing them later.&lt;br&gt;
User Experience Testing: Using AI to simulate user behavior and test the application from a user's perspective, ensuring a better user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; Integrating AI-driven testing tools like Tricentis Tosca into the development process from the beginning. This tool can help in creating and maintaining test cases early in the development cycle, ensuring that defects are caught sooner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adoption of DevOps Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Integration with CI/CD: Ensuring that AI-driven testing is seamlessly integrated into the continuous integration and continuous deployment pipelines.&lt;br&gt;
Collaboration with Developers: Working closely with developers to ensure that testing is an integral part of the development process, not an afterthought.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; Using Jenkins with AI-driven testing plugins to integrate automated testing into the CI/CD pipeline. This ensures that every code change is automatically tested, and any issues are flagged immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ethical and Security Considerations:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI Ethics: Ensuring that AI-driven testing is ethical and unbiased, avoiding any potential issues related to data privacy and security.&lt;br&gt;
Security Testing: Using AI to identify vulnerabilities and potential security threats in the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt; Employing AI tools like Veracode to perform static and dynamic application security testing (SAST and DAST). These tools can identify vulnerabilities in the code and provide insights into potential security threats.&lt;/p&gt;

&lt;p&gt;By embracing these strategies and leveraging AI, test automation engineers in 2025 are not only surviving but thriving, delivering higher quality software more efficiently and effectively.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Next CTO</title>
      <dc:creator>Padmaraj Nidagundi</dc:creator>
      <pubDate>Fri, 07 Oct 2022 07:16:41 +0000</pubDate>
      <link>https://dev.to/padmarajnidagundi/the-next-cto-3i5j</link>
      <guid>https://dev.to/padmarajnidagundi/the-next-cto-3i5j</guid>
      <description>&lt;p&gt;You want to become a CTO or enhance your skills as a Visionary Chief Technology Officer, but you don't know where to start.&lt;/p&gt;

&lt;p&gt;You want to be able to lead your team to success and be at the forefront of the latest technologies.&lt;/p&gt;

&lt;p&gt;THE NEXT CTO book will help you understand what it takes to be a great CTO, from building an engineering culture to choosing the right technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is book for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Any wanting to become a CTO. Aspiring Software engineers, startup owners, VP engineers, tech leads, testers, product owners, analysts, business consultants, engineers, and business owners.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you have ever thought to yourself, “I want to become a CTO or I want to enhance my skills as a Visionary Chief Technology Officer” then this is best book for you. In it, the author comes up with some important technical and leadership themes: CTO in Agile era, Lean mindset for CTO, R&amp;amp;D lab, CTO opportunities in the year 2030 and so on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 1:&lt;/strong&gt; Steps to get into the CTO role, connection between technology and the CTO, how CTO get into innovation and become visionary CTO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 2:&lt;/strong&gt; CTO Building and debugging engineering culture, factors to consider when choosing technologies and different CTO personalities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 3:&lt;/strong&gt; Professional skills, qualities and competence for CTO, Types of CTO in the industry, Budgets management, technology management and people management, Agile and Lean mindset for creating lean organization, product, and technology. CTO and POC, Prototype, MVP, Usability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 4:&lt;/strong&gt; Coding skills for CTO, code, low code and no code skills for CTO, technology trends to build strategy, avoid over engineering, lead research, technical and business due diligence, product development (R&amp;amp;D) and CTO role in technical and business due diligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 5:&lt;/strong&gt; Learning from mistakes and failure, how CTO avoid and manage failures, startup vs corporate journey and learning lessons, CTO one step ahead and employee journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 6:&lt;/strong&gt; CTO opportunities in the year 2030 with Quantum computers, Data science, AI, ML, Smart cities, EV, IOT, OPENAI GPT 4, NEO, DALL·E and M2M-100&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BONUS: A New CTO Three Month Toolkit, SaaS CTOs Check List, Mind map for CTO and Self Q&amp;amp;A&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Search on amazon "&lt;strong&gt;THE NEXT CTO&lt;/strong&gt;"&lt;br&gt;
Pre-order book it via Amazon&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%2F5ph5pmvxmv0v0tq93ay8.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%2F5ph5pmvxmv0v0tq93ay8.png" alt="the next cto" width="800" height="1277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How chief technology officer CTO avoid over engineering&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%2Ffa2k97d2d4w9pas3euqz.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%2Ffa2k97d2d4w9pas3euqz.png" alt="chief technology officer" width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CTO and Employee Journey&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%2Fhss723cuo396uxcg9m53.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%2Fhss723cuo396uxcg9m53.png" alt="CTO BOOK" width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>It's Time to Take a Stand - #COVID19 Ergonomics Design Challenge</title>
      <dc:creator>Padmaraj Nidagundi</dc:creator>
      <pubDate>Tue, 14 Apr 2020 08:35:30 +0000</pubDate>
      <link>https://dev.to/padmarajnidagundi/it-s-time-to-take-a-stand-covid19-ergonomics-design-challenge-53ad</link>
      <guid>https://dev.to/padmarajnidagundi/it-s-time-to-take-a-stand-covid19-ergonomics-design-challenge-53ad</guid>
      <description>&lt;p&gt;Due to #COVID19 maximum people working from home with laptop and computers. Today I challenge everyone you to create your own standing desk in the home using hashtags #MyStandingDesk #Jugada #ReverseEngineering&lt;/p&gt;

&lt;p&gt;Creating own Standing Desk in the home using existing home tables or furniture is not an impossible task. Just look around in your home, and you get many small tables and furniture items that help you to set up your own Standing Desk. &lt;/p&gt;

&lt;h1&gt;
  
  
  COVID19 Ergonomics Design Challenge ( Desi Jugada )
&lt;/h1&gt;

&lt;p&gt;Benefits of Using a Standing Desk&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Standing Lowers Your Risk Of Weight Gain And Obesity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using A Standing Desk May Lower Blood Sugar Levels&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standing May Lower Your Risk Of Heart Disease&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standing Desks Appear To Reduce Back Pain&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standing Desks Help Improve Mood And Energy Levels&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standing Desks May Even Boost Productivity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standing More May Help You Live Longer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep Your Back Correctly Straight While Raising Your Neck To Prevent Neck Pain&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More Calories Burned&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Less Back Pain&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More Productive&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improve Mood And Gain Energy&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Work Smarter. Feel Better. &lt;a href="https://www.linkedin.com/pulse/create-your-own-standing-desk-in-home-challenge-padmaraj-nidagundi/" rel="noopener noreferrer"&gt;https://www.linkedin.com/pulse/create-your-own-standing-desk-in-home-challenge-padmaraj-nidagundi/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
