Archive for the 'General' Category

October 1, 2008

Alles klar!

hendrik @ 1:03 pm

A big hello to the world and PaperCut’s customers. As a new developer on the PaperCut team I am excited to be part of the new directions in which development of PaperCut’s Print Management Software is progressing. So many things to sort out on the first day! Where is the coffee? Where is the stationery supply cabinet? And where are the umlauts and accents on the keyboard?

Wait a minute, umlauts? That’s correct, I am looking forward to catering especially to our German- and French-speaking customers’ concerns. So please hold for these important messages:

Guten Tag! Ich freue mich, unseren deutschsprechenden Kunden als direkter Ansprechpartner im Team von PaperCut zur Verfügung zu stehen.    

Bonjour à nos clients français et francophones. N’hésitez pas de me contacter avec vos besoins et soucis. 

Stay tuned to this frequency for more news from myself in the upcoming weeks.

September 30, 2008

Wow - What a great night!

priyanka @ 2:23 pm

Oh well, we didn’t win but it was a fantastic night all round. It was a great experience for us all and we’re very proud to have been a finalist in among a great group of businesses. It was a great night with good food, media running around doing interviews, and some dancing to end off the night. Obviously the judges didn’t find our print monitor software as “sexy” as the Wild Action Roaming Zoo for children! Here are some photos of the night.

award

Matt and Chris collecting our award


Telstra Business Awards

Our Telstra Business Award - Now on our wall


PaperCut Development Team

The PaperCut Development team - Hendrik, Matt, Priyanka, Chris, Tom

September 19, 2008

We’re finalists in the Telstra Business Awards

Matt @ 1:20 pm

We’re very proud to announce that we’ve been made state finalists in the Telstra Business Awards 2008.

Telstra Business Awards 2008 - Finalists

It’s a great honor be a finalist amongst so many other great companies in the country’s most prestigious business awards. It is recognition of all the hard work the PaperCut team has put into developing a great printer control product and providing great support to our customers world-wide.

Running a business is hard work, and you don’t often get time to reflect on the how far we’ve come and what we’ve achieved. These awards have allowed us to do that, and be proud of these achievements.

The winners will be announced at a formal dinner tonight (19th September 2008). The whole team and partners are coming along. It should be a fun and exciting night.

Wish us luck!!

PS: We’ll post some photos of the night here next week.

September 16, 2008

From University to PaperCut

priyanka @ 1:48 pm

When I first thought of writing a blog article I wasn’t able to decide the topic for it. Then I thought writing about transition from university to work would be a good idea as every person has to go through this transition and experience the difference.

My University life was full of excitement and fun because of the friends I had. I am a people person and I absolutely loved surrounded by my friends. We used to have lunch and also do all our assignments together. Working as a group definitely increased my productivity and I graduated from The University of Melbourne with Honours. There was no time to sit idle which was the best part of being at university. I loved every bit of it….. However, I detested going to the lectures, working on projects on weekends and I absolutely disliked the swat vac period which was full of pressure and anxiety. 

My life changed significantly since I started working at PaperCut. I definitely live a more structured/balanced life. Moreover, it has made me a more organized, responsible and confident person. One of the requirements for the job was to start work at 6 am..I thought it would be impossible for me to wake up at 5 am. Now, I have finally managed to get it into the routine. I believe nothing is impossible in this world if you have the will to do it. (Impossible = I M POSSIBLE.  :D ). Now I have actually understood the meaning of the saying by Benjamin Franklin “Early to bed and early to rise makes a man healthy, wealthy and wise.” ;-)  

When I started working at PaperCut I realized what you do at university is completely different to what you do at work. Real computing experience comes when you start working. Now, I implement features that are used all over the world by millions of customers. I really enjoy implementing them and learning from more experienced programmers – Chris, Matt and Tom who are very encouraging and inspiring people. Working on a printer counter software which has a cross-platform support has surely increased my knowledge on different kinds of networks and operating systems, data bases. I have been working on various technologies such as Java, Tapestry, CSS, HTML, HQL, Jasper Reports, Hibernate, DocBook and many others. I have even started drinking coffee in the hope of becoming a better programmer. ;-) (According to Chris, coffee is a performance enhancing drug for a programmer.)

Now I can spend more time cultivating my hobbies such as dancing, cooking and playing basketball and badminton.  Working full time has also given me the freedom to buy whatever I like unlike before when I had to think twice before spending my money. Furthermore, it’s such a relief to think that I don’t have to give exams ever again in my life.

One thing which really upsets me is that I don’t get to see all my university friends as often as I had thought.  Everyone seems to have gotten busy in their work and personal lives. In addition, I miss my family much more than before and now really can’t wait to meet them in December.  

September 4, 2008

Apache Derby

Chris @ 1:05 pm

