SauravDutt

Programmer | Learner | Tech Enthusiast
meWorking

“The function of good software is to make the complex appear to be simple.” - Grady Booch.

About

I am a self taught web developer and a learner, I like to research about latest tech, new frameworks and polish my skills. I have an insatiable curiosity for AI – particularly deep learning – applications and their potential to change the technology landscape. Brouse my past project at my github link below, each repository has an elaborately explained Readme.md file. Also feel free to download my resume.

Skills

Research

Research is the first and the most important stage towards making any big project, so this domain is an attempt to showcase my research, theory or learning along side your useful and much appreciated insights. But, before going through my research let's first turn on some Music.

Click on the Music link Above 👆

Research

Now that the background music is set, you can now go through my research on Diverse Areas of Advance Technology. The layout of the section is quite raw, since I am not a designer, just a learner, so please bare with me.

The diverse areas of advance technology.

As the very topic suggest we'll be discussing various advance technology like Blockchain, Artificial Neural Networks, Internet Of Things and many more, by python as our priamry language, we will also be going over automation using python. Link to the active projects of the technologies discussed before will be included in this section on the go. Post an insight if you want to discuss about some other piece of tech, or just found some incorrect stuff, all your insights are very valuable.

All the stuff below is at random so deal with it 🍻


Python Tips and Tricks

I just discovered that python3 comes with a preinstalled http-server just type the following in your terminal, if you have python3 installed, python3 -m http.server it will listen on port 8000 or depends. This section will include all the tips and tricks I'll find in python on the go!!

# 1 Get Location from a URL

Python-Tips-tricks Code-1 Code-1

# 2 OG Snake Game

snakeGame

You just havto pip install pygame and then follow my code on the snakeGame.py file in the /tip-trick repository. It's a simple ongoing game.

# 3 Internet Speed test

Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks

The code for the same is available at /tip-trick


Important !!

Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks Python-Tips-tricks

Web Development

What is a web server?

The term web server can refer to hardware or software, or both of them working together.

  1. On the hardware side, a web server is a computer that stores web server software and a website's component files. (for example, HTML documents, images, CSS stylesheets, and JavaScript files) A web server connects to the Internet and supports physical data interchange with other devices connected to the web.
  2. On the software side, a web server includes several parts that control how web users access hosted files. At a minimum, this is an HTTP server. An HTTP server is software that understands URLs (web addresses) and HTTP (the protocol your browser uses to view webpages). An HTTP server can be accessed through the domain names of the websites it stores, and it delivers the content of these hosted websites to the end user's device.
