<?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>DEV Community: Spoorti-Kotrashetti</title>
    <description>The latest articles on DEV Community by Spoorti-Kotrashetti (@spoorti).</description>
    <link>https://dev.to/spoorti</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%2F417261%2F4ef7ae06-f491-4a6c-b712-f4b1b8079eb7.jpg</url>
      <title>DEV Community: Spoorti-Kotrashetti</title>
      <link>https://dev.to/spoorti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spoorti"/>
    <language>en</language>
    <item>
      <title>Middleware: part-3.0</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Fri, 23 Jul 2021 20:58:05 +0000</pubDate>
      <link>https://dev.to/spoorti/middleware-part-3-0-2kca</link>
      <guid>https://dev.to/spoorti/middleware-part-3-0-2kca</guid>
      <description>&lt;h2&gt;
  
  
  So, what is a Middleware ???
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Middleware&lt;/em&gt; is a &lt;strong&gt;&lt;em&gt;software&lt;/em&gt;&lt;/strong&gt; that provides common services (also repetitive) to the applications beyond what's offered by the OS (Operating System).&lt;/p&gt;

&lt;p&gt;It is the &lt;strong&gt;&lt;em&gt;bridge&lt;/em&gt;&lt;/strong&gt; between the &lt;em&gt;Frontend&lt;/em&gt;, the &lt;em&gt;Backend&lt;/em&gt;, and the &lt;em&gt;OS&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It helps developers to build the application more efficiently.&lt;/p&gt;

&lt;p&gt;It is the &lt;em&gt;connective tissue&lt;/em&gt; between the application, the data and the users.&lt;/p&gt;

&lt;p&gt;Middleware usually runs between the &lt;strong&gt;R&lt;/strong&gt;equest- &lt;strong&gt;R&lt;/strong&gt;esponse cycle (i.e., between the client and the web server).&lt;br&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%2Fu07qiayh6t7szdb7ltj1.jpg" 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%2Fu07qiayh6t7szdb7ltj1.jpg" alt="Request-response cycle" width="624" height="960"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Now, you all must be wondering... "Where is the middleware's role in the project??"
&lt;/h2&gt;

&lt;p&gt;Well, I need to explain this with a couple of example....&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Scenario-1&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
In our hotel website, only the logged-in user can place food orders.&lt;br&gt;
So, if an unregistered user &lt;em&gt;or&lt;/em&gt; a user without signing in, tries to place an order.....then, user will automatically be directed to the login page stating "Please login before placing orders!!".&lt;br&gt;
Now..... how did this redirection happen???&lt;br&gt;
Exactly, through the middleware, the &lt;strong&gt;&lt;em&gt;authentication middleware&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario-2&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
When a user types a URL say: &lt;em&gt;"localhost/menu"&lt;/em&gt;&lt;br&gt;
But, the URL mentioned in the URL configuration file is &lt;em&gt;"localhost/menu/"&lt;/em&gt;&lt;br&gt;
Now... &lt;strong&gt;&lt;em&gt;CommonMiddleware&lt;/em&gt;&lt;/strong&gt; takes care of appending the end slash to the URL and rendering the correct template instead of throwing an "URL not found" error.&lt;br&gt;
COOL!!, isn't it? &lt;/p&gt;

&lt;h2&gt;
  
  
  What happens if NO MIDDLEWARE ???
&lt;/h2&gt;

&lt;p&gt;Yeah...It's not an issue, you can still develop a website without using a middleware, but I would call it a &lt;em&gt;less-efficient style of development&lt;/em&gt;.&lt;br&gt;
What I mean is, if you don't want to use a middleware then, you will have to sit writing some &lt;strong&gt;repeat codes&lt;/strong&gt; whenever and wherever required. This some what decreases the efficiency of the developer.&lt;/p&gt;

&lt;p&gt;Like....a good engineer's &lt;strong&gt;focus&lt;/strong&gt; should be in &lt;strong&gt;&lt;em&gt;delivering a satisfactory product&lt;/em&gt;&lt;/strong&gt; to its customer, in the &lt;strong&gt;&lt;em&gt;constrained time&lt;/em&gt;&lt;/strong&gt; (&lt;em&gt;or&lt;/em&gt; lesser than the promised time), with a little less complex in the coding work (keeping the &lt;strong&gt;Agile Methodology&lt;/strong&gt; in mind) so that, if a customer needs some add-ons &lt;em&gt;or&lt;/em&gt; removal of certain features then, the &lt;strong&gt;&lt;em&gt;less code complexity&lt;/em&gt;&lt;/strong&gt; will make it more easier and faster to make the necessary modifications.&lt;/p&gt;

