Andrej Tozon's blog

In the Attic

NAVIGATION - SEARCH

SLODUG/CodeZone-SI web portal on Community Server 2.0

A revamped Slovenian Developers User Group (SLODUG) community web portal was introduced on today's SLODUG meeting. I'm really sorry I missed that introduction, but the traffic was really a b***h today. Thanks to Miha for introducing it for me.

The new site is built on Community Server 2.0 and is located on this address. Since this site is a member of international CodeZone community, I tried to design a Community Server skin, which would capture that CodeZone's green-on-black look - check it out! The final skin and Slovenian translation of all necessary resources should be ready within one month after the final CS 2.0 release, which is scheduled for February, 20th. That means that transition to the new SLODUG/CodeZone-SI portal will be finalized by the end of the March 2006. During this time, while browsing through site's content, you might encounter some skin inconsistencies and untranslated content. Please, feel free to report that or post any comment / wish / suggestion / question about the CodeZone-SI site content on my blog or appropriate CodeZone-SI forum. Any new content, created  on the new site in the transition period, will not be deleted and will remain available after transition is finished. The old site can no longer be accessed. [will remain functional on its current address for a limited time, but we don't guarantee that any new content will be transferred to the new portal. However, any new users will be migrated.]

There were 243 users registered with the old portal and all of them were transferred to the new one. Please review and complete your online profiles.

About the content... currently available are:

  • new forums, the main meeting place for discussions,
  • photo gallery, containing photos from (future) SLODUG meetings,
  • file gallery, containing PowerPoint presentation and sample/demo code from SLODUG meetings,
  • external source aggregation, aggregated Slovenian developer blogs

We'll try to add more features in the future.

Enjoy your stay on SLODUG/CodeZone-SI community portal!

OpenSearch providers

Although at first I decided against installing Internet Explorer 7 Beta 2 Preview, I later changed my mind, mainly because I wanted to test this one new feature – (Open)Search Discovery.

Finding (relevant) information on the internet quickly is becoming a serious issue these days, and the quality of search results is crucial for the web search engines to be competitive. Everyone has his or her favorite web search engine and not all search engines return the same results to the same query. And how about specialized search engines, like forums, newsgroups or blogs search engine, a company CMS search engine? Ability to quickly switch among such search engines and narrow your search scope in the very root might just yield that exact results you were after.

IE7 introduced such switching by including OpenSearch support. OpenSearch is a collection of Xml files, some of which extend existing Xml formats, allowing OpenSearch clients to query any OpenSearch-compatible search engine and display the results. So... how does this work?

AutoDiscovery

When you navigate to a web page, which advertises one or more OpenSearch providers, the color of the search box in browser's top-right corner changes from blue to orange, alerting user that there are new search providers available.


Picture 1: Highlighted drop down arrow

Clicking on a down arrow opens up a menu, which informs you of discovered search providers. You can easily select and/or add these providers to your favorite search providers, select default provider, etc.


Picture 2: Drop down menu with Search options


Picture 3: Adding discovered search provider and making it a default one

After adding selected search provider, it is installed in your browser and ready for your queries… It’s really that simple.


Picture 4: Using new default search provider

How does it work?

The trick is in the OpenSearch description file: first, write a simple Xml file, describing how to use your search engine:

<?xml version="1.0"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Anthology search</ShortName>
  <Description>Search through Anthology</Description>
  <Tags>Anthology CMF</Tags>
  <Contact>info@anthology.si</Contact>
  <Url type="application/rss+xml" 
       template="
http://www.anthology-on.net/
       opensearch.ashx?q={searchTerms}&amp;p={startPage}" />
  <LongName>Anthology search provider</LongName>
</OpenSearchDescription>

Save this file in your web site folder and make it discoverable by putting the following line in the <head></head> section of your main web page and you're done:

<link type="application/opensearchdescription+xml" rel="search" href="opensearch-description.xml">

Writing your own search provider

Look at the Url tag in the above OpenSearch description file. There is a template attribute, which points to your search engine Url address and contains some parameters, which are substituted with actual values before the client calls the search engine. These parameters include:

  • searchTerms: actual text user inputs as a search query,
  • count: number of search results to return,
  • startPage: if count defines the number on one page, this is the number of the page to retrieve (e.g., count=10, startPage=3 : returns search results numbered from 31 to 40). 

Your search engine should of course handle these input values as expected, and, after done processing the query, return the results in the OpenSearch Response formatted file. The OpenSearch Response format is an extension of RSS 2.0 or Atom 1.0 syndication formats, so if you already have some means to generate RSS or Atom files, a few modifications to that file will make your feeds OpenSearch compatible. This is an example of such modification:

<rss version="2.0" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">
<channel>
  <title>Search Results</title> 
  <link>http://www.anthology-on.net</link> 
  <description>OpenSearch Anthology Sample</description> 
  <openSearch:startIndex>1</openSearch:startIndex> 
  <openSearch:itemsPerPage>50</openSearch:itemsPerPage> 
  <openSearch:totalResults>272</openSearch:totalResults> 
  <generator>Anthology CMF</generator> 
  <lastBuildDate>Sat, 11 Feb 2006 17:48:26 GMT</lastBuildDate> 
  <item>

...

OpenSearch Homepage offers current OpenSearch specifications, along with additional tips and samples on how to work on its implementation.

Anthology search provider, used in the above example, plays a significant part in the Anthology CMF by allowing third-party search engines to access its documents by using standardized search and aggregating mechanisms. This is the first time I’m mentioning Anthology in this blog: I’ll start writing a series of articles on it soon, so stay tuned! That said – the Url address of Anthology search provider, used in the example, is for demonstration purposes only – it doesn't point to a valid address.

Source Fource

Have you met the family of MSDN's superheroes yet? Check out their webpage and join their fight to increase your knowledge through Webcasts and Virtual labs. Their latest adventures are even being captured in a videogame called The adventures of Source Fource. This game requires the DirectX End-User Runtime (dec. 2005) to be installed on your machine, but otherwise installs using ClickOnce deployment! The game runs smooth, features a cool soundtrack, and you get to play with the source code.

On a side note: Brad Adams writes about yet another superhero - Mr. Infinity, along with "the other" .NET Framework v2.0 poster.

A Plog?

Visiting amazon.com today I was greeted by a new feature Amazon is introducing to their customers, called personalized blog - a Plog:

["Your Amazon.com Plog is a personalized web log that appears on your customer home page. Every person's Plog is different (hence the name), and the posts are sorted so the most recent entries appear at the top. Each post also gives you the opportunity to provide feedback to the sender as to whether you liked the post or not. ... Posts in your Plog come from many sources, including authors of books you have purchased on Amazon.com. ... In the future, your Plog also will help you discover products that have just been released, track changes to your orders and much more."]

It really looks like a feed aggregator, aggregating posts from, let's say, book authors, which you searched for, bought their books or are somehow connected with your interests you expressed on Amazon. You also have the option of commenting and rating the posts [like/don't like] to give some feedback to the author. This could really develop in a nice feature for book readers to stay in touch with the latest activities around the books they purchased [like revision, source code updates, reprints], as well as keep informed about the author's latest works.

Continuous integration on HanselMinutes

Scott Hanselman gives a great overview of Continuous integration tools on this week's HanselMinutes, along with some guidelines on how to make them work together and build yourself a mighty powerful build machine. And if you're not interested in automated builds, at least what you should do is look into TestDriven.NET/NUnit/NCover tripack to help you test your code. TestDriven.NET was recently released with NCover support, giving you even more testing power.

On a side note, in case you missed it :D : IE7 Beta 2 Preview has been released. After working with the first beta, I don't think I'm installing this one. Sure looks cool though.