Thursday, October 9, 2008

Friday, October 3, 2008

Book Review: Harnessing Hibernate

Harnessing Hibernate is the latest in a series of books I got recently to review (I have been a little too busy to read through all of them...). The book caught my interest right away since I have used Hibernate on a pretty big enterprise project a while ago and was involved in the solving of some performance issues faced by another large project due to their mishandling of some Hibernate code.

I like how Hibernate makes building data services a cinch - but more often than not, it worries me that a lot of people don't really understand Hibernate the way they need to before they can use it in large-scale applications with emphasis on scalability and performance. Understanding what goes on under the hood of Hibernate fetches goes a long way in avoiding silly mistakes like loading a set of large, linked objects into the memory when you probably needed just the top-level object or a couple of properties.

Also, a lot of books seem to focus on working code and simple samples - prototypes that work, but are ultimately not much of use in a real-world situation. I consider it a strength of this book that it doesn't take the readers for granted. The authors do a great job of explaining all concepts involved in getting a Hibernate application to run - including build tools like Maven. It has clearly defined examples, possible errors and ways to get around the errors. Of course, that doesn't mean there isn't much here for experienced developers - there are some really neat tips and tricks that might go over the heads of those that are not advanced enough to understand the concepts.

I would recommend this book readily whether you are a beginner looking to learn Hibernate or an advanced devloper hoping to refresh their knowledge or find something they might have missed before.

Tuesday, September 30, 2008

A comparison and listing of RIA frameworks

This blog post contains a very good and comprehensive listing of currently available RIA frameworks - a good reference for anyone researching or evaluating RIA frameworks for their current project.

Out of the technologies mentioned, EXT JS has been my favorite to work with - just the amazing number of widgets available and the fact that it is so simple to integrate it with Spring MVC and other Java-based MVC frameworks. 

Flex on the other hand is currently making me bang my head against the keyboard - but the worst part to me is the really steep license fee if you want to use the Flexbuilder GUI or even the Weblogic Workshop with bundled Flex. 

Monday, September 29, 2008

Voice Analysis to Figure out Lies

RealScoop (via Techcrunch) is an interesting software - claiming to be a wedding of voice analysis technology to Web 2.0 - by which means it figures out if someone is lying or telling the truth based on audio of the speech. The software attaches a believability meter to the videos on the site that rate the audio portion's "truthiness". Interesting and innovative though it seems, I can see too many variables going wrong with something like this - audio interference, difference between voices and modulation of men and women, other emotions coloring the voice, etc.

I don't think there can be objective analysis of the truth behind a speech without appropriate visual cues to aid the analysis process. I guess we can judge for ourselves....RealScoop plans to cover the VP debate and release believability meter readings for it. 

Saturday, September 20, 2008

Quick, learn some Cobol!

I got to learn some Fortran and BASIC in my days, but was never brave enough to tackle Cobol. Looks like it might be my next thing to learn for job-security ;) Per this article from Dr. Dobb's Portal (via Slashdot), come these really interesting nuggets - 
Cobol: 1) is the most widely used language in the 21st century; 2) is critical to some of the hottest areas of software development today; and 3) may be the next language you'll be learning?


In 1997 the Gartner Group estimated that there were 240 billion lines of Cobol code in active apps. Something like 90 percent of financial transactions are processed by Cobol code, and 75 percent of all business data processing is Cobol. Merril Lynch reports that 70 percent of its business runs on Cobol apps.


More interesting and possibly horrifying information (if you are like me and not really looking forward to programmingin COBOL for the rest of your life) at the link...

Thursday, September 18, 2008

Simple steps to create a portlet and consume it in Oracle Webcenter

