Course Discount


Featured blog posts

Scrum Master vs. Project Manager: Differences & Similarities

For an entrant in the IT industry, the roles Project Manager and Scrum Master look like two similar ones. But this is not an absolute fact. Both roles... Read More

How to Work with Excel Spreadsheets using Python

Excel is considered as one of the most popular and widely used spreadsheet applications developed by Microsoft. You can organize, analyze and store yo... Read More

SSRS Vs Power BI

SSRS and Power BI are both Business Intelligence tools specially designed to present data to the end user. Since both are part of the Microsoft BI sta... Read More

CSM®️ or PSM™ - Which Certificate Is More Valuable?

What is Scrum?The source of a correct definition of Scrum is the official Scrum Guide, authored and maintained by Jeff Sutherland and Ken Schaber. Scr... Read More

Apache Kafka Vs Apache Spark: Know the Differences

A new breed of ‘Fast Data’ architectures has evolved to be stream-oriented, where data is processed as it arrives, providing businesses wi... Read More

Top-paying Scrum Certifications to Consider in 2019

Scrum Certification is a course and a series of exams that professionals undertake to validate their knowledge, skills and aptitude in Scrum, as well ... Read More

How To Run Your Python Scripts

If you are planning to enter the world of Python programming, the first and the most essential skill you should learn is knowing how to run Python scr... Read More

How to Round Numbers in Python

While you are dealing with data, sometimes you may come across a biased dataset. In statistics, bias is whereby the expected value of the results diff... Read More

How to Transition From Project Manager to a Scrum Master

Scrum Masters and Project Managers are not the same roles. I am going to talk about moving from a Project Manager role to a Scrum Master. Why do we ne... Read More

5 Hurdles That Scrum Masters Commonly Face

Agile has gained a significant track and has been adopted by all organizations. Agile Methodology today has become one of the most popular and most dy... Read More


Latest Posts

How to use sys.argv in Python?

