Production Planning

Resource Planning in the traditional sense originally included planning the material requirements for producing batches of parts or discrete finished goods or sub-assemblies. In the original MAPICS Material Requirements Planning stages the fundamental bottleneck to be addressed was the Material Requirements for varied discrete requirements and varied process requirements. Requirements were the sum of firm customer orders and the Master Production Schedule, a top level forecast of requirements not yet on firm orders.

When the IBM mainframe was the computer of choice, (mainframes also came from Burroughs Corporation, and there were the Sperry Univac computers) prior to the dumb terminal, the mini-computer (now called the server) and computer networks, computer room operations were done entirely with punch cards. Also called the Hollerith Card and the 96 column card, computer punch cards were roughly the same as one line of computer instructions, e.g. <h3>A Minor Heading of a webpage</h3>

In the above example, we see the computer language, html, and some date. This was also the case in stacks of computer cards. A stack of computer cards in an IBM mainframe job would include some JCL or Job Control Language, a computer program, and then the data to be processed, followed by a card that would signify that there was no more data.

Thus when the Basic computer language came on the scene, we had data statements that were part of the computer program. This seems odd, but it is both an evolution of the old stacks of computer cards and also demonstrated by the simple html example above as a real world situation of programming computers.

Back to the Material Requirements Planning process, the data involved is the Master Production Schedule and the Order Backlog, followed by the Product Structure which would need to be ‘exploded’ to calculate low level demand. The final output of the computer program run would be a new stack of computer cards with part numbers and the total requirements for that material. Next, this stack of computer punch cards was combined with the current On Hand Inventory to calculate Purchase Requirements.

Thus, many processes in the punch card days of computing might be more than one step. A computer operator would assemble the stack of cards and process them to produce a new stack of cards that would be combined with other cards and a different computer program (which is on cards) to produce another stack of cards, that might then be processed by an RPG program to produce a report for the purchasing department.

Besides RPG, Fortran, LISP and Cobol made their way into computer programming before the interactive computer terminal and cathode ray tube, that is when computers were programmed with a stack of cards. The computer card actually came before the digital computer, in the end of the 19th century (around 1900) with the need for accurate counting of Census information, among other things. Herman Hollerith was a statistician that was also a bit of a mechanical engineer who designed ways of punching cards and reading cards to speed up the manual processing of statistical information. Hollerith first convinced the government to use his card system in 1890 for the census, speeding tabulation be almost ten times.

The main difference between tabulation around 1900 and computing around 1960 with the digital computer was that originally card processing was primarily a sorting operation. If in 1900 one asked the question of how many nuns lived in Colorado, the Colorado stack of cards would need be be sorted for employees of religious institutions, then for females, and then often it would be hand inspected to publish a final result.

Because of the rich history of tabulating, when the original digital computers came about, in which a series of vacuum tubes would store a zero or one, and another series of tubes would perform simple operations such as fetching a byte, storing a byte, or nanding a byte with another byte, quickly we interfaced the crude methods of getting data in and out of the limited amount of computer memory with the tabulating equipment that had been in use for more than half a century. The stack of cards now served as computer memory itself, an important breakthrough, because in the early 1960’s even a large IBM 360 computer might have less than 8k of memory. Eight thousand bytes of electronic memory in 1960 required several racks of transistors,where as one million times that amount of storage now fits on a USB flash drive.

Of course, this difference in the memory hierarchy had keen ramifications for the design and implementation of computing projects such as a Gross Requirements Explosion for Material Requirements when planning production at at manufacturer or chemical processing industrial facility, such as a refinery or a maker of laundry detergent. Today, however, we are back to the same dichotomies, because of an entirely different set of computing resources. We no longer use the Hollerith Card, but we also make little use of the USB flash drive in computing, that is we may use a flash drive to store images or videos, maybe even documents and procedures, but in a computational format we make little use of this sort of ‘off-line’ memory that has so many similarities to the Hollerith Card.

