<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Tekkie</title>
	<atom:link href="http://tekkie.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tekkie.wordpress.com</link>
	<description>"I took the road less travelled by, and it has made all the difference." - Robert Frost</description>
	<pubDate>Tue, 10 Jun 2008 10:55:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>The culture of &#8220;air guitar&#8221;</title>
		<link>http://tekkie.wordpress.com/2008/06/10/the-culture-of-air-guitar/</link>
		<comments>http://tekkie.wordpress.com/2008/06/10/the-culture-of-air-guitar/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 07:25:09 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Art]]></category>

		<category><![CDATA[Education]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[air guitar]]></category>

		<category><![CDATA[guitar hero]]></category>

		<category><![CDATA[south park]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=126</guid>
		<description><![CDATA[Since I started listening to Alan Kay&#8217;s ideas I&#8217;ve kept hearing him use the phrase &#8220;air guitar&#8221; to describe what he sees as shallow ideas, both in terms of educational and industry practice, which are promoted by a pop culture. Kay is a musician, among other things, so I can see where he&#8217;d come up [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Since I started listening to Alan Kay&#8217;s ideas I&#8217;ve kept hearing him use the phrase &#8220;air guitar&#8221; to describe what he sees as shallow ideas, both in terms of educational and industry practice, which are promoted by a pop culture. Kay is a musician, among other things, so I can see where he&#8217;d come up with this term. My impression is he&#8217;s referring to an almost exclusive focus on technique, perhaps even using a tool, looking confident and stylish while doing it, and an almost total lack of focus on what is being worked with.</p>
<p>I watched video recently of another one of his presentations on Squeak, this time in front of an audience of educators. He brought up the issues of math and science education, and said that in many environments they teach kids to calculate, to do &#8220;math&#8221;, not mathemetics. Students are essentially trained to &#8220;appreciate&#8221; math, but not in how to be real mathematicians.</p>
<p>He&#8217;s also used the term &#8220;gestures&#8221; to characterize this shallowness. In the field of software development he alluded to this idea in his 1997 keynote speech at OOPSLA, titled, &#8220;The Computer Revolution Hasn&#8217;t Happened Yet&#8221;:</p>
<blockquote><p>I think the main thing about doing OOP work, or any kind of programming work, is that there has to be some exquisite blend between beauty and practicality. There’s no reason to sacrifice either one of those, and people who are willing to sacrifice either one of those I don’t think really get what computing is all about. It’s like saying I have really great ideas for paintings, but I’m just going to use a brush, but no paint. You know, so my ideas will be represented by the gestures I make over the paper; and don’t tell any 20th century artists that, or they might decide to make a videotape of them doing that and put it in a museum.</p></blockquote>
<p>I&#8217;ve been surprised when I&#8217;ve seen some piece of media come along that comes pretty darn close to illustrating one of Kay&#8217;s ideas. A while back I found a <a href="http://tekkie.wordpress.com/2007/03/20/what-computer-literacy-means/" target="_self">video clip</a> of a Norwegian comedy show taking the learning curve of today&#8217;s novice computer users and making a media analogy to the &#8220;introduction of the book&#8221; after Gutenburg brought the printing press to Europe in the Middle Ages. Kay had always said that personal computers are a new form of media, and I thought this skit got the message across in a way that most people could understand, at least from having experienced the version of &#8220;personal computer media&#8221; that you can buy at a retail outlet or through mail order.</p>
<p><em>South Park</em> is a show that&#8217;s been a favorite of mine for many years. It&#8217;s an odd mix of &#8220;pop culture with a message&#8221;. Despite the fact that it&#8217;s low brow and often offensive, on a few occasions it has been surprisingly poetic about real issues in our society. The show is about a group of kids going through life, misunderstanding things, playing pranks on each other, and getting in trouble. It also shows them trying to be powerful, trying to help, and trying to learn. Maybe that&#8217;s what interests me about it. It&#8217;s unclear what &#8220;grade level&#8221; the kids are at. There was one season where they were in &#8220;4th grade&#8221;. So I guess that gives you an idea.</p>
<p>I&#8217;ve included some clips of an episode I&#8217;ll talk about. The clips are from Comedy Central&#8217;s site. Fair warning: If you are easily offended, I would not encourage you to watch. There is some language in the video that could offend.</p>
<p>Season 11, episode 13 is one where the kids buy a console video game system and play a game on it called &#8220;Guitar Hero&#8221;. The game is played by taking game controllers that look like small electric guitars, and manipulating switches and buttons on them in the right sequence and timing, to real music played by the game console.</p>
<p>What I&#8217;m going to say about it is my own interpretation, based on my own life experience.</p>
<p>What&#8217;s interesting to me is a parent of one of the kids tries to engage the group in learning how to play real music on a real instrument, but the kids are not interested. The dad wonders what&#8217;s so special about the game, and that night sneaks down and tries it himself, showing what a bad fit a real musician is in this &#8220;air guitar&#8221; culture (or showing what a piece of crap it is).</p>
<p>Clip 1:</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/ExternalVideo.594637' type='application/x-shockwave-flash' AllowScriptAccess='never' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' width='425' height='350' /></p>
<p> </p>
<p>I have the feeling this episode is based on a movie, though I don&#8217;t know which one. There are other parts not shown in these clips that dramatize betrayal between two friends, and reconciliation. Kind of your typical &#8220;buddy movie&#8221; plot line. This next clip shows the &#8220;wider world&#8221; discovering the talent of these kids playing the game.</p>
<p>Clip 2:</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/ExternalVideo.594671' type='application/x-shockwave-flash' AllowScriptAccess='never' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' width='425' height='350' /></p>
<p> </p>
<p>This gets to what I think the pop culture promotes. Even though it&#8217;s pretty empty, it makes you feel like you are accomplishing something, and getting something out of it. You are rewarded for &#8220;going through the motions&#8221;, &#8220;making the right gestures&#8221;. I like that the show deliberately tries to make the importance placed around the game look silly.</p>
<p>If this next clip doesn&#8217;t scream &#8220;air guitar&#8221;, I don&#8217;t know what does.</p>
<p>Clip 3:</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/ExternalVideo.594640' type='application/x-shockwave-flash' AllowScriptAccess='never' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' width='425' height='350' /></p>
<p> </p>
<p>I won&#8217;t show the ending (you can watch the full episode on Comedy Central&#8217;s web site, if you like), but it shows how utterly empty and worthless the whole &#8220;air guitar&#8221; exercise is&#8211;It&#8217;s <strong><em>not real!</em></strong></p>
<p>I think the reason this episode had some meaning for me is what plays out feels kind of like my past experience as a software developer. Not that software development is an &#8220;air guitar&#8221; exercise in and of itself. Far from it. What I&#8217;m getting at is the wider computing culture with respect to software development is like this. Those of us who care about our craft are trying to play &#8220;good music&#8221;, often with bad instruments. In my case, I&#8217;m still learning what &#8220;good music&#8221; is. We may be with a good &#8220;band&#8221;, but most &#8220;bands&#8221; have &#8220;band managers&#8221; who don&#8217;t know a thing about &#8220;good music&#8221;. That&#8217;s why it seems like such a struggle.</p>
<p>&#8220;Real music&#8221; with good instruments in computing is available for those who seek it. You won&#8217;t find it in most programming languages, programming web sites, symposia, or tools. The idea of &#8220;good music&#8221; with &#8220;good instruments&#8221; doesn&#8217;t get much support, so it&#8217;s hard to find. Unfortunately the reality is in order to really be educated you have to seek out a real education. Just &#8220;going along for the ride&#8221; of school systems will usually leave you thinking the pop culture is the real thing. Seeking a real education, being your own learner, is much more rewarding.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/126/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/126/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=126&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/06/10/the-culture-of-air-guitar/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
		<item>
		<title>Is OOP all it&#8217;s cracked up to be?: My guest post on ZDNet</title>
		<link>http://tekkie.wordpress.com/2008/06/02/is-oop-all-its-cracked-up-to-be-my-guest-post-on-zdnet/</link>
		<comments>http://tekkie.wordpress.com/2008/06/02/is-oop-all-its-cracked-up-to-be-my-guest-post-on-zdnet/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 12:20:12 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Analysis]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Squeak]]></category>

		<category><![CDATA[Technology and Software]]></category>

		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[History]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[OOP]]></category>

		<category><![CDATA[Smalltalk]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=125</guid>
		<description><![CDATA[Paul Murphy saw fit to give me another guest spot on his blog, called &#8220;The tattered history of OOP&#8221;, talking about the history of OOP practice, where the idea came from, and how industry has implemented it. If you&#8217;ve been reading my blog this will probably be review. I&#8217;m just spreading the message a little [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://blogs.zdnet.com/Murphy/" target="_blank">Paul Murphy</a> saw fit to give me another guest spot on his blog, called <a href="http://blogs.zdnet.com/Murphy/?p=1157" target="_blank">&#8220;The tattered history of OOP&#8221;</a>, talking about the history of OOP practice, where the idea came from, and how industry has implemented it. If you&#8217;ve been reading my blog this will probably be review. I&#8217;m just spreading the message a little wider.</p>
<p>Paul has an interesting take on the subject. He thinks OOP is a failure in practice because with the way it&#8217;s been implemented it&#8217;s just another way to make procedure calls. I agree with him for the most part. He&#8217;s informed me that he&#8217;s going to put up another post soon that gets further into why he thinks OOP is a failure. I&#8217;ll update this post when that&#8217;s available.</p>
<p>In short, where I&#8217;m coming from is that OOP, in the original vision that was created at Xerox PARC, still has promise. The current implementation that most developers use has architectural problems that the PARC version did not, and it still promotes a mode of thinking that&#8217;s compatible with procedural programming.</p>
<p><strong>Update</strong> 6/3/08: Paul Murphy&#8217;s response to my article is now up, called <a href="http://blogs.zdnet.com/Murphy/?p=1158" target="_blank">&#8220;Oddball thinking about OOP&#8221;</a>. He argues that OOP is a failure because it&#8217;s an idea that was incompatible with digital computing to begin with, and is better suited to analog computing. I disagree that this is the reason for its failure, but to each their own.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/125/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/125/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=125&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/06/02/is-oop-all-its-cracked-up-to-be-my-guest-post-on-zdnet/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
		<item>
		<title>Wonderful: The Journey &#38; The Labyrinth</title>
		<link>http://tekkie.wordpress.com/2008/05/31/wonderful-the-journey-the-labyrinth/</link>
		<comments>http://tekkie.wordpress.com/2008/05/31/wonderful-the-journey-the-labyrinth/#comments</comments>
		<pubDate>Sat, 31 May 2008 07:00:15 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Art]]></category>

		<category><![CDATA[Education]]></category>

		<category><![CDATA[edin]]></category>

		<category><![CDATA[john dowland]]></category>

		<category><![CDATA[music]]></category>

		<category><![CDATA[sting]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=123</guid>
		<description><![CDATA[
I know this is going to be old news to some people. I first heard of this through PBS in 2006. I just got inspired to write about it now.
Sting, with Edin Karamazov, created a wonderful collaboration, bringing back to life the 400 year-old music of John Dowland. Sting and Edin, both playing lutes, and Sting [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:center;"><a href="http://tekkie.files.wordpress.com/2008/05/sting.jpg"><img class="alignnone size-medium wp-image-124" style="vertical-align:middle;" src="http://tekkie.files.wordpress.com/2008/05/sting.jpg?w=257&h=300" alt="The Journey &amp; The Labyrinth" width="257" height="300" /></a></p>
<p style="text-align:left;">I know this is going to be old news to some people. I first heard of this through PBS in 2006. I just got inspired to write about it now.</p>
<p>Sting, with Edin Karamazov, created a wonderful collaboration, bringing back to life the 400 year-old music of John Dowland. Sting and Edin, both playing lutes, and Sting with his smooth vocals, created an album from Dowland&#8217;s pieces, which were made widely available to people in his day. The music has a richness that is wonderful to listen to. The DVD is even better. The locales they play in bring a greater fullness to the whole thing. In addition there are some vignettes where Sting, Edin, and a couple of experts on Dowland discuss the music and his life. Through this you get a small taste of the culture he lived in.</p>
<p>What&#8217;s really gratifying is seeing the growth of an artist. Sting is best known for the pop music he created with The Police, and then in his own solo career. The CD contains none of that. Instead what you hear is Sting and Edin really making an effort to bring life back to these old songs, respecting the tradition they came from. The DVD has a little of Sting&#8217;s pop music thrown in as well. A few of the selections they put on the DVD are Sting &#8220;unplugged&#8221; with the lute.</p>
<p>I should add that if you saw the PBS program on this you&#8217;ve already seen most of what&#8217;s on the DVD. It contains some extras not seen on TV, like the full length concert that Sting and Edin put on, and a rehearsal session.</p>
<p>Overall it&#8217;s a wonderful collection if you enjoy quality music with rich themes. I highly recommend it.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/123/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/123/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=123&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/05/31/wonderful-the-journey-the-labyrinth/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>

		<media:content url="http://tekkie.files.wordpress.com/2008/05/sting.jpg?w=257" medium="image">
			<media:title type="html">The Journey &#38; The Labyrinth</media:title>
		</media:content>
	</item>
		<item>
		<title>A history of the Atari ST and Commodore Amiga</title>
		<link>http://tekkie.wordpress.com/2008/05/16/a-history-of-the-atari-st-and-commodore-amiga/</link>
		<comments>http://tekkie.wordpress.com/2008/05/16/a-history-of-the-atari-st-and-commodore-amiga/#comments</comments>
		<pubDate>Fri, 16 May 2008 12:03:36 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[History]]></category>

		<category><![CDATA[Technology and Software]]></category>

		<category><![CDATA[16bit]]></category>

		<category><![CDATA[Amiga]]></category>

		<category><![CDATA[Atari]]></category>

		<category><![CDATA[Commodore]]></category>

		<category><![CDATA[ST]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=122</guid>
		<description><![CDATA[A while back I wrote my &#8220;Reminiscing&#8221; series of posts talking about the history of the machines I used growing up, as I remembered it. I came upon a few materials on reddit over a period of about a month that gave more authoritative histories of the Atari ST and Amiga. They&#8217;re really neat to look [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A while back I wrote my &#8220;Reminiscing&#8221; series of posts talking about the history of the machines I used growing up, as I remembered it. I came upon a few materials on <a href="http://programming.reddit.com" target="_blank">reddit</a> over a period of about a month that gave more authoritative histories of the Atari ST and Amiga. They&#8217;re really neat to look at. Atari and Commodore were fierce competitors since they both got into the computer market in the late 1970s, up until they both stopped computer production in 1993/94. There were the same flamewars during those years about which computer was better between devoted camps as there are now about which operating system, or system of software development (open source vs. closed source) is better. That competitive, beat your opponent to a pulp spirit still lives on.</p>
<h3><span style="text-decoration:underline;">The Atari ST</span> </h3>
<p style="text-align:center;">
<table border="1">
<tbody>
<tr>
<td><img class="aligncenter" style="vertical-align:middle;" src="http://upload.wikimedia.org/wikipedia/commons/3/39/Atari_1040STf.jpg" alt="The Atari ST" width="450" height="306" /></td>
</tr>
<tr>
<td align="center">The Atari ST, from Wikipedia.org</td>
</tr>
</tbody>
</table>
<p>Landon Dyer has a blog called <a href="http://www.dadhacker.com/blog/" target="_blank">DadHacker</a>. He&#8217;s written a two-part series on the building of the Atari ST, as an on-the-ground engineer. He gives a kind of blow-by-blow of what he could recall of the events of the time, and the issues they dealt with in developing it in a very short time period. Here are <a href="http://www.dadhacker.com/blog/?p=995" target="_blank">part 1</a> and <a href="http://www.dadhacker.com/blog/?p=1000" target="_blank">part 2</a>.</p>
<p>When I was getting my undergraduate CS degree at Colorado State University one of my dormmates, Darryl May, had worked at Atari under the Tramiel &#8220;regime&#8221; before coming to school. As I recall he had done customer support, among other things. He was not high up on the totem pole, and so was not privy to a lot of the stuff that was going on, but he told me a few stories.</p>
<p>The higher-ups in the company hierarchy were not entirely sealed off from everyone else. He said there were a few times where he just happened to bump into Jack Tramiel in the men&#8217;s bathroom.</p>
<p>Another story was that there were framed pictures put in odd places on some of the walls. He said they were where Jack Tramiel had caused a &#8221;dent&#8221; by punching them with his fist&#8211;just releasing stress&#8230;</p>
<p>I used to really like Atari computers, 8-bit and ST, and one of the aspirations I had was to maybe work at Atari one day. After hearing this, and maybe a few other tales I can&#8217;t remember, I lost interest. I didn&#8217;t conflate this with the machines themselves. I still liked them, and I have fond memories of them to this day. It&#8217;s just that the company culture didn&#8217;t sound so hot, and I began to see why there was such a love/hate relationship with Atari back then among the devoted.</p>
<p>In 1993 I had the opportunity to attend a Falcon 030 presentation given by David Small, the inventor of the Magic Sac and Spectre GCR/128 Macintosh emulators for the ST. The Falcon had started to ship a short while before. As I recall, and my memory&#8217;s fuzzy on this, he told a tale of how the Falcon development team was treated. One of the things I remember him saying is after promising to pay the engineers for their efforts, rather than paying them in cash, they were given company stock&#8230;which at the time was probably trading as a penny stock. I remember it hovered around $1 a share, often going under that amount, with really no hope of it getting any better. Small winced as he delivered the punch line, and drew audible sounds of disgust from the audience. We all knew what the situation was with Atari.</p>
<p>The impression I&#8217;ve gotten from listening to first hand accounts is that Jack Tramiel was a &#8220;penny wise, pound foolish&#8221; hard ass. I don&#8217;t get a sense that he had a creative spirit. His strategy, as it was when he was at the helm at Commodore, was to sell machines to a mass market. For whatever reason, it worked out for several years in Europe, where Atari was one of the dominant sellers of computers. In the U.S. it didn&#8217;t work out. I remember asking Darryl about this, and in his view Atari was just a tax write-off for the Tramiels. Jack Tramiel was set to retire, and just didn&#8217;t have the motivation to really make Atari do well. That was his theory anyway.</p>
<p>Giving credit where it&#8217;s due, in an interview I saw on a British computer TV show from the 1980s, Jack Tramiel revealed that one of his goals when he ran Commodore was to keep the Japanese out of the U.S. PC market. He did this by undercutting them on price. Maybe he succeeded, since I remember there was talk in the 80s about the Japanese working on low-end MSX machines to sell to the U.S. market. Somehow that never got off the ground. Incidentally, MSX was Microsoft&#8217;s attempt to do for low-end 8-bit computers what it did for IBM PCs and clones: create a standard OS. Apparently he was someone who fought to keep computer production in the U.S. We can thank him for that, though in hindsight he just delayed the inevitable. From what I remember, Atari shifted computer production to Asia, even under Tramiel&#8217;s management. Today a lot of the PC production lines are in Asia, though I&#8217;m sure there are still some here.</p>
<p>As I&#8217;ve mentioned before, Atari stopped producing computers in late 1993. The company continued on, trying to compete in the video game market, but dying a slow death, until it was finally &#8220;retired&#8221; in the sale to JTS, in 1996.</p>
<h3><span style="text-decoration:underline;">The Amiga</span></h3>
<p style="text-align:center;">
<table border="1">
<tbody>
<tr>
<td><img style="vertical-align:middle;" src="http://upload.wikimedia.org/wikipedia/commons/1/1a/Amiga1k.jpg" alt="The Commodore Amiga" width="450" height="266" /></td>
</tr>
<tr>
<td align="center">The Commodore Amiga, from Wikipedia.org</td>
</tr>
</tbody>
</table>
<p>I found a couple videos that cover the history of the Amiga. What&#8217;s intriguing to me is there are some juicy tidbits about what went down between Amiga Corp. and Atari. This was something I had read about, but never completely understood.</p>
<p>Amiga started out as its own company developing video game peripherals. As I recall, and parts of this may be wrong, at some point Atari started giving funding to Amiga, back when Atari was owned by Warner Communications (now called Time Warner), and expected to get first dibs on some technology that was being developed (maybe the chips). There came a point where Amiga was running low on cash, and put itself up for sale. Amiga wasn&#8217;t satisfied with the way they were being treated by Atari. Commodore appeared to be interested. Amiga pursued a deal with Commodore, and eventually reached an amicable price per share with them. I&#8217;m not clear if the Tramiels were in on the negotiations with Amiga. From what I read it sounded like the deal with Commodore was either near completion when Jack Tramiel bought Atari, or it was already overwith. They tell the story in the video so I&#8217;ll leave the details to them, though they don&#8217;t talk about who was in charge at Atari.</p>
<p>Commodore bought Amiga, and Atari&#8217;s working relationship with them went out the window. Atari sued, citing their agreement, but ultimately lost. The Amiga computer went to Commodore. As I recall the Tramiels already had some ideas about a 16-bit machine they wanted to develop by the time they bought Atari, but they had to work fast to get it out in time to compete with the Amiga.</p>
<p>From what I read one of the main players at Amiga was Jay Miner, though according to the video below he was the head guy. He used to work at Atari, and developed the graphics chips for their 8-bit computers in the late &#8217;70s. Maybe he did more than that, but I don&#8217;t recall. He brought the same know-how to the Amiga computer project, creating the famous graphics (and sound?) co-processors that gave the Amiga real pizzaz.</p>
<p>The video below is the story of the founding of Amiga Corp., and the purchase of Amiga by Commodore, as told by the original guys and gals who made it all happen.</p>
<p> </p>
<p><span style='text-align:center;display:block;'><object width='400' height='330' type='application/x-shockwave-flash' data='http://video.google.com/googleplayer.swf?docid=1853838236371022383'><param name='allowScriptAccess' value='never' /><param name='movie' value='http://video.google.com/googleplayer.swf?docid=1853838236371022383'/><param name='quality' value='best'/><param name='bgcolor' value='#ffffff' /><param name='scale' value='noScale' /><param name='wmode' value='window'/></object></span></p>
<p> </p>
<p>Another neat thing about this video is they show the CES mock up of the Amiga Lorraine (its code name) that I remember reading about in <em>Compute!</em> Magazine back in 1984. I remember they told the story of the Amiga&#8217;s appearance at CES with a great sense of foreboding that the machine looked revolutionary, and if it became anything more than vaporware it would represent a next generation leap in computing. This is interesting in retrospect, because <em>Compute!</em> did not greet the Apple Macintosh, which was a final product ready for sale at the time, with the same sense of excitement. They covered the unveiling of the first Mac, but then they were like &#8220;on to the next subject&#8230;&#8221;.</p>
<p>You have to remember that back then what was considered &#8220;standard&#8221; was a computer that when you booted it up would greet you with a command line interface, and the only machines most people knew about that had high resolution graphics combined with a &#8220;large&#8221; color palette were the IBM PC and the Apple II.</p>
<p>I would say that all three, the Apple Mac, Atari ST, and the Commodore Amiga represented the next generation of popular computing at the time. Each came at it from a different angle, and none of them turned out the way their visionary creators anticipated. All three pursued the business computing market, thinking it would help establish the machines with a healthy customer base, but none of them made large inroads in it. Instead each found a following in creative businesses. The Mac was adopted for professional (paper) publishing. The Atari ST was adopted by musicians for its MIDI hardware and software. The Amiga was adopted by video production studios since its hardware capabilities fit in well with what they needed. Video production software followed suit.</p>
<p>A show I heard about during my last year in college (&#8217;92-&#8217;93) that used Amigas with Video Toaster cards for the special effects shots was Babylon 5. It&#8217;s the reason why I got interested in it in the first place. But wow, the storywriting in the series held my attention. It told a tale of epic proportions. <a href="http://en.wikipedia.org/wiki/Lightwave_3D">They only used Amigas for the first season though</a>. Here&#8217;s some video of the intro&#8217;s for the show for the 5 seasons, where you can see glimpses of the Amiga/Video Toasters strutting their stuff. The last part is the closing credits of the series finale. What a great series it was.</p>
<p> </p>
<p><span style="text-align:center; display: block;"><a href="http://tekkie.wordpress.com/2008/05/16/a-history-of-the-atari-st-and-commodore-amiga/"><img src="http://img.youtube.com/vi/o3fTDKJqyQo/2.jpg" alt="" /></a></span></p>
<p> </p>
<p>I heard that Amiga/Video Toasters were used for the effects shots in the SeaQuest DSV series as well.</p>
<p>I can&#8217;t help it&#8230;Diversion into trivia: Two actors in the Babylon 5 TV series also starred in the movie <em>Tron</em>. What were the actors&#8217; names, and what characters did they play in the movie? They&#8217;re both in <a href="http://www.youtube.com/watch?v=Y36z622ardg" target="_blank">this fan video</a>. See if you can find them. One of them is pretty easy to pick out.</p>
<p>Here&#8217;s a video of an Amiga production plant being shut down in 1994, when Commodore shut its doors for good. Not much to see here. Pretty boring, but it gives you that sense that things are coming to an end. </p>
<p><span style="text-align:center; display: block;"><a href="http://tekkie.wordpress.com/2008/05/16/a-history-of-the-atari-st-and-commodore-amiga/"><img src="http://img.youtube.com/vi/NRI7hHwiRxk/2.jpg" alt="" /></a></span></p>
<p> </p>
<p><strong>Update</strong> 5/30/08: I found <a href="http://www.youtube.com/watch?v=NBvbsPNBIyk&amp;feature=user" target="_blank">this video</a> of a 25th anniversary commemoration of the Commodore 64, presented by the Computer History Museum. Finally the C-64 gets its due. It was really kind of a get together of some people who defined personal computing in the 1980s. At first was just a one-on-one chat with Jack Tramiel. Later they brought up Steve Wozniak (representing Apple), a guy who used to work for IBM during the IBM PC days, and another guy who worked for Commodore. They reflect a bit on what happened at Apple and IBM at the time as well. Interesting discussion.</p>
<p>On a lighter note, a <a href="http://www.youtube.com/watch?v=qHO8l-Bd1O4" target="_blank">reminder</a> (video link) of how far we&#8217;ve come since then. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/122/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/122/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=122&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/05/16/a-history-of-the-atari-st-and-commodore-amiga/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/3/39/Atari_1040STf.jpg" medium="image">
			<media:title type="html">The Atari ST</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/1/1a/Amiga1k.jpg" medium="image">
			<media:title type="html">The Commodore Amiga</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/o3fTDKJqyQo/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/NRI7hHwiRxk/2.jpg" medium="image" />
	</item>
		<item>
		<title>CompUSA saved, kinda</title>
		<link>http://tekkie.wordpress.com/2008/05/14/compusa-saved-kinda/</link>
		<comments>http://tekkie.wordpress.com/2008/05/14/compusa-saved-kinda/#comments</comments>
		<pubDate>Thu, 15 May 2008 04:16:32 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Technology and Software]]></category>

		<category><![CDATA[computers]]></category>

		<category><![CDATA[PC]]></category>

		<category><![CDATA[retail]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=120</guid>
		<description><![CDATA[I&#8217;m now back home after a long trip (though my busy-ness has not ended), and I noticed that my local CompUSA store, as far as I can tell, is still here.
This is old news, but I happened to look for information on the fate of CompUSA, and I found an article saying that the store chain was bought [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m now back home after a long trip (though my busy-ness has not ended), and I noticed that my local CompUSA store, as far as I can tell, is still here.</p>
<p>This is old news, but I happened to look for information on the fate of CompUSA, and I found an article saying that <a href="http://blogs.pcworld.com/staffblog/archives/006206.html" target="_blank">the store chain was bought in January</a> by TigerDirect, a subsidiary of Systemax. Only 16 of the existing stores were to remain open. TigerDirect also decided to change the name of its stores to CompUSA.</p>
<p>I signed up to get ad e-mailings from CompUSA several years ago. I&#8217;ve been using them to kind of keep an eye on them. Lately I&#8217;ve been getting ad mailings from them labeled &#8220;The new CompUSA.com&#8221;. So something&#8217;s changed there, though I haven&#8217;t had time to see what that is. So its <a href="http://tekkie.wordpress.com/2007/12/09/the-death-of-the-computer-chain-store/" target="_self">declared demise on my part</a> is premature. It&#8217;s just been significantly scaled back.</p>
<p>CompUSA may end up like Egghead Software. Remember that store chain? I really liked the store, but Egghead closed its retail outlets in the late 1990s, and decided to just run an e-commerce site to sell wares. I&#8217;m not sure what brought them down. For a long time I thought it was CompUSA since Egghead closed its outlet in town close to the time when CompUSA arrived.</p>
<p>Anyway, I&#8217;m glad it&#8217;s not going away for good. I still have store credit with them, and I&#8217;d hate to lose it. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/120/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/120/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=120&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/05/14/compusa-saved-kinda/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
		<item>
		<title>Kitties</title>
		<link>http://tekkie.wordpress.com/2008/05/04/kitties/</link>
		<comments>http://tekkie.wordpress.com/2008/05/04/kitties/#comments</comments>
		<pubDate>Sun, 04 May 2008 09:20:19 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Just For Fun]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=119</guid>
		<description><![CDATA[I&#8217;ve been extremely busy lately and so haven&#8217;t had time to post as much as I&#8217;d like. I saw this video a little while back, and I thought, &#8220;Okay, cute.&#8221; Over time it&#8217;s grown on me, so I thought I&#8217;d share it with you all.

&#8220;An Engineer&#8217;s Guide to Cats&#8221;
There&#8217;s something about this video that when I watch it [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been extremely busy lately and so haven&#8217;t had time to post as much as I&#8217;d like. I saw this video a little while back, and I thought, &#8220;Okay, cute.&#8221; Over time it&#8217;s grown on me, so I thought I&#8217;d share it with you all.</p>
<p><span style="text-align:center; display: block;"><a href="http://tekkie.wordpress.com/2008/05/04/kitties/"><img src="http://img.youtube.com/vi/mHXBL6bzAR4/2.jpg" alt="" /></a></span></p>
<p style="text-align:center;">&#8220;An Engineer&#8217;s Guide to Cats&#8221;</p>
<p>There&#8217;s something about this video that when I watch it I have to say, &#8220;Hmm. This sounds like me,&#8221; except I haven&#8217;t been a cat owner in years. My apartment doesn&#8217;t allow pets. But I love cats. So this is an easy video to love. One part in it says, &#8220;Like most engineers, cats are pretty much willing to eat the same thing day, after day, after day,&#8221; and then follow it up with a little part where they&#8217;re making toast. This is so me. I eat a fairly restricted diet in the sense that I don&#8217;t mind eating the same selection of stuff for quite a while before I get bored with it and move on to something else.</p>
<p>I loved the &#8220;feline art&#8221; section of this video. The &#8220;post-modern cardboard deconstruction&#8221; bit is hilarious! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> The &#8220;corporal cuddling&#8221; part was precious. Awww, so cute! Makes me feel all warm and fuzzy inside.</p>
<p>The part about the &#8220;I&#8217;m-not-paying-any-attention-to-you game&#8221; was interesting, because I&#8217;ve &#8220;played&#8221; that game with women (but gosh, I didn&#8217;t know it had a name&#8230;). From my experience it doesn&#8217;t work out like in the video. If you play this game, the gal wins by default, because you&#8217;re just too uninteresting.</p>
<p>BTW, I found this video shortly after &#8220;An Engineer&#8217;s Guide&#8221;, and it&#8217;s pretty cool too. For an amateur he&#8217;s quite a performer and songwriter I&#8217;d say.</p>
<p><span style="text-align:center; display: block;"><a href="http://tekkie.wordpress.com/2008/05/04/kitties/"><img src="http://img.youtube.com/vi/Qit3ALTelOo/2.jpg" alt="" /></a></span></p>
<p style="text-align:center;">&#8220;The Mean Kitty Song&#8221;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/119/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/119/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=119&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/05/04/kitties/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/mHXBL6bzAR4/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/Qit3ALTelOo/2.jpg" medium="image" />
	</item>
		<item>
		<title>The Joy of Squeak</title>
		<link>http://tekkie.wordpress.com/2008/03/17/the-joy-of-squeak/</link>
		<comments>http://tekkie.wordpress.com/2008/03/17/the-joy-of-squeak/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 07:53:36 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Education]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Squeak]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=118</guid>
		<description><![CDATA[I found this through The Weekly Squeak. Randal Schwartz demo&#8217;d the current Squeakland version of Squeak/EToys on Leo Laporte&#8217;s show, &#8220;The Lab&#8221; (video link). I just think it&#8217;s neat it&#8217;s getting some mainstream recognition.
Schwartz and Laporte gave a quick history of Smalltalk at the start, and they told it pretty accurately. For the uninitiated it may go by too [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I found this through <a target="_blank" href="http://news.squeak.org/">The Weekly Squeak</a>. Randal Schwartz <a target="_blank" href="http://blog.blobworks.com/2008/02/20/squeak-on-lab-with-leo/">demo&#8217;d the current Squeakland version of Squeak/EToys on Leo Laporte&#8217;s show, &#8220;The Lab&#8221;</a> (video link). I just think it&#8217;s neat it&#8217;s getting some mainstream recognition.</p>
<p>Schwartz and Laporte gave a quick history of Smalltalk at the start, and they told it pretty accurately. For the uninitiated it may go by too quickly. Squeak&#8217;s heritage goes back to the Xerox PARC days of the 1970s, back when they were developing Smalltalk. Smalltalk was the system they developed to create an interactive computing environment for children. It was the first implementation of Alan Kay&#8217;s vision of a &#8220;computer as medium&#8221;. This is the system Steve Jobs saw that inspired Apple to create the Macintosh. Smalltalk is still used today in large firms, particularly major banks. Interesting how a system developed for kids would be put to such a serious use, eh? Well, that was the idea, though as Kay has said with a little regret about Smalltalk&#8217;s history, the kids were shoved to the side, and the &#8220;professionals&#8221; took it as their own. Schwartz said Smalltalk is used wherever you need to rapidly create or change &#8220;products or screens&#8221;. I take that to mean &#8220;software&#8221;, but who knows. If so, isn&#8217;t that what a lot of businesses need? I mean, what&#8217;s RAD all about if not this?</p>
<p>Just a quick note. Laporte said something that&#8217;s untrue. He said that the mouse was invented at PARC. It wasn&#8217;t. Douglas Engelbart invented the mouse before PARC was created. The Xerox team used it with the Alto computer and Smalltalk. Laporte was basically right when he said that the graphical user interface as we now know it, with mouse interaction, was invented in the Smalltalk system at PARC. More than that, the language used in it, also called Smalltalk, was the first well designed OO language. Other teams at PARC worked on such things as networking machines together using ethernet, exchanging e-mail, creating WYSIWYG displays, and laser printing, bringing it all together with what the Smalltalk team created. They really did create the future.</p>
<p>Schwartz and Laporte briefly talked about commercial Smalltalk environments, and how they&#8217;re still sold. Laporte added that it&#8217;s &#8220;expensive&#8221;. Somehow I wonder if that&#8217;s more perception than reality. What they don&#8217;t say is that Squeak at its heart is <em>the same thing</em>, and it&#8217;s free. They leave that for the audience to figure out.</p>
<p>What Schwartz shows is the version of Squeak that&#8217;s shipped on the XO Laptop. This version is the current one available from <a target="_blank" href="http://www.squeakland.org">Squeakland</a>. You can get it for Windows, Mac OS (7.6 or higher, and OS X), and Linux.</p>
<p>There are two editions of Squeak. There&#8217;s what I think is commonly called the <a target="_blank" href="http://www.squeakland.org">&#8220;Squeakland version&#8221;</a>, and then there&#8217;s the <a target="_blank" href="http://www.squeak.org">&#8220;Squeak.org version&#8221;</a>. Squeakland is the one typically used for educational purposes. The Squeak.org version is the one typically used by professional developers, like those using the <a target="_blank" href="http://www.seaside.st">Seaside web framework</a>. The main difference I think is in how they&#8217;re configured, what APIs are included, and how the main visual environment is set up.</p>
<p>What Schwartz shows is a typical EToys demo: &#8220;driving the car&#8221;. The first time most people see this demo they&#8217;re amazed, because they&#8217;ve never seen software run like this before. That was my reaction when I first saw Alan Kay do it at <a target="_blank" href="http://video.google.com/videoplay?docid=-9055536763288165825">ETech 2003</a> (video link). Without running an app., Schwartz starts a project, grabs a brush from a &#8220;paint&#8221; panel, and selects a color. He draws a red car (top view) on the screen, just freehand. He then shows how it can be manipulated, and how it can be made to move by itself, just by a few mouse actions. Then, for the coup de grace, he draws a &#8220;steering wheel&#8221;, and links it to the car&#8217;s motion instructions, again using mouse actions, without stopping the car or any running program. It all happens in real time. He rotates the wheel and now he&#8217;s steering the car as it moves, all within the span of about a minute!</p>
<p>Smalltalk programmers have known this way of programming for years. It&#8217;s interactive. You&#8217;re able to change your code while it&#8217;s running. What&#8217;s cool about this is that through this model children can learn about programming with objects without it getting too hard, and it&#8217;s similar to the experience Smalltalkers get with the underlying environment.</p>
<p>With EToys it&#8217;s very easy to create objects. You just draw them on the screen. Each object also has a standard set of properties and behaviors that can be manipulated. More can be added by writing scripts, which involves writing a little Smalltalk code. There are some differences between programming in EToys and the underlying Smalltalk environment, which I won&#8217;t go into, but it&#8217;s okay. The way EToys does things reduces the complexity. The idea was to invite kids in, not to scare them away by making it too complicated. It introduces the idea that programs are simulations of models. The model is the interaction of objects&#8211;their relationships to each other. Each object is designed by the programmer to carry out certain behaviors in response to messages. What I think makes people excited when they see this is they realize that they can take what&#8217;s in their imagination and see it play out before them on the screen. That was always a joy for me as a teenager, though getting to that point, using the technologies I had available to me was sometimes a tough road.</p>
<p>EToys brings Smalltalk back to the vision that Alan Kay wanted for it all along, a computing environment that can be used by &#8221;kids of all ages&#8221;. EToys provides an easy to use and program simulation environment. It&#8217;s fun for adults, too, though I don&#8217;t think it&#8217;s complete enough for all the things adults would want to do with a computer. For that, there&#8217;s the underlying Smalltalk system, which provides a powerful environment in which they can create their own programs/systems. Together it comes pretty close to Kay&#8217;s original Dynabook vision.</p>
<p>&#8212;Mark Miller, <a href="http://tekkie.wordpress.com/">http://tekkie.wordpress.com</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/118/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/118/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=118&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/03/17/the-joy-of-squeak/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
		<item>
		<title>Squeak by Example 2.0 is out</title>
		<link>http://tekkie.wordpress.com/2008/03/16/squeak-by-example-20-is-out/</link>
		<comments>http://tekkie.wordpress.com/2008/03/16/squeak-by-example-20-is-out/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 10:59:47 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Squeak]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=117</guid>
		<description><![CDATA[The 2nd edition of Squeak by Example is out now (h/t to The Weekly Squeak for this). Like the first edition, it&#8217;s a book released as a PDF under the Creative Commons Share-Alike license. You can also get a hardcopy edition of it for $20.10 USD. They also welcome donations. Another tidbit of news is that the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The 2nd edition of <a target="_blank" href="http://www.squeakbyexample.org/">Squeak by Example</a> is out now (h/t to <a target="_blank" href="http://news.squeak.org/">The Weekly Squeak</a> for this). Like the first edition, it&#8217;s a book released as a PDF under the Creative Commons Share-Alike license. You can also get a hardcopy edition of it for $20.10 USD. They also welcome donations. Another tidbit of news is that the first edition was downloaded 20,000 times. Cool!</p>
<p>I wrote about the first edition <a href="http://tekkie.wordpress.com/2007/09/14/learning-squeak-is-easier-now/">here</a>, along with links to tutorials that I thought readers would find useful after perusing it and learning some basics.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/117/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/117/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=117&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/03/16/squeak-by-example-20-is-out/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
		<item>
		<title>What happened to the PC vision?: My guest post on ZDNet</title>
		<link>http://tekkie.wordpress.com/2008/03/10/what-happened-to-the-pc-vision-my-guest-post-on-zdnet/</link>
		<comments>http://tekkie.wordpress.com/2008/03/10/what-happened-to-the-pc-vision-my-guest-post-on-zdnet/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 01:49:03 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[History]]></category>

		<category><![CDATA[Information Technology]]></category>

		<category><![CDATA[Technology and Software]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=116</guid>
		<description><![CDATA[Hi guys. Just FYI, a little more than a week ago I wrote a comment on one of Paul Murphy&#8217;s blog postings, called &#8220;The worst PC myth of all&#8221;. Murphy is a blogger on ZDNet. He liked my comment a lot, and he and I agreed to have it as a guest post on his blog, called &#8220;Managing L&#8217;Unix&#8221;. I changed it a bit [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hi guys. Just FYI, a little more than a week ago I wrote a comment on one of Paul Murphy&#8217;s blog postings, called <a target="_blank" href="http://blogs.zdnet.com/Murphy/?p=1078">&#8220;The worst PC myth of all&#8221;</a>. Murphy is a blogger on ZDNet. He liked my comment a lot, and he and I agreed to have it as a guest post on his blog, called <a target="_blank" href="http://blogs.zdnet.com/Murphy/">&#8220;Managing L&#8217;Unix&#8221;</a>. I changed it a bit for posting, but the message is the same. It showed up today, titled <a target="_blank" href="http://blogs.zdnet.com/Murphy/?p=1088">&#8220;The PC vision was lost from the get-go&#8221;</a>.</p>
<p>Paul Murphy sees himself as an &#8220;agent of change&#8221; in IT systems, so he tends to talk mostly about his philosophy of infrastructure, and his own attempts at reforming it in businesses. I read his blog often, because I have gotten insights from him in the past, especially when he talks occasionally about software development/programming issues. In fact, one of his posts from a couple years ago inspired me to search for material on the internet related to something he talked about. This led to a feast of information, knowledge, and wisdom, which I have continued to explore and enjoy to this day.</p>
<p>&#8212;Mark Miller, <a href="http://tekkie.wordpress.com">http://tekkie.wordpress.com</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/116/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/116/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=116&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/03/10/what-happened-to-the-pc-vision-my-guest-post-on-zdnet/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
		<item>
		<title>Java: Let it be</title>
		<link>http://tekkie.wordpress.com/2008/03/06/java-let-it-be/</link>
		<comments>http://tekkie.wordpress.com/2008/03/06/java-let-it-be/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 08:10:27 +0000</pubDate>
		<dc:creator>Mark Miller</dc:creator>
		
		<category><![CDATA[Analysis]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Technology and Software]]></category>

		<guid isPermaLink="false">http://tekkie.wordpress.com/?p=115</guid>
		<description><![CDATA[Joshua Bloch, Chief Java Architect at Google, gave a talk entitled &#8220;The Closures Controversy&#8221; at Javapolis in December 2007. I found it online through reddit, and it intrigued me, because I think it illustrates a disconnect between what we as an industry are doing and the goals we have. Bloch also makes what I think [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Joshua Bloch, Chief Java Architect at Google, gave a talk entitled <a href="http://www.parleys.com/display/PARLEYS/The+Closures+Controversy" target="_blank">&#8220;The Closures Controversy&#8221;</a> at Javapolis in December 2007. I found it online through <a href="http://programming.reddit.com" target="_blank">reddit</a>, and it intrigued me, because I think it illustrates a disconnect between what we as an industry are doing and the goals we have. Bloch also makes what I think is a reasonable argument for limiting Java.</p>
<p>Those of you who&#8217;ve read what I&#8217;ve written for a while might be surprised by that statement. I have been critical of the IT industry for not thinking in more powerful terms about programming/computing. I am not endorsing Java. After watching his talk I was prepared to lay into Bloch for not having higher ambitions for the language, but as I thought about it I realized that it&#8217;s unreasonable to expect a computing environment to be more than what it was designed for. It helps me see that <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=221903" target="_blank">Java has a shelf life</a>. To expect more would mean trying to change it into something it&#8217;s not.</p>
<p><strong><span style="text-decoration:underline;">The appeal of Java</span></strong></p>
<p>Bloch began his talk using Gosling&#8217;s ideas from his article <em>The Feel of Java</em>, published in <em>IEEE Computer</em> in 1997, as a touchstone for what Java ought to be like in the future:</p>
<blockquote><p>It is a language for a job. Doing language research was an anti-goal [in the development of Java] . . . It is practical, not theoretical. It&#8217;s driven by what people need. Theory provides rigour, cleanliness, and cohesiveness. [Java had] no new ideas. It took ideas from existing languages and put them together. It maybe added a few new things, but that wasn&#8217;t the goal. And this is perhaps the most important slide in the whole talk. He said, &#8216;Don&#8217;t fix it until it chafes&#8217;, to keep it simple. Don&#8217;t put anything in the language just because it&#8217;s nice. Require several real instances before including any feature. In other words, &#8216;Just Say No, until threatened with bodily harm.&#8217; He said Java feels hyped, playful, flexible, deterministic, non-threatening, and rich, and like I can just code.</p></blockquote>
<p>Bloch continued from the article:</p>
<blockquote><p>Java is a blue collar language. It&#8217;s not a PhD thesis. It&#8217;s a language for a job. Java feels familiar to many different programmers, because we preferred tried and tested things.</p></blockquote>
<p>When Gosling said Java is &#8220;not theoretical&#8221;, he was comparing it to languages/VMs that are based on computer science theory, like Lisp, which is based on lambda calculus. By &#8220;practical&#8221; he meant the instrumentalist approach to design, which is that the feature set and the architecture the language/VM supports should handle current problems. Nothing more, nothing less. In my view this is short-sighted. It means that after acquiring and using the language to solve current problems you will run into problems the language wasn&#8217;t designed to handle, because new challenges arise. You will have to improvize within a structure that is ill-suited to the task, until whoever is in charge of the language adds new structures that handle the problem effectively. Wash, rinse, repeat. I have a feeling that this approach is a defense against languages whose designers add features willy-nilly without consideration for how it fits into the overall goal of the platform. Bloch points out that &#8220;theoretical&#8221; languages don&#8217;t have this problem, but he passes by it quickly.</p>
<p>Java was a swing in the other direction from languages like C/C++ that were said to &#8220;give you more than enough rope to hang yourself with&#8221;. I guess programmers &#8220;hung themselves&#8221; more often than not. C and C++ are powerful in the sense of allowing you to access the hardware directly inside of a language that gives you high-level structures. If you&#8217;re interested in doing anything more than building kernels, device drivers, or VMs/compilers, they&#8217;re pretty weak. Java rode a wave that was happening at the time it was introduced. C and C++ were the dominant languages. All sorts of projects were done in them, including applications. Java provided a productivity boost to project groups with this orientation by getting rid of many of the pitfalls of using C/C++ (buffer overruns, memory leaks, null or uninitialized pointer references, etc.), but in terms of building more abstract software like applications/environments with the power the language and the VM gave you, it wasn&#8217;t that different from C/C++. So in essence it played to the tastes of programmers of the time. It went for familiarity, but without having a particularly good technical reason for it. Java doesn&#8217;t allow direct access to the hardware. So why did the language designers feel it necessary to play &#8220;follow the leader&#8221; with C/C++ in terms of conventions and power? It was an easier sell to programmers. They like familiarity.</p>
<p>Java meets the programming culture where it is. As long as the culture is ignorant of the fact that the architecture it&#8217;s using is ill-suited to the task at hand, then technologists can convince themselves and others that problems which arise from using a limited architecture for large projects just go with the territory, and there&#8217;s nothing anyone can do about it. It&#8217;s about time we became more enlightened, but it&#8217;s going to take us admitting that despite our masterful technical skills we don&#8217;t know very much about why it is we do the things we do with computers, beyond the joy of solving puzzles. According to Alan Kay, and I think he&#8217;s right about this, it will take learning about and exposing ourselves to other things besides computers.</p>
<p>Quoting Kay, from <a href="http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html" target="_blank">The Early History of Smalltalk</a>:</p>
<blockquote><p>Should we even try to teach programming? I have met hundreds of programmers in the last 30 years and can see no discernible influence of programming on their general ability to think well or to take an enlightened stance on human knowledge. If anything, the opposite is true. Expert knowledge often remains rooted in the environments in which it was first learned&#8211;and most metaphorical extensions result in misleading analogies. A remarkable number of artists, scientists, philosophers are quite dull outside of their specialty (and one suspects within it as well). The first siren&#8217;s song we need to be wary of is the one that promises a connection between an interesting pursuit and interesting thoughts. The music is not in the piano, and it is possible to graduate Julliard without finding or feeling it.</p>
<p>I have also met a few people for whom computing provides an important new mataphor for thinking about human knowledge and reach. But something else was needed besides computing for enlightenment to happen.</p>
<p>Tools provide a path, a context, and almost an excuse for developing enlightenment, but no tool ever contained it or can dispense it.</p></blockquote>
<p><strong><span style="text-decoration:underline;">The state of Java today</span></strong></p>
<p>Bloch&#8217;s introduction felt like cheerleading for Gosling&#8217;s vision for Java, but then he got into what&#8217;s painful about it now. He talked about the Java community&#8217;s involvement in the design of Java, and the wisdom of its actions. &#8220;How are we doing today?&#8221;, Bloch asked the audience. He showed several examples of messy Java generics. It didn&#8217;t look that different from C++. The audience laughed. He said, &#8220;Not so well, unfortunately. This is how Java looks now.&#8221;</p>
<p>The way he described things made it sound like Sun &#8220;jumped the shark&#8221; with generics. He was more polite than to say this. He said generics per se were not a bad addition to the language, but their implementation allowed so much freedom that Java code is becoming incomprehensible even to people who have been working with the language for years.</p>
<p><strong><span style="text-decoration:underline;">Generics: An escape hatch</span></strong></p>
<p>In my view generics are just an attempt to get out from under the limitations of Java&#8217;s strict type system. The same goes for generics in .Net.</p>
<p>Generics are the &#8220;managed code&#8221; world&#8217;s version of C++ templates. They are also called &#8220;parameterized types&#8221;. They give you some of the programming flexibility of a dynamic language. Statically typed versions of generic code get generated depending on what types are called for in statically typed code. What they don&#8217;t give you is the &#8220;get to the point&#8221; feel of programming in a powerful dynamic language, because you have to tell the compiler about how many types the generic code will accept, and in what form it will accept them, where type information needs to go in the generic code, and what form type information will take when data is returned from the routines you write. In other words, you have to give some metadata for your code so that the static type system can deal with it. I call it &#8220;overhead&#8221;, but that&#8217;s just me. What static type systems force you to do is talk about the data flow of your code. This isn&#8217;t so that humans can understand it (though with some discipline it&#8217;s possible to create readable code this way), but so that the compiler and runtime don&#8217;t have to figure out what the data flow will be when your code is executed. It&#8217;s really a form of optimization.</p>
<p>Bloch explored where the complexity that now bedevils Java comes from. He got into talking about feature creep. It&#8217;s not the number of features, it&#8217;s the permutations of feature interactions. &#8220;When you add a feature to an already rich language, you vastly increase its complexity,&#8221; he said.</p>
<p><strong><span style="text-decoration:underline;">The &#8220;quagmire&#8221; of closures</span></strong></p>
<p>First, let me get a definition out of the way. A closure can be thought of as an anonymous function. It is not officially a method in any class. You can spontaneously create closures inline in your code and use them, in dynamic languages. You can pass them around from method to method, and they never lose their integrity. In the context of OOP it&#8217;s more aptly defined as an anonymous class that contains a single anonymous function, because in OOP languages closures <em>are</em> objects with methods of their own.</p>
<p>Bloch gave a brief explanation, which I think is correct: closures &#8220;enclose their environment&#8221;. They create references to whatever variables are used within them that are in scope range, at the time they are created. This is called &#8220;lexical scoping&#8221;. They also automatically return the value of whatever is the last expression evaluated within them. Bloch gives two reasons why closures are being considered for Java:</p>
<ul>
<li>
<div>They facilitate fine-grained concurrency in fork-join frameworks. You can use anonymous classes with these frameworks, but they&#8217;re a pain right now. He said it&#8217;s important that programmers use fork-join frameworks because, &#8220;we have these multi-core machines, and in order to actually make use of these cores, we&#8217;re going to have to start using these parallel programming frameworks.&#8221;</div>
</li>
<li>
<div>Resource management - Always using try-finally blocks for resource management is painful and causes resource leaks, because programmers misapply the construct. Closures would help with this.</div>
</li>
</ul>
<p>Even though he conceded these points, he clearly has disdain for closures. He used BGGA closures as his example. With the way they&#8217;ve been implemented, I&#8217;d have disdain for them, too. The hoops you have to jump through to make them work makes me glad I&#8217;m not using this implementation.</p>
<p>He said closures encourage an &#8220;exotic form of programming&#8221;, which is the use of higher-order functions: functions that take functions as parameters, and/or return functions. He jabs, &#8220;If you give someone a new toy, then they&#8217;ll play with it.&#8221; Ah, so higher-order functions are a &#8220;toy&#8221;. Mm-hmm&#8230; I&#8217;m tempted to say something impolite, but I won&#8217;t.</p>
<p>Bloch talked about closure semantics next, and how they&#8217;re different from normal Java semantics. He expressed concern throughout the rest of his talk that this would confuse Java programmers, and thereby create bugs. He has a point. Still, I don&#8217;t mind the idea of mixing computing models in a single environment (VM). I think there are advantages to this approach.</p>
<p><strong><span style="text-decoration:underline;">Some history: Where modern computing comes from</span></strong></p>
<p>Code blocks (closures) in Squeak/Smalltalk work differently than normal Smalltalk code as well.</p>
<p>I&#8217;d venture to say that the reason closures have been put in Ruby, and are now being considered for Java, is that Smalltalk was the first OO language to use them. Even though I&#8217;m sure it&#8217;s largely forgotten now, there are some significant artifacts of computing that have come into common use because of the Smalltalk-80 system. The GUI you&#8217;re using now, &#8220;hibernation&#8221; on your PC, bit-blitting, and the MVC design pattern are a few other examples. Language and system designers have been mining Smalltalk features for years, and incorporating them into modern, though less powerful technologies.</p>
<p>In retrospect people within the Smalltalk community have pointed to some design flaws in it. They didn&#8217;t ruin it by any means, but it&#8217;s recognized that there&#8217;s room for improvement. In a conversation I was in on between Alan Kay and <a href="http://billkerr2.blogspot.com/" target="_blank">Bill Kerr</a>, a blogger I&#8217;ve mentioned previously, Kay expressed muted regret about the inclusion of closures in Smalltalk, saying they broke the semantic simplicity of the language. I can see where he&#8217;s coming from. Closures introduce an element of functional programming into OOP. He desired a system that was purely OO, mainly for consistency so the language would be easier for beginners to learn. I haven&#8217;t gotten far enough along in my research to see what Kay would&#8217;ve suggested instead of closures. My understanding is he was heavily involved with the development of Smalltalk up until Smalltalk-76. Due to a schism that developed in the Smalltalk team, he gave up most of his involvement in it by the time Smalltalk-80 was in development. This is the version that ultimately was released to the public. &#8220;The professionals&#8221;, as Kay put it, took over and so some of the vision was lost. They turned the Smalltalk language into something that was friendly to them, not beginners.</p>
<p>Closures are something that anyone new to a dynamic OO language has had to learn about. They&#8217;re pretty painless to use in Smalltalk, in my opinion. They&#8217;re easy to create. Contrast this with closures in Java. Bloch referenced a <a href="http://markmahieu.blogspot.com/2007/12/currying-and-partial-application-with.html" target="_blank">post</a> written by blogger Mark Mahieu, where he got some of the examples. Here are a couple of them, with equivalents in Smalltalk for clarity.</p>
<pre style="font-size:12px;overflow:auto;width:100%;color:#000000;line-height:14px;font-family:Andale Mono, Lucida Console, Monaco, fixed, monospace;background-color:#eee;border:#999999 1px dashed;"><code>Java example #1:</code>                          

<code>static &lt;A1, A2, R&gt; {A1 =&gt; {A2 =&gt; R}} curry({A1, A2 =&gt; R} fn) {</code>
<code>   return {A1 a1 =&gt; {A2 a2 =&gt; fn.invoke(a1, a2)}};</code>
<code>}</code>                          

<code>Smalltalk equivalent:</code>                          

<code>curry := [:fn | [:a1 | [:a2 | fn value: a1 value: a2]]]</code>
<code> </code>                          

<code>Java example #2:</code>                          

<code>static &lt;A1, A2, A3, R&gt; {A2, A3 =&gt; R}</code>
<code>      partial({A1, A2, A3 =&gt; R} fn, A1 a1) {</code>
<code>   return {A2 a2, A3 a3 =&gt; fn.invoke(a1, a2, a3)};</code>
<code>}</code>                          

<code>Smalltalk equivalent:</code>                          

<code>partial := [:fn :a1 |</code>
<code>            [:a2 :a3 |</code>
<code>             fn value: a1 value: a2 value: a3]]</code></pre>
<p>This is what I meant about &#8220;hoops&#8221;. The type information you have to supply for the Java closures detracts from the clarity of the code. It&#8217;s clunky. That&#8217;s for sure.</p>
<p>I&#8217;m not going to say anything about these structures (&#8221;curry&#8221; and &#8220;partial&#8221;) right now. If readers would like, I can write a post just on them, explaining how they work, and how they can be useful.</p>
<p><strong><span style="text-decoration:underline;">Bloch&#8217;s proposal</span></strong></p>
<p>Bloch put forward a proposal, that rather than adding closures to the language, at least in the near future, that Java designers instead focus on creating concise structures (ie. add features) that implicitly create anonymous classes, to eliminate the verbosity (I guess this was his answer to the challenge of concurrency), handle resource allocation, and critical sections for threading. Basically it sounded like he favored the stylistic approaches that Microsoft has taken with .Net, with some differences.</p>
<p>He rejected out of hand the idea of adding library-defined control structures to the language, something made possible by closures, because it will encourage dialects. Squeak has a lot of library-defined control structures. I think they work quite well. They don&#8217;t change the fundamental rules of the language. Instead they expand its &#8220;vocabulary&#8221;. That is, they expand upon what you can do using the language&#8217;s existing structures. I understand this is hard to imagine in the context of Java, because most programmers are used to the idea that control structures are invariants in the language. Bloch would probably feel uncomfortable with this concept, but ask yourself which language is getting more cumbersome and complicated as time passes?</p>
<p>I think there is a fundamental contradiction in goals between what Bloch says he prefers about Java, and the growing problems of computing. He says that adding features to a language increases its complexity, and he makes a good case for that. Yet, how is Java going to solve new problems in the future? His answer is to add more features to the language. Granted they&#8217;re focused, and not open-ended to allow further expansion, but they&#8217;re still feature additions all the same. As is illustrated by Squeak, library-defined structures would actually help reduce the number of features in the language. Even though Squeak can do more things concisely than Java can, the feature set of the language is very small. As a point of comparison, Lisp&#8217;s language feature set is even smaller, yet it&#8217;s more capable of handling complex problems than Java. They accomplish this by taking what Java does as a built-in feature, and use message-passing (Squeak), closures (Squeak, Lisp, others), an extensive meta system (Squeak, Lisp, others), named functions (Lisp, Scheme), and macros (Lisp) instead.</p>
<p><strong><span style="text-decoration:underline;">Where Java sits</span></strong></p>
<p>I agree with Bloch that if the intention of Java was to be a language that is &#8220;practical&#8221; (ie. is designed from the standpoint of instrumental reasoning), easy enough to use so &#8220;you can just code&#8221;, and doesn&#8217;t strain the ability of Java programmers to understand their code, then generics should&#8217;ve been scaled back, closures shouldn&#8217;t be added, and his suggestions for expansion should be considered. Unfortunately this also means that it&#8217;s going to get harder and harder to work with Java as time passes, because the demands placed on it will exceed its ability to deal with them. Maybe at that point people will pursue another &#8220;escape hatch&#8221;.</p>
<p><span style="text-decoration:underline;"><strong>Struggling to transcend Java</strong></span></p>
<p>I compliment the Java community on its efforts to build something better out of a limited platform. What some are trying out is the idea of a VM of VMs. That is, building a VM on top of the JVM. This creates a common computing environment that enables some interoperability between different computing models, while at the same time transcending some of the limitations of the JVM. From what I hear, it sounds like it&#8217;s been a struggle. Personally I think it would be wiser for the industry to start with something better&#8211;a &#8220;theoretical&#8221; language/VM&#8211;and then try to build on top of that. Our computing culture has a lot of resistance to this idea. Even the efforts of groups to build better language/VM architectures on top of the JVM seem to be regarded as curiosities by most practitioners. They get talked about, and get used by a relative few who recognize their power for real projects, but they&#8217;re ultimately dismissed by most developers as &#8220;impractical&#8221; for one reason or another.</p>
<p>It&#8217;s funny. Several years ago I talked with a friend about how slow Java was. His solution was to &#8220;throw more hardware at it&#8221; then. Some months back I told him about Groovy. He read up on it and dismissed it as too slow. Why not just &#8220;throw more hardware at it&#8221;? I didn&#8217;t hear that recommendation from him. I didn&#8217;t press the case for it, because I didn&#8217;t have a dog in the fight. I&#8217;m not part of the Java community. I figured if he didn&#8217;t want to pursue it, he either had a good reason for it, or it was just his loss. My inclination is to believe the latter. I guess by and large there&#8217;s not enough pain yet to motivate people to reach for something better.</p>
<p>&#8212;Mark Miller, <a href="http://tekkie.wordpress.com/">http://tekkie.wordpress.com</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/tekkie.wordpress.com/115/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/tekkie.wordpress.com/115/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tekkie.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tekkie.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tekkie.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tekkie.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tekkie.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tekkie.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tekkie.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tekkie.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tekkie.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tekkie.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tekkie.wordpress.com&blog=224851&post=115&subd=tekkie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://tekkie.wordpress.com/2008/03/06/java-let-it-be/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tekkie-128.jpg" medium="image">
			<media:title type="html">tekkie</media:title>
		</media:content>
	</item>
	</channel>
</rss>