<?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"
	>
<channel>
	<title>Comments on: Crashing When Something Feels Wrong</title>
	<atom:link href="http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/</link>
	<description></description>
	<pubDate>Wed, 23 Jul 2008 21:52:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: Pat</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-419</link>
		<dc:creator>Pat</dc:creator>
		<pubDate>Tue, 15 Apr 2008 21:42:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-419</guid>
		<description>All this logging and analysis, in a production service, sounds like it would cost a lot of CPU time and could easily be overkill.</description>
		<content:encoded><![CDATA[<p>All this logging and analysis, in a production service, sounds like it would cost a lot of CPU time and could easily be overkill.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-412</link>
		<dc:creator>James</dc:creator>
		<pubDate>Tue, 15 Apr 2008 13:27:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-412</guid>
		<description>My suggestion is logging combined with log-analysis tools.  You *could* monitor processes (like Erlang style concurrrency) as well.

With logs, you just output your info into a file (or db table) and then periodically analyze the data for patterns.  These patterns could be trained (e.g. Bayesian filtering) or matched against known problem sequences (e.g. a state machine that acts like a code/regexp parser).</description>
		<content:encoded><![CDATA[<p>My suggestion is logging combined with log-analysis tools.  You *could* monitor processes (like Erlang style concurrrency) as well.</p>
<p>With logs, you just output your info into a file (or db table) and then periodically analyze the data for patterns.  These patterns could be trained (e.g. Bayesian filtering) or matched against known problem sequences (e.g. a state machine that acts like a code/regexp parser).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: john</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-411</link>
		<dc:creator>john</dc:creator>
		<pubDate>Tue, 15 Apr 2008 11:19:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-411</guid>
		<description>I once ran a messaging system which received about a million records a day.  I also ran a document generation system that FTP'd anywhere from 10,000 to 60,000 files a night.  Both systems had multiple, custom built monitors which could page developers if problems arose.</description>
		<content:encoded><![CDATA[<p>I once ran a messaging system which received about a million records a day.  I also ran a document generation system that FTP&#8217;d anywhere from 10,000 to 60,000 files a night.  Both systems had multiple, custom built monitors which could page developers if problems arose.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: autotrader</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-408</link>
		<dc:creator>autotrader</dc:creator>
		<pubDate>Tue, 15 Apr 2008 07:46:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-408</guid>
		<description>Your approach to probabilistic assertions is very interesting. I am using a similar approach on some of my trading algorithms. Basically, if some statistical conditions show that "shouldn't be there" the system gets ready to dump the trade. However, to make it perfect, I think the system should keep track of every time the "feeling" was correct (i.e., the system did crash or the stock, in my case, moved in the wrong direction). After that, we would need a Bayesian calculation of probabilities before crashing the system. 
I haven't included in my systems because it is too much work, but I still think that is something I will do in the future. 
Maybe you may move your system one step forward and record the "feeling" hits and create a simpler algorithm for actual crashing based on that.
At the beginning you would never crash the system, but as you get more data you would crash the system more selectively. 
My 2 cents</description>
		<content:encoded><![CDATA[<p>Your approach to probabilistic assertions is very interesting. I am using a similar approach on some of my trading algorithms. Basically, if some statistical conditions show that &#8220;shouldn&#8217;t be there&#8221; the system gets ready to dump the trade. However, to make it perfect, I think the system should keep track of every time the &#8220;feeling&#8221; was correct (i.e., the system did crash or the stock, in my case, moved in the wrong direction). After that, we would need a Bayesian calculation of probabilities before crashing the system.<br />
I haven&#8217;t included in my systems because it is too much work, but I still think that is something I will do in the future.<br />
Maybe you may move your system one step forward and record the &#8220;feeling&#8221; hits and create a simpler algorithm for actual crashing based on that.<br />
At the beginning you would never crash the system, but as you get more data you would crash the system more selectively.<br />
My 2 cents</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: elias</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-406</link>
		<dc:creator>elias</dc:creator>
		<pubDate>Tue, 15 Apr 2008 06:17:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-406</guid>
		<description>About generating the core dump without crashing with a sigsegv, you could use Google's Core Dumper
(https://sourceforge.net/projects/goog-coredumper/)

"A neat tool for creating GDB readable coredumps from multithreaded applications -- while the program is running."</description>
		<content:encoded><![CDATA[<p>About generating the core dump without crashing with a sigsegv, you could use Google&#8217;s Core Dumper<br />
(https://sourceforge.net/projects/goog-coredumper/)</p>
<p>&#8220;A neat tool for creating GDB readable coredumps from multithreaded applications &#8212; while the program is running.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Emre</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-405</link>
		<dc:creator>Emre</dc:creator>
		<pubDate>Tue, 15 Apr 2008 05:38:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-405</guid>
		<description>You might enjoy reading this paper, "Pip: Detecting the Unexpected in Distributed Systems".  Among other things, the Pip system supports the kind of aggregate assertions/checks that you mention.

There's source available at http://issg.cs.duke.edu/pip/


http://issg.cs.duke.edu/pip/nsdi06preprint.pdf
(from the abstract)
We present Pip, an infrastructure for comparing
actual behavior and expected behavior to expose structural
errors and performance problems in distributed systems.
Pip allows programmers to express, in a declarative
language, expectations about the system’s communications
structure, timing, and resource consumption. Pip
includes system instrumentation and annotation tools to
log actual system behavior, and visualization and query
tools for exploring expected and unexpected behavior.</description>
		<content:encoded><![CDATA[<p>You might enjoy reading this paper, &#8220;Pip: Detecting the Unexpected in Distributed Systems&#8221;.  Among other things, the Pip system supports the kind of aggregate assertions/checks that you mention.</p>
<p>There&#8217;s source available at <a href="http://issg.cs.duke.edu/pip/" rel="nofollow">http://issg.cs.duke.edu/pip/</a></p>
<p><a href="http://issg.cs.duke.edu/pip/nsdi06preprint.pdf" rel="nofollow">http://issg.cs.duke.edu/pip/nsdi06preprint.pdf</a><br />
(from the abstract)<br />
We present Pip, an infrastructure for comparing<br />
actual behavior and expected behavior to expose structural<br />
errors and performance problems in distributed systems.<br />
Pip allows programmers to express, in a declarative<br />
language, expectations about the system’s communications<br />
structure, timing, and resource consumption. Pip<br />
includes system instrumentation and annotation tools to<br />
log actual system behavior, and visualization and query<br />
tools for exploring expected and unexpected behavior.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JS</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-404</link>
		<dc:creator>JS</dc:creator>
		<pubDate>Tue, 15 Apr 2008 04:58:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-404</guid>
		<description>Hello Tom,

My bank calls me whenever they see 'suspicious' activity on my accounts such as a flurry of purchases or other transactions that doesn't fit in with the normal usage patterns.  Airport security in some places are moving toward behavioral profiling, where they watch for people whose actions in the airport or other details doesn't fit in with the expected pattern are identified for additional inspection.  What you're proposing happens a lot in the real world so it makes sense that it would work for software management as well!  Great idea; good luck with its implementation.</description>
		<content:encoded><![CDATA[<p>Hello Tom,</p>
<p>My bank calls me whenever they see &#8217;suspicious&#8217; activity on my accounts such as a flurry of purchases or other transactions that doesn&#8217;t fit in with the normal usage patterns.  Airport security in some places are moving toward behavioral profiling, where they watch for people whose actions in the airport or other details doesn&#8217;t fit in with the expected pattern are identified for additional inspection.  What you&#8217;re proposing happens a lot in the real world so it makes sense that it would work for software management as well!  Great idea; good luck with its implementation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Cooper</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-400</link>
		<dc:creator>Steve Cooper</dc:creator>
		<pubDate>Mon, 14 Apr 2008 23:08:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-400</guid>
		<description>Could another type of assertion use spam-filter-like algorithms to detect abnormal ('spam') situations? Train a filter to recognise odd situations.</description>
		<content:encoded><![CDATA[<p>Could another type of assertion use spam-filter-like algorithms to detect abnormal (&#8217;spam&#8217;) situations? Train a filter to recognise odd situations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Blinkinsop</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-398</link>
		<dc:creator>Adam Blinkinsop</dc:creator>
		<pubDate>Mon, 14 Apr 2008 22:20:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-398</guid>
		<description>Yay for automated monitoring software.  Nagios (http://www.nagios.org/) does this for networks (and is extendable for some other things).  At my old job we used Hobbit (http://hobbitmon.sourceforge.net/) to watch our Java server instances (memory usage, etc.).  There's no reason why these monitoring programs couldn't be used to monitor internal program statistics, as long as those stats were made available.

Generally you monitor from your internal network, and then provide some hook for the monitor to get information that's only accessible from there.  (SSH or a limited-access URL, etc.)

Monitoring programs are super-powerful and generally complex.  Check them out -- it's a good skill to have when working with production software.</description>
		<content:encoded><![CDATA[<p>Yay for automated monitoring software.  Nagios (http://www.nagios.org/) does this for networks (and is extendable for some other things).  At my old job we used Hobbit (http://hobbitmon.sourceforge.net/) to watch our Java server instances (memory usage, etc.).  There&#8217;s no reason why these monitoring programs couldn&#8217;t be used to monitor internal program statistics, as long as those stats were made available.</p>
<p>Generally you monitor from your internal network, and then provide some hook for the monitor to get information that&#8217;s only accessible from there.  (SSH or a limited-access URL, etc.)</p>
<p>Monitoring programs are super-powerful and generally complex.  Check them out &#8212; it&#8217;s a good skill to have when working with production software.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian Kuhn</title>
		<link>http://www.spiteful.com/2008/04/14/crashing-when-something-feels-wrong/#comment-396</link>
		<dc:creator>Adrian Kuhn</dc:creator>
		<pubDate>Mon, 14 Apr 2008 21:06:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.spiteful.com/?p=56#comment-396</guid>
		<description>&#62; I even like running production services with assertions turned on. 

The you might like this little Javac plugin, that turns all assertions into explicit exception throws, such that you can not turn them off any more.

http://smallwiki.unibe.ch/adriankuhn/javacompiler/forceassertions/</description>
		<content:encoded><![CDATA[<p>&gt; I even like running production services with assertions turned on. </p>
<p>The you might like this little Javac plugin, that turns all assertions into explicit exception throws, such that you can not turn them off any more.</p>
<p><a href="http://smallwiki.unibe.ch/adriankuhn/javacompiler/forceassertions/" rel="nofollow">http://smallwiki.unibe.ch/adriankuhn/javacompiler/forceassertions/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.345 seconds -->
