<?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: Mukul Bichkar</title>
    <description>The latest articles on DEV Community by Mukul Bichkar (@mukulbichkar).</description>
    <link>https://dev.to/mukulbichkar</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%2F114701%2F75748e5e-6f4a-454b-9332-3cff99a61689.jpeg</url>
      <title>DEV Community: Mukul Bichkar</title>
      <link>https://dev.to/mukulbichkar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mukulbichkar"/>
    <language>en</language>
    <item>
      <title>Common Acronyms Every Newbie in Software Engineering Should Know - Part 2</title>
      <dc:creator>Mukul Bichkar</dc:creator>
      <pubDate>Mon, 19 Nov 2018 16:00:42 +0000</pubDate>
      <link>https://dev.to/mukulbichkar/common-acronyms-every-newbie-in-software-engineering-should-know-part-2-1i0f</link>
      <guid>https://dev.to/mukulbichkar/common-acronyms-every-newbie-in-software-engineering-should-know-part-2-1i0f</guid>
      <description>&lt;p&gt;In continuation to my previous &lt;a href="https://dev.to/mukulbichkar19_74/common-acronyms-every-newbie-in-software-engineering-should-knowpart-1-343l"&gt;blog post&lt;/a&gt;, this is the final blog regarding the acronyms every beginner in software engineering should know. Hope you find this helpful.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. AJAX - Asynchronous JavaScript and XML
&lt;/h2&gt;

&lt;p&gt;Is a new methodology of using existing technologies like HTML (Hyper Text Markup Language) or XHTML (Extensible Hypertext Markup Language), CSS (Cascading Style Sheets), JavaScript, DOM (Document Object Model), XML (Extensible Markup Language), XSLT (Extensible Stylesheet Language Transformations) and the XMLHttpRequest object. When these technologies are used in they allow web applications to make incremental changes to the user interface without reloading the entire browser page. A simple example that most of us have seen in social media websites like facebook, wherein if you scroll the page in the browser it fetches new data without reloading the entire web page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/6nmd73fcez7qduilh0gu.jpg"&gt;https://thepracticaldev.s3.amazonaws.com/i/6nmd73fcez7qduilh0gu.jpg&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. BASH - Bourne Again Shell
&lt;/h2&gt;

&lt;p&gt;The Bourne shell or sh is a basic shell i.e. a small program with few features. The Bourne shell is not a standard shell but it is still available on every Linux system for compatibility with UNIX programs. Bourne Again Shell, on the other hand, is the GNU standard shell, intuitive and flexible. On Linux, bash is the standard shell for common users. It is a super-set of the Bourne shell which contains some more add-ons and plugins. Bourne Again Shell is compatible with Bourne Shell but the reverse is not true.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. BAT - Batch File
&lt;/h2&gt;

&lt;p&gt;A batch file is similar to the shell script in Linux. But it is compatible with DOS, OS/2 and Microsoft Windows. It is made up of sequence of commands to be executed by the command-line interface, stored in a plain text file. They are used to automate everyday tasks thereby reducing the time required. The term batch arises from batch processing, meaning non-interactive execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/hpj8eyhhwx29u6yyx29d.png"&gt;https://thepracticaldev.s3.amazonaws.com/i/hpj8eyhhwx29u6yyx29d.png&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. CLI - Command Line Interface
&lt;/h2&gt;

&lt;p&gt;A Command Line Interface is a command line program that accepts text input to execute operating system functions. Before the arrival of the mouse, CLI’s were the only way to interact with computers. Today most users use GUI or Graphical User Interfaces and rarely use CLI. However, CLI is used by software engineers and system administrators to configure computers, install software and access features not available in the GUI (Graphical User Interface).&lt;/p&gt;

&lt;h2&gt;
  
  
  5. CRUD - Create, Read, Update, Delete
&lt;/h2&gt;

&lt;p&gt;In software engineering CRUD stands for Create, Read, Update and Delete which are the basic functions of persistent storage or database. When we are creating API’s we want the models to provide all these four functionalities. The model must be able to create a new resource, read which returns the resource if already created, update an existing resource and delete any existing resource.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/31726jjyi87cnjmi7hm6.jpg"&gt;https://thepracticaldev.s3.amazonaws.com/i/31726jjyi87cnjmi7hm6.jpg&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. DOM - Document Object Model
&lt;/h2&gt;

&lt;p&gt;It is a cross-platform and language-independent application programming interface that treats an HTML (Hyper Text Markup Language), XHTML (Extensible Hypertext Markup Language) or XML (Extensible Markup Language) as a tree structure where each node is an object representing a part of the document. DOM represents a document with a logical tree. Each branch of the tree ends as a node and each object contains objects. DOM methods allow programmatic access to the tree, which makes it possible to manipulate the document structure, style or content. Nodes can also have event handlers attached with them, which are executed when an event is triggered.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. JIT Compilation - Just In Time Compilation
&lt;/h2&gt;

