Wilford  Pagac

Wilford Pagac

1599937200

How to Build Your SRE Team

As you implement SRE practices and culture at your organization, you’ll realize everyone has a part to play. From engineers setting SLOs to management upholding the virtue of blamelessness to marketing teams conducting retrospectives on email campaigns, there’s no part of an organization that doesn’t benefit from the SRE mentality.

However, while it’s not necessary to have people with the title of ‘SRE’ to successfully adopt the best practices of SRE, having people who are dedicated to stewardship of SRE practices is important to achieve reliability excellence. In this blog post, we’ll look at some of the many roles an SRE can play, and how to find people with those skill sets.

#devops #teams #site reliability engineering #site reliability #site reliability engineer #site reliability engineering tools

What is GEEK

Buddha Community

How to Build Your SRE Team
Chet  Lubowitz

Chet Lubowitz

1595429220

How to Install Microsoft Teams on Ubuntu 20.04

Microsoft Teams is a communication platform used for Chat, Calling, Meetings, and Collaboration. Generally, it is used by companies and individuals working on projects. However, Microsoft Teams is available for macOS, Windows, and Linux operating systems available now.

In this tutorial, we will show you how to install Microsoft Teams on Ubuntu 20.04 machine. By default, Microsoft Teams package is not available in the Ubuntu default repository. However we will show you 2 methods to install Teams by downloading the Debian package from their official website, or by adding the Microsoft repository.

Install Microsoft Teams on Ubuntu 20.04

1./ Install Microsoft Teams using Debian installer file

01- First, navigate to teams app downloads page and grab the Debian binary installer. You can simply obtain the URL and pull the binary using wget;

$ VERSION=1.3.00.5153
$ wget https://packages.microsoft.com/repos/ms-teams/pool/main/t/teams/teams_${VERSION}_amd64.deb

#linux #ubuntu #install microsoft teams on ubuntu #install teams ubuntu #microsoft teams #teams #teams download ubuntu #teams install ubuntu #ubuntu install microsoft teams #uninstall teams ubuntu

Aditya Goswami

Aditya Goswami

1613637410

How To Hire Dedicated Software Development Team

We all have been agreeing that we need to take the help of top talent to fulfill the requirements of our complex tasks at some business point. Sometimes, your in-housing team fails to match client’s requirements, or we can say market needs. At that moment, you need to take one step forward and hire dedicated software development team to match the client’s requirements and market trends. Before going ahead, take a look at the dedicated development team model.

When you are going to do a partnership with a software development company, a dedicated software development team is one method. On the other hand, fixed price and time are other models. Every model has its uniqueness, benefits, and drawbacks. Let’s talk about a dedicated development team.

When clients look for a dedicated team for software development, they want to hire a team of developers to fulfill the tasks of the complex project. That team of developers collaborates with the in-housing squad, although they work remotely. They take responsibility for the project and try to make the project successful. They dedicate themselves to match all requirements of the project in the market or the latest trends.

How To Hire Dedicated Software Development Team

Dedicated software development team - Talents

  • Backend and frontend developers
  • Project manager
  • Business analysts
  • DevOps
  • UX/UI designers
  • Quality assurance engineers

When hiring a development team is a Good Choice?

  • When you have some complex project, and the in-housing team is inexperienced.

  • When you don’t have a resource of the dedicated web development team to match the complexity of your projects.

  • When you want to take your business to the next level in terms of client satisfaction and expertise.

  • When you have multiple projects aligned with the same deadlines, a software development dedicated team is an excellent choice to go with.

  • When you don’t have enough time to hire a team of developers for your in-house.

  • When you expand your business with a dedicated software development team, they take care of your specific needs and reach out to all the possible and desired objectives.

Benefits of outsourcing a dedicated team

Because of the following reasons, you need to hire development teams for your business.

