Tuesday Jan 12, 2010

Top 2009 Openomics Blog Posts

This time of year has this cute tradition of the past year in review, the best-of moments from the previous year that is ending, etc. Let me be no exception with this 2009 Top Openomics Blog Posts roll-up. Data comes from Google Analytics.

1. Sun Calendar Sync for Apple iCal
2. Gigaspaces curbs latency outliers with Java Real Time
3. Performance monitoring using hardware counters : Releasing HAR 2.0
4. Roller tips and tricks: image rollover using CSS
5. JIRA single sign-on with OpenSSO, free, now
6. Sun Calendar Sync for Apple iCal : Releasing icalds 2.1
7. Perforce runs best on ZFS
8. Getting serious about web analytics - Part 2
9. Solaris 10 05/09 is out!
10. iSync support for Sony Clié TH55
Top 10 blog posts with most pageviews in 2009

Friday Mar 20, 2009

Roller tips and tricks: image rollover using CSS

Second post in the Roller tips & tricks Series... as a side note, they are already (too) many webpages out there to teach you how to make image rollover's using CSS, and my intention is not to make yet another similar post. But, as I was searching myself for such info, the top pages returned by Google all --sorry, I admit, I did not follow much links after Page 1 but who does anyway?-- describe a technique of using a background image which is imho very cumbersome --you would need to create a distinct CSS class for each distinct image! So I ended up going back to the CSS Specs to learn enough to be able to write this stuff below. Hope it helps!

How do create (non-background) image rollover using CSS?

When you move the mouse over the images in the Download section of the sidebar, the image changes and shows the text "Get it Now". Here is how it works…

[Read More]

Friday Mar 13, 2009

Roller tips and tricks : image and Planet

Apache Roller is the blog-roll application that currently powers the blogs.sun.com site. It comes with a large selection of templates that allows anyone, with no particular programming skills, to easily get started with blogging. To further customize your blog though, you will need to switch to manual and learn some HTML, CSS and Velocity, Roller's template programming language.

I get quite often asked about how to program some of the features that you see on this blog. Simple things but they seem to be of enough global interest, so I'm finally blogging about them here. I'm planning an initial series of 3-4 posts on the top questions that I got so far. There will be more posts of tips & tricks as I get more requests. And always feel free to ask right here, in the Comments section.

How to get images to display in an RSS reader, for sure?

If you upload an image into your blog's resource directory and use it as part of a blog post, Roller will by default strip out the hostname out of the URL. E.g. if you type <img src="http://blogs.sun.com/openomics/resource/happy2009.png" />, Roller will save <img src="/openomics/resource/happy2009.png" />. I.e. it will convert an absolute URL to a relative URL --relative to your blog website's root URL-- if the image sits on the same website. And there's apparently nothing you can do about it --I tried at least and I could not find a checkbox anywhere in the blogger's admin interface to prevent this to happen.

This behavior of course causes no problem to your online visitors. They are surfing your blog's website --here blogs.sun.com-- and the relative URL gets resolved fine by the browser. Your subscribers though, that are reading your blog offline, may run into issues…

[Read More]

Wednesday Jan 21, 2009

FeedBurner accounts are moving to Google

As a follow-up to my posts on Web Analytics (cf Part 1 and Part 2), here is a quick update on FeedBurner. As a reminder, FeedBurner enables a blogger to track his off-site traffic, i.e. his subscribers. FeedBurner gives you a feed URL that replaces the blogging site's default RSS feed and on which it performs extra monitoring and analytics --it basically answers the question of how many subscribers a blog has.

Since the acquisition of FeedBurner by Google in 2007,  users were expecting / hoping a closer integration of FeedBurner with Google's family of products targeted at publishers and advertizers --Google Analytics to start with. Nothing happened in 2008 but things have now started to move. Since the Christmas break, the http://feedburner.google.com/  URL is up-n-running and one can start moving his FeedBurner account & feed to a Google account. Which I did earlier this week.

The migration was very smooth. You simply log into http://www.feedburner.com/, follow a few links to get the migration started and you eventually receive an email notification when it completes. It took about 5 to 10 minutes for my 2 feeds --the entries and comments of Openomics. Google offered me to update my feeds using the feeds2.feedburner.com domain --was feeds.feedburner.com-- which I did not do, but it all works fine still --subscriptions are being redirected from the old to the new domain.

Figure 1 - New FeedBurner Stats Dashboard

So, good job Google! The only noticeable difference, as shown in Figure 1 above, is that the FeedBurner Stats Dashboard --the plot of subscribers & reach over time-- moved from being histogram-based to a solid-line graph --to align with the graphical standards of Google Analytics, I am guessing.

Monday Nov 10, 2008

Getting serious about web analytics - Part 2

Continued from Part 1.

As a convenience to the readers, besides the generic Atom feed, I have added, to the sidebar on your right, subscribe buttons for popular online feed readers. Surely everyone has a different opinion on what the most popular ones are, so I simply started from the ones provided on our CEO's blog --Jonathan must have an online-marketing specialist working out these details for him-- and added a couple I had heard of. My apologies in advance in your own favorite is not on there, but drop me a note and I will add it!

