About “Behind the Scenes”

We are exposed to a lot of software and hardware every day, but most of the time, we just experience and judge with the inherent “user” vision. The fast-paced mode leaves us no time to experience much of the concept behind. “Behind the Scenes” is the result, and from time to time we invite producers to talk about their experiences in product development/production.

A post titled “Snipaste — Three years of Development, But Not just Screenshots” has become a hot topic on V2EX. This free and powerful Windows screenshots tool has quickly gained the attention and love of many users. Snipaste was first introduced in detail.

But when we got in touch with Levie, there was a lot to learn about the Snipaste design and the story behind it. In what is probably the longest “Behind the Scenes” interview ever, he shares his thoughts on how Snipaste is used, what the future holds for Snipaste, and what he has learned for anyone who wants to try it out on their own.

It takes three years to sharpen a sword

Snipaste (PicNotes) was written in early 2014, and it’s been almost three years now. I’m not convinced that it took me three years to develop it.

PI:Tell me about yourself.

Hi, my name is Levie and I am currently a PhD student. Before many websites said THAT I was a college student, actually is not true. I wish I had made Snipaste when I was in college. It would have made a huge difference in my career and life path.

Snipaste was my first public release, but I’ve had a lot of ideas from my computer days, and I’ve written them down, so I’ll have more to come. But I’ve been working on the Snipaste for a long time now, so I’m going to have to put the rest of my creations on hold and hopefully they’ll be popular when they come out.

PI:What was the original reason for developing Snipaste? Why do you want it to be such a powerful tool?

In fact, Snipaste’s birthday is December 4, 2015, which is the day I changed its name from PicNotes, which was born during the Spring Festival in 2014.

The last version of PicNotes

As you might guess from the name PicNotes, the purpose of PicNotes is to use pictures to take notes, temporary notes, so they stick to the screen rather than in your notebook. As for why the name was changed to Snipaste, it is because the screenshot function is more powerful without realizing it, so it has to be reflected in the name.

Many people say that Snipaste is too powerful and has too many features, but as an everyday user, I use every single one of them often enough that I don’t think it’s too complicated.

It’s not that I’m trying to make the Snipaste feature a lot of functionality, but that’s what it needs if it’s going to be efficient in a texturing way. There are a lot of things that are intuitive, but people who really understand Snipaste won’t say it’s complicated, and I’m glad there are people like that in the user base.

PI:The software took three years to develop. What difficulties did you encounter during the development process? How is it solved?

In fact, the title of the post said “three years of developing screenshots tool”, just to attract everyone’s attention. Although there was an explanation in the post, no one seemed to understand what I meant.

Snipaste (PicNotes) was written in early 2014, and it’s been almost three years now. I’m not convinced that it took me three years to develop it. Since there is no deadline for Snipaste development, I feel free to write whenever I want. Sometimes I have no new requirements, and I may not change a line of code for three or four months.

I like to do things on my own, without asking people when I can, so WHEN I developed Snipaste I programmed for Google, StackOverflow, the Qt community, and Github. Combined with their own thinking, this has been able to solve most of the technical difficulties.

Other difficulties are mainly Qt’s own bugs. I’ve encountered about a dozen Qt bugs while developing Snipaste. Most of them were reported by other users, some were quickly resolved in the next release, and some were not resolved for years (many of them were Qt on Mac bugs, That’s why I said Qt support for Mac is bad). I also submitted a couple of bugs that were dealt with quickly, but I found two or three more that I had too much to do at the time to report again.

If the development process encountered Qt bugs, is more helpless, because you are difficult to solve it yourself, can only hope to Qt official updates. But Qt is generally very good and comfortable to use, especially the user manual(Qt Assistant)Very practical, I can’t find the solution in the user manual to search the Internet.

How many functions and scenarios Snipaste has

If you want to learn an advanced tool, there is a cost to learning. There is no such thing as a powerful tool that is free of cost. Powerful tools often have the same thing in common: once you master them, the rewards far outweigh the cost of time and effort.