Cost-effectiveness
When looking for a dedicated development team for hire, you do not require to spend your valuable time hiring IT specialists individually and forming a team. You also not needed to build an infrastructure for them. They will work remotely with their resources, so there is no additional cost. They can start working on your project by the time you hire dedicated team, and there is no delay or settlement needed.

Focus on the projec

The software dedicated development team you hire does the work for only your project during the set time period. So, their full focus is solely on your project.
You can also check the work process and get updates regarding your project regularly. This collaboration takes your project to the next level and provides the best satisfaction to the clients.

Flexible approach

A dedicated development team is the best choice for large-scale projects. It gives you one benefit: if you require more developers between the projects or want to cut down your team size, you can do it. Dedicated developers are very flexible; they take any issues and react to get the best output accordingly.

Maximum effect and speed

They understand your business goals and understand the importance of matching deadlines. They keep track of work progress, so they can give you the reports of completed tasks and future outlines if you ask. You will get maximum efficiency and high speed with a dedicated team for software development.

After knowing the advantages of developers outsourcing dedicated teams, we are now going to look at how to hire dedicated software development team.

How to hire dedicated software development team?

Hire a development team for your organization is a stressful task for organizations as you need to focus on several factors. I know it is a crucial task for your organization, but stress, you do not need to think about. A few ways are available to hire a dedicated software development team for your organization, like finding them from Google organic search or B2B portals.

Narrowing down your search, and select partner through:

  • Google top 10 result
  • B2B portal (Clutch)
  • Freelance workplaces (Upwork)
  • StackOverflow
  • GitHub

How to Set-up, a dedicated software development team?

After choosing your offshore partner, now it’s time to follow the process for setting up your dedicated development team.

Well-defined business objectives are needed.

You need to explain all your business requirements, including the deadline and desired workflow you wanted, development team size, and type of expertise you require.

**Assembling the team **

Individual hiring can take one or more months, but with a dedicated team model, you bring your team to your work within one week.

Talent selection

After finding a dedicated team, selected the best-qualified team for your project with factors like expertise, efficiency, tech skill, English fluency, and other aspects of your project.

Integrating the team

After selecting the team based on your skills requirements, the group joins the project in progress quickly. Now, we can say business owners take the best step to get a business boost soon in the market.

Criteria that you need to look at while hiring a dedicated team.

With this model, you hire a development team and start working on your project like your in-housing team. For making any product successful, you must have to look for the right developers and team members. Here we will look at a few criteria you need to keep in mind while hiring a dedicated development team.

Portfolio: Take note that whether the team you are hiring is proved the portfolio or not

Reviews: Take a look at the reviews of that dedicated team.

Skillset: Make sure the dedicated team matches all the skills you require.

Language: Take note that the dedicated team has a good command of language.

Cost: Make sure the decided price is not beyond your budget.

The number of members: Based on your project deadline, decide the number of developers you require.

Wrapping Up

Being a business person, everyone wants the best for their business. No one wants their business to perform poorly and not be able to fulfill the market requirements. If your business is going in the wrong direction, it is time for you to call a dedicated team to lift your business up.

#dedicated software development team #hire dedicated software development team #software development dedicated team #dedicated team for software development #hire dedicated development team #hire development team

The Best Way to Build a Chatbot in 2021

A useful tool several businesses implement for answering questions that potential customers may have is a chatbot. Many programming languages give web designers several ways on how to make a chatbot for their websites. They are capable of answering basic questions for visitors and offer innovation for businesses.

With the help of programming languages, it is possible to create a chatbot from the ground up to satisfy someone’s needs.

Plan Out the Chatbot’s Purpose

Before building a chatbot, it is ideal for web designers to determine how it will function on a website. Several chatbot duties center around fulfilling customers’ needs and questions or compiling and optimizing data via transactions.

Some benefits of implementing chatbots include:

  • Generating leads for marketing products and services
  • Improve work capacity when employees cannot answer questions or during non-business hours
  • Reducing errors while providing accurate information to customers or visitors
  • Meeting customer demands through instant communication
  • Alerting customers about their online transactions

