<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>SweetFriday</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/" />
    <link rel="self" type="application/atom+xml" href="http://www.neverfriday.com/sweetfriday/atom.xml" />
    <id>tag:www.neverfriday.com,2008-06-09:/sweetfriday//1</id>
    <updated>2008-11-18T07:23:26Z</updated>
    <subtitle>Talking about software, programming, computer science, etc.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.1</generator>

<entry>
    <title>Seaside Tutorial Book, static *psssssh* static</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/11/seaside-tutorial-book-static-p.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.27</id>

    <published>2008-11-18T07:08:24Z</published>
    <updated>2008-11-18T07:23:26Z</updated>

    <summary>It&apos;s static now. The whole thing. All the images are there too, all the text is there and I changed the stylesheet so it takes up more of the screen space. The overview doesn&apos;t have links to all of the...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Squeak" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="seaside" label="seaside" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="squeak" label="squeak" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p><a href="http://neverfriday.com/Seaside-Book/" title="Seaside Book">It's static now. The whole thing.</a> All the images are there too, all the text is there and I changed the stylesheet so it takes up more of the screen space. The overview doesn't have links to all of the table of contents stuff but I'm tired right now.</p>

<p>In any case, it's good enough to start reading from. I did this mostly because I wanted a local copy but hey, it loads faster than the other dynamic version so why not let the rest of the Internet share in the speed?</p>

<p><a href="http://neverfriday.com/Seaside-Book.zip" title="Seaside Book Download">Download a copy of the book.</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Seaside/Squeak</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/11/seasidesqueak.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.26</id>

    <published>2008-11-17T08:49:43Z</published>
    <updated>2008-11-17T08:56:01Z</updated>

    <summary>It&apos;s 4am and I&apos;m about to sleep, but I&apos;ve started converting the Seaside Tutorial book to a proper static HTML package that doesn&apos;t require a web server to view. The amount of JavaScript that loads and the way the pages...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Squeak" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="seaside" label="seaside" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="squeak" label="squeak" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p>It's 4am and I'm about to sleep, but I've started converting <a href="http://www.swa.hpi.uni-potsdam.de/seaside/tutorial" title="Seaside Tutorial Book - dynamic">the Seaside Tutorial book</a> to a proper static HTML package that doesn't require a web server to view. The amount of JavaScript that loads and the way the pages are loaded on the web server was very slow. It took 9 seconds for a single page to load. By making it completely static, it took only a half-second to load.</p>

<p><a href="/Seaside-Book/index.html" title="Seaside Tutorial Book - static">Learn how to use Seaside and Smalltalk</a></p>

<p>I'll finish the rest of the pages later today, and then create a nice ZIP file out of it.</p>]]>
        
    </content>
</entry>

<entry>
    <title>JavaScript, jQuery and DNA</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/10/javascript-jquery-and-dna.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.24</id>

    <published>2008-10-15T06:33:31Z</published>
    <updated>2008-10-28T17:23:47Z</updated>

    <summary>For the past few days I have been fixing up a website that my cousin found. He was working on some biology/technology homework and was tired of writing out DNA sequences, manually converting them to RNA and then searching through...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="design" label="design" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="neverfriday" label="neverfriday" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="news" label="news" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p><a href="http://neverfriday.com/dna-rna-amino/" title="DNA RNA Amino Conversion Tool">For the past few days I have been fixing up a website that my cousin found.</a> He was working on some biology/technology homework and was tired of writing out DNA sequences, manually converting them to RNA and then searching through a table to find the amino acids that each trio of letter corresponds to.</p>

<p>Using <a href="http://jquery.com/" title="jQuery: The Write Less, Do More JavaScript Library">jQuery</a> and JavaScript magic, I came up with <a href="http://neverfriday.com/dna-rna-amino/" title="DNA RNA Amino Conversion Tool">this</a>. It converts DNA to RNA and then finds the amino acids in the sequence. The conversion between RNA and DNA takes place while you type, but you have to click to get the amino acids.</p>

<p>The whole thing is a single HTML file with 3 JavaScript files and a stylesheet. The JavaScript is divided into three categories; data, logic, and views. The <code>data.js</code> file contains information on amino acids. The <code>logic.js</code> file has code that deals with the conversions, and the <code>views.js</code> file has code for displaying the results. The amazing thing is that all of this works in Internet Explorer 6, Firefox 3, Safari, etc. Note: there are other JavaScript files included but they are for the fancy effects in the <code>views.js</code> file, they aren't part of the core logic of tool. The advantage is that the whole package is self-contained and you can copy the folder over to a USB thumbdrive and use the tool on any computer that has a web browser installed. You don't even need a web serrver.</p>

