<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>An infatuation for breaking things</title>
    <link>https://boopathi.blog</link>
    <description>Notes and Scribblings from a web developer with unhealthy interests in JavaScript, GraphQL, and others</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 30 Mar 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://boopathi.blog/feed.xml" rel="self" type="application/rss+xml"/>
    
    <item>
      <title>Hotfixes for Shipped Apps with GraphQL Query Overrides</title>
      <link>https://boopathi.blog/hotfixes-for-shipped-apps-with-graphql-query-overrides</link>
      <guid isPermaLink="true">https://boopathi.blog/hotfixes-for-shipped-apps-with-graphql-query-overrides</guid>
      <description>Persisted query overrides let us re-route a query ID to a different compatible query in production, without changing the client.</description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Zalando</category>
    </item>

    <item>
      <title>Memoizing an n-ary function in TypeScript</title>
      <link>https://boopathi.blog/memoizing-an-n-ary-function-in-typescript</link>
      <guid isPermaLink="true">https://boopathi.blog/memoizing-an-n-ary-function-in-typescript</guid>
      <description>In this post, I talk about an approach to memoizing a n-ary function in JavaScript / TypeScript preserving the flow of types.</description>
      <pubDate>Thu, 03 Feb 2022 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>TypeScript</category>
      <category>JavaScript</category>
      <category>Optimization</category>
    </item>

    <item>
      <title>GraphQL directives - an introduction</title>
      <link>https://boopathi.blog/graphql-directives-an-introduction</link>
      <guid isPermaLink="true">https://boopathi.blog/graphql-directives-an-introduction</guid>
      <description>This post gives an introduction to GraphQL directives, how to create custom ones, explains the different locations where directives can be used, and goes over some use-cases of directives.</description>
      <pubDate>Wed, 02 Feb 2022 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
    </item>

    <item>
      <title>How to avoid logging sensitive data in GraphQL</title>
      <link>https://boopathi.blog/how-to-avoid-logging-sensitive-data-in-graphql</link>
      <guid isPermaLink="true">https://boopathi.blog/how-to-avoid-logging-sensitive-data-in-graphql</guid>
      <description>Metrics, Logging, and Tracing are some primary forms of monitoring we use in our services. In this post, I talk about how we can leverage the power of GraphQL to prevent sensitive information ending up in these monitoring tools.</description>
      <pubDate>Sat, 29 Jan 2022 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Optimization</category>
      <category>JavaScript</category>
      <category>Sensitive Data</category>
    </item>

    <item>
      <title>GraphQL persisted queries and schema stability</title>
      <link>https://boopathi.blog/graphql-persisted-queries-and-schema-stability</link>
      <guid isPermaLink="true">https://boopathi.blog/graphql-persisted-queries-and-schema-stability</guid>
      <description>In this post, I cover the topics — GraphQL persisted queries at Zalando and how we define and think about different levels of stability of our GraphQL schema.</description>
      <pubDate>Sun, 14 Jun 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Design</category>
    </item>

    <item>
      <title>Modeling errors in GraphQL</title>
      <link>https://boopathi.blog/modeling-errors-in-graphql</link>
      <guid isPermaLink="true">https://boopathi.blog/modeling-errors-in-graphql</guid>
      <description>GraphQL excels in modeling data requirements. Modeling errors as schema types in GraphQL is required for certain kinds of errors. In this post, let&apos;s analyze some cases where errors contain structured data apart from the message and the location information.</description>
      <pubDate>Mon, 09 Mar 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Design</category>
    </item>

    <item>
      <title>TypeScript - Typing object paths</title>
      <link>https://boopathi.blog/typescript-typing-object-paths</link>
      <guid isPermaLink="true">https://boopathi.blog/typescript-typing-object-paths</guid>
      <description>In this post, I&apos;m going to use some features of TypeScript that are often considered &quot;advanced&quot;. In the first section, I&apos;ll mention most of the TypeScript features I&apos;m going to use and also point to their documentation for references. The post is about how we can get stricter types for Object Paths for different use-cases.</description>
      <pubDate>Wed, 04 Mar 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>TypeScript</category>
      <category>JavaScript</category>
    </item>

    <item>
      <title>Removing sensitive files from git</title>
      <link>https://boopathi.blog/removing-sensitive-files-from-git</link>
      <guid isPermaLink="true">https://boopathi.blog/removing-sensitive-files-from-git</guid>
      <description>If you&apos;ve some file committed to a git repository, and you&apos;d like to remove it, simply deleting the file and committing it again will not remove the file completely. It still lies in the git history. If you want to remove a file from git history, the history needs to be re-written. This post is about exactly doing that - rewriting git history such that the file to be removed stays removed.</description>
      <pubDate>Sun, 01 Mar 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>git</category>
    </item>

    <item>
      <title>GraphQL Optimization - Lookaheads - Prefetching</title>
      <link>https://boopathi.blog/graphql-optimization-lookaheads-prefetching</link>
      <guid isPermaLink="true">https://boopathi.blog/graphql-optimization-lookaheads-prefetching</guid>
      <description>In previous posts, we saw how to optimize data between GraphQL Server and a backend server using the concepts of lookaheads and field filtering. In this post, we are going to leverage look aheads for other forms of optimization - especially prefetching resources.</description>
      <pubDate>Sat, 22 Feb 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Optimization</category>
      <category>JavaScript</category>
    </item>

    <item>
      <title>GraphQL Optimization - Dataloaders</title>
      <link>https://boopathi.blog/graphql-optimization-dataloaders</link>
      <guid isPermaLink="true">https://boopathi.blog/graphql-optimization-dataloaders</guid>
      <description>In the previous posts, we saw how to optimize the data transfer between the GraphQL server and a data provider - backend server. In this post, I&apos;m going to talk about how we can handle the complexities we discussed in previous posts with a Dataloader</description>
      <pubDate>Wed, 19 Feb 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Optimization</category>
      <category>JavaScript</category>
    </item>

    <item>
      <title>GraphQL Optimization - Field Filtering</title>
      <link>https://boopathi.blog/graphql-optimization-field-filtering</link>
      <guid isPermaLink="true">https://boopathi.blog/graphql-optimization-field-filtering</guid>
      <description>In this post, we are going to take a look at one of the primary optimizations we can achieve by using GraphQL Lookaheds - Field filtering. We will dive deep into what the different complexities are for applying lookaheads to optimize data between GraphQL server and a backend server.</description>
      <pubDate>Tue, 18 Feb 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Optimization</category>
      <category>JavaScript</category>
    </item>

    <item>
      <title>GraphQL Optimization - Lookaheads</title>
      <link>https://boopathi.blog/graphql-optimization-lookaheads</link>
      <guid isPermaLink="true">https://boopathi.blog/graphql-optimization-lookaheads</guid>
      <description>GraphQL offers a way to optimize the data between a client and a server. We can use the declarative nature of a GraphQL query to perform lookaheads. Lookaheads provide us a way to optimize the data between the GraphQL server and a backend data provider - like a database or another server that can return partial responses.</description>
      <pubDate>Sun, 09 Feb 2020 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>GraphQL</category>
      <category>Optimization</category>
      <category>JavaScript</category>
    </item>

    <item>
      <title>Catch structural similarity of JavaScript code</title>
      <link>https://boopathi.blog/catch-structural-similarity-of-javascript-code</link>
      <guid isPermaLink="true">https://boopathi.blog/catch-structural-similarity-of-javascript-code</guid>
      <description>This post is about how do we detect some of the cases where we have possibly
    repeated code in the same project or across multiple projects. This code if
    necessary can be extracted into a common module so as to avoid fixing bugs
    multiple times.</description>
      <pubDate>Wed, 06 Nov 2019 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>JavaScript</category>
    </item>

    <item>
      <title>Modelling timers for the browser</title>
      <link>https://boopathi.blog/modelling-timers-for-the-browser</link>
      <guid isPermaLink="true">https://boopathi.blog/modelling-timers-for-the-browser</guid>
      <description>This post is about how to effectively model timers for the web and go through the shortcomings of each of those models.</description>
      <pubDate>Thu, 31 Oct 2019 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>browser</category>
      <category>timer</category>
    </item>

    <item>
      <title>The Graphite story @ Directi</title>
      <link>https://boopathi.blog/the-graphite-story-directi</link>
      <guid isPermaLink="true">https://boopathi.blog/the-graphite-story-directi</guid>
      <description>At Directi, we use graphite as one of our principal monitoring tools. This is a post about how we improved the Graphite setup at Directi.</description>
      <pubDate>Wed, 27 Mar 2013 00:00:00 GMT</pubDate>
      <author>me@boopathi.blog (Boopathi Rajaa)</author>
      <category>graphite</category>
      <category>devops</category>
    </item>
  </channel>
</rss>