Bookmark Managers: Programs vs. Web Services

 

 Bookmark Managers: Programs vs. Web Services


Whether you prefer to use a program or website, it doesn't matter. The point is that we have more tools than ever before to help us organize and manage our site bookmarks to make sure nothing slips through the cracks. This is a good thing, because the more tools we have to manage our site, the less likely we are to make new mistakes.
In previous columns I've asserted that there is little point in creating a Windows-only program unless you immediately want to target it at someone who is using a computer with Windows. That's not to say you can't create a useful program that people use on non-Windows computers as well, but you have to go about it in an entirely different way.
Programs offer many advantages over websites for managing bookmarks and links. A programming language is flexible enough to allow for all kinds of control over the data being stored, including storage options (1) . If you want the program to be able to handle multiple user accounts, you can easily extend the code and reuse it even in other programs. Programming languages are also easier to test and update than websites, because if you need to change a program, you can just replace the existing source code with new files.
Furthermore, programming languages tend to offer scripting capabilities that are as flexible as what you can do with JavaScript or PHP. Scripts don't have any specific requirements for how files should be stored (you may use XML or binary formats) but they do require thematically similar markup so they can easily detect, parse and understand the data that exists in different formats. I've also seen scripts that will convert between different formats.
Programs are also designed to work with your operating system, which lets you do things that site services can't do. For example, if a website gets overloaded and starts going down (2) , people can't use the site for a while. If a web service experiences problems with its web server, the service may be down for hours or days without any warning. It's true that sometimes the web service will have redundant hardware in place that it can use to restore the service once everything else is back up, but you have no control over when or how this happens.
Programs can't go down. I'm not trying to say that programs won't fail, but they are designed to be as stable as possible so that they continue operating reliably. If you're using an application that requires more updates than you'd like, there are a lot of different ways to customize the update process. For example, with Firefox I have full control over what sorts of updates I want to install and which ones I don't (3) . With Chrome, you can still have the browser download individual packages in different formats so that it can be installed on non-Chrome browsers as well (4) .
Some programs will also allow you to create your own packages for other operating systems and even for standalone applications. That would make it easy to share your bookmarks with someone who is using a computer without an operating system.
You might ask why I'm concerned with this issue at all. After all, if I'm writing about Windows-only applications, what difference does it make to me if the site can operate as a web service or program? Obviously there are some people out there who will never use a web service or program to store their bookmarks, so that's not necessarily going to affect my audience. However, using a web service is never going to be more secure than using a dedicated program in the first place (you can't stop someone from just copying down the website's source code).
There is one exception to my preference for programming. If you are writing a browser-based web application that will be used only by computers without an operating system, then I would suggest you use a hybrid approach: use some sort of JavaScript-based scripting system rather than writing your own C/C++ code. For example, if you are using XULRunner in Firefox, it's possible to write a JavaScript file that can be embedded directly into your pages (5) . Even though this won't be exposed to the end user (you are running JavaScript and the web application is just hosted by the browser), it will still give you the speed and stability benefits of a program over a regular website.
So if you are writing an HTML5 web application, don't be afraid to use something like Node.js for scripting purposes. It's designed for this purpose and it will give you a lot of control over how your web service operates and how it interacts with the client-side code (6) . As long as you are not storing any personal or sensitive information on the site, you can even host the JavaScript file on a different server than the one hosting your website. You can then keep the code secure while making it accessible over a standard web server, which makes your website more secure from malicious attacks.
Another good reason to consider JavaScript is that there are fewer restrictions in place than with other languages (such as Java). You can write a JavaScript program that is just as secure as a website, but it will be just as fast. It's possible to create your own self-contained executable files (7) and to use Node.js (or similar software) for both the web application and the script file. If you violate any of these guidelines, you can still make your script file into an executable with some small modifications that wouldn't require you to change anything about the rest of it.
If all this isn't enough, then maybe you should consider writing a Ruby on Rails application instead. Similar to Node.js, Rails was designed with ease-of-use in mind . It provides a structured way of organizing your web application and it makes it easy to create a wide range of programs that are very fast and secure. If you are writing a Rails application, then you can create a more complex web service than I could with Node.js alone.
What this means is that Rails can make it easy for you to change your programming language if necessary. You don't have to rewrite the whole thing with another language, but you do have the option of changing small components at any time (8) . A good example is Google's use of Python for the initial code analysis in their MapReduce technology (9) .

Conclusion
When it comes to choosing an application development framework, I am a huge fan of Node.js and its software package, NPM (10) . It has become a very popular way of writing web services and it's easy to learn and use. You can even get started with no programming experience at all (11) . Despite the fact that you will have to learn JavaScript specifics, the learning curve is fairly small.
If you think that Node.js isn't for you, then I would suggest that maybe you should try another language instead (12) . Perhaps Python would be better for your purposes. After all, it is designed specifically for web development and has a lot of great tools available from the start (13) .

Post a Comment

Previous Post Next Post