PI:I see you mentioned that you have all kinds of strange requirements for screenshots, do you usually use a lot of screenshots annotation operations? What kind of things are they used for?

In fact, I don’t have any requirements for annotations, but I have high requirements for screenshots, such as “screenshot again according to the area of the last screenshot”, for example, precise control of the scope of screenshots.

Back when Snipaste was called PicNotes, its annotation function was similar to that of QQ screenshots, with no shape to edit and no text to rotate. The reason why I made it editable and rotated is very interesting. It is because I needed to upload my ID photo several times and then I had to put a text watermark on the image. For example, “XXX for XX only”, such watermark is usually written diagonally. Then I found that PicNotes could not generate such text, nor could QQ screenshots, so I had to open PS.

This annoyed me, why I had to open Photoshop when there was no complicated requirement, so I started to implement text rotation myself, and other annotation tools benefited as well.

π : If you were introduced to someoneSnipaste, what features and details do you emphasize to people?

The two main features of Snipaste are screenshots and textures, so I’ll keep them separate. (The annotation tool is also a separate module, but it’s not that special compared to other annotation tools, so I won’t mention it.)



Mapping function of Snipaste

Let’s start with the picture(Yes, again, Snipaste is a texture.).My favorite feature is automatic backup and grouping.But sure enough, people still use Snipaste as a screenshots tool, because very few users have commented on it or discussed it with me. These two features actually cost me a lot of work, so let me elaborate on them just to give you a taste of what they’re all about.

Automatic backup, which means that every image you post to the screen, the annotation and editing status of each image, and the cascading relationship between images, will be restored perfectly the next time you run the Snipaste.

What does “perfect” mean? Take a text annotation example. If you add text to an image, but you’re not finished editing it, the text may be partially selected, and the cursor is placed between two words. When you close the Snipaste, open it again, and you’ll see that the text is still being edited and rotated. The previously selected text is still selected, including the cursor position! This way I don’t have to worry every time I turn the Snipaste off, because the next time I turn it on, the Snipaste will make you think it was never closed.

This is inspired by Microsoft’s OneNote. When you select a text on the Notes page, it’s really always selected, whether you switch to another note and back, or you close OneNote and open it again, you’ll find that text is still selected. When I discovered this, I wished I could write software like this.

Then there’s the tile grouping feature, which I’m sure power users and procrastinators will love.

A find information such as my current for problem, so set up A pile of associated with A map, but then I have to stop problems because of various reasons. A, B turned to solve problems, and of course I don’t want to issue A map to continue to take up my screen space, prevent me from B thinking, the problem of this time I will create A new group, the switch in the past, I can start making A bunch of tiles for problem B, and I can always switch back to problem A’s group and continue working on it.

Some users may be familiar with this usage scenario, yes, the TAB groups feature of Firefox (which seems to have been removed in recent versions). I use Firefox for seven or eight groups of a dozen tabs all year round…

You might say that these two features aren’t original to Snipaste, but they’re not part of the same software. Just like publishing A paper, the algorithm used to solve problem A, I found that it could be used to solve A completely different problem B, so A targeted adaptation was actually recognized as original.

With textures (finally) out of the way, I’ll make three quick points about screenshots.

The first is to allow users to edit the screenshot range again after annotating the screenshot. In fact, this is a very normal requirement. I don’t understand why QQ screenshot does not allow users to do this. When I used to take a screenshot with QQ, I often edited it carefully for a long time, and finally found that a part of it was not cut in. Oh, my God, I couldn’t change the scope of the screenshot, so the editing was in vain…

Second, precise control of the screenshots’ range. Note that I don’t mean to change the screenshots’ range pixel by pixel, but I know exactly which pixels are included in the screenshots. In Snipaste, the Snipaste range is surrounded by border lines. Under the magnifying glass, pixels obscured by border lines are not included in the Snipaste range.

However, some screenshot tools do not do this, they actually draw the border line inside the screenshot area! The Snipaste paste will draw the border lines at 3-4 and 11-12, while some screenshots will draw the border lines at 4-5 and 10-11, covering 5 and 10. They were included in the screenshots, but I couldn’t see them in the screenshots because they were blocked by border lines.

