Tuesday Jun 17, 2008


Of late, i have been exploring a bit on netbeans module development. There are a lot of good resources available on the internet for this.



Introduction to netbeans module development


Netbeans API index


Netbeans Platform tutorial


If you happen to be working with netbeans sources, you would need this


 Working with netbeans sources


And most useful of them ALL


Netbeans developer FAQ


I also take a look at Sandip's and Geertjan's blogs too..


Do let me know if i let something off the list... With such a lot of resources available online, it shouldnt be too hard to get started with the process.

Tuesday Jun 10, 2008

I tried out zembly today (http://www.zembly.com)  which is in beta stage (yep.. did u notice zembly's widget in my blog's sidebar!?). It is an online web based application which enables you to create widgets that can be published for facebook/meebo/iphone etc.. From the site, 


"At zembly, you easily create and host social applications of all
shapes and sizes, targeting the most popular social platforms on the
web. And, you do it along with other people.


Using just your browser and your creativity, and working collaboratively with others, you create and publish Facebook apps, Meebo apps, OpenSocial apps, iPhone apps, Google Gadgets, embeddable widgets, and other social applications"


 I have to say i was really impressed by the beta version. An online javascript/html/css editor, live preview of the widgets you have developed, blogs, user forums.. this site really rocks..You can create your own widgets and services.. Host them in zembly's site and use them in your blogs or in facebook apps (for example). I am using the invitation widget (is that what it is called?) that is hosted in zembly's site.


Of course, the site has been built from the top to bottom using Sun's infrastructure alone! Its been hosted in network.com and developed with stuff like solaris, java, mysql, glassfish..


Take a look at zembly today.. and you will definetely end up saying the site "zembly" rocks!

Saturday Jun 07, 2008

I was in hoggenekal a while back with my parents on a short vacation. For those who havent heard of it, the place lies in the border of karnataka and tamil nadu . The cauvery flows over there and the waterfalls there is a great one to have bath in. If you like to eat fish, there are people all over the place catching fish in the river, frying it and selling it over there.. They just taste amazing!


Anyways, there are local people who take you for a boat ride around the river. They will take you for a small round in the cauvery river and in the process passing through a small waterfall to make the hot sun bearable. The thing that will interest you is the teenaged boys that queue up on top of the hillocks on the side of the river. They will be willing to jump from the top of the hillock into the river for 2 Rs. or 5 Rs. Once into the water, they collect money from you, climb back up the hill (sorry no stairs here) and start searching for customers again..










I was wondering whether if one could train them properly, then they could actually start competing in professional diving competitions. They could even win an olympic medal or two for India.. afterall, they should be diving here atleast 10-20 times a day everyday. Practice sessions definetely cannot get better than that!

Thursday May 22, 2008

Dmitry Kushner has written up an excellent blog entry describing the architecture of the woodstock client side widget library including example project complete with use case diagrams and overall architecture overview. This should be a must read for any one who wants to understand more and gain insight into the woodstock widget library.The document is at: http://blogs.sun.com/dmitry/entry/illustrated_guide_on_woodstock_client

Also, in case you want to try out the woodstock widget library in netbeans, you can go to the netbeans update center and install the javascript library manager module. This should make available yahoo widgets and woodstock widgets (at present, only these two are available) which you can use in your web application. To use these widgets in your app, just right click on your web application, go to properties->libraries and then add the widget library that you want to use in your application. Now you should be able to use the woodstock widget library in your application. The widget library goes and gets itself installed in the web/resources directory of your webapp. Note however though that there are no jmaki type code snippet features or code completion capabilities available for woodstock widget library for now

Friday May 16, 2008

Finally! The dreaded time has come.. Starting mid next week, the devanahalli bangalore airport will begin its operations. The HAL airport present in the center of the city will cease functioning(okay, i am really not sure about that.. i think the case is still in court to allow domestic flights to operate from there.. or was the case closed?!) and everybody has to travel to this really really remote airport around 40-50 kms away from the city to catch a flight.  The roads leading to the aiport are still being mended. Traffic is awful atleast till the hebbal fly over after which depending on your luck, traffic might ease up (though the road conditions will not).

Say for example, i have to catch a flight to chennai from bangalore. A normal train travel takes six hours plus an hour and odd of travel from the railway station to your house. If i were to catch a flight, i have to start atleast 3-4 hours earlier depending on the traffic conditions. Then add another hour of flight travel plus atleast another hour of baggage claim, catching a taxi with exhorbitant fare and reaching your house. The former case, i spend around 300.. The latter costs me around 3000 atleast. And yes, for the six hours of travel i can sleep peacefully in a berth and come.. Which one would i choose?!

Another problem which is worth to be noted is the security factor. Given that the airport is away from the city and most of the international flights land or take off late nights, chances of crime rates increasing in these areas is very high. Not sure  how the government is planning to deal with that. Another problem which i havent heard much about is the amenities. For example, how about power/water/sanitation facilities in the new airport? Given that it is way outside the city in a small village, does it have the capacity to sustain such a huge airport?

Things will definetely be interesting in the coming few months. And until people have tried and tested the airport, i am willing to give it a miss and use other modes of transport.

Thursday May 15, 2008

I have had opensuse 10.3 installed on my system for a while and for some reason i had messed it up beyond care for repair and hence i was waiting for the next release of opensuse to be released so that i can install it on my system.

Meanwhile, when i was at the toshiba service center to get my laptop serviced, i saw a customer use fedora 8 for his laptop OS. This got me interested and since fedora 9 just got released, i downloaded it and installed it on my laptop today.

Let me re-emphasize that i am the kind of guy who just likes to have the operating system "just work" rather than having to go to the command line to get each and every application working. I am not too much of a geek anymore and anyways dont have that kind of a time to deal with these things.Open suse and ubuntu to a certain extent fits my kind of customers really well.

 Fedora linux does look nice and jazzy from the outside with all the cool and latest updated softwares. But IMHO, some of the latest software has made the whole distribution a bit hard to use.

The installation process was very smooth. It identified my earlier opensuse installation and prompted me to overwrite that portion of the hard disk which i gladly obliged to. I selected softwares that i needed and within a couple of hours, i had fedora up and running on my laptop along with xp.

The first thing i wanted to do was to install the "non-free" drivers for my laptop. This included some movie playing software like "vlc" and of course nividia drivers. I went to the rpm.livna.org and installed the rpm for yum updater from livna website.

Next, i went to add/remove programs section and started going through the list of packages i wanted to install. The first thing that struck me.. There were no check boxes to select multiple packages and install. Weird.. I was logged in as root right then and then i selected a particular package to install and pressed "Install" button. Nothing happened.. Since i was using an graphical interface, i didnt know what happened. I tried this for a long time and then frustrated, i went to the command line interface and started installing stuff by using the yum command from there.

A little while later, i managed to login into a non-root account and again started the add-remove programs section and retried the same thing again. This time i had some success in the sense that i could install the single package that i selected for installation. But, a progressbar which explained the progress of the download or the progress of the install was not there.. So, i just had to blindly wait till a particular package was installed.

Just a few minutes before i managed to get the synaptic package manager (which ubuntu has as default) through yum and now things are much better.

The next major gripe for me is the absence of a suitable nvidia driver for fedora 9. This release of fedora apparently has some sort of a non-final release of Xorg incorporated and understandably nvidia does not support that sort of releases. I had not installed kernel-source package when i installed fedora and so when i first downloaded a stable nvidia driver from the nvidia site, it complained about the absence of the source and stopped the installation. After downloading and installing the source, it later complained that the latest release of the driver was not compatible with the particular version of kernel.. DUMPED! NO 3-D!

I googled around a bit and later came up with a beta version of the nvidia drivers from the nvidia site and installation instructions from this weblog. I right now have the 2D portion of my GUI working but no 3D. Hopefully it gets fixed someday.

I also tried to get the dualhead monitor functionality which had a nice GUI portion to it working, but without any success..

Next, i tried changing the theme for kde. There were some nice themes available but whenever i tried to change to one of them, my X server crashed. No idea why that happened. Also, suddenly the start menu disappeared and i got fed up.. so i removed the ".kde" directory in my home directory and started out fresh.

So far things have been great. I have been able to surf the web and use netbeans without much of a problem. But the moment i try to customize something, the x window system hangs and abuses me badly for trying to do something.

I am right now waiting for the next version of opensuse which will be released in a month or so.  From their site, the screen shots look awesome. Theer is no shortage of eye-candy similar to fedora9. But hopefully, those guys will be a bit more sensible and have a version of Xorg over there which nvidia supports.

Monday May 05, 2008

This Javaone, there are a number of sessions which are devoted to Ajax based web development using netbeans. You should be seeing a short speech on woodstock and VW by Deep Bhattacharjee during Netbeans Day during the NB session between 2:35 to 3:30. Also, there is an hands-on lab happening on developing Ajax enabled web-applications using woodstock and visual web on Wednesday .. 

For those who are interested in knowing more, woodstock has a stall set up in the Javaone conference, where you can meet up with the woodstock team and ask questions and explore more about the components.. 

Tuesday Apr 22, 2008

I have written up a small document on how to create custom components for woodstock that you can integrate with netbeans visual web palette. The document is put up at: http://wiki.netbeans.org/WoodstockCustomComponents

You can also take a look at the following links for more information on woodstock components:

https://woodstock.dev.java.net/Documentation.html - Contains links to useful articles on how to use various woodtock components, tld docs, functional specs and tech notes.
http://blogs.sun.com/dmitry/ - Contains info on woodstock architecture in general and ajax text field auto complete features

Saturday Apr 19, 2008

Project woodstock is about to release its 4.2 GA on April 23rd. You can currently download its RC build from here. The 4.2 release features a lot of bug fixes and two new components, the login component and the ratings component. Meanwhile to 4.3 builds have also started and you can download them here. The new components that are going to be a part of the 4.3 release are the ajaxified tab, tree and table components. 

Friday Apr 18, 2008

Everyday, the first thing that i do when i come to office is open dilbert.com and see the goold old black and white comic strip for the day, taking satisfaction in the fact that it is the norm for things to be absurd in the corporate world. But today when i logon to dilbert.com, what do i see? A heavy and clunky page which takes forever to load with popups.. But then, once the page loaded, i got to know that mr. scott has gone the web 2.0 way and decided to make his page more colorful, slick, animated and incredibly heavy.

The dilbert strips now show up in color which is cool and defenitely great. The corporate world is no longer monotonic black and white!The page is loaded with a lot more content about mashups, widgets and even more advertisements. There is also a dilbert animation app available on the page which shows you a short animated dilbert clip every day. For people like me in India who dont get to see the dilbert series on TV, this is awesome! Excited, i clicked on the link and ahem. the clipping came up fine, but no sound.. Apparently you only need to use M$ (oh maybe mac) and IE (safari too?) so that you can watch the clipping..

How so dumb and lame is that? Blame it on scott or the company he outsourced the project to? I'm sure it isnt hard to port the app that you are doing to firefox. Infact, my experience is that it is easier to develop apps for firefox than for IE or safari. Then why this corporate boot-licking when the whole theme of dilbert is to a satire against corporations?
 

Wednesday Apr 16, 2008

Ever since Muthu got his new iPhone, he has gone crazy discovering new features and hacks in it. Meanwhile i have been trying to find out what  features my humble P2 supports. Yesterday i put in some new wall papers from the abi forums Recently i got the urge to try out transferring my contacts in my cell phone to my P2. P2 unfortunately does not support creating address book contacts from the device itself. I have an old sony K700i phone. 

Three different ways of transferring your contacts from the phone to your P2

 1) Directly from phone to P2

