Home
Prashanth Xpressed
16 June 2009 @ 03:19 pm
The article I talked about yesterday now has another section that talks about extending VTK Designer by adding more meaning features. This means we make use of one or more existing components in VTK Designer and mash-up a totally new functionality. Specifically the article talks about adding an "Export to VRML" feature to VTK Designer.



Download the updated article from here.

All of this extensibility is because of the use of "Generic Component Framework - GCF" in VTK Designer.
 
 
Prashanth Xpressed
15 June 2009 @ 07:40 pm
A document titlted "Adding Components to VTK Designer" has been long overdue. So here it is.

The article explains how to write simple components and components that provide more visualization algorithms for use within the pipeline. It is still very much a draft, but usable I hope.
 
 
Prashanth Xpressed
Taray Technologies India, a EDA solutions products and solutions provider in India has released its 7Circuits product. The product's development began in early 2006 and reached 1.0 stage sometime last year. Over the last year or so Taray's team of engineers fine-tuned their 7Circuits product, customized it and integrated it with several toolchains. The latest development is that they have signed an OEM deal with Cadence. Read more about it here: http://www.cadence.com/rl/Resources/datasheets/pcb_fpga_ds.pdf



Why am I blogging about this?

Because our company worked as consultants and product development partners with Taray for the GUI aspects of 7Circuits. We did a lot of ground work for the GUI, established the highlevel framework and developed a lot of complex widgets for them. Taray's current team comprises of a bunch of top notch Qt developers and EDA experts. Together they have mashed up a killer product. I am proud of our company's association with Taray. :-)





 
 
Prashanth Xpressed
15 May 2009 @ 06:56 pm
This week we removed all traces of Menu Strip (which was never ribbon) from the GCF code. VTK Designer now has no menu-strip as well. We did however reuse the ActionContainer stuff to make the pull-down menus look a little bit different.



Over the next few weeks we need to cleanup the new menu system and make it better looking.


 
 
Prashanth Xpressed
13 May 2009 @ 09:10 am
Prof. M. B. Patil of IIT Bombay has been conducting workshops on SequelGUI at several engineering colleges and universities over the past few months. SequelGUI is a product that we developed for IIT Bombay using GCF. It is basically a visualization front-end for their Sequel circuit solver. More info can be found here.



Its exciting to see that university students across India, for their semester course, will be using a piece of software built on top of GCF and developed by us :-)
 
 
Prashanth Xpressed
I have the following so far



hmmmm.. I think it looks ok..
 
 
Prashanth Xpressed
25 April 2009 @ 11:24 pm
After several months of educating people that Menu Strip is not RIBBON, I have realized that most people do make that association unconsciously. To avoid any confusion, we have decided to pull the plug on the menu-strip. From the next version of GCF (and VTK Designer); you wont find the menu-strip anymore. Good old toolbar and menubar is good :-)


 
 
Prashanth Xpressed
21 April 2009 @ 08:04 pm
In this blog I want to explain how the Software Updater module works in GCF. Towards this I have written a example program - "A simple browser". The simple browser program provides a main-window with a address-bar (QLineEdit), where you can type a URL and the QWebView below shows the corresponding page. When the simple browser is launched, it shows up like this.




Suppose that I have deployed this application and have a whole lot of people using it. I then want to release updates for this application that should automatically download and install. What do I do?

The Software Updater module in GCF is meant to solve this very problem. The main() function of the browser code has the following code snippet.



GCF has a new built-in component called UpdaterComponent. Before initializing the component we

  • Specify the primary server site from where updates can be downloaded. In this case it is the serversite directory within the local file system. It can be a HTTP or FTP location

  • Enable/Disable third party update sites. This means you can have applications that can look for updates from other sites also

  • Set the frequency of update-finding. Here it is 'ApplicationStartup'. It can be 'ApplicationStartupButOnceADay', 'UponUserRequest', 'OnceInAnHour' etc...

  • Once GCF figures out updates hosted in different sites, it creates a unified (dependency resolved) list of updates. You can configure GCF to automatically download all updates in the list, or just critical updates or even present a dialog box to the user for selecting updates to install. In this example we set the update strategy as 'SelectAllUpdates'.

