As I joined my first IT organization, I was moved to work with a US based client. This was my first client with whom I worked with a professional and production point of view. My team and the client were both happy with my performance as a beginner and hence I was handed with subsequent projects with the same client.
One of the projects I worked on was Carton Label – where I had to code to generate labels which could be printed on cartons for easy shipping. We had a bunch of requirements and limitations. The label consisted of Ship From/Ship To addresses along with other meta-data related to order shipping. The tough part was generation of barcodes of various specifications within the same label. The most important factor and perhaps the biggest limitation of this project was that my client was having Zebra printers and hence we had to build a code which was specific to and could be run on Zebra printers.
The client had earlier worked with my organization on such projects and they used to work with an extremely tedious approach for the generation of Zebra printers specific codes to print labels. The offshore team used to build some code related to the given requirements BLINDLY as the offshore team was not having access to any Zebra printers to print and test labels. This code was sent to on-site and they used to run the program to test it on the Zebra printers available at on-site premises. Once the label was printed at on-site, they used to send offshore team a photograph of the printed label so that they can analyze and make changes in the code and retest it in a similar way again.
Tedious han ! Exactly… This is what i felt when I got this label printing project. But I was curious to work out and find out a better approach to this problem. My client had given us about 30 days for development of this label considering the tedious process. As per my organization, the time span of 30 days was too short for this project since it involved such a longer approach. In the initial days of code I realized that the program could be a simple UNIX script from which I can invoke the print command to the remote printer. But the most important part was the “Zebra specific Code” that had to be sent to the printers.
Zebra printers have their own coding language called the Zebra programming language or ZPL. ZPL defines each and every component of the print command to the printer in the form of a code. For example, if you want to print a rectangular box with a Zebra printer, you can write the code in ZPL for that and save it as <file_name.zpl> and then send this <filename.zpl> to the Zebra printer. The Zebra printer will understand the code in that file and print the text/drawing accordingly.
After a research of 2 days, I was able to develop one simulator to this problem. I found one website – labelary.com, where i had deep documentation on each command used in ZPL. The best part of this website included the functionality to copy/paste the ZPL code and generate the label in real time. This was exactly the same label that would get printed using the Zebra printer at on-site. I shared the concept and idea of my code as well as the labels which were generated from labelary.com. I was able to complete the development in 5 days for a project which was actually given 30 days.
My team and client both appreciated the research and the idea and the development time was ultimately reduced from 30 days. This finally gave positive results to my organization and they got multiple projects that involved Zebra printers and ZPL. As a token of appreciation, my organization selected me for extra bonus and extra hike even if I was eligible for a default hike being a beginner. Till date, if there is any project where ZPL is involved, the team leads provide my code as a reference to the developers and I even get calls sometime to explain my code for help. Obviously, I feel happy and mesmerized to help guys who use my code as a reference 🙂