<?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:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Fernando Correia's Weblog</title>
	<atom:link href="http://fernandoacorreia.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fernandoacorreia.wordpress.com</link>
	<description>A glimpse on my journey through software development</description>
	<lastBuildDate>Wed, 18 Jan 2012 16:46:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fernandoacorreia.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Fernando Correia's Weblog</title>
		<link>http://fernandoacorreia.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fernandoacorreia.wordpress.com/osd.xml" title="Fernando Correia&#039;s Weblog" />
	<atom:link rel='hub' href='http://fernandoacorreia.wordpress.com/?pushpress=hub'/>
		<item>
		<title>First experience with BlueTripCSS Framework</title>
		<link>http://fernandoacorreia.wordpress.com/2008/11/10/first-experience-with-bluetripcss-framework/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/11/10/first-experience-with-bluetripcss-framework/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 00:54:30 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[bluetrip]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=332</guid>
		<description><![CDATA[A few days ago I went looking for info on CSS frameworks. I found a very interesting article that led me to the BlueTripCSS Framework by Mike from Capsize Designs. Today I wanted to create a simple and clean website and I decided to try BlueTrip. I was very impressed with how simple and easy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=332&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few days ago I went looking for info on CSS frameworks. I found a <a href="http://capsizedesigns.com/blog/2008/04/battle-of-the-css-frameworks/">very interesting article</a> that led me to the <a href="http://capsizedesigns.com/blog/2008/04/bluetripcss-a-fusion-of-blueprint-and-tripoli/">BlueTripCSS Framework</a> by Mike from <a href="http://www.capsizedesigns.com/home">Capsize Designs</a>.</p>
<p>Today I wanted to create a simple and clean <a href="http://django-saas.info/">website</a> and I decided to try BlueTrip.</p>
<p>I was very impressed with how simple and easy it was. I highly recommend BlueTrip for its great typography that it inherits from <a href="http://monc.se/tripoli/">Tripoli</a> and for the easy-to-use grid that comes from <a href="http://code.google.com/p/blueprintcss/">Blueprint</a>.</p>
<p>I just didn&#8217;t like the icons on the Web links and I decided to get rid of them. I could do that easily by just writing a custom style.css file to override the defaults:</p>
<p><pre class="brush: css;">
a[href^=&quot;http:&quot;],
a[href^=&quot;http:&quot;]:visited { background:none; padding:0; margin:0; }
</pre></p>
<p>I tested the page in Firefox in Ubuntu and in Firefox, Internet Explorer 7 and Chrome in Windows XP and I got nearly identical results in all of them.</p>
<p>So, I&#8217;m very satisfied with BlueTrip. Mike did a great job by putting together two of the best CSS frameworks.</p>
<p>Thanks, Mike!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=332&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/11/10/first-experience-with-bluetripcss-framework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax Series</title>
		<link>http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-series/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-series/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 11:26:36 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=314</guid>
		<description><![CDATA[Pinax is an integrated collection of selected Django reusable applications. It can be used as a head start for website projects and also to experiment patterns of Django applications. As I learn how to leverage Pinax to build Web applications, I&#8217;m writing about my experiences. I plan to update this article and to use it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=314&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://pinaxproject.com/">Pinax</a> is an integrated collection of selected <a href="http://www.djangoproject.com/">Django</a> reusable applications. It can be used as a head start for website projects and also to experiment patterns of Django applications.</p>
<p>As I learn how to leverage Pinax to build Web applications, I&#8217;m writing about my experiences. I plan to update this article and to use it as an index:</p>
<ul>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/10/22/exploring-pinax-part-1/">Part 1</a>:</strong> Installing Pinax.</li>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/10/23/exploring-pinax-part-2/">Part 2</a>: </strong>Creating a new tab<strong>.<br />
</strong></li>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/10/24/exploring-pinax-part-3/">Part 3</a>: </strong>Creating a new application inside a Pinax website.</li>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/10/26/exploring-pinax-part-4/">Part 4</a>: </strong>The main domain object of the sample application.</li>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/10/28/exploring-pinax-part-5/">Part 5</a>: </strong>A form for submitting new items.</li>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/10/30/exploring-pinax-part-6/">Part 6</a>:</strong> Comments on approaches to revision control.</li>
<li><strong><a href="http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-part-7/">Part 7</a>: </strong>Notifications.</li>
</ul>
<p>The source code for the sample application is hosted on <a href="http://github.com/fernandoacorreia/oxybeles/tree/master">GitHub</a>.</p>
<p>I also have a <a href="http://fernandoacorreia.wordpress.com/tag/pinax/feed/"><strong>feed</strong></a> for my Pinax-related articles.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=314&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-series/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 7</title>
		<link>http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-part-7/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-part-7/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 11:22:14 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=300</guid>
		<description><![CDATA[I&#8217;m proceeding in my quest to learn how to create a Django application using Pinax as a base. I&#8217;m writing a sample paste bin application called Oxybeles. It&#8217;s main feature will be the ability to send pasted items to another user and to receive new pasted items as responses. I want a user to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=300&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m proceeding in <a href="http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-series/">my quest</a> to learn how to create a <a href="http://www.djangoproject.com/">Django</a> application using <a href="http://pinaxproject.com/">Pinax</a> as a base. I&#8217;m writing a sample paste bin application called <a href="http://images.google.com/images?q=Oxybeles">Oxybeles</a>. It&#8217;s main feature will be the ability to send pasted items to another user and to receive new pasted items as responses.</p>
<p>I want a user to be <strong>notified</strong> when another user sends an item or responds to one. So I went looking how the applications integrated into Pinax do that. For instance, the Inbox feature in Pinax can be used to send a message to another website user:</p>
<p><img class="alignnone size-full wp-image-301" title="Compose Message" src="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-1.png" alt="" width="340" height="100" /></p>
<p>The Propose Swap feature of the Swaps application will also notify another user:</p>
<p><img class="alignnone size-full wp-image-302" title="Propose Swap" src="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-2.png" alt="" width="337" height="205" /></p>
<p>Those notifications can be seen in the Notices feature of the Inbox:</p>
<p><img class="alignnone size-full wp-image-303" title="Notices" src="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-3.png" alt="" width="545" height="177" /></p>
<p>By inspecting the source code for these features, I found out that they use the <a href="http://code.google.com/p/django-notification/"><strong>django-notification</strong></a> app. There is some <a href="http://pinaxproject.com/docs/trunk/external/notification/index.html">documentation</a> about it on the Pinax project website. So, I started following it.</p>
<h1>Creating notice types</h1>
<p>Following samples and <a href="http://pinaxproject.com/docs/trunk/external/notification/usage.html#creating-notice-types">documentation</a>, I created the file <strong>apps/oxybeles/management.py</strong> that creates notice types at syncdb time:</p>
<p><pre class="brush: python;">
from django.db.models import signals, get_app
from django.utils.translation import ugettext_noop as _
from django.core.exceptions import ImproperlyConfigured

try:
    notification = get_app('notification')

    def create_notice_types(app, created_models, verbosity, **kwargs):
        notification.create_notice_type(
            &quot;pasteditem_received&quot;,
            _(&quot;Pasted Item Received&quot;),
            _(&quot;you have received a pasted item&quot;))
        notification.create_notice_type(
            &quot;pasteditem_sent&quot;,
            _(&quot;Pasted Item Sent&quot;),
            _(&quot;you sent a pasted item&quot;))

    signals.post_syncdb.connect(create_notice_types, sender=notification)
except ImproperlyConfigured:
    print &quot;Skipping creation of NoticeTypes as notification app not found.&quot;
</pre></p>
<p>Then I ran syncdb:</p>
<pre>$ python manage.py syncdb
Created pasteditem_received NoticeType
Created pasteditem_sent NoticeType</pre>
<h1>Notification templates</h1>
<p>Then I created the templates that will be used to format the notifications. Each set is composed by three files: short.txt, full.txt and notice.html. For each notification type I created a directory under apps/oxybeles/templates/notification. For instance:</p>
<p><strong>apps/oxybeles/templates/notification/pasteditem_received/full.txt:</strong></p>
<p><pre class="brush: xml;">
{% load i18n %}{% blocktrans with pasted_item.get_absolute_url as pasted_item_url %}
{{ sender }} sent you a pasted item:

http://{{ current_site }}{{ pasted_item_url }}{% endblocktrans %}
</pre></p>
<p><strong>apps/oxybeles/templates/notification/pasteditem_sent/notice.html:</strong></p>
<p><pre class="brush: xml;">
{% load i18n %}
{% blocktrans with pasted_item.get_absolute_url as pasted_item_url %}
You sent a &lt;a href=&quot;{{ pasted_item_url }}&quot;&gt;pasted item&lt;/a&gt; to {{ recipient }}.
{% endblocktrans %}
</pre></p>
<h1>Sending notification</h1>
<p>After that I should be able to notify a user when someone sends a pasted item. The first step is to add an appropriate field to the pasted item detail template:</p>
<p><strong>templates/oxybeles/pasteditem_detail.html:</strong></p>
<p><pre class="brush: xml;">
...
&lt;h1&gt;Pasted Item&lt;/h1&gt;
&lt;pre&gt;
&lt;p&gt;{{ object.text }}&lt;/p&gt;
&lt;/pre&gt;
&lt;div id=&quot;basic-form&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;{% trans &quot;Send Item&quot; %}&lt;/legend&gt;
&lt;form id=&quot;pastebin_send_form&quot; method=&quot;POST&quot; action=&quot;&quot;&gt;
&lt;div&gt;{{ form.non_field_errors }}&lt;/div&gt;
&lt;div&gt;{{ form.recipient.errors }}&lt;/div&gt;
&lt;div&gt;Send to another user: {{ form.recipient }}&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;submit&quot; value=&quot;send&quot; class=&quot;button&quot; /&gt;&lt;/div&gt;
&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;send&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;uuid&quot; value=&quot;{{ object.uuid }}&quot; /&gt;
&lt;/form&gt;
&lt;/fieldset&gt;
&lt;/div&gt;
...
</pre></p>
<p>And a form to deal with the submitted data:</p>
<p>In <strong>apps/oxybeles/forms.py</strong>:</p>
<p><pre class="brush: python;">
...
class SendItemForm(forms.Form):
    uuid = forms.CharField(max_length=36)
    recipient = forms.CharField(max_length=30)
...
</pre></p>
<p>The view that shows a pasted item now will also act on this form&#8217;s data:</p>
<p>In <strong>apps/oxybeles/views.py</strong>:</p>
<p><pre class="brush: python;">
...
def detail(request, uuid, form_class=SendItemForm, template_name='oxybeles/pasteditem_detail.html'):
    form = form_class()
    if request.method == 'POST':
        if request.POST[&quot;action&quot;] == &quot;send&quot;:
            form = form_class(sender=request.user, data=request.POST)
            if form.is_valid():
                form.save()
                request.user.message_set.create(
                    message=ugettext(&quot;The pasted item was sent.&quot;))
                url = form.pasted_item.get_absolute_url()
                return HttpResponseRedirect(url)
    pasted_item = get_object_or_404(PastedItem, uuid=uuid)
    return render_to_response(template_name,
                              { 'object': pasted_item, 'form': form },
                              context_instance=RequestContext(request))
detail = login_required(detail)
...
</pre></p>
<p>The <strong>form.save()</strong> function will notify the recipient and also the sender.</p>
<p>In <strong>apps/oxybeles/forms.py</strong>:</p>
<p><pre class="brush: python;">
...
def save(self):
    self.pasted_item = self.cleaned_data['uuid']
    self.recipient_user = self.cleaned_data['recipient']
    if notification:
        notification.send([self.sender], &quot;pasteditem_sent&quot;,
                            {'pasted_item': self.pasted_item,
                            'recipient': self.recipient_user,})
        notification.send([self.recipient_user], &quot;pasteditem_received&quot;,
                            {'pasted_item': self.pasted_item,
                            'sender': self.sender,})
...
</pre></p>
<p><a href="http://code.google.com/p/django-notification/"><strong>django-notification</strong></a> does all the work. It creates the notifications and will also mail the user if the preference is enabled. The email will only be sent when we run <strong>manage.py send_mail</strong>, though.</p>
<p>Now I can send a pasted item I&#8217;m seeing:</p>
<p><img src="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-4.png" alt="Sending a pasted item" title="Sending a pasted item" width="213" height="322" class="alignnone size-full wp-image-320" /></p>
<p>Those sendings are recorded as notifications:</p>
<p><img src="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-5.png" alt="Item sent notification" title="Item sent notification" width="403" height="35" class="alignnone size-full wp-image-321" /></p>
<p>And the recipient is notified when someone sends an item:</p>
<p><img src="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-6.png" alt="Item received notification" title="Item received notification" width="450" height="37" class="alignnone size-full wp-image-322" /></p>
<p>Pinax is an integrated collection of selected reusable Django apps, and I&#8217;m starting to learn how to leverage it. Seems pretty nice so far.</p>
<p>The code for this article is hosted at <a href="http://github.com/fernandoacorreia/oxybeles/tree/225476e42b28d91fecbd664746afabb91a5fc538">GitHub</a>. Feedback is welcome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/300/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=300&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/11/08/exploring-pinax-part-7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-1.png" medium="image">
			<media:title type="html">Compose Message</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-2.png" medium="image">
			<media:title type="html">Propose Swap</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-3.png" medium="image">
			<media:title type="html">Notices</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-4.png" medium="image">
			<media:title type="html">Sending a pasted item</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-5.png" medium="image">
			<media:title type="html">Item sent notification</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/11/pinax-part7-6.png" medium="image">
			<media:title type="html">Item received notification</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 6</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/30/exploring-pinax-part-6/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/30/exploring-pinax-part-6/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 22:53:26 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=293</guid>
		<description><![CDATA[I think this series of articles is starting to pay off&#8230; A few people are using my first article to learn how to set up a new Pinax website. And also, I am getting feedback on how to do things better. On the pinax-users list, Bob Haugen pointed out that I was not following the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=293&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I think this <a href="http://fernandoacorreia.wordpress.com/tag/pinax/">series</a> of articles is starting to pay off&#8230; A few people are using my first article to learn how to set up a new Pinax website. And also, I am getting feedback on how to do things better.</p>
<p>On the pinax-users list, Bob Haugen <a href="http://groups.google.com/group/pinax-users/browse_thread/thread/699a6cd60cc89e22/7d9a3ef4c446b18a?hl=en#7d9a3ef4c446b18a">pointed out</a> that I was not following the recommended setup, because I was creating my new website inside Pinax&#8217;s project directory. There was no real harm, but he was right. I updated <a href="http://fernandoacorreia.wordpress.com/2008/10/22/exploring-pinax-part-1/">my instructions</a> so Pinax and the custom website are in separate directories.</p>
<p>As I wrote on the user list:</p>
<blockquote><p>Let me explain my motives. I use Subversion daily and I&#8217;m comfortable<br />
with it. I knew that just copying the directory would give me lots of<br />
trouble when I decided to update Pinax. So the &#8220;export&#8221; idea was<br />
natural.</p>
<p>I just exported it alongside the sample project because I was just<br />
starting to learn Pinax and didn&#8217;t want to mess too much with the<br />
structure because I didn&#8217;t know about its dependencies. I had read the<br />
customization doc, but it was not so clear to me at first sight.</p>
<p>But the official doc is right. I think we should consider Pinax more<br />
like a library, like Django itself, that should be installed and<br />
updated on its own, and the website we build should be a separate<br />
project, with its own version control. So it should be natural to put<br />
Pinax where we store random software (I used ~/opt) and our website<br />
where we put things we&#8217;re working on or software we deploy (I used<br />
~/Projects).</p></blockquote>
<p>I&#8217;m very grateful for the feedback and I hope this humble series may be helpful.</p>
<p>Cheers!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/293/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=293&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/30/exploring-pinax-part-6/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 5</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/28/exploring-pinax-part-5/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/28/exploring-pinax-part-5/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 22:50:37 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=278</guid>
		<description><![CDATA[Proceeding with my project to learn how to develop a Django web application over Pinax, I build two simple forms: one for submitting a new item, and another to show an item. As one reader commented, up to this point I&#8217;m not really using any Pinax feature other than the website structure itself, like authentication, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=278&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Proceeding with <a href="http://fernandoacorreia.wordpress.com/tag/pinax/">my project</a> to learn how to develop a Django web application over Pinax, I build two simple forms: one for submitting a new item, and another to show an item.</p>
<p>As one reader commented, up to this point I&#8217;m not really using any Pinax feature other than the website structure itself, like authentication, templates and menus. I&#8217;m starting with a basic Django application. I hope to add soon features like notification, messaging, tagging, gravatar.</p>
<p>So, in this sprint I started by defining two URLs:</p>
<ul>
<li><strong>/pastebin/</strong> to submit a new item</li>
<li><strong>/pastebin/&lt;uuid&gt;/</strong> to view a submitted item</li>
</ul>
<p>This is what my <strong>apps/oxybeles/urls.py</strong> file looks like:</p>
<p><pre class="brush: python;">
from django.conf.urls.defaults import *
from oxybeles.models import PastedItem

info_dict = {
    'queryset': PastedItem.objects.all(),
    'slug_field': 'uuid',
}

urlpatterns = patterns('',
    url(r'^$', 'oxybeles.views.new', name='oxybeles_new'),
    url(r'^(?P&lt;slug&gt;[-0-9a-f]{36})/$',
        'django.views.generic.list_detail.object_detail',
        info_dict,
        'oxybeles_detail'),
)
</pre></p>
<p>I also updated <strong>apps/oxybeles/models.py</strong> so it knows how to build a URL for a pasted item:</p>
<p><pre class="brush: python;">
def get_absolute_url(self):
    return ('oxybeles_detail', (), { 'slug': self.uuid })
get_absolute_url = models.permalink(get_absolute_url)
</pre></p>
<p>I wrote a simple form class in <strong>apps/oxybeles/forms.py</strong>:</p>
<p><pre class="brush: python;">
from django import forms 
from django.utils.translation import ugettext_lazy as _ 

from oxybeles.models import PastedItem 

class PastedItemForm(forms.ModelForm):
    class Meta():
        model = PastedItem
        fields = ('text',)

    def __init__(self, user = None, *args, **kwargs):
        self.user = user
        super(PastedItemForm, self).__init__(*args, **kwargs)
</pre></p>
<p>And finally I wrote in <strong>apps/oxybeles/views.py </strong>the view function that is in charge of the form for submitting new items:</p>
<p><pre class="brush: python;">
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect, get_host
from django.template import RequestContext
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext, ugettext_lazy as _
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required

from oxybeles.models import PastedItem
from oxybeles.forms import PastedItemForm

def new(request, form_class=PastedItemForm, template_name=&quot;oxybeles/new.html&quot;):
    &quot;&quot;&quot;
    Form for pasting new items.
    &quot;&quot;&quot;
    form = form_class()
    if request.method == 'POST':
        if request.POST[&quot;action&quot;] == &quot;paste&quot;:
            form = form_class(request.user, request.POST)
            if form.is_valid():
                item = form.save(commit=False)
                item.user = request.user
                item.save()
                request.user.message_set.create(
                    message=ugettext(&quot;The new pasted item was saved.&quot;))
                    # some problem with ugettext_lazy here
                return HttpResponseRedirect(reverse('oxybeles_detail',
                                            args=(item.uuid,)))
    return render_to_response(template_name,
                              { &quot;form&quot;: form, },
                              context_instance=RequestContext(request))
new = login_required(new)
</pre></p>
<p>Finally, I wrote the two templates.</p>
<p><strong>templates/oxybeles/new.html:</strong></p>
<p><pre class="brush: xml;">
{% extends &quot;site_base.html&quot; %}

{% load i18n %}

{% block head_title %}{% trans &quot;Paste Bin&quot; %}{% endblock %}

{% block body %}
&lt;div id=&quot;basic-form&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;{% trans &quot;New Item&quot; %}&lt;/legend&gt;
&lt;form id=&quot;pastebin_new_form&quot; method=&quot;POST&quot; action=&quot;&quot;&gt;
&lt;div&gt;{{ form.non_field_errors }}&lt;/div&gt;
&lt;div&gt;{{ form.text.errors }}&lt;/div&gt;
&lt;div&gt;{{ form.text }}&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;paste&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;paste&quot; class=&quot;button&quot; /&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;/fieldset&gt;
&lt;/div&gt;
{% endblock %}
</pre></p>
<p><strong>templates/oxybeles/pasteditem_detail.html:</strong></p>
<p><pre class="brush: xml;">
{% extends &quot;site_base.html&quot; %}

{% load i18n %}

{% block head_title %}{% trans &quot;Paste Bin&quot; %}{% endblock %}

{% block body %}
&lt;h1&gt;Pasted Item&lt;/h1&gt;
&lt;pre&gt;
&lt;p&gt;{{ object.text }}&lt;/p&gt;
&lt;/pre&gt;
{% endblock %}
</pre></p>
<p>And this is the final result:</p>
<p><strong>http://127.0.0.1:8000/pastebin/</strong></p>
<p><img class="alignnone size-full wp-image-280" title="New Pasted Item" src="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part5-01.png" alt="" width="355" height="284" /></p>
<p><strong>http://127.0.0.1:8000/pastebin/47d33482-a936-453a-8d4a-88aada4ebc44/</strong></p>
<p><img class="alignnone size-full wp-image-282" title="View Pasted Item" src="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part5-021.png" alt="" width="345" height="164" /></p>
<p>So, the basic app is in place. The source is in <a href="http://github.com/fernandoacorreia/oxybeles/tree/1af5676234f4ea1a29da3662e57fde92c052b2eb">GitHub</a>. In the next article I plan to implement a command to send a pasted item to a user, using Pinax&#8217;s features.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/278/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=278&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/28/exploring-pinax-part-5/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part5-01.png" medium="image">
			<media:title type="html">New Pasted Item</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part5-021.png" medium="image">
			<media:title type="html">View Pasted Item</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 4</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/26/exploring-pinax-part-4/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/26/exploring-pinax-part-4/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 23:49:04 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=264</guid>
		<description><![CDATA[This is the fourth of a series of articles about my experience learning Pinax. In the previous articles I created a new option in the menu for a paste bin application and linked it to a very basic view. My next step is to create a form for pasting text. I plan to do that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=264&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is the fourth of a <a href="http://fernandoacorreia.wordpress.com/tag/pinax/">series of articles</a> about my experience learning <a href="http://pinaxproject.com/">Pinax</a>. In the previous articles I created a new option in the menu for a paste bin application and linked it to a very basic view.</p>
<p>My next step is to create a form for pasting text. I plan to do that using a form based on a model object. So the first thing I did was to write that model.</p>
<pre>$ gedit apps/oxybeles/models.py</pre>
<p><pre class="brush: python;">
from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import ugettext_lazy as _
from uuid import uuid4

class PastedItem(models.Model):
    &quot;&quot;&quot;
    An item that was pasted.
    &quot;&quot;&quot;

    uuid = models.CharField(_('identifier'), max_length=36, unique=True)
    text = models.TextField(_('text'))
    in_response_to = models.ForeignKey('self', related_name='responses',
        blank=True, null=True, verbose_name=_('in response to'))
    user = models.ForeignKey(User, related_name=&quot;pasted_items&quot;,
        verbose_name=_('user'))
    pasted_at = models.DateTimeField(_('pasted at'), auto_now_add=True)

    def __unicode__(self):
        return self.uuid

    def save(self):
        if not self.uuid:
            self.uuid = str(uuid4())  # random so it can't be easily guessed
        super(PastedItem, self).save()
</pre></p>
<p>The <strong>uuid</strong> will be used later to refer to an object in a URL. It will be a random unique identifier. The <strong>text</strong> field is what the user pasted, and is the main content of this object.</p>
<p>I plan to allow responses to pasted items, so that two users can share different versions of the same text. The <strong>in_response_to</strong> field will be used for that.</p>
<p>Since now the application has a model object, I must tell Django about it:</p>
<pre>$ gedit settings.py</pre>
<p>Insert the application name inside the INSTALLED_APPS list:</p>
<p><pre class="brush: python;">
INSTALLED_APPS = (
...
    'oxybeles',
...
)
</pre></p>
<p>Then I was ready to review if the table would be created correctly:</p>
<pre>$ python manage.py sqlall oxybeles</pre>
<p><pre class="brush: sql;">
BEGIN;
CREATE TABLE &quot;oxybeles_pasteditem&quot; (
    &quot;id&quot; integer NOT NULL PRIMARY KEY,
    &quot;uuid&quot; varchar(36) NOT NULL UNIQUE,
    &quot;text&quot; text NOT NULL,
    &quot;in_response_to_id&quot; integer NULL,
    &quot;user_id&quot; integer NOT NULL REFERENCES &quot;auth_user&quot; (&quot;id&quot;),
    &quot;pasted_at&quot; datetime NOT NULL
)
;
CREATE INDEX &quot;oxybeles_pasteditem_in_response_to_id&quot;
ON &quot;oxybeles_pasteditem&quot; (&quot;in_response_to_id&quot;);
CREATE INDEX &quot;oxybeles_pasteditem_user_id&quot;
ON &quot;oxybeles_pasteditem&quot; (&quot;user_id&quot;);
COMMIT;
</pre></p>
<p>Finally, I updated the database structure:</p>
<pre>$ python manage.py syncdb</pre>
<p>To test this model, I defined an administrative interface:</p>
<pre>$ gedit apps/oxybeles/admin.py</pre>
<p><pre class="brush: python;">
from django.contrib import admin
from oxybeles.models import PastedItem

class PastedItemAdmin(admin.ModelAdmin):
    list_display = ('uuid', 'user', 'pasted_at',)
    fields = ('text', 'in_response_to', 'user',)

admin.site.register(PastedItem, PastedItemAdmin)
</pre></p>
<p>Starting the server again and browsing to <a href="http://127.0.0.1:8000/admin/oxybeles/pasteditem/">http://127.0.0.1:8000/admin/oxybeles/pasteditem/</a>, I was able to create a few pasted items to verify that all is working:</p>
<p><img class="alignnone size-full wp-image-271" title="Pasted Items Administrative Interface" src="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part4-01.png" alt="" width="744" height="242" /></p>
<p>In the next step I will create the user interface to paste new items and to view stored items.</p>
<p>The source code is hosted on <a href="http://github.com/fernandoacorreia/oxybeles/tree/9f854acb9c9118a6717ff191d1bc9c41c352a08d">GitHub</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=264&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/26/exploring-pinax-part-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part4-01.png" medium="image">
			<media:title type="html">Pasted Items Administrative Interface</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 3</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/24/exploring-pinax-part-3/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/24/exploring-pinax-part-3/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 23:51:47 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=251</guid>
		<description><![CDATA[This is the third of a series of articles about my experience with the Pinax project. I am building a sample paste bin application named Oxybeles, of all things. On the previous articles I installed Pinax and created a tab in the main menu for my new app. Now I want to create a basic [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=251&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is the third of a <a href="http://fernandoacorreia.wordpress.com/tag/pinax/">series of articles</a> about my experience with the <a href="http://pinaxproject.com/">Pinax</a> project. I am building a sample paste bin application named <a href="http://images.google.com/images?q=Oxybeles">Oxybeles</a>, of all things.</p>
<p>On the previous articles I installed Pinax and created a tab in the main menu for my new app. Now I want to create a basic view, but first I need to start a new Django app.</p>
<pre>$ python manage.py startapp oxybeles</pre>
<p>It seems that it would be appropriate to move it into the apps directory, so I did that:</p>
<pre>$ mv oxybeles/ apps/</pre>
<p>Here, I took a detour to create a <a href="http://github.com/fernandoacorreia/oxybeles/tree">GitHub repository</a> to host this application, but I won&#8217;t record my git sessions on this series, because the focus is on Pinax and Django.</p>
<p>After exploring a bit how other Pinax application URLs are set up, I decided to start by copying the pattern used in the &#8220;about&#8221; application.</p>
<p>I started by creating a basic template:</p>
<pre>$ mkdir templates/oxybeles
$ gedit templates/oxybeles/new.html</pre>
<p>I created the new file <strong>templates/oxybeles/new.html</strong> with this content:</p>
<pre>{% extends "site_base.html" %}

{% load i18n %}

{% block head_title %}{% trans "Paste Bin" %}{% endblock %}

{% block body %}
    {% blocktrans %}
        &lt;p&gt;This will be a form to post some text.&lt;/p&gt;
    {% endblocktrans %}
{% endblock %}</pre>
<p>Next, I created a new urls.py file inside the new app:</p>
<pre>$ gedit apps/oxybeles/urls.py</pre>
<p><pre class="brush: python;">
from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
    url(r'^$',
        direct_to_template,
        {&quot;template&quot;: &quot;oxybeles/new.html&quot;},
        name=&quot;oxybeles_new&quot;),
)
</pre></p>
<p>Then I added the new application to the main <strong>urls.py</strong> file:</p>
<pre>$ gedit urls.py</pre>
<p>Around line 56, inside the urlpatterns list declaration, I inserted:</p>
<pre>(r'^pastebin/', include('oxybeles.urls')),</pre>
<p>And finally, I changed the menu option to link to the new URL:</p>
<p>$ gedit templates/site_base.html</p>
<p>Changing:</p>
<pre>&lt;td class="tab rtab_pastebin"&gt;&lt;div&gt;&lt;a href="#"&gt;{% trans "Paste Bin" %}&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;</pre>
<p>To:</p>
<pre>&lt;td class="tab rtab_pastebin"&gt;&lt;div&gt;&lt;a href="{% url oxybeles_new %}"&gt;{% trans "Paste Bin" %}&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;</pre>
<p>Now the <strong>Paste Bin</strong> menu item links to <a href="http://127.0.0.1:8000/pastebin/">http://127.0.0.1:8000/pastebin/</a> and that renders the <strong>oxybeles/new.html</strong> template that shows just:</p>
<pre>This will be a form to post some text.</pre>
<p>Good, the new app is linked to Pinax and the basic view is working. In the next article I&#8217;ll try to get a basic form working.</p>
<p>The application source code at this stage can be found in <a href="http://github.com/fernandoacorreia/oxybeles/tree/bc8a5567478a483b7e8182a0b5cee838806b5ff2">GitHub</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/251/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=251&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/24/exploring-pinax-part-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 2</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/23/exploring-pinax-part-2/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/23/exploring-pinax-part-2/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 22:59:36 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=245</guid>
		<description><![CDATA[This is the second of a series of articles where I register what I learn about developing Web applications with Pinax. In the first part I got the sample website running. Now I&#8217;m going to add a section for a new application. I will develop a simple paste bin where people will be able to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=245&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is the second of a <a href="http://fernandoacorreia.wordpress.com/tag/pinax/">series of articles</a> where I register what I learn about developing Web applications with <a href="http://pinaxproject.com/">Pinax</a>.</p>
<p>In the <a href="http://fernandoacorreia.wordpress.com/2008/10/22/exploring-pinax-part-1/">first part</a> I got the sample website running. Now I&#8217;m going to add a section for a new application.</p>
<p>I will develop a simple <a href="http://en.wikipedia.org/wiki/Pastebin">paste bin</a> where people will be able to store small ammounts of text and send it to other people. I will try to write it as a reusable Django application and leverage Pinax&#8217;s features.</p>
<p>I will call this application <a href="http://images.google.com/images?q=Oxybeles"><strong>Oxybeles</strong></a>: an implement for throwing things, because when you paste something online you usually want to &#8220;throw&#8221; it to someone. Besides, a Greek name fits a Pinax app.</p>
<h1>Creating a new tab</h1>
<p>The first thing I wanted to do was to create a new tab in the site interface for the paste bin app. After searching a little I found out that the website tabs are defined in <strong>templates/site_base.html</strong> and that the actual text is stored in localizable resource files such as <strong>locale/en/LC_MESSAGES/django.po</strong>.</p>
<p>So I edited <strong>templates/site_base.html</strong> and inside the {% block right_tab %} section I inserted this line, among the others:</p>
<pre>&lt;td class="tab rtab_pastebin"&gt;&lt;div&gt;&lt;a href="#"&gt;{% trans "Paste Bin" %}&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;</pre>
<p>After that I thought I should edit <strong>locale/en/LC_MESSAGES/django.po</strong>. But it seemed autogenerated, so I went to learn how that works. <a href="http://docs.djangoproject.com/en/dev/topics/i18n/">Django&#8217;s documentation</a> is great. I quickly found out that internationalization is very easy and automatic in Django. While I&#8217;m developing I can just use the English text. If I want to update the translation files I can use this command at the project&#8217;s root dir:</p>
<pre>$ python manage.py makemessages -l en</pre>
<p>The first time, I got a message complaining that xgettext was not found. I corrected that by installing gettext:</p>
<pre>$ sudo aptitude install gettext</pre>
<p>After that, I generated the makemessages command again and I could see that <strong>locale/en/LC_MESSAGES/django.po</strong> was updated. I learned that I should also compile those files. But I reckon I&#8217;d only need to do that before a release, not during development.</p>
<p>So, with only a single new line in a template, I got the <strong>Paste Bin</strong> tab:</p>
<p><img class="alignnone size-full wp-image-247" title="Paste Bin tab" src="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part2-011.png" alt="" width="397" height="47" /></p>
<p>In the next step I will develop a basic view for this tab and maybe start the model object.</p>
<p>Your feedback is welcome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=245&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/23/exploring-pinax-part-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part2-011.png" medium="image">
			<media:title type="html">Paste Bin tab</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring Pinax &#8211; Part 1</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/22/exploring-pinax-part-1/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/22/exploring-pinax-part-1/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 23:13:27 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pinax]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=228</guid>
		<description><![CDATA[What this is about After learning how to build a Flex client and a Python server running on Google App Engine, I decided to try a pure-Web, pure-Python alternative. I chose Django, a first-class Web framework. I went through the tutorial and read the excellent book Practical Django Projects. The next step is building a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=228&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>What this is about</h1>
<p>After learning how to build a Flex client and a Python server running on Google App Engine, I decided to try a pure-Web, pure-Python alternative. I chose <strong><a href="http://www.djangoproject.com/">Django</a></strong>, a first-class Web framework. I went through the <a href="http://docs.djangoproject.com/en/dev/intro/tutorial01/">tutorial</a> and read the excellent book <a href="http://www.amazon.com/Practical-Django-Projects-Pratical/dp/1590599969">Practical Django Projects</a>. The next step is building a website with some applications.</p>
<p>Fortunately, I found out about the <a href="http://pinaxproject.com/"><strong>Pinax</strong></a> project. It builds a website framework over Django and provides patterns for interoperable applications. I decided to learn how to leverage it so I can learn best practices and use some of its nice features like notifications.</p>
<p>I will do my learning in the open, as I did <a href="http://fernandoacorreia.wordpress.com/2008/08/23/example-of-ria-in-the-cloud/">before</a>, sharing my path and my discoveries. This is a journey from the eyes of a n00b that knows very little about Python, Django and Pinax.</p>
<p>I found out that this process helps me focus and structure my self-learning. I hope it may be useful to someone that follows the same path. And maybe someone more knowledgeable will correct one or two of the bloopers I make.</p>
<h1>Installing Pinax</h1>
<p>I started in a development environment that was already configured to run Django applications and had its fair share of tools, like a <strong>Subversion</strong> client and <strong>sendmail</strong>. You will have to refer to basic Django and Python material if you need to learn how to get to this point. Also, all my work is being done on <strong>Ubuntu 8.10</strong>, so you may need to adjust some commands if you use other environment.</p>
<p><strong>Making a directory for Pinax:</strong></p>
<pre>$ mkdir ~/opt/django -p
$ cd ~/opt/django</pre>
<p>Downloading Pinax and associated applications and libraries:</p>
<pre>$ svn checkout http://svn.pinaxproject.com/pinax/trunk/ pinax</pre>
<p>I am using version 0.5.0rc1. Things might be different if you use a newer version.</p>
<h1>Creating a sample project</h1>
<p><em><strong>Edit:</strong> I changed these instructions twice, first to reflect <a href="http://pinaxproject.com/docs/0.5.0/customization.html">best practices</a>, thanks to <a href="http://groups.google.com/group/pinax-users/browse_thread/thread/699a6cd60cc89e22/7d9a3ef4c446b18a?hl=en#7d9a3ef4c446b18a">a tip</a> by Bob Haugen and later when Pinax was updated to require only changes in settings.py and not in manage.py.<br />
</em></p>
<p>Pinax comes with a sample project that can be used directly, but I will create an independent clone that I can change at will without getting in trouble with repository updates later.</p>
<pre>$ cd pinax/projects/
$ svn export complete_project/ ~/Projects/exploring_pinax</pre>
<p>Now we must edit settings.py to reflect the directory where we installed Pinax:</p>
<pre>$ cd ~/Projects/exploring_pinax
$ vi settings.py</pre>
<p>Change PINAX_ROOT to the main Pinax directory. For instance:</p>
<pre>...
PINAX_ROOT = '/home/fernando/opt/django/pinax'
...</pre>
<p>Also set ROOT_URLCONF using the name of the directory you exported the website project to:</p>
<pre>...
ROOT_URLCONF = 'exploring_pinax.urls'
...</pre>
<p>After that, save settings.py.</p>
<p>If we want, we can also create a file for future local settings like database passwords. I won&#8217;t use it now, but it may be handy to have it already created:</p>
<pre>$ touch local_settings.py</pre>
<p>Now create the local sqlite3 database:</p>
<pre>$ python manage.py syncdb</pre>
<p>When asked, create a superuser (admin).</p>
<h1>Starting the website</h1>
<pre>$ python manage.py runserver</pre>
<p>Open <a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a> in your browser. You should have a Pinax website running. Congratulations! Login with your superuser and explore at leisure.</p>
<p><img class="alignnone size-full wp-image-236" title="Sample Pinax website" src="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part1-01.png" alt="" width="583" height="453" /></p>
<p>If you want to follow this series, browse <a href="http://fernandoacorreia.wordpress.com/tag/pinax/">http://fernandoacorreia.wordpress.com/tag/pinax/</a> for more articles or subscribe to my <a href="http://fernandoacorreia.wordpress.com/feed/">feed</a>.</p>
<p>Your feedback is most welcome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/228/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=228&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/22/exploring-pinax-part-1/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/10/pinax-part1-01.png" medium="image">
			<media:title type="html">Sample Pinax website</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing PostgreSQL on Ubuntu 8.10</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/18/installing-postgresql-on-ubuntu-810/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/18/installing-postgresql-on-ubuntu-810/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 17:06:28 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=226</guid>
		<description><![CDATA[PostgreSQL is my preferred database on a Linux environment.This is the sequence I used to install it on my development machine. It is running Ubuntu 8.10 (Intrepid Ibex) beta on a VMware Workstation virtual machine. I referred to https://help.ubuntu.com/community/PostgreSQL, http://bioinformaticsonline.co.uk/2007/02/26/postgresql_on_ubuntu_linux_how_to and  http://hocuspokus.net/2007/11/05/install-postgresql-on-ubuntu-710/ and adapted the instructions a little bit. Installing the server and basic tools [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=226&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>PostgreSQL</strong> is my preferred database on a Linux environment.This is the sequence I used to install it on my development machine. It is running <strong>Ubuntu 8.10</strong> (Intrepid Ibex) beta on a VMware Workstation virtual machine.</p>
<p>I referred to <a href="https://help.ubuntu.com/community/PostgreSQL">https://help.ubuntu.com/community/PostgreSQL</a>, <a href="http://bioinformaticsonline.co.uk/2007/02/26/postgresql_on_ubuntu_linux_how_to">http://bioinformaticsonline.co.uk/2007/02/26/postgresql_on_ubuntu_linux_how_to</a> and  <a href="http://hocuspokus.net/2007/11/05/install-postgresql-on-ubuntu-710/">http://hocuspokus.net/2007/11/05/install-postgresql-on-ubuntu-710/</a> and adapted the instructions a little bit.</p>
<p><strong>Installing the server and basic tools</strong></p>
<pre>sudo apt-get install postgresql postgresql-client postgresql-contrib</pre>
<p>That got me PostgreSQL 8.3.</p>
<p><strong>Basic Server Setup</strong></p>
<p>First, changing the password of the postgres user:</p>
<pre>sudo -u postgres psql postgres
ALTER USER postgres WITH ENCRYPTED PASSWORD '&lt;***password***&gt;';
\q</pre>
<p><strong>Creating the initial databases</strong></p>
<pre>sudo -u postgres createdb dev
sudo -u postgres createdb test</pre>
<p>That creates a database named &#8220;dev&#8221;, for development, and another named &#8220;test&#8221;, for testing.</p>
<p>I use schemas to have multiple applications using a single database.</p>
<p><strong>Setting Up the Admin Pack</strong></p>
<p>The admin pack is said enable better logging and monitoring within pgAdmin.</p>
<pre>sudo -u postgres psql &lt; /usr/share/postgresql/8.3/contrib/adminpack.sql</pre>
<p><strong>Installing pgAdmin III</strong></p>
<p>pgAdmin III is a database design and management application for use with PostgreSQL.</p>
<pre>sudo aptitude install pgadmin3</pre>
<p><strong>Using pgAdmin</strong></p>
<pre>pgadmin3</pre>
<p>I clicked on the &#8220;Add a connection to a server&#8221; button (top left). I filled in the host (localhost) and password of the postgres user (from the previous ALTER USER command). Then I clicked OK and was connected to the local PostgreSQL server.</p>
<p>Incidentally, I noticed that the databases I created were set to <strong>UTF-8</strong> encoding. Great, exactly what I wanted.</p>
<p><strong>Restarting the server</strong></p>
<p>If there is any need, the server can be restarted this way:</p>
<pre>sudo /etc/init.d/postgresql-8.3 restart</pre>
<p><strong>Other tasks</strong></p>
<p>Some times I might want to open up the server for <strong>network access</strong> and/or install <a href="http://www.phppgadmin.org/"><strong>phpPgAdmin</strong></a> to control it with a Web interface. The articles mentioned in the introduction can help with that. I don&#8217;t think I&#8217;ll have to do either thing on this development environment, though.</p>
<p><strong>Conclusion</strong></p>
<p>That&#8217;s it. Quick, easy and powerful. I really like Ubuntu.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/226/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=226&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/18/installing-postgresql-on-ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Editing Python on Ubuntu Linux</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/16/editing-python-on-ubuntu-linux/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/16/editing-python-on-ubuntu-linux/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 00:45:31 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=221</guid>
		<description><![CDATA[Still using Eclipse with PyDev for Python&#8230; Let&#8217;s face it, Visual Studio with ReSharper (for C#) is so much better&#8230; Anyway, I tried GVim, but it is too old-fashioned. I&#8217;d rather use Notepad++ if it were available on Linux. I even tried JEdit again, after so many years&#8230; But Eclipse is doing the trick for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=221&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Still using Eclipse with PyDev for Python&#8230; Let&#8217;s face it, Visual Studio with ReSharper (for C#) is so much better&#8230;</p>
<p>Anyway, I tried GVim, but it is too old-fashioned. I&#8217;d rather use Notepad++ if it were available on Linux. I even tried JEdit again, after so many years&#8230;</p>
<p>But Eclipse is doing the trick for now. I expect that NetBeans with Python support will be my platform of choice for Python when it is released.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=221&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/16/editing-python-on-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Google App Engine is 25% ready</title>
		<link>http://fernandoacorreia.wordpress.com/2008/10/04/google-app-engine-is-25-ready/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/10/04/google-app-engine-is-25-ready/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 13:07:28 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[appengine]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=214</guid>
		<description><![CDATA[When Google App Engine was announced, I was pretty excited to be able to run any code at all on Google&#8217;s servers. I was also intrigued by the promise of having scalable Web apps without having to worry about the infrastructure. So I went out and built a sample application to learn how to use [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=214&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When <a href="http://code.google.com/appengine/">Google App Engine</a> was announced, I was pretty excited to be able to run any code at all on Google&#8217;s servers. I was also intrigued by the promise of having scalable Web apps without having to worry about the infrastructure.</p>
<p>So I went out and <a href="http://fernandoacorreia.wordpress.com/2008/08/23/example-of-ria-in-the-cloud/">built a sample application</a> to learn how to use App Engine. I even learned some Python, which was great.</p>
<p>Even being able to successfully build the application, I gave up on App Engine. One reason is that there is too much data lock-in. It is a vault where you put your data in, but it&#8217;s very difficult to get it all out if you want or need to.</p>
<p>But the most serious issue for me were the <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/4e9ef76155e8b842?tvc=2&amp;q=Application+over+quota">frequent messages</a> on the user group about applications being offline for <strong>hours </strong>because of a few Web requests that App Engine deemed excessive. Well, for me the only thing that is attractive about App Engine is the promise of reliability and scalability. But in practice you can&#8217;t depend on it.</p>
<p>Aral Balkan, one of the biggest App Engine enthusiasts and a great blogger, <a href="http://aralbalkan.com/1504">wrote an article</a> that sums it all in a masterful way, and where he explains why App Engine is only <strong>25% ready </strong>for prime time. For example:</p>
<blockquote><p>&lt;&lt; You build an awesome new app on Google App Engine. You tell your friends. They tell 1,000 of their friends on Twitter who tell 1,000 of their friends and then, suddenly, you have all these developers hitting Google App Engine for the first time to see your app. Paradoxically, by doing that, they trigger the &#8220;intelligent throttling&#8221; &#8220;feature&#8221; in Google App Engine which freaks out and shuts down your app with an &#8220;Over Quota&#8221; error &#8212; effectively making the &#8220;Over Quota&#8221; message the first impression most of your audience has of Google App Engine. &gt;&gt;</p></blockquote>
<p>The cloud space is a territory for experimentation, and I think it&#8217;s great that Google is working on such a service. I also think that eventually they will get it right.</p>
<p>But I wouldn&#8217;t host a Web app on App Engine anytime soon. I&#8217;d settle for a little less scalability and more reliability.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=214&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/10/04/google-app-engine-is-25-ready/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>JavaScript performance: SquirrelFish Extreme</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/21/javascript-performance-squirrelfish-extreme/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/21/javascript-performance-squirrelfish-extreme/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 14:17:33 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=212</guid>
		<description><![CDATA[The WebKit team announced a new generation of their JavaScript engine: SquirrelFish Extreme. It leverages several advanced techniques and the result is quite fast JavaScript execution. With this new scripting engine and its great rendering speed, WebKit is even better positioned as a leading browser engine. There are already several benchmarks comparing SquirrelFish Extreme to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=212&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The WebKit team announced a new generation of their JavaScript engine: SquirrelFish Extreme.</p>
<p>It leverages several advanced techniques and the result is quite fast JavaScript execution.</p>
<p>With this new scripting engine and its great rendering speed, WebKit is even better positioned as a leading browser engine.</p>
<p>There are already several benchmarks comparing SquirrelFish Extreme to previous WebKit versions and to other engines:</p>
<ul>
<li><a href="http://webkit.org/blog/214/introducing-squirrelfish-extreme/">Introducing SquirrelFish Extreme</a></li>
<li><a href="http://summerofjsc.blogspot.com/2008/09/squirrelfish-extreme-has-landed.html">SquirrelFish Extreme has landed</a></li>
<li><a href="http://www.satine.org/archives/2008/09/19/squirrelfish-extreme-fastest-javascript-engine-yet/">SquirrelFish Extreme: Fastest JavaScript Engine Yet</a></li>
</ul>
<p>The new generation of browsers with fast rendering and scripting engines and multiprocess architecture is becoming a competitive platform for Rich Internet Applications and may provide a compelling alternative to environments like Flash / Flex and Silverlight.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/212/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=212&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/21/javascript-performance-squirrelfish-extreme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Delicious in Google Chrome</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/05/delicious-in-google-chrome/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/05/delicious-in-google-chrome/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 20:07:29 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=196</guid>
		<description><![CDATA[I really liked Google Chrome. It is fast and has a clean interface. One thing that was preventing me from switching to it is the lack of support for Delicious, where I keep my Web tags. While we wait for extension support, there is a way to achieve good enough integration that makes Delicious usable [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=196&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I really liked Google Chrome. It is fast and has a clean interface. One thing that was preventing me from switching to it is the lack of support for <a href="http://delicious.com/">Delicious</a>, where I keep my Web tags.</p>
<p>While we wait for extension support, there is a way to achieve good enough integration that makes Delicious usable from Chrome.</p>
<p><strong>Tagging pages</strong></p>
<p>To be able to tag pages on Delicious from Chrome we can use a bookmarklet. Instructions:</p>
<ul>
<li>Open the Delicious <a href="http://delicious.com/help/bookmarklets">bookmarklets</a> help page.</li>
<li>Press Control+B to show Chrome&#8217;s bookmarks bar.</li>
<li>Still in the Bookmarklets page, locate the instructions for Safari.</li>
<li>Drag the two links into your bookmarks bar.</li>
</ul>
<div>
<p><a href="http://fernandoacorreia.files.wordpress.com/2008/09/delicious1.png"><img class="size-full wp-image-200 alignnone" title="Delicious buttons" src="http://fernandoacorreia.files.wordpress.com/2008/09/delicious1.png" alt="Delicious buttons" width="230" height="33" /></a></div>
<div>Now, whenever you want to bookmark a page on Delicious, just click on the icon on the bookmarks bar. Remember you can hide and show this bar, so press Control+B when you need the icon and enjoy a clean interface the rest of the time.</div>
<p><strong>Searching pages</strong></p>
<p>You can use Chrome&#8217;s Omnibox to search inside your Delicious tags:</p>
<ul>
<li>Right-click in the Omnibox and select <strong>Edit search engines</strong>.</li>
<li>In the Search Engines dialog press the Add button.</li>
<li>Fill the form as follows:
<ul>
<li>Name: Delicious</li>
<li>Keywork: d</li>
<li>URL: http://delicious.com/search?context=userposts&amp;p=%s&amp;lc=1&amp;u=<strong>your_user_name</strong></li>
</ul>
</li>
<li>Press OK to close the form.</li>
</ul>
<p><a href="http://fernandoacorreia.files.wordpress.com/2008/09/delicious2.png"><img class="alignnone size-full wp-image-202" title="Search Engines" src="http://fernandoacorreia.files.wordpress.com/2008/09/delicious2.png" alt="" width="483" height="383" /></a></p>
<p>Now on your Omnibox you can type &#8220;d&#8221;, the space bar, and your search term, like this:</p>
<p><strong>d python</strong></p>
<p>And a search page in Delicious will be shown.</p>
<p><a href="http://fernandoacorreia.files.wordpress.com/2008/09/delicious3.png"><img class="alignnone size-full wp-image-203" title="Delicious Search" src="http://fernandoacorreia.files.wordpress.com/2008/09/delicious3.png" alt="" width="510" height="72" /></a></p>
<p><strong>Google Bookmarks</strong></p>
<p>You can also integrate Google Bookmarks using the same technique described here.</p>
<p><strong>Conclusion</strong></p>
<p>I agree this is not as great as the Delicious extension for Firefox. But I think it is convenient enough to enable me to try switching to Chrome as my primary browser.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/196/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/196/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=196&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/05/delicious-in-google-chrome/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/09/delicious1.png" medium="image">
			<media:title type="html">Delicious buttons</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/09/delicious2.png" medium="image">
			<media:title type="html">Search Engines</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/09/delicious3.png" medium="image">
			<media:title type="html">Delicious Search</media:title>
		</media:content>
	</item>
		<item>
		<title>Django 1.0 is Out</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/03/django-10-is-out/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/03/django-10-is-out/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 01:11:25 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=184</guid>
		<description><![CDATA[Jacob Kaplan-Moss announced the release of Django 1.0. That&#8217;s a great milestone for this Python Web framework. Jacob recalls how the project grew to a proportion that they couldn&#8217;t imagine in the first days, and concludes that &#8220;Django 1.0 represents a the largest milestone in Django’s development to date: a web framework that a group of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=184&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.djangoproject.com/"><img class="alignright" src="http://media.djangoproject.com/img/site/hdr_logo.gif" alt="" width="117" height="41" /></a>Jacob Kaplan-Moss <a href="http://www.djangoproject.com/weblog/2008/sep/03/1/">announced</a> the release of <strong>Django 1.0</strong>. That&#8217;s a great milestone for this Python Web framework.</p>
<p>Jacob recalls how the project grew to a proportion that they couldn&#8217;t imagine in the first days, and concludes that</p>
<blockquote><p><em>&#8220;Django 1.0 represents a the largest milestone in Django’s development to date: a web framework that a group of perfectionists can truly be proud of.&#8221;</em></p></blockquote>
<p>Among the major features in the <a href="http://docs.djangoproject.com/en/dev/releases/1.0/">release notes</a> are:</p>
<ul>
<li>Stability and forwards-compatibility</li>
<li>A new documentation site</li>
<li>Re-factored admin application</li>
<li>Improved Unicode handling</li>
<li>An improved ORM</li>
<li>Automatic escaping of template variables</li>
<li>GeoDjango</li>
<li>Pluggable file storage</li>
<li>Jython compatibility</li>
<li>Generic relations in forms and admin</li>
<li>INSERT/UPDATE distinction</li>
<li>Split CacheMiddleware</li>
<li>Refactored django.contrib.comments</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/184/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/184/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=184&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/03/django-10-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://media.djangoproject.com/img/site/hdr_logo.gif" medium="image" />
	</item>
		<item>
		<title>Chrome cheat codes</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/03/chrome-cheat-codes/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/03/chrome-cheat-codes/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 12:42:41 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=172</guid>
		<description><![CDATA[Open these links in Chrome: about:network about:stats about:cache about:histograms about:plugins about:dns about:version Edit: Found more: about:memory about:internets Source: http://img141.imageshack.us/img141/120/chromesecretzq2.jpg<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=172&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Open these links in Chrome:</p>
<ul>
<li><strong>about:network</strong></li>
<li><strong>about:stats</strong></li>
<li><strong>about:cache</strong></li>
<li><strong>about:histograms</strong></li>
<li><strong>about:plugins</strong></li>
<li><strong>about:dns</strong></li>
<li><strong>about:version</strong></li>
</ul>
<p>Edit: Found more:</p>
<ul>
<li><strong>about:memory</strong></li>
<li><strong>about:internets<br />
</strong></li>
</ul>
<div>Source:</div>
<div><span style="color:#551a8b;"><a href="http://img141.imageshack.us/img141/120/chromesecretzq2.jpg">http://img141.imageshack.us/img141/120/chromesecretzq2.jpg</a></span></div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/172/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/172/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/172/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=172&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/03/chrome-cheat-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>
	</item>
		<item>
		<title>Chrome is Fast: JavaScript benchmark</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/02/chrome-is-fast-javascript-benchmark/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/02/chrome-is-fast-javascript-benchmark/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 20:29:30 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=159</guid>
		<description><![CDATA[I ran the V8 JavaScript virtual machine&#8217;s benchmark suite on Internet Explorer, Firefox and Chrome. Guess who comes first&#8230; The old JavaScript engines are not even in the same league. For a competitor I think we must wait for Tamarin TraceMonkey. Edits: Reader PA contributed with another benchmark that finds that Lua is faster. Good, let&#8217;s all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=159&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I ran the V8 JavaScript virtual machine&#8217;s <a href="http://code.google.com/apis/v8/run.html">benchmark suite</a> on Internet Explorer, Firefox and Chrome. Guess who comes first&#8230;</p>
<p><a href="http://fernandoacorreia.files.wordpress.com/2008/09/jsbench.png"><img class="alignnone size-full wp-image-160" src="http://fernandoacorreia.files.wordpress.com/2008/09/jsbench.png" alt="" width="545" height="442" /></a></p>
<p>The old JavaScript engines are not even in the same league. For a competitor I think we must wait for <a href="http://en.wikipedia.org/wiki/Tamarin_(JavaScript_engine)"><span style="text-decoration:line-through;"><span style="color:#c0c0c0;">Tamarin</span></span></a> <a href="http://ejohn.org/blog/tracemonkey/">TraceMonkey</a>.</p>
<p><em>Edits:</em></p>
<p>Reader <em>PA </em>contributed with <a href="http://article.gmane.org/gmane.comp.lang.lua.general/50131">another benchmark</a> that finds that Lua is faster. Good, let&#8217;s all switch to Lua then! =D</p>
<p>Another independent benchmark: <a href="http://myblog.rsynnott.com/2008/09/google-chrome-browser-mini-review.html">Google Chrome browser mini-review, benchmark</a> (still fast).</p>
<p>Something more scientific-looking here: <a href="http://www.asifanyonecares.com/2008/09/google-chrome-benchmarks.html">Google Chrome Benchmarks</a> (still rocks).</p>
<p>Chip has a <a href="http://www.geeksaresexy.net/2008/09/02/google-chrome-beta-released-for-windows/">nice review</a> and uses Mozilla&#8217;s own benchmark (still flies):</p>
<p><a href="http://www.geeksaresexy.net/2008/09/02/google-chrome-beta-released-for-windows/"><img class="alignnone" src="http://www.geeksaresexy.net/wp-content/uploads/2008/09/graph.gif" alt="" width="520" height="372" /></a></p>
<p>Alex pointed out that Celtic Kane has an <a href="http://celtickane.com/webdesign/jsspeedarchive.php">interesting benchmark</a> that deserves a good look. It shows very different results.</p>
<p>(Sorry, but <a href="http://images.google.com/images?q=fat+lady+singing">Opera</a> is not my style&#8230;)</p>
<p>Also John Resig did a great job on <a href="http://ejohn.org/blog/javascript-performance-rundown/">several benchmarks</a> across several browsers:</p>
<p><a href="http://ejohn.org/blog/javascript-performance-rundown/"><img class="alignnone" src="http://ejohn.org/files/js-dromaeo.png" alt="" width="614" height="461" /></a></p>
<p>Brendan Eich <a href="http://weblogs.mozillazine.org/roadmap/archives/2008/09/tracemonkey_update.html">speaks for</a> the TraceMonkey team with some in-depth analysis.</p>
<p>Matt Hackett also <a href="http://scriptnode.com/article/google-chrome-benchmarks/">published</a> a benchmark.</p>
<p>Faster JavaScript and faster browser engines mean richer browser applications without plugins like Flash and Silverlight.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/159/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/159/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=159&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/02/chrome-is-fast-javascript-benchmark/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/09/jsbench.png" medium="image" />

		<media:content url="http://www.geeksaresexy.net/wp-content/uploads/2008/09/graph.gif" medium="image" />

		<media:content url="http://ejohn.org/files/js-dromaeo.png" medium="image" />
	</item>
		<item>
		<title>Google Chrome is Out</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-is-out/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-is-out/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 19:54:19 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=154</guid>
		<description><![CDATA[Google just released Chrome, its own Web browser. It can be downloaded at http://www.google.com/chrome After it downloads, it offers to import your settings from Firefox. When it opens, it tells you that it has a single edit box where you can search and navigate. The first impression delivers on the promise. It is sleek! Localization [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=154&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Google <a href="http://googleblog.blogspot.com/2008/09/google-chrome-now-live.html">just released</a> Chrome, its own Web browser. It can be downloaded at <a href="http://www.google.com/chrome">http://www.google.com/chrome</a></p>
<p>After it downloads, it offers to import your settings from Firefox. When it opens, it tells you that it has a single edit box where you can search and navigate.</p>
<p>The first impression delivers on the promise. It is sleek!</p>
<p><strong>Localization</strong></p>
<p>If your primary language is not English you&#8217;ll probably see Chrome localized in your language. In fact, there is a single executable and you can choose the language in the options!</p>
<p><strong>Search</strong></p>
<p>I just typed some search terms on the text box. The search results where shown immediately. I can press ENTER to open. Great!</p>
<p><a href="http://fernandoacorreia.files.wordpress.com/2008/09/chrome1.png"><img class="alignnone size-full wp-image-155" src="http://fernandoacorreia.files.wordpress.com/2008/09/chrome1.png" alt="" width="686" height="193" /></a></p>
<p><strong>Tabs</strong></p>
<p>Next I tried opening and closing some tabs. The animation is very fast and smooth.</p>
<p><strong>Ajax</strong></p>
<p>Google Reader, Gmail and Google Maps seem to work really well in Chrome. Certainly we didn&#8217;t expect anything less. I&#8217;m not sure if I see the Javascript speed improvements already. Maybe when the browser does <strong>not </strong>freeze the way Firefox sometimes does.</p>
<p><em>Edit:</em> See the <a href="http://fernandoacorreia.wordpress.com/2008/09/02/chrome-is-fast-javascript-benchmark/">benchmark</a>.</p>
<p><strong>Flash</strong></p>
<p>Flash works well. I tried a casual game and my <a href="http://fernando-correia.appspot.com/client/FlexClient.html">sample Flex application</a>.</p>
<p><strong>Download</strong></p>
<p>I liked the download interface better than Firefox&#8217;s. The download is shown in the tab footer and you click on it when it&#8217;s done. Simple and effective.</p>
<p><strong>New tab</strong></p>
<p>After having navigated for a while, I opened a new tab. Now it shows the sites I visited most. And it opened really fast, just as promised. Google doesn&#8217;t want you to default to an empty page.</p>
<p><strong>History</strong></p>
<p><em>[Edit]</em> Being able to search <em>inside</em> the pages in your history is certainly a killer feature. Many times we remember a few words about a page we read before, and we want to find it fast. Google delivers on search, again.</p>
<p><strong>Conclusion</strong></p>
<p>My first impression was good. I will certainly use Chrome a little more. Of course, a great strength of Firefox is its many excellent plugins. I don&#8217;t thing I&#8217;m willing to leave some of them behind. On the other hand, I believe plugin authors will be interested in Chrome soon.</p>
<p><em>[Edit]</em> For a better review than mine see <a href="http://www.inquisitr.com/2819/google-chrome-should-you-convert/">Google Chrome: Should You Convert?</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/154/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/154/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=154&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://fernandoacorreia.files.wordpress.com/2008/09/chrome1.png" medium="image" />
	</item>
		<item>
		<title>Google Chrome Wallpaper</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-wallpaper/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-wallpaper/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 15:57:55 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=152</guid>
		<description><![CDATA[Want a nice wallpaper of Google Chrome? Just click on the picture below and when it opens in full resolution, use your browser to save it as a wallpaper. Make it centered and use a white background. Presto. Source: This is a logo that qualifies for fair use. Found in Wikipedia. Edit: For something more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=152&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Want a nice wallpaper of Google Chrome?</p>
<p>Just click on the picture below and when it opens in full resolution, use your browser to save it as a wallpaper.</p>
<p>Make it centered and use a white background. Presto.</p>
<p><a href="http://kara.allthingsd.com/files/2008/09/chrome21.jpg"><img class="alignnone" src="http://kara.allthingsd.com/files/2008/09/chrome21.jpg" alt="" width="283" height="325" /></a></p>
<p><em>Source: This is a logo that qualifies for fair use. Found in <a href="http://en.wikipedia.org/wiki/Image:Google_Chrome_Logo.jpg">Wikipedia</a>.</em></p>
<p><em>Edit:</em> For something more elaborate go to <a href="http://www.chromewallpaper.com/">Google Chrome Wallpapers</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/152/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/152/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=152&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-wallpaper/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://kara.allthingsd.com/files/2008/09/chrome21.jpg" medium="image" />
	</item>
		<item>
		<title>Google Chrome Screenshots</title>
		<link>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-screenshots/</link>
		<comments>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-screenshots/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 15:37:43 +0000</pubDate>
		<dc:creator>Fernando Correia</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://fernandoacorreia.wordpress.com/?p=148</guid>
		<description><![CDATA[Tom Spring wrote an article in PC World about the upcoming Google Chrome browser. He displays and comments on 9 screenshots. Since you can&#8217;t touch it right now, at least you can see it:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=148&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tom Spring wrote <a href="http://blogs.pcworld.com/staffblog/archives/007645.html"><strong>an article</strong></a> in PC World about the upcoming Google Chrome browser.</p>
<p>He displays and comments on 9 screenshots. Since you can&#8217;t touch it right now, at least you can see it:</p>
<p><a href="http://blogs.pcworld.com/staffblog/archives/chrome_screen_01.png"><img class="alignnone" src="http://blogs.pcworld.com/staffblog/archives/chrome_screen_01.png" alt="" width="450" height="380" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fernandoacorreia.wordpress.com/148/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fernandoacorreia.wordpress.com/148/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fernandoacorreia.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fernandoacorreia.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fernandoacorreia.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fernandoacorreia.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fernandoacorreia.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fernandoacorreia.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fernandoacorreia.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fernandoacorreia.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fernandoacorreia.wordpress.com&amp;blog=4230505&amp;post=148&amp;subd=fernandoacorreia&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fernandoacorreia.wordpress.com/2008/09/02/google-chrome-screenshots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1ab5a45161c183997bce5249d3c46473?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fernandoacorreia</media:title>
		</media:content>

		<media:content url="http://blogs.pcworld.com/staffblog/archives/chrome_screen_01.png" medium="image" />
	</item>
	</channel>
</rss>