Some programmers may choose to design a chatbox to function through predefined answers based on the questions customers may input or function by adapting and learning via human input.

#chatbots #latest news #the best way to build a chatbot in 2021 #build #build a chatbot #best way to build a chatbot

Riyad Amin

Riyad Amin

1571046022

Build Your Own Cryptocurrency Blockchain in Python

Cryptocurrency is a decentralized digital currency that uses encryption techniques to regulate the generation of currency units and to verify the transfer of funds. Anonymity, decentralization, and security are among its main features. Cryptocurrency is not regulated or tracked by any centralized authority, government, or bank.

Blockchain, a decentralized peer-to-peer (P2P) network, which is comprised of data blocks, is an integral part of cryptocurrency. These blocks chronologically store information about transactions and adhere to a protocol for inter-node communication and validating new blocks. The data recorded in blocks cannot be altered without the alteration of all subsequent blocks.

In this article, we are going to explain how you can create a simple blockchain using the Python programming language.

Here is the basic blueprint of the Python class we’ll use for creating the blockchain:

class Block(object):
    def __init__():
        pass
    #initial structure of the block class 
    def compute_hash():
        pass
    #producing the cryptographic hash of each block 
  class BlockChain(object):
    def __init__(self):
    #building the chain
    def build_genesis(self):
        pass
    #creating the initial block
    def build_block(self, proof_number, previous_hash):
        pass
    #builds new block and adds to the chain
   @staticmethod
    def confirm_validity(block, previous_block):
        pass
    #checks whether the blockchain is valid
    def get_data(self, sender, receiver, amount):
        pass
    # declares data of transactions
    @staticmethod
    def proof_of_work(last_proof):
        pass
    #adds to the security of the blockchain
    @property
    def latest_block(self):
        pass
    #returns the last block in the chain

Now, let’s explain how the blockchain class works.

Initial Structure of the Block Class

Here is the code for our initial block class:

import hashlib
import time
class Block(object):
    def __init__(self, index, proof_number, previous_hash, data, timestamp=None):
        self.index = index
        self.proof_number = proof_number
        self.previous_hash = previous_hash
        self.data = data
        self.timestamp = timestamp or time.time()
    @property
    def compute_hash(self):
        string_block = "{}{}{}{}{}".format(self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)
        return hashlib.sha256(string_block.encode()).hexdigest()

As you can see above, the class constructor or initiation method ( init()) above takes the following parameters:

self — just like any other Python class, this parameter is used to refer to the class itself. Any variable associated with the class can be accessed using it.

index — it’s used to track the position of a block within the blockchain.

previous_hash — it used to reference the hash of the previous block within the blockchain.

data—it gives details of the transactions done, for example, the amount bought.

timestamp—it inserts a timestamp for all the transactions performed.

The second method in the class, compute_hash , is used to produce the cryptographic hash of each block based on the above values.

As you can see, we imported the SHA-256 algorithm into the cryptocurrency blockchain project to help in getting the hashes of the blocks.

Once the values have been placed inside the hashing module, the algorithm will return a 256-bit string denoting the contents of the block.

So, this is what gives the blockchain immutability. Since each block will be represented by a hash, which will be computed from the hash of the previous block, corrupting any block in the chain will make the other blocks have invalid hashes, resulting in breakage of the whole blockchain network.

Building the Chain

The whole concept of a blockchain is based on the fact that the blocks are “chained” to each other. Now, we’ll create a blockchain class that will play the critical role of managing the entire chain.

It will keep the transactions data and include other helper methods for completing various roles, such as adding new blocks.

Let’s talk about the helper methods.

Adding the Constructor Method

Here is the code:

class BlockChain(object):
    def __init__(self):
        self.chain = []
        self.current_data = []
        self.nodes = set()
        self.build_genesis()

The init() constructor method is what instantiates the blockchain.

Here are the roles of its attributes:

self.chain — this variable stores all the blocks.

