<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Jeff Vroom's Blog</title>
	<atom:link href="http://blog.jvroom.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jvroom.com</link>
	<description>Topics on efficient software, Java, Flex</description>
	<lastBuildDate>Thu, 09 Feb 2012 04:14:55 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on Debugging Hard Problems by jeffvroom</title>
		<link>http://blog.jvroom.com/2012/02/08/debugging-hard-problems/#comment-213</link>
		<dc:creator><![CDATA[jeffvroom]]></dc:creator>
		<pubDate>Thu, 09 Feb 2012 04:14:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=100#comment-213</guid>
		<description><![CDATA[Great point John O&#039;.  Good luck with that bug.  Maybe someone needs to build some nice tools to help track down Python/C++ memory problems.   In the old days, Java memory leaks were a real challenge.  You&#039;d think they&#039;d be easy cause the leak is actually a big pussball of objects in some reference chain.  Just find the chain.  Once the dump analyzers were written, they became easier as long as the leak was a really big fast leak.  One hack I used before the heap analyzers was to patch in a modified version of the major container classes: Vector, HashMap, etc. to dump a stack trace when the size reached a threshold like (size % 1,000) == 9999.   This would often find the allocation at fault without routing around in the dump even.  You&#039;d at least get an idea of the code paths involved in building the large data structures, assuming any one data structure grows large.   Finding the missing &quot;release reference&quot; is harder though in mixed language environments.  Code inspection seems like the place I&#039;d start with that.  Make an exhaustive list of all code paths that touch the leaked data object. Then follow each one methodically.]]></description>
		<content:encoded><![CDATA[<p>Great point John O&#8217;.  Good luck with that bug.  Maybe someone needs to build some nice tools to help track down Python/C++ memory problems.   In the old days, Java memory leaks were a real challenge.  You&#8217;d think they&#8217;d be easy cause the leak is actually a big pussball of objects in some reference chain.  Just find the chain.  Once the dump analyzers were written, they became easier as long as the leak was a really big fast leak.  One hack I used before the heap analyzers was to patch in a modified version of the major container classes: Vector, HashMap, etc. to dump a stack trace when the size reached a threshold like (size % 1,000) == 9999.   This would often find the allocation at fault without routing around in the dump even.  You&#8217;d at least get an idea of the code paths involved in building the large data structures, assuming any one data structure grows large.   Finding the missing &#8220;release reference&#8221; is harder though in mixed language environments.  Code inspection seems like the place I&#8217;d start with that.  Make an exhaustive list of all code paths that touch the leaked data object. Then follow each one methodically.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Debugging Hard Problems by JohnOS</title>
		<link>http://blog.jvroom.com/2012/02/08/debugging-hard-problems/#comment-212</link>
		<dc:creator><![CDATA[JohnOS]]></dc:creator>
		<pubDate>Wed, 08 Feb 2012 04:55:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=100#comment-212</guid>
		<description><![CDATA[Jeff: great post on a topic that deserves much more coverage. Especially salient for me right now as I;m working on a tough Python memory leak problem that is necessitating custom tooling in C++. On point 5, about theories, I find my own theories or preconceptions can sometimes blind me to the real nature of the underlying problem. I agree it&#039;s important to keep an open mind. One little &quot;meditational mantra&quot; I chant to myself when debugging is &quot;listen to the system&quot;, Read all those stack traces, logs and err msgs again, with an open mind, and try not to force them into whatever hypothesis you favour at any given time.]]></description>
		<content:encoded><![CDATA[<p>Jeff: great post on a topic that deserves much more coverage. Especially salient for me right now as I;m working on a tough Python memory leak problem that is necessitating custom tooling in C++. On point 5, about theories, I find my own theories or preconceptions can sometimes blind me to the real nature of the underlying problem. I agree it&#8217;s important to keep an open mind. One little &#8220;meditational mantra&#8221; I chant to myself when debugging is &#8220;listen to the system&#8221;, Read all those stack traces, logs and err msgs again, with an open mind, and try not to force them into whatever hypothesis you favour at any given time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by Frank Kim</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-207</link>
		<dc:creator><![CDATA[Frank Kim]]></dc:creator>
		<pubDate>Mon, 30 Jan 2012 21:42:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-207</guid>
		<description><![CDATA[Heroku prefers Jetty too.
Great discussion Jeff! :)]]></description>
		<content:encoded><![CDATA[<p>Heroku prefers Jetty too.<br />
Great discussion Jeff! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by jeffvroom</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-206</link>
		<dc:creator><![CDATA[jeffvroom]]></dc:creator>
		<pubDate>Mon, 30 Jan 2012 21:22:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-206</guid>
		<description><![CDATA[Oops... I&#039;m embarrassed.   I thought Node.js was just JQuery, not server side Javascript.   JQuery is what I was talking about :)   Node.js seems like a bad idea though I have not looked at it at all.   

For simple things I use Jetty.  I like Resin for performance/scalability/support.

I have heard Coffeescript is hard to debug and find the code hard to read.   I think DART maybe a better alternative down the road.]]></description>
		<content:encoded><![CDATA[<p>Oops&#8230; I&#8217;m embarrassed.   I thought Node.js was just JQuery, not server side Javascript.   JQuery is what I was talking about <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />    Node.js seems like a bad idea though I have not looked at it at all.   </p>
<p>For simple things I use Jetty.  I like Resin for performance/scalability/support.</p>
<p>I have heard Coffeescript is hard to debug and find the code hard to read.   I think DART maybe a better alternative down the road.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by Frank Kim</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-205</link>
		<dc:creator><![CDATA[Frank Kim]]></dc:creator>
		<pubDate>Mon, 30 Jan 2012 20:59:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-205</guid>
		<description><![CDATA[Jeff, good points about VPS. Which Java servers do you prefer using?

Jeff and Will, thanks for the feedback of Node.js. I found Node. js interesting because of how fast it ran. Seemed like a good solution for a server for mobile apps. But your feedback is deterring me. :-)]]></description>
		<content:encoded><![CDATA[<p>Jeff, good points about VPS. Which Java servers do you prefer using?</p>
<p>Jeff and Will, thanks for the feedback of Node.js. I found Node. js interesting because of how fast it ran. Seemed like a good solution for a server for mobile apps. But your feedback is deterring me. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by wsargent</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-204</link>
		<dc:creator><![CDATA[wsargent]]></dc:creator>
		<pubDate>Mon, 30 Jan 2012 20:46:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-204</guid>
		<description><![CDATA[I don&#039;t trust Node.js -- it seems to me as if the rapid adoption is directly from JS engineers who see a chance to break out of client side apps into server side code.  For me, the time to start using a new framework is when people start complaining about it and proposing workarounds.

Honestly, I don&#039;t think anything will replace Javascript on the client side; it&#039;s &quot;good enough&quot; for what it does and it is possible to use Coffeescript (or Uberscript if you really want types) to abstract the worst parts of Javascript into something usable.]]></description>
		<content:encoded><![CDATA[<p>I don&#8217;t trust Node.js &#8212; it seems to me as if the rapid adoption is directly from JS engineers who see a chance to break out of client side apps into server side code.  For me, the time to start using a new framework is when people start complaining about it and proposing workarounds.</p>
<p>Honestly, I don&#8217;t think anything will replace Javascript on the client side; it&#8217;s &#8220;good enough&#8221; for what it does and it is possible to use Coffeescript (or Uberscript if you really want types) to abstract the worst parts of Javascript into something usable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by jeffvroom</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-203</link>
		<dc:creator><![CDATA[jeffvroom]]></dc:creator>
		<pubDate>Mon, 30 Jan 2012 20:37:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-203</guid>
		<description><![CDATA[On the hosting question, I guess with VPS prices being so cheap these days, particularly if you can run with a low-memory footprint that hosting is not a big deal.   As one data point, I have two Java servers running on a 256MB VPS for $15/month.   I recently setup a VPS for a client and needed 512MB for Apache/PHP at $30/month and already had to reconfigure because we ran out of memory when a bit of load came in (apache was spawning too many processes I think).  

I haven&#039;t coded with Node.js but haven&#039;t seen a technology achieve such rapid adoption in a long time.  Javascript as a language I&#039;d say suffers both the brittleness of typeless languages without any advantages in productivity like you get with PHP or Ruby.  I played around with GWT but feel like it may be to heavyweight a solution... compile times are forever and debugging is challenging.   I&#039;d rather see a simpler, faster, more direct translation of Java to Javascript and where it wraps Node.js instead of implementing a new toolkit.  

Go seems like a solid candidate to replace C for systems programming but who would want to replace C?  I love C!]]></description>
		<content:encoded><![CDATA[<p>On the hosting question, I guess with VPS prices being so cheap these days, particularly if you can run with a low-memory footprint that hosting is not a big deal.   As one data point, I have two Java servers running on a 256MB VPS for $15/month.   I recently setup a VPS for a client and needed 512MB for Apache/PHP at $30/month and already had to reconfigure because we ran out of memory when a bit of load came in (apache was spawning too many processes I think).  </p>
<p>I haven&#8217;t coded with Node.js but haven&#8217;t seen a technology achieve such rapid adoption in a long time.  Javascript as a language I&#8217;d say suffers both the brittleness of typeless languages without any advantages in productivity like you get with PHP or Ruby.  I played around with GWT but feel like it may be to heavyweight a solution&#8230; compile times are forever and debugging is challenging.   I&#8217;d rather see a simpler, faster, more direct translation of Java to Javascript and where it wraps Node.js instead of implementing a new toolkit.  </p>
<p>Go seems like a solid candidate to replace C for systems programming but who would want to replace C?  I love C!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by Frank Kim</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-202</link>
		<dc:creator><![CDATA[Frank Kim]]></dc:creator>
		<pubDate>Mon, 30 Jan 2012 11:39:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-202</guid>
		<description><![CDATA[Also what do you think of Go, http://golang.org/? Sounds like the designers were thinking about the same things as you did when they created the language. Google is supporting it in its app engine.]]></description>
		<content:encoded><![CDATA[<p>Also what do you think of Go, <a href="http://golang.org/?" rel="nofollow">http://golang.org/?</a> Sounds like the designers were thinking about the same things as you did when they created the language. Google is supporting it in its app engine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by wsargent</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-201</link>
		<dc:creator><![CDATA[wsargent]]></dc:creator>
		<pubDate>Sun, 29 Jan 2012 21:49:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-201</guid>
		<description><![CDATA[If you have stateful features in your app, you typically rely on some sort of state caching -- people started off with memcached, but I think NoSQL systems like Redis, Cassandra and MongoDB are more in use these days -- they&#039;re fast enough to provide run-time state to systems that expect to see a session.

If you&#039;re using a stateful library that expects to have access to java.servlet.HttpSession (or even HttpServletRequest) then you have a problem in Play, because they&#039;re just flat out not available.  I had to fake one for Shiro: https://github.com/wsargent/play-shiro

More than that, many of the older Java libraries expect there to be a &quot;session&quot; of some kind available to the app -- Hibernate uses one, Shiro uses one, and under the newer models with async callback you may not be guaranteed to end up in the same thread, or even the same VM.  As in most architectures, the implicit assumptions are worse to deal with than the explicit compile time issues.

Regarding the source generation... yeah, compiled code is still faster than interpreted.  Play 1.2.4 has templates based on Groovy -- compare to Play Scala 0.9.1: http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/]]></description>
		<content:encoded><![CDATA[<p>If you have stateful features in your app, you typically rely on some sort of state caching &#8212; people started off with memcached, but I think NoSQL systems like Redis, Cassandra and MongoDB are more in use these days &#8212; they&#8217;re fast enough to provide run-time state to systems that expect to see a session.</p>
<p>If you&#8217;re using a stateful library that expects to have access to java.servlet.HttpSession (or even HttpServletRequest) then you have a problem in Play, because they&#8217;re just flat out not available.  I had to fake one for Shiro: <a href="https://github.com/wsargent/play-shiro" rel="nofollow">https://github.com/wsargent/play-shiro</a></p>
<p>More than that, many of the older Java libraries expect there to be a &#8220;session&#8221; of some kind available to the app &#8212; Hibernate uses one, Shiro uses one, and under the newer models with async callback you may not be guaranteed to end up in the same thread, or even the same VM.  As in most architectures, the implicit assumptions are worse to deal with than the explicit compile time issues.</p>
<p>Regarding the source generation&#8230; yeah, compiled code is still faster than interpreted.  Play 1.2.4 has templates based on Groovy &#8212; compare to Play Scala 0.9.1: <a href="http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/" rel="nofollow">http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Choosing Your Programming Language &#8211; The Inside Scoop by Frank Kim</title>
		<link>http://blog.jvroom.com/2012/01/28/choosing-your-programming-language-the-inside-scoop/#comment-200</link>
		<dc:creator><![CDATA[Frank Kim]]></dc:creator>
		<pubDate>Sun, 29 Jan 2012 20:22:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.jvroom.com/?p=94#comment-200</guid>
		<description><![CDATA[Great post Jeff. I still am attracted to how quickly I can get a website up and running on RoR versus using Java. But I do agree that as the project gets bigger the benefits of RoR decrease quickly.

I think one other issue for the small developer is hosting. Though Java hosting is becoming more available the ease and number of choices for hosting typeless apps is far larger.

Any thoughts on Node.js?]]></description>
		<content:encoded><![CDATA[<p>Great post Jeff. I still am attracted to how quickly I can get a website up and running on RoR versus using Java. But I do agree that as the project gets bigger the benefits of RoR decrease quickly.</p>
<p>I think one other issue for the small developer is hosting. Though Java hosting is becoming more available the ease and number of choices for hosting typeless apps is far larger.</p>
<p>Any thoughts on Node.js?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

