Ever wondered how to effectively run an organization? You've heard about ERP but don't know how to implement it. This article is written for you. You will learn details about ERP implementation. Applicable to Manufacturing, Agricultural, Media and Sourcing Industries

What is ERP ?

ERP is a software built to manage all business functions on one platform. All the business functions are tied together by linking the relationship between different functions.

Why before How

Before knowing how to use an ERP, you should know “Why do you want to use an ERP?” The answer to How will depend on Why you want to use it.


  • What is the desired outcome of Implementing an ERP?
  • What sort of Reports and/or Dashboards do you want?
  • What are the challenges that you would like to overcome?

Some of the major challenges faced by Businesses are:

  • Too much chaos: Business can be chaotic. Coordination between multiple entities and agencies can be daunting, leading to financial loss or loss of motivation in employees.
  • Delayed Deliveries: Deliveries get delayed due to various reasons, most common amongst them is coordination between various departments, mainly Production and Sales.
  • Stock Issues: Overstocking or under-stocking can hamper an organization’s profitability and service.
  • Quality Issues: Quality issues can hamper an organization’s image and even lead to financial loss.

Decorators and Generators are one of the most appealing features of Pythons. Colton Myers gave a talk at PyCon 2014 on decorators. Following is summary of that talk What is a Decorator? This is what a decorator looks like

Source: PyCon 2014 on decorators.

What is a Decorator?

This is what a decorator looks like

def my_awesome_function():

Decorators wrap functions

  1. Add functionality
  2. Modify behavior
  3. Perform setup/teardown
  4. Diagnostics {timing, etc}

Just like any other form of art, Programming can always be improved. In daily grind to deliver working software we might forget details and `JUST DO IT`. In our quest to improve our python coding we've come across couple of good Python videos that will help you take you code to next level.

Following is summary of two talks Designing Poetic APIs by Erik Rose and Transforming Code into Beautiful, Idiomatic Python by Raymond Hettinger. On twitter you can find them on @erikrose and @raymondh

Designing Poetic APIs by Erik Rose

Eric Rose’s Github has more fascinating stuff. His talk is a good investment of 37 minutes of your time. Following is summary we’ve compiled from the video:

Don’t Be An Architecture Astronaut

  • Best libraries are extracted and not invented


  • User’s spend 90% of time calling other people’s APIs
  • Sticking to commonly used conventions can help
  • E.g. Macintosh Human Interface Design is a good example of how consistency in terms of Keyboards and Menus were extracted
  • API Design is similar to UI Design and principles from UI Design can be applied to API Design
  • get(key, default) is better than fetch(default, key) because it sticks with current conventions of Python
  • Layout all options and select the best one
  • If you’re going to be wiered, be self consistent
  • Red flags for Consistency: - Frequent references to your own documentation - Feel syntactically correct {Make sure novely pays off than shows off}

Queryset are commonly used with Django's ORM. I Didn't Know Querysets Could do That by Charlie Guo is a nice Django Con US 2016 talk that delves deeper into useage of QuerySet. Following is summary notes of the talk

Queryset are commonly used with Django’s ORM. I Didn’t Know Querysets Could do That by Charlie Guo is a nice Django Con US 2016 talk that delves deeper into useage of QuerySet.

Following is summary notes of the talk

Basic Queryset method

  • Methods that return QuerySet

    • all
    • filter
    • exclude
    • oder_by
    • reverse
    • distinct
    • annotate
  • Methods that return model instance

    • get
    • first
    • last
    • latest
    • earliest
    • exists
    • count
    • aggregate
  • annotate and aggregate both expect a expression

    • annotate will compute that for each item in the set. Returns each item with new property
    • aggregate will return a dictionary with that value for entire set
    • Django will create property if not provided
    • Tend to be faster than for loops

One of the key selling points of Python is ability to create command line script that have ability to automate some mundane tasks. Bhav Copies are equivalent to data feeds we get from exchanges. We wanted to demonstrate power of simple scripts, so we chose

What are Bhav Copies?


Functions are basic constructs of programming language. This blog post we will show how to use them more effectively

Effective Python is one the good books that is thought of to be Python 202. Once you’ve got the hang of basics, you’d like to look at ways to improve the code. This is exactly what this books provides.

Bret Saltkin gives a nice talk about this during PyCon 2015, titled How to Be More Effective with Functions. Following is summary of that talk


  1. Reduce visual noise with variable positional arguments
  2. Provide optional behaviour with keyword arguments
  3. Enforce clarity with keyword-only argument
  4. Consider generators instead of returning lists
  5. Be defensive when iterating over arguments

Refactoring is basic activity that all developers do. This post summarizes interesting talk, learn how to do them more effectively