To add such button, many of these sites provide you with an online tool that generates the HTML code for you to insert, based on some preferences (e.g. button size), such as with Google. You should be able to find these pages by following some kind of Tools link at the bottom of the homepages or googling on the "subscribe button for xxx" or "subscribe badge for xxx" keywords.

Off-Site Buzz

There is a third kind of audience to a blog's content, besides on-site traffic and subscribers. It is the off-site viewing of the content as picked up by social bookmarking sites like del.icio.us, Digg, etc. I do not know at this point whether it is possible, and how, to track the many off-site audiences in a centralized and/or automated way. What I can do though is to provide courtesy bookmark buttons directly in the blog posts and apply the onClick trick to them so I can count how many times visitors have bookmarked them and thus have some idea about the off-site buzz of individual posts.

Creating these buttons was fairly similar to creating the subscribe buttons for the online feed readers. With three exceptions. First, some sites (like Yahoo! Buzz) give you Javascript code instead of plain HTML which may not be practical if you intended to add your own Javascript --in my case, I'm instrumenting the outbound link with an onClick action-- so I had to decode the Javascript to locate the image and subscribe URLs, and reconstruct HTML code. Second, I needed very small icons (16x16) because these bookmark buttons would follow each blog post. I used the following trick if a site was not offering such an icon; I grabbed the website's favicon.ico which you typically access at http://hostname/favicon.ico. Third, the bookmark URL typically requires as parameters the permalink and title of the blog post. And they change for every blog post! I use the Roller variables $url.entry($entry.anchor) and $entry.title which you URL-encode through $utils.encode(). Finally, this is the code that I added to the bottom of the entry-footer in my _day Roller template:

           | <a href="http://del.icio.us/post?url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/delicious');" title="post to del.icio.us"><img src="http://static.delicious.com/img/delicious.gif" width=16 height=16 /></a>
           | <a href="http://digg.com/submit?phase=2&amp;url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/digg');" title="Digg it!"><img src="http://digg.com/img/badges/16x16-digg-guy.png" /></a>
           | <a href="http://slashdot.org/bookmark.pl?url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/slashdot');" title="submit to Slashdot"><img src="http://images.slashdot.org/favicon.ico" width=16 height=16 /></a>
           | <a href="http://reddit.com/submit?url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/reddit');" title="submit to reddit"><img src="http://www.reddit.com/static/spreddit5.gif" alt="reddit" /></a>
           | <a href="http://co.mments.com/track?url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/comments');" title="track in co.mments"><img src="http://co.mments.com/images/track.gif" /></a>
           | <a href="http://www.stumbleupon.com/submit?url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/stumbleupon');" title="submit to StumbleUpon"><img src="http://cdn.stumble-upon.com/images/16x16_su_solid.gif" alt="stumbleupon" /></a>
           | <a href="http://www.furl.net/storeIt.jsp?u=$url.entry($entry.anchor)&amp;t=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/furl');" title="store in Furl"><img src="http://www.furl.net/images/logo-favicon.ico" /></a>
           | <a href="http://ma.gnolia.com/bookmarklet/add?url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/magnolia');" title="add to Ma.gnolia"><img src="http://ma.gnolia.com/favicon.ico" /></a>
           | <a href="http://buzz.yahoo.com/article/pub/$url.entry($entry.anchor)" onClick="javascript: pageTracker._trackPageview('/social/yahoobuzz');" title="vote on Yahoo!Buzz"><img src="http://buzz.yahoo.com/img/badge-logo.png" /></a>
           | <a href="http://www.facebook.com/sharer.php?u=$url.entry($entry.anchor)&amp;t=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/facebook');" title="share on Facebook"><img src="http://www.facebook.com/favicon.ico" /></a>
           | <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=$url.entry($entry.anchor)&amp;title=$utils.encode($entry.title)" onClick="javascript: pageTracker._trackPageview('/social/linkedin');" title="share on LinkedIn"><img src="http://www.linkedin.com/favicon.ico" /></a>

Among the off-site buzz the blog, one is of particular interest. It is the references other bloggers make to your blog, giving you visibility/access to their own audience. I use Technorati to track blog citations a.k.a. authority. For it, I had to register on the site and claim Openomics as my blog. Of course, I added a Technorati button to make it visible that this blog was claimed there and give a chance to people to add it as a favorite blog of theirs. Here's a snapshot of how Openomics stands on Technorati today. There is a long way to go to celebrity...

Concluding Remarks

Am I getting too serious about web analytics? On one hand, I am guessing/hoping that, as I learn more, I will settle on a more lightweight analytics infrastructure --running analytics from 3+ sites and tracking down to every single link do seem like an overkill. On the other hand, I cannot imagine blogging without doing a minimum of tracking. Many of us at ISV Engineering blog as an extension to our technology-adoption function at Sun, so we must seek to know how successful we are at conveying the value proposition of Sun technologies and at harnessing the Web to drive technology adoption. That is, in Google Analytics terms, how effective the blog is in the goal conversion of OpenSolaris downloads e.g. I'm lucky I have an onClick action on that link! ;-)


How open innovation and technology adoption translates to business value, with stories from our developer support work at Oracle's ISV Engineering.



« April 2014