Wednesday, June 15, 2005
by Nik Kalyani
Wednesday, June 15, 2005 4:43:24 AM (Pacific Standard Time, UTC-08:00)

So I decided to give MSN Desktop Search/Toolbar a whirl yesterday.

After my rather disappointing experience with Google Desktop Search (which I uninstalled within hours of installation), I had fairly low expectations. But so far I completely amazed. Google had better get some of those skunkworks projects into prime-time, because the signs are clear -- Microsoft is going at this search thing with such gusto that it will not take very long for it to catch-up and even pass Googliath. 

The attention to detail in the MSN Desktop Search is unlike any I have seen in Microsoft apps before. From a usability standpoint the U.I. is nearly invisible -- the hallmark of an intuitive and well-designed U.I. I especially like the preview feature on search results where you can see the search word in application context (example: within an Excel spreadsheet).

I'll try the desktop search for a few more days and see how it goes. For web searching, I am still sticking with Google, but I'll keep an eye on MSN. But one thing I am keeping for sure is the IE tabbed browsing.

FireFox has always provided a superior browsing experience in many ways and tabbed browsing was one huge advantage it had over IE. Gone! One thing I never quite figured out in FireFox is how to save the state of the browser when multiple tabs are open so I can restore it the same way. (Of course, if the feature exists and I can't find it, it's not much of a feature anyway). The MSN toolbar does have this feature and it lets me save one set of tabs as "My Tabs" which I can restore at the click of a button. Neat. I also like having the option to open each link I click in a new tab. This is great for search engine results. I had fully expected this to be an all or nothing feature, but was pleasantly surprised to find that it is tab-specific. So on tabs where I have search results displayed, I can have this feature on, and turn it off elsewhere.

Now for a little rant.

With all the hype and money and technology being invested in search by Google, Yahoo and Microsoft, why is it so difficult to find things in context and why are search interfaces still so lame. I don't claim to have a magic solution, but I am certain the keyword approach with control suffix/prefix characters is a crappy interface for search. And don't get me started on boolean logic. As a developer, I see its value, but for the ordinary individual, it is completely unnatural. Much has been said about Google's precision. I conduct maybe 50-70 searches in any given day. It is quite rare that the relevant item I am searching for is on the first page of results (and I have the page size set at 30). So either I am an idiot and can't figure out what keywords to use, or the search technology is still a pile. I suspect that it's the latter, but of course, I can't be objective.

There is a simple solution. Google is currently beta testing its Sitemaps concept. (A good idea which will soon result in bad data. More on this some other time.) A better idea would be for Google to publish the specs for a site search webservice. Say what? Read on...

When you're looking at search results, Google makes relevancy decisions based on its super cool algorithms. One thing I notice quite often is the search results contain page after page of results from the same site. Now, how often is it that you click on one of those results and get exactly the content you are looking for? The answer is "it depends." If it's a content-centric site, then chances are good. But if the result is from a forum post or some dynamically generated page, you have to click around a bit to find the information you need. Often, you end up using the site search (if it has that capability) and then the results are more specific and also have abstracts that are in context. It would be so much simpler if Google took a smarter approach.

Let's say that site www.somesite.com had more than say 20% of the first 50 results. If Google had a published a site search webservice specification, the owners of somesite.com could implement this on their site. When Google detects that one site is responsible for a high number of relevant search results (determined by its own algorithm), it could make a quick call to the site's webservice with the same keyword, and return the result set (maybe top 10-20 results) in a collapsible pane integrated into the general Google result set. There are search engine aggregators that do this for a finite number of engines. Why not do it for the entire Internet, live and on-demand?????

Now, this approach does not address the keyword search approach, which I opined as being flawed. But it will help in making results more precise. Because no matter how well tuned the Google algorithm is, the site's own search is usually going to provide better results than Google's inferred results.

 

#    Comments [1] - Trackback    

 Sunday, June 12, 2005
by Nik Kalyani
Sunday, June 12, 2005 8:54:59 PM (Pacific Standard Time, UTC-08:00)

If you have multiple controls in your ASP.Net, especially third-party ones, which in turn have a dependency on another third-party component, you are in for a world of pain if different controls use different versions of the same third-party component. Since your app has only one "bin" folder where all the assemblies reside, putting one version of the third-party component will break controls that rely on the other version. Luckily, the .Net developers devised some good solutions. Although I would not call this an elegant solution to DLL hell, at least its possible to have a solution that works.

Here are some sample web application scenarios and solutions involving assembly version conflicts, different assembly versions and location of assemblies. This is a small portion of a much larger .Net design involving the GAC etc., but I am not going to delve into that.

1) Placing assemblies outside the bin folder.

Sometimes you have an app with many assemblies and you want to keep them more organized. .Net allows this by providing a way to specify the folders where it should search. Modify your web.config as below:

<configuration>
  <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="bin;somefolder\bin" />
     </assemblyBinding>
  </runtime>