Refactoring is often not budgeted. But as Brett Slatkin mentions in his PyCon 2016 talk it is one of the most important thing experienced developers get into habbit of doing. Following is summary of the talk

  • What is refactoring?

    • Repeatedly reorganizing and rewriting code until its obvious* to new reader.
    • When you’re refactoring is optimizing for readability
  • When do you refactor?

    • In advance
    • For testing
    • “Don’t repeat yourself”
    • Brittleness
    • Complexity


Looking for checklist? This blog post we will look at how to conduct code reviews

Code Review are a great tool and you should do it often. Best Practices for Code Review gives a great summary including benifits and top 10 tips. Checklist are great tool, NASA’s Space Shuttle Operational Flight Rules is a great example. Current checklist is heavily inspired from this Checklist. Python specific elements are added to it which are inspired from Pycon 2016 Talk. Go ahead and use this checklist for:

  • Guide while starting new project
  • Refactoring an existing project
  • Rewriting a legacy project

OOP was not a silver bullet. How to write reusable code? Through hard work its not free or its magic. Required forethought and attention to detail. Caveat: Not everything needs to be library

Code Review arGreg Ward gave a great PyCon 2015 talk on how to make reusable code. We liked it, basically lays out 9 point guidelines that helps programmers make informed decisions about their design. Most of it might seem obvious but putting into use is where all the effort lies. Its a great investment of about 25mins of your time.


  • OOP was not a silver bullet
  • How to write reusable code?

    • Through hard work its not free or its magic.
    • Required foretought and attention to detail
  • Caveat:

    • Not everything needs to be library
  • Principles of Reusable Code:

    • Be a better programmer
    • Fewer classes, more functions
    • Funtions != procedures (beware of side effects)
    • Fewer frameworks, more libraries
    • Don’t go overboard
    • Don’t solve everything
    • Test, test, test
    • Document, document, document
    • Extensibility != reusability

Writing modular and re-usable code make maintenance and development easier. This blog post we explore how to write OO code that allows to achieve this objective

Summary of PyGotham 2014 Talk

  • Procedural programming simple steps and recipie of things and steps to follow that are easy to wrap head round.
  • Object oriented is like working with blue prints
  • OO maps your mental model to code
  • Nothing in python that forces you to be consistency, for which you have to apply “Discipline” of your own
  • Advantages of having OO Code:

    • Improve Maintainibility
    • Simplifies Testing
    • Simplifies Communication
  • Design Principles SOLID {Applies to Functions, Classes, Modules}

Design is an interesting field, for developers it might be black magic. Following are some lessons developers can learn about design.

Django Con 2016 Video nicely explains and gives tips for non-designers. Its a good talk to get you upto some level of competency in designing

  • Design: Make an interface that works well
  • How can we create effective, basic designs?
  • Fastest way to better design is to cut down on clutter
  • Line things up - pixel differences are definately unconsciously notices


Code gets read more than it gets written. For this reason we must write code from readers perspective. Following are some lessons along the lines

Writing code that is readable your peers require some extra effort apart from documentation. We found an interesting Video from Djangocon 2016 on Readability Counts. Terry Hunner talks wonderfully on the matter.

Textbook definition from Wikipedia “Readability is the ease with which a reader can understand a written text.”

Why does readability matter ?

  • You read core often than you write
  • Not all developers are mortal
  • To change code you will need to read and understand it first
  • Lot easier to onboard people when they can read the code

Embedding have taken NLP world like a wild fire. In this blog post we explore how variants of embedding can be used in real world

Word Embdeddings are extremely interesting and exciting. The fact that you can now represent words in vectors space opens up a lot of avenues on how Natural Language Processing will be done.

In original paper Distributed Representations of Words and Phrases and their Compositionality Mikolov et. al described Skip-gram model. Which given a word tries to predict the context around that word. Inverse of Skip-gram model is Continuous Bag-Of-Word model which given the context tries to predict the word. CBOW is described in more details in Efficient Estimation of Word Representations in Vector Space.


NLP is exciting, in this roundup we look at latest happening in NLP domain

Picture is worth a thousand words, but words in those picture is worth even more. Words have power beyond our imagination. It affect our thinking, our emotion and our behaviors. To truly understand power of words spend 3 mins of your time listening to Mohammed Qahtani’s “The Power of Words” his winning speech at 2015 World Public Speaking competition.

In this blog post we will be focusing on surveying the landscape at high level, upcoming posts will have more technical details to it. Never before in era did we as humans had access to vast sources of information but also tools to process it to meaningful insights. Computers now can Summarize Multiple Documents, Win Jeopardy, Carryout Dialog with Humans and Translate 50 languages. In Business what this implies is you can find out why you’re customers are not satisfied. Have instant access to dynamically changing competitive environment and most importantly truly understand customer’s intents.