<div> <font face="Arial, Helvetica, sans-serif"><br>

Not to be a curmudgeon, Ed (and Norman), but that isn't what the quote means, and that is exactly what I meant by "Often misunderstood to mean, 'Engineering for scalability is the root of all evil.'" The original quote, in its full glory, is "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." It is the "small efficiencies" disclaimer that is important.<br>
<br>
Let us say your program is required (amongst many other operations) to sort a lot of numbers. You know from the beginning that "a lot" isn't just some fixed 12 values; it's arbitrarily large. But, in order to avoid "premature optimization", you throw in a simple bubble sort and proceed with the remainder of your programming.<br>

<br>
Well. You haven't avoided premature optimization.&nbsp; You've written the wrong program. It won't scale. Bubble sort's execution time increases exponentially as the number of items to sort increase. It's inappropriate for any but the tiniest counts of numbers. You should have used quicksort instead. C.A.R. Hoare knew this and had it in mind — he did, after all, invent quicksort.<br>
<br>

Yet I constantly run into colleagues who excuse their program's performance failures running under stress as, "Oh, I wanted to get it working; now we can optimize it."</font><font face="Arial, Helvetica, sans-serif"> Well. Optimizing means tuning your algorithm. It doesn't mean replacing your algorithm. If you replace it, you're writing a new program. You have completely lost the benefit of concentrating on the algorithm instead of the performance details.<br>
<br>
The correct interpretation is, "Choose the correct algorithm; tune it later if you need to."<br>
</font>
<font face="Arial, Helvetica, sans-serif"><br>

Regards,<br>

-- daan Strebe<br>

</font></div>



<div> <br>

</div>



<div> <br>

</div>

-----Original Message-----<br>

From: Ed McNierney &lt;ed@topozone.com&gt;<br>

To: PROJ.4 and general Projections Discussions &lt;proj@lists.maptools.org&gt;<br>

Sent: Fri, 18 Jan 2008 5:03 am<br>

Subject: RE: [Proj] Re: NAD problems on OSX 10.5 Leopard<br>

<br>








<div id="AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea">









<style><!--  @#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;}@#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;}@#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;}@#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4;}@#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea font-face {font-family:Consolas; panose-1:2 11 6 9 2 2 4 3 2 4;}  #AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0in; margin-bottom:.0001pt; font-size:12.0pt; font-family:"Times New Roman","serif";}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea a:visited, span.MsoHyperlinkFollowed {mso-style-priority:99; color:purple; text-decoration:underline;}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea pre {mso-style-priority:99; mso-style-link:"HTML Preformatted Char"; margin:0in; margin-bottom:.0001pt; font-size:10.0pt; font-family:"Courier New";}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea tt {mso-style-priority:99; font-family:"Courier New";}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; margin-top:0in; margin-right:0in; margin-bottom:0in; margin-left:.5in; margin-bottom:.0001pt; font-size:12.0pt; font-family:"Times New Roman","serif";}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea span.HTMLPreformattedChar {mso-style-name:"HTML Preformatted Char"; mso-style-priority:99; mso-style-link:"HTML Preformatted"; font-family:Consolas;}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea span.EmailStyle20 {mso-style-type:personal-reply; font-family:"Calibri","sans-serif"; color:#1F497D;}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea .MsoChpDefault {mso-style-type:export-only;}@#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea page Section1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in;}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea div.Section1 {page:Section1;}  @#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea list l0 {mso-list-id:1197886472; mso-list-type:hybrid; mso-list-template-ids:688570450 768525040 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}@#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea list l0:level1 {mso-level-start-at:2008; mso-level-number-format:bullet; mso-level-text:-; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:.75in; text-indent:-.25in; font-family:"Calibri","sans-serif"; mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New Roman";}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea ol {margin-bottom:0in;}#AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea ul {margin-bottom:0in;}--></style>





<div class="Section1">



<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">Daan &amp; Rich –</span></div>





<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">&nbsp;</span></div>





<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">I think I’d want to remember that “premature optimization” really
reminds us to “make it work correctly, THEN make it work quickly”!&nbsp; This is
related to the observation that any code can be made to execute arbitrarily
quickly as long as it is not required to produce the right answer.</span></div>





<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">&nbsp;</span></div>





<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">I have to say that whatever its origin, I picked up the phrase
from my friend and co-worker Bob Frankston (author of VisiCalc), who was (and
is) fond of pithy pronouncements.</span></div>





<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">&nbsp;</span></div>





<div class="MsoListParagraph" style="margin-left: 0.75in; text-indent: -0.25in;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);"><span style="">-<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">Ed</span></div>





<div class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">&nbsp;</span></div>





<div style="border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0in 0in;">



<div class="MsoNormal"><b><span style="font-size: 10pt; font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;">From:</span></b><span style="font-size: 10pt; font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;">
<a href="mailto:proj-bounces@lists.maptools.org">proj-bounces@lists.maptools.org</a> [<a href="mailto:proj-bounces@lists.maptools.org?">mailto:proj-bounces@lists.maptools.org</a>] <b>On
Behalf Of </b><a href="mailto:strebe@aol.com">strebe@aol.com</a><br>