Server sites have to host a special file called Updates.xml and list out all the updates served from it. For the 'simple browser' example, the Updates.xml looks like this.



Since GCF is based on Qt, which is a cross-platform thing; you can have compressed update files (GVZ files) for each architecture/os-platform combination. Updates.xml should also specify the baseline version against which updates in that server can be installed. GCF provides a tool called 'CreateGVZ' to compress a directory into a GVZ file and a tool called 'ExtractGVZ' to extract contents of a GVZ file. Each compressed GVZ file contains
  • Shared objects, libraries, XML files, config files etc pertaining to the update

  • An Install.js script that describes how the update should be installed.
Shown below is a sample Install.js script for the 'BookmarkComponent'.




The script basically contains a DoInstall() method that performs the update installation. 'System' and 'FileSystem' objects are provided by environment within which the script is executed. The environment is called 'UpdateInstaller' which is explained later in this blog

Now coming back to the code, when GCF::UpdaterComponent::initialize() is called, GCF

  • Checks if there are updates in the download queue from the last session. If yes, the downloading of updates is resumed. This means that the user need not have to keep a session active until all updates have been downloaded. Updates can be downloaded over several sessions.

  • Depending on frequency of update-finding, GCF spawns a thread and starts looking for updates

  • After making a a unified (dependency resolved) list of updates, it then spawns yet another thread and begins downloading selected updates from their respective server sites. Ofcourse the update-strategy is taken into consideration

For communication between threads and between sessions of the same application, GCF::UpdaterComponent creates a special directory called Update within which it dumps all logs, temporary files, downloaded compressed updates and so on. Downloaded updates are dumped into this directory.

Next time when the GCF app is restarted, it checks whether there are any updates that were downloaded in the previous session. If yes, then the user is asked whether he wants to install the updates. If the user responds yes; then a separate process called 'UpdateInstaller' is launched and the GCF all quits. UpdateInstaller then installs the updates and restarts the application.

Let me show how this works with the 'Simple Browser' example. When I launch the program for the first time, it looks for updates in the primary server site and downloads updates into a special internal directory. Now when I select "Updates" -> "Preferences" you can see that GCF reports 2 available updates.



When the program is restarted, the user is asked...



If the user responds yes, the the 'simple browser' application quits and launches the 'UpdateInstaller' program, which installs the downloaded updates.



Upon clicking 'Ok', the 'simple browser' application is restarted.



Now when you look into go to Updates -> Preferences -> Installed Updates, you will notice this



The software updater module dumps sufficient information about its runtime into a log file, which is basically a HTML file.



Even the 'UpdateInstaller' dumps information about its runtime into another log file. These log files can be studied to figure out if there were any issues while finding, downloading and installing updates.

Cool module isnt it? If you like it, drop us an email. Checkout a copy of GCF from this SVN location to see all this for your self. SideNote: the module is not fully tested yet, so dont bet on it to work perfectly right now

SVN location: https://svn2.hosted-projects.com/vcreatelogic/GCF2/trunk/GCF

 
 
Prashanth Xpressed
17 April 2009 @ 03:47 pm
GCF is a application development framework for building large applications. Most real world apps out there automatically update themseleves whenever a new version is released by their vendor. We did not want apps developed using GCF to lag behind in this, so since early February this year, we have been working on a new module for GCF called "Software Updater".

