<?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: Kanishka Shrivastava</title>
    <description>The latest articles on Forem by Kanishka Shrivastava (@kanishkashr).</description>
    <link>https://forem.com/kanishkashr</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%2F3773774%2F0d52e075-9296-4c61-8616-c363094d7b90.png</url>
      <title>Forem: Kanishka Shrivastava</title>
      <link>https://forem.com/kanishkashr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kanishkashr"/>
    <language>en</language>
    <item>
      <title>#java #datastructures #programming #collections</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Fri, 06 Mar 2026 12:09:48 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-datastructures-programming-collections-2in0</link>
      <guid>https://forem.com/kanishkashr/java-datastructures-programming-collections-2in0</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 13: HashMap in Java (Key-Value Data Storage)&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s concept: HashMap — a powerful way to store and access data using key-value pairs.&lt;/p&gt;

&lt;p&gt;What is a HashMap?&lt;/p&gt;

&lt;p&gt;A HashMap stores data in the form of:&lt;/p&gt;

&lt;p&gt;Key → Value&lt;/p&gt;

&lt;p&gt;Each key is unique and maps to a specific value.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;"Java" → 1995&lt;br&gt;
"Python" → 1991&lt;br&gt;
Creating a HashMap&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import java.util.HashMap;

HashMap&amp;lt;String, Integer&amp;gt; languages = new HashMap&amp;lt;&amp;gt;();

languages.put("Java", 1995);
languages.put("Python", 1991);
languages.put("C++", 1985);
Accessing Values
System.out.println(languages.get("Java"));

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1995
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful HashMap Methods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;languages.put("Go", 2009);     // add element
languages.get("Python");       // access value
languages.remove("C++");       // delete element
languages.containsKey("Java"); // check key
languages.size();              // total elements

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why HashMap is Powerful&lt;/p&gt;

&lt;p&gt;Very fast lookups&lt;/p&gt;

&lt;p&gt;Stores structured data&lt;/p&gt;

&lt;p&gt;Used heavily in real applications&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Caching systems&lt;/p&gt;

&lt;p&gt;Database indexing&lt;/p&gt;

&lt;p&gt;Counting frequencies&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;HashMap stores unique keys with values&lt;/p&gt;

&lt;p&gt;Lookup operations are extremely fast&lt;/p&gt;

&lt;p&gt;It's one of the most important structures in Java&lt;/p&gt;

&lt;p&gt;Understanding HashMap is essential for efficient programming.&lt;/p&gt;

&lt;p&gt;Next in the series: Java Streams API (Modern Data Processing) &lt;/p&gt;

</description>
    </item>
    <item>
      <title>#java #collections #programming #datastructures</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Thu, 05 Mar 2026 12:19:39 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-collections-programming-datastructures-4jbk</link>
      <guid>https://forem.com/kanishkashr/java-collections-programming-datastructures-4jbk</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 12: ArrayList vs LinkedList&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s concept: ArrayList vs LinkedList — two important classes from the Java Collections Framework.&lt;/p&gt;

&lt;p&gt;Both store collections of elements, but they work differently internally.&lt;/p&gt;

&lt;p&gt;ArrayList&lt;/p&gt;

&lt;p&gt;ArrayList is backed by a dynamic array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import java.util.ArrayList;

ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
list.add("Java");
list.add("Python");

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Fast random access&lt;/p&gt;

&lt;p&gt;Reading data frequently&lt;/p&gt;

&lt;p&gt;Limitation:&lt;/p&gt;

&lt;p&gt;Inserting or deleting elements in the middle can be slower.&lt;/p&gt;

&lt;p&gt;LinkedList&lt;/p&gt;

&lt;p&gt;LinkedList is implemented using nodes connected by pointers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import java.util.LinkedList;

LinkedList&amp;lt;String&amp;gt; list = new LinkedList&amp;lt;&amp;gt;();
list.add("Java");
list.add("Python");

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Frequent insertions and deletions&lt;/p&gt;