Third, when adjusting the screenshot range with the mouse, you don’t have to put the mouse on the editing line of the screenshot area, but you can start dragging and adjusting the screenshot area as long as you place the mouse on any point outside the screenshot area. I can’t help but do it all the time when I’m taking screenshots. It feels great. Yeah, there’s such a big area outside the screenshot area, why not allow users to click.

Secondary edit window
Precise control range
Automatic recognition range

PI:You have mentioned that Snipaste is suitable for programmers and designers, and it is especially suitable for multi-screen users.

Some usage scenarios have been mentioned in the previous question, mainly data collection and recording, which are also applicable to ordinary users. As for special groups, let’s start with programmers.

Convert the code to an image

Here the main use of the function is to copy the HTML format text into images, but this feature is not understood by many programmers, think that as long as copy the highlighted code, the image is also highlighted code.

No, it depends on the code editor you are using, if the editor does not support copying code in HTML, then it will be plain text and only plain text images will be posted.

I’m going to take a step back and install the Productivity Power Tools extension for Visual Studio. Turn on the “HTML Copy” extension and you can start copying code at will. I’ve tested VS10, VS13, and VS15 and pasted the code in Snipaste and it looks almost exactly the same in Visual Studio!

So what’s the use? For example, if you want to implement a feature, you might want to refer to another code snippet. You can copy the code snippet and post it next to it so that you can have fun comparing and writing code. Of course, many editors come with a split window that can do similar things, but Snipaste is much more flexible and convenient.

Occasionally, we need to get code to the phone to read, but if we put code files directly to the phone, code highlighting requires a special application, and text files on the phone are always easier to manipulate than images. Copy the code you need to read and paste it into a picture on your phone. Even if you copy thousands of lines of code, Snipaste will have no problem turning it into a full-size image.

As for the designer, since I’m not a designer myself, I may not be completely correct. One scenario isColor extraction and recording(The latest version already supports copying Hex values directly)Posted color cards should also be a useful feature.

Another scene is to post the image and set it to translucent. Now you can compare it with another image. If you place it on a blank paper and turn on the mouse penetration state, you can start copying.

Color extraction

π : The Snipaste function not only takes a color, but also copies RGB color values to the clipboard, pastes colors, and transforms other color formats. Did you just want to do this, or did you just do it because a friend asked you, “Can I?”

In fact, I used the color extraction function when I wrote my own program, so I added it for my own use, but later “imaginary” designers would also need it, so I added some features THAT I imagined they would need, after all, I was going to release the program to the public from the beginning.

Speaking of a quick question here, in fact, I personally admire designers very much. What I design can only satisfy myself, while they can design works that satisfy a specific group, which can be the majority of ordinary users or users in a specific field.

After the product was released, a designer contacted me, hoping to help me improve the icon, and even said that he didn’t need to give him the original icon. At that time, I admired him so much that he ended up(she)?Calling it a “basic survival skill”, I… Then, in just one night, he improved many ICONS, which shocked me, who had been drawing an icon for several days…

As I said in my first post, the app has been used by some of my family and friends for three years(They still remember it as PicNotes). At the beginning, the function of texture should be my sister’s demand, I think it is very good, so I began to develop. Then I became a heavy user of stickers, and I made a lot of demands for myself. Later, I used it for my brother. He also asked for many requirements, such as rotating pictures and canceling all annotations.

Whatever they need, I’ll try to put in, so why not? They also thought for me that it was something that PicNotes should have.

PI:Snipaste has so many functions. How many of them are your own needs, and how many are put up by other people’s friends? How do you weigh whether a feature proposed by someone else should be done?

I can say more than 90% of them are my own needs. In fact, there are many features that people around me didn’t know about before I released them, but that doesn’t stop them from using them happily.

Some users complain that Snipaste is too complex, but I would say that you only use the features you need(Well, most users need screenshots…)Snipaste can be used directly. If you want to learn something you don’t need, it’s hard.

