In one of the most eventful weekends in July 2016, we participated in an internal Hackathon organized by Leapfrog Technology. The hackathon had an open theme, making it all that hard to settle on an idea. I remember the hackathon last year, where the theme was to develop a developer tool. It was relatively more comfortable than to pick an idea as we had just a few. But this time, our team and I were swamped with quite a few ideas.
To pin down to one, we tried an incremental approach, where we analyzed each idea based on three factors: the magnitude of a real-life problem it would be solving, prospects of that being completed within the allocated time frame of the hackathon, and the appeal it would generate while presenting. After thorough analysis, we were convinced to pursue a project that we later named Print Portal (No Hassle Just Print).
The primary motivation to build a Print Portal came from a little incident that had happened to us a week from the hackathon. I had stayed late at the office and had to print some documents. I tried a non-network printer first, but it appeared I had to have the drivers to access the printer. As lazy as I am, I rarely get stuck with these things. So, I moved on to use a network printer. But, the same was required with network printer too. That night I returned home believing you need to have a driver to access a printer. And in the hackathon, it became the core problem that we were striving to solve. We had a team of three: Me (Abhinav), Ojash Dahal, and Sudhir Shrestha.
Our portal had three interfaces:
- It had Common Unix Printing System (CUPS), a portable printing layer installed. The drivers for the printers were installed via CUPS. CUPS also manages print jobs and queues and provides network printing, while offering support for an extensive range of printers, from dot-matrix to laser and many in between.
- Web to Printer Interface: It is the core module of our system and was implemented using Raspberry Pi.
- Web Interface: It provides the end-user a slick interface to access all the printing resources he has at his disposal from his browser. The web interface implements Google Auth to keep track of the user using the system. It was developed using HTML, CSS, and jQuery.
- It also had a Node server running providing the web interface to the CUPS.
- The Raspberry Pi connects to all the printers available and the Node Server running on it provides the end-user access to them via CUPS.
- Printing Resources: It is the actual printing resources that we have. The printers can be both network or non-network.
Besides the more obvious advantages of our system like cost-effectiveness and no hassle of printer drivers, our system would bring great relief to the Resource Management team of the offices. In large offices, more often than not, the team ends up having printers from multiple vendors. Managing drivers for each of them is just a bit hectic task. With our system, once the printer is connected, there would be no need for maintenance.
The hackathon was a great event that provided us an opportunity to test ourselves and reach beyond us. It was a great bonding opportunity with the team members and with others as well.
Originally written by:
Software Developer @ Leapfrog Technology
Leapfrog Technology, Inc. is a technology company that provides software development services for companies and individuals.