-
Bill Vass, President and COO of Sun Federal, discusses the use of Sun’s Open Source software stack in the CONNECT system, part of the Nationwide Health Information Network (NHIN). Connect is the information highway for health data exchange in the US; and similar to the UK’s NHS Data SPINE, which uses many of the same technologies from Sun.
2009 Turing Lecture “Information Engineering and its Future” This Week
One of the highlights of the UK technology calendar, the jointly hosted BCS and IET Turing Lecture, takes place over the coming week. Sir Michael Brady FRS FEng, BP Professor of Information Engineering, Keeble College, University of Oxford, will be presenting his lecture “Information Engineering and it’s future”. Summarising his knowledge in the areas of mobile robotics, computer vision, signal processing, medical image analysis and artificial intelligence, Professor Sir Brady will then examine what information engineering really means and the possibilities for the future of the field.
More on the lecture here: http://www.bcs.org/server.php?show=nav.5826
And for specific locations and dates:
- London – Tuesday the 27th of January 2009
http://www.bcs.org/server.php?show=ConWebDoc.23103 - Cardiff – Thursday the 29th of January 2009
http://www.bcs.org/server.php?show=ConWebDoc.23104 - Manchester – Tuesday the 3rd of February 2009
http://www.bcs.org/server.php?show=ConWebDoc.23105
A summary of last year’s lecture “Target Earth” by Dr James Martin, along with links to video and audio recordings for all of the Turing lectures since 2004 can be found here: https://horkan.com/2008/05/27/james-martin-turing-lecture-2008
I’m hoping to get along to tomorrows lecture at the IET Head Office, at Savoy Place, so expect a write up to follow.
links for 2009-01-25
BBC NEWS | Technology | White House plans open government Searching for data about the Obama administration should get easier as the Whitehouse.gov website gets overhauled. …..
links for 2009-01-24
Apple bucks trend with record results – The Inquirer – Are you paying the Apple fashion tax? …..
links for 2009-01-23
-
Great to see amazing new businesses like Doodle implementing over Sun technology; Doodle is a free, online, co-ordination and facilitation tool which makes it easy to find a date and time for a group event (even better it doesn’t require registration or any software installation either).
links for 2009-01-22
-
Bryan Cantrill gives a quick review of Dave Hitz’s new book “How to Castrate a Bull” and makes comparisons with NetApp’s original differentiators from Sun in 1992 and Sun’s differentiators from NetApps right now that have directly led to the Sun Storage 7000 series that is trouncing NetApps in the marketplace.
links for 2009-01-21
-
Scott McNealy interviewed by the BBC revealing he has been asked to prepare a paper on the subject of Open Source and it’s use in Government by the newly inaugurated Barack Obama Administration. Great recognition for Sun who are at the heart of Open Source and has positive ramifications across the board of all Industries and not simply the US Government.
Make Google notice your Blog
Posted this in response to an internal email titled “What makes Google notice a blog?”, it’s pretty universal and applicable to most search engines so I thought I’d share it as a blog article.
Here’s a few suggestions, hope they help. Wayne.
1) You may want to write your blog in a manner which is spider, as well as human, friendly.
Include meta-data and micro-format information, such as tags; don’t forget that key words in headers will increase the ‘value’ of that key word (for many search engines); always make sure that “SCRIPT” HTML segments are followed by “NOSCRIPT” segments (most spiders don’t “do” JavaScript, specifically Google’s; lean web page code that is easy for spiders to ‘consume’.
Re: Tags / Meta-Data / Micro-Formats – I use the Operator plug in / add on for Firefox, this informs the user about semantic data embedded in a viewed web page.
Re: Keyword Analysis – I use the SeoQuake plug in / add on for Firefox, which allows me to do dynamic keyword (and related key word) analysis.
Here’s an article I wrote on Tag format standardization, I recommend that you standardize on a Tag format that is Search engine friendly: ‘Tic, Tag, Toe‘. Don’t over tag nor under tag, but try and match your articles tags with other similar articles, try and join in with the subject matter’s folksonomy if at all possible (i.e. the tags people are using when talking about that subject matter, technorati and delicious are both good examples).
As well as embedding all the tags for all of the articles on the front page (have a look in Operator if you decide to use it or another semantic data ‘explorer’) I also embed tags to major blog directories and social bookmarking sites on the individual page for each entry, here’s an article which demonstrates this: ‘Roller Weblogger blog post tag link code for blogs.sun.com, technorati and del.icio.us‘. I’ve superseded this code now, with a nicer layout and having added more blog directories / social bookmarking sites, you can see the example at the end of the page for any given blog article I’ve written, give me a shout if you’d like the newer code.
2) Google’s PageRank algorithms work on links, inbound, outbound, number, and the PageRank of those inbound and outbound links.
Link to sources, get inbound links from sources / reciprocal links if possible.
Don’t forget to trackback articles that you reference, if the trackback fails try leaving a comment with a link to the article that references it.
3) Make sure you let sites such as Google know you’ve updated your site and that you’d like it re-“spider”ed, indexed and advertised.
This is done by “blog pinging” search engines and blog directories so that they are informed that your site has been updated and to send over there spiders when they get chance (most search engines / blog directories want to do this quite quickly as they want to be first with any potentially newsworthy content that draws traffic).
Personally I wanted a more granular level of control over this than offered with the standard blog ping functionality embedded in roller and so I wrote my own stand alone version: ‘Free XML-RPC blog ping site submitter: “Blog Ping”‘.
4) Other things to consider…
PageRank of your site and individual pages; how well does your article compete with articles of a similar nature.
Have pages been bookmarked in del.ici.ous, technorati, etc., i.e. are they being shared.
P.S. This article doesn’t mention quality of written articles, cadence of posts, timeliness of posts to current events, etc., as it focuses purely on the current electronic mechanisms for getting noticed by a search engine like Google and not the related, but extremely important, human and social element that gains you readership.
links for 2009-01-16
Witness Interview(s) – The Banking Crisis – HoC Treasury Committee – www.parliamentlive.tv Treasury select committee told that the government’s top priority should be to restore the flow of credit through the economy whilst giving evidence on the banking crisis this week. …..
links for 2009-01-14
BBC NEWS | World | Europe | Czech EU art stokes controversy The latest art installation on display at the European Council building in Brussels has angered EU members with its lampoons of national stereotypes. …..
links for 2009-01-13
Web 2.0 or Blah 2.0? …..
links for 2009-01-12
-
Timely article on Application Modernization, probably the no.1 issue needing to be addressed across Enterprises, which often gets less focus and funding then it actually requires.
-
A good mix of articles, case studies and interviews.
Cloud Relationship Model
This article was originally a guest post I did recently for Stewart Townsend over at Sun Startup Essentials describing the cloud relationship model I had developed as an artefact when discussing cloud computing.
I wanted a simply model which I could share with people and use as a discussion point, whilst still capturing the major areas of cloud computing which I considered most pertinent. I developed this model about six months ago and have since found it useful when talking with people about cloud computing.
Here’s the model and I’ll go though it’s major elements below.
Major Cloud Communities
In the cloud there are three major participants:
- the
Cloud Providers; building out Clouds, for instance Google, Amazon, etc. Effectively technology providers. - the
Cloud Adopters / Developers; those developing
services over the Cloud and some becoming the first generation of Cloud ISVs. I have included Cloud “Service” developers and Cloud ISV developers together. This group are effectively service enablers. - Cloud
“End” Users; those using Cloud
provisioned services, often without knowing that they are cloud provisioned, the most obvious example of which are the multitude of Facebook users who have no idea there favorite FB app. is running on AWS. These are the service consumers.
I think it’s important to talk about these communities because I keep hearing lots about the Cloud Providers, and even more about the issues and ‘needs’ of the Cloud adopters / developers, but very little in terms of Cloud “End” Users. In a computing eco-system such as this where “services” are supported by and transverse technology providers, service enablers and service consumers an end to end understanding of how this affects these reliant communities is required. Obvious issues such as SLAs for end users and businesses which rely upon high availability and high uptime from there cloud providers come to mind; however other “ilities” and systemic qualities come to mind such as security, and that’s before looking at any detailed breakdown of functional services.
The point here is that the cloud adopters / developers and interestingly the cloud “watchers” (i.e. the press, media, bloggers and experts) would be mindful to remember the needs and requirements of genuine end users; for myself it’d certainly be invigorating to hear more on this topic area.
Billing / Engagement Models
Simon Wardley, a much more eloquent public speaker than myself, does a wonderful pitch which includes a look at the different “as a Service types” which he boils down to being a load of “*aaS” (very amusing, and informative, try and catch Simon presenting if you can).
I wholeheartedly agree that there is a large amount of befuddlement when it comes to the differing “*aaS” types and sub-types, and new ones are springing up relatively frequently, however I also think it’s important to not ignore the differences between them.
For me, and many others, I think first popularised by the “Partly Cloudy – Blue-Sky Thinking About Cloud Computing” white paper from the 451 Group, the differing “*aaS” variants are identified as billing and engagement models. That white paper also postulates the five major Cloud Computing provider models, into which the majority of minor “*aaS” variants fall. They are:
- Managed Service Provision (MSP); not only are you hiring your service from the cloud, you’ve someone to run and maintain it too.
- Software as a Service (SaaS); pretty much ubiquitous as a term and usually typified by Salesforce.com, who are the SaaS poster child.
- Platform as a Service (PaaS); the application platform most commonly associated with Amazon Web Services.
- Infrastructure as a Service (IaaS);
- Hosting 2.0
One of the best breakdowns and visual analysis of this space is the model in Peter Laird’s “Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry” article which is well worth a read.
Major Architectural Layers
Also included in the diagram are the major architectural layers that are included in each of the above billing / engagement models offered by the Cloud providers. They are:
- Operations; and this really is operations supporting functional business processes, rather than supporting the technology itself.
- Service layer; made up of application code, bespoke code, high-level ISV offerings.
- Platform layer; made up of standard platform software i.e. app. servers, DB servers, web servers, etc., and an example implementation would be a LAMP stack.
- Infrastructure layer; made up of (i) infrastructure software (i.e.virtualisation and OS software), (ii) the hardware platform and server infrastructure, and (iii) the storage platform.
- Network layer; made up of routers, firewalls, gateways, and other network technology.
This rather oversimplifies the architecture, as it’s important to note that each of the cloud billing / engagement models use capabilities from each of the above architectural layers; for instance their can be a lot of service simply in managing a network, however these describe the major architectural components (which support the service being procured), not simply ancillary functions, effectively what are the cloud providers customers principally paying for.
Delta of Effort / Delta of Opportunity
This is much more than the ‘gap’ between the cloud providers and the cloud users, wherein the cloud adopters / developers sit, the gap between the cloud providers and the end cloud users can be called the delta of effort, but also the delta of opportunity.
It is the delta of effort in terms of skills, abilities, experience and technology that the cloud adopter needs to deliver a functional service to their own “End Users”. This will be potentially a major area of cost to the cloud adopters. But it’s also the delta of opportunity;in terms of ‘room’ to innovate.
The more capability procured from the cloud provider (i.e. higher up the stack as a whole), the less you have to do (and procure) yourself. However the less procured from the cloud provider the more opportunity you have engineer a differentiating technology stack yourself. This itself has it’s disadvantages because the cloud adopters / developers could potentially not realise the true and best value of their cloud providers infrastructure.
I suspect that there is an optimum level, around the Platform Layer, which abstracts enough complexity away (i.e. you don’t have to procure servers, networks, implementation or technology operations staff), but also leaves enough room to innovate and produce software engineered value. Arguably the only current successful cloud provider, based upon market share, perception, revenue and customer take up, is Amazon Web Services (AWS) who provide a PaaS offering.
Summary
Hope you enjoyed the article, in summary if developing cloud services or even building out a cloud infrastructure I would recommend that you focus on your users and if your a cloud provider, your users’ users; remembering that only a certain percentage of those users will be customers (I won’t getting into discussing Chris Anderson’s 5% recommended conversion rate for the long tail, however I would recommend understanding what some of those calculations might be).
If you’re looking to develop services over the cloud, think carefully about where you and your teams skills lie, and where would you most want them focusing there efforts; working on installing and tuning operating systems and application platforms or writing business value focused applications and services, before choosing at which level to engage with your cloud provider(s).
I haven’t mentioned enterprise adoption of cloud based services, and
that’s because I’d like to post that in the near future in a different
article.
Hope you enjoyed the article and all the best,
Sun joins the BCS Group Membership Scheme
Sun recently joined the BCS Group Membership Scheme and the BCS kindly produced a press release to accompany the occasion: “Sun Microsystems signs up for BCS Group Membership Scheme“.
I’m very glad that we’ve joined the scheme, for a number of reasons, primarily because it’s a great opportunity for staff enrichment and career enhancement. We’ve already had a number of individuals go forward for Charted IT Professional (CITP); interest and take up has been extremely good too.
Having spent sixteen years in the IT industry I feel that is important that we, as an industry, are promoted and represented by strong industry bodies, and reciprocally that we support them in turn; and personally I am a keen supporter of the “Professionalism in IT” agenda.
The press release has been getting some good exposure and has been picked up by PublicTechnology.net, TMCnet, Computerworld UK, M2, and even got a mention at the Parliamentary IT Commission (PITCOM) website.
There may well be more now if you Google about it.
If you have any questions you’d like to ask me about the scheme, whether your from Sun or another organisation, your welcome to get in touch.
- Recovered link: https://horkan.com/2009/01/10/sun-microsystems-bcs-group-membership
- Archived link: https://web.archive.org/web/20100713052735/http://blogs.sun.com/eclectic/entry/sun_microsystems_bcs_group_membership
- Original link:
http://blogs.sun.com/eclectic/entry/sun_microsystems_bcs_group_membership
Being a SEED mentor…
If you ever read Katy Dickinson’s blog you’ll know she manages the Sun Engineering Enrichment & Development (SEED) mentorship program.
According to the SEED website:
SEED is Sun Engineering’s world wide employee mentoring program. SEED program participants are expected to rise to the top of Sun Engineering’s individual contributor or management ranks. Greg Papadopoulos (Chief Technology Officer and Executive Vice President of Research and Development) is SEED’s executive sponsor.
I hadn’t been involved in the program previously at all, although the last two rounds I’ve considered joining the program to enjoy the experience of being mentored, however I was surprised, and flattered, to find that someone had requested that I should be their mentor this round.
And so I find that I’ve been chosen as a SEED mentor and after an introductory conversation (lasting the good part of an hour and a few emails) we’ve jointly decided that it is a good match and to go forward.
Not having been a SEED mentor before I’m hoping to learn lots more about the program and that as well as being an effective mentor I also improve as a mentor too.
The person who asked that I be their mentor specifically wants to focus on ‘Architecture’; something I’m more then happy to do, especially when it comes to genuine, real-world and implementable systems.
My ideal achievement would be improving the awareness, knowledge and experience of architecture of the person I’m mentoring; I aim to produce a body of ‘architecture’ training material which can be used to rapidly ‘onboard’ people to ‘architecture’ from experience of having been a mentor.
I’m going to try and keep an informal diary of my experiences during my time as a SEED mentor looking at ‘architecture’ and will share my experiences of the SEED programme on this blog as well.
Links for this article:
links for 2009-01-08
http://archive.org/wayback/available?url=http://blogs.sun.com/eclectic/entry/links_for_2009_01_08
Links for this article:
- Recovered link: https://horkan.com/2009/01/08/links-for-2009-01-08
- Archived link:
- Original link: http://blogs.sun.com/eclectic/entry/links_for_2009_01_08
links for 2009-01-07
http://archive.org/wayback/available?url=http://blogs.sun.com/eclectic/entry/links_for_2009_01_07
Links for this article:
- Recovered link: https://horkan.com/2009/01/07/links-for-2009-01-07
- Archived link:
- Original link: http://blogs.sun.com/eclectic/entry/links_for_2009_01_07
links for 2009-01-06
http://archive.org/wayback/available?url=http://blogs.sun.com/eclectic/entry/links_for_2009_01_06
Links for this article:
- Recovered link: https://horkan.com/2009/01/06/links-for-2009-01-06
- Archived link:
- Original link: http://blogs.sun.com/eclectic/entry/links_for_2009_01_06
Roller Weblogger Related Entries and Blog Post code
Do you have lots of blog postings, possibly over a number of years? And do you suspect that despite embedding search and tag clouds into your blog that your readers are still not finding content related to that they enjoy? In fact do you have evidence of that very problem from your web analytics data but don’t know what to do about it? Yes? So did I, so I created this roller weblogger code to generate a list of the most related blog entries based upon tag and category relationships.
To show you what I mean, here’s examples for a couple of blog entries:
Messaging Sub-Systems in the UK Government
- 12 matches » UK G2G revisited
- 12 matches » Evolution of UK Government Messaging Systems
- 12 matches » UK Government G2G Messaging Sub-Systems
- 11 matches » Comparison of Major Messaging Sub-Systems in the UK Government
and
The way this works is that for any given individual blog post it attempts to match both category and tags to genuinely find the most related entries (first it cycles though entries related by the same category for tag matches, then though an aggregate of all categories for tag matches, and finally, just those related by category alone).
So this has to be my favourite roller weblogger functionality to date; simply because it offers up the most pertinent content to that which the reader is currently looking at, based upon tag affinity, without forcing them to search or link endlessly though tag clouds (which often contain large number of posts that have very little related contextual meaning).
Here’s the code:
## Related Entries
## Cycles through 100 articles of the same category - look for entries with tag matches - order by no. of matches
## Cycles through 20 articles of any category (ignoring the previous category) - look for entries with tag matches - order by no. of matches
## If still not enough items in the menu adds the most recent entries from the same category
#if ($model.permalink)
## number to display (in menu)
#set ($dispFlag = 10)
## Cycles through 100 articles of the same category
#set ($cycleEntriesTotal = 100)
## Go through same category first - should get most hits
#set ($cycleEntries = $model.weblog.getRecentWeblogEntries($model.weblogEntry.category.name, $cycleEntriesTotal))
## Set up other variables
#set ($theseTags = $entry.tags)
#set ($sawEntries = [] )
#set ($sawCount = [] )
#foreach ($cycleEntry in $cycleEntries)
#if (($entry.title != $cycleEntry.title) && ($model.weblogEntry.locale == $cycleEntry.locale))
#set ($matchBun = 1)
#set ($bunTags = $cycleEntry.tags)
#foreach ($thisTag in $theseTags)
#foreach ($bunTag in $bunTags)
#if ($thisTag.name == $bunTag.name)
#set ($matchBun = $matchBun + 1)
#end
#end
#end
#if ($matchBun >= 2)
#set ($bunEntry = $cycleEntry)
#set ($entryCounter = 0)
#set ($bunFlag = 0)
#foreach ($sawNum in $sawCount)
#if (($matchBun > $sawNum) || (($bunFlag == 1) && ($matchBun == $sawNum)))
#if ($bunFlag == 0)
#set ($bunFlag = 1)
#end
#set ($bunEntry = $sawEntries.set($entryCounter, $bunEntry))
#set ($matchBun = $sawCount.set($entryCounter, $matchBun))
#end
#set ($entryCounter = $entryCounter + 1)
#end
#if ($entryCounter <= $dispFlag)
#if ($sawEntries.add($bunEntry))
#end
#if ($sawCount.add($matchBun))
#end
#end
#end
#end
#end
## Cycles through 20 articles of any category (ignoring the previous category)
#set ($cycleEntriesTotal = 20)
## Go through all categories next - should get fewer hits
#set ($cycleEntries = $model.weblog.getRecentWeblogEntries("", $cycleEntriesTotal))
## Reset other variables
#set ($theseTags = $entry.tags)
#foreach ($cycleEntry in $cycleEntries)
#if (($entry.title != $cycleEntry.title) && ($entry.category.name != $cycleEntry.category.name) && ($model.weblogEntry.locale == $cycleEntry.locale))
#set ($matchBun = 0)
#set ($bunTags = $cycleEntry.tags)
#foreach ($thisTag in $theseTags)
#foreach ($bunTag in $bunTags)
#if ($thisTag.name == $bunTag.name)
#set ($matchBun = $matchBun + 1)
#end
#end
#end
#if ($matchBun >= 1)
#set ($bunEntry = $cycleEntry)
#set ($entryCounter = 0)
#set ($bunFlag = 0)
#foreach ($sawNum in $sawCount)
#if (($matchBun > $sawNum) || (($bunFlag == 1) && ($matchBun == $sawNum)))
#if ($bunFlag == 0)
#set ($bunFlag = 1)
#end
#set ($bunEntry = $sawEntries.set($entryCounter, $bunEntry))
#set ($matchBun = $sawCount.set($entryCounter, $matchBun))
#end
#set ($entryCounter = $entryCounter + 1)
#end
#if ($entryCounter <= $dispFlag)
#if ($sawEntries.add($bunEntry))
#end
#if ($sawCount.add($matchBun))
#end
#end
#end
#end
#end
<ul class="rEntriesList">
## Set up count variables
#set ($noneFlag = 0)
#set ($entryCounter = 0)
## Output related entries
#foreach ($sawEntry in $sawEntries)
#if ($noneFlag &lt; $dispFlag)
#set ($noneFlag = $noneFlag + 1)
#set ($matchBun = $sawCount.get($entryCounter))
<li class="recentposts"><a href="$url.entry($sawEntry.anchor)" title="relationships: $matchBun" name="$utils.encode($sawEntry.anchor)" id="$utils.encode($sawEntry.anchor)">» $sawEntry.title</a></li>
#end
#set ($entryCounter = $entryCounter + 1)
#end
## If still not enough items in the menu adds the most recent entries from the same category
#if ($noneFlag &lt; $dispFlag)
## Cycle though the number to be displayed (plus one including the 'calling' entry itself)
#set ($cycleEntriesTotal = ($dispFlag + 1))
## Reset variables
#set ($cycleEntries = $model.weblog.getRecentWeblogEntries($model.weblogEntry.category.name, $cycleEntriesTotal))
## Cycle though the number to be displayed (plus one including the 'calling' entry itself)
#foreach ($cycleEntry in $cycleEntries)
#set ($addFlag = 0)
#foreach ($sawEntry in $sawEntries)
#if ($sawEntry.title == $cycleEntry.title)
#set ($addFlag = 1)
#end
#end
#if ($addFlag == 0)
#if ($noneFlag &lt; $dispFlag)
#if (($entry.title != $cycleEntry.title) &amp;&amp; ($model.weblogEntry.locale == $cycleEntry.locale))
#set ($noneFlag = $noneFlag + 1)
<li class="recentposts"><a href="$url.entry($cycleEntry.anchor)" title="relationships: 1" name="$utils.encode($cycleEntry.anchor)" id="$utils.encode($cycleEntry.anchor)">» $cycleEntry.title</a></li>
#end
#end
#end
#end
#end
</ul>
#end
After writing this article I got a mention by Dave Johnson, which inspired me to change the code based on his comments so it only grabs the last 100 entries of the same category and then the last 20 entries of the other categories to analyse. Obviously you can change this by editing #set ($cycleEntriesTotal = 100) to whatever you feel appropriate.
I’ve also removed all redundant variables, fixed a bug due to non-allocation of variables, and changed the sort code so that it keeps date and time based precedence (so entries with the same number of matches will remain in date and time sequence).
Rather than repost another article I’ve retconned the code example into this article; the code displayed is the newer, healthier code; the old code is still there, but hidden in a non-displayed “div” code block at the end (just after this text in fact).
Links for this article:
- Recovered link: https://horkan.com/2009/01/06/roller-weblogger-related-entries-macro
- Archived link: http://web.archive.org/web/20090416190747/http://blogs.sun.com:80/eclectic/entry/roller_weblogger_related_entries_macro
- Original link: http://blogs.sun.com/eclectic/entry/roller_weblogger_related_entries_macro
Roller Weblogger alternative Next Previous function
Another one of the standard roller weblogger functions I replaced: the next / previous function. Basically I just wanted this to be a little more informative, and host it as a menu list in the sidebar.
Here’s a couple of examples:
- » Reading the main site
- » From Roller Weblogger Related Entries and Blog Post code
- » To: links for 2008-11-26
- » Forward: Next page
and
- » Reading Integrating Disqus and Roller Weblogger on blogs.sun.com
- » Backward: links for 2008-09-06
- » Forward: Setting up del.icio….
- » Return to main site.
And here’s the code (don’t forget to change the blog handle from ‘eclectic’):
<ul class="rEntriesList">
#if ($model.results)
<li class="recentposts">» Currently viewing search results... </li>
#else
#if($model.permalink)
<li class="recentposts">» Reading <a href="$url.entry($model.weblogEntry.anchor)">$model.weblogEntry.title</a> </li>
#if ($pager.prevLink)
<li class="recentposts">» Backward: <a href="$pager.prevLink">$pager.prevName</a> </li>
#end
#if ($pager.prevCollectionLink)
<li class="recentposts">» Backward: <a href="$pager.prevCollectionLink">$pager.prevCollectionName</a> </li>
#end
#if ($pager.nextLink)
<li class="recentposts">» Forward: <a href="$pager.nextLink">$pager.nextName</a> </li>
#end
#if ($pager.nextCollectionLink)
<li class="recentposts">» Forward: <a href="$pager.nextCollectionLink">$pager.nextCollectionName</a> </li>
#end
<li class="recentposts">» Return to <a href="http://web.archive.org/web/20090416190738/http://blogs.sun.com/eclectic/">main site</a>. </li>
#elseif($model.weblogCategory)
<li class="recentposts">» Reading entries related to the "<a href="$url.entry($model.weblogCategory.anchor)">$model.weblogCategory.name</a>" category </li>
<li class="recentposts">» From <a href="$url.entry($entryFirst.anchor)">$entryFirst.title</a> </li>
<li class="recentposts">» To: <a href="$url.entry($entryLast.anchor)">$entryLast.title</a> </li>
#if ($pager.prevLink)
<li class="recentposts">» Backward: <a href="$pager.prevLink">$pager.prevName</a> </li>
#end
#if ($pager.prevCollectionLink)
<li class="recentposts">» Backward: <a href="$pager.prevCollectionLink">$pager.prevCollectionName</a> </li>
#end
#if ($pager.nextLink)
<li class="recentposts">» Forward: <a href="$pager.nextLink">$pager.nextName</a> </li>
#end
#if ($pager.nextCollectionLink)
<li class="recentposts">» Forward: <a href="$pager.nextCollectionLink">$pager.nextCollectionName</a> </li>
#end
<li class="recentposts">» Return to <a href="http://web.archive.org/web/20090416190738/http://blogs.sun.com/eclectic/">main site</a>. </li>
#else
<li class="recentposts">» Reading the <a href="http://web.archive.org/web/20090416190738/http://blogs.sun.com/eclectic/">main</a> site </li>
<li class="recentposts">» From <a href="$url.entry($entryFirst.anchor)">$entryFirst.title</a> </li>
<li class="recentposts">» To: <a href="$url.entry($entryLast.anchor)">$entryLast.title</a> </li>
#if ($pager.prevLink)
<li class="recentposts">» Backward: <a href="$pager.prevLink">$pager.prevName</a> </li>
#end
#if ($pager.prevCollectionLink)
<li class="recentposts">» Backward: <a href="$pager.prevCollectionLink">$pager.prevCollectionName</a> </li>
#end
#if ($pager.nextLink)
<li class="recentposts">» Forward: <a href="$pager.nextLink">$pager.nextName</a> </li>
#end
#if ($pager.nextCollectionLink)
<li class="recentposts">» Forward: <a href="$pager.nextCollectionLink">$pager.nextCollectionName</a> </li>
#end
#end
#end
</ul>
Links for this article:
- Recovered link: https://horkan.com/2009/01/06/roller-weblogger-next-previous-macro
- Archived link: http://web.archive.org/web/20090416190738/http://blogs.sun.com:80/eclectic/entry/roller_weblogger_next_previous_macro
- Original link: http://blogs.sun.com/eclectic/entry/roller_weblogger_next_previous_macro