However, we do engage in a process most similar to the JCL language of the early IBM mainframes. In modern Enterprise Resource Planning, we knit together a database from one server with html and php served from another node of the network, where our desktop with the aid of Java and the JBoss stack provides the computational power to produce the new stack of punch cards, which in this case is actually a stream of updates to the database, MySql or more often PostgresSql which then has captured a new state of the planning and implementation process. Where we often spent a month or more between time when we would combine demand with a Master Production Schedule and the current purchasing schedule complete with scheduled deliveries, we now look whenever we need at these data, combine them, recalculate our needs and assess whether we need to call a vendor to expedite or delay a specific delivery release.

MBM Consulting and Training

MBM Consulting and Training

The road to success is paved with learning.

Our mission: To assist organizations in accomplishing their goals by providing leadership training and consulting to its key people. We will help improve their performance and increase their value in the organization.

Our philosophy:
Self-awareness is the cornerstone of the philosophy by which MBM Consulting and Training operates. Our first goal when working with people in organizations is to help them assess where they are in their attitudes and skill level. This awareness will bring them closer to understanding what they need to accomplish the goals of their business. We also know that an enjoyable, high-energy, results-driven atmosphere allows participants to receive the maximum benefit from the programs.

Our focus: To build skilled leaders by providing training and consulting in the areas needed such as: interpersonal skills, team building, life management, effective presentations and meetings and problem solving.

https://mbm.web-atlanta.com

Freshbooks

QuickBooks alternatives, cloud invoicing

Freshbooks

MSInc is not affilliated with FreshBooks, but is providing this information for those that may need an alternative to old fashioned PC and Server based billing programs like Quickbooks, Peachtree or MAS-90.

Freshbooks is a billing oriented package that uses cloud database technologies to automatically manage the storage, security and backup of data, eliminating IT costs associated with maintaining company and departmental servers to store and manage data.

  • Invoicing
  • Tablet and phone capable
  • Time Billing
  • Recurring Invoices, subscription billing
  • Paypal Integration
  • No server required, cloud based
  • Sales Tax accounting
  • Expense Tracking
  • Time tracking
  • Export to Excel

Solutions

Manufacturing, Service, and Distribution Solutions for Business Applications.

MSInc provides services and consulting in all areas of small and medium size business computing.

Network and centralized database operations are exploited to handle accounting and operations resource planning and execution for manufacturers, distributors, and service companies.

Manufacturing, Service, and Distribution Solutions for Business Applications. Data recovery, exploit protection, on-line backup services, portals, secure login internet collaboration tools. Linux PHP, PERL, APACHE, bash, crontab, sendmail. Ninja class database normalization.

Our modern focus on cloud computing and software as a service has led us to be a leader in browser based database systems. Sometimes called web applications, we use a lean approach compatible with firefox, opera, safari, ie and chrome. Our approach yields 20-40 percent savings in IT over conventional windows applications. In a broad sense, Facebook is a comparable to our approach, and AOL is the old Windows IT approach.

While we won’t replace all internal applications, our implementation speed is unmatched in operational areas of service and manufacturing enterprises.
Examples of cloud applications include dispatching, vehicle and crew recording, booking, document management, build to order, capacity planning, eBusiness, eCommerce.

Examples of features available in cloud applications include user tracking and usage logging, user privileges and application access security, entry forms in modern html format, surveys, search, email interfaces and automation, PDF generation.

Benefits of database and business logic implementation of the cloud include inherent multi-site access, lean IT, email triggers, central upgrade, mobile access, real time data and updates, daily email reports, server-less offices, excel compatible reporting, open source platforms. We can implement and maintain all client to client or client server environments for customers in the Atlanta Metropolitan area, including but not limited to Rockdale County, Dekalb County, Newton County, Conyers, Lithonia, Covington, Oxford and surrounding areas. BBX Thoroughbred Providex Business Basic IDOL-IV Database Customization, installation, configuration, maintenance, sales. MRP, ERP, CRM, Demand Flow, Financial, Accounts Payable, Accounts Receivable, Purchasing, Inventory Control, Production Control Sales Order.