&lt;p&gt;Working with queues or stacks&lt;/p&gt;

&lt;p&gt;Limitation:&lt;/p&gt;

&lt;p&gt;Accessing elements by index is slower.&lt;/p&gt;

&lt;p&gt;Key Difference&lt;br&gt;
ArrayList            LinkedList&lt;br&gt;
Dynamic array            Doubly linked list&lt;br&gt;
Faster access            Slower access&lt;br&gt;
Slower insert/delete     Faster insert/delete&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Use ArrayList for fast data access.&lt;/p&gt;

&lt;p&gt;Use LinkedList when modifying data frequently.&lt;/p&gt;

&lt;p&gt;Understanding data structures helps write efficient programs.&lt;/p&gt;

&lt;p&gt;Next in the series: HashMap in Java (Key-Value Data Storage) &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>java</category>
      <category>programming</category>
    </item>
    <item>
      <title>#java #exceptions #programming #backend</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Wed, 04 Mar 2026 08:40:37 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-exceptions-programming-backend-59lf</link>
      <guid>https://forem.com/kanishkashr/java-exceptions-programming-backend-59lf</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 11: Exception Handling (try-catch-finally)&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s concept: Exception Handling — because real programs must handle errors gracefully.&lt;/p&gt;

&lt;p&gt;What is an Exception?&lt;/p&gt;

&lt;p&gt;An exception is:&lt;/p&gt;

&lt;p&gt;An unexpected event that disrupts normal program flow.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Dividing by zero&lt;/p&gt;

&lt;p&gt;Accessing invalid array index&lt;/p&gt;

&lt;p&gt;Reading a missing file&lt;/p&gt;

&lt;p&gt;If not handled → program crashes.&lt;/p&gt;

&lt;p&gt;try-catch Block&lt;/p&gt;

&lt;p&gt;We use try to write risky code&lt;br&gt;
and catch to handle errors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("Cannot divide by zero!");
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of crashing, it prints a message.&lt;/p&gt;

&lt;p&gt;finally Block&lt;/p&gt;

&lt;p&gt;The finally block:&lt;/p&gt;

&lt;p&gt;Always executes&lt;/p&gt;