&lt;p&gt;Putting it all in a nutshell...&lt;br&gt;
It all started with a small idea of exploring an open-source alternative for Java.&lt;br&gt;
Learning the &lt;strong&gt;SDLC&lt;/strong&gt; and applying it throughout the project process.&lt;br&gt;
Importance and fun of working as a team, right from teaching each other, correcting each other's mistakes to learning from our mistakes...we all made it.&lt;br&gt;
We literally got exposed to many new technologies.&lt;br&gt;
Finally, we developed a website as a POC and justified our thesis of PYTHON being one of the best alternate options for Java.&lt;br&gt;
So yes...this was a pretty much of my learning and experience throughout our "&lt;em&gt;The Middleware Opensource Option/s&lt;/em&gt;" project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hope you enjoyed the series :)
&lt;/h3&gt;

&lt;h6&gt;
  
  
  Will get back with a new one shortly...
&lt;/h6&gt;

&lt;h1&gt;
  
  
  Thank you.
&lt;/h1&gt;

</description>
      <category>python</category>
      <category>middleware</category>
      <category>opensource</category>
      <category>java</category>
    </item>
    <item>
      <title>MVT Architecture: part-2.1</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Fri, 23 Jul 2021 20:54:20 +0000</pubDate>
      <link>https://dev.to/spoorti/mvt-architecture-part-2-1-1hnd</link>
      <guid>https://dev.to/spoorti/mvt-architecture-part-2-1-1hnd</guid>
      <description>&lt;p&gt;I mentioned about the &lt;strong&gt;MVT&lt;/strong&gt; (&lt;strong&gt;M&lt;/strong&gt;odel-&lt;strong&gt;V&lt;/strong&gt;iew-&lt;strong&gt;T&lt;/strong&gt;emplate) architecture earlier.&lt;/p&gt;

&lt;p&gt;You must be knowing the MVC architecture that allows developers to change the visual part of an app and the business logic part separately, without affecting one another. But it's a little different in case of Django.&lt;/p&gt;

&lt;p&gt;Django forces the developers to separate their development of application into 3 loosely coupled components, the &lt;strong&gt;&lt;em&gt;model&lt;/em&gt;&lt;/strong&gt;, the &lt;strong&gt;&lt;em&gt;view&lt;/em&gt;&lt;/strong&gt; and the &lt;strong&gt;&lt;em&gt;template&lt;/em&gt;&lt;/strong&gt;.&lt;br&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%2Fwjhxbqftwrtotbs2ipiu.jpg" 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%2Fwjhxbqftwrtotbs2ipiu.jpg" alt="Alt Text" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Image source: hackr.io
&lt;/h6&gt;

&lt;p&gt;&lt;strong&gt;MODEL&lt;/strong&gt; : &lt;em&gt;Data Management Layer&lt;/em&gt;&lt;br&gt;
It is the component that manages an application's data and usually interacts directly with the database (&lt;em&gt;PostgreSQL&lt;/em&gt; in our case).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TEMPLATE&lt;/strong&gt; : &lt;em&gt;Data Presentation Layer&lt;/em&gt;&lt;br&gt;
This is the layer that presents data to &lt;em&gt;or&lt;/em&gt; accepts data from the user, (usually this is what most users interact with).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VIEW&lt;/strong&gt; : &lt;em&gt;Between Layer&lt;/em&gt;&lt;br&gt;
This is the part that sits between the data management layer and the data presentation layer. (This layer grabs data, usually, some user input, from the presentation layer, manipulates the data, and then passes it to the data management layer &lt;em&gt;or&lt;/em&gt; vice-versa). &lt;/p&gt;

&lt;h2&gt;
  
  
  The Django's MVT Architecture