self.current_data — this variable stores information about the transactions in the block.

self.build_genesis() — this method is used to create the initial block in the chain.

Building the Genesis Block

The build_genesis() method is used for creating the initial block in the chain, that is, a block without any predecessors. The genesis block is what represents the beginning of the blockchain.

To create it, we’ll call the build_block() method and give it some default values. The parameters proof_number and previous_hash are both given a value of zero, though you can give them any value you desire.

Here is the code:

def build_genesis(self):
        self.build_block(proof_number=0, previous_hash=0)
 def build_block(self, proof_number, previous_hash):
        block = Block(
            index=len(self.chain),
            proof_number=proof_number,
            previous_hash=previous_hash,
            data=self.current_data
        )
        self.current_data = []  
        self.chain.append(block)
        return block

Confirming Validity of the Blockchain

The confirm_validity method is critical in examining the integrity of the blockchain and making sure inconsistencies are lacking.

As explained earlier, hashes are pivotal for realizing the security of the cryptocurrency blockchain, because any slight alteration in an object will result in the creation of an entirely different hash.

Thus, the confirm_validity method utilizes a series of if statements to assess whether the hash of each block has been compromised.

Furthermore, it also compares the hash values of every two successive blocks to identify any anomalies. If the chain is working properly, it returns true; otherwise, it returns false.

Here is the code:

def confirm_validity(block, previous_block):
        if previous_block.index + 1 != block.index:
            return False
        elif previous_block.compute_hash != block.previous_hash:
            return False
        elif block.timestamp <= previous_block.timestamp:
            return False
        return True

Declaring Data of Transactions

The get_data method is important in declaring the data of transactions on a block. This method takes three parameters (sender’s information, receiver’s information, and amount) and adds the transaction data to the self.current_data list.

Here is the code:

def get_data(self, sender, receiver, amount):
        self.current_data.append({
            'sender': sender,
            'receiver': receiver,
            'amount': amount
        })
        return True

Effecting the Proof of Work

In blockchain technology, Proof of Work (PoW) refers to the complexity involved in mining or generating new blocks on the blockchain.

For example, the PoW can be implemented by identifying a number that solves a problem whenever a user completes some computing work. Anyone on the blockchain network should find the number complex to identify but easy to verify — this is the main concept of PoW.

This way, it discourages spamming and compromising the integrity of the network.

In this article, we’ll illustrate how to include a Proof of Work algorithm in a blockchain cryptocurrency project.

Finalizing With the Last Block

Finally, the latest_block() helper method is used for retrieving the last block on the network, which is actually the current block.

Here is the code:

def latest_block(self):
        return self.chain[-1]

Implementing Blockchain Mining

Now, this is the most exciting section!

Initially, the transactions are kept in a list of unverified transactions. Mining refers to the process of placing the unverified transactions in a block and solving the PoW problem. It can be referred to as the computing work involved in verifying the transactions.

If everything has been figured out correctly, a block is created or mined and joined together with the others in the blockchain. If users have successfully mined a block, they are often rewarded for using their computing resources to solve the PoW problem.

Here is the mining method in this simple cryptocurrency blockchain project:

def block_mining(self, details_miner):
            self.get_data(
            sender="0", #it implies that this node has created a new block
            receiver=details_miner,
            quantity=1, #creating a new block (or identifying the proof number) is awarded with 1
        )
        last_block = self.latest_block
        last_proof_number = last_block.proof_number
        proof_number = self.proof_of_work(last_proof_number)
        last_hash = last_block.compute_hash
        block = self.build_block(proof_number, last_hash)
        return vars(block)

Summary

Here is the whole code for our crypto blockchain class in Python:

import hashlib
import time
class Block(object):
    def __init__(self, index, proof_number, previous_hash, data, timestamp=None):
        self.index = index
        self.proof_number = proof_number
        self.previous_hash = previous_hash
        self.data = data
        self.timestamp = timestamp or time.time()
    @property
    def compute_hash(self):
        string_block = "{}{}{}{}{}".format(self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)
        return hashlib.sha256(string_block.encode()).hexdigest()
    def __repr__(self):
        return "{} - {} - {} - {} - {}".format(self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)
