<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Parithi's Stack]]></title><description><![CDATA[Real-world engineering lessons and tutorials for developers who love going beyond the surface.]]></description><link>https://parithi.com</link><image><url>https://substackcdn.com/image/fetch/$s_!ZLu-!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a172a11-7919-4799-b37f-c691284d5af5_584x584.png</url><title>Parithi&apos;s Stack</title><link>https://parithi.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 19 Jun 2026 17:49:06 GMT</lastBuildDate><atom:link href="https://parithi.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[ElamParithi Arul]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[parithi@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[parithi@substack.com]]></itunes:email><itunes:name><![CDATA[ElamParithi Arul]]></itunes:name></itunes:owner><itunes:author><![CDATA[ElamParithi Arul]]></itunes:author><googleplay:owner><![CDATA[parithi@substack.com]]></googleplay:owner><googleplay:email><![CDATA[parithi@substack.com]]></googleplay:email><googleplay:author><![CDATA[ElamParithi Arul]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[@StateObject vs @ObservedObject]]></title><description><![CDATA[Confused about when to use @StateObject or @ObservedObject? Let's unravel this mystery with a tale of cats and dogs! &#128049;&#128054;]]></description><link>https://parithi.com/p/stateobject-vs-observedobject</link><guid isPermaLink="false">https://parithi.com/p/stateobject-vs-observedobject</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Fri, 19 Jun 2026 11:39:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!a4y2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128561; The Problem: Using @ObservedObject for locally created view models can lead to unexpected resets. It's like trying to pet a cat - sometimes it's there, sometimes it vanishes!</p><p>&#127881; The Solution: @StateObject keeps your view model as loyal as a dog, sticking around no matter how many times the view redraws.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://parithi.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Parithi&#8217;s Newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>&#129504; Key Takeaways:</p><p>1&#65039;&#8419; Use @StateObject when you create the ObservableObject inside the view</p><p>2&#65039;&#8419; Use @ObservedObject for objects passed into the view </p><p>3&#65039;&#8419; @StateObject ensures object lifecycle tied to the view lifecycle </p><p>4&#65039;&#8419; @ObservedObject assumes external lifecycle management</p><p>&#128161; Pro Tips:</p><p>&#183; @StateObject is like a lazy var for ObservableObjects in SwiftUI</p><p>&#183; Only use @StateObject in one place to avoid lifecycle conflicts</p><p>&#183; @Published properties auto-trigger view updates (or use objectWillChange.send() manually)</p><p>&#128640; Remember: @StateObject saves you from unexpected resets in complex view hierarchies!</p><p>Found this enlightening? Let's connect and explore more SwiftUI intricacies!</p><p>hashtag#SwiftUI hashtag#iOSDev hashtag#StateObject hashtag#ObservedObject hashtag#CodingTips</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a4y2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a4y2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 424w, https://substackcdn.com/image/fetch/$s_!a4y2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 848w, https://substackcdn.com/image/fetch/$s_!a4y2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 1272w, https://substackcdn.com/image/fetch/$s_!a4y2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a4y2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png" width="1456" height="1841" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1841,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2449359,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a4y2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 424w, https://substackcdn.com/image/fetch/$s_!a4y2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 848w, https://substackcdn.com/image/fetch/$s_!a4y2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 1272w, https://substackcdn.com/image/fetch/$s_!a4y2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb788767-8ac8-4a98-9220-c0bcdbd3048b_3388x4284.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://parithi.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Parithi&#8217;s Newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Fix-It-Yourself! Brother Printer “Print Unable 0A” Error]]></title><description><![CDATA[Hello Everyone,]]></description><link>https://parithi.com/p/fix-it-yourself-brother-printer-print-unable-0a-error-d1094cea3530</link><guid isPermaLink="false">https://parithi.com/p/fix-it-yourself-brother-printer-print-unable-0a-error-d1094cea3530</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Sun, 27 Dec 2020 23:11:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f3889d6f-4882-4248-bc6b-cf2fb818364a_1101x857.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://medium.com/parithi/fix-it-yourself-brother-printer-print-unable-0a-error-d1094cea3530?source=rss----58371e8dff8e---4" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g-19!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 424w, https://substackcdn.com/image/fetch/$s_!g-19!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 848w, https://substackcdn.com/image/fetch/$s_!g-19!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 1272w, https://substackcdn.com/image/fetch/$s_!g-19!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g-19!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/parithi/fix-it-yourself-brother-printer-print-unable-0a-error-d1094cea3530?source=rss----58371e8dff8e---4&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g-19!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 424w, https://substackcdn.com/image/fetch/$s_!g-19!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 848w, https://substackcdn.com/image/fetch/$s_!g-19!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 1272w, https://substackcdn.com/image/fetch/$s_!g-19!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1895c818-0fa3-4e04-aa49-b1ce92f6d421_1101x857.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>Hello Everyone,</p><p><a href="https://medium.com/parithi/fix-it-yourself-brother-printer-print-unable-0a-error-d1094cea3530?source=rss----58371e8dff8e---4">Continue reading on helloParithi &#187;</a></p>]]></content:encoded></item><item><title><![CDATA[How to build a Responsive Login Form using Ionic 4]]></title><description><![CDATA[Hey guys, Welcome back!]]></description><link>https://parithi.com/p/how-to-build-a-responsive-login-form-using-ionic-4-7a74b776884d</link><guid isPermaLink="false">https://parithi.com/p/how-to-build-a-responsive-login-form-using-ionic-4-7a74b776884d</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Sun, 09 Aug 2020 20:59:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4ed4c4f1-4adc-4d11-9382-1e4c850ade90_1012x662.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://medium.com/parithi/how-to-build-a-responsive-login-form-using-ionic-4-7a74b776884d?source=rss----58371e8dff8e---4" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O_qR!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 424w, https://substackcdn.com/image/fetch/$s_!O_qR!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 848w, https://substackcdn.com/image/fetch/$s_!O_qR!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 1272w, https://substackcdn.com/image/fetch/$s_!O_qR!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O_qR!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/parithi/how-to-build-a-responsive-login-form-using-ionic-4-7a74b776884d?source=rss----58371e8dff8e---4&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O_qR!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 424w, https://substackcdn.com/image/fetch/$s_!O_qR!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 848w, https://substackcdn.com/image/fetch/$s_!O_qR!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 1272w, https://substackcdn.com/image/fetch/$s_!O_qR!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F442cfd45-677d-44a3-9107-39cb211cff8c_1012x662.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>Hey guys, Welcome back!</p><p><a href="https://medium.com/parithi/how-to-build-a-responsive-login-form-using-ionic-4-7a74b776884d?source=rss----58371e8dff8e---4">Continue reading on helloParithi &#187;</a></p>]]></content:encoded></item><item><title><![CDATA[Solution for TransformException]]></title><description><![CDATA[So, this week in one of our projects, I had been working in integrating the YouTube API in our app.]]></description><link>https://parithi.com/p/solution-for-transformexception-79198de9ce34</link><guid isPermaLink="false">https://parithi.com/p/solution-for-transformexception-79198de9ce34</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Sun, 09 Aug 2020 20:40:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/36c32fad-51b0-4923-b458-517c8e6b58f7_791x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So, this week in one of our projects, I had been working in integrating the YouTube API in our app. And of the things I had in that was to add Google Play Services API as a part of it. The integration was complete, everything ran fine but at the end while generating the APK, we got stuck with this&nbsp;error.</p><pre><code>:app:transformClassesWithJarMergingForDebug'.
com.android.build.transform.api.TransformException: java.util.zip.ZipException: duplicate entry: 
/some/package/name/containing/SomeClass.class</code></pre><p>Are you facing this error on your Android Project&nbsp;too?</p><p>I tried a few things to fix&nbsp;this,</p><p>First, I tried to clean up the dependencies based on a few sources from StackOverflow. To do this, Goto your project&#8217;s root folder and run the following&nbsp;:</p><pre><code>./gradlew clean</code></pre><p>But that didn&#8217;t help me&nbsp;out.</p><h4>The Solution that&nbsp;worked,</h4><p>This error is likely to occur if two or more of your dependencies have the same class in the package as other packages. To find that out, You could run the following command from your root project folder&nbsp;:</p><pre><code>./gradlew dependencies</code></pre><p>Or you can install the plugin &#8220;Android Methods Count&#8221;, by going to Android Studio &gt; Preferences &gt; Plugins. Type &#8220;Android Methods Count&#8221; and click &#8220;browse&#8221; below. On the popup that opens up, Click &#8220;Android Methods Count&#8221; and click &#8220;Install Plugin&#8221; at the&nbsp;side.</p><p>This will enable you to view the dependencies that your dependencies depend upon and will help you to exclude the dependencies that may have already&nbsp;added.</p><p>A clue would be the class path that you get in the error&nbsp;:</p><pre><code>:app:transformClassesWithJarMergingForDebug'.
com.android.build.transform.api.TransformException: java.util.zip.ZipException: duplicate entry:
com/google/common/base/FinalizableReference.java</code></pre><p>In the error that I&#8217;ve got, we could see that the &#8220;FinalizableReference.java&#8221; is a part of the Guava Library by Google. To rectify this error, we need to look up for the dependencies that use the guava library and exclude&nbsp;it.</p><p>To find that out, goto your build.gradle file and check the dependencies by hovering over the blue circle to the left of th &#8220;compile&#8230;&#8221; code blocks. A tooltip will popup with the dependencies that are you used by your dependency package. In my&nbsp;case,</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!621r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!621r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 424w, https://substackcdn.com/image/fetch/$s_!621r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 848w, https://substackcdn.com/image/fetch/$s_!621r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 1272w, https://substackcdn.com/image/fetch/$s_!621r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!621r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8162ef25-f991-41cb-83a0-01217d554761_791x330.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!621r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 424w, https://substackcdn.com/image/fetch/$s_!621r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 848w, https://substackcdn.com/image/fetch/$s_!621r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 1272w, https://substackcdn.com/image/fetch/$s_!621r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8162ef25-f991-41cb-83a0-01217d554761_791x330.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">A screenshot from Android&nbsp;Studio</figcaption></figure></div><p>As you can see here, &#8216;<em>com.google.apis:google-api-services-youtube:v3-rev175&#8211;1.22.0</em>&#8217; is using the module &#8216;<em>guava-jdk5</em>&#8217;. So by excluding that&nbsp;module,</p><pre><code>compile ('com.google.apis:google-api-services-youtube:v3-rev175-1.22.0'){
    exclude module: 'guava-jdk5'
}</code></pre><p>By excluding this, I was able to fix this&nbsp;error.</p><p>Hope this helps you in rectifying yours. Let me know in the comments if you have any questions.</p><p>Happy coding&nbsp;:)</p><div><hr></div><p><a href="https://medium.com/parithi/solution-for-transformexception-79198de9ce34">Solution for TransformException</a> was originally published in <a href="https://medium.com/parithi">helloParithi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Jetty ALPN/NPN has not been properly configured — Solution]]></title><description><![CDATA[I&#8217;ve been working on this web app where we need to upload an image from a webcam or a local file from the system and determine whether that the image is safe to be used as a profile picture.]]></description><link>https://parithi.com/p/jetty-alpn-npn-has-not-been-properly-configured-solution-418417ee6502</link><guid isPermaLink="false">https://parithi.com/p/jetty-alpn-npn-has-not-been-properly-configured-solution-418417ee6502</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Sun, 09 Aug 2020 20:40:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5abae2d0-9244-4fa7-82ac-4df4b2e4a697_1014x658.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been working on this web app where we need to upload an image from a webcam or a local file from the system and determine whether that the image is safe to be used as a profile&nbsp;picture.</p><p>Stack for this web app requires that it should run on Tomcat 7 and therefore we had write them as Java Servlets. We need the Google Vision API to determine whether the image is suitable by checking whether the labels returned by the API are congruous with a set of predefined tags that we have. To add the Google Vision API, we added the following to our maven &#8216;pom.xml&#8217;&nbsp;:</p><pre><code>&lt;dependency&gt;
    &lt;groupId&gt;com.google.cloud&lt;/groupId&gt;
    &lt;artifactId&gt;google-cloud-vision&lt;/artifactId&gt;
    &lt;version&gt;0.17.2-beta&lt;/version&gt;
&lt;/dependency&gt;</code></pre><p>and Bam! I got the following error popping up from within the Google API on&nbsp;runtime:</p><pre><code>Jetty ALPN/NPN has not been properly configured</code></pre><p>Google API uses the HTTP/2 protocol for executing which is still not supported by the old Tomcat servers. In order to fix this, we need to configure an ALPN client that matches our JDK version for our&nbsp;project.</p><p>You can read more about it in the following link&nbsp;:</p><p><a href="https://www.eclipse.org/jetty/documentation/9.4.x/alpn-chapter.html">Chapter 15. Application Layer Protocol Negotiation (ALPN)</a></p><p>To fix our issue, we need to download the appropriate ALPN client (I downloaded a jar file) from the maven repository here (Version&#8202;&#8212;&#8202;<a href="https://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot/8.1.4.v20150727">8.1.4.v20150727</a> as my JDK version was 1.8.0u51)&nbsp;:</p><p><a href="https://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot/8.1.4.v20150727">Maven Repository: org.mortbay.jetty.alpn " alpn-boot " 8.1.4.v20150727</a></p><p>After downloading the jar, you need to go to the Tomcat Server settings in eclipse and add the ALPN jar file as one of the bootstrap entries for your server. Find a similar way to add it to your classpath if you are using any other&nbsp;IDE.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PyGB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PyGB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 424w, https://substackcdn.com/image/fetch/$s_!PyGB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 848w, https://substackcdn.com/image/fetch/$s_!PyGB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 1272w, https://substackcdn.com/image/fetch/$s_!PyGB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PyGB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!PyGB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 424w, https://substackcdn.com/image/fetch/$s_!PyGB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 848w, https://substackcdn.com/image/fetch/$s_!PyGB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 1272w, https://substackcdn.com/image/fetch/$s_!PyGB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7990afae-ce33-499f-b1d1-d260489da42e_1014x658.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That should fix the issue, you should probably getting it working after you add&nbsp;this.</p><h3>During Deployment&nbsp;:</h3><p>Add the alpn-client jar to a folder and add it to the $CLASSPATH of your tomcat server. I&#8217;ve set the $CLASSPATH at /usr/local/apache-tomcat-XXXX/bin folder where I&#8217;ve created a file called &#8216;setenv.sh&#8217; and this is what it contains:</p><pre><code>CATALINA_OPTS="-DGOOGLE_APPLICATION_CREDENTIALS=/home/parithi/google_credentials.json"</code></pre><pre><code>CLASSPATH="$CLASSPATH:/home/parithi/MY_PROJECT_FOLDER/:/home/parithi/alpn-boot-7.1.3.v20150130.jar"</code></pre><p>Thanks for your time, if you have any questions, feel free to leave a comment below. And if this article helped you out, please show your support by hitting the like&nbsp;button.</p><div><hr></div><p><a href="https://medium.com/parithi/jetty-alpn-npn-has-not-been-properly-configured-solution-418417ee6502">Jetty ALPN/NPN has not been properly configured &#8212; Solution</a> was originally published in <a href="https://medium.com/parithi">helloParithi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Build an AR App using JPCT-AE & Vuforia 7 on Android under 10 minutes!]]></title><description><![CDATA[The rise of Augmented Reality apps are gaining momentum in all fields these days and it&#8217;s good to have some experience building them.]]></description><link>https://parithi.com/p/build-an-ar-app-using-jpct-ae-vuforia-7-on-android-under-10-minutes-fcff6cd5ad76</link><guid isPermaLink="false">https://parithi.com/p/build-an-ar-app-using-jpct-ae-vuforia-7-on-android-under-10-minutes-fcff6cd5ad76</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Sun, 09 Aug 2020 20:40:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/347f9c74-fc08-4dd7-b4de-11b7dab7fecd_1172x444.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://medium.com/parithi/build-an-ar-app-using-jpct-ae-vuforia-7-on-android-under-10-minutes-fcff6cd5ad76?source=rss----58371e8dff8e---4" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RkZH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 424w, https://substackcdn.com/image/fetch/$s_!RkZH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 848w, https://substackcdn.com/image/fetch/$s_!RkZH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 1272w, https://substackcdn.com/image/fetch/$s_!RkZH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RkZH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/parithi/build-an-ar-app-using-jpct-ae-vuforia-7-on-android-under-10-minutes-fcff6cd5ad76?source=rss----58371e8dff8e---4&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RkZH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 424w, https://substackcdn.com/image/fetch/$s_!RkZH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 848w, https://substackcdn.com/image/fetch/$s_!RkZH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 1272w, https://substackcdn.com/image/fetch/$s_!RkZH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc01802-e85e-4868-a50f-59f3f03839b5_1172x444.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>The rise of Augmented Reality apps are gaining momentum in all fields these days and it&#8217;s good to have some experience building them. And&#8230;</p><p><a href="https://medium.com/parithi/build-an-ar-app-using-jpct-ae-vuforia-7-on-android-under-10-minutes-fcff6cd5ad76?source=rss----58371e8dff8e---4">Continue reading on helloParithi &#187;</a></p>]]></content:encoded></item><item><title><![CDATA[RecyclerView — IndexOutOfBoundsException — Inconsistency detected]]></title><description><![CDATA[Solution for RecyclerView &#8212; IndexOutOfBoundsException &#8212; Inconsistency detected]]></description><link>https://parithi.com/p/recyclerview-indexoutofboundsexception-inconsistency-detected-1fc71a5834f2</link><guid isPermaLink="false">https://parithi.com/p/recyclerview-indexoutofboundsexception-inconsistency-detected-1fc71a5834f2</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Sun, 09 Aug 2020 20:38:53 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Solution for RecyclerView&#8202;&#8212;&#8202;IndexOutOfBoundsException&#8202;&#8212;&#8202;Inconsistency detected</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 424w, https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 848w, https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 1272w, https://cdn-images-1.medium.com/max/1024/1*tNa6Nnn7Ffq8uDEomL_pWw.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Hey guys!</p><p>If you are working with recycler views on Android, you might be encountering this dreaded error: IndexOutOfBoundsException&#8202;&#8212;&#8202;Inconsistency detected. Invalid Item ## Item Position, etc. Let&#8217;s see a few ways to fix&nbsp;this.</p><h3>Understand why this&nbsp;happens</h3><p>When the user scrolls your recycler view while the data is being changed on the list (maybe because you are adding/removing elements in the background because of pull to refresh or because of pagination or some background sync process), the ViewHolder loses the reference to the item on the recycler view and the item on the data&nbsp;list.</p><h4>Solutions</h4><ol><li><p>Make sure you are finished with updating the data on the list and only then, on the main thread, notify the recycler view&#8217;s adapter using notifyDataSetChanged()&nbsp;.</p></li></ol><p>2. If you are modifying the list using the&nbsp;.add()&nbsp;, addAll()&nbsp;, remove()&nbsp;, removeAll()&nbsp;, make the process is synchronized before notifying the recycler view&#8217;s adapter. (Or) Create a temporary list to contain your new data and set it directly to your main list attached to your&nbsp;adapter.</p><p>Example, if you are modifying your list like this&nbsp;:</p><pre><code>val dataList : MutableList&lt;Person&gt; = listOf() // --&gt; used by your recyclerview for showing the list
..
..
val personData = getPersons()
..
..
dataList.addAll(personData())
dataList.add(Person(name="Parithi"))
..
..
recyclerView.adapter?.notifyDataSetChanged()</code></pre><p>Change the code into this&nbsp;:</p><pre><code>val dataList : MutableList&lt;Person&gt; = listOf() // --&gt; used by your recyclerview for showing the list
..
..
// create a temporary list
val temporaryList : MutableList&lt;Person&gt; = listOf() 
val personData = getPersons()
..
..
temporaryList.addAll(personData())
temporaryList.add(Person(name="Parithi"))
..
..
dataList = temporaryList // set it to the main list
recyclerView.adapter?.notifyDataSetChanged()</code></pre><h4>Solutions that may work but not recommended&#8202;&#8212;&#8202;will affect UI experience</h4><ol><li><p>Clear the recyclerview&#8217;s cache usingrecyclerView.getRecycledViewPool().clear();</p></li><li><p>Disable the scrolling on the recycler view when the data is being updated by overriding the&nbsp;onTouch.</p></li></ol><p>Hope this article, helped you fix the issue. Thanks for reading and Happy Coding&nbsp;:)</p><div><hr></div><p><a href="https://medium.com/parithi/recyclerview-indexoutofboundsexception-inconsistency-detected-1fc71a5834f2">RecyclerView&#8202;&#8212;&#8202;IndexOutOfBoundsException&#8202;&#8212;&#8202;Inconsistency detected</a> was originally published in <a href="https://medium.com/parithi">helloParithi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Have a MacBook Air? Here’s a quick tip to popup your display]]></title><description><![CDATA[This nifty trick is actually from MacRumors but unfortunately, this valuable tip has a dead link on their website.]]></description><link>https://parithi.com/p/have-a-macbook-air-heres-a-quick-tip-to-popup-your-display-30bc325fc8de</link><guid isPermaLink="false">https://parithi.com/p/have-a-macbook-air-heres-a-quick-tip-to-popup-your-display-30bc325fc8de</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Mon, 26 Jun 2017 12:24:29 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://medium.com/parithi/have-a-macbook-air-heres-a-quick-tip-to-popup-your-display-30bc325fc8de?source=rss----58371e8dff8e---4" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 424w, https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 848w, https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 1272w, https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/parithi/have-a-macbook-air-heres-a-quick-tip-to-popup-your-display-30bc325fc8de?source=rss----58371e8dff8e---4&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 424w, https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 848w, https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 1272w, https://cdn-images-1.medium.com/max/2600/1*50DiUL4GxHJ_vr-FTuynLQ.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>This nifty trick is actually from MacRumors but unfortunately, this valuable tip has a dead link on their website. The MacBook Air&#8217;s&#8230;</p><p><a href="https://medium.com/parithi/have-a-macbook-air-heres-a-quick-tip-to-popup-your-display-30bc325fc8de?source=rss----58371e8dff8e---4">Continue reading on helloParithi &#187;</a></p>]]></content:encoded></item><item><title><![CDATA[Indian Train Simulator — Review]]></title><description><![CDATA[When I was doing my PG diploma on Game Development at ICAT, I used to wonder at the lack of really good games made by Indian game studios&#8230;]]></description><link>https://parithi.com/p/indian-train-simulator-review-498b29e951cc</link><guid isPermaLink="false">https://parithi.com/p/indian-train-simulator-review-498b29e951cc</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Mon, 03 Apr 2017 08:41:10 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://medium.com/parithi/indian-train-simulator-review-498b29e951cc?source=rss----58371e8dff8e---4" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 424w, https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 848w, https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 1272w, https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/parithi/indian-train-simulator-review-498b29e951cc?source=rss----58371e8dff8e---4&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 424w, https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 848w, https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 1272w, https://cdn-images-1.medium.com/max/1334/1*GdjdFtgeNTiFYWnNjxsUMg@2x.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>When I was doing my PG diploma on Game Development at ICAT, I used to wonder at the lack of really good games made by Indian game studios&#8230;</p><p><a href="https://medium.com/parithi/indian-train-simulator-review-498b29e951cc?source=rss----58371e8dff8e---4">Continue reading on helloParithi &#187;</a></p>]]></content:encoded></item><item><title><![CDATA[How to send more than 10 media files on Whatsapp (iOS)]]></title><description><![CDATA[We&#8217;ve all been to that point where we had to send more than 10 media files (photos, audio, video, documents) from our Photos App on our iPhones or while forwarding a bunch of such files we got from a contact to another.]]></description><link>https://parithi.com/p/how-to-send-more-than-10-media-files-on-whatsapp-ios-6bfec79e7b60</link><guid isPermaLink="false">https://parithi.com/p/how-to-send-more-than-10-media-files-on-whatsapp-ios-6bfec79e7b60</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Tue, 27 Dec 2016 07:35:12 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 424w, https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 848w, https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 1272w, https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 424w, https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 848w, https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 1272w, https://cdn-images-1.medium.com/max/375/1*UPN4jw4sQHLxzW7AkFwC2g@2x.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">A screenshot showing WhatsApp can send more than 20 media&nbsp;files</figcaption></figure></div><p>We&#8217;ve all been to that point where we had to send more than 10 media files (photos, audio, video, documents) from our Photos App on our iPhones or while forwarding a bunch of such files we got from a contact to&nbsp;another.</p><p>And you might have noticed that Whatsapp&#8217;s share functionality gets disabled when you tried to forward more than 10 messages containing media or that the Whatsapp icon doesn&#8217;t appear when you try to share those files from the Photos&nbsp;App.</p><p>Well, there&#8217;s a workaround.</p><p>Please note&nbsp;:</p><ol><li><p>This will only work as long as the Whatsapp Team hasn&#8217;t fixed this&nbsp;issue.</p></li><li><p>This will only work only if you received the media files from another contact or when you have send those files to&nbsp;someone.</p></li><li><p>This works only in&nbsp;iOS.</p></li></ol><h3>Solution</h3><p>To this&nbsp;working,</p><ol><li><p>Open the contact in Whatsapp to whom you have sent the files to / received the files&nbsp;from.</p></li><li><p>Click on &#8216;Media, Links and&nbsp;Docs&#8217;.</p></li><li><p>Here you can click on all the items that you want to forward and then press the &#8216;Share&#8217; button on the&nbsp;bottom.</p></li><li><p>Scroll the apps on the list and you can find &#8216;Forward XX messages&#8217; with the Whatsapp&nbsp;icon.</p></li><li><p>And thats it!&nbsp;Enjoy!</p></li></ol><div><hr></div><p><a href="https://medium.com/parithi/how-to-send-more-than-10-media-files-on-whatsapp-ios-6bfec79e7b60">How to send more than 10 media files on Whatsapp (iOS)</a> was originally published in <a href="https://medium.com/parithi">helloParithi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Emulate any Gamepad as an Xbox 360/One Controller — Tutorial]]></title><description><![CDATA[Update for Windows 8/10 users : The download which I&#8217;ve given doesn&#8217;t seem to work on a few games that are running in Windows 8.]]></description><link>https://parithi.com/p/emulate-any-gamepad-as-an-xbox-360-one-controller-tutorial-1436f89bf8e0</link><guid isPermaLink="false">https://parithi.com/p/emulate-any-gamepad-as-an-xbox-360-one-controller-tutorial-1436f89bf8e0</guid><dc:creator><![CDATA[ElamParithi Arul]]></dc:creator><pubDate>Wed, 07 Dec 2016 07:27:35 GMT</pubDate><enclosure url="https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://medium.com/parithi/emulate-any-gamepad-as-an-xbox-360-one-controller-tutorial-1436f89bf8e0?source=rss----58371e8dff8e---4" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 424w, https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 848w, https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 1272w, https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 1456w" sizes="100vw"><img src="https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png" data-attrs="{&quot;src&quot;:&quot;https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/parithi/emulate-any-gamepad-as-an-xbox-360-one-controller-tutorial-1436f89bf8e0?source=rss----58371e8dff8e---4&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 424w, https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 848w, https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 1272w, https://cdn-images-1.medium.com/max/675/0*Szww85gHO9EcsWaq.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>Update for Windows 8/10 users : The download which I&#8217;ve given doesn&#8217;t seem to work on a few games that are running in Windows 8. If you&#8230;</p><p><a href="https://medium.com/parithi/emulate-any-gamepad-as-an-xbox-360-one-controller-tutorial-1436f89bf8e0?source=rss----58371e8dff8e---4">Continue reading on helloParithi &#187;</a></p>]]></content:encoded></item></channel></rss>