There is definitely tons of documentation on this topic - I am not going to repeat it all but I thought a super, simple distilled version always helps ;)


  1. In JDeveloper, create a new web application with "portlet, repository, JSF" capabilities. This creates three projects in your application - "Model" (for your data needs), "Portlets" (where your portlets will reside) and "View Controller" (to build your JSF pages and components).
  2. Right-click your Portlets project, pick "New" -> Web Tier -> Standards-based Java portlet (JSR-168) to lauch the wizard. The rest of the wizard steps are pretty self-explanatory and the requisite files are automatically generated for you.
  3. Right-click on your Portlets project to create a new deployment descriptor (New... -> Deployment Descriptor).
  4. Right-click on your brand new *.deploy file created in the "Resources" folder and deploy. Your portlet is now deployed to your app server. Note: Remember to go to the connections tab and create an application server connection that you can deploy your portlet to prior to the deployment.
  5. In your browser window, type http://<host>:<port>/<context-root>/info to see your portlet's deployment status and to get the links to the portlet's WSDL (wsrp 1 and 2 are automatically generated).
  6. From your View Controller project, right-click to register a new WSRP Producer (New.. -> Web Tier -> WSRP Producer Registration). The URL endpoint to use here is the url of the WSDL from step 5 - either WSRP1 or WSRP2, based on the standard you are using. You will now see the newly registered portlet producer in the Portlet Producer folder in your application. 
  7. Create a new JSF *.jspx page using New...->Web-Tier->JSF page wizard.
  8. If you haven't already, right-click on the View Controller project and in the project properties, add the Customizable Core Components library to the project to have this show up in your component palette.
  9. Drag and drop the "PanelCustomizable" component within the h:form already on the page. Find the portlet producer you just registered in the component palette, pick your portlet in it and drop it within the PanelCustomizable on the JSF page. Note: If you don't find the portlet producer in the palette, make sure you created it from within the project. 
  10. Run the JSF page by right-clicking on it selecting "Run". You can see your portlet being consumed by the JSF page :)

Tuesday, September 16, 2008

Liveblogging the Web 2.0 Expo

In case you have not been able to make it to O'Reilly's Web 2.0 expo in New York (like me), you can still follow along from this live blogging effort.

O'Reilly themselves have provided a few more resources to read along about the goings on...
O'Reilly's Expo Blog
On Twitter

Monday, September 15, 2008

Usability and JDeveloper

Alright, I agree I might not be working with all my brain after a nice and heavy meal of eggplant parmigiana, but Oracle's JDeveloper is not epitome of usability in my experience. This is the first time I have used this IDE (I still "heart" Eclipse!). I am only using it since it integrates well with the Oracle Fusion Middleware and that is my new mission in life to get well-versed in.

