Archive for July, 2008
Announcing Y-A-T-S-Y
One of the functions in CRM (customer relationship management) world is helpdesk (or service desk). Being a CRM consultant, I’ve setup and supported many helpdesk/service desk installations. With every installations, I developed a desire to come up with a tool on my own.
I started learning Django with the idea of developing such a tool (matching closely to ITSM).
It is not that there are lack of tools in this domain. There are many. Some are excellent too. However with the growth of ITES industry, I am convinced that such tools are going to be in demand.
Goals
The primary reason for me to develop such a tool is to learn the various internals of Django (and web development). Even after developing SOL and SIP (which is in progress), I haven’t touched many areas of Django. Developing a full blown application will help me to understand various pieces of Django.
Secondly it will help me to understand the open source movement. I hope to tap the ‘wisdom of the masses’ to design, develop and spread Y-A-T-S-Y. In the process, I am sure to learn about various aspects of software development and functionality of helpdesk.
Most importantly, it will help me to develop a deeper understanding of the functionality of helpdesk. One thing is to setup a helpdesk and manage it according to a defined process in a tool; another is to develop a tool on my own.
So what will Y-A-T-S-Y offer?
- Web-based case/ticket management
- Workflow for case status
- Levels of support agents
- Self-service module for customers
- Group and Agent inboxes (i.e. different buckets)
- Case Assignment (manual/auto assignment)
- Questions & Answers to guide agents to proper resolutions (Diagnostic Scripts)
- SLA management
- Escalation Rules
- Statistical Reports
- Email Notification
- LDAP Authentication
- REST Interface
- Chat facility with agents
Over the years, I’ve learnt that a generalized tool can’t meet all the requirements of a specific customer. So I’m not trying to build an one-stop solution for all the needs. However, if you think that there are features without which a helpdesk can’t function, please let me know and I might look into it.
What’s the plan?
In the next 3-4 weeks, I will post design and code snippets. I’m targeting minimum of one post and a max of 2 per week. Since this is not my primary job, there might be delays. But I am planning to cut those delays to as minimum as possible so that I can get going fast. (I’ve other ideas to develop as well
)
How can you help?
Its too early for me to ask for help. But as I post the design and then I start to develop, please read and comment to bring out a better product. Following the open source principle, I’ll release often and release early. If you could spare some time, test and pass on the results.
And time to time, say – ‘get going buddy’.
How about banning bribe, Mr. Health Minister?
For the record, I don’t smoke. Nor do I like to suffer with second hand smoke.
Yet, I’m annoyed by the Health Minister‘s obsession to drag smokers to roads for a simple pleasure of a puff or two. One might ask, isn’t it a good thing? Of course it is. But there are so many vital issues to be resolved for a common man; so much of energy (time, effort, money) is spent on this trivial issue. And I believe there is a better way, if at all one is resolute about solving the issue.
It is almost impossible to force people to stop smoking; they aren’t kids man. They have their own senses. If someone doesn’t realize that it is bad for their health, twisting their hands will lead only to rebellion – they will smoke more, not less.
If the health ministry is so particular about health hazards of smoking, stop it at the source. Ban the production and import of cigarettes. Oh! no, you don’t have the guts to kick those rich industrialists; they will blow you off in a single puff. So you continue to nip the helpless common-men and continue to get into the TV box cheaply.
I am concerned about the health of the country than of those who chose to puff away their health. Will any of the minister fight against corruption? If bribe is banned (and strictly enforced), the country will flourish in leaps and bounds improving the overall health of the country. Will you (or your party) take up that cause sir?
Reading for MBA
When I stepped out of the Engineering School, I decided to have a full-stop to schools. I could not force myself into the pain of going through formal study anymore. I was okay to attend few days of training every now and then, but to spend a year or two in school was a big no, no.
Little did I know, when I decided the above, that I will get into IT! In a highly competitive, knowledge centric industry (like IT), it is the knowledge (and the subsequent application of that knowledge) that differentiates a super star from the mediocre.
So I have to build my knowledge.
Still I didn’t want to go to business school. I tried distance education. It didn’t work either.
That is when I heard of Personal MBA, the brain child of Josh Kaufman. Personal MBA is a collection of best of the books under various management fields like Personal Effectiveness, Applied Psychology, Strategy and so on.
Personal MBA is designed for people like me – lazy and don’t want to attend schools, yet want to understand all about business management. All that one needs to do is to get hold of these books and start reading. While reading will feed you with enough knowledge, your experience will grow only when you apply them (which is true for any education). I have gotten about 6-7 of the books recommended by Josh and have read about 3 books. I can tell you that the money spent is worth spending.
The factor that appealed to me the most was the fact that I didn’t have to go to school. Instead I can read to be a MBA (well not exactly as I won’t have a degree).
In these pages, you can follow my progress in reading for MBA and how I employ them in my life and career. Your thoughts will make this an interesting journey. Feel free to drop me a comment.
Did I hear you whisper ‘Good luck’? Oh! thanks, I need a good deal of them.
Its never late to learn some basics
Is it common that IT folks don’t understand finance and its load of jargons? I think so.
I’ve tried to understand financial concepts by reading many, many pages of hard-bound books and whatever I could find on the net.
I even tried ‘shares trading’ so that it will force me to learn those concepts. Did it help? Na, I just lost money; never gained any knowledge. I lost hope of understanding those concepts.
That is when I came across ‘Rule #1‘ by Phil Town in the near-by library. Amidst scores of books that make you feel investment concepts is a rocket science, this one is a gift. Phil explains the concepts in an easy to understand, layman’s terms. I haven’t yet finished the book; but I’ve understood whatever I’ve read so far and it all make sense.
Phil says ‘don’t invest; but own a business’. This comes closer to Ricardo Semler‘s business theory of influencing employees to think ‘I am not cutting stones; but building a cathedral’. I am a subscriber of such thought process and probably because of that Phil’s philosophy appealed to me. Phil quotes a 10-10 rule – ‘Don’t own a business for 10 minutes if you are not willing to own it for 10 years’.
He then goes on to explain ‘The Big Five’ – the parameters to look for to choose a company to invest; oops sorry to own.The big five are:
- Return on Investment Capital
- Sales Growth Rate
- Earnings per Share Growth Rate
- Equity or Book Value per Share Growth Rate
- Free Cash Flow Growth Rate
He claims that there should be a 10% growth rate for the past 10 years. Wow! that is a strict evaluation. But if I invest my hard-earned money, I should be certain that I’ll reap its benefits.
Once I read the first 6 chapters, I wanted to find out how many Indian companies fall into this bracket. Well, it turns out that none of the sites, not even NSE, provide 10 years data.So I’ve to be content with 5 years of financial data.
NSE provides the date on which a company is listed with them. I’ve filtered those companies which are present in the market for 10 years. In that list, I’ve selected those companies that ‘means’ something to me. I can’t wait to see what companies I can own!
Understanding Django Template Tags
A photoblog is incomplete if there is no provision to display information, like EXIF, about the photo. For S-I-P, I need to pass these information to the templates. But what is a better way to do it? Variables can be passed via view functions and I’ve already done that. Per Django documentation, something similar can be achieved via Template Tags too.
Okay now I’m confused. Should I use view function or template tags? If I could use view function to achieve the same, what is the need for template tags. I read and re-read, the otherwise excellent, Django documentation and Django Book. I couldn’t get a clarification.
Then I stumbled on James Bennet‘s article on Template tags. He makes it clear:
If you want to have, say, a list of recently-added content which appears in a sidebar or footer on every page of a site, it’d be crazy to manually change every view to fetch that content and add it to the template context; a template tag is definitely the way to go.
Let me re-word it: Let us say you want to display site name in all pages. Depending on the urls, you may have more than one view function. If so, then site name has to be included in all the context variable of each view function. Template Tags come to the rescue here. You can define a template tag and then it can be invoked from all the templates.
So here is how I implemented displaying site name in all templates.
First define the site name in settings.py; well ideally it should be defined in a db table. But I just starting with S-I-P. As I go along, I will change that.
SITE_NAME = 'Say In Pixels'
As per the above documentation that I referred, the templatetags should reside within the application (on the same level as models.py). So create a directory called templatetags and create a __init.py__ and another file which will contain the tags. The name of the file is important as it will invoked from templates. In my case I named it as sip_tags.py. Here is my directory structure.
sip/
models.py
views.py
templatetags/
__init.py__
sip_tags.py
As of now, sip_tags.py contains just one tag – one to return the site name that was defined in settings.py.
from django import template
from django.conf import settings
register = template.Library()
@register.simple_tag
def site_name():
return settings.SITE_NAME
Now this has to be invoked from the templates. Here is how the html template looks like:
{% load sip_tags %}{% block site_info %} <h1><a href="/">{% site_name %}</a></h1>{% endblock site_info %}
Note that sip_tags were loaded at the beginning of the template. site_name is available for all the templates and view functions can just handle the business logic.
(Thanks to the soul who is known as mkes in the #django IRC channel. I was using {{ site_name }} and wondering why the hell it wasn’t appearing the output. He clarified it. That is the power of Django Community! One another reason why I like to program in Django)
References:
The Django template language: For Python programmers