Software for Free

If you’re a software developers there are numerous reasons you might want to give away software for free and there are numerous ways to go about giving it away. If you just want to give away your code for purely altruistic reasons and don’t care about profit, then open-sourcing your code is the best way to go. However if you want to one day make a living off your software, you might want to consider releasing a freeware or shareware version: users get a basic version and can pay if they want more bells and whistles. But what if you’re already a commercial developers and just want to give away a few full copies of your software for marketing reasons?

While it may be a good idea, there are a number things you need to careful. You want to make sure that not too many people get their hands on the free full copy or else your revenue stream goes up in smoke. Stopping piracy in such a situation becomes of paramount importance. The solution? Get in touch with the guys at Give Away of the Day. Everyday, these guys give away, for free, one full software that you would normally have to pay for. Each software is only available for 24 hours and must be activated within the given time period. And if you delete it, or reformat your disk, you can’t get it back. While end users get free goodies, developers benefit from the publicity and what’s more, they claim to pay software publishers for the software that is downloaded. It’s a win-win situation for all concerned. So go take a look and grab yourself some free goodies.

And  thanks to Carol for letting us know about it.

Web Feeds for Beginners

Feeds are one of the core technologies driving web 2.0. Here’s a quick guide to what they are, what they do and how you can use them.

 

Feeds provide a convenient way to deliver content to your audience and at the same time keep track of just how big an audience you have. Feeds are best used for anything that changes, or gets updated fairly regularly. Of course, blogs and traditional news services are the first things that come to mind, but feeds are also good for sending your growing photo album to your friends or keeping others informed about what’s the latest album you’ve heard.

So just how do you turn something that’s regularly changed into a feed? You need a program that will periodically check whatever it is that gets changed often and then record those changes in an XML file. This file has to be in a proper feed format, the most common formats are Atom and RSS. It’s this XML file that you pass around when you tell others about your feed. Most blogging software and some wiki software does this automatically for you, but there are probably some things that you can change (like whether readers see all or a part of a post).

But that’s not all there is to feeds. If you’ve ever tried to open a feed URL in a browser you’ll know that the result isn’t pretty. Strictly speaking, XML is human-readable because it’s just plain text. But as a human, it’s hard to understand anything because there’s a lot of weird markup in the way. XML was designed to be a primarily machine-parseable language, i.e., computer programs will have an easier time reading it. So, to view the information in a feed properly, you need a feed reader. There are a bunch to choose from, including both desktop and online versions. Personally I use Google Reader and highly recommend it. No matter which one you use, they all perform the same general task: read a feed’s XML file and display the content as something you and I can understand.

Initially feeds were limited to just take, but now you can put almost anything you want into a feed including images, audio and video. Because feeds are basically pure data it’s easy to manipulate and republish the result as a new feed. Feedburner does a good job of collecting and redistributing feeds, so that even if you move servers or URLs, your readers can just use the same Feedburner feed. Tools like Feedblendr and FeedDigest allow you to combine multiple feeds into one and the new Yahoo! Pipes gives you a lot of power to selectively fetch information from feeds and other sources, apply filters and other little touches and publish your creation as a packaged feed. In case you have a webpage of regularly updated information but don’t know how to turn it into a feed, there are a number of free tools that will do it for you. You can also turn your feeds into other forms of data. FeedBurner and FeedDigest give you a piece of JavaScript that will make your feed look like part of another page. And for users who prefer email over feeds, FeedBlitz will turn any feed into a “daily digest” email of whatever’s new. (I recently added this feature for this blog.)

Using the numerous free tools and services online, you can accomplish a lot with feeds and the best thing is that your audience can just keep using the same feedreader they always used and not worry about how you do what you do.

My Search for an Integrated Web 2.0: Bringing Google Together

I’m starting to use Google’s various services almost exclusively to meet all of my Internet needs. As I mentioned in my last post, I’m looking for integration: pulling together all (or at least, the ones I commonly use) into a single unified system so that I don’t have to be switching about all the time. My most used Google services are Gmail, Google Reader, Google Calendar and Google Docs and Spreadsheets (actually just the Docs part), in that order. Gmail was the first google service that I started to use and it also has a large user base (probably third after Search and Blogger). More importantly, it was the first service that made a very elegant and highly effective use of AJAX technology.

