finally{}

all will be well finally

Archive for July, 2008

ANN & RFH: Y-A-T-S-Y 0.1

without comments

After few posts on functionalities that Y-A-T-S-Y will support and following on the ‘release early, release often’, philosophy, here comes a first working model of the tool.

What works? Well, not a lot; but one can create a ticket, admin can assign, and the agents can view those assigned tickets; users can view their open tickets.

(Django rocks; I started working from Friday and by noon Sunday I’ve a working version! Most of the time spent was for understanding the new-forms admin. All others were relatively easy. And there is a whole lot of plug-ins available for the features that I’m looking into.)

I’ve borrowed the layout and css from Django Admin.

Login Screen:

image

Once logged in, add form is shown by default.

image

Once a case is added, it will take to the case list. If the logged in user is also an agent, then the assigned tickets are displayed.

image

image

There is a little bit of navigation links on the top-right.

image

All the models from admin screen:

image

Not a lot; but I’m proud of what I’ve done in the relatively short time. I am going to keep working on it until all the features are done.

Unfortunately I’m not able to create a windows executable(I was able to build the windows executable. Read at the end) So in case you want to try it out, follow these steps:

  • If you don’t have Django then download it and install. If you are on Windows, you can also use Instant Django.
  • Checkout Y-A-T-S-Y source code from google.
  • By default it uses sqlite db. For testing purposes this is sufficient enough. Otherwise you need to connect to whatever db that you want to connect.
  • Syncdb to create the database.
  • Login as admin (ex: http://localhost/admin)
  • Create a user and an agent
  • Create master data values
  • Logoff as admin and login as a user (ex: http://localhost/)
  • Create a case
  • Logoff as user
  • Login as an admin and assign to the agent
  • Logoff as admin
  • Login as an agent
  • You should see the cases assigned to the agent

If you’re wondering about ‘RFH’ on the title it stands for Request For Help :-) . If you are generous, you can help in so many ways (I promise to acknowledge your contribution):

  • I’m relatively new to Python/Django. So I would be grateful if you can review the code and suggest ‘better’ ways – ‘Better’ in terms of performance and elegance.
  • Design a good layout scheme. I’m currently using the default Django admin layout and css. While it is great, it is not fair.
  • Translate into different languages (while it is too early to translate, you can read about Django i18n and plan about it).
  • Design a good favicon.
  • Test, test, test. Though I’ll do my round of testing. Testing by others will help to improve the tool in many aspects. Of course before testing, you need to understand the helpdesk functionality.
  • Spread the word in whatever way possible.

Note: I was able to build windows executables. You can download from Google Code. Unzip the file into a folder. Once unziped, double click on demo.exe. It will open the browser with /login. Provide agent/agent (username = password = agent). You should be able to create a case and see the list of cases too. For admin login, go to /admin. Provide admin/admin. Play around.

Related Posts:

Announcing Y-A-T-S-Y
An overview of Helpdesk functionality
Y-A-T-S-Y 0.1 – DB and Reports

Written by Joseph Jude

July 27th, 2008 at 3:43 pm

Posted in Programming

Tagged with

Y-A-T-S-Y 0.1 – DB and Reports

without comments

For the first version, I want to keep the system very simple and easy (as I matter of fact, I’m a die-hard proponent of simplicity; but that is for another post).

Database

A Helpdesk system revolves around ‘Case’ (or ticket or problem). The DB design I’ve shown below supports ‘Case’ and other support data – like Priority and Category.

image

I haven’t included Level, SLA (which will include holidays, business hours) and so on. Those are for next version.

Reports

These are not exhaustive, but should provide a quick view of reports needed out of a Helpdesk System.

Summary Reports

  1. Month-wise report on reported Cases
  2. Month-wise reported Cases by Priority
  3. Month-wise reported Cases resolved by Agent
  4. Customer Satisfaction Score by Agent
  5. Customer Satisfaction Score by Priority

As features are added, there will be need for other reports.

It should be possible to export these reports as pdf, xls. (By default it will be just html).

If you’ve any questions/comments, please feel free to comment.

In case you would like to follow up progress of Y-A-T-S-Y, you can follow me on Twitter.

Written by Joseph Jude

July 23rd, 2008 at 10:55 pm

Posted in Programming

Tagged with

Building an online book-shelf

with one comment

I spend a lot of time in reading books. That is one big hobby that I have. (it suits my introvert nature very well).

One is going on buying books and another is to keep tracks of the books in your shelf. Well, so far I didn’t have any success. I even thought of building an application for it (for lack of time it has not progressed).

Today via Tim O’reilly‘s tweets, I came across someone who already built an online bookshelf in Shelfari. As soon as I read about it, I immediately created an account and added few books.

Its a cool service. Once you add a book, it pulls the information from Amazon (and may be other sites as well), and catalogues the books. But that isn’t cool. It builds a beautiful bookshelf kind of structure online.

 image  

You can add books that you already have, you are reading, you plan to read and so on. So it becomes a comprehensive book catalogue. A nice good effort.

It also allows to download the book’s list in an Excel file.

Check out my online bookshelf. In case you create one, invite me.

Written by Joseph Jude

July 21st, 2008 at 11:52 pm

Posted in General

An odyssey with gods

with 2 comments

It is an age old question – is there a god? I journey through life to find practical answers. The journey isn’t easy; but the answers out of the journey is practical and they work good for me.

MPj04276070000

Innocent, Ignorant and Indifferent

Been born into a catholic family, my childhood days revolved around Church – Sunday Mass, Annual Festivity, Christmas and Easter celebrations and so on. Being in a predominately Hindu society, Diwali and Pongal were equally anticipated. Vocation Bible school and ‘Kirubananda variyar‘ discourses were attended with the same enthusiasm. We’re innocently ignorant of our differences. Gladly these differences didn’t matter.

I read Mahabaratha and Ramayana much before I read a single page in Bible. Right and wrong were taught from a cultural perspective than with a religious tone. I was friends with Vasantha, Jacqueline and Fatima (along with Augustine and Rama Subbu). We were either ignorant or ignored religious differences. What a bliss!

I got to save the world!

I transitioned from the blissful childhood into ‘I-know-everything’ college life. In college, I was introduced to ‘deeper’ Christianity. I read Bible cover-to-cover; prayed fervently for the salvation of the world; desired to be a Stephan or a Paul of this era. I was so passionate about Bible that you could say that I was breathing Bible.

I was interested in ‘practical’ Christianity than scholarly or religious Christianity. Instead of reading Bible ‘to find favor in the eyes of God’, I read it to find solutions for problems that I faced on a daily basis. Another aspect – as instilled by Mr. Murugan, Tamil master of High School – was ‘to check out if it was so’, rather than blindly accepting some theory or doctrine just because it came out of someone from the stage.

Though I read Bible and went for prayer meetings, there an aspect that I couldn’t reconcile which is, ‘Jesus is the only way to heaven; whoever have not accepted will not reach heaven’. It was the fundamental belief of Christian system. But I had difficulty accepting it. I believed in inclusion than exclusion – whoever accepted Christ will go to heaven; but I didn’t believe whoever didn’t accept will not go to heaven. My belief – rather disbelief of the fundamental truth – arose because of personal reasons: I lost my brother at an early age – he died when he was one. I couldn’t accept the fact that he wouldn’t be in heaven.

With that fundamental difference, I held the belief, ‘Listen, I’m telling you what worked for me. In all probability it will work for you. But I’m not saying something else will not work’.

Except for that one difference I went around happy with hope.

Naively I looked into world and life with an attitude of ‘Bible & I have the answers for all the questions; we have the solutions for all the problems of the world’. What Bible offered worked well for me; except when it didn’t work, because the other party was under the satanic influence (or in some cases its not God’s will).

Is God hiding somewhere?

While I was looking at life naively, life looked back with a sarcastic smile.

I was attending a small but vibrant Church. We were ‘jolly good’ youth bonded well with ‘love of Christ’. While we were praying, working hard and waiting for revival, an unexpected happened – the Church split. I was shocked. I didn’t understand. Personal differences cut the chords of love, bond and unity. The pastor and the youth leader went in different ways. I was torn – youth leader was my best friend who brought me into this Church; but Pastor seemed right. I stayed with Pastor, but I was still friends with the other side of the camp. Yet there was an ‘unanswered bitterness’ in me.

Couple of months later the Church was burnt in a ‘mysterious’ ways. Initial investigations indicated few miscreants. But the Pastor was future-focused and he didn’t want to be clogged with the past.

I admired the way that Pastor conducted himself but I was drowning with questions with only an answer of ‘God acts in special ways’ answer.

What came after threw me off completely. In a personal disaster, Pastor disowned me. I did everything I knew (prayer, consultation) before I took my decision. But it went awry. When it went from bad to worse, I was all alone to face the situation. I was hurt, puzzled; left with no direction. The pastors, priests and religious leaders that we approached behaved in selfish and materialistic way. As I was hiding from situations so was God hiding from me.

May not be innocent; may be ignorant; definitely indifferent

What Christ couldn’t do, whisky did; and what whisky didn’t do, family and friends did. I sailed through the toughest of the time through tons of self-help, loads of family support and friendship of those who didn’t know they were helping (I’ll ever be grateful to Xavier, Venkat and Steven).

I crossed the roughest of the sea; but the journey thwarted pretentious religiosity and strengthened me spiritually.  I’m neither a naive Catholic nor a passionate Christian; but an indifferent agnostic.

I still read Bible. I still go to Church – on my birthday and on Christmas day – because that makes my mother happy. But I don’t believe that Christ is the only way to heaven; in fact I don’t believe in God, Christ or Heaven.

I have a practical belief – if we act with love and consideration, we can have heaven ‘here and now’. If I don’t make a heaven out life before death, I’m not worthy of heaven in life after death. Since I can make a heaven for myself and those around me, even I’m God, may be in a small way.

If you believe, you are a God too.

Written by Joseph Jude

July 19th, 2008 at 11:12 am

Posted in General

Tagged with

An overview of Helpdesk functionality

without comments

In an earlier post, I talked about developing Y-A-T-S-Y, a tool for helpdesk. Before venturing into development, I describe here my understanding of Helpdesk functionality.

Let us say, you bought a HP Printer. It was working fine. You were happy about the product. Suddenly it is not printing. You want that to be fixed (some might want to know what happened; but majority of us are happy if it was fixed and worked).

Consider another situation. You started with Vodafone services. You joined their amazing ‘Family & Friend’s offer’, because you were convinced by a cute girl in the store that you can form your own ‘club’ and it is almost free if you call someone within that ‘club’. When you received the monthly bill, you notice that it doesn’t reflect what you thought you understood. You want someone to explain that to you.

I’m sure all of has such experience.

image Every product manufacturer (service provider) sets up a Helpdesk (service desk/call center) to listen to these customer complaints and probably resolve them in the first call.

However many-a-times the issue can’t be resolved in the first call – some one more qualified need to troubleshoot the USB connection or billing team need to provide details of the billing. This will constitute next level in Helpdesk system. The number of levels that an issue traverses depend on the complexity of the issue.

In general, level indicates the increased level of expertise. But it could also be just another department in the company, as indicated in the billing issue above.

All is well if the issue can be resolved at the first call. Like the example that we considered above, there will be instances where a deeper analysis is needed. In such instances, as a customer, you want to know how long it will take for them to get back or to resolve the issue. That is when Service Levels come in. Service Levels define the time that a servicing company (not necessarily that particular agent) will take to resolve the reported issue. That amount of time depends on the criticality of the issue – you would demand a quicker resolution if you are not able to print anything; but would be okay to wait for few days if the printer became slower.

Every firm wants to maximize the benefit of helpdesk implementation by  resolving the issue on the first call – called First Call Resolution. Customer satisfaction drops heavily if they’ve to call back (or wait for agents to call them back). One of the ways is to implement a resolution database. This is something similar to Frequently Asked/Answered Questions. Building such a DB is an ongoing process and it should be regularly revised. This will increase the number of times, an agent is able to resolve issues on the first call itself.

image

Most of the helpdesk tools additionally provide a ‘Diagnostic Scripts’ based resolution database. Using such an implementation, agents can search for a keyword and then the tool will guide them through ‘Yes/No’ type of wizards to arrive at a proper resolution.

image

If the issue is not resolved in the first call and when you call again, you would like to know the status of the issue – is someone working on it; or it is on hold. These are represented by state transitions (or Workflow). State transitions can be a simple one as depicted on the left. However complex transition requirements are not uncommon.

These workflow gets complicated if many departments (or levels) are involved. Some customers will demand a parallel workflow (to indicate the life cycle in the respective department) and merging of the workflow status before providing resolution.

SLAs are calculated in tune with the statuses. What I’ve shown here is a very simple algorithm. In reality, this gets complicated as well – should the SLA be on hold if the agent is waiting for an answer from another department? Thinking as a Level 1 agent, it should be; but if you take a customer perspective, it shouldn’t. Customer is least interested to know that a ticket went through fifty other departments; they are interested only if the ticket was resolved in the stipulated time.

Consolidating all of this, here are the requirements that a helpdesk tool should support.  This is not an exhaustive list; but it lists most of them.

image

Did it give a fair idea of how a Helpdesk function? Do you’ve any comments? Speak up.

In case you would like to follow up progress of Y-A-T-S-Y, you can follow me on Twitter.

Written by Joseph Jude

July 18th, 2008 at 7:19 am

Posted in Programming