<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Talk Like A Duck: Tag visualage</title>
    <link>http://talklikeaduck.denhaven2.com/articles/tag/visualage</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>In Ruby, it's not the dog, it's the tricks!</description>
    <item>
      <title>Will It Go Round in Circles?</title>
      <description>&lt;p&gt;I really like seeing the resurgence of interest in &lt;a href="http://blogs.gartner.com/mark_driver/2008/10/09/remember-smalltalk"&gt;my second most favorite programming language&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the comments to the referenced Gartner Group blog post had a link to an &lt;span class="caps"&gt;IBM&lt;/span&gt; Developer Works article about using &lt;a href="http://www.ibm.com/developerworks/blogs/page/stdt"&gt;using Eclipse as a Smalltalk &lt;span class="caps"&gt;IDE&lt;/span&gt;.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It seems like a strange loop, since Eclipse is the descendant of IBMs old VisualAge. Now I happen to know a bit about this since I was involved at the beginning.  I guess that enough time has passed that nothing I say here will affect anyone&amp;#8217;s business.&lt;/p&gt;
&lt;h2&gt;&lt;span class="caps"&gt;IBM&lt;/span&gt;, Smalltalk, and VisualAge&lt;/h2&gt;
&lt;p&gt;VisualAge started out as a demonstration prototype I wrote using Digitalk Smalltalk/V. The idea was to make something like the NeXT interface builder in Smalltalk as an adjunct to the Smalltalk &lt;span class="caps"&gt;IDE&lt;/span&gt;.  For those who are not hip to such things, the Interface Builder, originally a Lisp program before Steve Jobs hired the author, lives on as part of Apple&amp;#8217;s XCode tool suite for OS/X for the Mac and the iPhone.&lt;/p&gt;
&lt;p&gt;The demo got some key &lt;span class="caps"&gt;IBM&lt;/span&gt; executives excited, and so the VisualAge development organization was born.  Development proceeded using Smalltalk/V, along with Object Technology International&amp;#8217;s (OTI) Envy/Developer, which was the state of the art version and configuration management for Smalltalk team programming.&lt;/p&gt;
&lt;p&gt;As the project progressed, &lt;span class="caps"&gt;IBM&lt;/span&gt; and Digitalk had a falling out over conflicting views of who should be doing what. I&amp;#8217;d shown the prototype to them in my position as liaison between the two companies, and they launched their Look and Feel kit which was seen by &lt;span class="caps"&gt;IBM&lt;/span&gt; management as competition from a supplier.  So since we already had a relationship with &lt;span class="caps"&gt;OTI&lt;/span&gt; because of Envy/Developer, and &lt;span class="caps"&gt;OTI&lt;/span&gt; was in the business of building Smalltalk VMs, including the VM used by Digitalk&amp;#8217;s Smalltalk/V for the Macintosh, &lt;span class="caps"&gt;IBM&lt;/span&gt; switched horses and contracted &lt;span class="caps"&gt;OTI&lt;/span&gt; to build &amp;#8220;IBM&amp;#8221; Smalltalk.  This eventually led to the acquisition of &lt;span class="caps"&gt;OTI&lt;/span&gt; by &lt;span class="caps"&gt;IBM&lt;/span&gt; Canada.&lt;/p&gt;
&lt;p&gt;This was about the time we founded the &lt;span class="caps"&gt;ANSI X3J20&lt;/span&gt; committee to forge a standard across the existing and emerging Smalltalk implementations.  I served as the secretary of &lt;span class="caps"&gt;X3J20&lt;/span&gt;.  Some of the other members included Peter Deutsch and Glenn Krasner of ParcPlace, which Xerox had spun-off from their Palo Alto Research Center to commercialize Smalltalk-80; George Bosworth of Digitalk; Allen Wirfs-Brock of Instantiations one of the more successful Smalltalk consulting companies in the Portland Oregon suburbs; David Simmons who was the brains behind the iconoclastic Smalltalk/Agents; and Bruce Schuchardt who worked for Servio-Logic or Gemstone, I can&amp;#8217;t recall which name they were going under at the time.  I&amp;#8217;m sure that I&amp;#8217;m forgetting some of the players, but I&amp;#8217;ll plead senility.&lt;/p&gt;
&lt;p&gt;One of the great joys of working in Smalltalk during it&amp;#8217;s first &amp;#8220;glory days&amp;#8221; was the opportunity to work with and exchange ideas with such brilliant people in &lt;span class="caps"&gt;IBM&lt;/span&gt;, OTI, and other companies.&lt;/p&gt;
&lt;p&gt;VisualAge grew to become an entire family of development environments for several of the &lt;span class="caps"&gt;IBM&lt;/span&gt; &amp;#8220;SAA&amp;#8221; programming languages. There was even a VisualAge for Cobol! All of the various flavors featured an &lt;span class="caps"&gt;IDE&lt;/span&gt; written in &lt;span class="caps"&gt;IBM&lt;/span&gt; Smalltalk.&lt;/p&gt;
&lt;h2&gt;Enter Java&lt;/h2&gt;
&lt;p&gt;When Java &amp;#8220;reared it&amp;#8217;s head.&amp;#8221;  &lt;span class="caps"&gt;IBM&lt;/span&gt;, of course came out with VisualAge for Java.  Again, the &lt;span class="caps"&gt;IDE&lt;/span&gt; was written in Smalltalk, although, in order to accomodate Java execution, &lt;span class="caps"&gt;OTI&lt;/span&gt; developed what was called the &lt;span class="caps"&gt;UVM&lt;/span&gt; (or Universal Virtual Machine) whcih could execute both Smalltalk and Java byte-codes, and used Smalltalk to implement the Java primitive functions which were implemented in C in the Sun &lt;span class="caps"&gt;JVM&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;IBM&lt;/span&gt; eventually switched its focus from Smalltalk to Java. After considerable thought about this, and conversations with those &lt;a href="http://agiletoolkit.libsyn.com/index.php?post_id=252431"&gt;who were in a position to know&lt;/a&gt;, I&amp;#8217;m now convinced that this had nothing to do with the relative technical merits, and everything to do with a combined &lt;span class="caps"&gt;IBM&lt;/span&gt;/Sun platform play against Microsoft.&lt;/p&gt;
&lt;p&gt;VisualAge for Java did eventually move away from the &lt;span class="caps"&gt;UVM&lt;/span&gt; for Java execution, primarily because the Java language had evolved to provide a standard C api for extensions.  &lt;span class="caps"&gt;OTI&lt;/span&gt; began implementation of a new &lt;span class="caps"&gt;JVM&lt;/span&gt;, which was dubbed J9, which was built from the ground up to be usable in embedded systems.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;OTI&lt;/span&gt; had a reputation of fostering the use of Smalltalk in embedded systems.  When I first became aware of them in the early &lt;span class="caps"&gt;OOPSLA&lt;/span&gt; days, they were showing off products like an HP Network Analyser, and a TekTronix Digital Oscilloscope which used Smalltalk to implement their user interfaces.  They were also involved with a large semiconductor company in Texas which was planning to use Smalltalk in controllers in an automated IC fabrication facility.&lt;/p&gt;
&lt;p&gt;Around the time of the birth of J9, &lt;span class="caps"&gt;IBM&lt;/span&gt; was becoming quite interested in embedded software, under an initiative called Pervasive Computing (PVC).  Because of this, &lt;span class="caps"&gt;OTI&lt;/span&gt; now an &lt;span class="caps"&gt;IBM&lt;/span&gt; Subsidiary, started working on VisualAge Micro Edition, which bundled J9 with an cross-platform &lt;span class="caps"&gt;IDE&lt;/span&gt; written, this time, in Java. About this time, I moved from &lt;span class="caps"&gt;IBM&lt;/span&gt; to &lt;span class="caps"&gt;OTI&lt;/span&gt;, and ended up working on the &lt;span class="caps"&gt;VAME IDE&lt;/span&gt;.&lt;/p&gt;
&lt;h2&gt;The Emergence of Eclipse&lt;/h2&gt;
&lt;p&gt;Work on &lt;span class="caps"&gt;VAME&lt;/span&gt; was distributed between various &lt;span class="caps"&gt;OTI&lt;/span&gt; labs.  The lab in Phoenix acted as the liaison with the &lt;span class="caps"&gt;IBM PVC&lt;/span&gt; folks, the &lt;span class="caps"&gt;J9 VM&lt;/span&gt; work was done in Ottawa, Raleigh did some applications work, and some UI work, but the bulk of the &lt;span class="caps"&gt;VAME UI&lt;/span&gt; framework was done by Erich Gamma&amp;#8217;s team at &lt;span class="caps"&gt;OTI&lt;/span&gt; Zurich.  The &lt;span class="caps"&gt;IDE&lt;/span&gt; used Swing, as most Java desktop apps did in those days, and apparently that was a bit of a struggle.  &lt;span class="caps"&gt;OTI&lt;/span&gt; used to have an annual all-hands internal developer conference in sunny early February Quebec, and I&amp;#8217;ll never forget Erich, who is quite the Alpine skier, talking about the UI while showing a slide he took at some ski report showing a sign with a precariously oscillating chair-lift and a skier about to fall, with the text &amp;#8220;Don&amp;#8217;t Swing!&amp;#8221;&lt;/p&gt;
&lt;p&gt;This led to the desire to develop a new UI framework and what is now known as the &lt;a href="http://www.eclipse.org/swt/"&gt;&lt;/a&gt;standard widget set or &lt;span class="caps"&gt;SWT&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;And the overall &lt;span class="caps"&gt;IDE&lt;/span&gt;/UI framework which replaced &lt;span class="caps"&gt;VAME&lt;/span&gt; was, of course Eclipse.&lt;/p&gt;
&lt;p&gt;And now it seems we&amp;#8217;ve gone from a Smalltalk &lt;span class="caps"&gt;IDE&lt;/span&gt; hosting Java development to the reverse!&lt;/p&gt;
&lt;h2&gt;Where Are They Now&lt;/h2&gt;
&lt;p&gt;Digitalk eventually merged with ParcPlace to form ParcPlace-Digitalk. For a while, both Smalltalk/V and VisualWorks/Objectworks (the ParcPlace Smalltalk-80 products) were carried, but eventually VisualWorks survived.  It&amp;#8217;s now shepherded by Cincom, which bought the rights.&lt;/p&gt;
&lt;p&gt;Similarly, &lt;span class="caps"&gt;IBM&lt;/span&gt; eventually sold the rights to market and develop VisualAge Smalltalk (a.k.a. &lt;span class="caps"&gt;VAST&lt;/span&gt;) to Instantiations. My old friend and colleague from &lt;span class="caps"&gt;IBM&lt;/span&gt; &lt;a href="http://smalltalkers.ning.com/profile/JohnOKeefe"&gt;John O&amp;#8217;Keefe&lt;/a&gt; &amp;#8220;retired&amp;#8221; from &lt;span class="caps"&gt;IBM&lt;/span&gt; to lead the development team.&lt;/p&gt;
&lt;p&gt;Several of the &lt;span class="caps"&gt;X3J20&lt;/span&gt; guys went to or through Microsoft.  George Bosworth worked for several years on &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;#38;printTitle=Keynote:_George_Bosworth&amp;#38;entry=3342753129"&gt;a precursor to today&amp;#8217;s Microsoft &lt;span class="caps"&gt;DLR&lt;/span&gt;.&lt;/a&gt; &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;#38;printTitle=Smalltalk_Solutions_Daily_Update:_David_Simmons_Keynote&amp;#38;entry=3390444300"&gt;Davd Simmons&lt;/a&gt; and &lt;a href="http://channel9.msdn.com/shows/Microsoft+Conversations+with+J/A-conversation-with-Allen-Wirfs-Brock-about-the-history-of-Smalltalk-and-the-future-of-dynamic-langu/"&gt;Allen Wirfs-Brock&lt;/a&gt; both work on Javascript for Microsoft.&lt;/p&gt;
&lt;p&gt;And, of interest to the Ruby community, Gemstone is now working on &lt;a href="http://ruby.gemstone.com"&gt;Maglev&lt;/a&gt;, a Ruby implementation with persistent objects based on their mature Smalltalk product.&lt;/p&gt;</description>
      <pubDate>Wed, 15 Oct 2008 15:24:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:52a3002f-5d95-4b18-90a6-ccdb440998c0</guid>
      <author>Rick DeNatale</author>
      <link>http://talklikeaduck.denhaven2.com/articles/2008/10/15/will-it-go-round-in-circles</link>
      <category>war_stories</category>
      <category>smalltalk</category>
      <category>x3j20</category>
      <category>maglev</category>
      <category>gemstone</category>
      <category>parcplace</category>
      <category>digitalk</category>
      <category>oti</category>
      <category>visualage</category>
      <category>j9</category>
      <trackback:ping>http://talklikeaduck.denhaven2.com/articles/trackback/508</trackback:ping>
    </item>
    <item>
      <title>Cool, but Stupid, Things I've Done</title>
      <description>&lt;div style='width:240; float:left; text-align:right; font-size:xx-small; border-width:1px; border-color:#444444; border-style:solid;margin-bottom:30px; margin-right:30px;' class='tease-image'&gt;