<p><a href="http://github.com/omouse/dna-rna-amino/tree/master" title="omouse's dna-rna-amino at master - GitHub">The code is available at GitHub</a> and is licensed under the MIT License.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Validating File Uploads with Django 1.0 (updated)</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/09/-a-long-time-ago.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.23</id>

    <published>2008-09-09T21:24:27Z</published>
    <updated>2008-09-24T12:15:07Z</updated>

    <summary> A long time ago, I wrote a blog post and some code that validates file uploads in Django. In the last week, it seems a lot of people have been interested in the post and since Django finally has...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Python" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blog" label="blog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="django" label="django" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[ <p><a href="http://neverfriday.com/images/blog/django_upload_validation.png"><img src="http://neverfriday.com/images/blog/django_upload_validation_thumb.png" style="padding: 10px; float: left;" width="400" height="167" /></a> A long time ago, I wrote <a href="http://www.neverfriday.com/sweetfriday/2008/03/validating-file-uploads-with-d.html" title="SweetFriday - Validating File Uploads with Django">a blog post and some code that validates file uploads</a> in <a href="http://www.djangoproject.com/" title="Django | The Web framework for perfectionists with a deadline">Django</a>. In the last week, it seems a lot of people have been interested in the post and since Django finally has a stable 1.0 release, I thought I would update the previous blog post.</p>]]>
        <![CDATA[<h3>Custom field, with validation</h3>

<p>First, here is the new code for a Django form field that validates the filename and content type of an uploaded file. This example makes sure that the file is a Word, OpenOffice, text, HTML or PDF document:</p>

<pre># v_fields.py
from django import forms
from django.utils.translation import gettext as _

class DocumentValidationError(forms.ValidationError):
    def __init__(self):
        super(DocumentValidationError, self).__init__(_(u'Document types accepted: ') + ', '.join(DocumentField.valid_file_extensions))

class DocumentField(forms.FileField):
    """A validating document upload field"""
    valid_content_types = ('text/html', 'text/plain', 'text/rtf',
                           'text/xml', 'application/msword',
                           'application/rtf', 'application/pdf')
    valid_file_extensions = ('odt', 'pdf', 'doc', 'txt',
                             'html', 'rtf', 'htm', 'xhtml')

    def __init__(self, *args, **kwargs):
        super(DocumentField, self).__init__(*args, **kwargs)

    def clean(self, data, initial=None):
        f = super(DocumentField, self).clean(data, initial)
        ext = splitext(f.name)[1][1:].lower()
        if ext in DocumentField.valid_file_extensions \
           and data['content-type'] in DocumentField.valid_content_types:
            return f
        raise DocumentValidationError()
</pre>

<p>Warning, this is only the form <em>field</em>. Second, You will have to do some extra wiring to be able to display it. Before I show you how to hook it up, we need a sample model. The following is a Document model that has a title, a content_type and a document field:</p>

<pre># models.py
from django.db import models
from django.utils.translation import gettext as _

class Document(models.Model):
    content_type = models.CharField(max_length=5, blank=True, null=True)
    document = models.FileField(upload_to='documents/%Y/')
    title = models.CharField(_(u'Title'), max_length=80)
</pre>

<h3>Custom form</h3>

<p>I'm using a <code>FileField</code> for the <var>document</var> field. Next, we have the wiring for a form:</p>

<pre># v_forms.py
from models import Document
from django.forms import ModelForm

from v_fields import DocumentField

class DocumentForm(ModelForm):
    document = DocumentField()
    class Meta:
        model = Document
        fields = ('title', 'document')
</pre>

<p>Whenever a form is created for the <code>Document</code> model, the <var>document</var> field will be a <code>DocumentField</code> object. This is the field that has the validation method as shown above.</p>

<h3>Custom admin form</h3>

<p>Third, lovely Django finally allows us to create and use custom forms with the <code>admin</code> module and so I wrote a bit of code that hooks into the above form.</p>

<pre># admin.py
from django.contrib import admin
from django_sample.documents.models import Document

from v_forms import DocumentForm

class DocumentAdmin(admin.ModelAdmin):
    form = DocumentForm

admin.site.register(Document, DocumentAdmin)
</pre>

<h3>More information</h3>

<p>You can look up more information on each component:
  </p><ul>
    <li><a href="http://docs.djangoproject.com/en/dev/topics/db/models/" title="Writing models | Django Documentation">Writing Models</a></li>
    <li><a href="http://docs.djangoproject.com/en/dev/topics/forms/#topics-forms-index" title="Working with forms | Django Documentation">Working with Forms</a></li>
    <li><a href="http://docs.djangoproject.com/en/dev/ref/contrib/admin/#modeladmin-objects" title="The Django admin site | Django Documentation">ModelAdmin Objects</a></li>
</ul>

<p>Leave some feedback! Does it work for you? How could I improve it?</p>

<script language="javascript" src="http://tipjoy.com/custombutton?targetUser=omouse&targetUrl=neverfriday.com&addTopBar=True&customMessage=Like%20the%20site%3F&width=256&" ></script>]]>
    </content>