&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%2F148cwitoas0al156tofq.jpg" 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%2F148cwitoas0al156tofq.jpg" alt="Alt Text" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can give you a couple of example for the better understanding of the MVT architecture...&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Example 1&lt;/em&gt;&lt;/strong&gt;:&lt;br&gt;
&lt;strong&gt;1)&lt;/strong&gt; Customer makes a request for the menu page.&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; Django maps the incoming request (URL) to the application logic (view function).&lt;br&gt;
&lt;strong&gt;3)&lt;/strong&gt; A list of URLs will be specified in the &lt;em&gt;URL configuration file&lt;/em&gt;.&lt;br&gt;
&lt;strong&gt;4)&lt;/strong&gt; Django looks into the list of URLs and invokes the appropriate &lt;em&gt;view function&lt;/em&gt; mapped to URL pattern where the match is found.&lt;br&gt;
&lt;strong&gt;5)&lt;/strong&gt; And then, the requested menu page will be rendered from the &lt;em&gt;templates&lt;/em&gt; to the customer, through the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example 2&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1)&lt;/strong&gt; We can have another scenario where a new customer is trying to register by sending some information. Now here, this becomes a &lt;em&gt;save request&lt;/em&gt; from the user.&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; This save request goes to the &lt;em&gt;models file&lt;/em&gt; where a set of &lt;em&gt;python classes&lt;/em&gt; are defined that maps the &lt;em&gt;database table&lt;/em&gt; to the python &lt;em&gt;objects&lt;/em&gt;.&lt;br&gt;
&lt;strong&gt;3)&lt;/strong&gt; Models file directly interacts with the database through the database API, &lt;em&gt;psycopg2&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This was a brief explanation of the &lt;em&gt;MVT architecture&lt;/em&gt;. &lt;/p&gt;

</description>
      <category>python</category>
      <category>java</category>
      <category>opensource</category>
      <category>middleware</category>
    </item>
    <item>
      <title>Project Design and Implementation: part-2.0</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Fri, 23 Jul 2021 20:45:15 +0000</pubDate>
      <link>https://dev.to/spoorti/project-design-and-implementation-part-2-0-37p8</link>
      <guid>https://dev.to/spoorti/project-design-and-implementation-part-2-0-37p8</guid>
      <description>&lt;p&gt;Once I was done with choosing the &lt;em&gt;Django Web Framework&lt;/em&gt;, I had to step into the &lt;em&gt;&lt;strong&gt;DESIGN&lt;/strong&gt;&lt;/em&gt; part of the website.&lt;br&gt;
It was a basic &lt;em&gt;online food ordering website&lt;/em&gt;.&lt;br&gt;
Any customers can easily visit our website from their convenient browsers (through desktops or mobile).&lt;br&gt;
Our website has two web interfaces: the customer web interface and the chef web interface.&lt;br&gt;
In the &lt;em&gt;customer web interface&lt;/em&gt;, a customer has to sign in to place some orders online.&lt;br&gt;
Customers can make the online payments through the &lt;em&gt;Razorpay payment gateway API&lt;/em&gt; that is integrated.&lt;br&gt;
Customers can also track their order status easily.&lt;br&gt;
As I said earlier, our website also has the &lt;em&gt;admin panel&lt;/em&gt; that can be accessed only by the &lt;em&gt;superusers.&lt;/em&gt;&lt;br&gt;
The &lt;em&gt;chefs&lt;/em&gt; are the superusers in our case.&lt;br&gt;
Since our website is dynamic, the chefs can handle the customer UI from the admin panel by adding, deleting or updating the menu, order status, the events, etc.&lt;br&gt;
All the orders placed by the customers along with the payment details will be reflected in the &lt;em&gt;chef web interface&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Moving on to the &lt;em&gt;&lt;strong&gt;IMPLEMENTATION&lt;/strong&gt;&lt;/em&gt; part...&lt;br&gt;
The &lt;em&gt;MVT architecture&lt;/em&gt;, &lt;em&gt;ORM&lt;/em&gt;, &lt;em&gt;routing&lt;/em&gt;, &lt;em&gt;Razorpay payment gateway API&lt;/em&gt;, &lt;em&gt;PostgreSQL&lt;/em&gt; and &lt;em&gt;psycopg2&lt;/em&gt; were some of the main parts of the implementation.&lt;br&gt;
I also designed the &lt;em&gt;database schema&lt;/em&gt; as per the website requirements. The database was logically divided into 2 parts;&lt;br&gt;
&lt;em&gt;ONE&lt;/em&gt;- the part which maintained the data about the users (customers) and the superusers (chefs).&lt;br&gt;
&lt;em&gt;TWO&lt;/em&gt;- the part which had the hotel related data like the events, the menu, the items, the orders etc.&lt;br&gt;
Since we have this &lt;strong&gt;ORM&lt;/strong&gt;, I didn't have to write SQL queries, instead I handled the database using the Python classes, functions and the objects. &lt;em&gt;(Thanks to DJANGO)&lt;/em&gt;.&lt;br&gt;
.&lt;br&gt;
.&lt;br&gt;
.&lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;You can read about the &lt;a href="https://dev.to/spoorti/mvt-architecture-part-2-1-1hnd"&gt;implementation of the MVT architecture&lt;/a&gt; in the part-2.1 of this series.&lt;/em&gt;
&lt;/h6&gt;

