Prashant Deva's blog

Talks on technology and the latest developments in Placid Systems.

Virtual Ant released!

Wednesday, October 17, 2007

The long, long wait is finally over. After almost 2 years in development, Virtual Ant is finally here.

This release marks the start of a new era for build tools. Gone are the days of struggling with lines of xml and 500 page manuals which took you weeks to write a single build script. With Virtual Ant, even a non programmer can create highly complex build scripts within minutes.

So for those who cant wait, here is the link to the download page.

Do check out some of the new videos we have added, to get a feel for all the new functionality.
As of writing this post, there are very few videos on the page but we will be adding a lot more of those and a lot more documentation as the week progresses.

There are a couple of issues regarding this release that I need to address -

IDE integration

As of writing this post IDE plugins are not available.
However, plugins for Eclipse, Intellij IDEA and Jetbrains are under development and will soon be available. And no, we wont be charging separately for the plugins.
IDE integration has been on my mind since the very first day development for Virtual Ant began, so rest assured we will do a great job on it.

Custom Tasks

As of this release, Virtual Ant does not support custom tasks.
However, very soon we will be coming out with a (free) GUI tool which will allow you to turn your custom tasks into 'virtual' tasks that can be run on Virtual Ant.
Yes, in our trademark style of simplicity we wont be bothering you with learning any new APIs to make virtual tasks, instead the GUI will allow you to convert your existing tasks into 'virtual' tasks within minutes.


posted by Prashant Deva, 1:22 PM | link | 2 comments |  

Working with Properties

Saturday, October 13, 2007

So here is the first of my posts describing some of the new features coming up in the final release of Virtual Ant. Today we will talk about Ant properties.

For the curious ones, you can skip the rest of this post and go straight to the 2 min video demonstrating the features in Virtual Ant to work with Ant Properties.

As anybody who has created an ant build script will tell you, properties are a very fundamental concept in Ant. They are akin to variables in a programming language and are usually used to hold pathnames to relevant dir. Thus instead of saying '.product/1.0/src' , you usually assign that value to a property like ${src.dir} and use that everywhere the path is needed. This way when it comes to release 2.0 of your software, you can just change one line and your script will continue to run perfectly.

Thus since properties are so important, we just had to put in some special features in Virtual Ant to make it easy to work with them. The basic theory here is that you perform operations on what you see and Virtual Ant can take care of putting in the appropriate properties for you in the task. Here is an example to clear things up -

Lets say you have a property ${build.dir} which has a value of './1.0/build'. Now lets say you browse to './1.0/build' in Virtual Ant and you select the 'build' directory and you hit the delete button. Virtual Ant will recognize that you have a property declared for that folder's path and in the resulting 'delete' task it generates, it will use the property name instead of the path itself.

Virtual Ant is pretty smart in that even if you deleted something inside the 'build' directory, say you deleted './1.0/build/asdf', but you dont have any property defined for it, Virtual Ant will put in '${build.dir}/asdf' instead of the entire path.

This way you only deal with what you see visually and let virtual ant take care of handling the details. Just in case you dont want Virtual Ant guessing the properties, you can turn this off so it will put the entire path in the generated task.

Labels: , ,

posted by Prashant Deva, 12:33 PM | link | 0 comments |  

Nested datatypes in Virtual Ant and How we screwed up the Beta

Wednesday, October 03, 2007

As it turns out , I just recently noticed that a minor mistake on our part greatly screwed up the beta experience for all the users. If you did try the beta then don’t worry, it doesn’t affect your system in any way but it does affect the experience you had with Virtual Ant, meaning you didn’t get to see everything we had put in there.

So what was the problem? Well as it turns out when they tell you to avoid hardcoding absolute paths in your code they are absolutely right. But as it turns out, in the heat of coding someone got a little tempted and the path to one of the images in the beta version of Virtual Ant had an absolute path to the directory containing it.

That images was for one of the buttons in Virtual Ant. Since the button is custom drawn on the GUI, without the image you wont be able to see it at all. The problem went unnoticed for so long because all the machines we tried it on had the image in the right place. The mistake was finally noticed when just last week we went to update that portion of the code.

So by now, you are probably wondering what does the button actually do and where should it have been found. Well as it turns out when you select one of the running tasks in Virtual Ant, you see all its attributes on the right. Below the attributes are bars which allow you to add datatypes like 'fileset', 'filelist', etc to the task right from the gui. The image in question refers to the button which allow you to add datatypes to the task.

No buttons to add datatypes!

Since you cannot see the button, you cannot add datatypes to the task, rendering Virtual Ant almost useless. Thus you can imagine my horror when I noticed this error so late in the game and realized how we royally screwed up the beta release.

But now since we are past that, its time to show you how the attributes view in the final release will look like.

The new attributes view

Clicking on the 'green' plus button next to each datatype allows you to add datatypes to that task. Many datatypes have a special dialog associated with them which gives you a special gui to define that datatype easily. If the datatype has a dialog associated with it, it will pop up when you click on the 'plus' button. Here is the dialog for adding selectors to a task which supports them.

Selector dialog

Special gui dialogs like this are defined for many ant datatypes like fileset, filelist etc.

