This repository is my personal documentation of my journey of learning, best practices and conventions
Started from a small town called Imphal in the North-Eastern part of India, Where getting a public job is the only goal & safest way to live a life, Defying everything to pursue my passion and Choosing a Social Misfit career as a Computer Science Engineer To become a Software Engineer & A first-generation entrepreneur. I completed high school in my city and moved to Chandigarh to pursue my passion and degree As a computer science engineer.
Currently working as a software engineer in Banglore, India In a start-up that manages business Operations and Human resources globally.
βWhen you discover your mission, you will feel its demand. It will fill you with enthusiasm and a burning desire to get to work on it.β β W. Clement Stone
- Developers Roadmaps is a community effort to create roadmaps, guides and other educational content.- https://roadmap.sh/
- System Design Interview Roadmap and Resources - https://medium.com/coderbyte/system-design-interview-roadmap-and-resources-e22d702b44da
This is my personal software development process that i followed in most of the project that i work with.
Style | Use Case | Example |
---|---|---|
PascalCase | File Names | UserProfile.js |
camelCase | Repository Names | myProject |
snake_case | Variable Names | user_input |
dash-case | Class Names | header-container |
- Go Thinkster - Real world Application Starter Kit & Examples - https://github.com/gothinkster
- Design Resources for developers - https://github.com/bradtraversy/design-resources-for-developers
LEARN
- Coding Interview University - https://github.com/jwasham/coding-interview-university
- Free-programming-books - https://github.com/EbookFoundation/free-programming-books
- π¨ Tinacious Design Theme
- π― Bracket Pair Colorizer
- π¬ Better Comments
- π Emoji
- π Material Icon Theme
- π Psioniq File Header
- βοΈ Code Spell Checker
- π Error Lens
- π GitLens
- π― Jira And Bitbucket
- π Todo Tree
- π Version Lens
- Fireship - Quick, practical tutorials
- Traversy Media - Full-stack development
- FreeCodeCamp - Comprehensive tutorials
- Web Dev Simplified - Web development concepts
- Scott Hanselman - Technology and coding
- Fireship - https://www.youtube.com/c/Fireship
- Traversy Media - https://www.youtube.com/c/TraversyMedia
- FreeCodeCamp - https://www.youtube.com/c/Freecodecamp
- Programming with Mosh - https://www.youtube.com/c/programmingwithmosh
- Web Dev Simplified - https://www.youtube.com/c/WebDevSimplified
- Eli the Computer Guy - https://www.youtube.com/c/Elithecomputerguypage
- Scott Hanselman - https://www.youtube.com/c/shanselman
- Coding Train - https://www.youtube.com/c/TheCodingTrain
- LevelUpTuts - https://www.youtube.com/c/LevelUpTuts
- Tania Rascia - Full StackDeveloper - https://www.taniarascia.com/
- Agile Software Development - Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments.
My Own curated way of Documenting a software product
- INFORMATION GATHERING
- REQUIREMENT ANALYSIS
- WORKFLOW
- LIFE CYCLE
- ARCHITECTURE
- DATA MODELS
- UI FLOW
- API
- STATES
- Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. - https://git-scm.com/
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Once done, you can confirm that the information is set by running:
git config --list
GRADIENTS FINDER
- UIGradients- https://uigradients.com/#Maldives
ICONS
- Icons- https://icon-icons.com
- Logo Design - https://smashinglogo.com/en/
- Iconscout - https://iconscout.com/
- Open source icons - https://remixicon.com/
- Icons and Photos For Everything - https://thenounproject.com/
ILLUSTRATION
- Undraw Open source Illustration - https://undraw.co
- Story set - https://storyset.com/
- Icons8 - https://icons8.com/illustrations
- Designs.AI - https://designs.ai/graphicmaker
- DrawKit - https://www.drawkit.io/free
- Free illustratious - https://freeillustrations.xyz/
- Free Web illustrations - https://freewebillustrations.com/
- Free Illustration - https://lukaszadam.com/illustrations
- Vecteezy - https://www.vecteezy.com/free-vector/vector-illustration
- Humaaans - https://www.humaaans.com/
- Freebie Supply - https://freebiesupply.com/free-vector/
- Absurd Illustratioin - https://absurd.design/
- Outlane - https://outlane.co/now/freebie-vector-potions-illustrations/
TEMPLATES
- Bootstraps Templates - https://startbootstrap.com/
DESIGN RESOURCES
- Interfacer - https://interfacer.xyz/
1. What is an API (Application Programming Interface)?
An application programming interface is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification.
- Acts as a bridge between different computer programs
- Provides a structured way to share data and functionality
- Comes with detailed specifications for implementation
2. What is an SDK (Software Development Kit)?
An SDK is just a pre-packaged set of code (for a specific language) that you donβt have to write yourself.Sometimes free and sometimes you have to, purchase them.There are all sorts of other SDKs out there including things like an SDK to simplify building a User Interface.
- Pre-built code for specific programming languages
- Can be free or paid
- Potential downsides:
- Large file sizes
- May include unused functionality
- Potential security risks
π‘ Prefer open-source SDKs when possible for better security and transparency
3. What is a Framework?
A framework is a skeleton where the application defines the "meat" of the operation by filling out the skeleton. The skeleton still has code to link up the parts but the most important work is done by the application.
A framework inverts the control of the program. It tells the developer what they need.
Examples of frameworks: Web application system, Plug-in manager, GUI system. The framework defines the concept but the application defines the fundamental functionality that end-users care about.
- Provides basic architecture
- Controls program flow
- Examples:
- Web application systems
- Plugin managers
- GUI systems
π‘ Frameworks follow the "inversion of control" principle - they call your code, rather than you calling them
4. What is a Library?
TL;DR: A collection of pre-written code for specific operations.
- Network protocols
- Compression utilities
- Image manipulation
- String utilities
- Math operations
π‘ Libraries are called by your code, giving you more control over program flow
5. Relational vs Non-Relational Databases
-
Relational Database : RDBMS stands for Relational Database Management Systems. It is most popular database. In it, data is store in the form of row that is in the form of tuple. It contain numbers of table and data can be easily accessed because data is store in the table. This Model was proposed by E.F. Codd.
-
Non Relational (NoSQL) : NoSQL Database stands for a non-SQL database. NoSQL database doesnβt use table to store the data like relational database. It is used for storing and fetching the data in database and generally used to store the large amount of data. It supports query language and provides better performance.
Feature | Relational (SQL) | Non-Relational (NoSQL) |
---|---|---|
Data Velocity | Low | High |
Scalability | Read-only | Read & Write |
Data Type | Structured | Any |
Reliability | Single point of failure | No single point of failure |
Deployment | Vertical | Horizontal |
Relational Database | NoSQL |
---|---|
It is used to handle data coming in low velocity. | It is used to handle data coming in high velocity. |
It gives only read scalability. | It gives both read and write scalability. |
It manages structured data. | It manages all type of data. |
Data arrives from one or few locations. | Data arrives from many locations. |
It supports complex transactions. | It supports simple transactions. |
It has single point of failure. | No single point of failure. |
It handles data in less volume. | It handles data in high volume. |
Transactions written in one location. | Transactions written in many locations. |
Deployed in vertical fashion. | Deployed in Horizontal fashion. |
6. What are Microservices?
An architectural approach where applications are built as a collection of small, independent services.
- β Highly maintainable and testable
- π Loosely coupled
- π Independently deployable
- πΌ Business-oriented
- π₯ Managed by small teams
π‘ Enables rapid delivery and easy technology stack evolution
7. What is the Entity-Attribute-Value (EAV) Model?
The Entity-Attribute-Value (EAV) model is a data modeling approach used to represent complex and dynamic data structures. In this model, data is organized into three components: entities, attributes, and values.
- Entities: These are objects or concepts that are being described in the model. Examples of entities could be customers, products, orders, or any other object of interest.
- Attributes: These are characteristics or properties of the entities being described. Examples of attributes for a customer entity could be name, address, or email address.
- Values: These are the specific values associated with each attribute for each entity. For example, for the customer entity, the name attribute may have the value "John Smith," while the address attribute may have the value "123 Main Street." The EAV model is useful in situations where there is a need for flexibility in data modeling, such as when dealing with data that has many optional attributes, or when the attributes of an entity can change frequently. However, it can also lead to complex queries and difficulty in maintaining data integrity. Therefore, it should be used judiciously and with careful consideration of the trade-offs involved.
Here's an example of how an EAV model could be represented in a table format.
Let's say we have a simple online store that sells books, and we want to store information about each book in our database. In a traditional database design, we would create a table with columns for each attribute of the book, such as title, author, publisher, ISBN, etc. However, in an EAV model, we would create three tables: one for entities, one for attributes, and one for values.
Here are the tables we would create:
entity_id | entity_type |
---|---|
1 | Book |
2 | Book |
attribute_id | attribute_name |
---|---|
1 | Title |
2 | Author |
3 | Publisher |
4 | ISBN |
entity_id | attribute_id | value |
---|---|---|
1 | 1 | Harry Potter and the Philosopher's Stone |
1 | 2 | J.K. Rowling |
1 | 3 | Bloomsbury Publishing |
1 | 4 | 0747532699 |
2 | 1 | The Catcher in the Rye |
2 | 2 | J.D. Salinger |
2 | 3 | Little, Brown and Company |
2 | 4 | 0316769487 |
In this example, the Entity Table contains two rows representing two different books, each with a unique entity_id. The Attribute Table lists the different attributes we want to store for each book, such as title, author, publisher, and ISBN, each with a unique attribute_id. The Value Table contains rows for each combination of entity_id and attribute_id, along with the value associated with that combination.
For instance, the first row in the Value Table tells us that for the book with entity_id 1, the title attribute has the value "Harry Potter and the Philosopher's Stone", the author attribute has the value "J.K. Rowling", the publisher attribute has the value "Bloomsbury Publishing", and the ISBN attribute has the value "0747532699". Similarly, the second row in the Value Table tells us that for the book with entity_id 2, the title attribute has the value "The Catcher in the Rye", the author attribute has the value "J.D. Salinger", the publisher attribute has the value "Little, Brown and Company", and the ISBN attribute has the value "0316769487".
COUNTER 2 NOV 3 NOV 4 NOV 5 NOV 8 NOV 10 NOV 11 NOV 12 NOV 13 NOV 14 NOV 15 NOV 16 NOV 17 NOV 18 NOV 19 NOV 20 NOV 21 NOV 22 NOV 23 NOV 24 NOV