</description>
      <category>python</category>
      <category>opensource</category>
      <category>java</category>
      <category>middleware</category>
    </item>
    <item>
      <title>My Role in the Project: part-1.1</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Fri, 23 Jul 2021 20:28:14 +0000</pubDate>
      <link>https://dev.to/spoorti/my-role-in-the-project-part-1-1-3h5h</link>
      <guid>https://dev.to/spoorti/my-role-in-the-project-part-1-1-3h5h</guid>
      <description>&lt;p&gt;I played a vital role in the website development that was taken as a &lt;em&gt;POC.&lt;/em&gt;&lt;br&gt;
Entire designing and implementation of the website (along with the middleware implementation) was handled by me.&lt;br&gt;
I proceeded into my part of work by keeping the &lt;strong&gt;SDLC&lt;/strong&gt; in mind.&lt;/p&gt;

&lt;p&gt;It all started with my &lt;em&gt;&lt;strong&gt;PLANNING&lt;/strong&gt;&lt;/em&gt;.&lt;br&gt;
I first gathered some information regarding the different ways I had for developing the website in Python.&lt;br&gt;
And then I came across the 2 most popular frameworks; &lt;em&gt;the Django Web Framework&lt;/em&gt; and &lt;em&gt;the Flask Framework&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So now, I had to make a &lt;em&gt;&lt;strong&gt;DECISION&lt;/strong&gt;&lt;/em&gt; of choosing one among these two.&lt;br&gt;
As per my knowledge, we need to make decisions taking the customer's requirements plus the company's profit into consideration.&lt;br&gt;
In our case, we neither had company, nor we had customers. &lt;strong&gt;But&lt;/strong&gt; we did have a &lt;em&gt;project&lt;/em&gt; and we did have the &lt;em&gt;requirements&lt;/em&gt;.&lt;br&gt;
The &lt;strong&gt;project&lt;/strong&gt; was to find out the alternate middleware opensource option for Java.&lt;br&gt;
And the &lt;strong&gt;requirement&lt;/strong&gt; was creating a minimal level website that would serve as a POC by helping us show the alternate opensource usage with some middleware implementation in it.&lt;/p&gt;

&lt;p&gt;Keeping the requirements in mind, I went for the &lt;strong&gt;Django Web Framework&lt;/strong&gt; by &lt;em&gt;&lt;strong&gt;ANALYZING&lt;/strong&gt;&lt;/em&gt; the following points about Django:&lt;br&gt;
&lt;em&gt;1)&lt;/em&gt; It has a conventional project structure.&lt;br&gt;
&lt;em&gt;2)&lt;/em&gt; It has an easy code base navigation.&lt;br&gt;
&lt;em&gt;3)&lt;/em&gt; It provides access to many tools that will help in the rapid development.&lt;br&gt;
&lt;em&gt;4)&lt;/em&gt; It's active developer community.&lt;/p&gt;

&lt;p&gt;After this, I stepped into the &lt;em&gt;&lt;strong&gt;DESIGN&lt;/strong&gt;&lt;/em&gt; part of the website.&lt;/p&gt;

