Installing Python Libraries in Windows 10

First and foremost, as somebody that often just wants to get what I am looking for, I appreciate the fact that you may not want to read of the introduction.  If that is the case, just jump straight to the meat and potatoes below.  For the rest of you, I will keep it short and sweet.

I recently decided to take a computer science course.  For the last few years I have been finding that much of our work ends at the point in which a client needs a complicated technology solution.  We have had some successes in designing applications and having them built, however one thing that we have learned is that we have  a great deal to learn.  The world of software engineering is nebulous.  What seems eloquent and simple on the outside can be incredibly complicated and hectic within.

I have always been a PC person.  I think this is due to the fact that much of the business world runs on them.  I fell into it by default.  Programmers live on several different planets.  Planet Mac is for those that are looking for a sleek well designed machine that will match their sofa.  Linux is an entire galaxy of operating systems ranging with users that may simply want a bit more control over their command prompt to others that may be up to nefarious activities such as hacking the DNC or blackmailing Kevin Spacey.

I live on planet PC.  If you’re just looking for a nice suite of business intelligence software it’s great.  If you’re trying to learn web development it is somewhere between atrocious and catastrophic.  Its a world of ridicule.  Nobody on this planet seems to know how anything works.  You can call somebody from one of the other planets for help, but you’re likely to be met with ridicule.  “Windows is stupid.”  “Maybe you should get a real operating system.”

Everybody has their own complicated work around for tasks that on the surface feel like they should be simple.  Case in point:  go look for some information about how to install Passlib and Bcrypt on windows.  The best tutorials assume a certain amount of knowledge about the command prompt, an esoteric black hole.  The worst are marred with comments sections full of frustrated users.  I thought I would simply share how I got this library installed.  Hopefully it will save somebody an hour of their life in the future.

The Meat and Potatoes

  1. Change your environment settings

    1. Open the Control Panel
      1. You can do this by typing “Control Panel” in the Windows search bar (lower left corner of your screen)control panel
    2. Navigate to System and Securitysystem and security
    3. Navigate to Systemsystem
    4. Navigate to Advanced system settings to open the System Properties boxsystem nav
    5. Navigate to the Advanced tab and click Environment Variablessystem properties
    6. Under System Variables highlight the Path variable and click Editsystem variables
    7. In the Edit environment variable popup, click New and then enter the path to the python folder on your computer.  This could end up in a number of places, I had to search for python in Windows explorer in order to find it.  My path was: c:\Users\Chris\AppData\Local\Programs\Python\Python36-32edit variables
    8. Add another path to the scripts folder within your python folder.  this should be the same path with \scripts at the end of it.  Mine was: c:\Users\Chris\AppData\Local\Programs\Python\Python36-32\scripts
  2. Install pip for Python

    1. Navigate to here to the pip download page
    2. Navigate to the Installation pagepip installation
    3. Download the get-pip.py package (You have to right click and click “Save link as”)get pip
      1. Simply click on the downloaded package in your browser to run itpip download.PNG
  3. Download and install the pip source package

    1. It can be found here.  source.PNG
    2. Use Git Bash to unzip the package.  There are other ways of unzipping tar files, I just found this easiest based on the fact that I already had Git Bash.  You can download it here
      1. Navigate to where you downloaded package ( ex: cd ./downloads) to and type tar –xvzf passlib-1.7.1.tar.gz
    3. Install the package with Windows Command Prompt
      1. You can do this by typing command in the windows search bar
      2. Navigate to where you unzipped the package (ex: cd ./downloads/passlib-1.7.1)
      3. Type python setup.py install
      4. Close command prompt
  4. Install the Bcrypt library

    1. Reopen Command Pompt as an administrator
      1. Type command in the windows search bar
      2. right click Command Prompt
      3. Choose Run as administrator
    2. In the Command Prompt, type pip install passlib[bcrypt]

That was easy right?  Hopefully this saves a novice programmer some of the headache that I went through yesterday.

Advertisements
Installing Python Libraries in Windows 10

How Much Time Do You Waste Typing Passwords?

A few years back I heard an interesting interview with an IT security expert.  One thing he said, that has always stuck out in my mind, was that the money spent on tech support for lost and forgotten passwords is greater than the estimated cost of reimbursing damages if users had a single password for all of their online accounts.

In the interest of reducing tech support costs for everyone, I came up with a highly complicated “mega-password” that I would use for all of my profiles.  This worked for about 30 minutes until it became apparent that each site’s unique format requirements (special characters, numbers, length, etc.) made it impossible to create a password that worked for all sites.  Combine that with different username requirements and the number of possible login credentials can quickly balloon.  From what I can tell, I have at least 4 possible user names, and 6 possible passwords at this point.  That means that I have no less than 24 possible combinations for login credentials.

