Scalable APIs
Chris Anderson talked about
Scalable APIs a few days ago. Considering that
my day job involves designing APIs that will
eventually be used by thousands of developers, the
points raised in his post are things I constantly
think about. I've read Chris's post about ten times
since he first posted it and the one thing that
comes through loud and clear is that I completely
disagree with it. It seems
Doug feels the same way.
One mistake I see some folks at B0rg County making
a lot is that they assume that there is no
difference between people who need a "RAD" API and
does who need an "Expert" API. A RAD API is full of
helper methods and attempts to hide the complexity
of the underlying system under a veneer of
simplicity or simplified access. This API is very
useful for the average developer writing quick, one
off applications where development speed is of the
essence and the requirements of the application are
not sophisticated. An "Expert" API is typically
needed for sophisticated scenarios where fine
grained access to the innards of the technology are
needed. The difference between a RAD API from an
Expert API is the difference between using
printf to display data on the console and using
curses
for the same purpose.
From my experience using B0rg APIs, it seems many
B0rg API designers believe they can bridge the gap
between the needs of the printf
users
and those of the curses
users with
their APIs. What typically ends up happening is
that we end up with printf++
APIs
where 90% of the task takes 10% of the time because
of how easy it is while 10% of the task takes 90%
of the time [or is impossible to do] because of the
hoops one has to jump through to get things
done.
Much worse is the fact that the "Expert" API is
typically hacked together and inelegant because the
core driving scenario in the design process is the
"RAD" API user. The "design patterns are
unnecessary" mindset is a prime example of this.
Then the "Expert" API user has to resort to ugly
code or hacks to perform tasks that should be
directly supported by the API's design. Luke
Hutteman
decries the lack of MVC in Winforms because it
leads to unnecessarily tight coupling between [what
should be] the view and the model.
My goal in designing hacking RSS
Bandit was to have the front end be completely
pluggable because the back end was not tightly
coupled to the UI. The fact that Winforms is not
designed using the MVC model made this harder than
it should have been.
When I look at the XML APIs we shipped in version
1.0 of the .NET Framework I see a lot of RAD APIs
that make working with XML a breeze for people who
just want to quickly grab an XML file from disk,
move around it, tweak it, transform it and then
save or display it somewhere. On the other hand
people who want to build more complex frameworks
with our XML APIs may not have been as well served.
Our "Expert" API suffered because we had been "RAD"
API focussed. However given that the number of
people who just want to mess around with XML files
is orders of magnitude larger than the number of
people building XML frameworks, from that
perspectives the API is a success.
There is a significant difference between the
needs of the user of the "Expert" vs. the "RAD" API
and pretending there is none guarantees that one
either builds an API that overly favors one kind of
user over the other or creates a Frankenstein API
that is liked by neither.
#
On Getting A New
Car
Half the people that voted in
my last poll on whether I should get a new car
think I should keep my Corrolla. I've thought the
same thing for the reasons
ucblockhead mentioned. The money saved is a
very compelling argument especially in this economy
but I can't seem to get rid of the feeling that
I've had since college that the Corolla was just
something I got out of necessity but would be
upgraded to something I actually wanted (as opposed
to something I needed) when the time came.
Decisions, decisions, decisions.
By the way, I'd like to thank trhurler for his
detailed car advice. That was madd cool.
#
A Star Is
Lost
After my Saturday post on the
3 things B0rg Central could do the make their
developer community happier I got an email from
David Stutz who has most recently been the public
face of the Rotor project. David has left the
B0rg and mentioned that some frustration with the
things touched on in my Saturday post were
contributing factors in his decision.
This is unfortunate because I know David was an
internal champion for Open Source and *nix while he
was in the Belly of the Beast. Although David and I
never really hung out I was inspired by what he
achieved with Rotor and he was a role model of
sorts with regards to the kind of impact he had on
how Microsoft treats its developer and user
community.
Reading his farewell email I can't help but wonder
whether the B0rg can change.
#
Semantic XHTML or
not.
Tantek
recently said the following about the fact that
I wrote a stylesheet that converts his weblog into
an RSS feedUh, folks, looks like
I've got an RSS feed (except the entry titles
appear to be missing their last characters).
Doesn't this mean that anyone can provide RSS
feeds for any/all blogs that use valid and
semantically rich XHTML? I have to consider the
implications of this a bit more.
So I fixed the chopped characters in the entry
titles. Anyway, what is interesting about the above
statement is that when I was writing the stylesheet
for Tantek's blog I was thinking the exact
opposite. I was mildly irritated that XHTML for
Tantek's blog was mostly presentation crap that I
had to process via glorified regexes (i.e. tree
matching in XSLT on presentation elements) instead
of processing semantic information.
If you look at the
stylesheet I wrote for Tantek's blog you'll see
path expressions like
html:ol/html:li/html:ol/html:li
and
html:ul/html:li/html:p[1]
which to me
is just one notch away from screenscraping using
regexes. If this is the kind of "semantic markup"
XHTML has to offer then it isn't much of an
improvement over HTML. This seems even more evident
when one looks at tools with features like
Syndirella's Web Feeds which can do what I did
for Tantek's XHTML with plain old HTML.
#ThinkGeek
T-Shirts for Testers
Joe Bork has a
top ten list of T-shit slogans for testers with
a few funny ones showing up in the comments. My
favorite is
We have jobs because you can't
code.
#
--
Get yourself a
News Aggregator and subscribe to my
RSSfeedDisclaimer:
The above comments do not
represent the thoughts, intentions, plans or
strategies of my employer. They are solely my
opinion.