&lt;p&gt;Now, after the basic design was done, all I was left with was the &lt;em&gt;&lt;strong&gt;IMPLEMENTATION&lt;/strong&gt;&lt;/em&gt; part.&lt;br&gt;
The &lt;em&gt;MVT architecture&lt;/em&gt;, &lt;em&gt;ORM&lt;/em&gt;, &lt;em&gt;routing&lt;/em&gt;, &lt;em&gt;Razorpay payment gateway API&lt;/em&gt;, &lt;em&gt;PostgreSQL&lt;/em&gt; and &lt;em&gt;psycopg2&lt;/em&gt; were some of the main parts of the implementation.&lt;br&gt;
I also designed the &lt;em&gt;database schema&lt;/em&gt; as per the website requirements. The database was logically divided into 2 parts;&lt;br&gt;
&lt;em&gt;ONE&lt;/em&gt;- the part which maintained the data about the users (customers) and the superusers (chefs).&lt;br&gt;
&lt;em&gt;TWO&lt;/em&gt;- the part which had the hotel related data like the events, the menu, the items, the orders etc.&lt;br&gt;
Since we have this &lt;strong&gt;ORM&lt;/strong&gt;, I didn't have to write SQL queries, instead I handled the database using the Python classes, functions and the objects. &lt;em&gt;(Thanks to DJANGO)&lt;/em&gt;.&lt;br&gt;
.&lt;br&gt;
.&lt;br&gt;
.&lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;&lt;a href="https://dev.to/spoorti/project-design-and-implementation-part-2-0-37p8"&gt;The design and implementation&lt;/a&gt; part will be covered in the part-2.0 of this series.&lt;/em&gt;
&lt;/h6&gt;

&lt;p&gt;.&lt;br&gt;
.&lt;br&gt;
.&lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;You can read about the &lt;a href="https://dev.to/spoorti/mvt-architecture-part-2-1-1hnd"&gt;implementation of the MVT architecture&lt;/a&gt; in the part-2.1 of this series.&lt;/em&gt;
&lt;/h6&gt;

</description>
      <category>python</category>
      <category>java</category>
      <category>middleware</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Project Background: part-1.0</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Fri, 23 Jul 2021 19:56:42 +0000</pubDate>
      <link>https://dev.to/spoorti/alternate-middleware-opensource-option-background-part-1-0-46ci</link>
      <guid>https://dev.to/spoorti/alternate-middleware-opensource-option-background-part-1-0-46ci</guid>
      <description>&lt;p&gt;I will be talking about my recent 6th semester team project here, &lt;strong&gt;"The Middleware Opensource Option/s"&lt;/strong&gt;.&lt;br&gt;
Our &lt;strong&gt;objective&lt;/strong&gt; was to explore the best alternate middleware opensource option for Java.&lt;br&gt;
The &lt;strong&gt;reason&lt;/strong&gt; behind choosing this project was, as we know that Java is not free for production use. The organization has to pay for the current version of Java SE 14.&lt;br&gt;
So we thought of looking for an existing alternative for Java that is opensource followed by a POC (proof of concept).&lt;br&gt;
This was our &lt;em&gt;&lt;strong&gt;PLAN.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Exploring for us, was to choose the possible best one amongst the few good ones.&lt;br&gt;
For this, we had to &lt;strong&gt;gather sufficient information.&lt;/strong&gt;&lt;br&gt;
So, I told my teammates to come up with 1 or 2 languages of their choice along with their respective features, advantages and disadvantages.&lt;/p&gt;

&lt;p&gt;Once we had all the required information, we were all good to go for the &lt;em&gt;&lt;strong&gt;ANALYSIS.&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Some of the top features that we included were the; &lt;em&gt;security&lt;/em&gt;, &lt;em&gt;purpose&lt;/em&gt;, &lt;em&gt;scalability&lt;/em&gt;, &lt;em&gt;availability of libraries&lt;/em&gt;, &lt;em&gt;community support&lt;/em&gt;, &lt;em&gt;ease of use&lt;/em&gt;.&lt;br&gt;
Keeping these above KPI (key performance indicators) into consideration, we compared and analyzed and then finally decided to choose &lt;strong&gt;Python&lt;/strong&gt; as it was fitting best in our point of view.&lt;/p&gt;