The sys module is one of the common and frequently used modules in Python. In this article, we will walk you through how to use the sys module. We will learn about what argv[0] and sys.argv[1] are and how they work. We will then go into how to parse Command Line options and arguments, the various ways to use argv and how to pass command line arguments in Python 3.x In simple terms,Command Line arguments are a way of managing the script or program externally by providing the script name and the input parameters from command line options while executing the script. Command line arguments are not specific just to Python. These can be found in other programming languages like C, C# , C++, PHP, Java, Perl, Ruby and Shell scripting. Understanding sys.argv with examples  sys.argv is a list in Python that contains all the command-line arguments passed to the script. It is essential in Python while working with Command Line arguments. Let us take a closer look with a few examples. With the len(sys.argv) function, you can count the number of arguments. import sys print ("Number of arguments:", len(sys.argv), "arguments") print ("Argument List:", str(sys.argv)) $ python arg1 arg2 arg3 Number of arguments: 4 arguments. Argument List: ['', 'arg1', 'arg2', 'arg3']Module name to be used while using sys.argv To use sys.argv, you will first need to the sys module. What is argv[0]? Remember that sys.argv[0] is the name of the script. Here – Script name is import sys print ("This is the name of the script: ", sys.argv[0]) print ("Number of arguments: ", len(sys.argv)) print ("The arguments are: " , str(sys.argv))Output:This is the name of the script:                                                                               Number of arguments:  1                                                                                                 The arguments are:  ['']What is "sys. argv [1]"? How does it work? When a python script is executed with arguments, it is captured by Python and stored in a list called sys.argv. So, if the below script is executed: python Hello Python Then inside, arguments are stored as: sys.argv[0] == ‘’ sys.argv[1] == ‘Hello’ sys.argv[2] == ‘Python’Here,sys.argv[0] is always the filename/script executed and sys.argv[1] is the first command line argument passed to the script . Parsing Command Line options and arguments  Python provides a module named as getopt which helps to parse command line options and arguments. Itprovides a function – getopt, whichis used for parsing the argument sequence:sys.argv. Below is the syntax: getopt.getopt(argv, shortopts, longopts=[]) argv: argument list to be passed.shortopts: String of short options as list . Options in the arguments should be followed by a colon (:).longopts: String of long options as list. Options in the arguments should be followed by an equal sign (=). import getopt import sys   first ="" last ="" argv = sys.argv[1:] try:     options, args = getopt.getopt(argv, "f:l:",                                ["first =",                                 "last ="]) except:     print("Error Message ")   for name, value in options:     if name in ['-f', '--first']:         first = value     elif name in ['-l', '--last']:         last = value   print(first + " " + last)Output:(venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python -f Knowledge -l Hut Knowledge Hut (venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python --first Knowledge –last Hut Knowledge HutWhat are command line arguments? Why do we use them? Command line arguments are parameters passed to a program/script at runtime. They provide additional information to the program so that it can execute. It allows us to provide different inputs at the runtime without changing the code. Here is a script named as import argparse parser = argparse.ArgumentParser() parser.add_argument("-n", "--name", required=True) args = parser.parse_args() print(f'Hi {} , Welcome ')Here we need to import argparse package Then we need to instantiate the ArgumentParser object as parser. Then in the next line , we add the only argument, --name . We must specify either shorthand (-n) or longhand versions (--name)  where either flag could be used in the command line as shown above . This is a required argument as mentioned by required=True Output:  (venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python --name Nandan  Hi Nandan , Welcome  (venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python -n Nandan  Hi Nandan , Welcome The example above must have the --name or –n option, or else it will fail.(venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python --name   usage: [-h] --name NAME error: the following arguments are required: --namePassing command line arguments in Python 3.x argv represents an array having the command line arguments of thescript . Remember that here, counting starts fromzero [0], not one (1). To use it, we first need to import sys module (import sys). The first argument, sys.argv[0], is always the name of the script and sys.argv[1] is the first argument passed to the script. Here, we need to slice the list to access all the actual command line arguments. import sys if __name__ == '__main__':     for idx, arg in enumerate(sys.argv):        print("Argument #{} is {}".format(idx, arg))     print ("No. of arguments passed is ", len(sys.argv))Output:(venv) C:\Users\Nandank\PycharmProjects\DSA\venv\Scripts>python Knowledge Hut 21 Argument #0 is Argument #1 is Knowledge Argument #2 is Hut Argument #3 is 21 No. of arguments passed is  4Below script - is used to generate a secret password by taking password length as command line argument.import secrets , sys, os , string ''' This script generates a secret password using possible key combinations''' ''' Length of the password is passed as Command line argument as sys.argv[1]''' char = string.ascii_letters+string.punctuation+string.digits length_pwd = int(sys.argv[1])   result = "" for i in range(length_pwd):     next= secrets.SystemRandom().randrange(len(char))     result = result + char[next] print("Secret Password ==" ,result,"\n")Output:(venv) C:\Users\Nandank\PycharmProjects\DSA\venv\Scripts>python 12 Secret Password == E!MV|,M][i*[Key takeaways Let us summarise what we have learned in this article so far –  The use of the sys module in Python What areargv[0] and sys.argv[1] and how they work What are Command Line arguments and why we use them How to parse Command Line options and arguments Multiple ways to use argv How to pass command line arguments in Python 3.x Hope this mini tutorial has been helpful in explaining the usage of sys.argv and how it works in Python. Be sure to check out the rest of the tutorials on KnowledgeHut’s website! 
Rated 4.0/5 based on 14 customer reviews
How to use sys.argv in Python?

The sys module is one of the common and frequently... Read More

How to Use Scrum Board for Agile Development?