Since P2 has bluetooth capabilities, you can send your contacts directly from phone to P2 via blue tooth.
Disadvantage - Only one contact at a time transferrable

2) From your computer

There is a MyPhone Explorer software available from the internet (free software) through which you can connect to your phone and transfer your address book to your computer as a "vcf" file.
Now, transfer your vcf file into the "My Received Files" folder in your P2. You can see a lot of contacts.

Disadvantage - Some kind of bug.. Alternate contacts are shown

3) From your computer - P2

 

Transfer your contacts to your computer as step 2 mentions. But now, import them into your outlook express. Now, export each one of your contacts as a "single" VCF file.

Next, create an "Contacts" folder in your root of the P2 (of course after you have connected it to your computer)
Transfer all the vcf files that you have created to your "Contacts" folder.

Now disconnect your P2 and switch it on. Go to Prime Pack -> Address Book.

You should be all set with dialling from your P2!
 

 

Sunday Apr 13, 2008

Found this place during the stop over in Charles De Gaulle airport, Paris.

 


For those who cant understand what the small caption below the heading, it means something like

"The sun in freedom"

 How appropriate is that!! :-)

Friday Apr 04, 2008

I finally got what i wanted to buy for sometime now.. A brand new samsung P2 ! There was a tussle between whether i should go for a ipod touch or a P2. There were some pros and cons in both of them

 

 Samsung P2