That said we are now extremely close to the final release. We have added an insane amount of functionality since the beta. I will be talking about some of the major new features for the final release in my next few posts.

Labels: , ,

posted by Prashant Deva, 12:14 PM | link | 0 comments |  

Beta expires today

Thursday, August 30, 2007

Today the beta of Virtual Ant expires. Although we had planned to do a release by this time we came across some major problems accommodating some of the new features in Virtual Ant (not present in the beta).

I would remind the readers again to not to judge the quality of Virtual Ant by the beta since a lot has changed since then. The current beta was more like an alpha really. If things go well we will try to come up with a 2nd, more complete beta before the final release.

As a hint of the new features, Virtual Ant can now handle multiple build files and allows stepping in/out of tasks. So tasks like 'import', 'ant', 'antcall' now work seamlessly in Virtual Ant. I will talk more about this along with screenshots very soon.

Of course, we would love to hear your feedback on how you found the beta so keep them coming :)


posted by Prashant Deva, 6:21 PM | link | 2 comments |  

Inside Virtual Ant : Script Writer's Dilemma

Saturday, August 04, 2007

Today I will talk a little about the design of the Virtual File System (VFS). The VFS lies at the core of Virtual Ant and it is what allows Virtual Ant to have all its magical capabilities.

One of the major problems we encountered while designing the VFS,and which has affected the design of the VFS in many ways, is what I like to call 'The Script Writer's Dilemma' .

Here is how I like to define it -

The Script Writer's Dilemma occurs when the state of the file system while writing the build script is different from that when it is run. In such a case the person writing the build script may see a different result on running his build script or may not see any result at all.

As an example consider this, say you create a script which copies all files in folder 'a', that have been modified after Jan 2008, to folder 'b'. Then you have more tasks which manipulate the files in folder 'b'.

Now lets assume, you are creating this script in Dec 2007. Now in an environment like Virtual Ant, when you run the above the script, you wont see any files in folder 'b' cause its still 2007. And since there is nothing in folder 'b', you wont see anything while executing all the other tasks that manipulate on the contents of folder 'b', thus rendering the whole visual environment useless.

Thus we decided not to include any concept of modification times in Virtual Ant. So when you run the above script in Virtual Ant, it will take the worst case and copy 'all' the files in folder 'a' to folder 'b', since it is quite possible that at the time of running the script every file in folder 'a' really has been modified.

Thus you get a twofold advantage -
  1. You handle the worst case of every file in folder 'a' being modified.
  2. You also get to see the result of all the other tasks that operate on the contents of folder 'b'.
For those proficient in Ant, that means that when using a 'date selector' or when using a task like 'depend' , every file will be returned.

Note that this The Script Writer's Dilemma is applicable only in a visual environment like Virtual Ant. In a text editor since you are essentially 'flying blind' anyway, it really doesn’t matter.


posted by Prashant Deva, 12:54 PM | link | 0 comments |  

Why the iPhone does not have a SDK

Sunday, June 24, 2007

A lot of people were pretty disappointed when at this WWDC Steve Jobs announced that there will be no iPhone SDK and people will basically have to create specialized web sites for the iPhone. This was a foregone conclusion to me. Here is why.

Almost every app we use on our computers can be divided into 2 categories-
  1. Apps to view information.
    Eg - Google Maps, Cragislist, Rss readers, Gmail, Digg, etc.
  2. Apps to create information.
    Eg - Eclipse, Photoshop, Word, Excel, etc
Notice the apps in the first category are all web based while the apps in the second category are all desktop apps.

Also the apps in the second category would require a heavy duty pc and you would probably want to use a huge monitor and a separate keyboard/mouse along with it. Can you for a moment imagine writing your next program in a screen the size of iPhone , which too is half covered by a touch keyboard? No, right.

On the other hand, the apps in the first category don’t require all that horsepower and you probably wont mind checking the top stories on Digg on your iPhone.

Thus it all becomes pretty clear. Apple realized this fact and thus instead of preparing a full blown SDK which would really wont be worth the effort or of much use to anyone, they decided to concentrate on preparing a full blown web browser which could run inside the iPhone and let the web apps run through it.

Now maybe there are some people who disagree with me here and believe a full blown iPhone SDK would be useful. In that case, why not prove me wrong. Post a comment below listing some useful app which you think would make the iPhone sdk worth it. Note that the app should really be useful to the people and not be there just for the cool factor.


posted by Prashant Deva, 3:40 AM | link | 4 comments |  

Virtual Ant - Beta RELEASED !!!

Friday, June 15, 2007

Its finally here! After months of waiting we have finally released the beta version of Virtual Ant !!

If you havent seen the video yet, I would recommend you watch it first, otherwise you can head straight to the download page.

The current release is standalone only and does not contain any IDE integration. It is also not fully feature complete. But we thought it would be better to give you something rather than make you wait any longer.

We would absolutely love to get your feedback on Virtual Ant. You can post your queries/comments at the Virtual Ant google group or just email us at [email protected].

More later. Now I gotta go get some sleep ;)

Labels: ,

posted by Prashant Deva, 4:34 PM | link | 2 comments |