&lt;p&gt;A JIT compilation is a way of executing computer code that involves compilation during execution of a program - at runtime as opposed to prior to execution. To understand this we need to understand the role of compilers and interpreters. Compilers and interpreters both convert the code from human-readable form to machine code, what differs is the way they operate. A compiler converts the code into computer’s native language up-front well before the program is even run. Some compiled languages include C, C++, Scala etc. On the other hand, interpreter converts the code from human-readable form to machine code one line at a time. Some common interpreted languages are JavaScript, Java, Python etc. JIT compilers are not just next-gen compilers, they don’t just run the code but they improve it over time. JIT compilers take the source code and convert it into an intermediary “assembly language”, which can then be pulled from when needed. Assembly code is interpreted into machine code on call-resulting in a faster translation of the code that you need. JITs monitor and optimize while they run. By identifying the parts of the code that are used more frequently then the others they are able to refine frequently used instructions and make them run in the future. Java has a JIT as a part of JVM, and Android has a JIT in it’s Dalvik Virtual Machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. LTS - Long Term Support
&lt;/h2&gt;

&lt;p&gt;LTS stands for Long Term Support. You may find these term associated with most of the open-source software. For example, Node.js versions like 10.13.0 LTS or Ubuntu 18.04.1 LTS etc. LTS means that the released piece of software will be maintained for a longer period of time. For example in terms of Ubuntu, a new Ubuntu Desktop and Ubuntu Server release every 6 months, whereas a LTS is released every 2 years. And a LTS has a support period of 3 years support for Ubuntu desktop and 5 years for Ubuntu Server. It’s advisable to use LTS versions in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. DRY - Don’t Repeat Yourself
&lt;/h2&gt;

&lt;p&gt;DRY stands for Don’t Repeat Yourself is a basic software development principle to avoid duplication of code. The advantages DRY bring is the maintainability, readability, reusability, and testing. Unit testing becomes a lot easier when you use the DRY approach.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/i73wcrwsdev2xi8avzka.png"&gt;https://thepracticaldev.s3.amazonaws.com/i/i73wcrwsdev2xi8avzka.png&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. TDD - Test Driven Development
&lt;/h2&gt;

&lt;p&gt;Test Driven Development is a software development process in which each requirement is turned into very specific test cases, then the software is improved to pass the new tests only. Following is a sequence of steps for test-driven development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add a test&lt;/strong&gt;: Each new feature starts with writing a test. To write the test the developer should completely understand the feature's specification and requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run new tests for failure&lt;/strong&gt;: Run the new tests and check whether they all fail, which is the expected behaviour since there is no code for the test cases written.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the code&lt;/strong&gt;: In this step, we write the code to pass the tests. Even though all the test cases pass, the code may not be perfect or optimized. However, this will be improved in step 5 when we refactor the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run all tests for success&lt;/strong&gt;: In this step, all test cases are executed, and if all test cases pass this gives confidence to the developer that the new feature does not break any existing parts of the system. If the new code changes break any existing part of the system then the new code must be adjusted till all the test cases pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactor code&lt;/strong&gt;: In this step, the new code is refactored i.e. it is examined for duplication. It is in this step that the Object, class, variable and methods are named clearly to make the code readable and also clearly represent their purpose. Applying design patterns if necessary is done in this step. The developer continually re-runs the test while refactoring the code and this gives him confidence that the changes are not affecting the existing functionality.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>softwareengineering</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Common Acronyms Every Newbie in Software Engineering Should Know — Part 1</title>
      <dc:creator>Mukul Bichkar</dc:creator>
      <pubDate>Wed, 14 Nov 2018 15:15:17 +0000</pubDate>
      <link>https://dev.to/mukulbichkar/common-acronyms-every-newbie-in-software-engineering-should-knowpart-1-343l</link>
      <guid>https://dev.to/mukulbichkar/common-acronyms-every-newbie-in-software-engineering-should-knowpart-1-343l</guid>
      <description>&lt;p&gt;Ever since I started programming and even today whenever I read the documentation I come across many acronyms or jargons which are pretty common in software engineering. Knowing the full-forms is not mandatory but knowing what it means and what it does is important. So, I have compiled a list of common acronyms that are commonly used and might help some others like me.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;FTP — File Transfer Protocol&lt;br&gt;