The Dev. Team here at PaperCut recently did a presentation about Apache Derby at the Australian Java User’s Group (AJUG) meeting in Melbourne. Apache Derby is the default database option supplied with PaperCut. Even thought we offer a choice of MS SQL Server, Oracle and Postgres within PaperCut, we find that 90% of our 10,000+ users stick with Derby. It’s a great choice for most of the medium to smaller sizes organizations as it’s a self-managing database. This means that you as an administrator don’t have to get involved with traditional DBA management tasks such as off-line backups, indexing, and performance tuning. The application and embedded database handles this all for you!

Many will have heard about databases like Oracle or MySQL. Apache Derby however is a little more discreet. The reason for this is that it’s an embedded database. That is, it’s designed to be pre-packaged with applications as a library rather than being deployed as a separate standalone component. However just because it’s has a “low profile” doesn’t mean its not good. It our opinion it’s one of the best databases around. Its performant, packaged full of features, and has a fantastic pedigree being born out of the database development teams at IBM, Informix and Sun. Apache Derby was open-sourced in 2005 when IBM donated it to the Apache Foundation. In now continues to be activly developed under the stewardship of the Apache Foundation along with many other world-class projects such as the Apache HTTP server.

If any are interested in knowing more about Apache Derby and its behind the scenes use in our print monitor application then please check out the slides from the presentation (PDF or HTML).

September 2, 2008

The Most Common Misspelling

Tom @ 12:04 pm

The internet is a great place to laugh and poke fun at the grammatical abilities of its denizens. Not that I claim to be such an expert; I just enjoy the occasional entertainment at someone else’s expense. While some, like “you loose” and “your a …” are just plain annoying, there is the odd gem like cereal killer (that link is from FAIL Blog’s Burn of the Week, which has been a bit of a regular for classic grammar blunders).

Fortunately for the grammatically challenged, there are a few factors that save from too much embarrassment:

  1. A spell checker
  2. Anonymity
  3. Obscurity (the fact that very few people are actually going to read what you wrote)

I’d like to highlight an example that failed all three, is possibly the most common misspelling of all time, yet is one I’d never seen or heard of until the other day.

I was recently working on integrating PaperCut’s Payment Gateway Module with the Barclaycard ePDQ CPI service, allowing students (or others) to transfer value from their bank or credit account into their PaperCut account, which they can then use in addition to any print quotas they receive.

One of the security features of the Barclaycard service is to only accept connections from users who have been redirected from a particular URI. This is a feature of HTTP called the referrer URI - our web browsers tell the web page we are visiting where we just came from. This information is valuable for web masters to understand where their viewers are coming from. In this case, only accepting users who have come from a particular URI prevents a malicious site trying to make use of the service.

During development, this turned out to be more of an annoyance than anything. Luckily, there is an easy way to set/fake the HTTP referrer URI in Java:
urlConn.setRequestProperty("Referrer", "http://my.allowed.url/");

Something was wrong though… the above line didn’t seem to be working, or at least Barclaycard was still refusing my connection. Perhaps I spelt it wrong? A quick search in an online dictionary confirmed I’d spelt it correctly. But wait, what was the next entry?

referer
A misspelling of “referrer” which somehow made it into the HTTP standard. A given web page’s referer (sic) is the URL of whatever web page contains the link that the user followed to the current page. Most browsers pass this information as part of a request.

(from the Free On-Line Dictionary of Computing)

Well that was a surprise. Not only did someone misspell the word when formulating the standards document and possibly fail to run a spell checker, but supposedly there was no-one amongst the committee or technical consults that successfully recommended a correction. What a colossal screw up. Even the official HTTP/1.1 specification has this to say:

The Referer[sic] request-header field allows the client to for the server’s benefit, the address (URI) of the resource which the Request-URI was obtained (the “referrer”, although header field is misspelled.)

So, given that HTTP referrer URI is used every time any person clicks a link on the internet, I’ll vote it the most common misspelling of all time.

On the flip side, as Chris pointed out, this misspelling has saved the world a whole heap of bandwidth: 1 byte for every link ever clicked!

August 29, 2008

6-weeks early!

Chris @ 5:07 pm

WilliamMy first son William arrived yesterday. Unlike our planning here at PaperCut which usually run a few weeks behind schedule, my first child has decided to buck the trend and run ahead of schedule. William weighed in at 1.795kb (just under 4 pounds) - very small but strong and healthy. Both Mother and baby are doing well and Dad is very proud.

William’s bound to be a “tech baby” and I’m sure will be writing computer code in a few years. I was meant to be presenting at the Australian Java User’s Group the night he arrived. He was obviously very keen to get out and attend (also thanks to Matt who stepped in and did the presentation for me). He’s first taste of technology was his photo being sent out to everyone a few minutes after his birth courtesy of a 3G iPhone!

I’m sure to have my hands full over the next months. Lots of time looking after baby and working on print control software between feeds!

August 26, 2008

Novell OES Linux beta program update - due next week

Chris @ 12:15 pm