Gmail is currently my home-page, it’s the first thing I see when I start my browser. Google has already integrated Docs and Spreadsheets with Gmail: attachments with documents or spreadsheets can easily be opened online. So one step in my integration journey has already been done for me. The second step is bringing together Gmail and Google Reader. Personally, I feel that a feed reader and a mail client perform essentially the same function: help you find your way through discreet pieces of information. So, it would make sense to bring them together. Google Reader and Gmail are both very good products (I consider them best of breed), but Google doesn’t give you a way to bring them together. However if you happen to use Firefox (and you should), grab the Greasemonkey exxtension, which lets you run scripts that can fundamentally change your browsing experience by affecting the way a particular website looks and acts. Once you’ve installed that, get this Google Reader Integrator. It will package up your Reader right inside Gmail. It’s tucked into the sidebar by default and when you activate it, the Reader appears below and you can use it as you normally would. When you’re done, you can tuck it up again.

As of now Gmail offers about 2818 megabytes of storage. But for someone like who uses only about 85MB (3%) of my storage space, letting all the rest lie around seems like an awful waste. Once again, it’s Firefox to the rescue. The Gspace extension lets you save files to your Gmail space. They’re saved as email attachments, so you can access them anywhere. An added advantage is that it let’s you leverage Google Docs integration to edit documents online. If you put up MP3’s you can listen to them online as well. And the Gmail search also simplifies finding your files. But if use this a lot, your inbox could get very cluttered so you’ll probably want to sent up some filters. If you’re a Windows user and don’t use Firefox, you can get a lot of the same functionality using Gmail Drive. A word of warning: you could get locked out of your account if you upload/download a lot at a time.

Unfortunately, I haven’t found a way to integrate Google Calendar with the rest. I would really like something like the Google Reader Integrator and if nobody makes something like, I might take a dig at it myself. Till then, I’m happy with my integrated Google workspace as it is.

My Search for an Integrated Web 2.0: Google vs Zoho

I’ve been using Zoho’s online word processor for a long time, but recently I switched over to Google Docs and Spreadsheets, even though Zoho Writer is the superior product. Why? A number of reasons. Firstly, Zoho Writer is slow, much slower than Google’s product and lately something far more irritating has crept up: a significant time lag between the time I hit a key and the letter appears on the screen. For someone like me, who still has to use backspace fairly often, something like that can be very irritating, to the point that I’ve had to say goodbye to Zoho.

But there’s something bigger than speed that made me move on: integration. Zoho recently announced a partnership with online storage providers Omnidrive and Box.net. If you store documents on either of them, you can easily open them in Zoho Writer, edit them and then save them back. I think this is a big step in the right direction, but unfortunately, this feature too seems poorly implemented. Most of my documents are in the Open Document format, however, it seems that only documents in Microsoft’s .doc format can be used in Writer. Secondly the feature simply doesn’t work. I tried numerous to create a new document in Omnidrive and open it using Zoho. However when I made any changes, saved, closed and opened again, all I got was a blank document. Combine that with the fact that this service is only one way (you can’t save documents you already have to Omnidrive) and this feature becomes effectively useless for me.

At this point, enter Google. As I’ve already said, I consider Zoho Writer a superior product to Google’s word processor, however, as my needs are modest, I decided to give it a shot. Firstly, it’s faster and there’s no irritating key lag. On the downside, the list of documents is on a separate page, while Zoho’s list is neatly tucked into a sidebar. It can get irritating if you’re working on numerous documents at the same time. Personally I found the Google Docs interface to be better than Zoho’s one. But the reason I’ve decided to stick with Google (for the time being) is integration. I don’t like having to switch between half a dozen services and keep the little quirks of each one mind (not to mention remembering passwords and user names). I wanted something that integrated storage and editably and so I was interested in the Zoho-Omnidrive partnership. If that had worked, I could have ignored Zoho’s speed problems. But it looks like Google is taking steps in the right direction. A Google Account gives you access to all of Google’s expanding array of services, but more importantly, Google is taking steps to bring its apps closer together. If you receive attachments in Gmail, you now have an option to open them in Google Docs and Spreadsheets. The Google Personalized Homepage also acts as a front end to all of your other services.

