<story><title>New IDE: code bubbles</title><url>http://www.cs.brown.edu/people/acb/codebubbles_site.htm</url></story><parent_chain><item><author>pohl</author><text>I&apos;d like to have a dollar for every time I&apos;ve seen a NullPointerException on some line that was constructed by someone who loves the list of methods that automagically pops up for the dot operator:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  foo.bar().baz().qux()
&lt;/code&gt;&lt;/pre&gt;
...Grrrrr!</text></item><item><author>jacquesm</author><text>IDE&apos;s can be neat, but plenty of people seem to use them as crutches to keep on walking through minefields of APIs.&lt;p&gt;Since the IDE remembers all your parameter sequences and types there is also less incentive for developers of APIs to think ahead of time and plan their interface so it is consistent and easy to remember.</text></item><item><author>jasonkester</author><text>Programming hasn&apos;t been about files for a long time now.  That&apos;s the reason that we have IDEs in the first place, and why I cringe when people talk about writing code in a text editor.&lt;p&gt;Any IDE worth its salt will do all the things in that video, except for the little draggable bubbles.</text></item><item><author>Vivtek</author><text>That is a very interesting approach - instead of just presenting &lt;i&gt;files&lt;/i&gt;, this IDE is already abstracting out some of the semantic structure for you and presenting code based on its &lt;i&gt;relationships&lt;/i&gt;.  It&apos;s meeting you halfway.  &lt;i&gt;And&lt;/i&gt; it keeps track of things the way you work - by explicitly acknowledging the task structure of the work, it&apos;s again meeting you halfway.&lt;p&gt;This is a really promising start.  Very cool.</text></item></parent_chain><comment><author>jrockway</author><text>If only there was some combinator for sequencing computations... then you could write:&lt;p&gt;&lt;pre&gt;&lt;code&gt;   foo &amp;#62;&amp;#62;= bar &amp;#62;&amp;#62;= baz &amp;#62;&amp;#62;= quux
&lt;/code&gt;&lt;/pre&gt;
and there would never be a NullPointerException, because the &amp;#62;&amp;#62;= function could react appropriately when null was encountered!</text></comment>
<story><title>New IDE: code bubbles</title><url>http://www.cs.brown.edu/people/acb/codebubbles_site.htm</url></story><parent_chain><item><author>pohl</author><text>I&apos;d like to have a dollar for every time I&apos;ve seen a NullPointerException on some line that was constructed by someone who loves the list of methods that automagically pops up for the dot operator:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  foo.bar().baz().qux()
&lt;/code&gt;&lt;/pre&gt;
...Grrrrr!</text></item><item><author>jacquesm</author><text>IDE&apos;s can be neat, but plenty of people seem to use them as crutches to keep on walking through minefields of APIs.&lt;p&gt;Since the IDE remembers all your parameter sequences and types there is also less incentive for developers of APIs to think ahead of time and plan their interface so it is consistent and easy to remember.</text></item><item><author>jasonkester</author><text>Programming hasn&apos;t been about files for a long time now.  That&apos;s the reason that we have IDEs in the first place, and why I cringe when people talk about writing code in a text editor.&lt;p&gt;Any IDE worth its salt will do all the things in that video, except for the little draggable bubbles.</text></item><item><author>Vivtek</author><text>That is a very interesting approach - instead of just presenting &lt;i&gt;files&lt;/i&gt;, this IDE is already abstracting out some of the semantic structure for you and presenting code based on its &lt;i&gt;relationships&lt;/i&gt;.  It&apos;s meeting you halfway.  &lt;i&gt;And&lt;/i&gt; it keeps track of things the way you work - by explicitly acknowledging the task structure of the work, it&apos;s again meeting you halfway.&lt;p&gt;This is a really promising start.  Very cool.</text></item></parent_chain><comment><author>rcoder</author><text>You know what&apos;s even better? When someone who writes that style of code (in C++, no less!) &lt;i&gt;knows&lt;/i&gt; that one of the intermediate values could be null, so they use a set of macros involving setjmp and longjmp, and trap SIGFPE, all to implement a fragile sort of try/catch for null de-references.&lt;p&gt;Clever? Insane? Horribly un-portable and prone to breakage depending on compiler, libc, and OS versions? All of the above!&lt;p&gt;(And yes, I have seen this coding style used in multiple projects at a major corporation. It was a favorite of a coder-turned manager, which means it tended to sneak in on any project he supervised.)</text></comment>