Scott Hanselman

The Myth of .NET Purity

May 13, '03 Comments [8] Posted in Web Services
Sponsored By

As promised earlier I've posted a personal rant on The Myth of .NET Purity, that I submit for your perusal.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Woogle -> Google for your Desktop

May 13, '03 Comments [4] Posted in Web Services
Sponsored By

For a long time, I've wondered why Google can search the whole freak'n internet in < 1 second, but it takes Windows minutes to search my little hard drive.  Scott has me thinking, what good are folders?  Actually, folders are great, but what good is a massive hierarchy of folders that all roll up under a common root?  Does anyone really want to find anything by starting at C:?  If you had Google for your computer, would you use anything else?  Maybe in a future version of Windows, the desktop should just be a search form.  Woogle, anyone? [Early Adopter Weblog]

Preach on my brothers!  I need to write a .NET application that lets me exploit the Indexing Service...We all have Google on our desktops...it's right here and has been for years - the Indexing Service Query Form in the MMC.  It's just not friendly and Explorer appears not to care.  What IS the sordid relationship between the Indexing Service (that obstensibly gets turned on by the Explorer Search but never used!) and the Shell? 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

A Class (or Caste) System for APIs

May 12, '03 Comments [1] Posted in Web Services
Sponsored By

Application Programming Interfaces (APIs) should be designed with their specific audience in mind.  Some APIs are meant to be used by low-level developers for creation of infrastructure code; other APIs are to be used by high-level developers in the creation of user interface or workflow code.  Most APIs rely on the ambient language to provide strong typing and 'link' themselves to the function signatures.

MyFooFunc(string, int, int, DateTime, bool)

I divide interfaces into three classes and I've started using these terms when I present on architecture and design: 1st Class, 2nd Class and 3rd Class Interfaces.  In naming these interfaces 1st through 3rd I do not aim to make a qualitative value judgment, only to correctly describe the level of fidelity the interface provides.  Sometimes when a API is created as a front-end to some large mysterious 'blackbox' and that box is to be used in a language or platform agnostic way, the blackbox defines a syntax of its own.  For example, SQL Server is a large black box whose vast power can be exploited via a single method: Execute(string). The real power lies in what "string" contains, in this case, T-SQL.  Regardless of what language you choose to call Execute(), a lot of work (read: magic) will happen as a result of the SQL. 

For Example: In COM, when someone writes Dim x as new Foo, someone calls CoCreateInstance(foo), a 3rd class API, someone has to call LoadLibrary(foofilename.dll), also a 3rd class API.  This is an example of layering lower classes of APIs to present a 1st class API to the higher level developer.

Examples
3rd Class

Command.Execute("INSERT INTO employee (emp_no, fname, lname, officeno) VALUES (3022, 'John', 'Smith', 2101)")
2nd Class

Employees.Insert(3002, "John", "Smith", 2101);
1st Class

Employees.Add(objJohnSmith);

3rd Class Interfaces are usually limited to a core infrastructure functions or ".Executes" that are like procedure calls within a string.  Notable examples include Database APIs that expose an Execute method that takes a string of T-SQL as a parameter.  It is within that T-SQL command that the programmers’ intention is expressed. 

Overwhelmingly, 1st and 2nd Class APIs are built on top of 3rd Class Interfaces.  2nd Class Interfaces often “hang” off of a larger controller object or domain object.  There is also some use of Domain Objects, primarily as complex-type or "rich" parameters to the Controller. 

1st Class Interfaces are typically found in object oriented or command/message oriented designs. These are meant to describe the programmers’ intent using business objects that fall into a specific business domain.  Objects representing high level logical constructs act upon other objects.

Question of the day:

When creating APIs, particularly for use by developers in business verticals who wire up complex processes, what is the right balance between type-rich function signatures (n parameters) and type-rich internal messages (n simple types within a complex type)?

This whole rant will get me into another rant coming in a few days on "The Myth of .NET Purity"...

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Remember Pointcast? Smells like RSS spirit...

May 11, '03 Comments [0] Posted in Tools | Web Services | XML
Sponsored By

I find myself explaining Blogging, RSS, News Aggregation, Radio, etc. to a lot of folks lately.  I also have been thinking of PointCast.  At the time, somewhere I want to say around 1995(?) or so, I heard about it.  This was during the whole Push (or was it Pull :) movement, when we thought Marimba and its ilk would soon rule the world.  As with all Really Good Things, I found out about PointCast via word of mouth. 

I installed it and I was FREAKING OUT.  It was glorious...You mean, I can subscribe to content-rich news and information delivered to my desktop without all the hassle of opening up multiple browsers and without the overhead of HTML and unncessary graphics?  Sign me up brotha!  Now, here I am 10 years later subscribing to content and pulling it off the 'net into Fat Client Content Aggregators.

What is an Application?

One thing that struck me is that the way we think of a applications (things on our computer that provide functionality) seems to be changing.  In the old days (at least, MY old days)...an application *was* a disk.  Stick it in, and type "Load '*',8,1".  Later, an application became a .EXE file.  Run it, and there you go.  Then it was a directory of associated files, and then it was a series of registry entries, DLLs, EXEs, all hidden behind an Icon. For my wife, Excel IS that Icon.  For me, it's a tangle of technical widgetry. 

50 Ways to Leave your Rich Site Summary