&lt;img width='240' height='162' alt='Cones' src='http://farm2.static.flickr.com/1156/525199388_4361019fd9_m.jpg'&gt;
&lt;br/&gt;
&lt;a href='http://flickr.com/photos/ericcastro/525199388/'&gt;Cones&lt;/a&gt;
&lt;br/&gt;&amp;copy;
&lt;a href='http://flickr.com/people/ericcastro'&gt;Eric Castro&lt;/a&gt;
&lt;br/&gt;&lt;a href='http://creativecommons.org/licenses/by/2.0/'&gt;&lt;img src='http://i.creativecommons.org/l/by/2.0/80x15.png' title='used under a Creative Commons Attribution License' width='80' height='15' border='0'/&gt;&lt;/a&gt;
&lt;/div&gt;
One of the things about working with software is that you can pretty much do anything you imagine.
&lt;p&gt;Many of these things can be cool.&lt;/p&gt;
&lt;p&gt;And many of them, particularly in retrospect, can be less than brilliant.&lt;/p&gt;
&lt;p&gt;Here are two of the more visible cool, but stupid things I've done in the past.&lt;/p&gt;



&lt;h2&gt;Visual VisualAge&lt;/h2&gt;
&lt;p&gt;Years ago, my position at IBM gave me the opportunity to visit other companies pushing the envelope in software development.  One such visit was to a small company in Santa Barbera, CA called Expertelligence, which at the time produced a version of common lisp for the Macintosh called &lt;a href="http://www.byte.com/art/9608/sec4/art2.htm"&gt;ExperCommonLisp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There I met an interesting young Frenchman by the name of Jean-Marie Hulot, who showed me a user interface tool written in ExperCommon Lisp.&lt;/p&gt;
&lt;p&gt;Sometime later I ran into Jean-Marie again at a meeting with Steve Jobs at NeXT.  Steve had hired Jean-Marie. The interface tool had been ported to Objective-C and had become the NeXT interface builder. It lives on to this day as part of the XCode tools for Mac OSX.&lt;/p&gt;
&lt;p&gt;I was impressed by what I'd seen, but by then I'd been working with Smalltalk for a while.  The visual construction of the UI was cool, but I didn't like the idea of being dumped back into the mundane world of compilers and make.  After having seen "Paree" in the form of the Smalltalk development environment, it was hard to imagine staying down on the farm.&lt;/p&gt;
&lt;p&gt;So, I thought, why not make something like the interface builder inside the Smalltalk environment, and a quick prototype was born.&lt;/p&gt;
&lt;p&gt;For some reason, I dubbed this the "Application Builder" with the idea that the combined UI Builder/IDE was for building more than just UIs.&lt;/p&gt;
&lt;p&gt;Well, after I showed the prototype around a bit, I got to show it to Earl Wheeler, who was the IBM executive responsible for IBMs software tools strategy (AD/Cycle).  He apparently liked what he saw, and funded a Smalltalk project based on my prototype.  This opened the door for the IBM Smalltalk products to come.&lt;/p&gt;
&lt;p&gt;Rather than getting intimately involved with the product development group, I stayed in advanced technology research.&lt;/p&gt;
&lt;p&gt;When Earl took on Smalltalk, the last thing he seemed to want was to introduce a new language.  But, because of the visual UI construction in my prototype, he rationalized "positioning" Smalltalk as a "generator."  Perhaps as a result of this, the product team got quite carried away with visual construction and made the project a complete visual programming language, and the product was dubbed &lt;a href="http://en.wikipedia.org/wiki/VisualAge"&gt;VisualAge&lt;/a&gt; as a result of a christening contest among the development team.&lt;/p&gt;
&lt;p&gt;In retrospect the streass on visual programming wasn't so smart.  The resulting programs were hard to understand, debug and maintain. Ken Auer &lt;a href="http://rubyhoedown2007.confreaks.com/session07.html"&gt;recently observed&lt;/a&gt; that it produced a lot of "Smalltalk" programmers who didn't learn Smalltalk.&lt;/p&gt;
&lt;p&gt;It also had a marketing effect on Smalltalk.  After IBM came out with VisualAge, ParcPlace renamed their ObjectWorks family of products as VisualWorks.&lt;/p&gt;
&lt;p&gt;IBM did eventually release IBM Smalltalk, unbundled from the visual programming componentry.&lt;/p&gt;
&lt;h2&gt;Too Much Transparency Considered Harmful&lt;/h2&gt;
&lt;p&gt;Sometime later, I had another "cool idea" and led a small development team to turn it into a product.  The idea was transparent distributed execution of Smalltalk programs, and the product was the IBM/Smalltalk Distributed feature.&lt;/p&gt;
&lt;p&gt;This was, if I may say so, a technical tour-de-force.  Completely written in Smalltalk, the feature allowed Smalltalk programs to comprise objects on different networked machines.  It was much more transparent that other distributed object technologies like Rubys DRB, Javas RMI, or Corba.  Everything worked off of Smalltalks reflection capabilities, there was no IDL. In fact we named it Smalltalk Distributed to distinguish it from HPs Distributed Smalltalk which was 'just' a binding of Smalltalk to CORBA.&lt;/p&gt;
&lt;p&gt;And the development environment was fully distributed as well, without too much work on our parts.  For example the regular Smalltalk debugger was able to follow execution threads (in Smalltalk threads are called Proessses) from machine to machine and back again. A Smalltalk block containing a return on one machine could be called from a method on another machine, and the distributed stack would unwind just like it would on a single machine. Normal process synchronization techniques would work as well.&lt;/p&gt;
&lt;p&gt;The key to making this work was implementing what I called a "logical" process which associated each Smalltalk process with a single local process on each physical machine involved in the logical process. The Debugger worked, because the Smalltalk debugger is, at heart, a process inspector, and by making the logical process mimic a normal process, the debugger was none the wiser.&lt;/p&gt;
&lt;p&gt;This was really cool technical stuff, but in reality it turned out to be stupid because making distributed method sends so transparent hides important facts such as that there can be orders of magnitude performance differences between a local and remote send and, probably more importantly, there are failure modes (like network outages) for a remote send which just don't occur for local sends.&lt;/p&gt;
&lt;p&gt;So just like cases where a building owner decides that it's prudent to put some obvious visual clue on a large floor-to-ceiling window to keep people from trying to walk through it, sometimes it's better to eschew transparency and make the programmer deal with reality rather than perception.&lt;/p&gt;</description>
      <pubDate>Sat, 17 Nov 2007 06:18:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ddf2e13e-1398-4255-9ee4-998ab2300b71</guid>
      <author>Rick DeNatale</author>
      <link>http://talklikeaduck.denhaven2.com/articles/2007/11/17/cool-but-stupid-things-ive-done</link>
      <category>war_stories</category>
      <category>smalltalk</category>
      <category>visualage</category>
      <category>stupidity</category>
      <category>smalltalkdistributed</category>
      <trackback:ping>http://talklikeaduck.denhaven2.com/articles/trackback/482</trackback:ping>
    </item>
  </channel>
</rss>