As a simple first step (after the not-so simple step of installing Oracle's SOA Suite), I am trying to create a portlet based out of the Oracle WebCenter framework. I relied on the cuecards to lead me through the process. Of course, the second step on the cuecard is to launch the Oracle PDK-Java Portlet Wizard - without explaining how to do so. I had to go to the "Show Me" menu on the cuecards to launch a browser window and an Oracle "viewlet" that actually visually showed me how to launch the wizard - a three-step process in itself.


Not to put the product down or anything, but figuring out how to launch a wizard should really not be rocket science!

Friday, September 5, 2008

Creating word clouds

Here is a cool tool that lets you derive patterns out of any text you provide - Wordle! The idea is to run through the text and form a word cloud that visually represents the frequency of word appearance in the text. A really cool analysis tool with a lot of uses I can see already (some bloggers have used it to analyze the text of the Democrat and Republican convention speeches).

Thursday, September 4, 2008

Throwing out some metrics for Social Marketing

Here is a nice discussion of social marketing and metrics that throws out a few ideas for marketing metrics -

Old School Metrics

-Visitors and Page Views: The raw data for daily visitors and daily page views across your domain.
-Optin rate: The number of people who optin to your list vs. total traffic for that day.
-Search engine bots: Which bots visit your site on a daily, weekly, monthly basis.
-Referrers: From engines to individual sites. Who is sending you traffic.
-Entry and Exit: The pages visitors land on and exit from your site.
-Paths: The pages or “path” your visitors take through your site.
-Bounce Rate: How many visitors stay on your site less than 30 seconds.

Social Marketing Metrics

-Subscribers: RSS and newsletter subscriptions.
-Stick-Rate: How long social traffic stays and moves around the site.
-Linking: How many people on different social sites are posting, voting, and linking to your site.
-Comments: Average comments generated per post.
-Pickup: How many times across how many social news sites your linkbait, for instance, gets picked up, talked about, and voted to prominent placement, such as the front pages of social news sites.
-Bookmarks: How many people are coming through social bookmark engines like Delicious.
-Link Popularity: How many sites/publishers you are attracting with your content who write about you and link to you in their posts (the best kind of link you can get).
-Social News Tracking: How many visits you get from social news as well as how well individual pieces of content do on each site.

You can tell that most of the recommended metrics are very specific to the marketing and branding domain. A lot of these metrics are also quite difficult to measure - how do you measure stick-rate for a blog post read via an RSS aggregator?

Also, just because someone is talking about you does not necessarily mean they are saying good things about you. In the days of condensed feedback loops, negativity spreads much faster as a meme than positive news. How do you make sure you are being talked about positively, if at all?

The biggest drawback in the above scenario of course.....how do you apply these to a company's intranet? How do you convince a company to invest into something that outside customers might never get a peek at? How do you measure "honestly" how much value your employees are really getting out of the intranet?

These are some of the questions I am currently focusing on in order to come up with a comprehensive set of metrics that one can throw at different situations in varying combinations in order to come up with a good view of the "health" of social media (ROI - Return on Influence) invested into by any entity.

Wednesday, September 3, 2008

What not to do with Web 2.0

I know I must sound like a cheerleader going rah-rah for Web 2.0. In spite of all my enthusiasm for new technologies, I acknowledge certain technologies are not for everyone. Here is an interesting blog listing some really weird Web 2.0 startups....

I guess there is a market for every silly idea ;)

Thursday, August 28, 2008

Wonderland - Virtual World Toolkit from Sun

Here is another interesting link passed on from a friend (thanks, Roger!) - Project Wonderland - Toolkit for building Virtual Worlds. Seems like a cool new java-based toy for the desktop that lets users create interactive 3D virtual worlds like Second Life for themselves. There is no license fees to pay - the platform is available under the GNU GPL v2.0, though commercial customers might want to look into the dual license.

Interesting as the project may sound, questions abound about how useful this is if it is going to be just a few developers creating things on their own servers - even if a few of them manage to link up. The beauty of virtual worlds is the ability to be physically be in one corner of the world while you are interacting virtually with people all over the world. The more people you see around and the more content you let them generate and play with, the more likely users of the world are going to last.

It is the being linked in to other people that allows virtual worlds flourish - not just the virtual part. It will be interesting to see how this effort fares outside of a purely educational experience.

Wednesday, August 27, 2008

Stengthen your core audience and Promote your blog

This post is the third in the series of entries about creating a blog. We looked at basic blog setup yesterday - now that you have a place to write with a cool name and all - the question is what do you do with it? What do you write? If you are a corporation, who writes? Who is the intended audience? What is the goal you want to achieve with the blog? Lots of questions!