<b>Sent:</b> Friday, January 18, 2008 12:21 AM<br>


<b>To:</b> <a href="mailto:proj@lists.maptools.org">proj@lists.maptools.org</a><br>


<b>Subject:</b> [Proj] Re: NAD problems on OSX 10.5 Leopard</span></div>



</div>





<div class="MsoNormal">&nbsp;</div>





<div>



<div class="MsoNormal">&nbsp;</div>



</div>





<div>



<div class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">"Premature
optimization" was probably coined by pioneering computer scientist C.A.R.
Hoare, who said, "Premature optimization is the root of all evil."
Sadly, this is often misunderstood to mean, "Engineering for scalability
is the root of all evil."<br>


<br>


Regards,<br>


-- daan Strebe</span></div>



</div>





<div>



<div class="MsoNormal">&nbsp;</div>



</div>





<div class="MsoNormal" style="margin-bottom: 12pt;">-----Original Message-----<br>


From: Richard Greenwood &lt;<a href="mailto:richard.greenwood@gmail.com">richard.greenwood@gmail.com</a>&gt;<br>


To: PROJ.4 and general Projections Discussions &lt;<a href="mailto:proj@lists.maptools.org">proj@lists.maptools.org</a>&gt;<br>


Sent: Thu, 17 Jan 2008 8:50 pm<br>


Subject: Re: [Proj] NAD problems on OSX 10.5 Leopard</div>





<div id="AOLMsgPart_0_69afb6a9-2aab-4c25-b852-5c0ea843ef01"><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">On Jan 17, 2008 8:28 PM, Ed McNierney &lt;<a href="mailto:ed@topozone.com">ed@topozone.com</a>&gt; wrote:</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; Rich -</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt;</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; The one thing that significantly surprised me was how well that code</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; performed on low-end machines.&nbsp; I think I released it in 2002 - maybe</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; 2001 - and there were plenty of "slow" computers visiting TopoZone.&nbsp; I</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; realize it's just math (other than updating the status bar with the</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; formatted coordinate text), but I was really expecting to see some kind</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; of lag if you waved the mouse quickly on a slow machine, but I never saw</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; the slightest delay.&nbsp; I have found that I sometimes worry excessively</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt; about performance!</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt;</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Ed</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">I believe it was you who coined the term "premature optimization",</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">which always gets a chuckle when I use it. And I too have been amazed</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">at the performance of the JavaScript code I ported that does one or</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">more a projections (or unprojections) and a 7 parameter datum</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">transform for every pixel the user passes over. I kind of remember</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">computer science texts that discouraged us from using floating point</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">math if it could possibly be done with integers.</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">-- </span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">Richard Greenwood</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;"><a href="mailto:richard.greenwood@gmail.com">richard.greenwood@gmail.com</a></span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;"><a target="_blank" href="http://www.greenwoodmap.com">www.greenwoodmap.com</a></span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">_______________________________________________</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;">Proj mailing list</span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;"><a href="mailto:Proj@lists.maptools.org">Proj@lists.maptools.org</a></span></tt><span style="color: black;"><br>
<br>
<br>
<br>
<br>
<br>
<tt></tt></span></pre><pre style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><tt><span style="color: black;"><a target="_blank" href="http://lists.maptools.org/mailman/listinfo/proj">http://lists.maptools.org/mailman/listinfo/proj</a></span></tt></pre></div>





<div>



<div class="MsoNormal" style="margin-top: 7.5pt; text-align: center;" align="center">

<hr align="center" size="2" width="100%">

</div>





<div class="MsoNormal" style="margin-top: 7.5pt;">More new features than ever. Check
out the new <a target="_blank" href="http://o.aolcdn.com/cdn.webmail.aol.com/mailtour/aol/en-us/text.htm?ncid=aolcmp00050000000003">AOL Mail</a>!</div>



</div>



</div>



</div>

 <!-- end of AOLMsgPart_3_49da1a5e-98ba-4ca1-b95d-798dc321f6ea -->



<div id="AOLMsgPart_4_49da1a5e-98ba-4ca1-b95d-798dc321f6ea" style="margin: 0px; font-family: Tahoma,Verdana,Arial,Sans-Serif; font-size: 12px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">

<pre style="font-size: 9pt;"><tt>_______________________________________________<br>
<br>
Proj mailing list<br>
<br>
<a href="mailto:Proj@lists.maptools.org">Proj@lists.maptools.org</a><br>
<a href="http://lists.maptools.org/mailman/listinfo/proj" target="_blank">http://lists.maptools.org/mailman/listinfo/proj</a>
</tt></pre>
</div>

 <!-- end of AOLMsgPart_4_49da1a5e-98ba-4ca1-b95d-798dc321f6ea -->

<div class="AOLPromoFooter">
<hr style="margin-top:10px;" />
More new features than ever.  Check out the new <a href="http://o.aolcdn.com/cdn.webmail.aol.com/mailtour/aol/en-us/text.htm?ncid=aolcmp00050000000003" target="_blank">AOL Mail</a>!<br/>
</div>