<?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>Mark Gregory Turansky &#187; Engineering</title>
	<atom:link href="http://blog.markturansky.com/archives/category/software-engineering/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.markturansky.com</link>
	<description>software architecture &#38; engineering, code hints, sometimes philosophy, photography, life, etc.</description>
	<lastBuildDate>Mon, 29 Mar 2010 15:39:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Global Ponzi Scheme revisited</title>
		<link>http://blog.markturansky.com/archives/173</link>
		<comments>http://blog.markturansky.com/archives/173#comments</comments>
		<pubDate>Mon, 25 Jan 2010 01:56:06 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/?p=173</guid>
		<description><![CDATA[The Economist has an interesting article talking about the true cost of goods and services we take for granted when the environmental impact is measured and accounted for.  This is also Lester Brown&#8217;s argument, which I wrote about recently.  Mr. Brown calls it a Global Ponzi scheme.
In The Economist&#8217;s article, the author writes about the [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/173/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Declassified imagery graphically shows global warming in action</title>
		<link>http://blog.markturansky.com/archives/144</link>
		<comments>http://blog.markturansky.com/archives/144#comments</comments>
		<pubDate>Tue, 28 Jul 2009 13:10:37 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/144</guid>
		<description><![CDATA[President Barack Obama declassified satellite imagery that graphically shows the effect of global warming.  The imagery was previously kept classified by the Bush administration.
Read more:
http://www.guardian.co.uk/environment/2009/jul/26/climate-change-obama-administration
View the images:
http://gfl.usgs.gov/Publications.shtml
]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/144/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Truth About Code Generation</title>
		<link>http://blog.markturansky.com/archives/133</link>
		<comments>http://blog.markturansky.com/archives/133#comments</comments>
		<pubDate>Sat, 16 May 2009 10:50:05 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Hints]]></category>
		<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/133</guid>
		<description><![CDATA[Code generation done right can be a very effective and highly useful tool in your toolbox.  Done wrong it could be a maintenance nightmare.  This article reflects on different types of code generation, when to use each of them, and explains some pitfalls to avoid.
WHAT CODE GENERATION ISN&#8217;T:  A SILVER BULLET

Before we explore what code [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/133/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Be mindful of Collection.contains(obj)</title>
		<link>http://blog.markturansky.com/archives/129</link>
		<comments>http://blog.markturansky.com/archives/129#comments</comments>
		<pubDate>Fri, 08 May 2009 19:35:50 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Code Hints]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[HOW TO]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/129</guid>
		<description><![CDATA[Summary
All Collection.contains(obj) methods are not the same!
This article is a real world case study of the Big O differences between various implementations of Java&#8217;s Collection interface.   I found and fixed a grievous O(n^2) algorithm by using the right data structure.
Background
I was asked to investigate why some pages in our web application would save session data [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/129/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Frequently Forgotten Fundamental Facts about Software Engineering</title>
		<link>http://blog.markturansky.com/archives/128</link>
		<comments>http://blog.markturansky.com/archives/128#comments</comments>
		<pubDate>Wed, 06 May 2009 21:48:22 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/128</guid>
		<description><![CDATA[I ran across this interesting article today:  Frequently Forgotten Fundamental Facts about Software Engineering.
I particularly like Requirements &#38; Design bullet 2 (RD2) because we tend to gloss over &#8220;non-functional requirements&#8221; (e.g, performance, creating frameworks, etc.):
RD2. When a project moves from requirements to design, the solution process&#8217;s complexity causes an explosion of &#8220;derived requirements.&#8221; The list [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/128/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Failure rates are cumulative</title>
		<link>http://blog.markturansky.com/archives/127</link>
		<comments>http://blog.markturansky.com/archives/127#comments</comments>
		<pubDate>Sat, 11 Apr 2009 17:21:12 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/127</guid>
		<description><![CDATA[There used to be only two guarantees in life:  death and taxes.  In today&#8217;s complex IT environment, we can add a third:  Your production software systems will fail.  This is an absolute guarantee because the math is stacked against you.
Why?  Because failure rates are cumulative.  Simply put, five integrated systems each with 99.9% uptime yields [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/127/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Zombie Horde vs. A Posse of Cowboys</title>
		<link>http://blog.markturansky.com/archives/123</link>
		<comments>http://blog.markturansky.com/archives/123#comments</comments>
		<pubDate>Wed, 07 Jan 2009 11:37:20 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/123</guid>
		<description><![CDATA[A recent blog entry attempts to paint Big M Methodology as a zombie creating process and quotes Peopleware as the sole evidence of its argument.  You, the poor developer, are turned into a mindless zombie by having a defined process to follow.  You are given no license for creativity, no room for error, and you [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/123/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best technical definition ever</title>
		<link>http://blog.markturansky.com/archives/120</link>
		<comments>http://blog.markturansky.com/archives/120#comments</comments>
		<pubDate>Fri, 14 Nov 2008 15:04:30 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/120</guid>
		<description><![CDATA[&#8220;ORA-12505: TNS: listener does not currently know of SID given in connect descriptor&#8221;
What does that error mean?  The site below defines the error eloquently:

]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/120/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Money as Debt</title>
		<link>http://blog.markturansky.com/archives/108</link>
		<comments>http://blog.markturansky.com/archives/108#comments</comments>
		<pubDate>Tue, 23 Sep 2008 06:41:05 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/108</guid>
		<description><![CDATA[Want to know why the credit crunch is going on?  Watch this highly enlightening video (broken down into 5 individual movies to fit YouTube limits).  The video clearly explains why a &#8220;run on the bank&#8221; is deadly to an individual bank, and why there would be a &#8220;credit crunch&#8221; when there&#8217;s a run [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/108/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HOW TO:  Enable debug and JMX ports in your java app</title>
		<link>http://blog.markturansky.com/archives/107</link>
		<comments>http://blog.markturansky.com/archives/107#comments</comments>
		<pubDate>Mon, 15 Sep 2008 21:38:25 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[HOW TO]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/107</guid>
		<description><![CDATA[Ever have a stuck or deadlocked thread in a production application? Use JMX to inspect what&#8217;s going on inside your JVM, which includes thread views.  It&#8217;ll show you which threads are running, waiting, or blocked and where in the stacktrace they currently are.  I&#8217;ve used this information to find blocked threads in strange places.  JMX [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &#8220;I think I&#8217;m off the air but the mic is hot&#8221; mic</title>
		<link>http://blog.markturansky.com/archives/105</link>
		<comments>http://blog.markturansky.com/archives/105#comments</comments>
		<pubDate>Thu, 04 Sep 2008 01:47:11 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/105</guid>
		<description><![CDATA[
]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/105/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HOW TO:  Use mini-batching to improve grid performance</title>
		<link>http://blog.markturansky.com/archives/97</link>
		<comments>http://blog.markturansky.com/archives/97#comments</comments>
		<pubDate>Fri, 25 Jul 2008 20:20:35 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Hints]]></category>
		<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/97</guid>
		<description><![CDATA[We achieved a 3.5X increase in throughput by implementing &#8220;mini-batching&#8221; in our grid-enabled jobs.
We have a parent BatchService that creates child Services where each individual Service is a unit of work.  A Service implementation might perform some calculation for a single employee of a large employer group.  When the individual Services are very fast and [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/97/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to incur 3X costs for 1X worth of functionality</title>
		<link>http://blog.markturansky.com/archives/92</link>
		<comments>http://blog.markturansky.com/archives/92#comments</comments>
		<pubDate>Tue, 17 Jun 2008 14:33:19 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/92</guid>
		<description><![CDATA[A software development lifecycle that does not include design review early in the process is doomed to poor estimates, cost overruns, and a wildly inaccurate schedule.
Why?  Let me tell you what just happened to me.
I picked up a task for a project manager because I had some time free and his resources were completely [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/92/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HOW TO:  Use JDBC Batching for 7-8X throughput gains</title>
		<link>http://blog.markturansky.com/archives/87</link>
		<comments>http://blog.markturansky.com/archives/87#comments</comments>
		<pubDate>Tue, 03 Jun 2008 13:49:27 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Code Hints]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[HOW TO]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/87</guid>
		<description><![CDATA[Using the batched statement capability of your JDBC driver can give you 7-8X throughput gains.  Not only is batching significantly faster, it&#8217;ll save database CPU cycles and be easier on the network, too.
The graph below shows elapsed time (in milliseconds) by batch size.  For each data point, 1K rows were inserted into a [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/87/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>More proof that you can&#8217;t keep a good idea down?</title>
		<link>http://blog.markturansky.com/archives/78</link>
		<comments>http://blog.markturansky.com/archives/78#comments</comments>
		<pubDate>Wed, 07 May 2008 03:18:08 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Terracotta]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/78</guid>
		<description><![CDATA[In this blog article, Michael Nygard discusses a talk he attended where a technical architect discussed an SOA framework at FIDUCIA IT AG, a company in the financial services industry.  Nygard describes an architecture that echoes many of the features I implicitly spoke of in my first blog article about my big integration project [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/78/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>When you absolutely, positively have to write software that does not fail</title>
		<link>http://blog.markturansky.com/archives/75</link>
		<comments>http://blog.markturansky.com/archives/75#comments</comments>
		<pubDate>Mon, 21 Apr 2008 20:16:02 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/75</guid>
		<description><![CDATA[I&#8217;ve been fascinated about the software they run on the space shuttle ever since I read this article years ago:  They Write the Right Stuff

Today, I ran across this article about Self-Modifying Code written by someone that used to work at Lockheed on the shuttle.  He describes using it for fault tolerance down near [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/75/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Very Old School &#8212; Walking down memory lane</title>
		<link>http://blog.markturansky.com/archives/74</link>
		<comments>http://blog.markturansky.com/archives/74#comments</comments>
		<pubDate>Sun, 20 Apr 2008 04:53:56 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/74</guid>
		<description><![CDATA[I vividly remember when my neighbor two doors down got an Atari 2600 in 1978.  I was probably 4 1/2, maybe 5, but I remember the first time I saw Space Invaders.  It was the only game they had.  My brothers and I pooled our allowances for a while and bought our [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/74/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Linux will never be the world&#8217;s primary desktop</title>
		<link>http://blog.markturansky.com/archives/72</link>
		<comments>http://blog.markturansky.com/archives/72#comments</comments>
		<pubDate>Wed, 02 Apr 2008 15:30:42 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/72</guid>
		<description><![CDATA[Every year for the past N years has been proclaimed as &#8220;The Year of Linux on the Desktop!&#8221;  It hasn&#8217;t happened.  It will never happen.
Why?
GNOME vs. KDE?  Which distro?
I understand that Linux is the kernel and that GNOME/KDE is the desktop.  I am well aware of this distinction.  Joe Average [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/72/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>&#8220;Don&#8217;t Make Me Think&#8221; applies to your code, too</title>
		<link>http://blog.markturansky.com/archives/70</link>
		<comments>http://blog.markturansky.com/archives/70#comments</comments>
		<pubDate>Fri, 28 Mar 2008 03:35:03 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Code Hints]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[HOW TO]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/70</guid>
		<description><![CDATA[Don&#8217;t make me think.  That&#8217;s how I feel about your code.
Or as Martin Fowler puts it:
&#8220;Any fool can write code that a computer can understand. Good programmers write code that humans can understand.&#8221;  -Martin Fowler, Refactoring: Improving the Design of Existing Code
You&#8217;ve reached a whole new level of mastery when you write for [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/70/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>No one should work alone.  Ever.</title>
		<link>http://blog.markturansky.com/archives/69</link>
		<comments>http://blog.markturansky.com/archives/69#comments</comments>
		<pubDate>Wed, 26 Mar 2008 02:05:51 +0000</pubDate>
		<dc:creator>Mark Turansky</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.markturansky.com/archives/69</guid>
		<description><![CDATA[No one should work alone; not in design or planning or coding or any other aspect of software development.  Why?
Nobody gets it right the first time.  Nobody.
Moreover, different people have difference experience.  I&#8217;d be foolish to think I could write something as good as someone who&#8217;s already done it.  You cut [...]]]></description>
		<wfw:commentRss>http://blog.markturansky.com/archives/69/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
