<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ananya Kallankudlu</title>
    <description>The latest articles on Forem by Ananya Kallankudlu (@ananyakallankudlu).</description>
    <link>https://forem.com/ananyakallankudlu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3132944%2Fb7e3aee0-262d-449c-a521-52905526260c.jpeg</url>
      <title>Forem: Ananya Kallankudlu</title>
      <link>https://forem.com/ananyakallankudlu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ananyakallankudlu"/>
    <language>en</language>
    <item>
      <title>A Deep Dive into Arrays – Part 1: What, Why &amp; How</title>
      <dc:creator>Ananya Kallankudlu</dc:creator>
      <pubDate>Tue, 10 Jun 2025 10:59:20 +0000</pubDate>
      <link>https://forem.com/ananyakallankudlu/a-deep-dive-into-arrays-part-1-what-why-how-1oio</link>
      <guid>https://forem.com/ananyakallankudlu/a-deep-dive-into-arrays-part-1-what-why-how-1oio</guid>
      <description>&lt;h3&gt;
  
  
  🔹 &lt;strong&gt;What's an Array?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;An &lt;strong&gt;array&lt;/strong&gt; is a &lt;strong&gt;data structure&lt;/strong&gt; that holds multiple values of the &lt;strong&gt;same data type&lt;/strong&gt; in &lt;strong&gt;contiguous memory locations&lt;/strong&gt;.&lt;br&gt;
Let’s break this down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What’s a Data Structure?&lt;/strong&gt;
A &lt;strong&gt;data structure&lt;/strong&gt; is a specific way of storing and accessing data in a computer so it can be used efficiently.
Common operations: &lt;strong&gt;Read&lt;/strong&gt;, &lt;strong&gt;Write&lt;/strong&gt;, &lt;strong&gt;Update&lt;/strong&gt;, &lt;strong&gt;Delete&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;We choose different data structures based on our needs. Some examples:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arrays&lt;/strong&gt; (specifically 2D arrays or matrices) are used to &lt;strong&gt;represent pixels in an image&lt;/strong&gt;. Since array elements are stored in contiguous memory, accessing them is very fast — something that's critical in graphics rendering.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trees&lt;/strong&gt; are a natural choice for implementing &lt;strong&gt;file systems&lt;/strong&gt;. Folders nested within folders can be best modeled as trees, with the &lt;strong&gt;root&lt;/strong&gt; folder at the top.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  🔹 &lt;strong&gt;Why Arrays?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Arrays are optimized for &lt;strong&gt;locality of reference&lt;/strong&gt; — a key concept in making memory access fast.&lt;/p&gt;
&lt;h4&gt;
  
  
  Locality of Reference:
&lt;/h4&gt;