Naturally, the most important thing to do is to come up with some clear goals for what you want to achieve with your blog - you could be looking to simply express yourself, in which case you may want to write about whatever interests you. Corporate bloggers on the other hand, have a different kind of maze to navigate - the motivations behind corporate blogging would normally point to who would be the natural choice to blog...Let's look at a few possible motivators -
  • Public Relations: Southwest Airlines has a blog for a similar purpose that serves as a bridge between Southwest's customers and the airline. The content is created by the airline's PR team and executives. It serves as a way for Southwest to gauge customers' mood over the airline and relate to them on a more personal level than news releases can ever allow. The airlines gets to write about their initiatives and get direct customer feedback in the form of comments.
  • Community-building: This is a little like PR in that this kind of blogging is supposed to humanize a corporation to the customers, but the end goal is to build a network of customers - a community that generates it's own content - instead of using the customers simply as a source of feedback. This kind of a community would definitely need to be kick-started by a few original bloggers who plant the seeds that the community then picks up on and continues.
  • Broadcast Knowledge: For companies that thrive on information - by being sources of information and by providing services to other companies, blogs can be great tools when you can get the company's thought leaders to write entries related to their areas of expertise. These articles when indexed and used as information outlets by others, create free advertisement for the company and touts it's employees as experts in the field.
Frequently updated blogs with interesting, insightful and/or funny commentary is key to holding audience attention and keep them coming back from more. Keep entries short and the information in them distilled. Don't insult the reader's intelligence and try to avoid taking extreme positions - controversy creates temporary spikes while people stop to watch the car wreck, but the traffic spikes do not translate into long-term traffic.

The beauty of blogging with comments enabled is the instant feedback-loop that will steer your future vision. Moderation of comments on the other hand, is very important since an overly negative set of comments can turn into a public relations nightmare real quick and can be a community-killer.

Most importantly, stay honest and learn to backup assertions - someone is bound to call you on erroneous assumptions!

Tuesday, August 26, 2008

Setting up a Blog

This is a sequel to yesterday's post about creating blogs. We are going to take a more detailed look at the setup and configuration of a blog and the various decisions involved.

First task, picking a host for the blog - free or paid. A lot of newbie bloggers tend to start free (I did, eons ago), gauge interest, get addicted and move on to their own domain and web space as the content increases. Corporate bloggers of course, are better off starting on their own domain in the first place.

Advantages to having your own domain are numerous - you have complete control over the content-generation, presentation, access and authorization for the content. You can use an enterprise-level infrastructure to ensure availability and an effective user experience. The biggest implicit advantage of social media and blogging in specific, is brand-messaging through the content being published and exposed to a user community. This brand-messaging can be conveyed in the most effective manner when the corporate domain is used for the blog, creating a seamlessly integrated user interface to the corporate website visitors.

Freebie blog options: Blogger, Wordpress
Paid blogging options: Typepad
Domain/Web space options: GoDaddy

Second task, pick a name for your blog. Easy enough? Not really, since this is essentially your identity - how you will come to be viewed by the online community and your readers. Too formal a name will put off readers, while something too informal might sound like you are not serious about what you want to say - well, maybe you really don't want to be too serious, in which case, go ahead and have fun (my first blog's name had "two mad Asian girls" in it, so I am not one to preach). An ideal name will reflect your brand identity to the world or yours and will come off friendly and inviting (hopefully) and not offensive or off-puttingly staid. For good or for bad, once your online identity is established, it is here to stay - so put a lot of thought in what you want to be known as and known for.

Now that the tough part is out of the way, what is left is to make your content search engine friendly so your blog can be indexed and viewed freely or setup stringent access controls so only authorized users can access it.

More in the next post about generating content that is relevant to the audience you want.

Monday, August 25, 2008

How to start a blog?

This was an interesting question that came out of a lunch conversation with a client recently - how does one go about starting a blog? Well, the smart-ass way of answering that would be to get one at Blogger or Typepad and start writing away.

If you dig a little deeper, there is a lot more to the question than what it initially seems like - creating the shell of a blog is easy enough, but to get something interesting in it, attract an audience and sustain their interest in the long term. Per Business Week, there are more abandoned blogs on the internet than active ones...almost a ratio of 1:4 (active:inactive) - I should know, since about 50 of them belong to me...