At the most basic level, whenever a browser needs a file that is hosted on a web server, the browser requests the file via HTTP. When the request reaches the correct (hardware) web server, the (software) HTTP server accepts the request, finds the requested document, and sends it back to the browser, also through HTTP. (If the server doesn't find the requested document, it returns a 404 response instead.)

webServer

To publish a website, you need either a static or a dynamic web server. For example, to produce the final webpages you see in the browser, the application server might fill an HTML template with content from a database. Sites like MDN or Wikipedia have thousands of webpages. Typically, these kinds of sites are composed of only a few HTML templates and a giant database, rather than thousands of static HTML documents. This setup makes it easier to maintain and deliver the content.

Now that we know how a website work on a brouser. Lets see how it's created.

Building Blocks of Web

HTML, CSS and JavaScript are considered the building blocks of the web, earlier a full blown website or a web application could be build, with just these three with some php and a backend like sql, but now things have changed. Front-end frameworks with Back-end frameworks are combinedly used to create dynamic, progressive web applications. Front-end framework like Vue js, Angular js, jQuery, React ( Reach - is not exactly a framework more like a javascript library) are used with a Back-end framework like Django (python), Express.js, Flask (python), with a Data-base management system like MySql, Oracle Database, PostgreSql or MongoDB, is used to create web applications.

But still HTML, CSS and JavaScript are the most important skills, every developer should know them, before moving on to frameworks and data bases.


Web Development Important Topics

API (Application Programming interface)

API is the acronym for Application Programming Interface, which is a software intermediary that allows two applications to talk to each other. Each time you use an app like Facebook, send an instant message, or check the weather on your phone, you're using an API.

What is an API used for?

API is uses to access data, server software or other applications and have been around for quite some time. APIs are very versatile and can be used on web-based systems, operating systems, database systems and computer hardware.

How does an API work?

An API is essentially a set of rules that dictate how two machines talk to each other. Some examples of API-based interactions include a cloud application communicating with a server, servers pinging each other, or applications interacting with an operating system.

Architecture of an API

APIs consist of three parts :-

Someone will build the server first, since it acquires and holds data. Once that server is running, programmers publish documentation, including the endpoints where specific data can be found. This documentation tells outside programmers the structure of the data on the server. An outside user can then query (or search) the data on the server, or build a program that runs searches on the database and transforms that information into a different, usable format.

Actions Can be perform through an API

An API is how two computers talk to each other. The server has the data and sets the language, while the client uses that language to ask for information from the server (FYI, servers do not send data without a client requesting data, but developers have found some ways around this with webhooks). APIs can do anything!

Well, not so fast. The language and syntax of APIs severely limits their abilities. There are four types of actions an API can take:


When you combine the endpoints with these actions, you can search or update any available information over an API. You’ll need to check the API documentation to find out how to code these actions, as they’re all different.

Ways we can make a request on a server:

Using an API

  1. Most APIs require an API key. Once you find an API you want to play with, look in the documentation for access requirements. Most APIs will ask you to complete an identity verification, like signing in with your Google account. You’ll get a unique string of letters and numbers to use when accessing the API, instead of just adding your email and password every time (which isn’t very secure).
  2. The easiest way to start using an API is by finding an HTTP client online, like REST-Client, Postman, or Paw. These ready-made (and often free) tools help you structure your requests to access existing APIs with the API key you received. You’ll still need to know some of the syntax from the documentation, but there is very little coding knowledge required.
  3. The next best way to pull data from an API is by building a URL from existing API documentation.

What are MVPs ?

MVP is an abbreviation for 'minimum viable product', and refers to the initial stage of creating the first workable (and saleable) version of your new business concept. Out-of-the-box solutions - Django comes with plenty of ready-to-use solutions and libraries. It's great not only for big development projects, but it also makes Django great for MVPs. High-quality documentation - comprehensive documentation makes developers' lives easier.


Blockchain

What is a Blockchain?

Blockchain is a system of recording information in a way that makes it difficult or impossible to change, hack, or cheat the system.

The Objective is to create a cryptocurrency, called the StashCoin , every thing about it is going to be open sourced, at /stashCoin, be sure to keep checking it out !!

Let's read through some of the additional but important things I have been researching on the go.

What is a node in Blockchain?

A blockchain node is an open-source, cross-platform runtime that allows developers to create various services. The P2P protocol allows nodes to communicate with each other within the network and transfer information about transactions and new blocks.

Network nodes are responsible for the correctness and reliability of storing the entered data in the distributed ledger. Each node can store a complete copy of the distributed ledger. Thanks to the blockchain nodes, any user can access the data and can view all transactions conducted or stored on the network.

Launching a network node used to be practically the only way to connect to the blockchain. Each new node contributes to the decentralization of the blockchain network, shortening the transaction time, and reducing fees.

By setting up your node, you receive a small income from the transactions that go through your channels.

Nodes participate in consensus, share information about transactions and the number of funds, confirm transactions and store copies of confirmations, participate in the building of new blocks in the chain, for which they receive a reward.

A business using nodes is built on receiving commissions for transfers, purchase/sale of cryptocurrency assets on the exchange.

Next Question is how to deploy a node?

To deploy a full node, a number of requirements must be taken into account. If earlier it was possible to launch a node on weak equipment, now, when blockchains have grown into popular networks, memory and processor power are a decisive factor in the successful deployment of a node.

Before starting to deploy a node, you need to clarify the minimum hardware requirements. They may differ for each of the currently existing cryptocoins. For example, the minimum requirements for installing a Bitcoin node are:

Running your own Ethereum node requires system administrator skills. Synchronization of an Ethereum node is possible in three modes: fast, full, and light. By default, fast is used. In this mode, there is no download of transaction history, wallet balances, smart contract codes.

The most expensive is full mode as it requires powerful hardware: 16 Gb of RAM and a capacious SSD disk. Synchronization of the Ethereum archive node with tracing can take several weeks, and even then, on an SSD disk. In case of an error in the client/software version for a node, it is necessary to re-synchronize the node from scratch. This can be an expensive process. You should also take care of the security of your site, which will require cybersecurity skills.

If you start synchronization from the HDD (hard disk), the node may not "sync" due to the difference between the speed of blockchain creation (as a rule, it is higher) and the speed of writing to disk. Both the speed of the network connection and the power of the equipment are important.

The Ethereum light node synchronization mode has the most complaints. Errors often occur, although this mode is one of the most balanced: fast synchronization, less resource use, wallet balances, and smart contracts are pulled up.

At the time of writing, the Bitcoin network is supported by over 11 thousand nodes. Most of them are deployed in North America and Western Europe. There are 6447 active Ethereum nodes, according to the statistics of 10 countries with the highest number of nodes.

You can connect a node either to the main network or run it on a test network for any of your purposes: testing, development.

The standard Ethereum node runs right in the console by default. It runs as a background process by writing service in the system or starting a node on the screen. You should carefully monitor in which mode the node is started. If the node is run in test mode, then you will not be able to track transactions.

To install a Bitcoin node, you need to create a folder to store blockchain data somewhere in your filesystem. To sync the full bitcoin blockchain, 380 GB is required today.

The process can take a long time. Hardware problems can also be detected, and an interrupted download will resume from the moment it was interrupted. After a successful copy, the client starts the blockchain synchronization process. Further, to start the node, you need to allow an incoming connection through port 8333 in your firewall.

The next step is to check if the node is working. To do this, send a request to the node with any information about the service, or request data from the blockchain.

You will also want to monitor the node, for which you can use a standard service availability check on the TCP port. If the node crashes, you will have to restart it manually.

Problems might face when deploying a node yourself :

  1. Limited bandwidth: Some internet plans will charge extra for using excess bandwidth not included in the plan. Make sure you don't have traffic restrictions before deploying your node. Additionally, the internet connection may be unstable. If the synchronization of the node with the blockchain network will be interrupted, then a restart is required.
  2. If site deployment occurs on your business network, it can slow down or bottleneck in normal network traffic.
  3. Parts of known computer viruses have been placed by a group of people on the bitcoin blockchain. It is not possible to infect your computer with such data, but some antivirus programs move them to quarantine, which makes it difficult for the bitcoin core to work. Most often this fact takes place on computers running Windows.
  4. A third party (hackers) might find that a new full node is up and running and try to hack it. You are entirely responsible to ensure your node is not hacked.

As a summary, launching a full node on your own requires you: financial costs for purchasing equipment complying with that node requirements, ensuring uninterrupted Internet connection, and the ability to use the command line.


End Goal

Objective # 1 Research - Learning

The objective is to create a Cross Platform Application, either by React Native or Flutter, The app will be available on App store and play store, the UI and UX will be extremely simple, the app will have a database user authentication and every thing. Flutter is new and is by google, where as react native is old and is by facebook. For Flutter I havto learn a new programming language Dart, where as in React Native it's just JavaScript. So React Native it is, I have already started working on it at /Fist-React-Native-App, the layout will be quite similar to this website the background color will always be #1f1f1f, I will havto try to get the logo font and other google fonts in the application, will also havto get the authentication part out of the way, after that I'll think over the functionality of the application. Once the functionality is decided I'll then quickly complete the app, and deploy it on the respective platforms. If I can use Google Firebase it'll be great, But if its not possible I might havto learn Mongo DB. I think it is possible to add Google Firebase to a react applications. I also havto figure out how to add FontAwesome icons in the react native app, In shot there is a lot to be done.

Core Components and Native Components

React Native is an open source framework for building Android and iOS applications using React and the app platform’s native capabilities. With React Native, you use JavaScript to access your platform’s APIs as well as to describe the appearance and behavior of your UI using React components: bundles of reusable, nestable code. You can learn more about React in the next section. But first, let’s cover how components work in React Native.

Views and mobile development

In Android and iOS development, a view is the basic building block of UI: a small rectangular element on the screen which can be used to display text, images, or respond to user input. Even the smallest visual elements of an app, like a line of text or a button, are kinds of views. Some kinds of views can contain other views. It’s views all the way down!
webServer

Native Components

In Android development, you write views in Kotlin or Java; in iOS development, you use Swift or Objective-C. With React Native, you can invoke these views with JavaScript using React components. At runtime, React Native creates the corresponding Android and iOS views for those components. Because React Native components are backed by the same views as Android and iOS, React Native apps look, feel, and perform like any other apps. We call these platform-backed components Native Components.

React Native comes with a set of essential, ready-to-use Native Components you can use to start building your app today. These are React Native's Core Components.

React Native also lets you build your own Native Components for Android and iOS to suit your app’s unique needs. We also have a thriving ecosystem of these community-contributed components. Check out Native Directory to find what the community has been creating.

Core Components

React Native has many Core Components for everything from form controls to activity indicators. You can find them all documented in the API section. You will mostly work with the following Core Components:

webServer

React-Native is somuch like React js, there are two types of components one is Function Components and the other one is Class Components, the Function component uses Hooks and props, hooks like useState and so on... The above taple shows what are the different tags in react-native each functional component returns some kind of JSX.

Objective # 2 Insight - First Practice application

Insight is a Research posting mobile application, that allows the user to login or signup, to post there research, coz research in general is learning and we all learn some thing every day. The layout is quite simple but the app is full of gifs on ios there is no problem in loding gif file but for Android, I will havto import third party modules, which is no problem. But this app is not for production, it is just a practice application, trying to cover all the concepts of react-native. The end goal or the main objective is to combine my react-native application to the django backend. after this practice application, I'll start working on my main application, The idea is still not decided, but I'll soon figure something out. The layout and the functioning of the practice application is as follows :-

Mock-up

This will be the commom area which will come after the app is loaded successfully. The user can go throught the public posts and research and then can login or signup and share there own learning.



This application will never be produced, It is just a practice application. Feel free to check out the code to this app at /Fist-React-Native-App, pretty soon after this I am going to start my end game project, mobile app for Android and Ios, with React Native and Django.


Dream Project

drone

# Introduction

The idea is to make a drone surveillance system, as a mobile app ios and android, with that app the user can controle a maximum of four drones, the entire screen splits into four sections in the land-scape mode.


Incomplete Projects :-

  1. There are some incomplete embarrassing project Canvas_Practice, it's all up to you to check it out, not advisable.
  2. There is another on going project for the university, Newseletter | Sushant University.

For any insights or correction please write me at sauravd069@gmail.com

playlist

The Playlist is full of awesome songs click on " " button and enjoy. Feel free to explore other songs by " " and " " buttons. Click on " " to see all the songs in the playlist or click " " to add a song to the list. PLEASE ROTATE YOUR PHONE, for a better experience. This playlist is not for any commercial use, no desire for any monetory benefits.

# Let's continue with reading Research ☝️ .

music-cover
last updated 2021.

Contactme

Reach me out at the following.

+91 9958479837

sauravd069@gmail.com

Gtown/India

Be sure to check that out GameOne and Gtown.sauravdutt.com.