In addition to security concerns, managing passwords can take a great deal of time.  I have a bad habit of calculating the time dedicated to mundane tasks on a yearly basis.  I know that I login to at least 1 website each working day during the week.  If we assume that this takes 15 seconds of my life, then I am spending just over an hour of my year logging into websites (15 seconds per day X 5 days per week X 52 weeks per year).  When I start to think about how many times I have to remember which password or username is used for a particular site, how many times I have to reset a password, or how often I log into apps on my phone, I start to realize that I could be creeping up on a day of my year wasted.

After looking at several options, I decided that Lastpass best fit my needs.  The issues that were most important to me are explained below.  You should at least consider these when selecting a password manager.

  • Fills in usernames, passwords, and contact information for you
    • Form filling is a very basic feature that comes with most browsers.  It is an obvious time saver when you think about how many times you have to fill in your address each year.
  • Saves you from password resets
    • The account recovery process is cumbersome at best, and can ruin your day in the worst of scenarios.  How many times have you mis-typed your password one too many times only to be locked until until you have called tech support.
  • Provides insight about your digital security
    • Some password managers, will give you a security score on all of your passwords.  If you’re like me, it will be relatively low because a hacker would only need to crack one code to reach all of your accounts.
  • Can generate and change passwords for you
    • After getting your security score, you will probably want to change all of your passwords.  A good app will be able to auto generate new passwords for all of your accounts and update them.  You only need to remember your password to the application.
  • Syncs your passwords across browsers and devices
    • A good password manager will also have an i-Phone or Android application to allow you to access your master account through tablets and phones.
  • Alerts you to security issues
    • Make sure there are built in security features to alert you of possible threats and security breaches
  • Allows you to share login information with others
    • Every now and then you need to share your login information with somebody.  This can be scary as most of us only use a handful of passwords.  Another great feature to look for is the ability to share login credentials with select users while still keeping the password a secret.
  • Provide an emergency access contact
    • The reality is that we keep some pretty important parts of our lives online.  In the event of an accident, it is good to be able to give somebody access.  One feature that I like about my account is that I can specify an emergency contact.  If something happens to me, that person can request login information.  If I do not respond to the request within a set period of time, he or she is given access.

There are a number of options out there.  At the end of the day, a password manager would likely save all of us a good chunk of time and should be considered.

How Much Time Do You Waste Typing Passwords?

Conversations of Peace, Community, and Our Rights

handshake

In the wake of recent mass shootings in America, we have decided to hold a discussion centered on the topic of race.  As difficult as it may be for some to admit, it is equally difficult for others to continue to deny and ignore the fact that the black and white communities remain divided.  As far as we have come, we have a long way to go.  We continue to live separated lives in separated communities.  At the very least we misunderstand one another.  At the very worst, this understanding can lead to fear and hatred.  Race is a topic considered taboo in America.  Because of this, there is a lack of thoughtful discourse.  Our belief is that by taking an evening to learn about how people of different colors identify with the concept of race we can bridge gaps between each other and promote similar discussions.

This event will be invitation only.  However, we encourage everyone to engage in similar dialogue.  We thought that it might be helpful to post some information in the event that someone may want to organize a discussion of their own.

The general format will be as follows:

  • Rules
    • This is a non-converging conversation. This means that the main goal is simply to have thoughtful discussion.
    • Race can be a very sensitive subject for some people. We realize that some things that are said this evening have the potential to offend.  If there are times when you are offended we ask that rather than being angry or hurt, you seek to understand the position from which your partner is seeing things
    • Have an open mind
  • Group intro/discussion 30-45 min
    • Name
    • Why you are here?
    • What do you hope to get out of this?
    • Anything else you would like to tell us about yourself
  • Individual discussions 30-45 min
    • Feel free to talk about anything you want as long as it is related to race. We realize that this is an awkward subject and something that we may have difficulty knowing how to discuss.  If this is the case, here are a few ideas for questions that you can ask each other.
      • What negative ideas/stereotypes have you learned about another race that you have since learned to be untrue?
      • What is a positive thing that you have learned about another race?
      • Do you feel that you experience the same situations differently because of the color of your skin?
      • Share a story about a positive experience with another race that made you see things differently than before.
      • What do you think is misunderstood about your race?
      • What makes somebody American?
      • Are you willing to give up your rights for greater perceived safety?
      • How do we make the problems of African Americans the problems of all Americans?
      • What do you think about the quote, “To say something that you should not say is a crime, but to not speak up when you should is a sin.”
      • Do you feel there is a generational gap in how we see color?
      • If there was one thing that you could tell black people about white people (or white people about black people) what would it be?
  • Group discussion 30-45 min
    • To finish the evening we will come back together as a group and share insights from our conversations. Again, you are free to share whatever you like, although here are a few offerings if you are unsure of what to say:
      • What did you learn about yourself tonight?
      • What did you learn about your race tonight?
      • What did you learn about the black/white race tonight?
      • What is something that you might do differently?