Getting a little more serious though, we can break a blog's lifecycle into about three broad stages (thanks Diana, for help with the stages!):
  • Setup: This involves everything from picking out a blog host, a template that is unoffensive visually, if not actually pleasing to the eye, picking out a good name for the blog - a configuration-intensive process that is also pretty crucial in the later stages, since this establishes the identity of the blogger(s).
  • Strengthen: This is when the newly minted blogger(s) actually start putting content on their blog - you start writing, you embed your stat counters, watch as the number of visitors goes up and start building up your core audience - start building up the momentum that will sustain your blog in the future.
  • Sustain: So, you have your blog, you have been posting enough to build up a good group of core audience you interact with on a regular basis via comments and trackbacks - this is when you keep the momentum going that you have built up with all your hard work and great content through the lean-visitor months.
I am going to break up the discussion of each of these individual topics into a separate post so as to not shortchange any of the topics and hopefully in the process we will hit upon some insights as to how to make blogs work in a meaningful manner.

Yahoo Pipes - A cool new way to Mashup

I have to admit I was tipped off on this by a friend this morning (thanks, Scott!) - I was well aware of the really good job Yahoo had done with their AJAX framework (I worked on an application recently where the Yahoo libraries were used extensively), but this was something very few in the open source domain have managed (take my word for it now - I will google it up later ;)).

So what is Pipes? Remember unix pipes where you "pipe in" the result from one command to another and so on to create an aggregate of all the commands? This is a little bit like that. All you need is access to the feeds of whatever information you want to mashup in one of the standard formats like RSS, KML and mash it up in the interface provided by Yahoo (see here for more information). Interesting, easy to play with and looks to be going in the right direction. This is definitely one tool I want to keep on my radar for future mashup implementations.

Friday, August 22, 2008

Measuring and Monitoring Web 2.0 Applications

"Measuring and Monitoring Web 2.0 Applications" by "Keynote" was another interesting white paper on social media metrics I could get my hands on. This is a more recent paper than the one I mentioned in the previous post, so it has a lot of information about technologies like "social networking" and "rich internet applications" that hadn't quite matured by 2006.

The paper starts of with the idea of the "network as a platform" - where the browser takes over for the desktop environment (or even a micro-browser as on a PDA or a cell phone).

As the paper's title makes it clear, the most important issue being tackled by it is measurement and to a degree, performance. How does one measure the performance of a web site that doesn't load all at once or a page that hits the server asynchronously defying the normal laws of page load metrics?

Thursday, August 21, 2008

Social Media Metrics and Measurement

Speaking of memes, "social media" is one that has taken off quite a bit in the last couple of years. Web 2.0 and rich internet applications have been my domain of interest for a quite a while now as were my other blogs (some since 2002), so this seemed like a natural fit for my interests. While researching for a paper on making the business case for Web 2.0 applications, I stumbled upon a treasure trove of knowledge in the social media metrics and measurement - something I had never quite thought about, at least in a formalized manner.

One of the first things I read about this was a white paper on a roundtable discussion organized by Dow Jones about metrics and measurement of social media, called "Tracking the Influence of Conversations".

I could tell something was a little bit off in the paper as I went through it and then realized this happened in Q4 of 2006 - eons ago in blog years. The focus seems to be mostly on blogs and meme propagation while a lot of other social media phenomenon are missing in action. Still, there was quite a bit of interesting information in the paper. A couple of things that stood out to me were the metrics to measure such as the "velocity" of a meme (speed at which a meme is picked up from one blog to others) and "conversation index", the ratio between blog posts and comments/trackbacks.

So, we now have atleast two metrics to measure the impact (ROI - Return on Influence) of blogs as social media tools - how does this apply to social networking sites? What metrics would be relevant to say, microblogging? How can these metrics be captured and measured - leave alone used in a corporate setting?

I guess I have my next mission figured out ;)

Tuesday, August 19, 2008

The Speed of Meme?

Information travels faster than ever in these interconnected days. It used to be that it traveled at the speed of the best gossiper's mouth...all it takes is a few clicks to spread memes now. We will be looking at a few interesting memes, information and technology in general over here over the coming days.