Open Source ERP and CRM

The entire Linux operating system including source code can be downloaded from the internet.

In the open source world the most famous piece of software is Linux.  The entire Linux operating system including source code can be downloaded from the internet.  The Apache web server that is responsible for serving up a substantial amount of internet web pages is normally layered on top of the Linux operating system.

Apache may be available for Windows, kind of like Eva Gabor riding in the back of a 1948 Dodge pickup truck, and that may be where the average user most often interacts with the open source side of software.  A further note to understand in the open source software world is the notion in free as in open vs free as in beer.  If you get a free beer you do not have to pay for it, but open source software usually requires a costly agreement with the consultants and engineers that have the knowledge to work with the complex code in an open source application.

Open Source ERP is not a free software concept.  These complex business databases could in theory be used without the computer scientists and engineers that know their inner workings, but the costs of acquiring and maintaining the highly educated workers reqiuired to do this is greater than the cost of a service agreement.

In the Linux market, two examples of open source knowledge suppliers are Redhat and Novell.  Some may argue that other examples inclide Sun and IBM.

Enterprise Resource Planning

Open Source is a software movement where developers regain the costs of creating a software product through alternate revenue streams to the traditional proprietary software approach. The added costs of creating a proprietary niche include the use of dongles and complex activation code schemas that are abandoned by using the open source model. Revenues are typically found in annual support agreements and consulting fees instead of attempting to control the installation with added levels of complexity that are needed to achieve the standard proprietary approach.

Linux is a fundamental building block of much of the open source movement. Started by Linus Torvalds, popular Linux variants include Ubuntu, Debian and Gentoo, however commercial Linux and Unix probably are more likely to be based on Solaris, Redhat or SUSE from Novell. Consulting and support agreements with Novell, Redhat and Oracle involve investments that rival but fall short of the costs of commercial server solutions like Microsoft’s Windows Server but their stability and usability for the professionals well indoctrinated in the use of Bash, Cron and ssh are paramount.

Use of a solid Linux foundation is also available as a service by such large players in the rental server market like Amazon.com and Rackspace. Database layers like MySQL and PostgresSQL are widely supported and offer an alternative to the expensive Oracle and SQL server layers, and are more than adequate for databases of less than 10 gigabytes which is sufficient for most SMB applications.

Ascii Art – Segment display

#!/usr/bin/python27

Char = "4"

def segs(Char):
    if Char == "4":
        return ((0),(1,1),(1),(0,1),(0))

print segs(Char)
x = segs(Char)
for y in x:
    if y==0: y=y
    elif y==1: print "*",
    else:
        for z in y:
            if z==1: print "*",
            elif z==0: print " ",
    print ""

Ascii Art

Create a figlet program to display 7 line Ascii Art text, using the same symbol for all output.

Create figlet program to display n line Ascii Art text, where n=5 or greater.

Create a program based on the PIL library to convert well formatted Ascii art to a jpeg, png or gif.

Create a program based on the PIL library to read an image, find it’s outlines and produce an Ascii art equivalent.