Another update for the sites participating in the Novell OES Linux beta program. It looks like we’ll have to wait a few more weeks to get proper print quota on iPrint. The iPrint update required to run PaperCut will now not be available until next week. Novell will be undertaking the last validation tests on Friday and assuming they all pass, they’ll be looking at supplying us with the update on Monday. The build is going to be based on the iPrint Beta 4 release. I’ll keep you all posted and let you know if there are any further delays.

August 1, 2008

Java Magic Trick: The Ball Is Everywhere

Tom @ 7:04 pm

As keen Java programmers we’re always on the lookout for interesting tidbits about the language, how it is being used and where it is heading. Just the other day Matt brought in a copy of Java Puzzlers to test our knowledge. So it was something of a coincidence that the guys over at Atlassian came out with their own Java puzzler.

The puzzle is a Java version of the shell game (AKA ‘thimblerig’), where the onlooker must choose which shell the ball is under (after the con artist has shuffled them around).

The puzzle and the included solutions are interesting, and well worth a read if you’re a programmer. Chris came up with the ’static block’ method almost immediately, but I must admit that my thinking was just along the lines of “err, with reflection somehow?” before we looked up the answers.

Four solutions were presented on Atlassian’s blog post, but I have a fifth: The terms of engagement were “you can only modify the class representing the ball”. But what about a solution that doesn’t involve modifying the ball either? What if you could alter the onlookers’ perception so that when the cup is raised they see a ball, despite there not being a ball at all?

Using the Force and with a wave of the hand, we get:

aspect YouWillBeEqual {
    boolean around(): call(boolean String.equals(Object)) {
        return true;
    }
}

Now there is a ball under every cup, always. At least, it appears that way. Actually, everything around here appears to have a ball under it…

Made possible with a little AOP ;)

Support case study: Optimizing the account selection popup

Matt @ 12:31 pm

When we’re not working on new features, we’re often working on improving PaperCut to ensure it works well in a large variety of situations.  Sometimes customers use PaperCut in ways we never intended, or encounter scenarios which we never envisioned.  We take pride in listening to our customer experiences, and making improvements to ensure we meet their needs.  The result is a better product, and everyone benefits.

Today I’ll explain an issue raised recently by one of our largest PaperCut ChargeBack customers, and then describe how we designed and implemented the solution.

The Problem

This customer was running PaperCut in a challenging environment:

  • Around 2,000 users all running the user client to charge printing to shared accounts;
  • Users are located at a number of remote sites over slower network connections;
  • Printing is charged to over 30,000 shared accounts;
  • All users could charge printing to any of the 30,000 accounts;
  • Each night an automated process added, removed or modified hundreds of accounts.

They reported the following problems:

  • The user clients on remote sites were slow to popup when first printing.
  • A large amount of bandwidth was used communicating with the primary PaperCut server.
  • The PaperCut server was slow to respond in the mornings.

Analysis

It was clear that the cause of all these symptoms was the large amount of account data downloaded by each of the user clients.   The user client will only download the account list from the server when it detects accounts have changed.  But at this customer the account list was changed nightly.  This caused the client software to re-download the large account list when the user first printed each day.

The client software communicates with the server using XML web services.  After some analysis we found that the the XML representation of the 30,000 accounts was about 7.5 MB.  On a fast local network this size is not a problem, but with 100’s of clients running on remote sites over slower WAN connections this starts to be an issue.  It causes congestion on the network, the popup is slow to appear, and the server becomes overloaded.

After a few brainstorming sessions and consulting with the customer we approached the solution from two angles.

  1. Reduce the size of the account download;
  2. Allow the account data to be efficiently distributed to remote sites.

Solution Part 1: Reducing the download size

To reduce the size of the data downloaded we changed the account file format in two ways:

  1. Change from verbose XML to a much more efficient binary format;
  2. Compress the binary data

The net result was a reduction of approximately 25 times!   In the case of this customer the 7.5MB download was reduced to around 250KB. Quite an improvement!

This change alone dramatically reduced the popup speed, and bandwidth used over the WAN connections.  But we could do better!

Solution Part 2: Efficient distribution

We realized that it was very inefficient for multiple clients at the same remote site to download the identical account list.  What if we could only download the list once per site?

We implemented a server-side tool to save the account list to a file (in the identical format described above).  We added a new option to the client software to allow it to load the account list from a file instead of downloading from the server directly.  Then all that this customer need to do was:

  1. Schedule a task to create the account file each night (after the accounts were modified), then copy the account file to a file share on each of the remote sites.
  2. Configure the clients at each site to load the local account list file.

The result was that only a single 250KB transfer was required to delivery the new account list to all clients at a given remote site.

Conclusion

The result of these changes was dramatic.  Previously, on a site with 20 users the daily account download would consume around 150MB of bandwidth.  After these changes it was reduced to only 250KB.  What an improvement!

Not only was this a great result for this customer, but the product is improved for everyone.

I hope this gave you a little insight into the work we do behind the scenes.  This change wasn’t glamorous or exciting.  It will only be a single bullet point in our version 8.4 release notes.    However it’s often many of these small improvements that make the overall product great.