class BlockChain(object):
    def __init__(self):
        self.chain = []
        self.current_data = []
        self.nodes = set()
        self.build_genesis()
    def build_genesis(self):
        self.build_block(proof_number=0, previous_hash=0)
    def build_block(self, proof_number, previous_hash):
        block = Block(
            index=len(self.chain),
            proof_number=proof_number,
            previous_hash=previous_hash,
            data=self.current_data
        )
        self.current_data = []  
        self.chain.append(block)
        return block
    @staticmethod
    def confirm_validity(block, previous_block):
        if previous_block.index + 1 != block.index:
            return False
        elif previous_block.compute_hash != block.previous_hash:
            return False
        elif block.timestamp <= previous_block.timestamp:
            return False
        return True
    def get_data(self, sender, receiver, amount):
        self.current_data.append({
            'sender': sender,
            'receiver': receiver,
            'amount': amount
        })
        return True        
    @staticmethod
    def proof_of_work(last_proof):
        pass
    @property
    def latest_block(self):
        return self.chain[-1]
    def chain_validity(self):
        pass        
    def block_mining(self, details_miner):       
        self.get_data(
            sender="0", #it implies that this node has created a new block
            receiver=details_miner,
            quantity=1, #creating a new block (or identifying the proof number) is awared with 1
        )
        last_block = self.latest_block
        last_proof_number = last_block.proof_number
        proof_number = self.proof_of_work(last_proof_number)
        last_hash = last_block.compute_hash
        block = self.build_block(proof_number, last_hash)
        return vars(block)  
    def create_node(self, address):
        self.nodes.add(address)
        return True
    @staticmethod
    def get_block_object(block_data):        
        return Block(
            block_data['index'],
            block_data['proof_number'],
            block_data['previous_hash'],
            block_data['data'],
            timestamp=block_data['timestamp']
        )
blockchain = BlockChain()
print("GET READY MINING ABOUT TO START")
print(blockchain.chain)
last_block = blockchain.latest_block
last_proof_number = last_block.proof_number
proof_number = blockchain.proof_of_work(last_proof_number)
blockchain.get_data(
    sender="0", #this means that this node has constructed another block
    receiver="LiveEdu.tv", 
    amount=1, #building a new block (or figuring out the proof number) is awarded with 1
)
last_hash = last_block.compute_hash
block = blockchain.build_block(proof_number, last_hash)
print("WOW, MINING HAS BEEN SUCCESSFUL!")
print(blockchain.chain)

Now, let’s try to run our code to see if we can generate some digital coins…

Wow, it worked!

Conclusion

That is it!

We hope that this article has assisted you to understand the underlying technology that powers cryptocurrencies such as Bitcoin and Ethereum.

We just illustrated the basic ideas for making your feet wet in the innovative blockchain technology. The project above can still be enhanced by incorporating other features to make it more useful and robust.

Learn More

Thanks for reading !

Do you have any comments or questions? Please share them below.

#python #cryptocurrency

How is a Dev Team Structured?

Many companies or individuals often decide to build a website, so they hire web development companies to build one for them. But can a single developer or a programmer build a whole website or is it a team game?

If you have also hired a web development company to build a website for you then you should know how the development process is arranged and what specialists are included in the team to design a single website.

![](https://hackernoon.com/emojis/money.png)

The website development team is of a complex nature. It comprises a wide array of specialists responsible for the different sets of tasks. All the individuals are working together to develop an eye-catching website with a lot of features and functionalities. These specialists remain in good communication and harmony to complete the project on the scheduled date.

#software-development #software-development-teams #development-team #how-is-a-dev-team-structured #engineering-management #business #website-development-team-roles #latest-tech-stories