If you want to learn an advanced tool, there is a cost to learning. There is no such thing as a powerful tool that is free of cost. Powerful tools often have the same thing in common: once you master them, the rewards far outweigh the cost of time and effort.

As I said in the post and on the website, if you mention a feature, I will “probably” implement it for you; If you need an option, please “feel free” to let me know.

The former is “probably,” as opposed to asking for software from a large company. With large companies, your request may not reach the decision makers of the software, so the likelihood of getting support is very low. In the case of Snipaste(Or other individual or small team projects)As long as your suggestion is made in a way that the developer approves of, your voice is guaranteed to be heard and the chances of it being implemented increase dramatically.

Of course, it does not mean that you will be implemented, the developer has his own consideration and insistence. As for myself, I don’t want Snipaste to be a giant “screenshots” app. There are a lot of things that are better than Snipaste when it comes to professional screenshots.

In addition, I want to minimize the number of features in Snipaste that only a few users need. I want a large user base for each feature.

The latter is “although” because every user is different, and developers can advise users how to set up the software(the default Settings of the software)But users should not be required to accept that setting. Many of these Settings are already in the code. If the user needs to customize a setting, I’m happy to have an option to expose it. It’s low code, doesn’t affect the size or performance of the application, and the user is happy.

Some options, however, are not already in the code, and I would be cautious about adding them if they affected the flow or logic of the program. There are other options that go against my design principles and I just don’t consider them.

The future of Snipaste

PI:Is this what you think the Snipaste will look like in its final form? Or will there be other things you want to expand and improve?

No, no, no, this isn’t the Snipaste’s final form, although it’s pretty much complete and stable enough for most users to use over the long term. I’ve said this many times, but for me, Snipaste 1.0 is pretty good for my own use.

The later version fixes a lot of bugs, because I don’t encounter those bugs when I use them by myself, such as double screen, home screen on the right, and shortcut key Settings. I use the default Settings myself, so there are problems with setting other shortcut keys, which I haven’t tested further.

However, meeting my own needs does not mean that I have no further needs. On my own project list, I’ve also shelved a few features that I thought were useful but difficult to implement that I hope to implement in the future(No, I’m not just scrolling screenshots.). I’ve had some very constructive comments from users that I’d like to add to Snipaste, so there’s a lot of room for improvement.

However, you can just stick with the current version, which should already be doing you a lot of good.

PI:In V2EX’s theme post, we found that the author of iPic also wants to make the Mac version of Snipaste better. What do you think?

Yes, Jason, the author of iPic, emailed me right after Snipaste 1.0 was released and said he wanted to work with them and contribute to the Mac version.

I agree, because Snipaste doesn’t want to include image uploads, either. It’s just a native texture application. If you’re working with a third-party App author, you just need to access the API that he provides, why not? Jason was also kind enough to share a lot of his thoughts as an indie developer, and I learned a lot.

In fact, I personally admire the life of individual developers very much. Developing my favorite App, supporting myself and having a group of users who support me is probably the ideal state of programmers.

Related: “behind the scenes | he independently developed the” artifact “figure bed iPic, and want to insist to do a small circle of individualized product,

PI:Any ideas for open-source Snipaste? Why is that?

The moment I decided to make Snipaste free, I decided to make it open source.

I developed Snipaste on my own, using Google, StackOverflow, the Qt community, and Github to solve many of my problems. I got free advice on how to do that, so I wanted to give back.

The other motivation for open source is the outcry from Mac users to get a Mac version for them as soon as possible, but I personally can’t do it that fast, so I think it would be a lot faster.

However, some users sincerely suggested to me later that it would not be good for the product to open source recklessly, and there would not be many people contributing code after open source, and it would not be easy to maintain large projects stably. Then I saw someone package my app encrypted and put their donation link on it and I was really shocked… So if you open source your code now, maybe worse things will happen.

Therefore, for Snipaste’s sake, I won’t open source anytime soon. The current thinking is that when Snipaste builds up a user base and a reputation, open source will be a good way to minimize the impact of the Snipaste perpetrators.