There are hundreds of ways to view email, and there are hundreds of ways to browse the web...but all I really care about is content...documents...data.  Just as I move effortlessly between Outlook and Internet Explorer at work and Bloomba and Phoenix at home, I view RSS Feeds in any number of ways.  I use NewsGator to integrate feeds with Outlook, I use SharpReader, RSSBandit and FeedReader at home, I use Radio's News Aggregator remotely...moving seemlessly from app to app, I export and import my OPML subscription file.  I post to my Radio Weblog from Outlook and Word using NewsGator using the evolving IBlogThis Interface and XML-RPC.  I've stopped thinking about the applications, and I think only of the documents.  What I think of as Blogging is not a single app (distributed or otherwise) but a rich ecosystem of apps, an orchestra even, all working with the same basic data structures pushing and pulling them over a whole series of transports. 

Explaining the "RSS Phenomenom"

For the uninitiated, the barrier to entry seems quite high.  Most users can spell XML but are not used to asking their browser for much more than HTML or files.  The moderately technical grok it pretty quickly and it's a pretty dense, terse conversation that goes something like this:

 "So, what's all this talk about RSS and blogging?"
 
 "Remember PointCast?"
 
 "Oh, man, yeah...old school..."
 
 "It's like that, except the data format is an XML InfoSet called RSS (Rich Site Summary), the content and news is completely decentralized, sites inter-link and reference each other, posts can be tracked, replies can pingback the author, and the content spreads like a virus. Of course, since RSS is XML, you can do whatever you want with it and read it anyway you want.  Within certain verticals, like .NET or Web Services the signal-to-noise radio is ridiculously high."

 "Sweet, how do I get hooked up?"

 "Google for it."

 "Cool."

But for the non-technical (like the lady on the flight to Newark today) the conversations usually go something like this:

 "So what's this whole Weblog thing about?"
 
 "Basically it's your own syndicated news column that you write as often as the spirit moves you. Except there's no newspaper organization, no syndicate, no editors, often no audience.  Just as newspaper columnists do, often you'll find yourself posting comments or editorials on what they've said."

 "So this is just like newsgroups or forums?"

 "It's as as much like USENET as scrawls on a random bathroom wall are like the New York Times.  Sometimes it seems that USENET has nearly as much spam as email.  Newsgroups are like yelling Fire! in a crowded theater; Blogs are more like focused messages in a bottle...you may send out hundreds before anyone connects but more often than not, you'll find a community, a niche, and pass content around.  Mostly you write for yourself and perhaps for the sense that someone may be on the other shore reading your dispatches.  But, if noone sends a bottle back, it's no worry."

 "So I need to keep bookmarks and visit all these sites to keep up?  Seems like a lot of work."

 "Well, you might want to use an special Reader that will let you subscribe and receive a summary for each site you're interested in.  There are tiny orange icons on most sites that point to an URL you can subscribe to.  That URL will contain just the content, without all the extranous formatting."

 "Wow...how do I get this on my computer?"

...and so on...

The UI Paradigm creaks under the strain

There really are no new ideas, eh?  Just spins on old ones...I have no conclusion yet, but just as MSFT and the DOJ had trouble putting their finger on how IE is integrated with the shell (easy for the technies: "It's just HTML Rendering as a shared service the OS provides"; harder for the legal guys and folks without a context around Computer Science) I think that it's going to be increasingly difficult for Joe User to keep track of all this functionality.  Whether we are able is beside the point...I see users truly beseiged with Tray Icons (you know you have relatives like this) and they lack either the sophistication, interest, or both to use or remove them.  Personally I have enough crap in my start menu to fill my 1400x1060 screen...arguably only 30% of the icons represent applications, the rest are just flotsam. 

It's time for a new user interface paradigm...I haven't seen Lornhorn and Avalon, but I hope it's more than just another sidebar or toolbar.  The Window metaphor and Windows 95-style start menu along with my cluttered desktop are creaking under the strain of information.  I've got over a million pixels in front of my face and they aren't working hard enough for me. 

Today's unfinished conclusions and unanswered questions:

  • What's happening is bigger than the phrase "document-centric" and new thinking is required
    (Remember that from the Office 97 Marketecture?)
  • I think in terms of "My Stuff" and while "My Documents" was clever, I have too many folders and no way to QUICKLY search them
    (My Documents, My eBooks, My Webs, My Virtual Machines, My Wallpapers, My Library, My Music, My Videos, My Received Files, My io documents, to name a few. It's worth noting that I didn't create these; they have be created through the last 6 months of entropy caused by frequent application use.  IMHO, there's not enough quick indexing going on...I should be able to Full Text Index everything and search the whole drive < 1 second from the Shell, rather than from the Indexing Service Query Form.)
  • Get me to my content and data quickly
    (I'm starting to prefer the Radio News Aggregrator "One Long Page" style over the Folder Heirarchy metaphor)
  • How will applications be sold if they are simply a member of an orchestra?  No user will spend $10 five times in order to foster a great RSS reading environment.If MSFT purchased NewsGator and included its functionality in Outlook, would other RSS readers go the way of Lotus Organizer, crushed under Office's gilded fist?
  • I'm envisioning a full-screen, small-font, very dense RSS aggregration workspace (much more dense than Outlook Today) perhaps ala The Brain...I'll need hunt around and perhaps write this if I can't find it...maybe I can pull from Danny Ayer's IdeaGraph?
  • Is it simply a matter of evolution?  If RSS has evolved to a reasonable state, then will this sudden explosive mutation of RSS Readers and News Aggregators be resolved by natural selection?  Should I just concern myself with the data and let the apps fall where they may?
  • It may be time to apply some of neat things about PointCast to RSS News Aggregation...remember the PointCast Screen Saver?

 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Translator Job Available in Portland: Klingon->English

May 10, '03 Comments [1] Posted in Musings
Sponsored By

Apparently Klingon is a legitimate enough language that Multnomah County is looking for a Klingon Interpreter for mentally ill patients...come on people, even Shatner said, it's just a TV show!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

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