<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Eric Tobia's Blog - ASP</title>
    <link>http://www.erictobia.com/</link>
    <description>People, places, and things (via HTTP)</description>
    <language>en-us</language>
    <copyright>Eric Tobia</copyright>
    <lastBuildDate>Sun, 25 Nov 2007 02:46:05 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>blog@erictobia.com</managingEditor>
    <webMaster>blog@erictobia.com</webMaster>
    <item>
      <trackback:ping>http://www.erictobia.com/Trackback.aspx?guid=1b20c7c3-be56-49d6-8565-c37caa298477</trackback:ping>
      <pingback:server>http://www.erictobia.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.erictobia.com/PermaLink,guid,1b20c7c3-be56-49d6-8565-c37caa298477.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.erictobia.com/CommentView,guid,1b20c7c3-be56-49d6-8565-c37caa298477.aspx</wfw:comment>
      <wfw:commentRss>http://www.erictobia.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1b20c7c3-be56-49d6-8565-c37caa298477</wfw:commentRss>
      <title>ASP.NET and Spolsky’s Law of Leaky Abstractions</title>
      <guid isPermaLink="false">http://www.erictobia.com/PermaLink,guid,1b20c7c3-be56-49d6-8565-c37caa298477.aspx</guid>
      <link>http://www.erictobia.com/2007/11/25/ASPNETAndSpolskysLawOfLeakyAbstractions.aspx</link>
      <pubDate>Sun, 25 Nov 2007 02:46:05 GMT</pubDate>
      <description>&lt;p class="MsoNormal"&gt;
For reasons beyond my control I recently found myself developing in classic &lt;a href="http://en.wikipedia.org/wiki/Active_Server_Pages"&gt;ASP&lt;/a&gt;.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;After
years of developing in &lt;a href="http://en.wikipedia.org/wiki/Asp.net"&gt;ASP.NET&lt;/a&gt; this
was obviously a little jarring.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However, what surprised
me about the experience was that there were some things about classic ASP that I actually
enjoyed.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Most notably I felt I had more control with classic
ASP.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Nothing was in my way. &lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Things
that should be simple were simple. &lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;For a moment I imagined
that this is what it must feel like to be a &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt; developer.
;-)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
I wondered why I felt this way.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;After all, the whole the
whole point of ASP.NET is to save me from having to deal with “icky” &lt;a href="http://en.wikipedia.org/wiki/Html"&gt;HTML&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Javascript"&gt;JavaScript&lt;/a&gt;,
and &lt;a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets"&gt;CSS&lt;/a&gt;…right?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I
really like developing in ASP.NET.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;b style=""&gt;I would
take ASP.NET over classic ASP any day of the week&lt;/b&gt; (and twice on Sunday).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;ASP.NET
is certainly one of most thoughtfully designed and well implemented frameworks I have
ever worked with.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott
Guthrie&lt;/a&gt; is a genius and he has the &lt;a href="http://www.google.com/patents?id=T7oSAAAAEBAJ"&gt;patents&lt;/a&gt; &lt;a href="http://www.google.com/patents?id=5esVAAAAEBAJ"&gt;to&lt;/a&gt; &lt;a href="http://www.google.com/patents?id=29QVAAAAEBAJ"&gt;prove&lt;/a&gt; &lt;a href="http://www.google.com/patents?id=C50SAAAAEBAJ"&gt;it&lt;/a&gt;.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However,
I couldn’t ignore the fact that some things were a lot easier to accomplish in classic
ASP.&lt;br&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;br&gt;
I realized the unfortunate truth that there are some abstractions in ASP.NET (and
all frameworks for that matter) that can transform into obstacles.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;In
order to use these abstractions you end up having to learn a lot about the internals
of the framework.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I’m talking about &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt;.
You have to codify assumptions about the underlying technologies into your application.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;In
other words, the abstraction &lt;i style=""&gt;leaks&lt;/i&gt;.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I
borrow this term from Joel Spolsky’s &lt;a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html"&gt;Law
of Leaky Abstractions&lt;/a&gt;.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I think that the small sense
of empowerment I was feeling when developing in classic ASP came from the fact that
I wasn’t forced to dig too deep into, or worse, code around the framework in order
to get the job done.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There was no framework.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
Another, even more heretical thought occurred to me during this process.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I
wondered if &lt;a href="http://support.microsoft.com/kb/303247"&gt;code-behind&lt;/a&gt; is always
necessary. Is it &lt;b style=""&gt;always&lt;/b&gt; essential to separate code and markup? &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;If
you simply replaced VBScript with C# and gave yourself a set of libraries as rich
as the &lt;a href="http://en.wikipedia.org/wiki/Base_Class_Library"&gt;BCL&lt;/a&gt;, would combining
code and markup be more palatable or even more productive in some scenarios?&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=""&gt;Can
some aspects of ASP.NET be abandoned entirely?&amp;nbsp; &lt;/span&gt;I’m not sure, but I’m
now a little more inclined to find out.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.erictobia.com/aggbug.ashx?id=1b20c7c3-be56-49d6-8565-c37caa298477" /&gt;</description>
      <comments>http://www.erictobia.com/CommentView,guid,1b20c7c3-be56-49d6-8565-c37caa298477.aspx</comments>
      <category>Programming</category>
      <category>ASP.NET</category>
      <category>ASP</category>
      <category>Frameworks</category>
    </item>
  </channel>
</rss>