<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Amrith Vengalath</title>
        <link>https://vengalath.com/</link>
        <description>Senior Software Engineer with 7 years of experience shipping production software across mobile and web with React Native, Flutter, Next.js, and Angular. Led a React Native New Architecture migration (v0.73 to v0.82), automated CI/CD with Fastlane &amp; GitHub Actions, and cut crash rates and load times by 40%.</description>
        <lastBuildDate>Sat, 13 Jun 2026 20:50:35 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>© 2026 Amrith Vengalath</copyright>
        <item>
            <title><![CDATA[Seven years shipping cross-platform apps: what I actually learned]]></title>
            <link>https://vengalath.com/blog/seven-years-shipping-cross-platform-apps-release-engineering-lessons/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/seven-years-shipping-cross-platform-apps-release-engineering-lessons/</guid>
            <pubDate>Tue, 21 Apr 2026 16:40:00 GMT</pubDate>
            <description><![CDATA[Less a tutorial, more a set of opinions earned the hard way. The things about building and shipping mobile apps that I believe now and didn't when I started, about release engineering, performance, and where time really goes.]]></description>
            <category>React Native</category>
            <category>Career</category>
            <category>Release Engineering</category>
        </item>
        <item>
            <title><![CDATA[React Native DevTools: debugging after Flipper]]></title>
            <link>https://vengalath.com/blog/react-native-devtools-debugging-in-the-new-architecture-era/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/react-native-devtools-debugging-in-the-new-architecture-era/</guid>
            <pubDate>Wed, 18 Mar 2026 11:20:00 GMT</pubDate>
            <description><![CDATA[The debugging story changed when Flipper was dropped and React Native DevTools became the default. What the new tools are good at, how I actually debug a React Native app day to day, and what I stopped reaching for.]]></description>
            <category>React Native</category>
            <category>Debugging</category>
            <category>DevTools</category>
        </item>
        <item>
            <title><![CDATA[End-to-end testing React Native with Maestro (and why we moved off Detox)]]></title>
            <link>https://vengalath.com/blog/end-to-end-testing-react-native-with-maestro/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/end-to-end-testing-react-native-with-maestro/</guid>
            <pubDate>Thu, 22 Jan 2026 12:45:00 GMT</pubDate>
            <description><![CDATA[E2E tests for mobile have a reputation for being flaky and miserable to maintain. Maestro changed that for us. What the flows look like, what it does well, and the honest limitations.]]></description>
            <category>React Native</category>
            <category>Testing</category>
            <category>Maestro</category>
            <category>Detox</category>
        </item>
        <item>
            <title><![CDATA[Upgrading React Native from 0.73 to 0.82: a survival guide]]></title>
            <link>https://vengalath.com/blog/upgrading-react-native-from-0-73-to-0-82-a-survival-guide/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/upgrading-react-native-from-0-73-to-0-82-a-survival-guide/</guid>
            <pubDate>Wed, 19 Nov 2025 15:30:00 GMT</pubDate>
            <description><![CDATA[Nine minor versions in one project. The strategy that kept it sane -  incremental not big-bang, the upgrade-helper diff, dependency triage, and turning on the New Architecture - plus the specific things that broke.]]></description>
            <category>React Native</category>
            <category>Upgrade</category>
            <category>New Architecture</category>
        </item>
        <item>
            <title><![CDATA[Keyboard Management in React Native: The Full Developer's Journey]]></title>
            <link>https://vengalath.com/blog/keyboard-management-in-react-native-the-full-developers-journey/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/keyboard-management-in-react-native-the-full-developers-journey/</guid>
            <pubDate>Thu, 25 Sep 2025 18:30:00 GMT</pubDate>
            <description><![CDATA[Discover how keyboard handling in React Native has transformed from clunky workarounds to fluid, cross-platform solutions.]]></description>
            <category>react-native</category>
        </item>
        <item>
            <title><![CDATA[Monetizing Your React Native App with In-App Purchases]]></title>
            <link>https://vengalath.com/blog/monetizing-your-react-native-app-with-in-app-purchases/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/monetizing-your-react-native-app-with-in-app-purchases/</guid>
            <pubDate>Thu, 18 Sep 2025 18:30:00 GMT</pubDate>
            <description><![CDATA[Learn how to effectively monetize your React Native app using in-app purchases.]]></description>
            <category>react-native</category>
        </item>
        <item>
            <title><![CDATA[Taming Visual Studio’s CPU Usage: A Lightweight Workflow for Angular + MVC + API Projects]]></title>
            <link>https://vengalath.com/blog/taming-visual-studios-cpu-usage-a-lightweight-workflow-for-angular-mvc-api-projects/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/taming-visual-studios-cpu-usage-a-lightweight-workflow-for-angular-mvc-api-projects/</guid>
            <pubDate>Thu, 11 Sep 2025 17:31:06 GMT</pubDate>
            <description><![CDATA[Struggling with high CPU usage in Visual Studio while running Angular + MVC + API projects? Learn how to reduce CPU load from 100% to under 30% by running M]]></description>
            <category>angularjs</category>
            <category>dot-net-development</category>
            <category>mvc</category>
            <category>web-development</category>
        </item>
        <item>
            <title><![CDATA[Offline-first React Native: data sync patterns that hold up]]></title>
            <link>https://vengalath.com/blog/offline-first-react-native-data-sync/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/offline-first-react-native-data-sync/</guid>
            <pubDate>Wed, 18 Jun 2025 13:05:00 GMT</pubDate>
            <description><![CDATA[Users get on the subway, the network drops, and your app should keep working. Building offline-first with a local database, an outbox for writes, and a sync strategy that survives conflicts - plus where the genuinely hard parts are.]]></description>
            <category>React Native</category>
            <category>Offline</category>
            <category>Realm</category>
            <category>WatermelonDB</category>
        </item>
        <item>
            <title><![CDATA[React 19 in React Native: what changed and what to watch]]></title>
            <link>https://vengalath.com/blog/react-19-in-react-native/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/react-19-in-react-native/</guid>
            <pubDate>Thu, 24 Apr 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[React Native shipped React 19. Most of it is quietly nice, some of it changes habits, and a couple of things will surface in your app on upgrade. A practical rundown for mobile developers.]]></description>
            <category>React Native</category>
            <category>React 19</category>
        </item>
        <item>
            <title><![CDATA[Life after App Center: choosing an OTA path as CodePush sunsets]]></title>
            <link>https://vengalath.com/blog/life-after-app-center-choosing-an-ota-path/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/life-after-app-center-choosing-an-ota-path/</guid>
            <pubDate>Thu, 13 Feb 2025 11:10:00 GMT</pubDate>
            <description><![CDATA[Microsoft is retiring App Center, which is where CodePush lived. If your app relies on over-the-air updates, here are the real options, how they differ, and how to think about the migration before the lights go out.]]></description>
            <category>React Native</category>
            <category>CodePush</category>
            <category>OTA</category>
            <category>Expo</category>
        </item>
        <item>
            <title><![CDATA[Migrating a custom native module to a TurboModule]]></title>
            <link>https://vengalath.com/blog/migrating-a-native-module-to-a-turbomodule/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/migrating-a-native-module-to-a-turbomodule/</guid>
            <pubDate>Wed, 11 Dec 2024 12:20:00 GMT</pubDate>
            <description><![CDATA[Taking an old bridge-style native module to the New Architecture: the spec file, codegen, and the iOS and Android changes - using a small real module as the worked example.]]></description>
            <category>React Native</category>
            <category>New Architecture</category>
            <category>TurboModules</category>
            <category>Native Modules</category>
        </item>
        <item>
            <title><![CDATA[React Native's New Architecture: what Fabric and TurboModules actually change]]></title>
            <link>https://vengalath.com/blog/new-architecture-what-fabric-and-turbomodules-change/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/new-architecture-what-fabric-and-turbomodules-change/</guid>
            <pubDate>Tue, 29 Oct 2024 15:15:00 GMT</pubDate>
            <description><![CDATA[The New Architecture is now the default. Past the buzzwords - Fabric, the JSI, TurboModules, codegen - here's what genuinely changes for app developers and what to check before you flip it on.]]></description>
            <category>React Native</category>
            <category>New Architecture</category>
            <category>Performance</category>
        </item>
        <item>
            <title><![CDATA[iOS code signing, explained by someone who hated it]]></title>
            <link>https://vengalath.com/blog/ios-code-signing-and-fastlane-match/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/ios-code-signing-and-fastlane-match/</guid>
            <pubDate>Wed, 21 Aug 2024 09:55:00 GMT</pubDate>
            <description><![CDATA[Certificates, provisioning profiles, identifiers, and why your build fails with a useless error. A mental model for iOS code signing, and how Fastlane match makes it stop being your problem.]]></description>
            <category>iOS</category>
            <category>Fastlane</category>
            <category>Code Signing</category>
            <category>CI/CD</category>
        </item>
        <item>
            <title><![CDATA[Taming Redux in a large codebase (and knowing when to drop it)]]></title>
            <link>https://vengalath.com/blog/taming-redux-in-a-large-codebase/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/taming-redux-in-a-large-codebase/</guid>
            <pubDate>Wed, 19 Jun 2024 13:40:00 GMT</pubDate>
            <description><![CDATA[Redux gets blamed for problems that are really about how it's used. What disciplined Redux looks like in a big React Native app, the boilerplate cure that is Redux Toolkit, and the honest question of whether you need it at all.]]></description>
            <category>React Native</category>
            <category>Redux</category>
            <category>Architecture</category>
        </item>
        <item>
            <title><![CDATA[Profiling React Native startup: Hermes, TTI, and chasing the cold start]]></title>
            <link>https://vengalath.com/blog/profiling-react-native-startup-hermes-and-tti/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/profiling-react-native-startup-hermes-and-tti/</guid>
            <pubDate>Wed, 17 Apr 2024 14:25:00 GMT</pubDate>
            <description><![CDATA[Cold-start time is the first impression your app makes, and it's measurable and fixable. How I profile React Native startup, what actually moves the needle, and the wins that are mostly free.]]></description>
            <category>React Native</category>
            <category>Performance</category>
            <category>Hermes</category>
        </item>
        <item>
            <title><![CDATA[OTA updates with CodePush: patterns, pitfalls, and rollback]]></title>
            <link>https://vengalath.com/blog/codepush-ota-patterns-pitfalls-and-rollback/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/codepush-ota-patterns-pitfalls-and-rollback/</guid>
            <pubDate>Wed, 21 Feb 2024 10:30:00 GMT</pubDate>
            <description><![CDATA[Over-the-air updates let you ship a JS fix in hours instead of waiting on app review. They also let you brick your app for everyone in minutes. How we used CodePush safely - staged rollout, mandatory rules, and automatic rollback.]]></description>
            <category>React Native</category>
            <category>CodePush</category>
            <category>OTA</category>
            <category>CI/CD</category>
        </item>
        <item>
            <title><![CDATA[Cutting our crash rate: a Sentry and Crashlytics triage workflow]]></title>
            <link>https://vengalath.com/blog/cutting-crash-rate-a-sentry-crashlytics-triage-workflow/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/cutting-crash-rate-a-sentry-crashlytics-triage-workflow/</guid>
            <pubDate>Thu, 14 Dec 2023 11:45:00 GMT</pubDate>
            <description><![CDATA[How we went from a crash-free rate we were embarrassed by to one we were proud of - not with one heroic fix, but with boring, repeatable triage. The process, the tooling, and what the numbers actually mean.]]></description>
            <category>React Native</category>
            <category>Sentry</category>
            <category>Crashlytics</category>
            <category>Performance</category>
        </item>
        <item>
            <title><![CDATA[Deep linking and universal links in React Native, end to end]]></title>
            <link>https://vengalath.com/blog/deep-linking-and-universal-links-end-to-end/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/deep-linking-and-universal-links-end-to-end/</guid>
            <pubDate>Wed, 25 Oct 2023 15:35:00 GMT</pubDate>
            <description><![CDATA[Getting a link like myapp.com/product/42 to open the right screen in your app, across cold starts, warm starts, iOS universal links and Android app links. The full picture, including the parts that silently fail.]]></description>
            <category>React Native</category>
            <category>Deep Linking</category>
            <category>iOS</category>
            <category>Android</category>
        </item>
        <item>
            <title><![CDATA[A Fastlane + GitHub Actions pipeline for iOS and Android, from zero]]></title>
            <link>https://vengalath.com/blog/fastlane-github-actions-ios-and-android-from-zero/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/fastlane-github-actions-ios-and-android-from-zero/</guid>
            <pubDate>Wed, 30 Aug 2023 10:10:00 GMT</pubDate>
            <description><![CDATA[Manual builds are where release days go to die. Here's the CI setup I use to go from a git tag to TestFlight and the Play Store internal track without touching Xcode or a terminal.]]></description>
            <category>React Native</category>
            <category>Fastlane</category>
            <category>GitHub Actions</category>
            <category>CI/CD</category>
        </item>
        <item>
            <title><![CDATA[How to share an iOS ipa file for installation over the air with custom domain server set up.]]></title>
            <link>https://vengalath.com/blog/how-to-share-an-ios-ipa-file-for-installation-over-the-air-with-custom-domain-server-set-up/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/how-to-share-an-ios-ipa-file-for-installation-over-the-air-with-custom-domain-server-set-up/</guid>
            <pubDate>Wed, 14 Jun 2023 06:42:58 GMT</pubDate>
            <description><![CDATA[To share an iOS IPA file for installation over the air with a custom domain server set up, we first need to prepare the build.]]></description>
            <category>ios-app-development</category>
            <category>ios</category>
        </item>
        <item>
            <title><![CDATA[Payments and push notifications in React Native: the parts that bite]]></title>
            <link>https://vengalath.com/blog/payments-and-push-notifications-in-react-native/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/payments-and-push-notifications-in-react-native/</guid>
            <pubDate>Mon, 22 May 2023 13:20:00 GMT</pubDate>
            <description><![CDATA[Two features every commerce app needs, and two features where the happy path in the docs hides the real work. Notes on getting payment gateways and push notifications to behave in production.]]></description>
            <category>React Native</category>
            <category>Payments</category>
            <category>Push Notifications</category>
            <category>Mobile app development</category>
        </item>
        <item>
            <title><![CDATA[Migrating to Reanimated 3: what actually changed]]></title>
            <link>https://vengalath.com/blog/migrating-to-reanimated-3/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/migrating-to-reanimated-3/</guid>
            <pubDate>Tue, 28 Mar 2023 14:50:00 GMT</pubDate>
            <description><![CDATA[Reanimated 3 is out and the upgrade from 2 is smaller than the version bump suggests - but there are a few real breaking changes and one dropped compatibility mode worth knowing before you bump the version.]]></description>
            <category>React Native</category>
            <category>Reanimated</category>
            <category>Animation</category>
        </item>
        <item>
            <title><![CDATA[Writing your first custom native module in React Native]]></title>
            <link>https://vengalath.com/blog/your-first-custom-native-module-the-bridge-way/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/your-first-custom-native-module-the-bridge-way/</guid>
            <pubDate>Mon, 12 Dec 2022 11:30:00 GMT</pubDate>
            <description><![CDATA[When no library exists for the native feature you need, you write the bridge yourself. A walkthrough of a simple iOS + Android native module and the gotchas that aren't in the docs.]]></description>
            <category>React Native</category>
            <category>Native Modules</category>
            <category>iOS</category>
            <category>Android</category>
        </item>
        <item>
            <title><![CDATA[Difference Between React Native and Flutter]]></title>
            <link>https://vengalath.com/blog/difference-between-react-native-and-flutter/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/difference-between-react-native-and-flutter/</guid>
            <pubDate>Mon, 14 Nov 2022 08:56:20 GMT</pubDate>
            <description><![CDATA[React Native and Flutter are both popular frameworks for building mobile apps, but they have some key differences.]]></description>
            <category>Mobile app development</category>
            <category>React Native</category>
            <category>Flutter</category>
        </item>
        <item>
            <title><![CDATA[Gesture-driven animations in React Native that don't drop frames]]></title>
            <link>https://vengalath.com/blog/reanimated-2-gestures-without-dropping-frames/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/reanimated-2-gestures-without-dropping-frames/</guid>
            <pubDate>Tue, 13 Sep 2022 16:05:00 GMT</pubDate>
            <description><![CDATA[Why animating through React state stutters, and how Reanimated 2 worklets and the gesture handler keep a draggable, swipeable UI running on the UI thread at 60fps.]]></description>
            <category>React Native</category>
            <category>Reanimated</category>
            <category>Animation</category>
        </item>
        <item>
            <title><![CDATA[Best Practices for Mobile App Development]]></title>
            <link>https://vengalath.com/blog/best-practices-for-mobile-app-development/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/best-practices-for-mobile-app-development/</guid>
            <pubDate>Thu, 21 Jul 2022 07:25:06 GMT</pubDate>
            <description><![CDATA[Mobile app development is a constantly evolving field, and it can be difficult to keep up with the latest best practices.]]></description>
            <category>Mobile app development</category>
        </item>
        <item>
            <title><![CDATA[Best Practices for React Native Development]]></title>
            <link>https://vengalath.com/blog/best-practices-for-react-native-development/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/best-practices-for-react-native-development/</guid>
            <pubDate>Thu, 09 Jun 2022 07:35:06 GMT</pubDate>
            <description><![CDATA[React-Native is a popular framework for building mobile apps using JavaScript and React. Follow these best practices to ensure that your apps are efficient, maintainable, and free of bugs.]]></description>
            <category>Mobile app development</category>
        </item>
        <item>
            <title><![CDATA[Structuring navigation in a real app: nested stacks done right]]></title>
            <link>https://vengalath.com/blog/react-navigation-nested-stacks-in-a-real-app/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/react-navigation-nested-stacks-in-a-real-app/</guid>
            <pubDate>Tue, 19 Apr 2022 09:45:00 GMT</pubDate>
            <description><![CDATA[Tabs with their own histories, a login flow that sits outside everything, modals over the top - how to lay out React Navigation so it scales past the toy-example stage.]]></description>
            <category>React Native</category>
            <category>React Navigation</category>
            <category>Mobile app development</category>
        </item>
        <item>
            <title><![CDATA[From React on the web to React Native: what transfers, what doesn't]]></title>
            <link>https://vengalath.com/blog/from-react-web-to-react-native-what-transfers/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/from-react-web-to-react-native-what-transfers/</guid>
            <pubDate>Tue, 15 Feb 2022 10:20:00 GMT</pubDate>
            <description><![CDATA[Moving from React web to React Native, most of your React knowledge comes with you - but layout, navigation, and "it works on my machine" all change. A field guide for the jump.]]></description>
            <category>React Native</category>
            <category>React</category>
            <category>Mobile app development</category>
        </item>
        <item>
            <title><![CDATA[Log4j Solr THM]]></title>
            <link>https://vengalath.com/blog/log4j-solr-thm/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/log4j-solr-thm/</guid>
            <pubDate>Mon, 20 Dec 2021 22:34:04 GMT</pubDate>
            <description><![CDATA[Log4j]]></description>
            <category>Log4j</category>
            <category>Solr</category>
            <category>Notes</category>
            <category>log4j_thm</category>
        </item>
        <item>
            <title><![CDATA[From jQuery to React: what finally made components click]]></title>
            <link>https://vengalath.com/blog/from-jquery-to-react-my-first-components/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/from-jquery-to-react-my-first-components/</guid>
            <pubDate>Tue, 26 Oct 2021 20:15:00 GMT</pubDate>
            <description><![CDATA[I spent years building UIs by grabbing elements and poking at them with jQuery. Moving to React meant unlearning that habit. Here's the mental shift that finally made it make sense.]]></description>
            <category>React</category>
            <category>JavaScript</category>
            <category>Web</category>
        </item>
        <item>
            <title><![CDATA[Debounce vs throttle in JavaScript, with real examples]]></title>
            <link>https://vengalath.com/blog/debounce-and-throttle-in-javascript/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/debounce-and-throttle-in-javascript/</guid>
            <pubDate>Tue, 17 Aug 2021 17:55:00 GMT</pubDate>
            <description><![CDATA[Two functions that sound similar and get mixed up constantly. Here's the difference, when to reach for each, and small implementations you can read in one sitting.]]></description>
            <category>JavaScript</category>
            <category>Performance</category>
            <category>Web</category>
        </item>
        <item>
            <title><![CDATA[How to use gpg as ssh agent]]></title>
            <link>https://vengalath.com/blog/how-to-use-gpg-as-ssh-agent/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/how-to-use-gpg-as-ssh-agent/</guid>
            <pubDate>Sun, 27 Jun 2021 22:48:24 GMT</pubDate>
            <description><![CDATA[Enable the GPG-agent ssh support]]></description>
            <category>gpg</category>
            <category>ssh</category>
        </item>
        <item>
            <title><![CDATA[How to create a GPG key pair]]></title>
            <link>https://vengalath.com/blog/how-to-create-gpg-key-pair/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/how-to-create-gpg-key-pair/</guid>
            <pubDate>Thu, 24 Jun 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Here we will create a key to Certify and then create sub-keys to sign, encrypt and Authenticate.]]></description>
            <category>gpg</category>
            <category>pgp</category>
            <category>keys</category>
            <category>How to</category>
            <category>Cryptography</category>
        </item>
        <item>
            <title><![CDATA[Sending bulk email with AWS SES without landing in spam]]></title>
            <link>https://vengalath.com/blog/bulk-transactional-email-aws-ses/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/bulk-transactional-email-aws-ses/</guid>
            <pubDate>Thu, 08 Oct 2020 12:30:00 GMT</pubDate>
            <description><![CDATA[We needed to send order updates and the occasional newsletter to a few thousand users. Here's how I set up Amazon SES, and the SPF/DKIM/DMARC work that kept us out of the spam folder.]]></description>
            <category>AWS</category>
            <category>SES</category>
            <category>Email</category>
            <category>Web</category>
        </item>
        <item>
            <title><![CDATA[AWS CLI Usage]]></title>
            <link>https://vengalath.com/blog/aws-cli/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/aws-cli/</guid>
            <pubDate>Wed, 19 Aug 2020 13:15:00 GMT</pubDate>
            <description><![CDATA[AWS CLI Usage]]></description>
            <category>AWS</category>
            <category>AWS-CLI</category>
            <category>s3</category>
            <category>Notes</category>
        </item>
        <item>
            <title><![CDATA[Serving assets faster with AWS CloudFront]]></title>
            <link>https://vengalath.com/blog/serving-assets-with-aws-cloudfront/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/serving-assets-with-aws-cloudfront/</guid>
            <pubDate>Thu, 16 Apr 2020 15:40:00 GMT</pubDate>
            <description><![CDATA[Notes from putting a CDN in front of an S3 bucket for an e-commerce site -  what CloudFront actually does, the cache headers that matter, and the invalidation mistake that cost me an afternoon.]]></description>
            <category>AWS</category>
            <category>CloudFront</category>
            <category>Web</category>
        </item>
        <item>
            <title><![CDATA[A Google quiz that helps you spot email phishing scams better.]]></title>
            <link>https://vengalath.com/blog/a-google-quiz-that-helps-you-spot-email-phishing-scams-better/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/a-google-quiz-that-helps-you-spot-email-phishing-scams-better/</guid>
            <pubDate>Wed, 18 Dec 2019 09:25:00 GMT</pubDate>
            <description><![CDATA[Many people fall for those bogus emails which range from attractive shopping offers to fake emails telling you to secure your online accounts. Identifying a phishing email might not be easy as you think. You may only realise that you clicked a malicious link after it’s done.]]></description>
            <category>Google</category>
            <category>Phishing</category>
            <category>Quiz</category>
        </item>
        <item>
            <title><![CDATA[Javascript vs Typescript]]></title>
            <link>https://vengalath.com/blog/javascript-vs-typescript/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/javascript-vs-typescript/</guid>
            <pubDate>Sun, 10 Nov 2019 19:30:00 GMT</pubDate>
            <description><![CDATA[JavaScript and TypeScript are both programming languages that are widely used for web development, but they have some key differences.]]></description>
            <category>Javascript</category>
            <category>Typescript</category>
        </item>
        <item>
            <title><![CDATA[Data Types and variables in Javascript]]></title>
            <link>https://vengalath.com/blog/data-types-and-variables-in-javascript/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/data-types-and-variables-in-javascript/</guid>
            <pubDate>Sun, 15 Sep 2019 11:05:00 GMT</pubDate>
            <description><![CDATA[Data is anything meaningful to the computer. Javascript provides 7 different datatypes to use within Javascript.]]></description>
            <category>Javascript</category>
        </item>
        <item>
            <title><![CDATA[Types of Cybersecurity Threats and How to Prevent Them]]></title>
            <link>https://vengalath.com/blog/types-of-cybersecurity-threats-and-how-to-prevent-them/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/types-of-cybersecurity-threats-and-how-to-prevent-them/</guid>
            <pubDate>Sat, 20 Jul 2019 14:10:00 GMT</pubDate>
            <description><![CDATA[Cybersecurity threats are constantly evolving and can come in many forms. Understanding the types of threats that exist and knowing how to prevent them is crucial for protecting sensitive information and systems from attack.]]></description>
            <category>Cybersecurity</category>
        </item>
        <item>
            <title><![CDATA[What Is Cryptography]]></title>
            <link>https://vengalath.com/blog/what-is-cryptography/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/what-is-cryptography/</guid>
            <pubDate>Sun, 12 May 2019 18:40:00 GMT</pubDate>
            <description><![CDATA[Cryptography is the practice of securing information through the use of codes and ciphers.]]></description>
            <category>Cryptography</category>
        </item>
        <item>
            <title><![CDATA[What Is Cybersecurity]]></title>
            <link>https://vengalath.com/blog/what-is-cybersecurity/</link>
            <guid isPermaLink="false">https://vengalath.com/blog/what-is-cybersecurity/</guid>
            <pubDate>Tue, 05 Mar 2019 16:20:00 GMT</pubDate>
            <description><![CDATA[Cybersecurity is the practice of protecting computer systems, networks, and sensitive information from unauthorized access, use, disclosure, disruption, modification, or destruction.]]></description>
            <category>Cybersecurity</category>
        </item>
    </channel>
</rss>