JaroslavTulach at 06:41, 31 October 2009 - 2009-10-31 06:41:31

←Older revision Revision as of 06:41, 31 October 2009
Line 26: Line 26:
letting my [[LeakingCulturalContext|cultural context leak]].
letting my [[LeakingCulturalContext|cultural context leak]].
-
What does this have to do with API Design? API is about
+
What does this have to do with [[API]] Design? [[API]] is about
abstractions. About hiding the gory details of a library behind a
abstractions. About hiding the gory details of a library behind a
-
facade, behind the API. However, regardless of how much time you spend
+
facade, behind the [[API]]. However, regardless of how much time you spend
designing your facade, it can easily happen that the implementation
designing your facade, it can easily happen that the implementation
-
'''details leak out''' and users of your API need to face them.
+
[[Leaky abstractions|details leak out]] and users of your API need to face them.
Regardless of how much you try, your expectations, your context, your
Regardless of how much you try, your expectations, your context, your
implementation will inevitably be around the corner and waiting to
implementation will inevitably be around the corner and waiting to
-
jump out from your API unexpectedly. We can do our best, but there is
+
jump out from your [[API]] unexpectedly. We can do our best, but there is
-
almost always something left unnoticed. '''Contexts leak'''. In case
+
almost always something left unnoticed. [[Leaky abstractions|Contexts leak]]. In case
you are describing your life experience, in case you are writing about
you are describing your life experience, in case you are writing about
-
your project API design experiences, or when you create an API facade
+
your project [[API]] design experiences, or when you create an API facade
over implementation of your library. You will all the time
over implementation of your library. You will all the time
expose more than you should. Get ready for that.
expose more than you should. Get ready for that.
And good luck preventing such leakages!
And good luck preventing such leakages!

JaroslavTulach at 07:05, 20 October 2008 - 2008-10-20 07:05:53

←Older revision Revision as of 07:05, 20 October 2008
Line 1: Line 1:
-
Recently I got a query from a reader of TheAPIBook about the [[LeakingCulturalContext|How
+
Recently I got a query from a reader about the [[LeakingCulturalContext|How
Many People Have to Die?]] sidebar from [[Ever_Changing_Targets|Chapter
Many People Have to Die?]] sidebar from [[Ever_Changing_Targets|Chapter
4]]. That is OK, I intended this sidebar to be personal, emotional,
4]]. That is OK, I intended this sidebar to be personal, emotional,

JaroslavTulach: New page: Recently I got a query from a reader of TheAPIBook about the How Many People Have to Die? sidebar from Chapter 4. That is OK, I intende... - 2008-10-20 07:05:16

New page: Recently I got a query from a reader of TheAPIBook about the How Many People Have to Die? sidebar from Chapter 4. That is OK, I intende...

New page

Recently I got a query from a reader of TheAPIBook about the [[LeakingCulturalContext|How
Many People Have to Die?]] sidebar from [[Ever_Changing_Targets|Chapter
4]]. That is OK, I intended this sidebar to be personal, emotional,
controversial, passionate and it is perfectly appropriate for it to
stimulate questions. This has been expected. That is why,
I tried to be as precise as possible. Trying to evoke the same
emotions among more than one person is hard, and as such I not only
refer to my own personal experience with [[wikipedia::Communism|communism]], but the note puts
the topic into more general context while comparing it with
another example of [[wikipedia::Totalitarism|totalitarism]] - [[wikipedia::Nazism|Nazism]]. I believe
that they are similar with respect to their promises and failures,
moreover methods of the latter and their results are more widely known
and understood around the globe.

However the recent email exchange made me look at my sidebar again,
from a completely new angle and made me realize that I did not
express myself clearly enough. To my horror, I even
referred to events that cannot make any sense to international reader.
I wrote: "...even after forty years later in case of communism, things
were no better than before". Why 40 years? Because my [[LeakingCulturalContext|cultural
context leaked]]! The reign of communism in my country [[wikipedia::Czechoslovak_coup_d'état_of_1948|started in 1948]]
and [[wikipedia::Velvet_Revolution|ended in 1989]], and even after those forty plus something years the
world was not at all as promised at the beginning. Makes sense,
from my point of view, doesn't it? However I fully understand that my
readers need to be quite confused. Sorry, I'd like to apologize for
letting my [[LeakingCulturalContext|cultural context leak]].

What does this have to do with API Design? API is about
abstractions. About hiding the gory details of a library behind a
facade, behind the API. However, regardless of how much time you spend
designing your facade, it can easily happen that the implementation
'''details leak out''' and users of your API need to face them.
Regardless of how much you try, your expectations, your context, your
implementation will inevitably be around the corner and waiting to
jump out from your API unexpectedly. We can do our best, but there is
almost always something left unnoticed. '''Contexts leak'''. In case
you are describing your life experience, in case you are writing about
your project API design experiences, or when you create an API facade
over implementation of your library. You will all the time
expose more than you should. Get ready for that.

And good luck preventing such leakages!