Of course, this integration is still superficial and only time will tell if Google can bring it’s services together into something cohesive. Google still lags behind Zoho’s software and Google has no online storage service (though there have been rumours of one in the works for quite some time and you can use a number of third-party tools to use Gmail’s almost 3GB storage space for things other than email). However Zoho’s little quirks make it unusable for me, but since no one else seems to be reporting the problem, it might be an issue on my side. If that’s true, then Zoho is one-up on Google. It would be great if Zoho teamed up with a mail provider to do what Gmail now does. But the playing field is still open, and I’m willing to switch sides if anyone comes up with a product that is hands-down superior. See the next post on integrating Google’s services into a seamless user experience.

IDEs for Beginnning Programmers

One of the greatest problems facing people learning how to program is which set of tools to use. The problem lies in the fact that there are a plethora of different IDEs and toolkits that claim to simplify various aspects of the programming process. But the truth this that all of these IDEs are very complex in nature and require a significant time investment on the part of the programmer, i.e. the programmer must first learn the use of the IDE before he/she can become more efficient. While that may be acceptable or even professional programmers, it is certainly not what a beginner wants. A beginner should be able to learn the intricacies of programming and proper use the language at hand, rather than having to spend hours learning to use the IDE before even properly understanding what it’s for.

I’m currently teaching myself Java and Python with a little bit of Scheme. Here are  the three IDEs that I think a beginner will find very useful:

BlueJ for Java.

BlueJ uses a graphical method for aiding learning. The classes you create and their relationships are shown in a clean, uncluttered graphical  presentation, similar to a UML diagram. When you create a new class, it automatically creates a skeleton which you can fill in with your own code. It lets you develop classes separately and create objects for testing. Two big advantages are that it frees the student from having to write a ‘main’ function everytime and that parameter and return values for functions can be entered and viewed directly, without requiring the student to write code solely for I/O. BlueJ also provides you with a simple interface to create JAR files from your programs so that they’re easily distributable. You can choose whether or not you want to include the source code with a JAR file. My only complaint is that it’s default editor is a bit too simplistic, even for my tastes and there is no easy way to replace it.

IDLE for Python

This certainly my favorite IDE, just as Python is my favorite language. IDLE comes with the default Python installation so you don’t have to go looking for it. On opening it, you get Python’s interactive interpreter but it’s easy to create a file for a program using the New Window command under the file window. The editor is simple, but offers both syntax highlighting and auto-indentation which will make anyone’s life easier. To run a program, all you have to do is type it out and hit F5. You can’t get much simpler than that. All I/O is handled by the interactive interpreter, so no worries there. The only problem is that it is really ugly, but then again, you can’t have everything.

DrScheme for Scheme

This is actually quite similar to IDLE in that it packs an interactive interpreter as well as one-click run functionality. However the interpreter is limited to simple statements, but that shouldn’t be a problem as there is an editor window open by default.  If you’re using the How to Design Programs book, DrScheme is a must as it contains a number of subsets of Scheme that grow in complexity as your knowledge increases. The editor also contains a few more advanced features like definition hiding and a class browser that will be of help as you progress. There is also a way to make executables from your Scheme code, but I haven’t tested this myself. There are no obvious drawbacks, except that it is somewhat slow to start.

Of course any programmer should keep in mind that strictly speaking one doesn’t really need an IDE at all, you can get along fine with a text editor and a compiler/interpreter. However choosing the proper IDE can save you a lot of worry, especially if your language is something like Java which really isn’t designed to be meant for beginners. Once the again, the choice is finally up to you. But whatever you do, have fun, because that’s the way programming is supposed to be.