&lt;p&gt;Our next step was creating a website as a &lt;strong&gt;POC&lt;/strong&gt;. And it was where I played a vital role. Right from planning, designing till the implementation (except for the frontend part) of the website was done by me.&lt;br&gt;
Keeping the SDLC (software development life cycle) in mind, I happened to work on this.&lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;You can view &lt;a href="https://dev.to/spoorti/my-role-in-the-project-part-1-1-3h5h"&gt;My detailed role in the project&lt;/a&gt; in part-1.1 of this series.&lt;/em&gt;
&lt;/h6&gt;

&lt;p&gt;.&lt;br&gt;
.&lt;br&gt;
.&lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;em&gt;&lt;a href="https://dev.to/spoorti/project-design-and-implementation-part-2-0-37p8"&gt;The design and implementation&lt;/a&gt; part will be covered in the part-2.0 of this series.&lt;/em&gt;
&lt;/h6&gt;

</description>
      <category>python</category>
      <category>java</category>
      <category>middleware</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Alternate Middleware Option for Java: POC</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Thu, 22 Jul 2021 19:12:22 +0000</pubDate>
      <link>https://dev.to/spoorti/alternate-middleware-option-for-java-poc-45c2</link>
      <guid>https://dev.to/spoorti/alternate-middleware-option-for-java-poc-45c2</guid>
      <description>&lt;h6&gt;
  
  
  &lt;em&gt;This is the part-2 of the Alternate Middleware Option series&lt;/em&gt;....
&lt;/h6&gt;

&lt;p&gt;After all the analysis and evaluation we decided to choose &lt;strong&gt;PYTHON&lt;/strong&gt; as it was fitting best in our point of view.&lt;/p&gt;

&lt;p&gt;Now our next step was to build a web application or a desktop application or a mobile application or any such thing that would support us in our idea of choosing Python.&lt;br&gt;
We then decided to &lt;em&gt;create a website&lt;/em&gt; as a &lt;strong&gt;POC&lt;/strong&gt; (proof of concept).&lt;br&gt;
Now, we had this job of creating a website in Python, so we again started to checkout for the ways to do this. And then we came across the two most popular web frameworks; the &lt;em&gt;Django Web Framework&lt;/em&gt; and the &lt;em&gt;Flask Framework&lt;/em&gt;.&lt;br&gt;
We again had to pick one among these two...&lt;/p&gt;

&lt;p&gt;When we started trying to analyze in order to make a decision in this case, we had these below observations:&lt;br&gt;
&lt;strong&gt;1)&lt;/strong&gt; &lt;em&gt;Django&lt;/em&gt; offered us the &lt;strong&gt;conventional project structure&lt;/strong&gt;, whereas &lt;em&gt;Flask&lt;/em&gt; comes with an arbitrary project structure.&lt;br&gt;
&lt;strong&gt;2)&lt;/strong&gt; &lt;em&gt;Django&lt;/em&gt; use specific names like, for URL (urls.py), models, views etc. This simplifies adding new people to the project as &lt;strong&gt;codebase navigation&lt;/strong&gt; is easy for them.&lt;br&gt;
&lt;strong&gt;3)&lt;/strong&gt; &lt;em&gt;Django&lt;/em&gt; was created for the &lt;strong&gt;rapid development&lt;/strong&gt; of the complex web apps. Developers have all the &lt;strong&gt;tools&lt;/strong&gt; they need to implement and develop; easy, scalable, reliable and maintainable web apps.&lt;br&gt;
&lt;strong&gt;4)&lt;/strong&gt; &lt;em&gt;Django&lt;/em&gt; has huge active developer &lt;strong&gt;community&lt;/strong&gt;. There is so much useful content in public domains where as &lt;em&gt;Flask&lt;/em&gt; has comparatively smaller community than that of Django.&lt;/p&gt;

&lt;p&gt;So, after analyzing the above observations, we made a decision of choosing the &lt;strong&gt;Django Web Framework&lt;/strong&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Alternate Middleware Option for Java: Background</title>
      <dc:creator>Spoorti-Kotrashetti</dc:creator>
      <pubDate>Thu, 22 Jul 2021 19:11:03 +0000</pubDate>
      <link>https://dev.to/spoorti/alternate-middleware-option-for-java-background-4ceb</link>
      <guid>https://dev.to/spoorti/alternate-middleware-option-for-java-background-4ceb</guid>
      <description>&lt;h6&gt;
  
  
  &lt;em&gt;This is the part-1 of the Alternate Middleware Option series&lt;/em&gt;....