Snipaste’s popularity isn’t about how difficult it is to write or how hard it is to implement. I’d love to post some of the Snipaste techniques in my spare time.

PI:The Snipaste for Mac version is very popular, can you tell us when it will be released?

I briefly addressed this issue in the release of version 1.5, but I really can’t give a specific timeline, other than to say that there won’t be a stable version for the next two months. In the next two months, I have so many things to do that I can’t spend much energy on Snipaste.

Independent development and good software

Snipaste is free, it’s secure, it doesn’t scan your hard drive, it doesn’t upload user data, it just does what it’s supposed to do.

PI:What are your criteria for judging a piece of software? Do you think an ideal piece of good software should be powerful enough? Or something else?

The first requirement of good software, I think, is to only do what it’s supposed to do. This includes two aspects, one is to achieve reasonable, can not use the resources do not call, the other is not evil.

Snipaste: Don’t be evil “Snipaste is free software, it’s secure, it does what it’s supposed to do, it doesn’t scan your hard drive, it doesn’t upload user data, it just does what it’s supposed to do.

I’m not blaming some of the big companies for what they do. They don’t force users to use them. Chinese Windows users are used to free, but the company wants to make money, so it adds something to the software, so there is a saying that “free things are the most expensive”, which is quite right, but users do not take advantage of it.

However, in fact, there are other ways to make money from free users, such as trying to convert free users into paid users, many foreign companies are like this, so foreign free software does not give people the feeling of universal distrust, this is not worship foreign things, this is a reality.

Careful users may have noticed that the Snipaste Chinese official website and The English official website are basically copied sentence translation, but the English official website only lacks the translation of the above sentence, because I think foreign software can do it generally, I don’t need to take it as a highlight.

I hope that one day, the software of Chinese people can also be universally recognized by everyone. This is not far away, everyone is working hard, and now there are many excellent software produced by Chinese people.

Second, good software, of course, hits you where it hurts. You need it, and it’s good software for you, even if it’s not good software for other users. As a result, good software is usually small and specialized, and I expect Snipaste to be so small as a “mapping” software that screenshots are added to make it easier to use. If users need to greatly enhance the functionality of screenshots, I can consider creating another software that specializes in screenshots, although I doubt the need for such software, as it is not uncommon in the market.

PI:More comprehensive software like Snipaste usually comes with a fully paid or partially paid model. Why did you go completely free?

To tell you the truth, I struggled a long time between paid and free.

I actually need to make money, so I was going to free basic features and charge for advanced features. This, however, is bound to reduce the user base significantly: it is natural that when a software is released, if people hear that it has advanced features, but they have to pay to use them, many people may not want to try the free version. I want as many people as possible to try Snipaste and see how texturing can improve your productivity, which is why I decided to make Snipaste free.

In addition, Snipaste can’t be a paid software because I can’t provide a stable “after-sales service” and I can’t be responsible for paying users.

Finally, I think basic tools should be free, those that are designed for the most common users, such as Everything. It’s free to use, and I hope Snipaste will be able to do the same. And those for professional users of the software should be charged, after all, you are using it to complete professional things, equivalent to it to help you do professional work, why refused to pay for it?

Speaking of which, Snipaste will “probably” offer a paid Pro version for obsessive-compulsive users, perfectionists, and professional users. But rest assured, the free version will not be stripped of its existing features, although I would like to see the stickers grouped separately, which is a feature only power users need…

I don’t know when the Pro will be released… Some of the advanced features (let me call them that, because the free version of Snipaste already has a lot of advanced features) I’ve been planning for a long time, and some of them are coming from professional users, but I don’t know if they’ll ever be implemented. But in Pro, there will be varying degrees of reward for those who have donated to me to thank them for their early support.

PI:Now more and more students in school want to try to develop something independently. What advice and experience do you have to share?

I also encourage you to develop something on your own so that you can “train” yourself in a way that you can’t by doing what someone else tells you to do. I’ll say four o ‘clock. I hope it helps.

First, you want to make a product, you must have this demand, that is, you have to use.