Ipod touch
Pros:
 

BlueTooth

Better sound quality

Better battery life

Exciting new features available through software upgrades

Can make and receive calls from the P2 by connecting it through bluetooth with your cell phone.

Games

You can use it as an normal USB flash drive.

FM radio

FM radio recording (does any one do that things though?!)

Better playlist handling than Ipod .

Alarms,world clock and other small useful utilities

No need to use touch screen to control music volume.

 Breath-taking awesome UI

Wifi

Embedded browser

Youtube videos, maps etc.

Much better touch responsive than P2

Larger display size than P2

Integration with iTunes (ehm.. ok)


 


  

 

 

You could basically put down a pros of one as cons of other and vice-versa.So ultimately i had to decide on something. Well. for starters, my existing cell phone's joystick wasnt working well (i have a sony k 700i which is about 2 years old). And if i had this mp3 player through which i  can make calls.. it was a bonus! No need to keep fishing around for my cell phone each time i get a call. I can just use my mp3 player.

Bluetooth is indeed very useful. I can integrate it with my laptop and transfer files without having to use the USB. The general consensus was that P2 also had a better sound quality and battery life than the ipod touch (maybe because touch had to work on a larger screen?!) Light weight and more compatible than ipod.

Now of course, ipod touch has wifi.. Awesome.. Absolutely great!! But hey.. i am in india... Wifi?? Excuse me?! I only have wifi in office (sun's wifi) and in my house where i have a wireless switch.. And in both the places, i mostly have my laptop switched on which has wifi and i can surf the net on a way much bigger screen than on the ipod. Unlike in US where i have found that a lot more places seem to have wifi and wifi is indeed much more useful.

Besides i can use the p2 as a 8GB storage device and store arbitary files unlike the ipod touch which only your itunes software will understand and load the contents and hence you cannot store any files YOU want in it. On the whole a bit more locked down than the P2. And being a Sun employee, lock down of any sort doesnt go in well with me. ;-)