&lt;/h6&gt;

&lt;p&gt;I will be talking about my recent 6th semester team project here, &lt;strong&gt;"The Middleware Opensource Option/s"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;objective&lt;/strong&gt; of the project was to explore the best alternate middleware for Java. Now, exploring for us was to choose the possible best language amongst the few good ones.&lt;br&gt;
So I told my teammates to come up with 1 or 2 languages along with their respective features, advantages and disadvantages. Some of the &lt;strong&gt;top features&lt;/strong&gt; included were the; &lt;em&gt;security&lt;/em&gt;, &lt;em&gt;purpose&lt;/em&gt;, &lt;em&gt;scalability&lt;/em&gt;, &lt;em&gt;use-cases&lt;/em&gt;, &lt;em&gt;availability of libraries&lt;/em&gt;, &lt;em&gt;community support&lt;/em&gt; and of course the &lt;em&gt;ease&lt;/em&gt;. Once we were done with this, we started to analyze and compare the languages one by one based on the &lt;strong&gt;KPI&lt;/strong&gt; (Key Performance Indicators) mentioned above.&lt;br&gt;
When it was &lt;strong&gt;Python's turn&lt;/strong&gt; to be compared and analyzed, we had the following &lt;em&gt;observations&lt;/em&gt;:&lt;br&gt;
1) Python's &lt;strong&gt;security&lt;/strong&gt; is good enough.&lt;br&gt;
2) It's &lt;strong&gt;dynamic semantics&lt;/strong&gt; makes it more intuitive.&lt;br&gt;
3) As it is an &lt;strong&gt;interpreted language&lt;/strong&gt;, the debugging is easier here. But nothing comes for free, the easy debugging comes at the cost of speed.&lt;br&gt;
4) But still what makes an interpreted language so great is it's &lt;strong&gt;portability&lt;/strong&gt;.&lt;br&gt;
5) We all know that Python is a &lt;em&gt;trending language&lt;/em&gt; and so we tried finding out some &lt;em&gt;top reasons&lt;/em&gt; for this which are as follows:&lt;br&gt;
Main reason behind Python's popularity is the amount of &lt;strong&gt;use-cases&lt;/strong&gt; it has in various domains like the AI/ML, Data Visualization, Web Development etc.&lt;br&gt;
And why it has so many use-cases is because it's a &lt;strong&gt;general purpose language&lt;/strong&gt; (it's not domain specific language). It is &lt;strong&gt;readable&lt;/strong&gt;, it is &lt;strong&gt;versatile&lt;/strong&gt; as it comes with tremendous amount of in-built &lt;strong&gt;libraries&lt;/strong&gt;.&lt;br&gt;
And of course, such a popular programming language would definitely have the greatest &lt;strong&gt;community support&lt;/strong&gt; out there. Some of the popular ones are: &lt;em&gt;StackOverflow&lt;/em&gt;, &lt;em&gt;Dev Community&lt;/em&gt;, &lt;em&gt;Reddit&lt;/em&gt;, &lt;em&gt;Quora&lt;/em&gt;, &lt;em&gt;StackExchange&lt;/em&gt; etc.&lt;/p&gt;

&lt;p&gt;So these were some of the initial and important factors that made us choose &lt;strong&gt;PYTHON&lt;/strong&gt;.&lt;br&gt;
No technology can get a 100% replacement, because it has it's own standard and status in the market. But that doesn't mean one can not have an alternative...&lt;br&gt;
Everything in the industry or the market will have at least one good alternative for it, it can be better than the existing one or can have close features to the existing one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Some questions that we had during this part of the project:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1) Why to find alternate for Java, when it is so brilliant in almost all sense??&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;-&amp;gt;&lt;/strong&gt; Because Java is no more free for production use. The organization needs to pay for the current version of Java SE 14.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) What is a Middleware??&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;-&amp;gt;&lt;/strong&gt; Middleware is like the bridge in between the Frontend, the backend and the Operating System. It is a software that provides common services to the applications beyond what's offered by the OS. It's like the connective tissue between the application, the data and the user. It runs between request-response cycle (between the client and the webserver).&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