It’s a network protocol for transferring files between a client and a server on a network. FTP is built on a client-server model which uses two different connections namely control and data to communicate between the client and the server. The control channel is used only for controlling the communication whereas it’s the data channel that handles the actual file transfer. Using FTP, a client can upload, delete, update, download, rename, move or copy files on a server. FTP works in two different modes i.e. active and passive which determine how the connections are made. In active mode, the client establishes the control channel with the server whereas the data channel is established by the server. Whereas in the passive mode both the control and data connection is established by the client. So, the passive mode helps in scenarios when the client is guarded by a firewall and server cannot establish a connection with the client.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TCP/IP — Transmission Control Protocol/Internet Protocol&lt;br&gt;
So, TCP/IP as the name suggests consists of 2 parts TCP and IP. IP is the address system of the internet and its sole responsibility is to deliver packets of information from source to destination. It cannot handle the error checking or ordering of this packets that’s where the TCP comes to rescue. It’s something like sending a puzzle in different pieces through the mail and the different pieces can travel different routes and arrive out of order. The IP ensures that the pieces arrive at the destination. It’s TCP who is responsible for assembling the pieces together and also communicates if any of the pieces are missing. TCP is the one who maintains a connection with the sender before the first piece is sent to after the last piece is sent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WYSIWYG — What You See Is What You Get&lt;br&gt;
WYSIWYG is an editor, program or a website that allows the user to see the end results or outcome while they are working on the code or document. A simple and most commonly used example of a WYSIWYG editor is Microsoft Word. Another example of WYSIWYG HTML editor is Adobe’s Dreamweaver.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;REPL — Read Eval Print Loop&lt;br&gt;
A simple, interactive computer programming environment that takes user inputs, evaluates them, and then print/returns the result to the users. The 3 steps in each iteration of the loop consist’s of:&lt;br&gt;
Read: Reads the user input parses it and stores it into a data structure in memory.&lt;br&gt;
Eval: Evaluate takes the data structure created in step 1 and evaluates the expression.&lt;br&gt;
Print: Prints the result of the expression evaluation obtained in step 2 and throws it back for the user to see it.&lt;br&gt;
A most common example that all software developers use daily is the CLI a.k.a (also known as) the Command Line Interface or Powershell for Windows Ecosystem. Many languages that support REPL are Python, Node.js, JavaScript etc. to name a few.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F0VIEHTd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/87your320gsavr7ov457.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F0VIEHTd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/87your320gsavr7ov457.PNG" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;API — Application Programming Interface&lt;br&gt;
An application programming interface is a set of well-defined procedures that facilitate the communication between two systems, components etc. It specifies how the components should interact. API is like a restaurant menu card, which has a list of dishes along with a description of the dish. You order a dish and don’t worry about how the restaurant kitchen makes the dish, you are only concerned about the delicious food. And any developer uses multiple 3-party API’s in most of the modern day web or mobile apps. Some common examples are the Google Maps API, Youtube API or Facebook API for logging in users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ORM — Object Relational Mapping&lt;br&gt;
It is a technique of converting data between incompatible systems using object-oriented programming languages. ORM tools provide a framework for mapping an object-oriented domain model to a relational database. They provide a way to handle object-relational impedance mismatch problems. ORM reduce the lines of code and provide the advantage of caching which reduces the load on memory. Common ORM tools and frameworks are Hibernate, Entity Framework, SQLAlchemy etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XUX7B1fo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/k6l6dd1on7uft2q1vfd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XUX7B1fo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/k6l6dd1on7uft2q1vfd7.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;LOB, CLOB and BLOB — Large OBject, Character Large OBject, Binary Large OBject&lt;br&gt;
Large Object is a data type for storing large objects. Character Large OBject is a collection of character data in a database management system (DBMS). A CLOB is used to store Unicode character based-data, such as large documents in any character set. A Binary Large OBject is a collection of binary data stored as a single entity. BLOB’s are typically images, audio, or other multimedia objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ER diagram — Entity Relationship Diagram&lt;br&gt;
Before understanding entity relationship it’s important to understand Entity. An entity is a definable thing like a person, object, concept or an event — that can have some data stored about it. They are nouns for example, a customer, car, student etc. Entity relationship diagrams illustrate how the entities relate to each other within a system. ER diagrams are generally used in database design.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;KISS — Keep It Simple, Stupid&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I5r53ITR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rwjixvz4wwuc8ookmaiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I5r53ITR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rwjixvz4wwuc8ookmaiv.png" alt=""&gt;&lt;/a&gt; &lt;br&gt;
KISS principle is about keeping the code simple, clear and readable. Writing code that is easy to understand and decipherable to humans other than yourself. A basic example is to write methods that are small and not exceed more than 40 to 50 lines of code. Each method should have a single functionality and should not solve multiple use cases. An advantage of following KISS principle in code helps other developers who pick up your code and it saves a few hours in understanding the code and implementing the changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SDK — Software Development Kit&lt;br&gt;
A Software Development Kit is a downloadable software package that contains tools needed to build on a platform. It is heavily customized for a platform and contains libraries, APIs, Integrated Development Environment (IDE), and other tools which aid in debugging, building, running and testing your application. In a real world let’s say you need wheat bread, you cannot go to farm plant, grow and harvest wheat and make bread. It’s too much time and not worth the effort. So in terms of Software engineering, this is where SDK comes in. The libraries in Bread SDK would contain pre-written function like plantWheat(), growWheat(), harvestWheat() and makeBread() that the developer can call to make the process easy.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>softwareengineering</category>
      <category>beginners</category>
      <category>acronyms</category>
      <category>bootcamp</category>
    </item>
  </channel>
</rss>