Also, i am a big time listener to FM radio stations. I pretty much get bored with the playlists i have even if i put them in the "shuffle" mode. So, whenever i go in for a long walk or a ride, i pretty much prefer listening to FM stations. The reception of P2 was not bad at all and it had a 30 station FM preset memory. Something which the ipod touch too terribly lacked.

This P2 also has something called a "A->B "which i cant seem to quite figure out what it is.. I select an A point and a B point and the music gets stuck between those two points.. Wonder why they put it in there..

The bigger plus was the presense of a DNSe feature which is completely awesome. P2 also supports a wider variety of music file formats than ipod touch.
 

 Here is some of bad quality P2 pics which i took from my canon camera whose zoom has inexplicably stopped working ever since i set foot in boston.










 

If you want to know more about this product or comparison of this player with other mp3 touch players, the internet has a lot of smut than you want.. You can spend hours wading through users comments and experiences and also much more sexier pictures than what i have just uploaded.

Wednesday Mar 26, 2008

I had a chance to go around new york city when i was at the ajaxworld conference last week. Even though it was winter, i really loved the place and the people there. Here are some pictures..




I will be going to Niagara falls this week end (hopefully). So, looking forward to that too! 

Tuesday Mar 25, 2008


Keynote - EffectiveUI - Anthony Franco. - anthonyfranco.wordpress.com
Year of 2008 - RIA