&lt;p&gt;This refers to the tendency of programs to access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recently used memory locations&lt;/strong&gt;
→ called &lt;strong&gt;Temporal Locality&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nearby memory locations&lt;/strong&gt;
→ called &lt;strong&gt;Spatial Locality&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These patterns are utilized by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The CPU:&lt;/strong&gt; When the CPU fetches data from memory, it also fetches nearby memory locations, anticipating future access.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Programmers:&lt;/strong&gt; Take an image processing task where pixels are stored in a matrix (2D array). In most programming languages, matrices are stored in &lt;strong&gt;row-major order&lt;/strong&gt;, meaning all columns of row 1 are stored first, then row 2, and so on.&lt;br&gt;
So consider this code:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight python"&gt;&lt;code&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This accesses data &lt;strong&gt;column-first&lt;/strong&gt;, skipping memory in the way it’s laid out, leading to &lt;strong&gt;cache misses&lt;/strong&gt;. A better approach would be to access data &lt;strong&gt;row-first&lt;/strong&gt;.&lt;/p&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;h4&gt;
  
  
  🚀 Why arrays are fast:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Array elements are stored contiguously (&lt;strong&gt;spatial locality&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;When you access &lt;code&gt;array[0]&lt;/code&gt;, the CPU preloads &lt;code&gt;array[1]&lt;/code&gt;, &lt;code&gt;array[2]&lt;/code&gt;, etc., into the &lt;strong&gt;CPU cache&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;This makes &lt;strong&gt;index-based access blazing fast&lt;/strong&gt;.
Hence, arrays are ideal when:&lt;/li&gt;
&lt;li&gt;You need to store &lt;strong&gt;large amounts of data of the same type&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You need to perform &lt;strong&gt;common operations across all elements&lt;/strong&gt;, like scaling pixels in an image.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔹 Here's a mind map of everything I just learned — what’s yours?
&lt;/h3&gt;

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




&lt;h3&gt;
  
  
  Next Up:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Dynamic arrays&lt;/strong&gt; — what happens when we want to grow or shrink arrays on the fly?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Hope you enjoyed reading!&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Let me know if something wasn’t clear or if you’ve got a better mental model! &lt;/p&gt;

</description>
      <category>programming</category>
      <category>datastructures</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Mail-minders: a zero-UI task assistant in your inbox</title>
      <dc:creator>Ananya Kallankudlu</dc:creator>
      <pubDate>Wed, 04 Jun 2025 07:20:18 +0000</pubDate>
      <link>https://forem.com/ananyakallankudlu/mail-minders-a-zero-ui-task-assistant-in-your-inbox-e7g</link>
      <guid>https://forem.com/ananyakallankudlu/mail-minders-a-zero-ui-task-assistant-in-your-inbox-e7g</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/postmark"&gt;Postmark Challenge: Inbox Innovators&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Mail-minders is a fully email-based task reminder system — no apps, no dashboards, just your inbox. Users interact with Mail-minders entirely through email:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send an email with subject START to get onboarding instructions.&lt;/li&gt;
&lt;li&gt;Compose an email with the subject ADD, using the format provided in the onboarding email, to submit your task reminders.&lt;/li&gt;
&lt;li&gt;Mail-minders automatically reminds users of pending tasks.&lt;/li&gt;
&lt;li&gt;Users can mark tasks as complete or add new ones by replying to reminder emails.&lt;/li&gt;
&lt;li&gt;Send an email with the subject LIST to get a snapshot of all your current tasks.&lt;/li&gt;
&lt;li&gt;Send ANALYZE to receive a visual summary (bar and pie charts) of your categorized tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TL;DR High Level Flow:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw075jpb3eis03hn54jgf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw075jpb3eis03hn54jgf.png" alt="Mail-minders high-level flow" width="800" height="1068"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try it out:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Just shoot out an email to &lt;a href="mailto:reminders@mailminders.tech"&gt;reminders@mailminders.tech&lt;/a&gt; with the subject START and wait for your instructions.&lt;/li&gt;
&lt;li&gt;Follow the instructions in the onboarding email.&lt;/li&gt;
&lt;li&gt;Submit tasks, wait for reminders, and reply to mark them done.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No UI. No login. Just email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Screenshots:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inbox showing onboarding email:&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Task Analysis Email (Bar &amp;amp; Pie Charts) — Sent when you email with subject ANALYZE:&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h2&gt;
  
  
  Code Repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/AnanyaKallankudlu/mail-minders" rel="noopener noreferrer"&gt;Here&lt;/a&gt; is the link to the Github repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Mail-minders is built with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Next.js&lt;/strong&gt; — Handles incoming webhook requests from Postmark.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt; — Stores user's email-ID and tasks along with their categories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Postmark&lt;/strong&gt; — Powers all email communication (inbound + outbound)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Postmark templates&lt;/strong&gt; — For the emails themselves&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python (FastAPI)&lt;/strong&gt; — Generates bar and pie chart images for task summaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt;— Hosts the backend services, including the webhook and the cron job for daily reminders. (The cron job is implemented &lt;a href="https://github.com/AnanyaKallankudlu/mail-minders/blob/main/src/chart-api/scripts/send_reminders.py" rel="noopener noreferrer"&gt;here&lt;/a&gt; but not configured to run because of Postmark's limit of 100 emails with the free trial)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hugging Face Spaces&lt;/strong&gt; — Hosts the task categorization fast-API, which uses the &lt;code&gt;all-MiniLM-L6-v2&lt;/code&gt; model from &lt;code&gt;sentence-transformers&lt;/code&gt; to generate embeddings and classify tasks by similarity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Postmark’s reliable delivery, easy to use email templates, and efficient inbound processing made it possible to build a complete experience using just email. Embedding-based classification added a layer of intelligence, allowing users to get structured insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Possibilities
&lt;/h2&gt;

&lt;p&gt;Along with charts that show task summaries by categories, support for the following statistics may be added:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Task Completion Metrics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total tasks created&lt;/li&gt;
&lt;li&gt;Total tasks completed&lt;/li&gt;
&lt;li&gt;Task completion rate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time-Based Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Average time to complete a task&lt;/li&gt;
&lt;li&gt;Median time to complete a task&lt;/li&gt;
&lt;li&gt;Fastest completed task (shortest duration)&lt;/li&gt;
&lt;li&gt;Longest completed task (longest duration)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Daily &amp;amp; Weekly Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most productive day of the week&lt;/li&gt;
&lt;li&gt;Least productive day&lt;/li&gt;
&lt;li&gt;Average number of tasks completed per day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Achievement Highlights&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fastest streak (most tasks completed back-to-back in under an hour)&lt;/li&gt;
&lt;li&gt;Best day (day with most tasks completed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was a solo submission, built from scratch during the challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks to
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/"&gt;Dev.to&lt;/a&gt; for hosting this hackathon&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://postmarkapp.com/" rel="noopener noreferrer"&gt;Postmark&lt;/a&gt; for sponsoring it.&lt;/li&gt;
&lt;li&gt;AI tools for helping with the coding, building and learning along the way.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>postmarkchallenge</category>
      <category>webdev</category>
      <category>api</category>
    </item>
  </channel>
</rss>