</configuration

You can specify as many folders as necessary in a semi-colon separated list which fusion will use to locate an assembly.

2) Having multiple versions of the same assembly in the same app space.

In this example, two versions of the ThirdParty assembly are placed in numbered sub-folders of bin. Both can co-exist and will work correctly.

<configuration>
        <runtime>
             <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                 <dependentAssembly>
                     <assemblyIdentity name="ThirdParty" publicKeyToken="16dcc87a28w7w7b1" />
                     <codeBase version="1.4.0.0" href="bin\14\ThirdParty.dll" />
                     <codeBase version="1.2.0.0" href="bin\12\ThirdParty.dll" />
                </dependentAssembly>
             </assemblyBinding>  
       </runtime>
</configuration>

3) Redirecting an assembly from an older to a newer version.

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="myAssembly" publicKeyToken="32ab4ba45e0a69a1" culture="neutral" />
            <bindingRedirect oldVersion="1.0.0.0"  newVersion="2.0.0.0"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

You can only use #2 or #3 with strong named assemblies.

 

 Wednesday, June 08, 2005
by Nik Kalyani
Wednesday, June 08, 2005 7:31:19 AM (Pacific Standard Time, UTC-08:00)

It's unlikely anyone noticed, but things have been quiet on the Speerio front the past 7-10 days. Well, it's mostly because I was busy working on the DotNetNuke branding in time for Tech Ed. With milestone one achieved, I can now go back to working on Speerio products and provide more timely support to customers.

#    Comments [1] - Trackback    

 Friday, May 27, 2005
by Nik Kalyani
Friday, May 27, 2005 3:19:54 PM (Pacific Standard Time, UTC-08:00)
Laverne Douglas asks:

I would like to ask some questions about your site and how you implemented some of the features. But to be fair to all your viewers; it would be best answered in your blog. Specifically I would like to now about your store and downloads pages.

The download appears to be your navigator showing hidden pages on your site with roles assigned to allow downloads of items.

The store is unique from my perspective. Is it of your own design?

Nik's answer:

The Downloads page of the site is indeed the Navigator module being dog-fooded prior to release. Basically, Navigator allows you to create a hierarchy of nodes organized into folders. Each folder can either be public or private. If it's public, it is visible on all instances of Navigator on a portal. Each folder also has role-based access.

Each node can be one of the following:

URL: Which can be a GET or a POST. The POST can be used to authenticate to other apps for example. It can also be an RSS feed and can open on the right or in a new window.

HTML Content: This can be any content. Optionally, you can have a downloadable file, and optionally you can have a custom license that is presented before download. This is what you see on the Speerio Downloads page. Finally, you can choose to have Page Ratings for the node and also attach the node to multiple, independent RSS feeds through the NewsWire module. Access to the node is role-based and you can choose if the security is for the node AND file attachment, or only for the file attachment.

ASP.Net Control: This can be any ASP.Net control that is capable of being initialized without code-behind. You can specify property values for the control and the control will be initialized with those values. You can also pass any User or Portal property value to the user control. This allows you to easily integrate non-DNN content into DNN.

It has some other bells and whistles such as DNN Help integration, drag and drop node ordering, etc.

The Navigator module will be available as a free Community Edition and also as a Pro Edition. The Community Edition will have basic URL and HTML hierarchical content display. The pro version will have everything described above. The DNN 2.x version is being dog-fooded on my site, and the DNN 3.x version is doing that on DotNetNuke.com.

The store is the standard SnowCovered Portal Store offering. I modified it (not much actually...mostly CSS and graphics) to be more consistent with the Speerio brand. The only significant enhancement I made is to add a more robust PayPal payment processor that has SMS notification. When an order comes through, I get a text message on my mobile and then when the customer downloads the file, I get another text message. If more than 15 mins. elapse between the two, I know there is a problem and can pro-actively contact the customer and resolve the problem.

 

 

 Thursday, May 26, 2005
by Nik Kalyani
Thursday, May 26, 2005 7:37:07 PM (Pacific Standard Time, UTC-08:00)

Just downloaded the Google Earth beta. I like the changes Google made since it acquired this from KeyHole. In addition to a more cleaner, better organized U.I., one of the new features I like the most is 3D buildings. It is amazing to use the "Fly to" feature to navigate through your city over statellite imagery with accurate 3D vector drawings of buildings.

Here are some sample images:

Screencap 1

Screencap 2

Screencap 3

Screencap 4

#    Comments [0] - Trackback    

RSS feed
Search and Links
Bling

View Nik Kalyani's profile on LinkedIn

Contact me: nik*kalyani.com (replace "*")

TechBubble
www.flickr.com
This is a Flickr badge showing public photos from techbubble. Make your own badge here.
Statistics
Total Posts: 204
This Year: 22
This Month: 0
This Week: 0
Comments: 231
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008
Nik Kalyani
Sign In
All Content © 2008, Nik Kalyani