Do a product that you do not need, I think the result will not be good, the process will not enjoy. If you use it yourself, even if it’s not popular with users, you can use it yourself. Just kidding, if you like it, there will be other users who like it, so whether it will have a user base is not the first thing you should think about.

Do what you think you need. Of course, research should also be done, and don’t duplicate the “famous” wheel. That said, if there isn’t a big name for this feature, you have a chance.

Second,Even if the feature you want to do already has a similar product, or even a well-known product, you don’t have to give up.

As long as you think there’s something you can improve on, and especially if there’s a lot of it, do it. But don’t try everything just to be on the safe side. Every time you use a product, you are influenced by it and it limits your thinking.

For example, the Snipaste screenshots were affected by QQ screenshots and could not be reversed. Therefore, WHEN I was implementing screenshots, I did not dare to try other screenshots, just for fear of being affected by them. Yes, even the famous FastStone and Snagit I have never used before.

Third, try making a desktop product. Although mobile apps are very popular now, I think many of them are fake demands, and there are not many apps that can settle down and make users willing to use them for a long time.

You might say that desktop software has been around for 20 years, and the market is already saturated. But after all, the desktop is where productivity is, and productivity tools are inherently capable of constant improvement and innovation. I believe that you usually feel uncomfortable when using the computer, very good, that may be where you can start!

Fourth, it’s easy to go from 1.0 to 2.0, but hard to go from 0 to 0.1, soDon’t hesitate too much, just do it.

PI:Recommend some of your favorite tools on Windows.

Yes, I’m a Big Windows fan! Of course, this is not meant to disparage other operating systems. I’m just saying that Windows is personally my most comfortable system because I can find software for almost any feature I need. I can’t find one. Better yet, it’s time to write one. : -)

In fact, every system is so, as long as it is used well, then it is irreplaceable for you other systems.

The following are my boot tools(Part):

Snipaste: Haha, I’ll put an AD here.

I can’t think of a reason not to install it.

Listary: Excellent software developed by Chinese people! I also admire the authors, the software is well run and the user community is well maintained. Some people say just take Everything and Listary, but I think it’s better to eat them together. Listary is more of an app/command launcher and a quick way to locate files in folders, but it doesn’t work when it comes to files with same names, and Everything makes up for that.

KeePass: With KeeFox, I now have random passwords for almost all my accounts. It’s perfect with KeeFox. The operation experience is also very reasonable and efficient, in line with my habits. A big reason WHY I can’t use the Mac as a daily operating system is that there is no good KeePass client for Mac. I wish I could write one for it, but I’m new to Mac development and KeePass is so complicated.

StrokesPlus: Mouse gesture software. I used StrokeIt before, but stopped developing for a long time. I also had some intolerable bugs. This is another piece of software that I can’t replace on the Mac.

AutoHotkey: A must-have bar for efficient users. Basically, you can use it to change things when you don’t like the keyboard. But there are many other things you can do if you want to! I say that there are few things I don’t like about Windows, and AHK has a lot to do with it.

F. Lux: This does relieve eye strain, but I don’t use the time-varying color temperature theory. I stick to 5600K all day, so the screen color doesn’t change much.

Ad Muncher: It used to be a paid software, but it became free last year. It should be a powerful tool, but I only use it to filter advertisements in QQ chat Windows…

SourceTree: I’m a GUI fan, so I don’t use the command line if I can. SourceTree reduces my memory costs and gives me Git benefits.

Telegram: this is the chat tool to do the ultimate model, and it is still very young, still in continuous progress, and is also using Qt development!

OneNote: Evernote. I only use it for clipping pages and taking notes. I’m sorry I didn’t get to know OneNote in college, or a lot of what I learned in college would have been reviewed rather than forgotten. I can think of only two downsides, the inability to play GIFs and the fact that the phone is so heavy that people don’t want to open it often.

There are some need to use when the software will turn out, this part is not easy to list, not to say. But the NirSoft author deserves a break. His software is so neat, clean, and useful that I read through all of it and selected a few to add to my collection.