&lt;p&gt;Used for cleanup (closing files, DB connections, etc.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
try {
    System.out.println("Trying...");
} catch (Exception e) {
    System.out.println("Error occurred");
} finally {
    System.out.println("This always runs");
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Types of Exceptions&lt;/p&gt;

&lt;p&gt;Checked Exceptions (compile-time)&lt;/p&gt;

&lt;p&gt;Must be handled&lt;/p&gt;

&lt;p&gt;Example: IOException&lt;/p&gt;

&lt;p&gt;Unchecked Exceptions (runtime)&lt;/p&gt;

&lt;p&gt;Occur during execution&lt;/p&gt;

&lt;p&gt;Example: NullPointerException&lt;/p&gt;

&lt;p&gt;Why It’s Important&lt;/p&gt;

&lt;p&gt;Prevents program crashes&lt;/p&gt;

&lt;p&gt;Improves reliability&lt;/p&gt;

&lt;p&gt;Makes applications production-ready&lt;/p&gt;

&lt;p&gt;Good developers don’t just write logic —&lt;br&gt;
they handle failure properly.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Always handle predictable errors&lt;/p&gt;

&lt;p&gt;Use specific exceptions instead of generic ones&lt;/p&gt;

&lt;p&gt;Clean up resources using finally&lt;/p&gt;

&lt;p&gt;Exception handling separates beginners from professionals.&lt;/p&gt;

&lt;p&gt;Next in the series: Collections Framework in Java (ArrayList vs LinkedList) &lt;/p&gt;

</description>
    </item>
    <item>
      <title>#devchallenge #geminireflections #gemini #ai #productivity</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Tue, 03 Mar 2026 09:34:37 +0000</pubDate>
      <link>https://forem.com/kanishkashr/devchallenge-geminireflections-gemini-ai-productivity-42b6</link>
      <guid>https://forem.com/kanishkashr/devchallenge-geminireflections-gemini-ai-productivity-42b6</guid>
      <description>&lt;p&gt;What I Built with Google Gemini&lt;/p&gt;

&lt;p&gt;I created “AI Code Companion”, a tool designed to help developers write, debug, and optimize code faster. The idea came from my own experience struggling to troubleshoot errors late at night during hackathons.&lt;/p&gt;

&lt;p&gt;Using Google Gemini, the AI could:&lt;/p&gt;

&lt;p&gt;Suggest solutions to bugs in real time.&lt;/p&gt;

&lt;p&gt;Offer optimized alternatives for inefficient code.&lt;/p&gt;

&lt;p&gt;Explain complex concepts in simple terms.&lt;/p&gt;

&lt;p&gt;Gemini’s natural language understanding made it possible to interact with the AI conversationally, almost like having a coding mentor available 24/7.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;This project was a crash course in practical AI integration:&lt;/p&gt;

&lt;p&gt;Technical: Learned to handle API calls efficiently, parse AI responses, and create a seamless user interface.&lt;/p&gt;

&lt;p&gt;Soft Skills: Patience, iterative design, and translating user feedback into functional improvements.&lt;/p&gt;

&lt;p&gt;Unexpected Lessons: Even the smartest AI can be unclear without the right prompts. Crafting precise questions drastically improves the usefulness of the output.&lt;/p&gt;

&lt;p&gt;Most importantly, I realized how AI can augment human learning and productivity, rather than just automate tasks.&lt;/p&gt;

&lt;p&gt;Google Gemini Feedback&lt;/p&gt;

&lt;p&gt;What Worked Well: Gemini’s responses were fast, contextually relevant, and easy to integrate into my desktop workflow.&lt;/p&gt;

&lt;p&gt;Where I Struggled: For very niche coding scenarios, outputs could be too generic, requiring me to experiment with prompt phrasing.&lt;/p&gt;

&lt;p&gt;Overall: The experience reaffirmed Gemini’s potential as a developer’s collaborative AI, and I’m excited to explore more complex use cases in the future.&lt;/p&gt;

&lt;p&gt;Looking Forward&lt;/p&gt;

&lt;p&gt;Next, I aim to:&lt;/p&gt;

&lt;p&gt;Build team collaboration features so multiple developers can consult the AI simultaneously.&lt;/p&gt;

&lt;p&gt;Expand the AI’s multi-language support for cross-platform development.&lt;/p&gt;

&lt;p&gt;Explore integration with GitHub to suggest code improvements directly in pull requests.&lt;/p&gt;

&lt;p&gt;This project has shown me the practical power of AI in real-world development, and I’m motivated to continue experimenting with Google Gemini to make coding faster, smarter, and more intuitive.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
    </item>
    <item>
      <title>#java #oop #programming #100daysofcode</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Tue, 03 Mar 2026 09:23:58 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-oop-programming-100daysofcode-526b</link>
      <guid>https://forem.com/kanishkashr/java-oop-programming-100daysofcode-526b</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 10: The final Keyword in Java&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s concept: The final keyword — small word, strong restrictions.&lt;/p&gt;

&lt;p&gt;final is used to prevent modification.&lt;/p&gt;

&lt;p&gt;But its behavior depends on where it’s applied.&lt;/p&gt;

&lt;p&gt;Final Variable&lt;/p&gt;

&lt;p&gt;A final variable cannot be reassigned.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
final int MAX_AGE = 100;

// MAX_AGE = 120; // Error

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once assigned → value cannot change.&lt;/p&gt;

&lt;p&gt;If it's a reference variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;final List&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
list.add("Java");   // Allowed
// list = new ArrayList&amp;lt;&amp;gt;(); // Not allowed

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You cannot change the reference,&lt;br&gt;
but you can modify the object.&lt;/p&gt;

&lt;p&gt;Final Method&lt;/p&gt;

&lt;p&gt;A final method cannot be overridden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Animal {
    final void sound() {
        System.out.println("Animal sound");
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Child classes cannot modify this behavior.&lt;/p&gt;

&lt;p&gt;Final Class&lt;/p&gt;

&lt;p&gt;A final class cannot be inherited.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
final class Utility {
    void print() {
        System.out.println("Utility class");
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No class can extend Utility.&lt;/p&gt;

&lt;p&gt;Why It’s Important&lt;/p&gt;

&lt;p&gt;Improves security&lt;/p&gt;

&lt;p&gt;Prevents unwanted modification&lt;/p&gt;

&lt;p&gt;Helps in writing immutable classes&lt;/p&gt;

&lt;p&gt;Used heavily in system-level and framework code&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;final protects design decisions&lt;/p&gt;

&lt;p&gt;Use it intentionally, not randomly&lt;/p&gt;

&lt;p&gt;It strengthens object-oriented design&lt;/p&gt;

&lt;p&gt;Small keyword. Big control.&lt;/p&gt;

&lt;p&gt;Next in the series: Exception Handling in Java (try-catch-finally) &lt;/p&gt;

</description>
    </item>
    <item>
      <title>#java #springboot #backend #ai or #webdev</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Sun, 01 Mar 2026 13:28:58 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-springbootbackend-ai-or-webdev-33jj</link>
      <guid>https://forem.com/kanishkashr/java-springbootbackend-ai-or-webdev-33jj</guid>
      <description>&lt;p&gt;Let’s Connect!&lt;/p&gt;

&lt;p&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/kanishka-shrivastava-496785336" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/kanishka-shrivastava-496785336&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/KanishkaShrivastava07" rel="noopener noreferrer"&gt;https://github.com/KanishkaShrivastava07&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Always open to collaborations, learning, and exciting projects&lt;/p&gt;

</description>
    </item>
    <item>
      <title>#java #oop #inheritance #programming</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Sun, 01 Mar 2026 13:17:44 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-oop-inheritance-programming-4bg</link>
      <guid>https://forem.com/kanishkashr/java-oop-inheritance-programming-4bg</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 9: Inheritance in Java (extends Keyword)&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s focus: Inheritance — the mechanism that allows one class to acquire properties and behavior of another class.&lt;/p&gt;

&lt;p&gt;What is Inheritance?&lt;/p&gt;

&lt;p&gt;Inheritance means:&lt;/p&gt;

&lt;p&gt;A child class can reuse the fields and methods of a parent class.&lt;/p&gt;

&lt;p&gt;This promotes:&lt;/p&gt;

&lt;p&gt;Code reusability&lt;/p&gt;

&lt;p&gt;Clean hierarchy&lt;/p&gt;

&lt;p&gt;Logical relationships&lt;/p&gt;

&lt;p&gt;Syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
class ChildClass extends ParentClass {
    // additional features
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Animal {
    void eat() {
        System.out.println("This animal eats food");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog barks");
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dog d = new Dog();
d.eat();   // inherited
d.bark();  // own method

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Dog class reuses behavior from Animal.&lt;/p&gt;

&lt;p&gt;Types of Inheritance in Java&lt;/p&gt;

&lt;p&gt;Single&lt;/p&gt;

&lt;p&gt;Multilevel&lt;/p&gt;

&lt;p&gt;Hierarchical&lt;/p&gt;

&lt;p&gt;(Java does not support multiple inheritance with classes — but it does through interfaces.)&lt;/p&gt;

&lt;p&gt;Why It Matters&lt;/p&gt;

&lt;p&gt;Inheritance helps in:&lt;/p&gt;

&lt;p&gt;Building scalable systems&lt;/p&gt;

&lt;p&gt;Reducing code duplication&lt;/p&gt;

&lt;p&gt;Implementing runtime polymorphism&lt;/p&gt;

&lt;p&gt;It works closely with method overriding, which I covered earlier in this series.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Use inheritance for “is-a” relationships&lt;/p&gt;

&lt;p&gt;Avoid unnecessary deep hierarchies&lt;/p&gt;

&lt;p&gt;Combine with abstraction for clean design&lt;/p&gt;

&lt;p&gt;Inheritance is a core building block of object-oriented design.&lt;/p&gt;

&lt;p&gt;Next in the series: Final Keyword in Java (final variable, method, class) &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>oop</category>
      <category>programming</category>
    </item>
    <item>
      <title>#devchallenge #weekendchallenge #showdev</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Sat, 28 Feb 2026 09:36:24 +0000</pubDate>
      <link>https://forem.com/kanishkashr/devchallenge-weekendchallenge-showdev-19nf</link>
      <guid>https://forem.com/kanishkashr/devchallenge-weekendchallenge-showdev-19nf</guid>
      <description>&lt;h2&gt;
  
  
  ExamMate AI 🚀
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Smart Crash Planner for Engineering Students
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🚨 The Problem
&lt;/h2&gt;

&lt;p&gt;Every engineering student knows this moment:&lt;/p&gt;

&lt;p&gt;The exam timetable gets announced.&lt;br&gt;&lt;br&gt;
You open the syllabus.&lt;br&gt;&lt;br&gt;
It’s huge.&lt;br&gt;&lt;br&gt;
And you think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Where do I even start?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As part of this community myself, I’ve experienced the stress, confusion, and last-minute panic that comes with technical subjects and limited time.&lt;/p&gt;

&lt;p&gt;Engineering students don’t just need motivation.&lt;br&gt;&lt;br&gt;
We need structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  👩‍💻 The Community
&lt;/h2&gt;

&lt;p&gt;I built this project for &lt;strong&gt;engineering students&lt;/strong&gt; — a high-pressure academic community constantly balancing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dense technical syllabi
&lt;/li&gt;
&lt;li&gt;Multiple exams in a short window
&lt;/li&gt;
&lt;li&gt;Weak topics that need extra attention
&lt;/li&gt;
&lt;li&gt;Last-minute crash preparation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This tool is designed to make exam prep feel manageable instead of overwhelming.&lt;/p&gt;




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

&lt;p&gt;I created &lt;strong&gt;ExamMate AI&lt;/strong&gt;, a lightweight AI-inspired crash planner that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📅 Generates personalized day-wise study plans
&lt;/li&gt;
&lt;li&gt;⏳ Automatically calculates days left until the exam
&lt;/li&gt;
&lt;li&gt;🎯 Distributes weak topics intelligently
&lt;/li&gt;
&lt;li&gt;🚨 Activates &lt;strong&gt;Panic Mode&lt;/strong&gt; when ≤ 3 days remain
&lt;/li&gt;
&lt;li&gt;✅ Tracks daily progress with checkboxes
&lt;/li&gt;
&lt;li&gt;📊 Displays a dynamic progress bar
&lt;/li&gt;
&lt;li&gt;🌙 Includes Light/Dark mode toggle
&lt;/li&gt;
&lt;li&gt;🤖 Simulates an AI “Analyzing…” experience
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal:&lt;br&gt;&lt;br&gt;
Turn panic into a plan.&lt;/p&gt;

&lt;p&gt;No login.&lt;br&gt;&lt;br&gt;
No backend.&lt;br&gt;&lt;br&gt;
No friction.&lt;/p&gt;

&lt;p&gt;Just clarity and focus.&lt;/p&gt;




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

&lt;p&gt;🌐 Live App:&lt;br&gt;&lt;br&gt;
&lt;a href="https://kanishkashr07.github.io/ExamMate-AI/" rel="noopener noreferrer"&gt;https://kanishkashr07.github.io/ExamMate-AI/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📸 Preview:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0abdcff2-1394-4d18-b7c9-6f4ba8660786" class="article-body-image-wrapper"&gt;&lt;img width="800" height="400" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0abdcff2-1394-4d18-b7c9-6f4ba8660786"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Code
&lt;/h2&gt;

&lt;p&gt;GitHub Repository:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/kanishkashr07/ExamMate-AI" rel="noopener noreferrer"&gt;https://github.com/kanishkashr07/ExamMate-AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The entire project is built as a clean, single-page frontend application for simplicity and accessibility.&lt;/p&gt;




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

&lt;p&gt;This project was built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML5&lt;/strong&gt; — Semantic structure
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS3&lt;/strong&gt; — Responsive design + dark/light theming
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JavaScript&lt;/strong&gt; —

&lt;ul&gt;
&lt;li&gt;Date calculations
&lt;/li&gt;
&lt;li&gt;Dynamic schedule generation
&lt;/li&gt;
&lt;li&gt;Panic Mode logic
&lt;/li&gt;
&lt;li&gt;Progress tracking
&lt;/li&gt;
&lt;li&gt;Interactive UI updates
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;No frameworks.&lt;br&gt;&lt;br&gt;
No libraries.&lt;br&gt;&lt;br&gt;
Just core web technologies.&lt;/p&gt;

&lt;p&gt;I intentionally kept it simple to demonstrate that impactful tools for communities can be built without heavy infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why This Matters
&lt;/h2&gt;

&lt;p&gt;This isn’t just a challenge submission.&lt;/p&gt;

&lt;p&gt;It’s a solution to a real problem I face as a student.&lt;/p&gt;

&lt;p&gt;Community-driven development means building for people whose struggles you genuinely understand.&lt;/p&gt;

&lt;p&gt;ExamMate AI is my attempt to make exam season just a little less stressful for engineering students everywhere.&lt;/p&gt;




&lt;p&gt;Thank you DEV for hosting this challenge 🙌&lt;br&gt;&lt;br&gt;
I’m excited to continue improving ExamMate AI into a smarter academic companion.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>#java #oop #encapsulation #programming</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Thu, 26 Feb 2026 13:06:58 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-oop-encapsulation-programming-4b5o</link>
      <guid>https://forem.com/kanishkashr/java-oop-encapsulation-programming-4b5o</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 8: Encapsulation &amp;amp; Data Hiding&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s concept: Encapsulation — one of the core pillars of OOP.&lt;/p&gt;

&lt;p&gt;What is Encapsulation?&lt;/p&gt;

&lt;p&gt;Encapsulation means:&lt;/p&gt;

&lt;p&gt;Wrapping data (variables) and methods (functions) together inside a class&lt;br&gt;
and restricting direct access to data.&lt;/p&gt;

&lt;p&gt;It protects the internal state of an object.&lt;/p&gt;

&lt;p&gt;How Do We Achieve It?&lt;/p&gt;

&lt;p&gt;Make variables private&lt;/p&gt;

&lt;p&gt;Provide public getter and setter methods&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Student {
    private String name;   // Data hidden

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Student s = new Student();
s.setName("Kanishka");
System.out.println(s.getName());

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Direct access like s.name is not allowed.&lt;/p&gt;

&lt;p&gt;Why is This Important?&lt;/p&gt;

&lt;p&gt;Protects data from unwanted modification&lt;/p&gt;

&lt;p&gt;Improves security&lt;/p&gt;

&lt;p&gt;Makes code more maintainable&lt;/p&gt;

&lt;p&gt;Allows validation inside setters&lt;/p&gt;

&lt;p&gt;Example with validation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void setAge(int age) {
    if(age &amp;gt; 0) {
        this.age = age;
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now invalid data cannot enter the system.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Always keep variables private&lt;/p&gt;

&lt;p&gt;Control access through methods&lt;/p&gt;

&lt;p&gt;Encapsulation makes classes robust and secure&lt;/p&gt;

&lt;p&gt;This concept is heavily used in real-world applications and frameworks.&lt;/p&gt;

&lt;p&gt;Next in the series: Inheritance in Java (extends keyword)&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>oop</category>
      <category>programming</category>
    </item>
    <item>
      <title>#java #oop #abstraction #programming</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Tue, 24 Feb 2026 10:54:47 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-oop-abstraction-programming-16nm</link>
      <guid>https://forem.com/kanishkashr/java-oop-abstraction-programming-16nm</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 7: Abstraction in Java (Abstract Class vs Interface)&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s focus: Abstraction — hiding implementation details and showing only essential behavior.&lt;/p&gt;

&lt;p&gt;Abstraction helps us focus on what an object does, not how it does it.&lt;/p&gt;

&lt;p&gt;-&amp;gt; Abstract Class&lt;/p&gt;

&lt;p&gt;An abstract class:&lt;/p&gt;

&lt;p&gt;Can have abstract methods (without body)&lt;/p&gt;

&lt;p&gt;Can have normal methods (with body)&lt;/p&gt;

&lt;p&gt;Cannot be instantiated&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;abstract class Vehicle {
    abstract void start();

    void fuelType() {
        System.out.println("Petrol or Diesel");
    }
}

class Car extends Vehicle {
    void start() {
        System.out.println("Car starts with key");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used when classes share common behavior.&lt;/p&gt;

&lt;p&gt;-&amp;gt; Interface&lt;/p&gt;

&lt;p&gt;An interface:&lt;/p&gt;

&lt;p&gt;Contains method declarations (by default public &amp;amp; abstract)&lt;/p&gt;

&lt;p&gt;Supports multiple inheritance&lt;/p&gt;

&lt;p&gt;Defines a contract&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interface Payment {
    void pay();
}

class UPI implements Payment {
    public void pay() {
        System.out.println("Payment via UPI");
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used when you want unrelated classes to follow the same contract.&lt;/p&gt;

&lt;p&gt;Key Differences&lt;br&gt;
Abstract Class                     Interface&lt;br&gt;
Can have constructors              Cannot have constructors&lt;br&gt;
Can have instance variables    Only constants&lt;br&gt;
Supports single inheritance    Supports multiple inheritance&lt;br&gt;
Used for shared base behavior      Used for defining contracts&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Use abstract class when classes are closely related.&lt;/p&gt;

&lt;p&gt;Use interface when defining capability/behavior.&lt;/p&gt;

&lt;p&gt;Abstraction makes systems scalable and loosely coupled.&lt;/p&gt;

&lt;p&gt;This concept is heavily used in frameworks and real-world applications.&lt;/p&gt;

&lt;p&gt;Next in the series: Encapsulation &amp;amp; Data Hiding in Java&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>oop</category>
      <category>programming</category>
    </item>
    <item>
      <title>#java #oop #polymorphism #programming</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Mon, 23 Feb 2026 10:56:26 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-oop-polymorphism-programming-46n8</link>
      <guid>https://forem.com/kanishkashr/java-oop-polymorphism-programming-46n8</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 6: Method Overriding &amp;amp; Runtime Polymorphism&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals.&lt;/p&gt;

&lt;p&gt;Today’s concept: Method Overriding — the foundation of runtime polymorphism.&lt;/p&gt;

&lt;p&gt;What is Method Overriding?&lt;/p&gt;

&lt;p&gt;Method Overriding happens when:&lt;/p&gt;

&lt;p&gt;A child class provides its own implementation&lt;/p&gt;

&lt;p&gt;Of a method already defined in the parent class&lt;/p&gt;

&lt;p&gt;Same method name.&lt;br&gt;
Same parameters.&lt;br&gt;
Different behavior.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Animal a = new Dog();
a.sound();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dog barks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even though the reference type is Animal,&lt;br&gt;
the method of Dog is called.&lt;/p&gt;

&lt;p&gt;This is Runtime Polymorphism.&lt;/p&gt;

&lt;p&gt;Why is it Powerful?&lt;/p&gt;

&lt;p&gt;Enables dynamic behavior&lt;/p&gt;

&lt;p&gt;Supports clean extensible design&lt;/p&gt;

&lt;p&gt;Core concept behind frameworks &amp;amp; APIs&lt;/p&gt;

&lt;p&gt;Important Rules&lt;/p&gt;

&lt;p&gt;Method name must be same&lt;/p&gt;

&lt;p&gt;Parameters must be same&lt;/p&gt;

&lt;p&gt;Access level cannot be more restrictive&lt;/p&gt;

&lt;p&gt;Use &lt;a class="mentioned-user" href="https://dev.to/override"&gt;@override&lt;/a&gt; for safety&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Overloading = Compile-time&lt;/p&gt;

&lt;p&gt;Overriding = Runtime&lt;/p&gt;

&lt;p&gt;Polymorphism makes Java flexible and scalable&lt;/p&gt;

&lt;p&gt;This concept changed how I see object-oriented design.&lt;/p&gt;

&lt;p&gt;Next in the series: Abstraction in Java (Abstract Classes vs Interfaces) &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>oop</category>
      <category>programming</category>
    </item>
    <item>
      <title>#java #oop #programming #100daysofcode</title>
      <dc:creator>Kanishka Shrivastava</dc:creator>
      <pubDate>Sun, 22 Feb 2026 10:19:55 +0000</pubDate>
      <link>https://forem.com/kanishkashr/java-oop-programming-100daysofcode-441k</link>
      <guid>https://forem.com/kanishkashr/java-oop-programming-100daysofcode-441k</guid>
      <description>&lt;p&gt;Java Concepts I’m Mastering – Part 5: Method Overloading&lt;/p&gt;

&lt;p&gt;Continuing my journey of mastering Java fundamentals while building real projects.&lt;/p&gt;

&lt;p&gt;Today’s concept: Method Overloading.&lt;/p&gt;

&lt;p&gt;What is Method Overloading?&lt;/p&gt;

&lt;p&gt;Method Overloading means:&lt;/p&gt;

&lt;p&gt;Same method name, but different parameters.&lt;/p&gt;

&lt;p&gt;Java decides which method to call based on:&lt;/p&gt;

&lt;p&gt;Number of parameters&lt;/p&gt;

&lt;p&gt;Type of parameters&lt;/p&gt;

&lt;p&gt;Order of parameters&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Calculator {

    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }

    int add(int a, int b, int c) {
        return a + b + c;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same method name → add&lt;br&gt;
Different parameter lists → Overloading&lt;/p&gt;

&lt;p&gt;Why is it Useful?&lt;/p&gt;

&lt;p&gt;Improves code readability&lt;/p&gt;

&lt;p&gt;Makes APIs cleaner&lt;/p&gt;

&lt;p&gt;Supports compile-time polymorphism&lt;/p&gt;

&lt;p&gt;Important Rule&lt;/p&gt;

&lt;p&gt;You cannot overload methods by only changing the return type.&lt;/p&gt;

&lt;p&gt;This is invalid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int add(int a, int b)
double add(int a, int b)   // Error

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Parameters must differ.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Overloading makes code flexible&lt;/p&gt;

&lt;p&gt;It’s resolved at compile-time&lt;/p&gt;

&lt;p&gt;It’s one of the foundations of Polymorphism&lt;/p&gt;

&lt;p&gt;Understanding this makes class design much stronger.&lt;/p&gt;

&lt;p&gt;Next in the series: Method Overriding &amp;amp; Runtime Polymorphism&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>beginners</category>
      <category>java</category>
      <category>oop</category>
    </item>
  </channel>
</rss>