I always wanted to have an updater framework for GCF, but then there were several other things that needed to be completed first. So updater always got postponed. Our company worked on a project called "KDUpdater", which is currently (or is going to be) a part of KDTools package from KDAB. While working on KDUpdater, I kept telling Till and Mirko (of KDAB) that I wanted to have a updater module for GCF at somepoint. They were very supportive of it too. So much so that when we started working on the Updater module for GCF, they happily gifted some code (like FileDownloaders) from KDUpdater for use within GCF. KDUpdater and GCF have similar backgrounds, but the implementation and architecture are very different.

After about 2 months of development effort, today I saw some success. Before I describe the success itself; let me give a link to the draft documentation of the Updater Module in GCF here. If you update from the SVN today you will find in examples/UpdaterExample some code that will demonstrate the updater in action. I will blog more about this at some point in the near future after we have more test results. We are planning to release a new version of GCF in July 2009, according to the roadmap announced here.

The Software Updater module in GCF is a multi-threaded one. We needed a neat mechanism to serialize log messages from different threads within the updater module into a single log file. Very recently I used log4cxx in a project. I found it very interesting and useful. Initially we thought of wrapping log4cxx in Qt for GCF; but then we decided to provide a simple Qt only logger module. Which is where GCF::Logger and friends come into picture. Take a look at this brief doc on the Logger Module in GCF.






 
 
Prashanth Xpressed
I was always a movie addict. I always wanted to have a proper home theatre, as in a PVR like theatre at home!

About 4 months ago we bought a Sony DVD Player + 5.1 Channel Speakers. To be more precise, we bought this for our home.


I got the system fit into my living room with the help of electricians and carpenters. Eventually I had a good music system and DVD player. But still watching movies on a small 29 inch TV was not much fun. I mean the sound was larger than life like; but the video was not. So I decided to go for a Plasma LCD. It did not take much time for me to realize that those things cost a real lot of money :-(.

I was speaking about this with my former boss from Linux Learning Centre, Mr. Ramesh Kumar. He is my gadget-guru. He has an idea about practically everything electronic on this planet; and no I am not joking. He suggested that I go for a home cinema projector that can be connected to my DVD player. Actually he gave me the Acer projector that he uses at his office for a couple of days, just to play around with. When I connected the projector to my DVD player and watched the projected movie on a wall in the living room; I had made up my mind. That evening I demonstrated the setup to my wife and convinced her. Actually I did not have to do much convincing because she is a bit of a movie freak herself ;-).

Then I went back to Mr. Ramesh Kumar and started budgeting the whole thing. We both infact visited Hansa Pictures. My colleague Kiran also came with us to Hansa. We looked at a few projectors and projector screens. Finally I zeroed in on Optoma EP721 and Grandview 50" x 67" pull down instalock screen. I also bought a 10 meter HDMI cable to connect the projector to my DVD player. It turns out that the cost of (projector + 83 inch screen + cable+ dvd-player + installation service) is much less than the cost of a 40 in LCD TV!!! (

Once all of these things showed up at my place, Mr. Ramesh Kumar helped arrange for people that can fit all of this into place. I guess the images below will tell you the story.




Had it not been for Kiran, my cousin Adithya, Tassaraj from LLC and my house keeper Shivanna; I would have had a very very tough time installing these things. Anyways, after all this circus, we now have the screen in our living room that can be rolled open when needed and rolled up when not.


The projector is connected to the DVD player via a 10 meter long HDMI cable. So now all I have to do is start the projector and play a DVD :-)



I got to tell you, the experience is fantastic :-) Its not PVR like, but this thing will do until I actually build my house with a theatre in it.
 
 
Prashanth Xpressed
15 April 2009 @ 01:32 pm
It has been 51 days since VTK Designer 2.7 was out (on 23rd Feb). We have had close to 1000 downloads (binary, source and pdf put together) since then! In the same period the new version of GCF got 360 hits. We know of quite a few open-source project groups that are using GCF directly from the SVN, but then there are those that we dont know of as well.

Considering that version 2.6 of VTKD received only 500 downloads in 4 months, 1000 downloads is less than 2 months is quite a feat! From the support emails that we receive, it is quite clear that we are gaining more and more users from the Academia.
 
 
 
 
 