Whats the value of RIA?
Is it useful??

More important.

-Talk to your customers!!

- Demo of websites of target and starbucks which suck!

- Web 2.0 = utility + community + engaging experiences.

- A good example of a usable website - 37signals.com
They do it right because they are the audience of the product
they build which is so unlike other products.

- iphone - may not be simple but it is engaging.
So the key is not being simple but being engaging.
Designers need to buckle up to the trend, listen to the customers.

- AJAX is good.. but not good enough?!

- There needs to be a lot of interaction between designers and developers to make
good products.

- Good usability counts
"Advertising yields 5$ for 1$ invested in return. But 60$ for a good user experience."


Grails - Agile web 2.0 the easy way - jeff brown G2one director.
-----------------------------------------------------


Grails
- full stack mvc framework for web apps for jvm.
- exploits power of groovy.
- Leverages tech. like hibernate, spring, sitemesh.
- You never see hibernate in your app unless you are gonna do complex things.
- Grails takes care of that for you. Same with spring.
- Grails Very useful for data driven web sites.

Demo of creating a very simple grails app.

You can create a war file from the grails environment and deploy it in any
servlet container you want. Jetty is default for development environment.
Working for default deploy on glassfish.

Configuration files are specified in a .groovy files in conf/ directory.
Looks like an alternative to xml files.

Grails - start with a object model and schema is a product of that.
Ruby - Start with a schema and the object model is a product of that.


Some commands:
grails help
Commands for grails using Gant "Groovy ant".

Scaffolding for grails controller class -
Dynamic scaffolding and generated scaffolding.

You can make changes to your classes and reload and see it at runtime. It can be
in your controller class or your UI page (.gsp pages).

In groovy, the last expression evaluated in a block is a return statement.

IDE - IntelliJ has excellent groovy and grails support.

Query support ex: Person.findAllByAgeLessThan(<age>;) or findAllByLastName(<age>;)
etc. Works by introspection. Hibernate works inside all this.



Desktop in browser - Coach Wei - CTO Nexaweb Technologies Inc. & Bob Buttone - chief architect
-----------------------------------------------------------------------------------------------

Right now, a lot of development has with ajax widgets and single page refresh applications.
But the real user experience lies in desktop/offline applications.


Successful apps need "continuous experience".
Its about good user experience and good developer experience.

Nexaweb enterprsise web 2.0 platform utilizes all of existing web2.0 stuff like
ajax (dojo, jquery etc) and java+xml.

Different technologies abstracted with common tooling. So skillsets need not be
honed for each technology.

Moving apps to browser in enterprise is the way to go. You can use the technologies
you like like dojo, flash etc in your app. But having a common IDE which abstracts
the technology you use really helps.


Dreamface - The ultimate web 2.0 framework - Oliver Popuney
-----------------------------------------------------------

Helps you do enterprise web 2.0 applications. Can do mashups.

Fully web based development. No IDE involved.It is open source.
You can add widgets from the internet like youtube widgets, google widgets.
You can make communications between widgets visually.No js code from the developer
needed.

