<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7519947821259127391</id><updated>2011-07-26T09:12:37.544-05:00</updated><title type='text'>smalltalk impressions</title><subtitle type='html'>a record of observations while journeying down the smalltalk path</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-2006410865212851470</id><published>2009-01-31T14:51:00.008-06:00</published><updated>2009-01-31T16:35:03.872-06:00</updated><title type='text'>SqueakDBX</title><content type='html'>I played around with SqueakDBX last night and this morning, and was able to get it working on my Mac Mini with Squeak 3.10.  It took a bit of troubleshooting, though.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It turns out the version of SQLite 3 on my Mac (OS X 10.5) wasn't compiled with the THREADSAFE option.  So when I tried compiling OpenDBX I got this error:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;Undefined symbols:&lt;br /&gt;"_sqlite3_threadsafe", referenced from:&lt;br /&gt;_sqlite3_odbx_get_option in libsqlite3backend_la-sqlite3_basic.o&lt;br /&gt;ld: symbol(s) not found&lt;br /&gt;collect2: ld returned 1 exit status&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eventually I decided I had to recompile sqlite3 with THREADSAFE turned on.  I grabbed the latest sources &lt;a href="http://sqlite.org/download.html"&gt;here&lt;/a&gt;, and ran &lt;code&gt;configure&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt;, and &lt;code&gt;make install&lt;/code&gt;.  That gave me a new copy of sqlite3 in &lt;code&gt;/usr/local/bin&lt;/code&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Going back to OpenDBX, I reran &lt;code&gt;configure&lt;/code&gt;, this time with &lt;code&gt;CPPFLAGS&lt;/code&gt; and &lt;code&gt;LDFLAGS&lt;/code&gt; pointing to the new sqlite3:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;code&gt;CPPFLAGS="-I/usr/local/include" \&lt;br /&gt;LDFLAGS="-L/usr/local/lib" \&lt;br /&gt;./configure --with-backends="sqlite3"&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That fixed the compile errors during &lt;code&gt;make&lt;/code&gt;.  I ran &lt;code&gt;make install&lt;/code&gt; and was almost finished.  The final piece of the puzzle fell into place thanks to &lt;a href="http://dreamsofascorpion.blogspot.com/2008/05/using-opendbx-with-squeak.html"&gt;this post&lt;/a&gt;.   Following its advice, I put a symlink to the opendbx library inside the Squeak directory, like so:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;code&gt;cd Squeak\ 3.8.18beta3U.app/Contents/Resources/&lt;br /&gt;ln -s /usr/local/lib/libopendbx.dylib opendbx&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I fired up Squeak and was able to connect to my sqlite database and execute SQL:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;code&gt;conn := DBXConnection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;platform: DBXSqlitePlatform new&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;settings: (DBXConnectionSettings new database: 'test.db').&lt;br /&gt;conn connect.&lt;br /&gt;conn open.&lt;br /&gt;res := conn execute: 'select * from table'.&lt;br /&gt;rows := res rows.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's as far as I've gotten.  I'll research the SqueakDBX docs and play around with it some more.  For more information, check out the &lt;a href="http://wiki.squeak.org/squeak/6052"&gt;SqueakDBX page&lt;/a&gt;.  The &lt;a href="http://wiki.squeak.org/squeak/6061"&gt;Getting Started guide&lt;/a&gt; also proved useful for me.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-2006410865212851470?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/2006410865212851470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=2006410865212851470' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/2006410865212851470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/2006410865212851470'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2009/01/squeakdbx.html' title='SqueakDBX'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-5194457701709300408</id><published>2009-01-02T20:33:00.012-06:00</published><updated>2009-01-02T21:35:35.045-06:00</updated><title type='text'>SQLite on Squeak 3.10: It works!</title><content type='html'>I can't believe I actually got this working.  I'd been under the impression that SQLite didn't work on Squeak.  Every time I tried installing it (via SqueakMap Package Loader), I would get an error.  Googling around didn't help; I found other references to SQLite not working on modern Squeaks.  Then, today, in a fit of inspiration (or perhaps just blind luck), I discovered how to correctly install it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;a href="http://map.squeak.org/package/b396aec0-e9cd-4e70-8746-eb38284f75af"&gt;SQLite package&lt;/a&gt; on SqueakMap is an &lt;a href="http://wiki.squeak.org/squeak/1414"&gt;FFI&lt;/a&gt; (Foreign Function Interface) wrapper around SQLite.  It finally dawned on me that I should install FFI first.  With a bit of tweaking, I got it all working.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are the steps I followed: (these are Mac-specific instructions; I have no idea how to adapt these to other operating systems)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Grab the latest version of Squeak from &lt;a href="http://squeak.org/"&gt;squeak.org&lt;/a&gt; (currently 3.10.2).&lt;/div&gt;&lt;div&gt;2. Install "FFI version 3.9.1" from the Package Universe Browser.  It's in the System category.&lt;/div&gt;&lt;div&gt;3. Install SQLite3 version 0.1.0 from the SqueakMap Package Loader.&lt;/div&gt;&lt;div&gt;4. Run the following two commands exactly as they appear.  Note these work on OS X 10.5 (Leopard); older versions may need different paths.&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;sudo mkdir /System/Library/Frameworks/libsqlite3.framework&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;sudo ln -s /usr/lib/libsqlite3.dylib /System/Library/Frameworks/libsqlite3.framework/libsqlite3&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Once you're done, here's some code to run in a Workspace:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;con := SQLiteConnection fileNamed: 'test.db'.&lt;br /&gt;s1 := 'create table employee (id, name)'.&lt;br /&gt;s2 := 'insert into employee values (1, ''Adam'')'.&lt;br /&gt;s3 := 'insert into employee values (2, ''Eve'')'.&lt;br /&gt;(Array with: s1 with: s2 with: s3) do: [ :sql | con executeQuery: sql].&lt;br /&gt;&lt;br /&gt;arrayOfDicts := con executeQuery: 'select * from employee'.&lt;br /&gt;arrayOfDicts inspect&lt;/blockquote&gt;If arrayOfDicts contains two rows for "Adam" and "Eve", then it worked.  There should be a "test.db" SQLite database in the same directory as Squeak.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm really excited to have this working.  I'm a big fan of SQLite because it's easy to use, simple, and powerful.  Many thanks to the developers that wrote the FFI wrapper for SQLite!  (Claes-Fredrik Mannby and Avi Bryant)&lt;a href="mailto:cf@mannby.com"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-5194457701709300408?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/5194457701709300408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=5194457701709300408' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/5194457701709300408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/5194457701709300408'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2009/01/sqlite-on-squeak-310-it-works.html' title='SQLite on Squeak 3.10: It works!'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-6085877429043386292</id><published>2008-11-21T21:47:00.004-06:00</published><updated>2008-11-21T22:31:11.776-06:00</updated><title type='text'>Finding my way to AIDA/Web</title><content type='html'>A few months ago I intended to write a small Morphic app, but I quickly got frustrated by a lack of documentation.  There was no good overview I could find to learn how to create Morphic applications.  &lt;a href="http://lists.squeakfoundation.org/pipermail/beginners/2008-October/005456.html"&gt;This note&lt;/a&gt; on the Squeak Beginners List corroborated my findings.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also investigated Seaside a bit, but ultimately I was turned off by the ugly URLs.  It's known as the heretical framework, and I think I can handle a fair amount of heresy, but apparently breaking REST is too much for my taste.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, an &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;amp;printTitle=Industry_Misinterpretations_110:_The_Other_Web_Framework_for_Smalltalk&amp;amp;entry=3403684108"&gt;Industry Misinterpretations podcast&lt;/a&gt; directed my attention to &lt;a href="http://www.aidaweb.si/"&gt;AIDA/Web&lt;/a&gt;.  It's the other web framework for Smalltalk, and so far I really like what I see.  It's been around for a decade, it supports MVC, REST (yay!), and has AJAX support built in.  From reading the mailing list, it's also apparent that simplicity has been a big goal from the start.  I have a couple of ideas for small projects to try out with AIDA/Web, so I may be posting about my experiences with it soon.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-6085877429043386292?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/6085877429043386292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=6085877429043386292' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/6085877429043386292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/6085877429043386292'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2008/11/finding-my-way-to-aidaweb.html' title='Finding my way to AIDA/Web'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-5474707423614297923</id><published>2008-09-07T19:09:00.005-05:00</published><updated>2008-09-08T20:19:21.886-05:00</updated><title type='text'>Information Overload</title><content type='html'>Wow, there is an incredible amount of Smalltalk material online.  It seems like every day I stumble across more blogs, books, or articles that I want to read.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I started reading &lt;a href="http://squeakbyexample.org/"&gt;Squeak by Example&lt;/a&gt;, which is an excellent introduction.  I got about three-quarters of the way through it when I decided I was comfortable enough with Smalltalk to start learning Seaside.  So I started reading a &lt;a href="http://www.swa.hpi.uni-potsdam.de/seaside/tutorial"&gt;Seaside tutorial&lt;/a&gt; available from the Hasso Plattner Institute.   And during all of this I've been finding more blogs to add to my feed reader.  (There are links to all the blogs I've subscribed to in the right sidebar.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Incidentally, here are two blog posts that I found especially insightful:  &lt;a href="http://tekkie.wordpress.com/2007/07/19/squeak-is-like-an-operating-system/"&gt;Squeak is like an operating system&lt;/a&gt; and &lt;a href="http://onsmalltalk.com/programming/smalltalk/rails-vs-seaside/"&gt;Rails vs Seaside&lt;/a&gt;.  I couldn't agree more with the former. Squeak is so different and strange that calling it a programming language does it a disservice; saying it's like an operating system is a much better description because it conveys that there's a lot more to learn than just a language.  The latter blog post is an interesting discussion of the key differences between not just Rails and Seaside, but Ruby and Smalltalk.  All the comments are worth reading as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In addition to all this, I read a good article available &lt;a href="http://www.eli.sdsu.edu/courses/spring01/cs635/readingSmalltalk.pdf"&gt;here&lt;/a&gt; called "I Can Read C++ and Java But I Can't Read Smalltalk".  It helped reinforce what I'd learned from Squeak by Example.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, there's a site that has literally dozens of &lt;a href="http://stephane.ducasse.free.fr/FreeBooks.html"&gt;free online Smalltalk books&lt;/a&gt;.  I'm staggered by how much information is available there.  The Joy of Smalltalk, Smalltalk with Style, and Smalltalk by Example are a few of the books that I'm interested in.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh, and while I was surfing the blogosphere I discovered a &lt;a href="http://squeak.preeminent.org/tut2007/html/"&gt;tutorial&lt;/a&gt; that walks you through the entire process of creating a game in Squeak.  Very cool.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Again, I say, Wow!  There is a ton of stuff available.  If only I had more time to read it all!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-5474707423614297923?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/5474707423614297923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=5474707423614297923' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/5474707423614297923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/5474707423614297923'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2008/09/information-overload.html' title='Information Overload'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-6148338670510468431</id><published>2008-09-01T21:05:00.003-05:00</published><updated>2008-09-01T21:17:46.578-05:00</updated><title type='text'>Parsing CSV files</title><content type='html'>Figuring out how to parse CSV files in Smalltalk took a lot longer than expected.  I started by browsing the Files-Kernel category, and looking at the FileStream and StandardFileStream classes.  A few methods looked promising, but there was nothing that would specifically handle CSV files.&lt;br /&gt;&lt;br /&gt;I turned to Google, which lead me to &lt;a href="http://wiki.squeak.org/squeak/1786#CSV%20how-to"&gt;this&lt;/a&gt; page, but the examples it referenced were dead links (but it turns out you can retrieve the examples via the &lt;a href="http://www.archive.org/web/web.php"&gt;Internet Archive&lt;/a&gt;).  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I kept thinking there had to be something easier, and at that point I remembered about &lt;a href="http://www.squeaksource.com"&gt;SqueakSource&lt;/a&gt;, which was mentioned in Squeak by Example.  Searching SqueakSource for CSV revealed a &lt;a href="http://www.squeaksource.com/CSV.html"&gt;CSV Parser&lt;/a&gt; by Avi Bryant.  After installing it via Monticello, I tried it out and found it was exactly what I needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I guess that SqueakSource is kind of like Perl's CPAN.  You should check it first to see if anyone has already done what you're about to do.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-6148338670510468431?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/6148338670510468431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=6148338670510468431' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/6148338670510468431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/6148338670510468431'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2008/09/parsing-csv-files.html' title='Parsing CSV files'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-630209697673567189</id><published>2008-08-24T21:35:00.002-05:00</published><updated>2008-08-24T21:42:03.325-05:00</updated><title type='text'>Schwartzian Evangelism</title><content type='html'>I'll freely admit that most of why I became interested in Smalltalk is due to &lt;a href="http://en.wikipedia.org/wiki/Randal_L._Schwartz"&gt;Randal Schwartz&lt;/a&gt;.  Originally I began looking into Smalltalk because the &lt;a href="http://www.opencroquet.org/index.php/Main_Page"&gt;Croquet&lt;/a&gt; project looked interesting, but it didn't take long before I started hearing a lot about the Seaside framework, with much of that coming from Randal.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nearly all Perl developers know the name; Randal, aka "merlyn", wrote the books &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FLearning-Perl-5th-Randal-Schwartz%2Fdp%2F0596520107%2F&amp;amp;tag=smalltalk-80-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Learning Perl&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=smalltalk-80-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; and &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FIntermediate-Perl-Randal-L-Schwartz%2Fdp%2F0596102062%2F&amp;amp;tag=smalltalk-80-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Intermediate Perl&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=smalltalk-80-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;, contributed to the Camel book (&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FProgramming-Perl-3rd-Larry-Wall%2Fdp%2F0596000278%2F&amp;amp;tag=smalltalk-80-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Programming Perl&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=smalltalk-80-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;), and had a Perl idiom named after him:  the &lt;a href="http://en.wikipedia.org/wiki/Schwartzian_transform"&gt;Schwartzian Transform&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I was shocked at first when I discovered he was now giving presentations on Seaside and Smalltalk.  Had he abandoned Perl?  Did he find something he liked better?  I started watching videos of his presentations to find out.  Here are links to several:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://vids.myspace.com/index.cfm?fuseaction=vids.individual&amp;amp;videoid=35394470"&gt;Smalltalk/Seaside overview&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.vimeo.com/1500522"&gt;Seaside: Hello World&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.vimeo.com/1494795"&gt;How The Real World Really Works&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The short answer is that no, he hasn't really abandoned Perl.  His company, &lt;a href="http://www.stonehenge.com/index.html"&gt;Stonehenge Consulting&lt;/a&gt;, still provides Perl training, but they're seeing a drop in demand while people wait for Perl 6 to arrive.  In the meantime, he heard about the Seaside framework, took a look, found it to be really cool -- perhaps cool enough to be the next big thing -- and started advocating it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having such a high profile person advocating Smalltalk is a tremendous boon to Seaside.  Randal has the respect of a lot of people, especially in the Perl community, so he can reach a wide audience of developers.  To be fair, though, you can say he does have a vested interest in what he's doing.  If he can help build up enough interest in Smalltalk so that developers start adopting it, then it will most likely lead to more business for his training company.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having said that, I do think he's on to something.  So far I quite enjoy Smalltalk, and what little I've seen of Seaside makes me want to learn a lot more.  It really does look cool.  I'm skeptical that it will be the next big thing; personally I think Smalltalk is just too out of the ordinary to be a mainstream success.  But, that's just the opinion of a total Smalltalk/Seaside newbie.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the meantime, I'll be busy learning a bit more, step-by-step.  Right now that means getting back to reading &lt;a href="http://squeakbyexample.org/"&gt;Squeak by Example&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-630209697673567189?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/630209697673567189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=630209697673567189' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/630209697673567189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/630209697673567189'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2008/08/schwartzian-evangelism.html' title='Schwartzian Evangelism'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7519947821259127391.post-332245472561915443</id><published>2008-08-18T21:35:00.002-05:00</published><updated>2008-08-18T21:46:37.887-05:00</updated><title type='text'>Hello World</title><content type='html'>I've recently started learning the smalltalk language, and I really like what I see.  I plan on sharing my observations here.  It's neat to see things stand the test of time, and smalltalk has certainly done that.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'd looked into smalltalk in the past, but never got beyond looking at bits of the syntax.  I just didn't like it.  It was hard to parse.  This time, though, I've come to appreciate the entire smalltalk environment (e.g., Squeak).  That, to me, is the most exciting part; it's like an entire living system.  All the code you see in the System Browser is live code.  You can change it on the fly and get instant feedback.  It's like the system is living and breathing right in front of you.  And it's all there for you to inspect.  Nothing is hidden.  That is cool.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And, I've barely scratched the surface.  I still have &lt;span class="Apple-style-span" style="font-style: italic;"&gt;tons&lt;/span&gt; to learn.  Stay tuned.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7519947821259127391-332245472561915443?l=smalltalkimpressions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smalltalkimpressions.blogspot.com/feeds/332245472561915443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7519947821259127391&amp;postID=332245472561915443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/332245472561915443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7519947821259127391/posts/default/332245472561915443'/><link rel='alternate' type='text/html' href='http://smalltalkimpressions.blogspot.com/2008/08/hello-world.html' title='Hello World'/><author><name>randy-80</name><uri>http://www.blogger.com/profile/02240698914352145637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_kd43g_hpyoc/SKodu1TEKDI/AAAAAAAAAAM/L3AXeKPop0E/S220/brain.jpg'/></author><thr:total>0</thr:total></entry></feed>