Prashanth Xpressed
04 April 2009 @ 12:32 pm
I am teaching a course on OpenGL programming to Computer Science Engineering students in VTU, through its EDUSAT program. In my next class I am supposed to teach rendering of fractal images/models in OpenGL. While preparing for the class, I was intruigued by Sierpinski triangle and pyramid. After writing the OpenGL code for my class, I thought of introducing the same in VTK Designer. Here are the results..






The code for both of these is now available in VTK Designer SVN. I plan to add more such fractals :-)

 
 
Prashanth Xpressed
I particularly like one response from Obama....


MR. OBAMA: Well, and part of what happened over the last 15, 20 years is that so much money was made in finance that about 40 percent, I think, of our overall growth, our overall economic growth was in the financial sector. Well, now what we're finding out is a lot of that growth wasn't real. It was paper money, paper profits on the books, but it could be easily wiped out.

And what we need is steady growth; we need young people, instead of -- a smart kid coming out of school, instead of wanting to be an investment banker, we need them to decide they want to be an engineer, they want to be a scientist, they want to be a doctor or a teacher.

And if we're rewarding those kinds of things that actually contribute to making things and making people's lives better, that's going to put our economy on solid footing. We won't have this kind of bubble-and-bust economy that we've gotten so caught up in for the last several years.


Read the complete transcript here:

http://www.nytimes.com/2009/03/20/us/politics/20obama.text.html?pagewanted=1&_r=1


 
 
Prashanth Xpressed
04 March 2009 @ 07:08 am
The last version of VTK Designer was out on 23rd of Feb. It is a little more than a week since the last release was out and we have had 141 (124 from SourceForge, and 17 from our own website when the files were still available there) downloads. This number includes binary, documentation and source. Considering that the downloads used to peak at 110 for an entire month, 141 for just a week is a really good number :-)

Feels nice! Thank you users :-)

 
 
Prashanth Xpressed
01 March 2009 @ 11:46 am


I am personally very happy about this year's Filmfare winners. It is refreshing to see the awards not going to the default ones. My wife and I decided to not follow the proceedings as soon as we saw that SRK was nominated for Rab Ne. I had watched the film during its first week itself, and I found that the film was not engaging. I mean SRK is good, but his role in Rab Ne was surely not good enough to validate a Filmfare nomination.

Jodha Akbar on the other had (according to me) is a master-piece. When they put Hrithik to play the role of an emperor, they were clearly serious about who plays what role. Hrithik has the the physique, voice, height and right acting skill for the role. And to all Aish fans, the movie was a complete treat. She looks more beautiful than ever in Jodha Akbar. Asutosh has done a very good job with the film-direction, although I think his team could have done a better job at marketing the film. And to top it all, it was A. R. Rahman's music. I think the film had all the right ingredients from the word go. I dont know if it was a commercial success or not, but to me its fine movie.



 
 
Prashanth Xpressed
26 February 2009 @ 01:25 pm
Read more about this here: http://www.techtree.com/India/News/Coming_Mobile_Number_Portability/551-84416-613.html

The moment this is implemented, I am most surely going to change from AirTel to BSNL. The only reason I am not moving away from AirTel right now is because it is a pain to inform everybody about the new number. Mobile-Numbers are right now used as vendor-lock-in mechanisms by service providers. Once they become portable, I will have a choice!
 
 
Prashanth Xpressed
23 February 2009 @ 05:17 pm
Today, we tagged the release of 2.1.0.



The main new feature of GCF 2.1.0 is menu-strip drawers. You can read more about it by clicking on the following links and by downloading the new release itself !

http://prashanthudupa.livejournal.com/35705.html
http://prashanthudupa.livejournal.com/35933.html

Download the new GCF from here: http://www.vcreatelogic.com/oss/gcf/GCF-2.1.0-SourceCode.zip