Layouts of the webpage also done visually (seems to be specified via the row, column format)

Visual workflow available on the web browser. You can specify entry points of
screen, create web pages, specify criteria for navigating between web pages, provide
business rules for navigation.

Dedicated APIs available for building your own widgets.
There is a wiki available from the widget which tells how to define your own
data widget templates.

The final web page seems a bit like advanced google home page with a lot more features.


Dojo toolkit - A11Y and I18N
---------------------------------

Why is A11Y necessary?

Visually impared
People with poor visibility
Disabled people

Government compliance, a good market for accessible stuff.


Dojo can claim itself as the first completely accessible toolkit.

One of the problem with accessibility is background images in CSS with high contrast
mode. Dojo has custom utility package which checks for high contrast stuff.
Styles for widgets is changed so that all the widget's css background images are
replaced with suitable text.

Lot of work being done in accessibility side these days. Browsers supporting A11Y stuff
ARIA markup is useful for identifying complex widgets on the page.
WAI roles coming up for better accessibility

Firefox 3 has better accessibility features.

Problem with asynchronous page updates because screen reader cannot identify
updated widgets on the page.
"Live regions" a feature coming up in firefox so that asynchronously updated stuff
can be read out by the screen reader. Three modes-polite, assertive and rude.
Polite reads out updated stuff after content being currently read is over.
Assertive does the same too but a bit more faster.
Rude reads out updated stuff immediately interrupting the currently reading text.


I18N and L10N
-------------

Necessary as a lot of other countries in the world with their specific languages
and semantics have a lot of presence in the web.

Text, dates and even content layout can change depending on localization.

Server side frameworks such as JSP, .NET and PHP have localization inbuilt.

But for web 2.0 we need client side localizations. Dojo provides client side
localization. The bootstrap file loads all the necessary resource files for localization.


Comet and Grizzly
---------------------


Ted Goddard and Jeanfrancois Arcand


Web 2.0 - A web for the people, by the people.
Lots of user generated content, Is the user an HTTP client?
Ajax - state of mind (?!)
Ajax does not exist in W3C universe yet. Standards still catching up.

Ajax still synchronous with user events.
But full decoupling means, sending events or updates from server to teh browser.

Advantage of this: Server mediated collaboration. Server can send messages to necessary clients.

http://webmc.icefaces.org/webmc

What is Ajax Push? highly responsive event driven browser applications. No need to do frequent polling.
Advantage - lower latency, not dependent on frequent polling. Server and network do not have to deal
with frequent polling requests.

example application - 4homemedia.com (uses glassfish's comet)

There is
- Ajax polling req -> resp (event on server) req -> resp(with event)
- Ajax push (Long poll) req - - - - > resp (with event) req ------> resp(with event)
- Ajax push (Streaming) req -----> resp (with event) ------> resp (with event)   something like streaming.

Problem with the third option and proxy. Not ready for streaming contents


Ajax push - HTTP message flow inversion.

There is meta data being sent from the client to the server to help the server identify the request
and the response is sent by the server after some time when the event happens.

Bayeux/Cometd - JSON Pub/Sub mechanism.

JSON messages are published on specified channels. Lots of operations like connect, subscribe, unsubscribe etc.
Multiple transports - polling, long polling, iframe, flash etc.
Server side reflector with no server side application possible. This is sort of similar to irc.

Can push scale????

Blocking, synchronous technology will result in a blocked thread for each connection that is "waiting"
Every block thread will consume memory that can affect performance.

Non blocking - You can have threads that are dynamically allocated to serve clients depending on activity on
that connxn. No need to block a thread for a particular client.

Use a new NIO (new I/O) API for a non-blocking sockets to avoid blocking a thread per connection.

Server-side Ajax push: Server considerations

To handle "wait" for an event in Ajax push, select a server/language that does not block.
Web servers with java can be made non-blocking. So, its not one-connxn per thread, but rather one request per thread.

This blog copyright 2008 by venky