What is a Scrum Board?A Scrum Board or an Agile Board is a visual representation of the work planned, progressed, and completed by a scrum team in a sprint or iteration at any given point of time. The board is comprised of columns that represent various successive states of the workflow progressing from left to right. The work items appear in the column as per their current state in the development workflow and then move across the board from one column to the next till they reach completion or last stage.The “To Do / Ready” and “Done” states appear in almost every Scrum Board, the “In Progress” items can be further categorized into various states e.g. – Analyse, Design, Code, Test etc. These states are solely created as per the needs of the Scrum Team and Project.                                                                                                               Image 1: Simple Scrum Board  Why is a Scrum Board needed? The Scrum Board visually represents the amount of work along with their current states in a Sprint.  The Board speaks to the team everyday about the holistic progress made by the entire team towards their Sprint Goals and provides a sense of accomplishment and achievement when work items are completed. It avoids creation and progress of “Hidden Work” or “Shoulder Tap” injected work that may not be prioritized. In the event of an interruption (like production issue, any new or changed requirements, changed priorities), it helps Business to reprioritize the work items quickly looking at the current state of the planned items in the Sprint.   It also keeps reinforcing road blocks and impediments faced by the team to all the major stakeholders. Any number of written and verbal communication may not be able to visually represent the state of the entire sprintas a whole as effectively as this visual radiator.Scrum board allows teams to manage the flow of work across the sprint as it helps in avoiding multi-tasking, overloading one person because everything is visible and traceable. How to organize a Scrum Board Physical and Virtual Scrum Boards Teams that are entirely collocated can benefit from physical boards that caneven just be a whiteboard placed near their work cubicles. A physical board could also be on a wall having coloured tape for columns and sticky notes for cards.  Team members typically swarm around the board /agile wall/task wallduring their daily stand up or whenever there is a need.                                                                                                                            Image 2: A typical physical scrum board                                                                                                                                 Image 3: A typical Jira scrum boardDistributed teams on the other hand find virtual boards easy to use. There are many tools available in the market to set up Scrum Boardssuch asJira , Rally , etc.  In some companies, the Scrum boards are displayed on giant monitors placed near the teams work cubicles. Cards and Columns are the two basic entities on the scrum board.Card is the entity on the board that represents a “Work Item”. A Card can be a User story /Production Bug/Technical Task. During the course of the Sprint these cards travel through the board from left ,“To-Do” to right “Done”.  A Simple Scrum Board for Beginner Teams The Scrum Board below is an example of a typical team board in a software project.                                                                                               Image 4: Typical scrum board for a software projectThe items on the Product Backlog are discussed and as per priority and their readiness, pulled into the “To Do” or “Ready” column during Sprint Planning. At the beginning of a Sprint all items in the “To Do” or “Ready” column comprises the Sprint Backlog of the team. As the Sprint progresses, the items move into the downstream columns until “Done” is reached. A clear “Definition of Done” helps to conclude if the story / task is completed. Usually beginner teams build the board translating the current workflow of their work items into columns on the board. As the teams evolve, they adjust the board accordingly. Effective Visual Representation of data  Information on the Cards Physical Cards usually are post-it notes or sticky notes that carry the User Story/Description, Acceptance Criteria and the Story Points as a minimum. Using post-it notes is a deliberate attempt to keep the story small and avoid loading a lot of work into one story.  In a Virtual board, cards can have exclusive fields to carry information like Project Name/Assignee/Reporter/Created Date etc. These might serve multiple purposes like metrics/reports. Colour-Coded Cards Colour coding is an excellent technique used to convey important information to the audience at the first quick glance.Cards can be colour coded based on their work type like User Story/ Technical Task/Production Bugs. Cards could also be flagged (in the case of a Virtual board) or overlaid with a (preferably) Red coloured card to convey a risk/dependency that needs attention. Swim lanes Defining Swim lanes is a very useful mechanism to categorize the work items on a Scrum Board. They are horizontal rows on the board that carry a specific type of work that is different from the normal/ work categorized by a certain parameter. For e.g. a team that has to resolve emerging high priority production bugs would prefer to use a “Fast Track” swim lane to progress the bug and then continue with their original Sprint work. A team that works on hardware, firmware and software components in a sprint might want to use different swim lanes for each component.  Swim lanes are for the teams. Creating a swim lane for each team member may not be a good idea since the basic guideline for scrum is to work as a team and this representation might affect a team’s mindset. In the board below blue cards are User Stories and green Cards are tasks. Red cards are Production bugs. Some cards are flagged red indicating risks or impediments.                                              Image 5: Example of scrum board with colour-coded cards and swim lanesAspects of Kanban in Scrum Board A common challenge encountered in projects is when tasks accumulate or pile up in a phase or stage of the workflow. There could be several reasons why that happens. But identifying them is the key to solving that challenge and the Scrum Board effectively helps in this. Assume that Cards D, E, F, G have completed development and ready for testing. Cards B, C are being tested. It is day 6 of a 10-day Sprint.  Developers might now bring in H, I from the Ready Column to start development work, creating a bottleneck at Testing.                                                                                                        Image 6: Scrum Board without WIP LimitsConcepts of Kanban can be borrowed into a typical Scrum board to address this. One of the techniques that can be used is to split the column into “In Progress” and “Ready”. This will set the stage for a “Pull” mechanism at every stage in the workflow of a story.  Introducing “WIP Limit” or “Work in Progress” Limit at the columns ensures multiple work items do not pile up at one stage of the process, do not get “pushed” downstream but rather gets “pulled” by downstream process and there is a steady flow created in the system. Considering the team is at day 6 of the iteration, it is recommended the team “stops starting and starts finishing”.  If the team swarms and completes the testing of D, E,F,G there could  be more business value delivered rather than starting development of H and I and having only few of the Development complete cards partially tested. In this scenario, a WIP Limit of 4 at development prevents the team from bringing in more work items into the development phase. The team can now swarm to complete the testing of the developed items taking them to completion.                                                                                        Image 7: Scrum board with WIP limits and columns split into “In progress” and “Ready”Effective use ofthe Scrum Board  Updating and maintaining the Scrum Board Scrum board is owned by the team and it is the team’s responsibility to update the board to reflect the reality.The team also has the responsibility to evolve the board to suit the need of the project by experimenting on concepts of WIP Limit. How best to use the information on the Board Scrum Board can be used to identify bottlenecks in the flow of work. If bottlenecks are identified in one stage of the workflow, the team can resort to Swarming or enforcing WIP Limits. Seeing the work items move through the Scrum board and reach “Done” during the Sprint provides the team a sense of accomplishment. Challenges and ways to overcome them Easier said than done, updating the board is one of the biggest challenges faced especially in beginner teams. Not every team member will be prompt in updating the board. To overcome this challenge, updating the board could be one of the team ground rules with non-compliance attracting fun consequences decided by the team, such as the defaulter treating the team with chocolates/coffee or updating everyone’s scrum board the next day. The Scrum Master can immensely help the team realize the power of the board by using it during agile ceremonies like planning, stand up and retrospectives. Facilitating the scrum by traversing the board from right to left (i.e.“Done” to “To-Do”) is another tactic to keep reinforcing the value of the board and motivating the teams.Having conversations in stand-ups by traversing the board from right to left will first bring up cards that are done or almost done and helps see what has been accomplished in the sprint.  What a Scrum Board is not A Scrum Board cannot replace the conversations and interactions that are always encouraged in Agile projects. Flagging a card on the scrum board / posing queries on a card should not solely replace the conversations around these. A Scrum Board is not for executives to monitor the team’s progress and efficiency, but it is for the team to monitor their sprint items as a whole. Conclusion A Scrum Board is an excellent tool for the team to visualize their work, look at everyday progress, identify bottlenecks, make immediate course corrections, so that they can meet their Sprint goals. Used rightly, it will serve the team and benefit them. But if it is used by management to monitor the team or if the team members consider it as a tool to update management then it loses its purpose and becomes just another overhead. 
Rated 4.0/5 based on 13 customer reviews
How to Use Scrum Board for Agile Development?

