<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ORACLE-BASE Blog Aggregator &#187; Cary Millsap</title>
	<atom:link href="http://www.oracle-base.com/aggregator/author/cary-millsap/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oracle-base.com/aggregator</link>
	<description>Blogs I follow...</description>
	<lastBuildDate>Mon, 06 Feb 2012 11:08:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Ramp</title>
		<link>http://carymillsap.blogspot.com/2010/04/ramp.html</link>
		<comments>http://carymillsap.blogspot.com/2010/04/ramp.html#comments</comments>
		<pubDate>Fri, 30 Apr 2010 06:18:00 +0000</pubDate>
		<dc:creator>Cary Millsap</dc:creator>
		
		<guid isPermaLink="false">http://www.oracle-base.com/aggregator/?guid=846138a54f61b36904860cd1c6045a2e</guid>
		<description><![CDATA[I love stories about performance problems. Recently, my friend Debra Lilley sent me this one:I went to see a very large publishing company about 6 months after they went live. I asked them what their biggest issue was, and they told me querying in GL w...]]></description>
			<content:encoded><![CDATA[I love stories about performance problems. Recently, my friend <a href="http://debrasoracle.blogspot.com/">Debra Lilley</a> sent me this one:<br /><blockquote>I went to see a very large publishing company about 6 months after they went live. I asked them what their biggest issue was, and they told me querying in GL was very slow, and  I was able to fix quite easily. (There was a very simple concatenated index trick for the Chart of Accounts segments that people just never used.) Then I asked if there was anything else. The manager said no but the clerk who sat behind him said, “I have a problem.” His manager seemed embarrassed, but when I pressed him, the clerk continued, “Every day I throw away reams of paper from our invoice listing.”<br /><br />I asked to look at the request, which ran a simple listing of all invoices entered at a scheduled time each day. I opened up the schedule screen and there was a tick box to “Increment date on each run.” This was not ticked, and they were running the report from day 1, every day. When they accepted the system at go live there was no issue. I think all system implementations should include a 3- or 6-month review. Regardless of how good the implementers are, their setup is based on the information known at the time. In production, that information (volumes, etc.) often changes, and when it does, it can affect your decisions.<br /></blockquote><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mtpW1vu-FYo/S9rXMSKM46I/AAAAAAAABgQ/J0SCGzMXivg/s1600/The+Ramp.png"><img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_mtpW1vu-FYo/S9rXMSKM46I/AAAAAAAABgQ/J0SCGzMXivg/s200/The+Ramp.png" alt="" id="BLOGGER_PHOTO_ID_5465917703800546210" border="0" /></a>My friends <a href="http://www.spe-ed.com/instruct.htm">Connie Smith and Lloyd Williams</a> call this performance antipattern <a style="font-style: italic;" href="http://www.perfeng.com/papers/moreanti.pdf">The Ramp</a>. With <em>the ramp</em>, processing duration increases as the system is used. This invoicing system exhibited ramp behavior, because every invoicing process execution would take just a little bit longer and print just a few more pages than the prior execution did.<br /><br />The problem of <em>the ramp</em> reminds me of a joke I heard when I was young. A boy, one who is athletically very talented but not too bright, takes on a job as a <a href="http://www.envirocleanequip.com/site/Portals/0/Curved%20Highway%20stripes.jpg">stripe</a> painter for the highway department. The department gives him bucket of paint and a brush and drives him out to the highway he’s supposed to paint. His first day on the job, he paints a stripe almost seven miles long. This is an utterly stunning feat, for no one previously had ever painted more than five miles in a day. The department was ecstatic. Apparently, this boy’s true calling was to paint roadways.<br /><br />The excitement abated a little bit on the second day, when the boy painted only five miles of highway. But still, five miles is the best that anyone had ever done before him. But on the third day, the distance dropped to two miles, and on the fourth day, it fell to less than one mile.<br /><br />The department managers were gravely concerned, especially after having been so excited on the first couple of days. So they had a driver go out to fetch the boy, to bring him back to the office to explain why his productivity had been so outstanding at first but had then declined so horribly.<br /><br />The reason was easy to understand, the boy explained. Every day he painted, he kept getting farther and farther away from his paint bucket.<br /><br />I’ve known people who’ve written linked list insertion algorithms this way. <a href="http://joelonsoftware.com/">Joel Spolsky</a> has written about <a href="http://www.joelonsoftware.com/articles/fog0000000319.html">string library functions in C that work this way</a>. I’ve seen people write joins in SQL that work this way. And Debra’s publishing company ran their invoices this way.<br /><br />When you have <em>the ramp</em> problem, individual response times increase linearly. ...Which is bad. But overall response time varies in proportion to the <em>square</em> of the number of items being processed. ...Which is super-duper bad.<br /><br />Imagine, in the invoicing problem that Debra solved, that the system had been processing just one invoice per day and that each invoice is only one page long. Given that she was at a “very large publishing company,” it’s certain that the volume was greater than this, but for the sake of simplifying my argument, let’s assume that there was just one new invoice each day. Then, with the “Increment date on each run” box left unchecked, there would be one invoice to print on day 1, two on day 2, etc. On any day <em>n</em>, there would be <em>n</em> invoices to print.<br /><br />Obviously, the response time on any given day <em>n</em> would thus be <em>n</em> times longer than it needed to be. At the end of the first year of operation with the new application, an invoice would take 365 times longer to print than on the first day of the year.<br /><br />But the pain each day of invoice generation is not all there is to the problem. The original concern was expressed in terms of all the paper that was wasted. That paper waste is important, not just because of the environmental impact of unnecessary paper consumption, but also because of all the computing power expended over the operational history of the application required to generate those pages. That includes the resources (the electrical power, the CPU cycles, the memory, the disk and network I/Os, etc.) that could have been put to better use doing something else.<br /><br />In the simplified invoicing system I’ve asked you to imagine, the total number of pages printed as of the end of day <em>n</em> is 1 + 2 + ... + <em>n</em>, which is <em>n</em>(<em>n</em> + 1)/2. All but <em>n</em> of those pages are unnecessary. Thus the total number of wasted pages that will have been printed by the end of day <em>n</em> is <em>n</em>(<em>n</em> + 1)/2 – n, which is <em>n</em>(<em>n</em> – 1)/2, or (<em>n</em><sup>2</sup> – <em>n</em>)/2. The number of invoices that should never been printed is proportional to the <em>square</em> of the number of days using the application.<br /><br />To get a sense for what that means, think about this:<br /><ul><li>By the end of the first month, you'll have printed 465 pages when you only needed 30. That’s 435 unnecessary pages.</li><li>But by the end of the first year, you’ll have printed 66,795 pages instead of 365. That’s 66,430 unnecessary pages. It’s 27 unnecessary 2,500-page boxes of paper.</li><li>And by the end of the fifth year, you’ll have used 668 boxes of paper to print 1,668,508 pages instead of using just one box to print 1,826 pages. The picture below shows how tremendously wasteful this is.</li></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mtpW1vu-FYo/S9r7VLH-maI/AAAAAAAABgo/jliDqM_K7Ow/s1600/Wasted+Boxes.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 270px; height: 320px;" src="http://3.bp.blogspot.com/_mtpW1vu-FYo/S9r7VLH-maI/AAAAAAAABgo/jliDqM_K7Ow/s320/Wasted+Boxes.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465957438949595554" /></a><br />When total effort varies as the square of something (like the number of items to process, or the number of days you’ve been using an application), it’s bad, bad news for efficiency. It means that every time your something doubles, your performance (time, materials consumption, etc.) will degrade by a factor of four. Every time your something increases by a factor of ten, your performance will degrade by a factor of a hundred. When your something increases a hundred fold, performance will degrade by a factor of 10,000.<br /><br />Algorithm analysts characterize algorithms that behave this way as <a href="http://en.wikipedia.org/wiki/Big_O_notation">O(<em>n</em><sup>2</sup>)</a>, pronounced “big-oh of <em>n</em>-squared.” O(<em>n</em><sup>2</sup>) performance is no way to live. The good news is that you can usually break yourself out of a O(<em>n</em><sup>2</sup>) regime. Sometimes, as Debra’s story illustrates, the solution isn’t even technical: she solved her client’s problem by using an option designed into the end-user interface.<br /><br />No matter where the problem is—whether it’s problem with use, setup, implementation, design, or concept—it’s worth significant time and effort to find the O(<em>n</em><sup>2</sup>) problems in your system and eliminate them. Whenever you need reassurance of that idea, just glance again at the image of the paper boxes shown here.<br /><br />And by the way, do you remember my post about “<a href="http://carymillsap.blogspot.com/2009/12/my-whole-system-is-slow-now-what.html">Just go look at it</a>?” Tally one for Debra, for the win.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2954359812249072053-8613415200458460794?l=carymillsap.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://carymillsap.blogspot.com/feeds/8613415200458460794/comments/default</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>The “Do What You Love” Mirage</title>
		<link>http://www.oracle-base.com/aggregator/2009/12/22/the-do-what-you-love-mirage/</link>
		<comments>http://www.oracle-base.com/aggregator/2009/12/22/the-do-what-you-love-mirage/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 18:52:00 +0000</pubDate>
		<dc:creator>Cary Millsap</dc:creator>
		
		<guid isPermaLink="false">http://www.oracle-base.com/aggregator/?guid=486a316e6cbf0b4b2aed9bf4344839c4</guid>
		<description><![CDATA[I am inspired by having read an article called “Do what you love mirage” by Denis Basaric. It begins...“Do what you love” is advice I hear exclusively from financially secure people. And it rings hollow to me. When you need money to survive, yo...]]></description>
			<content:encoded><![CDATA[<p>I am inspired by having read an article called <a href="http://devcomponents.com/blog/?p=633" >“Do what you love mirage” by Denis Basaric</a>. It begins&#8230;<br />
<blockquote>“Do what you love” is advice I hear exclusively from financially secure people. And it rings hollow to me. When you need money to survive, you do any work that is available, love does not play into that choice. Desperation does.</p></blockquote>
<p>Please <a href="http://devcomponents.com/blog/?p=633" >read it</a> before you go on.</p>
<p>Welcome back.</p>
<p>This article puts a very important cycle within my life into words. I believe, as Denis says, that a lot of times, we get the cause-effect relationship mixed up when we think about loving what we do.</p>
<p>I love what I do. Well, a lot of it. But Denis is right: I didn’t choose what I do out of love. I chose what I love out of <em>doing</em>. Some examples:
<ul>
<li>I love mathematics. But I most assuredly did <em>not</em> always love it. I learned to love it through working hard at it.</li>
<li>It’s the same thing with writing. I love it, but I didn’t always. At first, writing was unrewarding drudgery, which is how most people I meet seem to feel about it.</li>
<li>I love public speaking, but I sure didn’t love it when my speech class made me sick to my stomach three mornings a week for a whole semester my freshman year.</li>
<li>I love being an Oracle performance specialist, but I sure didn’t love being airlifted into crisis after crisis throughout the early 1990s.</li>
</ul>
<p>I could go on. The point is, my life would be unrecognizably different if not for several really painful situations that I decided to endure with the resolve to get really good at what I hated. Until I loved it.</p>
<p>In retrospect, I seem to have been very lucky in many important situations. Of course, I have. But you make your own luck. Although I believe deeply in the idea of, “The harder I work, the luckier I get,” that is not what I’m talking about here. I’m talking about the power that you have to define for yourself whether something that happened was lucky for you or not. Your situations do not define your life. You <em>create</em> your life based on how you regard your situations.</p>
<p>I could have rebelled against Jimmy Harkey and hated math for the rest of my life. Lots of kids did. I could have rebelled against Lewis Parkhill and never become a writer. I could have refused Craig Newberger’s advice to take his second speech course and never become comfortable in front of an audience. I could have left Oracle in 1991 and found a job where they had more mature products&#8230;.</p>
<p>One of the most important questions that I ever asked my wife before our engagement was this:<br />
<blockquote>If you were forced to wash cars for 12 hours a day, just to make a living, could you <em>enjoy</em> it?</p></blockquote>
<p>This is a “soulmate” kind of question for me. My wife’s attitude about it is, for our children and me, possibly the most valuable gift in our lives.</p>
<p>Loving what you do can be difficult. I think Denis hits the nail on the head by suggesting that,<br />
<blockquote>By doing good work, you just might find out that what you are doing, is what you are supposed to do. And if you don’t, quality work will get you to where you want to be.</p></blockquote>
<p>I hope you will find love in what you do today. Do it well, and it’ll definitely improve your odds.
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2954359812249072053-3456464802362312645?l=carymillsap.blogspot.com' alt='' /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.oracle-base.com/aggregator/2009/12/22/the-do-what-you-love-mirage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

