<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Detail-oriented Programming</title>
	<atom:link href="http://skydeck.com/blog/programming/detail-oriented-programming/feed" rel="self" type="application/rss+xml" />
	<link>http://skydeck.com/blog/programming/detail-oriented-programming</link>
	<description>Your Cell Phone Online</description>
	<lastBuildDate>Thu, 04 Mar 2010 02:47:06 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Raoul Duke</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-580</link>
		<dc:creator>Raoul Duke</dc:creator>
		<pubDate>Thu, 14 Feb 2008 22:35:37 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-580</guid>
		<description>I wouldn&#039;t mind a framework if it were really honestly a good pay-as-you-go model. On the other hand, p-a-y-g taken too far means you are working in C++ with no garbage collection, yucky-poo.</description>
		<content:encoded><![CDATA[<p>I wouldn&#8217;t mind a framework if it were really honestly a good pay-as-you-go model. On the other hand, p-a-y-g taken too far means you are working in C++ with no garbage collection, yucky-poo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-579</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Sat, 17 Nov 2007 07:45:03 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-579</guid>
		<description>I&#039;m curious, what do you use for generating html?</description>
		<content:encoded><![CDATA[<p>I&#8217;m curious, what do you use for generating html?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Victor</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-578</link>
		<dc:creator>Victor</dc:creator>
		<pubDate>Mon, 06 Aug 2007 06:43:33 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-578</guid>
		<description>I totally agree that the Java for Web is somewhat overcomplicated.

Once, I have written a small web-app in Python+Clearsilver+(Sqlite and PostgreSQL afterwards), as a CGI app, and then as a mod_python on Apache-HTTPD-2 one.  This web-app processed user input, queried the DB, constructed the HTML on the fly (out of more than 300 rows of data fetched from the DB) faster than the Tomcat loads its default greetings page.

Next time I would like to try the OCamlnet, though, from my point of view, it lacks some features.</description>
		<content:encoded><![CDATA[<p>I totally agree that the Java for Web is somewhat overcomplicated.</p>
<p>Once, I have written a small web-app in Python+Clearsilver+(Sqlite and PostgreSQL afterwards), as a CGI app, and then as a mod_python on Apache-HTTPD-2 one.  This web-app processed user input, queried the DB, constructed the HTML on the fly (out of more than 300 rows of data fetched from the DB) faster than the Tomcat loads its default greetings page.</p>
<p>Next time I would like to try the OCamlnet, though, from my point of view, it lacks some features.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc Conley</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-577</link>
		<dc:creator>Marc Conley</dc:creator>
		<pubDate>Wed, 01 Aug 2007 18:53:19 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-577</guid>
		<description>I am a senior J2EE developer (25 years experience in the field of software development...lots of paradigms/languages under my belt). I agree with your assessment of Java/J2EE community over-complicating things in an attempt to follow prevailing design/architectural wisdom. I personally feel that a good developer doesn&#039;t need near that much imposed structure to do the right thing. And someone is paying for all those extra layers and design work -- the customer.  I personally prefer a language called newLisp over ocaml, although ocaml looks pretty cool as well (especially compared to Java). I am located in GA and can&#039;t move or really switch from my full-time gig currently -- it&#039;s too good an opp. But I am interested in startups and equity and those kinds of things. Been there, done that...wouldn&#039;t mind doing it again. :-)  It can be a very exciting and creative and powerful environment where one can show their stuff and be rewarded for it accordingly.</description>
		<content:encoded><![CDATA[<p>I am a senior J2EE developer (25 years experience in the field of software development&#8230;lots of paradigms/languages under my belt). I agree with your assessment of Java/J2EE community over-complicating things in an attempt to follow prevailing design/architectural wisdom. I personally feel that a good developer doesn&#8217;t need near that much imposed structure to do the right thing. And someone is paying for all those extra layers and design work &#8212; the customer.  I personally prefer a language called newLisp over ocaml, although ocaml looks pretty cool as well (especially compared to Java). I am located in GA and can&#8217;t move or really switch from my full-time gig currently &#8212; it&#8217;s too good an opp. But I am interested in startups and equity and those kinds of things. Been there, done that&#8230;wouldn&#8217;t mind doing it again. <img src='http://skydeck.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   It can be a very exciting and creative and powerful environment where one can show their stuff and be rewarded for it accordingly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-576</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Fri, 06 Jul 2007 19:37:27 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-576</guid>
		<description>I could not agree with you more.  I have never been a fan of frameworks.  I feel that in most cases they add unneeded complexity and abstraction for systems that have no need for it in the first place.

--Dave</description>
		<content:encoded><![CDATA[<p>I could not agree with you more.  I have never been a fan of frameworks.  I feel that in most cases they add unneeded complexity and abstraction for systems that have no need for it in the first place.</p>
<p>&#8211;Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike "Szii"</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-575</link>
		<dc:creator>Mike "Szii"</dc:creator>
		<pubDate>Tue, 26 Jun 2007 07:40:52 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-575</guid>
		<description>While it looks horrendous, the reusability is there.  Rolling your own is great, if you have the QA staff and time (and time-to-market!) to back it up.

When you need to execute fast, prepackaged code is a great way to do it.   While &quot;fast and tight&quot; is an awesome goal, sometimes you just have to say &quot;you know, I just need it to WORK.  I can optimize later if it&#039;s a huge problem.&quot;  You can&#039;t be blind about it, but if you try to optimize everything, everywhere you&#039;ll optimize stuff that doesn&#039;t really need to be optimized.

If the run-time doesn&#039;t suffer, doesn&#039;t choke the hardware when you scale it...who cares how big the stack is?  After all, you just scan right over it with the scroll bar.  /shrug

In perspective, something like Gentoo is arguably the &quot;fastest&quot; linux distribution due to the compilation tweaking you can do.  But, really, how many do it?  Especially compared to the number of RH/Debian boxen that run quite well?  And how many Gentoo &quot;oopses&quot; did you go through (rolling your own) to get some semblance of speed over a RH/D distro in which you didn&#039;t REALLY need that speed anyways?

IMHO, chase run-time and not stack-length.  You can overthing/overengineer/overtweak anything.  The skill/art/knowledge is not always what to tweak but what NOT to tweak. (Not that I know it myself! :)

Found this through a Craigslist posting.  Haven&#039;t been in the web world in a number of years (re, CGI and PHP 1.0), so going to go check out this OCaml stuff.  Good luck!  Glad to see people are still doing startups here in the Valley!  :)</description>
		<content:encoded><![CDATA[<p>While it looks horrendous, the reusability is there.  Rolling your own is great, if you have the QA staff and time (and time-to-market!) to back it up.</p>
<p>When you need to execute fast, prepackaged code is a great way to do it.   While &#8220;fast and tight&#8221; is an awesome goal, sometimes you just have to say &#8220;you know, I just need it to WORK.  I can optimize later if it&#8217;s a huge problem.&#8221;  You can&#8217;t be blind about it, but if you try to optimize everything, everywhere you&#8217;ll optimize stuff that doesn&#8217;t really need to be optimized.</p>
<p>If the run-time doesn&#8217;t suffer, doesn&#8217;t choke the hardware when you scale it&#8230;who cares how big the stack is?  After all, you just scan right over it with the scroll bar.  /shrug</p>
<p>In perspective, something like Gentoo is arguably the &#8220;fastest&#8221; linux distribution due to the compilation tweaking you can do.  But, really, how many do it?  Especially compared to the number of RH/Debian boxen that run quite well?  And how many Gentoo &#8220;oopses&#8221; did you go through (rolling your own) to get some semblance of speed over a RH/D distro in which you didn&#8217;t REALLY need that speed anyways?</p>
<p>IMHO, chase run-time and not stack-length.  You can overthing/overengineer/overtweak anything.  The skill/art/knowledge is not always what to tweak but what NOT to tweak. (Not that I know it myself! <img src='http://skydeck.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Found this through a Craigslist posting.  Haven&#8217;t been in the web world in a number of years (re, CGI and PHP 1.0), so going to go check out this OCaml stuff.  Good luck!  Glad to see people are still doing startups here in the Valley!  <img src='http://skydeck.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jake</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-574</link>
		<dc:creator>Jake</dc:creator>
		<pubDate>Tue, 19 Jun 2007 13:25:28 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-574</guid>
		<description>Hi Michael. What I&#039;m saying may be obvious to some, but it certainly bears repeating. As you point out, sometimes the &quot;justification&quot; for overly complex systems is mistaken.</description>
		<content:encoded><![CDATA[<p>Hi Michael. What I&#8217;m saying may be obvious to some, but it certainly bears repeating. As you point out, sometimes the &#8220;justification&#8221; for overly complex systems is mistaken.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Lee</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-573</link>
		<dc:creator>Michael Lee</dc:creator>
		<pubDate>Tue, 19 Jun 2007 03:06:09 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-573</guid>
		<description>Hey Jake

This is a rather odd set of posts. And not to belabor the point but Isn&#039;t what you&#039;re saying somewhat obvious? Who would disagree with the following statements: abstractions have costs directly and indirectly associated with them; introducing complexity into a computer system requires justification.

Your statement, &quot;... we take on complexity without justification.,&quot; may be true but usually it is justified to some degree. It may be long or short sighted or just plain wrong--lack of imagination, experience, etc... Regardless, there&#039;s usually a justification.

Anyways, good luck with your startup.</description>
		<content:encoded><![CDATA[<p>Hey Jake</p>
<p>This is a rather odd set of posts. And not to belabor the point but Isn&#8217;t what you&#8217;re saying somewhat obvious? Who would disagree with the following statements: abstractions have costs directly and indirectly associated with them; introducing complexity into a computer system requires justification.</p>
<p>Your statement, &#8220;&#8230; we take on complexity without justification.,&#8221; may be true but usually it is justified to some degree. It may be long or short sighted or just plain wrong&#8211;lack of imagination, experience, etc&#8230; Regardless, there&#8217;s usually a justification.</p>
<p>Anyways, good luck with your startup.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jake</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-572</link>
		<dc:creator>Jake</dc:creator>
		<pubDate>Fri, 15 Jun 2007 04:19:58 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-572</guid>
		<description>Hi Andrey. I think we are in basic agreement: complexity has a cost which must be justified. You put it very well in your last sentence.

My argument is that too often we take on complexity without justification. Extremely abstract, extremely flexible frameworks are extremely complex, and yet hardly any application needs the flexibility they provide.

You make a good point that the stack includes everything from the hardware on up. Still, when something goes wrong (be it bug, security hole, or performance problem), it can go wrong anywhere in that stack. This means we have to keep the stack as shallow and as simple as possible in order to get our jobs done.

(A data point: check the Facebook job listings, where they have open positions for  PHP internals and performance experts--this part of the stack, at least, is not a black box for them.)

Unnecessary complexity is a drain on resources, and a startup can&#039;t afford that. While we&#039;d love to hire some OCaml internals and performance experts because they&#039;re probably great hackers, we hope that by keeping things simple we can spend most of our time at the top of the stack, writing the applications that are our business.</description>
		<content:encoded><![CDATA[<p>Hi Andrey. I think we are in basic agreement: complexity has a cost which must be justified. You put it very well in your last sentence.</p>
<p>My argument is that too often we take on complexity without justification. Extremely abstract, extremely flexible frameworks are extremely complex, and yet hardly any application needs the flexibility they provide.</p>
<p>You make a good point that the stack includes everything from the hardware on up. Still, when something goes wrong (be it bug, security hole, or performance problem), it can go wrong anywhere in that stack. This means we have to keep the stack as shallow and as simple as possible in order to get our jobs done.</p>
<p>(A data point: check the Facebook job listings, where they have open positions for  PHP internals and performance experts&#8211;this part of the stack, at least, is not a black box for them.)</p>
<p>Unnecessary complexity is a drain on resources, and a startup can&#8217;t afford that. While we&#8217;d love to hire some OCaml internals and performance experts because they&#8217;re probably great hackers, we hope that by keeping things simple we can spend most of our time at the top of the stack, writing the applications that are our business.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: andrey kartashov</title>
		<link>http://skydeck.com/blog/programming/detail-oriented-programming/comment-page-1#comment-571</link>
		<dc:creator>andrey kartashov</dc:creator>
		<pubDate>Fri, 15 Jun 2007 02:04:57 +0000</pubDate>
		<guid isPermaLink="false">http://skydeck.com/blog/technology/detail-oriented-programming/#comment-571</guid>
		<description>Hey, Jake!
As always, you bring up some interesting points, but I daresay that there *are* some details I don&#039;t have to think about. More than a few actually. Think about it, the stacktrace you quoted is just the tip of the iceberg, there is whole OS, many layers deep behind it. There is also hardware, a complicated beast all in itself. The simple reality is that today nobody really understands &#039;the whole thing&#039;, there are many layers of abstraction involved.
So how do we deal with them? - We mostly don&#039;t;) We choose the set of tools/frameworks that solves the problem we are trying to solve. Nobody insists on using as many as possible, there is no &#039;standard&#039; software stack either. It&#039;s like a toolbox, you pick and choose what you need. You try it, you measure performance, you identify the bottlenecks, only at that point do you start paying attention to details. But not to all details, just the ones that matter. You keep what works well and you replace or fix what doesn&#039;t. And, yes, you pretty much completely ignore the rest....
So, as you&#039;ve pointed out, there is a cost, but do we avoid frameworks? - No. We simply choose them based on whether or not they solve our problem. Or to put it another way, if you can&#039;t clearly explain why you are using something, you probably shouldn&#039;t be using it.</description>
		<content:encoded><![CDATA[<p>Hey, Jake!<br />
As always, you bring up some interesting points, but I daresay that there *are* some details I don&#8217;t have to think about. More than a few actually. Think about it, the stacktrace you quoted is just the tip of the iceberg, there is whole OS, many layers deep behind it. There is also hardware, a complicated beast all in itself. The simple reality is that today nobody really understands &#8216;the whole thing&#8217;, there are many layers of abstraction involved.<br />
So how do we deal with them? &#8211; We mostly don&#8217;t;) We choose the set of tools/frameworks that solves the problem we are trying to solve. Nobody insists on using as many as possible, there is no &#8217;standard&#8217; software stack either. It&#8217;s like a toolbox, you pick and choose what you need. You try it, you measure performance, you identify the bottlenecks, only at that point do you start paying attention to details. But not to all details, just the ones that matter. You keep what works well and you replace or fix what doesn&#8217;t. And, yes, you pretty much completely ignore the rest&#8230;.<br />
So, as you&#8217;ve pointed out, there is a cost, but do we avoid frameworks? &#8211; No. We simply choose them based on whether or not they solve our problem. Or to put it another way, if you can&#8217;t clearly explain why you are using something, you probably shouldn&#8217;t be using it.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