Conversations of Peace, Community, and Our Rights

Accounting For Non-Productive Time on an Assembly Line

A common question from production managers when discussing the implementation of line balancing is how much time is lost at the beginning and end of a production run due to empty stations.  When materials first flow into the initial station of the line, all of the following stations are empty.  Once the first station fulfills its share of the last order, it then becomes non-productive.  The following illustration shows a single product moving through a 4 station assembly line:

accounting for non productive time1-1

The red stations are idle.  Once the first station is finished, it passes the first product to the second station.  Because we are only building a single product, station 1 is now idle along with 3 and 4 while station 2 is now working.

accounting for non productive time1-2

In this particular case with 4 stations and only 1 product moving through the line at a time, we can see that there will always be 3 empty stations.

accounting for non productive time1-4

To understand what is happening here, we need some definitions.

Process Time – The total time required to build a single product

Cycle Time – The rate at which finished products flow off of the line.  In a perfect world, all stations are spending the same amount of time working on the product, so the cycle time is equal to the process time divided by the number of stations.

cycle time formula.png

Let’s say that the workers on our assembly line are building computers.  Each computer has a process time of 20 minutes.  Using the formula above, we can calculate a cycle time of 5 minutes.  So, how long does it take to build a single computer?  If you guessed 20 minutes, you’re incorrect.  To understand why, we need one more definition:

Man Minutes – The total time contributed to a particular task by all workers.  For example, if 2 people are fixing a car together for 30 minutes, 60 man minutes have been used.

Each row in the illustration represents a 5 minute block of real time.  There are 4 workers in each row.  This means that in that 5 minute block of real time, 20 man minutes have been used.  So while one person spends 5 minutes at his or her station working on the product, three people wait.  This non-productive time is referred to as Idle Time.  And the question that we are trying to answer is:

How do we calculate idle time on an assembly line? 

An easy way to do this with the example above is to count the number of empty (red) stations and then multiply that by the cycle time.  There are 12 empty stations, so the idle time is 60 minutes.  The time actually spent working on the computer, the productive time is the number of full stations multiplied by the cycle time.  There are 4 full stations so 20 minutes were spent building the computer.  This is easy when we only have a single fixture on the line, but how do we calculate the number of idle stations and idle time when there are more stations and more products?  It’ actually quite simple.

idle stations formula

Or in this case, 4*(4-1), or 12 idle stations

We then simply multiply the number of idle stations by the cycle time and we see that there are 60 minutes of idle time.  You may have noticed that this formula does not take into account how many products we are putting on the line.  This is because the idle time is the same in a production run whether we are building 1 product or 100 products.  The example below illustrates this point.  Here we see 4 products moving through a 4 station line.  Notice that there are still only 12 empty stations in the entire run.

accounting for non productive time4-4.jpg

Because idle time is constant, with each additional product we add to the line we are only adding productive time.  We calculate the Total Productive Time in a production run with the following formula:

Total Productive Time formula

Our total productive time in building a single fixture is 20 minutes.  It is 100 minutes if we are building 5 fixtures.  To calculate the total man minutes used on a production run, we simply add the Total Productive Time and Idle Time together:

Total Mane Minutes formula.png

If we then divide the total man minutes by the # of products built, we get the Average Man Minutes per Fixture:

avg man minutes per product formula

To build just 1 product takes 80 man minutes.  A second product only takes an additional 20 minutes, so the average is 50.  This is still much greater than the process time.  The more fixtures we build though, the shorter the average time gets.  This is illustrated in the following spreadsheet:

image

We can see how quickly the average time drops as we add products to the run.  If we were to build 100 computers, the average time per unit would be 20.6 man minutes.  This information can be used by production and operations managers to assess the point at which it makes sense to implement production lines.

Let’s suppose that when an individual builds a computer from start to finish on his or her own (without a team on an assembly line), the process time becomes 25 minutes. The point at which it becomes economically viable to institute a line is at the quantity when the average man minutes per product are less than 25 minutes.  So in this case, we would not want to use an assembly line for any quantity less than 13 computers.

It should also be noted that the idle time at the beginning and end of each production run does not need to be completely non-productive.  Workers can be cleaning stations, making sure they have all necessary tools and parts, etc.

