|Think about Loose Coupling|
Re: Your Favorite Heroic Perl Storyby redlemon (Hermit)
|on Jan 21, 2005 at 22:05 UTC||Need Help??|
My company was running a horrible GUI based helpdesk ticketing system. On windows. Me being a UNIX sysadmin, working behind a SUN workstation, I hated that. It meant that I had to run windows along side on a laptop and couldn't cut&paste solutions, etc (this was before VNC).
I decided to see what I could learn from tcpdumping its traffic. It turned out it got it's GUI layout from a database and that all the business rules were in that database as well. Account name and password were either unencrypted or easily guessed, so I logged in using tora and analyzed the schema. Before long I had a perl shell running, that I could use to handle my tickets with. All was well with the world.
Building in macros came naturally and was the first time saver. Single word commands that used a template to fill in the ticket response form and flagged the ticket as closed.
All tickets were logged for one queue "helpdesk" and up to then everybody just went through the queue and picked out their own. Some PHB decided that it would be better to have a dedicated queue slave who's task it would be to monitor the queue and assign tickets to engineers. Of course there was no headcount available so it was decided we all had to take turns. That was very time consuming and mind-fryingly dull.
I thought of using regex rules to read and score the question forms and to use those to assign the tickets. So I built in a teaching mode where the shell would look at my choices and ask what keywords I looked for in the problem. And in a couple of weeks it had developed it's rule based brain and was automatically distributing about 30% of all tickets during my shift.
I gloatingly showed it off to my poor colleagues who were still manually distributing tickets. They went: "hey, can I use that?". So before long the shell was running 24x7 as a virtual queue monitor. That was the second time saver.
Still later I adopted the same rule based engine to answer trivial questions of which it turned out there were quite a few, especially for the windows helpdesk.
I still remember isis (as the shell was called, after the ticketing system) fondly, especially since the ticketing system has been replaced with an even more horrible java based web interface, that I just can't hack into.