Ascii Art Squirrel

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\       ;  }
           jgs     /__`;-...'--'

(heartnsoul.com)

A large library www.asciiworld.com

      /\  /\
  ___/  \|\ /|__
 |       |_O_|  /
 |             /_
 /      \_| \_| /
/      \/  \/  \/
\   _  (o   )o  )
 \ /c   \__/ --.
 | \_       __-')
 |_ |      /(_ \
   ||     (  _) )
    |_____.\(__/
    |       |
    /       \                     Maggie Simpson

Shortest gmail poplib python 2.7

Gmail works best in SSL mode. Find out the number of emails in your gmail inbox.

  1. Credentials are input from the keyboard, even with an extra example of hiding the password as opposed to placing the credentials in the program (which would be good for crontab scripts)
#!/usr/bin/python
import poplib,getpass

poPserver = poplib.POP3_SSL("pop.gmail.com", 995)
poPuser = raw_input('Username:')
print poPserver.user(poPuser)
print poPserver.pass_(getpass.getpass())
messageCount = len(poPserver.list()[1])
print messageCount, "messages"

shortest poplib example

shortest poplib example python 2.7

short python 2.7 poplib tutorial, python27 poplib library usage lesson, poplib example

Get it at GitHub: https://github.com/weblanta/pytbl-spe

#!/usr/bin/python

from poplib import *

poPserver = POP3('aaa.bbb.ccc.ddd') # ip works better than url
print poPserver.getwelcome() # todo: convert print to debug
print poPserver.user('email@address.com') # todo: chng print to dbg
print poPserver.pass_('EmailPassword') # todo: s/print/debug.validate(
messagesInfo = poPserver.list()[1]
numMessages = len(messagesInfo)

for i in range(numMessages):
  messageIs = poPserver.retr(i+1)[1]
  print "==========================",
  print " message number",i,
  print "=========================="
  for j in messageIs:
    print j
    continue

A longer example puts the login credentials up front and easier to get to here;

#!/usr/bin/python

from poplib import *

popIp='aaa.bbb.ccc.ddd'
popAddr='email@address.com'
popPass='EmailPassword'

popSrvr = POP3(popIp) # ip works better than url
print popSrvr.getwelcome() # todo: convert print to debug
print popSrvr.user(popAddr) # todo: chng print to dbg
print popSrvr.pass_(popPass) # todo: s/print/debug.validate(
messagesInfo = popSrvr.list()[1]
numMessages = len(messagesInfo)

for i in range(numMessages):
  messageIs = popSrvr.retr(i+1)[1]
  print "==========================",
  print " message number",i,
  print "=========================="
  for j in messageIs:
    print j
    continue

and now in this example we split it into a class;

#!/usr/bin/python

from poplib import *

popIp='aaa.bbb.ccc.ddd'
popAddr='email@address.com'
popPass='EmailPassword'

class poppins:

  def __init__(self):
    self.popSrvr = POP3(popIp) # ip works better than url
    print self.popSrvr.getwelcome() # todo: convert print to debug
    print self.popSrvr.user(popAddr) # todo: chng print to dbg
    print self.popSrvr.pass_(popPass) # todo: s/print/debug.validate(
    messagesInfo = self.popSrvr.list()[1]
    self.numMessages = len(messagesInfo)

popJones=poppins()
for i in range(popJones.numMessages):
  messageIs = popJones.popSrvr.retr(i+1)[1]
  print "==========================",
  print " message number",i,
  print "=========================="
  for j in messageIs:
    print j
    continue

finally, we move the credentials and the boiler-plate into a library

# class in the poppins thingamajig
from poplib import *

class poppinsMary:
    def __init__(self):
        popIp='aaa.bbb.ccc.ddd'
        popAddr='email@address.com'
        popPass='EmailPassword'

class poppins:

  def __init__(self):
    x=poppinsMary()
    self.popSrvr = POP3(x.popIp) # ip works better than url
    print self.popSrvr.getwelcome() # todo: convert print to debug
    print self.popSrvr.user(x.popAddr) # todo: chng print to dbg
    print self.popSrvr.pass_(x.popPass) # todo: s/print/debug.validate(
    messagesInfo = self.popSrvr.list()[1]
    self.numMessages = len(messagesInfo)

Which allows us a really short email reading python program here

#!/usr/bin/python

import popCredentials

popJones=popCredentials.poppins()
for i in range(popJones.numMessages):
  messageIs = popJones.popSrvr.retr(i+1)[1]
  print "==========================",
  print " message number",i,
  print "=========================="
  for j in messageIs:
    print j
    continue