I hope this answers some of your questions about idle time and maybe even inspires a few more.  Feel free to comment.

Accounting For Non-Productive Time on an Assembly Line

Cycle Counting

An inventory audit is an arduous task that many companies do not take a proactive stance on.  Most times firms try to do an entire inventory audit at the end of the year.  This method is incredibly time consuming, can disrupt production, and makes it difficult to trace the causes of discrepancies.  In extreme cases, a company may wait until there is an issue with inventory before performing an audit.

An alternative way of auditing inventory is known as cycle counting.  With this method, inventory is monitored continuously based on it’s level of importance.  In order to rate the level of importance of an inventory item, we can use SKU analysis (See The Case For SKU Management)  to find the velocity of products.  Lets review the SKU velocity from that post:

SKU Summary

Looking at our products above, we can see that SKU Group A makes up a very large percentage of sales, group B makes up significantly less, and Groups C,D, and E account for a negligible portion.  So, if we were to ask which group of products contained inventory items that were the most important to maintain accurate inventories on, the answer would clearly be Group A.  It would follow then that auditing these parts should be done more frequently than others, we may set up an auditing schedule similar to the following:

cycle counting

This creates a daily audit of only 11 total items which is much more manageable than 820 at once.  At the end of each cycle, we have counted all items in an inventory group.

Cycle counting offers the following advantages:

  1. Elimination of shutdown and interruption of production for annual counts of physical inventory
  2. Trained personnel can perform the audit because it does not remove them from daily duties for an extended period
  3. Elimination of annual inventory adjustments
  4. Allows for easier tracing of discrepancies
  5. Allows for more timely corrective measures
  6. Maintains accurate inventory records

The cycles can be grouped and set however a firm wishes.  Other options are to count any time an item is reordered, by product category, by vendor, brand, theft risk, etc

Cycle Counting

The Case For SKU Management

SKU proliferation is a common problem in companies experiencing growth and/or diversification of product offerings.  Balance must be struck between sales and costs.  In order to determine whether or not you are maintaining too many SKU’s, look throughout your organization at the costs and benefits of carrying those items.

Consider:

  • Additional sales generated
  • Customer service
  • Additional carrying capacity needed
  • Carrying expenses
  • Capital Equipment

How SKU’s Grow

Too many SKU’s add unnecessary complication to your business.  SKU proliferation can occur in several ways.  Sales may want to add more products in order to attract new customers and increase revenue.  Additionally, as the pace of technology change increases, product life cycles decrease.  This can result in “extinct” products and a company must be willing and able to write inventory that is antiquated and does not sell.  This inventory causes crowding of storage and operational space, poor use of equipment, and increased labor costs.

Impacts of Proliferation

The following costs of SKU proliferation must be considered:

  • Space constraints
  • Pick face constraints
  • Labor and operational cost to work around above constraints
  • Reduced fulfillment capacity
  • “Extinct” inventory tying up capital
  • Tax issues
  • Storage clutter creates safety issues

Because so many departments are impacted by excessive SKU’s, it is important to take a cross organizational approach to resolving this issue.

Departments to Engage:

  • Merchandising
  • Sales
  • Marketing
  • Operations
  • Distribution
  • Finance
  • Supply Chain Management
  • Store Operations
What Percentage of Your SKU’s Have Not Sold in the Last Year?

Once you have assembled your team of stake holders, use the chart below to determine whether or not you are exhibiting some of the common symptoms of SKU proliferation.

Systems Symptoms and KPIs

SKU Velocity

SKU Count  SKus on Hand SKUs SoldSKU Summary

SKU Analysis

The above charts are examples of a few ways to analyze SKU velocity.  A thorough analysis looks at SKU’s by velocity, inventory turns, storage capacity, seasons, and storage media requirements.

Consider:

  • Which SKU’s move fast, slow, or not at all?
  • What is the financial impact of each of these?
  • How much storage is used by each type?

Looking at the example above, we can see that SKU groups A and B account for less than 6% of the total SKU count, but make up 97% of total sales.  Conversely, groups C and D account for 37% of total SKU’s but only 3% of sales.  Group E represents 56% of all SKU’s, 10% of inventory, and yet 0% of sales.  A great case could be made for abandoning support for these SKU’s.

SUMMARY

Rationalizing your SKU’s is both art and science.  Analysis must be used to find opportunities for reduction.  At the same time, there can be a justification for keeping some seldom used SKU’s.  Perhaps the cost is low, maybe they are unique products that although not ordered often, are typically ordered by large customers.  This is why a cross organizational approach must be taken in the development and implementation of a SKU reduction strategy.

Download This Article

The Case For SKU Management