</entry>

<entry>
    <title>Emacs: Org-mode WikiPedia links</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/09/emacs-orgmode-wikipedia-links.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.22</id>

    <published>2008-09-04T02:46:17Z</published>
    <updated>2008-09-04T02:55:03Z</updated>

    <summary> The other day I was going through some notes that I organize using Org-mode and I realized that it&apos;s a pain in the ass to write up links to Wikipedia entries all the time. So I whipped up some...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Emacs" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Lisp" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="emacs" label="emacs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="emacslisp" label="emacs lisp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="orgmode" label="org-mode" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[ <p>The other day I was going through some notes that I organize using Org-mode and I realized that it's a pain in the ass to write up links to Wikipedia entries all the time. So I whipped up some code that adds an org-mode link.</p>]]>
        <![CDATA[<p>It works in a similar way to other links. You type in <code>wp:Google</code> and it will be highlighted and when you click it will navigate to <code>http://en.wikipedia.org/wiki/Google</code></p>

<p>You can also set which default language you want the link to head to by setting the <code>org-wp-language</code> variable in your <code>.emacs</code> file. The default is <code>"en"</code> which is ENglish and I think that works well for most people.</p>

<p><a href="/org-wp-link.el" title="Emacs: org-wp-link.el">Download the code</a></p>

<p>Licensed under the GNU GPL v3 or later which is included with Emacs 22+</p>]]>
    </content>
</entry>

<entry>
    <title>Toronto Lisp, September</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/09/toronto-lisp-september.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.21</id>

    <published>2008-09-02T05:35:19Z</published>
    <updated>2008-09-02T05:48:03Z</updated>

    <summary> It&apos;s 1am and I have myself organized in terms of the meetups. I have a list of meetups and people who have shown up and can be considered regulars, I also have a template setup for discussing previous meetups....</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Lisp" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Scheme" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="lisp" label="lisp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scheme" label="scheme" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[ <p>It's 1am and I have myself organized in terms of the meetups. I have a list of meetups and people who have shown up and can be considered regulars, I also have a template setup for discussing previous meetups. Also, this is the big thing, I have this in a GIT repo! So I can make whatever changes I want to the page offline and then simply copy/paste into the Association of Lisp Users wiki page for the Toronto Lisp Meetup.</p>]]>
        <![CDATA[<p>If you look at the source of <a href="http://wiki.alu.org/toronto" title="ALU: Toronto">the wiki page</a>, you can find a comment that looks like: <code>&lt;!-- -*- mode: html; mode: longlines; -*- --&gt;</code>. This lets Emacs know that I'm editing in HTML mode and LongLines mode (most helpful mode ever, in my opinion).</p>

<p>Hopefully this allows me to be more prompt with updating the information for past and future meetups. All I have to do now is pick an exact date for the meetup...</p>]]>
    </content>
</entry>

<entry>
    <title>FriendFeed + FOAF</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/08/friendfeed-foaf.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.20</id>

    <published>2008-08-27T03:16:46Z</published>
    <updated>2008-09-02T05:49:15Z</updated>

    <summary>On Friday I was bitching about the lack of websites that can import FOAF profiles. A lot of the popular ones like Twitter and LiveJournal can export them, but they don&apos;t seem to be able to import them and make...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Python" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="foaf" label="foaf" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="friendfeed" label="friendfeed" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scripting" label="scripting" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p><a href="http://www.neverfriday.com/sweetfriday/2008/08/foaf-on-the-web.html" title="SweetFriday - FOAF on the Web">On Friday</a> I was bitching
about the lack of websites that can import <acronym title="Friend Of A
Friend">FOAF</acronym> profiles. A lot of the popular ones like
Twitter and LiveJournal can export them, but they don't seem to be
able to import them and make use of the actual FOAF data. A portable
file format only works when you can both import <em>and</em> export
the data.</p>]]>
        <![CDATA[<p>I used <a href="http://friendfeed.com/">FriendFeed</a> as an example of where importing
FOAF profiles would be useful:
  </p><blockquote>It aggregates stuff from various social networks. I
    already have a list of online accounts in my FOAF file.
    FriendFeed, let me import that file and you can take care of the
    rest! I hate re-typing in all my account names so you can import
    them. It's annoying and boring.</blockquote>

<p>Now, I'm not done yet, but I have started work on a Python script
that can connect to the FriendFeed website and let it import some of
your account data. I tried a test with Disqus and it appears to have
worked because if I try and add an already imported account, the
script will fail.</p>

<p><img src="/images/blog/friend_feed_importer1.png" width="862" height="324" /></p>

<p>I plan to put this up as a utility for others to use and, since
user information is sensitive, I'll be checking to see if I can get
SSL enabled on the page. There won't be <em>any</em> tricks hidden in
the script that will save your username or password, it will <em>only</em> use them once and forget about them right after
it's done.</p>

<p>I'm not releasing it yet because the code needs more testing and
more writing, but the source code will be available under the GNU GPL
license, version 3 probably, I'll have to check the terms.</p>]]>
    </content>
</entry>

<entry>
    <title>FOAF on the Web</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/08/foaf-on-the-web.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.19</id>

    <published>2008-08-22T22:25:02Z</published>
    <updated>2008-08-22T22:38:40Z</updated>

    <summary> There are a lot of websites that export FOAF, Friend Of A Friend, data including: LiveJournal, Twitter, Pownce and hi5. There is a Facebook application that exports your Facebook profile to FOAF too! FOAF doesn&apos;t appear to be dead...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="foaf" label="foaf" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[ <p>There are <a href="http://captsolo.net/info/blog_a.php/2007/10/04/foaf_for_social_network_migration" title="captsolo weblog - FOAF for Social Network Portability">a lot of websites that export FOAF</a>, Friend Of A Friend, data including: LiveJournal, Twitter, <a href="http://leahculver.com/2008/02/01/python-foaf-generator/" title="Leah Culver - Python FOAF Generator">Pownce</a> and hi5. There is a Facebook application that exports your Facebook profile to FOAF too!</p>

<p>FOAF doesn't appear to be dead in terms of exporting, but what about importing? That's the whole point of FOAF...to make your data portable so you can move it around easily. But I've searched and searched and I can't find anything on how to import my FOAF data into Twitter, or LiveJournal, or elsewhere. What's the point of freedom when I can't use it?</p>

<p>A simple example of how importing FOAF is useful: <a href="http://friendfeed.com/">FriendFeed</a>. It aggregates stuff from various social networks. I already have a list of online accounts in my FOAF file. FriendFeed, let me import that file and you can take care of the rest! I hate re-typing in all my account names so you can import them. It's annoying and boring.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Common Lisp Gardeners is still alive</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/08/common-lisp-gardeners-is-still.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.18</id>

    <published>2008-08-22T18:25:36Z</published>
    <updated>2008-08-22T20:30:31Z</updated>

    <summary>The project is still alive. The last time I checked it looked a little dead, but now that I&apos;ve checked out the mailing list archives, it looks like it&apos;s still alive. Awesome awesome :D cl-terrace Thanks to the list, I&apos;ve...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Lisp" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Scheme" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="lisp" label="lisp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scheme" label="scheme" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p><a href="http://www.lispniks.com/cl-gardeners/" title="CL Gardeners">The project is still alive</a>. The last time I checked it looked a little dead, but now that I've checked out <a href="http://www.lispniks.com/pipermail/gardeners/2008-August/thread.html" title="August 2008 Archives for The Gardeners mailing list">the mailing list archives</a>, it looks like it's still alive. Awesome awesome :D</p>

<h2>cl-terrace</h2>

<p><a href="http://www.lispniks.com/pipermail/gardeners/2008-August/001736.html" title="[Gardeners] web framework">Thanks to the list</a>, I've discovered another web application framework for Common Lisp called <a href="http://groups.google.com/group/cl-terrace" title="cl-terrace">cl-terrace</a>. It's a Model-View-Controller framework (aren't they all?) with only the View-Controller part covered. I'm not sure exactly how that works, but it uses the Hunchentoot web server, and <a href="http://groups.google.com/group/cl-terrace/web/djula" title="Djula, a Common Lisp port of the Django templating language">djula</a>, a Common Lisp template engine based on the Django templating language which is nice.</p>

<p><a href="http://cl-terrace.googlegroups.com/web/8-15-2008-djula-documentation.html" title="Djula Documentation Quick Reference, 15 August 2008">The documentation for djula</a> should be generated by the developer since the API is apparently changing around quite a bit. Djula looks like it handles internationalization and translations in a sane way. <a href="http://cl-terrace.googlegroups.com/web/8-15-2008-djula-documentation.html#dictionary-variables" title="Djula Quick Reference, Dictionary Variables">You specify translations using a dictionary (a.k.a. hash-table), the example shows how to do this</a>.</p>

<p>cl-terrace is ASDF-installable in case you're itching to try it out. Using SBCL, run this:
<pre style="margin-left: 1em; background-color: #eee">
(require 'asdf)
(require 'asdf-install)
(asdf-install:install 'cl-terrace)
</pre>
to install it.
</p>

<h2>Ruby</h2>

<p>On another note, a Ruby note, Chris Wanstrath of <a href="http://github.com/" title="github - social code hosting">GitHub</a> fame presented <a href="" title="">a keynote</a> at the 2008 Ruby Hoedown about side projects where he said,</p>

<blockquote>First off, the time issue. I don't know how many of you read RSS, but I challenge you (that's a keynote term) to give it up for a month. Just turn it off...What should you do instead? ...<em>let other people do the filtering for you. Use your time for other things</em>.</blockquote>

<p>It's a good keynote and lots of communities could learn a thing or two from the Ruby community. <a href="http://rethink.unspace.ca/2008/8/21/what-will-be-ruby-s-legacy" title="rethink - What will be Ruby's legacy?">The optimism of the community has to be balanced out as Unspace's Pete Forde says</a>,</p>

<blockquote>Folks in Ruby tend to write a lot of nostalgic, self-aggrandizing bullshit, though. You see a lot of "MY MY, THE COMMUNITY HAS EVOLVED INTO SOMETHING SPECIAL" and talk of changing the history of software development. I'm all for progress, and as a musician, I understand the function of hype in generating momentum. But <em>sometimes we need to get real and be a little more harsh in our own self-analysis</em>.</blockquote>

<p>Anyway, off to write some code.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Some Lisp News? Yes?</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/08/some-lisp-news-yes.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.16</id>

    <published>2008-08-18T03:52:06Z</published>
    <updated>2008-08-18T03:53:43Z</updated>

    <summary> Mid-August Lisp News Meetups Toronto 7 August 2008, A very small gathering of Lisp users at the LinuxCaffe. Abram showed the inner workings of the game Abuse which uses Lisp for almost everything, except the core (which is written...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Lisp" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Scheme" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="lisp" label="lisp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="news" label="news" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scheme" label="scheme" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[ <h2>Mid-August Lisp News</h2>

<h3><a href="http://wiki.alu.org/Local" title="Local Lisp User
Groups">Meetups</a></h3>

<h4><a href="http://wiki.alu.org/toronto" title="Toronto Lisp
Meetup">Toronto</a></h4>

<p><a href="http://common-lisp.net/pipermail/toronto-lisp/2008-August/000038.html"
title="toronto-lisp archive: Next meetup :o August 7th?">7 August
2008, A very small gathering of Lisp users at the LinuxCaffe</a>.
Abram showed the inner workings of the
game <a href="http://abuse.zoy.org/" title="Abuse, a dark 2D
side-scrolling platform game">Abuse</a> which uses Lisp for almost
everything, except the core (which is written in C, this is similar to
how Emacs works). An interesting question asked was whether or not the
Abuse Lisp dialect supported macros, it seemed that the custom
"macros" were all coded in C and thus untouchable. Next, a
crazy <abbr title="modification">mod</abbr> that turns the game into a
game of Super Mario was shown.</p>

<p>The disadvantages and misuse of car, cdr, caaaaar, cadaddarr, etc.
were also mentioned. The consensus is that once you're using cadr,
caddr, what you really want to be doing is creating a structure or
object. That way you can access things by a descriptive name. An
example of why this is a good idea is given
by <a href="http://common-lisp.net/project/xmls/" title="XMLS, a
simple XML parser for Common Lisp">xmls</a>, an XML parser. It parses
XML and turns it into a giant list, with the first element being the
element tag name, the second element being a list of element
attributes, and the rest of this list being child elements. This can
be tedious to navigate through.</p>

<p>Libraries for Scheme were also mentioned. The drawbacks of the
various dialects of Scheme are that the specification does not define
even the basics of common ways of dealing with libraries. Because of
this, when you switch Schemes, you have to re-discover libraries that
do what you want. This is an old complaint of course.</p>

<p>Lisp images and program startup costs were discussed in relation to
Perl, PHP and Smalltalk. Some Lisps have the ability to dump a memory
image and reload that later on. This improves the startup time since
libraries are already loaded and not re-loaded or re-compiled. I noted
that there doesn't seem to be a culture of image-sharing in the Lisp
community as there is in the Smalltalk community. One reason suggested
for this is that some Lisps run on 64-bit architectures and others run
on 32-bit, which means code needs to re-compiled anyway. Perl and PHP
were said to have no way of image dumping and this is particularly
problematic for PHP since it seems to rebuild things for each website
request. <em>(This may be incorrect or a non-problem)</em></p>

<p>Finally, I
mentioned <a href="http://www.iam.unibe.ch/~scg/Research/Traits/"
title="Traits -- Composable Units of Behavior">traits in
Smalltalk</a>. Traits are collections of methods that can be used by
classes and overridden (or not). Eiffel seems to have something
similar, as does Ruby with
mixins. <a href="http://www.iam.unibe.ch/~scg/Archive/Papers/Scha03aTraits.pdf"
title="Traits: Composable Units of Behavior by scharli, Ducasse,
Nierstrasz, and Black">Here is the paper that explains the idea more
fully[PDF].</a>

<h3><a href="http://groups.google.com/group/comp.lang.lisp/topics"
title="Google Groups: comp.lang.lisp">comp.lang.lisp</a></h3>

<p>Kenny Tilton, the man
behind <a href="http://common-lisp.net/project/cells/" title="Cells -
A dataflow extension to CLOS">Cells</a>
and <a href="http://www.theoryyalgebra.com/">Theory Y
Algebra</a>, <a href="http://groups.google.com/group/comp.lang.lisp/msg/317b5640769a7de2">asked
why the special variable <code>*default-pathname-defaults*</code> is
named that way. <a href="http://p-cos.net/" title="Pascal Costanza's
website">Pascal Costanza</a> comes up
with <a href="http://groups.google.com/group/comp.lang.lisp/msg/9e2c4865f791e637">an
answer</a> and asks his own question in return,</p>

<blockquote>Do you guys also worry about important problems?</blockquote>

<h3>Blogs</h3>

<h4>Xach's Cool Charts</h4>

<p>Xach made some cool charts inspired by Tufte and stream
graphs. <a href="http://www.xach.com/moviecharts/" title="Movie box
office charts">The first chart</a> shows movie box office data, while
<a href="http://www.xach.com/charts/" title="Misecllaneous Charts">the
second</a> shows the version control activity of CMUCL and SBCL.</p>

<p>The charts were made
using <a href="http://www.xach.com/lisp/vecto/" title="Vector - Simple
Vector Drawing with Common Lisp">Vecto</a>, a simple vector drawing
library for Common Lisp.</p>

<h4><a href="http://tkpapp.blogspot.com/2008/08/cl-cairo2-updates-win32-and-mac.html"
title="cl-cairo2 updates: win32 and mac extensions">cl-cairo2
updates</a></h4>

<p>This is a nice update for cl-cairo2 users. Now cl-cairo2 loads only
OS-independent parts of the library, with the OS-dependent parts
becoming parts of extension packages.</p>

<h4><a href="http://www.findinglisp.com/blog/2008/08/lisp-quiz-1-minesweeper.html" title="">Lisp
Quiz</a></h4>

<p>Lisp Quiz is inspired by Ruby Quiz which was inspired by Perl Quiz of
the week. Ruby Quiz and Perl Quiz were weekly programming challenges,
and Lisp Quiz hopes to do the same for the Lisp community. The first
quiz tackles Minesweeper, having you design an algorithm that wins the
game.</p>

<h3>Everything Else</h3>

<h4>LispForum</h4>

<p><a href="http://www.lispforum.com/index.php" title="LispForum:
Learn and discuss Lisp programming of all dialects">LispForum</a>,
launched on 27 June 2008, is another place for Lisp-related
discussion. It is run by Dave Roberts, the blogger who is behind
the <a href="http://www.findinglisp.com/blog/" title="Finding Lisp:
Slowly but surely, the programming world is finding Lisp...">Finding
Lisp blog</a>. They have
added <a href="http://www.lispforum.com/viewforum.php?f=32"
title="LispForum: Lisp Quiz">a new sub-forum for Lisp Quiz puzzles</a>
which are supposed to be similar to <a href="http://www.rubyquiz.com/"
title="Ruby Quiz">the Ruby Quiz</a> puzzles.</p>

<p>What's interesting about LispForum is that it's new (almost 2
months old, only!) and it already has 296 members. There are already
443 posts about Common Lisp, though there don't appear to be many
Scheme fans. So we have yet another forum to recommend to newbie Lisp
programmers.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Update on The Update</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/08/update-on-the-update.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.13</id>

    <published>2008-08-15T20:30:49Z</published>
    <updated>2008-08-15T20:56:05Z</updated>

    <summary>I overslept by a few hours but I decided to change the colour scheme. The stylesheet I uploaded last night was hideous, though good enough for testing. The new styles and page generation functions are up and I&apos;ve switched the...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blog" label="blog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="design" label="design" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="emacs" label="emacs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="eventcal" label="eventcal" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web" label="web" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="writing" label="writing" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p><a href="http://neverfriday.com/images/blog/new_design_200808.png" title="Screenshot of the New Design"><img style="float: left; padding:5px" src="http://neverfriday.com/images/blog/new_design_200808_thumb.png" width="128" height="128" /></a>I overslept by a few hours but I decided to change the colour scheme. The stylesheet I uploaded last night was hideous, though good enough for testing. The new styles and page generation functions are up and I've switched the main page to PHP. <a href="http://neverfriday.com/foaf/create.php" title="FOAFCreator">The Friend of a Friend Creator</a> is also partially up. I need to add more of the FOAF specification stuff of course, but there's a fancy new date picker (Thanks jQuery-UI!)</p>

<p>The design is very retro, very 70s I would say...at least in terms of the colours. The striped background reminds me of the swimshorts I bought that also have racing stripes. Obviously the design is solid because of this, heh.</p>

<p>Some details...
  </p><ul>
    <li>The colour palette:
<a href="http://www.colourlovers.com/palette/483475/beach_bum" title="ColourLovers: Beach Bum Palette">Beach Bum</a></li>
    <li>The pattern: <a href="http://www.colourlovers.com/pattern/189404/Beach_Stripes" title="ColourLovers: Beach Stripes Pattern">Beach Stripes</a></li>
    <li>Image editor used for the logo: <a href="http://www.gimp.org/" title="The GNU Image Manipulation Program">The GIMP</a></li>
    <li>JavaScript magic framework: <a href="http://jquery.com/" title="jQuery: The Write Less, Do More JavaScript Library">jQuery</a></li>
    <li>The calendar date-picker comes from: <a href="http://ui.jquery.com/" title="jQuery UI">jQuery User Interface</a></li>
    <li>Version control: <a href="http://git.or.cz/" title="Git - Fast Version Control">GIT</a></li>
    <li>Text editor: <a href="http://www.gnu.org/software/emacs/" title="GNU Emacs">GNU Emacs</a></li>
    <li><a href="http://www.last.fm/user/OMouse/tracks" title="Last.FM: OMouse's recently played tracks">Music listened to</a>: Goldfrapp, Headlights, Seu Jorge, The Fratellis, Ladytron, Lightspeed Champion</li>
  </ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Woah, an update</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/08/woah-an-update.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.12</id>

    <published>2008-08-15T05:00:42Z</published>
    <updated>2008-08-15T06:55:04Z</updated>

    <summary>So I decided to cave in and learn me some PHP. I&apos;m re-arranging the website to use PHP and improving the FOAFCreator. It&apos;s good for practicing my poor web design skills heh. I hope to have a better looking website...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        So I decided to cave in and learn me some PHP. I&apos;m re-arranging the website to use PHP and improving the FOAFCreator. It&apos;s good for practicing my poor web design skills heh. I hope to have a better looking website up by tomorrow afternoon. 
        
    </content>
</entry>

<entry>
    <title>ShoesFest Today (weather&apos;s good for Sandals too!)</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/07/shoesfest-today-weathers-good.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.11</id>

    <published>2008-07-25T12:28:37Z</published>
    <updated>2008-07-25T13:23:45Z</updated>

    <summary>Today is ShoesFest and I am going to be trying to learn more about Ruby and Shoes but at the same time I will be hacking away at JavaScript and Java, improving Sandals. That&apos;s the big surprise: Sandals. Sandals is...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Beach House" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Sandals" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="beachhouse" label="beachhouse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sandals" label="sandals" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="shoes" label="shoes" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p>Today is <a href="http://ihack.us/2008/06/27/shoesfests-on-july-11th-and-july-25th/" title="7/11 & 7/25 ShoesFests with Why The Lucky Stiff">ShoesFest</a> and I am going to be trying to learn more about Ruby and Shoes but at the same time I will be hacking away at JavaScript and Java, improving Sandals.</p>

<p>That's the big surprise: Sandals. Sandals is going to be a clone of the Shoes toolkit except it will use a Java back-end named BeachHouse. The primary reason for this is because I need to practice my Java'ing, and the secondary reason is that I hope to eventually have JRuby and Jython using BeachHouse. So BeachHouse can be found in the <code>beachhouse/</code> sub-directory of the Sandals source code package.</p>

<p>Unfortunately, Sandals uses Java's Swing components for some parts but I'm going to try and code up my own drawing methods for the tricky things that Shoes can do. We'll see how that goes later on today.</p>

<p>Happy Shoes hackin'</p>

<p><em>Links:</em>
<ul>
<li><a href="http://github.com/why/shoes/tree/master" title="why's shoes at GitHub.com ">Shoes source code</a></li>
<li><a href="http://github.com/omouse/sandals/tree/master" title="omouse's sandals at GitHub.com">Sandals and BeachHouse source code</a></li>
<li><a href="http://article.gmane.org/gmane.comp.lib.shoes/1216" title="common questions as we head into shoesfest">Common Questions about Shoes and ShoesFest answered</a></li>
</ul>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Emacs Poetry Snippet</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/07/emacs-poetry-snippet.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.9</id>

    <published>2008-07-14T23:28:34Z</published>
    <updated>2008-07-14T23:47:45Z</updated>

    <summary>The following is a snippet for LaTeX mode in Emacs. The snippet uses the wonderful YASnippet package and inserts the date of the poem being written and a tiny bit of LaTeX around it. ;; LaTeX snippets (yas/define-snippets &apos;latex-mode ;...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Emacs" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Writing" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="emacs" label="emacs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="emacslisp" label="emacs lisp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="latex" label="latex" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="poems" label="poems" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="poetry" label="poetry" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="snippet" label="snippet" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tex" label="tex" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="writing" label="writing" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yasnippet" label="yasnippet" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p>The following is a snippet for <a href="http://www.latex-project.org/" title="LaTeX: document preparation system">LaTeX</a> mode in <a href="http://www.gnu.org/software/emacs/" title="GNU Emacs, most powerful text editor ever">Emacs</a>. The snippet uses the wonderful <a href="http://code.google.com/p/yasnippet/" title="YASnippet: TextMate-like snippets for Emacs">YASnippet</a> package and <a href="http://www.gnu.org/software/emacs/elisp/html_node/Time-Parsing.html#Time-Parsing" title="GNU Emacs Lisp Manual: Time Parsing">inserts the date</a> of the poem being written and a tiny bit of LaTeX around it.</p>

<pre lang="lisp">
;; LaTeX snippets
(yas/define-snippets
  'latex-mode ; Snippet is available when in LaTeX mode
  '(
    ("poem" ; Keyword that will trigger the snippet
     ; The snippet itself
     ; (Each newline can be replaced with \n to make the snippet fit on one line)
     "\\begin{verse}
\\poemtitle{${1:untitled}}
% Written on ${2:$(format-time-string \"%e %B %Y\")}
$0

\\end{verse}
"
     "begin verse ..." ; Name of the snippet
     nil)
  )
)</pre>]]>
        
    </content>
</entry>

<entry>
    <title>Squeak Break</title>
    <link rel="alternate" type="text/html" href="http://www.neverfriday.com/sweetfriday/2008/06/squeak-break.html" />
    <id>tag:www.neverfriday.com,2008:/sweetfriday//1.6</id>

    <published>2008-06-28T21:00:08Z</published>
    <updated>2008-07-19T22:09:12Z</updated>

    <summary>I have taken the last two days off as a break from writing Java and JavaScript, and finally took a proper look at Squeak. It is impressive, and similar to working in Emacs in some ways (though much cooler). The...</summary>
    <author>
        <name>Rudolf Olah</name>
        <uri>http://neverfriday.com/</uri>
    </author>
    
        <category term="Emacs" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Squeak" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="emacs" label="emacs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sandals" label="sandals" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="squeak" label="squeak" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.neverfriday.com/sweetfriday/">
        <![CDATA[<p>I have taken the last two days off as a break from writing Java and JavaScript, and finally took a proper look at <a href="http://www.squeak.org/" title="Squeak Smalltalk">Squeak</a>. It is impressive, and similar to working in Emacs in some ways (though much cooler).</p>

<p><a href="http://flickr.com/photos/omouse/2683663744/">The greatest feature of Squeak</a>, and Emacs (and Lisps), is that the documentation for the language and environment is always around and accessible. If I don't know how a function works in Emacs or which methods an object has in Squeak, I can look it up while working in them. This has saved me from asking many stupid questions on the #emacs and #squeak IRC channels, heh.</p>

<p>Anyway, the break was needed because JavaScript reminded me of Scheme, and I had forgotten how horrible coding in Java can be (e.g. RedundantType x = new RedundantType...). Squeak's user interfaces may inspire Sandals in some ways, we shall see.</p>

<p><a href="http://web.cecs.pdx.edu/%7Eblack/OOP/Tutorial/SqueakLanguageRef.html" title="Squeak Language Reference">Check out the Squeak Language Reference</a></p>]]>
        
    </content>
</entry>

</feed>
