What is the cost of doing a task that always take roughly same amount of time over and over? Well, on the one hand, if it is your job, and you do it right, you might even end up being promoted. But even then, it might be reasonable to think about speeding up the task. I know, sometimes it is not entirely possible to change the way you do a job you have landed, for instance in a very strictly controlled work environment, but in my experience such environments are becoming less common. On the other hand, if your pay depends on the number of times you complete that task, and you do not do it the fastest way possible, you might end up being paid less for your time spent.

If this seems obvious to you, it is alright. A of of people understand this. What might not be obvious however, is the way you optimize the task.

Creating presentations

Lately, I have been creating a bunch of presentations. When I have the option, I choose free open source software to do work. I have heard many proponents of the open source say, that the one of its advantages is the community. Let me agree with this opinion by describing my latest experience.

I have started making the presentation by adding some pictures to it. If you do a presentation that you only show to your colleagues once and then it starts catching dust never to be opened again by anyone, you might use any images you find and do away with it. When the presentation has a potential to be seen by a greater audience, you might start considering the intellectual property. Yes, you can draw the picture yourself, but the peak of my hand drawn artistic output is drawing a pig with a simple geometric shapes or maybe a house without touching the paper twice (this is a trick I have learned in a kindergarten).

If you you are anything like me, chances are, drawing beautiful images is not among your greatest strengths either, and me, you or simply anyone one should be focusing on their strengths. I went for an easier option - sourcing the images online. There is this site called Wikipedia that points to millions of ready to use images, that are hosted on Wikimedia.

It did not take long for me to realize, there are two problems with this approach:

  1. You have to study the license
  2. The images are rasterized

Attributing the author

Yes, generally speaking, it is true that most of the images on Wikimedia are free to use. The problem is, most of them require you to attribute the author, unless you have a really terrific lawyer and you are dying to pay him big time. In other words, you do not need to pay the author, but you are required to at least give him a credit for his work. If I ever needed to choose between paying the lawyer and paying the author, I would definitely not think about the lawyer, but your mileage can vary. However, since you are reading this, chances are we are on the same boat and you would also rather like to support the author. The problem I have encountered is, that there is a lot of licenses and there is no single agreed-upon standard about how the attribution should be done. This is even more complicated by the fact, that there exist more types of media (text, video, audio or combinations of them), which, especially the combinations, require different approaches.

The two most common ways of attributing the author are seems to be putting the credit at the end of your video or presentation for every image you have used, or to put it right below every single image. I will not go into detail about which one is better or worse, both of them have advantages and disadvantages. You can for instance read more here.

After studying some licenses, such as a popular GFDL, I have concluded that the credit would not fit below the image, as most of the time it requires more information than just an author's name to be put there for the attribution to be fully complying, most notably link to the original work. I have seen some content creators on YouTube to use the hybrid approach: insert image author's name right below of it and later link into the video description and it seems to work well, which is what I intended to do with my presentation as well.

Resizing the images

The first three images on my very first real slide had a really pretty author's names below them, with the links and other details precisely stored in a separate file for later. I thought that it would also be good for version control and searching.

But it did not take me long to be overwhelmed by this tactic, because it is a tedious and laborious process. There is also another problem that I have already mentioned, and it is the fact that you cannot easily scale the images up. I am sure that you already know how bad does it look, when your creation contains pixelated images. It sort of ruins the whole work, even if it is just a single one image.

I wasn't in a perfect situation. I could found the perfect picture I needed pretty easily but I had to keep track of the licensing information and also could not simply resize it. Another thing that came to my mind was that all the other aspects of the presentation are in a vector format, for instance chosen font or the things like bullets in a lists. They can be resized without loss. I do not know what devices my audience uses. But I thought it would be nice if they could resize it without a thought.

Killing two birds with one shot

Searching the internet I have found a glorious little project called Openclipart. And by little I mean gigantic! It is a gallery that contains thousands of vectorized images. What is even better, all of them are free for commercial use also. This means no more attribution needed. The project is alive since 2004, but it was down recently, due to DoS attack for at least a year. It is kind of a coincidence that is is working again just as I need it, because as I have later found, it went up again fairly recently, only a month ago at the time of writing. Let me get this straight - I was hooked up immediately! Most of the images I need I can easily find there. Vectorized and with the most permissive license.

Immediately I have streamlined the process of obtaining the images. The very first step was to add the search query into the browser. If your workflow is browser oriented, it really saves a ton of time. Using short keywords for search is also helping to save keystrokes. I had the letter o already used by something else, so I went for oc. This way, if you are already in the browser URL bar, you can just write oc cat, hit enter and you are brought to yet another internet page containing pictures of cats. These cats are however vectorized, but I believe it serves the Internet's purpose. It definitely does for me.

I know, there are even faster ways to get to the search results of a page of your liking, but they could depend on your desktop environment. If you ever wandered what are all the features KDE has that you had never tried, using KRunner to directly invoke search might be among them.

As I have already lightly hinted, my office suite of voice was LibreOffice, making presentations with Impress. It has a Gallery that contains the images you can use for whatever you want. In fact, this is precisely how I found the Openclipart in the first place - trying to find out what license are LibreOffice gallery images published under.

There is also an LibreOffice extension and video for Openclipart. My heart was in an awe! Sadly, it was not updated since 2016 and does not work with recent versions of LibreOffice. If you install it, it only shows up in LibreOffice Writer, not in Impress. Even there, it always exactly zero images as a search result. I did not study why, and went on improving my browser centered workflow experience.

My first browser extension

Downloading the images to the folder was easy. Search the images, find the one that fits your needs, click it, wait for image details page load, click download as SVG. Could you improve the process like this? I am pretty sure you could. There are dozens of ways. The one I settled for was to eliminate the required page load once more. Right clicking on the image and choosing a Save option does reduce the unnecessary page loads, but it does download the rasterized image, which is not what I wanted. But this process hinted me to the right direction - adding another context menu item, that would download the vectorized image in SVG format straight ahead.

Never creating an extension for the browser before, I started with the examples from the documentation examples and it turned out, that one did almost exactly what I needed, so I just modified it and worked with 10 lines of code.

This solution was almost perfect. There was but one caveat: I had to choose between saving straight into my Downloads folder, thus saving one more click on the Save as dialog, or utilizing said dialog to keep my last save location. Not wanting to move files around once saved, I have settled for the latter. You can find more details in the extension repository.

Conclusion

For me, this was a nice experience. Reducing page number of page load times from three to just one for a repetitive task can be a significant time saver. The more time it takes for the page to load and the higher the frequency of the task, the more time wasted. In fact, they are in multiplicative relation, so the time saving is exponential. Do the math yourself.

I could streamline the process even more, for instance reducing the time to get to the browser to start the search. As I have noted, this solution might depend on other factors, such as the chosen desktop environment or a particular window manager. If you do a distro-hopping from time to time, as many people, including me do, to fish for features they did not know about to incorporate them into their workflow, it might not be easily transferable.

Getting work done sometimes brings curious situations. I hope you could find yourself in this story, or have learned something. The bottom line is that you should not be afraid of trying new things, such as building a browser extension to solve your problem. There might be no one else in the entire world who will find your solution useful, but you can never know beforehand.