What is a Scrum Board?A Scrum Board or an Agile Bo... Read More

Cost Benefit Analysis for Projects – A step by step approach

Introduction to CBA Organizations, both for-profit and not-for-profit ones, often contemplate the need to take up new initiatives, develop new policies, bring about changes or create new capabilities to improve their current state of business-as-usual and create new benefits for the organization and stakeholders. All such new initiatives will be taken up as new projects by the organizations. These projects are expected to create new business value or in some cases social value. Every new project or initiative will require fresh investments of efforts and money to be made. Organizations will need to make such decisions prudently by creating a clear justification.  Cost benefit analysis: What is it? Why Use Cost Benefit Analysis? Conducting a cost benefit analysis (CBA) or a Benefit-Cost analysis (as may be referred alternatively) is one of the most fundamental methods used to compare the financial cost to be incurred for such new initiatives and benefits to be generated from them.  Origins of Cost Benefit Analysis To undertake new initiatives is an integral part of the evolution of mankind, at a personal level, at a social level or at a business level. On the social front, it may involve initiatives like developing new townships, new buildings, new schools, new hospitals, new monuments, new social infrastructures, and new offices. On the business front, it may involve developing new products, new services or new production capabilities. There has always been a need to make sound and clear decisions. As the accountability of leaders on financial matters continues to rise, the need for doing a cost-benefit-analysis also becomes inevitable. CBA as a practice becomes part of policy matters in government projects in the US dating back in 1936, when Corps of Engineers started doing CBA for Federal Waterway Infrastructure projects. Approach to CBA A fundamental approach to do CBA includes estimating all the costs to be incurred in doing the project and carefully evaluating and estimating all the benefits to be garnered from the project. Benefits can include both quantifiable financial benefits and non-quantifiable benefits such improvement in quality of life, ease of living, ease of doing business etc. The Purpose of Cost Benefit Analysis We already discussed that every new project needs investments to be made with the expectation of returns from the investments. There are two main applications of conducting a CBA: To determine if an investment decision is sound, calculating if its benefits outweigh its costs and by how much. To provide a basis for comparing alternative investment options, comparing the total expected cost of each option with its total expected benefits, thereby creating a basis for selecting the most desirable/viable option. Costs and Benefits Estimating costs Estimating all costs to be incurred in doing a project is the first important part of CBA. It will involve carefully estimating and listing the required quantity, quality and duration of material, labor, equipment and facilities to be used for completing all the activities of project work. Then we can estimate the costs for each of the above categories of resources. There will also be a need to include cost for contingency, inflation, cost of financing (if needed) and cost of any other services (such as training, liaison etc.) which may be required to complete the project activities. Cost estimation can be done with a considerable amount of accuracy level if all the activities of the project can be identified and all resource quantities can be estimated as stated above.  Estimating benefits Estimating all benefits to be garnered is the second important part of CBA. Every project or investment done is expected to deliver benefits in future. Benefits can include financial benefits by means of increase in profit margins and increase in efficiency of doing things. Benefits can also include non-financial benefits such as increased comfort and ease of doing things, improved moral of people, increased satisfaction levels, more peace, social benefits etc. Financial benefits can be estimated with considerable amount of accuracy, while it will be somewhat challenging to estimate and quantify the non-financial benefits. Comparing costs and benefits After careful and diligent estimation of costs and benefits as stated above, we need to compare the costs to be incurred with benefits to be garnered. If the benefits outweigh the costs considerably, such proposals will be taken up for further consideration by the organizations. Organizations may lay down clear guidelines regarding minimum expected difference between benefits to cost for the projects to be selected for implementation. Organizations may also lay down clear guidelines for evaluating the social benefits (mostly non-financial as explained above) for clear decision-making after doing a CBA. How to do a Cost Benefit Analysis  To conduct cost benefit analysis, we need to estimate and enumerate all costs to be incurred and all benefits to be generated. Then one needs to compare the costs with benefits for arriving at suitable decisions and recommendation about whether the project is worthy of taking up or not. There are two broad methods for doing cost benefit analysis: Non-discounted method (does not consider the effects of interest and time period). Discounted method (considers the time period, interest, inflation etc. while calculating the costs and benefits) We can take a simple example below to illustrate some of these methods.  Analyzing using non-discounted method These are very simple methods without considering the effects of interest and time period.The below illustration shows the costs incurred and benefits over a period of six years.  Discount rateYr. 0Yr. 1Yr. 2Yr. 3Yr. 4Yr. 5Yr. 610% (0.1)Cost100000000000Benefits250002500025000250002500025000Total Cost = 100000; Total Benefits = 150000 Benefit Cost Ration (BCR) = Total Benefits / Total Costs = 150000/100000 = 1.5 (> than 1) Profit = Total Benefits (Revenue) – Total Costs = 150000 – 100000 = 50000 Payback Period = Time taken to recover the total cost (investments) = 4 years ROI = Return on Investment = Profit/Investment = 50000/100000 = 50%  Using the above simple non-discounted methods we can see that this project looks good with benefits being more than the cost, with positive profits and lower payback period.  But these calculations are too simplistic, and do not account for the time-value of money based on interest rates, inflation. Analyzing using discounted method In the above example, the costs are incurred in the present time, while the benefits will be received in future. These values of money are in different timelines and hence their values cannot be compared directly as it is. We need to bring down all the future values of benefits and costs to their corresponding present values and then we can do a comparison of present values of benefits and costs. The below formula can be used to understand the relationship between present value (PV) and future value (FV) of money. PV = FV/(1+r)n(where r stands for rate of discount of money, n stands for time period) In the below example, the cost and benefits value mentioned are in specific period in time. We need to bring all costs as well as all benefits to their corresponding present values (PV) using the above equation and assuming an interest (discount) rate of 10% for ease of calculation.   Discount rateYr. 0Yr. 1Yr. 2Yr. 3Yr. 4Yr. 5Yr. 610% (0.1)Cost (FV)100000000000Benefits(FV)250002500025000250002500025000Cost (PV100000000000Benefits(PV)0227272066118782170751552714112PV of all costs = 100000 (as it is happening in year 0 only) PV of all revenue = 25000/(1.1) + 25000/(1.1)2 + 25000/(1.1)3+ 25000/(1.1)4+ 25000/(1.1)5 +  25000/(1.1)6 = 22727+20661+18782+17075+15527+14112 =108884 Net Present Value (NPV) = Sum of PV of all benefits – Sum of PV of all costs = 108884 – 100000 = 8884 (> 0)  Hence this project investment will lead to a profit after discounting the effect of interest and any other inflationary factors which are taken as 10%) If NPV is > 0, then the project investments will lead to profit. NPV is one of the most practical methods for doing cost benefit analysis by considering the time-value of money.  IRR (Internal Rate of Return) – IRR is the rate of discount at which the sums of PV of all benefits equals sums of PV of all costs. Or in other words IRR is the rate of discount at which NPV equals 0.  Calculating IRR is a more complex affair. In simpler term IRR denotes expected rate of return from the investments. According to a general guideline, higher the IRR from an investment, the better the opportunity.  How to establish a framework As we discussed above, there are various methods for undertaking cost benefit analysis. Different financial parameters such as Benefit Cost Ratio (BCR), ROI, Payback Period, NPV, IRR etc. need to be calculated for arriving at decisions and making necessary recommendations on whether a specific project should be taken up or not. Every organization is unique in their capabilities to invest and take risk. Organizations can define their specific guidelines or framework for project selection taking into account the above financial parameters, the risks involved in doing the project and most importantly specific nature of the investors. A framework for project selection will include all above factors.  Below are some basic guidelines which are used for decision making during cost benefit analysis (CBA) NPV should more than 0. Higher the NPV, the better is the project. BCR should be more than 1. Higher the BCR, the benefits outweigh the cost more. ROI should be high. Higher the ROI, the better is the investment opportunity. IRR should be high. Higher the IRR, the better is the opportunity. Payback period should be lower. Lower the payback period, the better seems the opportunity. Challenges and considerations while doing CBA How accurate is Cost Benefit Analysis? Cost benefit analysis can be reasonably accurate if these are done by technical and financial experts. Experience and availability of real data about costs and benefits of similar projects from past can greatly enhance the accuracy of cost benefit analysis.  Are there limitations to Cost Benefit Analysis? Since cost benefit analysis requires estimating costs and quantifying future benefits accurately, it requires solid maturity in terms of knowledge and availability of past data. In the absence of experience and data availability, CBA may fall short in its accuracy.  The risks and uncertainties in Cost Benefit Analysis While doing cost and benefit analysis, it will be important to understand risks and uncertainties involved in doing the project. It will also be equally important to understand the uncertainties involved in realizing the benefits once the project is done. Cost benefits analysis need to consider the implications of uncertainties to make it realistic. It may require doing statistical simulations and modeling as well.  Cost Benefit Analysis in the real world We saw that CBA became a formal and mandatory practice as early as 1930s in the US government departments, for numerically evaluating if the benefits will outweigh (and by how much) the costs of doing the project.  Organizations have become highly knowledgeable, experienced, and matured. Availability of past data coupled with ability to process the data using modern mathematical and statistical techniques and computerized tools exists in abundance within organizations.  In today’s world the need for doing CBA has become necessary. Businesses and governments are held more and more responsible and accountable to their citizens and investors for justifying their investment decisions. They can do this only by conducting a thorough cost benefit analysis.  
Rated 4.0/5 based on 6 customer reviews
Cost Benefit Analysis for Projects – A step ...

Introduction to CBA Organizations, both for-profi... Read More