<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7392221252828764254</id><updated>2024-11-01T03:33:53.542-07:00</updated><category term="Scribus 1.4"/><category term="django"/><category term="gimp"/><category term="inkscape"/><category term="linux graphics"/><category term="scribus"/><category term="Blender wins award"/><category term="Calligra Suite"/><category term="DjangoCon"/><category term="Document flow"/><category term="GEGL"/><category term="Graphic desin apps for linux"/><category term="Joomla 1.6"/><category term="Koffice 2.3.1 release"/><category term="Koffice fork"/><category term="LibreOffice"/><category term="Skencil gtk port"/><category term="Sketch"/><category term="acentos linux dtp"/><category term="babl"/><category term="blender"/><category term="contributors"/><category term="dtp"/><category term="dynamic web pages"/><category term="free software vs. proprietary software"/><category term="gimp 2.8 release"/><category term="gimp roadmap"/><category term="gnofract4d"/><category term="gtk 3 pygtk"/><category term="hexeditor"/><category term="krita"/><category term="libre graphics meeting"/><category term="open source"/><category term="overview"/><category term="python"/><category term="security"/><category term="textures"/><category term="wep"/><title type='text'>graphics@linux</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-732494593271150022</id><published>2011-12-11T14:26:00.001-08:00</published><updated>2011-12-11T14:40:52.839-08:00</updated><title type='text'>Hichart</title><content type='html'>The other day I had to make a web app for a shopping window contest. Of course I used django and within a couple of days I had everything up and running. In earlier editions I had to rely on Joomla for technical reasons. There is nothing wrong with Joomla but it is just not the right thing for this task. I also wanted to plot the votes on a chart in realtime and stumbled upon &quot;chartit&quot;. Maybe I was just to stupid to get it to work, I played around with it but then I decided to let it be and use the &lt;a href=&quot;http://www.highcharts.com/&quot;&gt;hichart&lt;/a&gt; javascript library. The main reason I didn&#39;t insist using chartit was an encoding error. Unfortunately, in python you sometimes find that english native speakers develop useful modules or libraries just to find out that they only work with ascii. In the case of chartit I was surprised because by digging around I found an article of the author where he warmly recommends to always use unicode instead of string objects. Anyway, I also think that it is not that difficult to use chartit with django, IMHO there isn&#39;t really a need of a django app. Right now I am thinking of making a walkthrough tutorial about how to use hichart as soon as I have got some time.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/732494593271150022/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/732494593271150022' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/732494593271150022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/732494593271150022'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/12/hichart.html' title='Hichart'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-3099619978102002322</id><published>2011-12-02T22:26:00.001-08:00</published><updated>2012-01-08T12:39:32.933-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><title type='text'>Creating a Calendar App with Django</title><content type='html'>&lt;p&gt;
I am supposed to maintain the webserver of a town hall somewhere in Spain and right now I am planning to port part of it to Django. This has to be done quickly, so this is just the right project to check if django&#39;s slogan &quot;for perfectionists with deadlines&quot; can keep promises.
&lt;/p&gt;
&lt;p&gt;
Yes, I said &quot;I am supposed to&quot; because the whole system I have to work with makes a lot of trouble to the point that it has become impossible to do anything useful on the site. It is mainly a proxy error that appears every twenty minutes and makes the webserver unreachable for five minutes.&lt;br /&gt;
Anything that is not the webserver (proxy, firewalls, etc.) is (or better said should be) maintained by the sys admin. Unfortunately, anything more complicated than plugging cables into a computer or changing toner cartridges is far beyond the scope of her capacity.&lt;br /&gt;
Luckily my &quot;contact person&quot; at the town hall is into IT technology and is aware of the problem, so we decided to start hosting the web externally. On the one hand it&#39;s a pitty, becaus having the server in-house offers some very nifty possibilities to integrate web services into the workflow. However, this requires a competent IT department which simply does not exist in our place. But workflow integration is one of the reasons to switch the event calendar to django.
&lt;/p&gt;
&lt;p&gt;
Until now, we have used the gcalendar plugin with a public google calender to publish events, unfortunately a couple of days ago it stopped working as well and I didn&#39;t manage to put it again into orbit. I found quite a few posts from people that experienced the same problem. This forces me to start working on a new solution right now. So, lets get into gears.
&lt;/p&gt;
&lt;p&gt;
&lt;h2&gt;The Design&lt;/h2&gt;
&lt;/p&gt;
&lt;p&gt;
The first part is quite simple, we need a data model with the following parts:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
date: date&lt;br /&gt;
starts: time&lt;br /&gt;
ends: time, optional&lt;br /&gt;
venue: foreign key =&amp;gt; table with venues&lt;br /&gt;
category: foreign key =&amp;gt; table with categories&lt;br /&gt;
title: varchar(50)&lt;br /&gt;
description: text&lt;br /&gt;
price:varchar(50)&lt;br /&gt;
Picture: image&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
So far, so good, this is the information that gets published. The model, until now is pretty self explaining. The reason for the price to be varchar instead of decimal is simple: quite often pricing depends on conditions, or needs some extra information, so it is easier and more flexible to keep it as a varchar.
&lt;/p&gt;
&lt;p&gt;
For some events you may also need an end date. However these are things like exhibitions, tournaments, courses, etc. and there should be a different dat model, because they have quite a different data structure. We will come to that later.
&lt;/p&gt;
&lt;p&gt;
Maintenance of the data will be done by various people so we also need some fields for meta data:
&lt;/p&gt;
&lt;p&gt;
user =&amp;gt; reference to the user model&lt;br /&gt;
creation date: timestamp&lt;br /&gt;
modification date: timestamp
&lt;/p&gt;
&lt;p&gt;
The whole creation process of a month&#39;s event calender is a workflow that until now is structured rather informally. So we need at least one field that shows the status of the entry:
&lt;/p&gt;
&lt;p&gt;
status: &quot;in progress&quot;, &quot;for approval&quot;, &quot;approved&quot;, &quot;published&quot;
&lt;/p&gt;
&lt;p&gt;
Especially the last two status have important implications. Once an event is approved, it cannot be changed unnoticed. Any change reverses the status to &quot;for approval&quot;. Once the event is published, it cannot be changed in any way without explit intervention of the person in charge of approving.
&lt;/p&gt;
&lt;h2&gt;The model implementation&lt;/h2&gt;
&lt;p&gt;
So, let&#39;s start with implementation, but before, a word of warning to those not familiar with python and django: Python is not php and django is not a cms. In my opinion, django and thus python is the most efficient way to build complex dynamic web sites and web apps. However, you need to have some understanding of how it works and you need a good service provider like &lt;a href=&quot;http://www.webfaction.com/&quot; target=&quot;blank&quot;&gt;webfaction&lt;/a&gt;. The following is _not_ a &lt;a href=&quot;https://docs.djangoproject.com/en/dev/intro/tutorial01/&quot; target=&quot;_blank&quot;&gt;walkthrough tutorial&lt;/a&gt; but rather a proof of concept and a source of inspiration/information for those who want to know more about django.
&lt;/p&gt;
&lt;p&gt;
We suppose that we have already created a project, now we need to create an application that contains all the requiered functionality including models, views, templates, forms and the url dispatcher.
&lt;/p&gt;
&lt;p&gt;
In the project folder we invoke &lt;br /&gt;
&lt;b&gt;./manage.py startapp events&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
This creates the necessary empty files we still have to fill with our code. Next, we have to register the newly created app with the project by adding the line &#39;ayto.events&#39; to &lt;b&gt;INSTALLED_APPS&lt;/b&gt;, where &quot;ayto&quot; is the name of the project and events the name of our newly created app. Now we can start working on our model. We open the generated file models.py and start with the following import statements:
&lt;pre class=&quot;brush: python&quot;&gt;
# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
#The following module contains some custom model Fields, The names are self explaining
#You will find similar code or snippets on the Internet. Use Google or replace these
#fields in the model by standard fields.
from ayto.CustomFields import ResizedImageField, ResizedImageFieldFile, MarkdownTextField
&lt;/pre&gt;
I import the User model because we are going to define References to users to keep track of who has done what on the data. From a module called CustomFields I import some custom tailored field types. After that I define some functions to handle naming of image uploads.

&lt;pre class=&quot;brush: python&quot;&gt;
#The following stuff is to manage naming policy of image uploads
def rand_key(size):
    &quot;&quot;&quot;returns a random string that can be used to create random filename. 
    Size is the length of the string&quot;&quot;&quot;
    return &quot;&quot;.join([random.choice(string.letters + string.digits)
                          for i in range(size)])

def upload_to(prefix, instance, filename):
    file_root, file_ext = os.path.splitext(filename.lower())
    file_root = file_root.replace(&quot; &quot;,&quot;_&quot;)
    file_root = file_root.replace(&quot;-&quot;,&quot;_&quot;)
    return &quot;%s/%s_%s%s&quot; % (prefix, file_root, rand_key(8), file_ext)

def upload_to_venue(instance, filename):
    return upload_to(&quot;venue&quot;, instance, filename)
    
def upload_to_category(instance, filename):
    return upload_to(&quot;category&quot;, instance, filename)

def upload_to_event(instance, filename):
    return upload_to(&quot;event&quot;, instance, filename)
&lt;/pre&gt;

What follows now is the straight forward definition of the data models. They are self explaining.
&lt;pre class=&quot;brush: python&quot;&gt;
#Models go here
class Venue(models.Model):
    &quot;&quot;&quot;Describes the venues, Opening hours, location, etc.&quot;&quot;&quot;
    name = models.CharField(u&quot;Nombre&quot;, max_length=50)
    opening_hours = models.TextField(u&quot;Horarios&quot;)
    address  = models.TextField(u&quot;Dirección&quot;)
    description  = MarkdownTextField(u&quot;Descripción&quot;)
    #we resize uploaded pics th 185px, because the will used as thumb on the web.
    picture = ResizedImageField(upload_to = upload_to_venue, 
                                max_width=185, max_height=185)

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(User)

    class Meta:
        verbose_name = u&quot;Lugar&quot;
        verbose_name_plural = u&quot;Lugares&quot;
        ordering = [&#39;name&#39;]
    
    def __unicode__(self):
        return self.name

class Category(models.Model):
    &quot;&quot;&quot;Different types of events like cinema, cinema for kids, theatre, etc.
    picture is an image that can be used for an event if there is no image
    for the event itself&quot;&quot;&quot;
    name = models.CharField(u&quot;Nombre&quot;, max_length=50)
    picture = ResizedImageField(upload_to = upload_to_category, 
                                max_width=185, max_height=185, blank=True, null=True)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(User)
    
    class Meta:
        verbose_name = u&quot;Categoría&quot;
        verbose_name_plural = u&quot;Categorías&quot;
        ordering = [&#39;name&#39;]
    
    def __unicode__(self):
        return self.name
   
class Event(models.Model):
    &quot;&quot;&quot;Any event that does&#39;nt span over various days.
    comments is used for internal comments that are not meant for publication&quot;&quot;&quot;
    title = models.CharField(u&quot;Título&quot;, max_length=50)
    description = MarkdownTextField(u&quot;Descripción&quot;)
    comments = models.TextField(u&quot;Comentarios&quot;)
    date = models.DateField()
    starts = models.TimeField(blank=True, null=True)
    ends = models.TimeField(blank=True, null=True)
    price = models.CharField(default=&quot;Entrada gratuita&quot;, max_length=50)
    venue = models.ForeignKey(Venue)
    category = models.ForeignKey(Category)
    picture = ResizedImageField(upload_to = upload_to_event, 
                                max_width=185, max_height=185, 
                                blank=True, null=True)
    
    status = models.IntegerField()
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(User)
    
    class Meta:
        verbose_name = u&quot;Evento&quot;
        verbose_name_plural = u&quot;Eventos&quot;
        ordering = [&#39;date&#39;,&#39;starts&#39;]
    
    def __unicode__(self):
        return self.title
&lt;/pre&gt;
&lt;p&gt;
Thats it, folks. The models themself take less than 70 lines of code and leaving out all the extra information in the meta classes could be boiled down to even less than 50 lines.  Everything, including comments and doc strings
still fits in a hundred lines of code. All functionality for adding, retrieving, updating, filtering and deleting data are included. And we get Django&#39;s user model with session management for free. Do this with php and go bunkers! (I know, I shouldn&#39;t say that...)
&lt;/p&gt;
&lt;h2&gt;Creating the database&lt;/h2&gt;
&lt;p&gt;
Now we have to create all these tables in our MySQL/PostGres database, but wait, let Django do this for you:&lt;br /&gt;
&lt;b&gt;./manage.py syncdb&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
That&#39;s it. Syncdb will create all the tables that you have defined in your models, taking care of foreign keys, primary keys, indices, etc. They only drawback is that, once the tables are created, you have to do any changes on the models/tables manually.
&lt;/p&gt;
&lt;h2&gt;Accessing data&lt;/h2&gt;
&lt;p&gt;
Python comes with batteries included, so does Django. With some lines of code you get a full fledged CRUD Interface. You just have to create a module admin.py in the app and register your model with the django admin. Here is the code:
&lt;/p&gt;
&lt;pre class=&quot;brush: python&quot;&gt;
from ayto.events.models import Venue, Category, Event
from django.contrib import admin

admin.site.register(Venue)
admin.site.register(Category)
admin.site.register(Event)
&lt;/pre&gt;
&lt;p&gt;
And this is what it looks like:
&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVw8pRgWYIfW6K6EIP07iCV2WrwLhVZhxljSesf6kwF_QAtyIqh0MU1OXI3QEn3wggHhQB9kKW_X7AmWR6Y9b5bUbUzPwr_Tf7SkZ7gGSvIQxmTv888sT3UrQ-Dl9P8PbxA4wbJb0hfa4/s1600/django_admin.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;316&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVw8pRgWYIfW6K6EIP07iCV2WrwLhVZhxljSesf6kwF_QAtyIqh0MU1OXI3QEn3wggHhQB9kKW_X7AmWR6Y9b5bUbUzPwr_Tf7SkZ7gGSvIQxmTv888sT3UrQ-Dl9P8PbxA4wbJb0hfa4/s400/django_admin.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNc3MEkBLxr2Bw9bHhOorirbCreISV6eFoPWP-42zhkP1et20w1NIG2n7963xZzS-vgrC09-EqEYUbxSyvAUY7_KNyl5iBTWZGanauvoAkjvT_6dN5eVPJd70a8Ou7C-RqTeBDqsOOkM/s1600/django_admin_add&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;304&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNc3MEkBLxr2Bw9bHhOorirbCreISV6eFoPWP-42zhkP1et20w1NIG2n7963xZzS-vgrC09-EqEYUbxSyvAUY7_KNyl5iBTWZGanauvoAkjvT_6dN5eVPJd70a8Ou7C-RqTeBDqsOOkM/s400/django_admin_add&quot; /&gt;&lt;/a&gt;&lt;/div&gt;


&lt;p&gt;
Of course, there is still a lot to be done. The admin interface is nice for accessing data and I can now store event information in the database. However it is definitely no enough for a good workflow, so we still have to create forms for people who introduce event data and those who approves data. But before I start with this all the event data I am going to add to the database needs to be shown to the public. Therefore I am going to define the public views, in other words the web page that will present the data to the public.
&lt;/p&gt;
&lt;p&gt;
In Django this is done by a module called &quot;views.py&quot;. This is remarkable because similar systems like Ruby on Rails or Turbogears call this part &quot;controller&quot;. The Django developers say that in one place you define what is shown (views.py) and in the other place (the templates) you define how it is shown, but in the end both are part of the view according to the VMC pattern. Anyway, in views you define functions that handle requests they basically all look more or less like:
&lt;/p&gt;
&lt;pre class=&quot;brush: python&quot;&gt;
def index(request): 
    values = dict()
    events = models.events.objects.all()
    values[&#39;events&#39;] = events
    return render_to_response(&#39;events/index.html&#39;, values)
&lt;/pre&gt;
&lt;p&gt;
The function takes at least a request object as argument. This object contains lots of information you may need for different tasks. Then you get the data from one of the data model and pass it to a dictionary. Finally you load a template, pass the dict to it and return the rendered webpage. That&#39;s it, without a line of SQL, thanks of Django&#39;s ORM. In real life things are a bit more complex, it is up to you to split up complexity into neat little bits of code to keep it clean and tidy. 
&lt;/p&gt;
&lt;p&gt;
OK, that&#39;s it for now folks, I have to keep working on the project. I&#39;ll tell you later how it goes.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/3099619978102002322/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/3099619978102002322' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/3099619978102002322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/3099619978102002322'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/12/creating-calendar-app-with-django.html' title='Creating a Calendar App with Django'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVw8pRgWYIfW6K6EIP07iCV2WrwLhVZhxljSesf6kwF_QAtyIqh0MU1OXI3QEn3wggHhQB9kKW_X7AmWR6Y9b5bUbUzPwr_Tf7SkZ7gGSvIQxmTv888sT3UrQ-Dl9P8PbxA4wbJb0hfa4/s72-c/django_admin.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-2275159971532548366</id><published>2011-11-20T00:22:00.001-08:00</published><updated>2011-11-20T00:31:12.613-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gimp roadmap"/><title type='text'>gimp roadmap</title><content type='html'>About two weeks ago the gimp folks updated their&lt;a href=&quot;http://wiki.gimp.org/index.php/Roadmap&quot; target=&quot;_blank&quot;&gt; roadmap&lt;/a&gt;. The priority right now is to get the single window interface ready and to support layer groups in version 2.8. In fact, those two feature will increase considerably user acceptance outside the Open Source World.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Vrsion 2.10 will be the last one of the 2.X branch and will see incorporation of the code produced during the Google Summer of Code Projects. The port to gtk 3 is going to be the next major step.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/2275159971532548366/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/2275159971532548366' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2275159971532548366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2275159971532548366'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/11/gimp-roadmap.html' title='gimp roadmap'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-8499548721881219920</id><published>2011-11-13T01:36:00.000-08:00</published><updated>2012-01-08T12:41:57.901-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="dynamic web pages"/><title type='text'>Django</title><content type='html'>I&#39;ve been programming in &lt;a href=&quot;http://www.python.org/&quot; target=&quot;_blank&quot;&gt;python&lt;/a&gt; for many years now and I love it. The great thing about python is that you can use it for lots of different purposes: as a desktop calculator, a quick&#39;n dirty script language, as a high level programming language or as a built-in script language for automizing jobs with scribus, inkscape, blender, gimp, etc.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMQh1n7WGlmWHnwrA02e8ZRTnv2064FDpEmg__wI8ksUjh48Muk7nxQ4sdx300_UdHKgzSt9csqx3xKF25k510-un-wPe54vPVzQfBfMV1c1HsFdY4FTxX6WWuTolYgsKNfsYDUMP34_E/s1600/python_console.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMQh1n7WGlmWHnwrA02e8ZRTnv2064FDpEmg__wI8ksUjh48Muk7nxQ4sdx300_UdHKgzSt9csqx3xKF25k510-un-wPe54vPVzQfBfMV1c1HsFdY4FTxX6WWuTolYgsKNfsYDUMP34_E/s320/python_console.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;&lt;i&gt;The python console is useful for debugging and as a desktop calculator&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
No I have come to love &lt;a href=&quot;https://www.djangoproject.com/&quot; target=&quot;_blank&quot;&gt;django&lt;/a&gt; as well. I have made a couple of bigger projects with turbogears and now I am developing &lt;a href=&quot;http://www.ab-nach-spanien.com/&quot; target=&quot;_blank&quot;&gt;my second project&lt;/a&gt; with django. It is a promotional site for active holidays, so I needed to have something way more flexible than an out-of-the-box cms. One of the reasons for picking django was the automatic admin interface. The biggest challenge when you build a highly dynamic content site is the admin interface. It often takes more effort to build the backend than the actual website. With django, you get the admin interface for free.&lt;br /&gt;
&lt;br /&gt;
Django comes with a very powerful but easy-to-use ORM (object relational mapper). With an ORM, every table is represented as a class in which every attribute represents a column and an instance of a class represents a row of data (a dataset). the following represents a snippet representing a table:&lt;br /&gt;
(the indentation is not correct&amp;nbsp; due to some editor issue)&lt;br /&gt;
&lt;pre class=&quot;brush: python&quot;&gt;
class Site(models.Model):
    name = models.CharField(max_length = 50)
    url = models.URLField()
    description_en = models.TextField()
    description_es = models.TextField()
    description_de = models.TextField()
    image = ResizedImageField(upload_to = upload_to_sites, 
                              max_width=185, 
                              max_height=185)

class Meta:
    verbose_name = _(&quot;Site&quot;)
    verbose_name_plural = _(&quot;Sites&quot;)

def __unicode__(self):
    return self.name      

&lt;/pre&gt;
The good thing about this not only that you don&#39;t have to write raw sql any more, thus avoiding trouble and security issues, you also have a clean data model that django uses to dynamically build the admin interface.&lt;br /&gt;
&lt;br /&gt;
The admin site is not just &quot;take it or leave it&quot;. You can tweak lots of things, group fields together and so on, it only take a couple of lines of extra code.&lt;br /&gt;
&lt;br /&gt;
Another nice thing about django is the url dispatcher. It is both simple and powerful. Well, in theory it is simple, it is basically a list of regular expressions the requested url is matched against. If you are familiar with regex, it&#39;s a snap, for mortals it can be frustrating. However, once you got the trick, you will _love_ it, because of its power en flexibility.&lt;br /&gt;
&lt;br /&gt;
One of django&#39;s best known feature is its templating language. Although Jinja2, a very similar but faster templating engine, has drawn away some users, django templating engine is still widely used also outside the django world.&lt;br /&gt;
&lt;br /&gt;
It supports inheritence, so you can make a base template and just override the parts of it in child templates. Use of programming logic within the templates is very limited by design: this forces developers to place code where it belongs - in the controller. That said, django support the vmc paradigm although they have given it a slightly different name I can&#39;t remember right now.&lt;br /&gt;
&lt;br /&gt;
At the beginning the learning curve might be a bit steep, not because of its difficulty but because of the amount of conventions and complexity of the system. But this is not really a problem becaus django is very well documented, after the first tutorial you will grasp the concepts without problems</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/8499548721881219920/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/8499548721881219920' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/8499548721881219920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/8499548721881219920'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/11/django.html' title='Django'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMQh1n7WGlmWHnwrA02e8ZRTnv2064FDpEmg__wI8ksUjh48Muk7nxQ4sdx300_UdHKgzSt9csqx3xKF25k510-un-wPe54vPVzQfBfMV1c1HsFdY4FTxX6WWuTolYgsKNfsYDUMP34_E/s72-c/python_console.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-4002743076330445998</id><published>2011-03-16T09:56:00.000-07:00</published><updated>2011-03-16T09:56:07.618-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="babl"/><category scheme="http://www.blogger.com/atom/ns#" term="GEGL"/><title type='text'>GEGL and babl, a further step towards gimp 2.8</title><content type='html'>After a year of work new versions of GEGL, the new non-destructive image  processing core which will be used in the next generation of the Gimp, and babl, a bitmap format conversion library, are out  with several major changes.&lt;br /&gt;
The new version of GEGL features code created during Google Summer of  Code 2010 by Danny Robson and Michael Muré. Danny Robson created GEGL  operations for loading and saving RGBE images (HDR), merging exposure  brackets into HDR and three tonemapping operations, as well as a matting  operation. You can read more about his project &lt;a href=&quot;http://code.google.com/p/google-summer-of-code-2010-gimp/wiki/HdrMatting&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Michael Muré created a new map-absolute operations that provides pixel  mapping render capability for new Cage transform tool, expected in  upcoming GIMP 2.8.&lt;br /&gt;
&lt;br /&gt;
Another major change is support for pluggable buffers that will  assist transition of GIMP to using GEGL buffers directly, as well as  provide means of using arbitrary buffers (think Google Maps).&lt;br /&gt;
&lt;br /&gt;
JPEG2000 and PPM loaders and savers for GEGL were contributed by  Mukund Sivaraman, and some existing GIMP filters were ported to GEGL  operations by Alexia Death, Barak Itkin and Andy Gill.&lt;br /&gt;
The babl library has less changes, but one of the important ones is support for n-component formats.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/4002743076330445998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/4002743076330445998' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4002743076330445998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4002743076330445998'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/03/gegl-and-babl-further-step-towards-gimp.html' title='GEGL and babl, a further step towards gimp 2.8'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-2319618525884009728</id><published>2011-03-16T09:51:00.000-07:00</published><updated>2011-03-16T09:51:16.085-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scribus 1.4"/><title type='text'>Scribus 1.4 rc2 is out</title><content type='html'>About a week ago the &lt;a href=&quot;http://www.scribus.net/&quot;&gt;Scribus&lt;/a&gt; team published the second release candidate for the 1.4 version. With the appearance of this version, the 1.3.x will soon come to an end.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/2319618525884009728/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/2319618525884009728' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2319618525884009728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2319618525884009728'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/03/scribus-14-rc2-is-out.html' title='Scribus 1.4 rc2 is out'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-4591311204373906481</id><published>2011-02-20T21:23:00.000-08:00</published><updated>2011-02-20T21:42:03.323-08:00</updated><title type='text'>Great Auk</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4OnIpOB2VJabEB_i8tWGV_kZJC5TfZtSn5N4fiT3G3jVMsaxm3t2vzMCIfa9pGup5vsQy16TnYlXbg2XeUrMJGjwXYDllscfYu1k_LqGGIydSsnuMGUmYvSFwz3wy0tCWZcS5deM6KQ/s1600/burra%252C+piragua+019.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4OnIpOB2VJabEB_i8tWGV_kZJC5TfZtSn5N4fiT3G3jVMsaxm3t2vzMCIfa9pGup5vsQy16TnYlXbg2XeUrMJGjwXYDllscfYu1k_LqGGIydSsnuMGUmYvSFwz3wy0tCWZcS5deM6KQ/s320/burra%252C+piragua+019.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I originally put this photograph on the blog by accident. However, I am going to leave it here, in the end it also shows some design (of my new Great Auk) although it is not graphic design. By the way, the plans were lofted with QCad on Linux</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/4591311204373906481/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/4591311204373906481' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4591311204373906481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4591311204373906481'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/una-fotos-mas.html' title='Great Auk'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO4OnIpOB2VJabEB_i8tWGV_kZJC5TfZtSn5N4fiT3G3jVMsaxm3t2vzMCIfa9pGup5vsQy16TnYlXbg2XeUrMJGjwXYDllscfYu1k_LqGGIydSsnuMGUmYvSFwz3wy0tCWZcS5deM6KQ/s72-c/burra%252C+piragua+019.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-3897120921970640658</id><published>2011-02-18T21:35:00.000-08:00</published><updated>2011-02-20T21:38:38.914-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="free software vs. proprietary software"/><title type='text'>Is competing with proprietary software useful?</title><content type='html'>I have left my job at the town hall. Personal reasons, I am not going to get into details. As I don&#39;t want to let people down I have started to show the person around who is going to take over. Funny enough, he got the job through me. He is an excellent designer, but as most of them at least in Spain, he is a photoshopper, an adobist. The workflow in the town hall is built around linux and free software for several reasons, some of which are: no money, no need for software up to the level of adobe cs5, safety (the LAN is completely contaminated with hundreds, if not thousands of trojans and I didn&#39;t want to have problems in my own work flow because of the hopeless incompetence of our network administration) and complience with UE directives.&lt;br /&gt;
&lt;br /&gt;
As I said, Gregorio, the new designer is used to MAC. While I was telling him how I fulfilled different types of work, we couldn&#39;t avoid comparing Adobe Software with what I have been using (gimp, inkscape, scribus, openoffice). After a while I started wondering if it is really useful to compare proprietary software with free software. I came to the conclusion that it depends on what you are after.&lt;br /&gt;
&lt;br /&gt;
The first thing, one needs to bear in mind is the fact that proprietary software needs to offer a lot more than free software for a simple reason: they want to charge you an awful lot of money, so they have to give you some awfully good reasons to spend a small fortune on it. In that sense, Adobe does a better job than a lot of other software companies, they give you added value for money. For a printer, or a company that work in the creative sector, a set of design software is an important part of production and any advantage that software gives you, may translate into faster production output and thus, money. &lt;br /&gt;
&lt;br /&gt;
On the other hand, free software gives you a lot of value as well, but for free. And as long as you don&#39;t need to optimize and speed up to the top in order to survive on a highly competitive market, you will be better off with free software.&lt;br /&gt;
&lt;br /&gt;
First of all you usually have a big, active and helpful user community to give you support. Software companies have seen this advantage and that quality of support is frecuently better than that of a support line, so a lot of them have copied this model. Curious enough, for what I have seen, quality of given solutions usually is still better on mailing lists and forums of free software. It&#39;s the spirit to give something back that drives people to be helpful.&lt;br /&gt;
&lt;br /&gt;
Second you are not stuck with your licensed copy. Say, for example, you are away from your workplace and urgently need to do a job on a computer that hasn&#39;t any of the needed software installed. With proprietary software you are stuck here, with free software you just download, install (all major free software runs on multiple platforms) and start working. If you have &lt;a href=&quot;http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBoQFjAA&amp;amp;url=http%3A%2F%2Fportableapps.com%2F&amp;amp;rct=j&amp;amp;q=portable%20apps&amp;amp;ei=15BfTaGNOM608QOezcRZ&amp;amp;usg=AFQjCNGe6PGbuO5doILWyNsMtO6XJBzDIQ&amp;amp;sig2=MOhieao5d6SfEUtHX7iB4g&amp;amp;cad=rja&quot;&gt;portable versions&lt;/a&gt; of the apps on your pendrive, even better.&lt;br /&gt;
&lt;br /&gt;
Third, proprietary software often comes with features that are helpful and useful on production level, the average Joe will never need, even if Joe does a professional job.&lt;br /&gt;
&lt;br /&gt;
I think, that free software is not lacking features, it&#39;s only that its development is slower. In proprietary software, implementing new features is always needed to make sure you keep your market share and to have marketing arguments for making people buy your software. In free software, a new feature is added only if somebody wants it, somebody implements it and the project leader accepts it, which means, in the same way proprietary software picks up new ideas from free software, open software projects can get inspired by proprietary software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coming back to the initial question, if it makes any sense to compare apps from both worlds: As long as the goal is to pick up new ideas, to get inspired, to learn from the good and the bad ideas, it makes a lot of sense to put free and proprietary software next to each other. However, you will always have to take into account the different development cycles of both worlds.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/3897120921970640658/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/3897120921970640658' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/3897120921970640658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/3897120921970640658'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/is-competing-with-proprietary-software.html' title='Is competing with proprietary software useful?'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-1603445730235245374</id><published>2011-02-17T08:00:00.000-08:00</published><updated>2011-02-17T08:00:37.925-08:00</updated><title type='text'>BlenderNation is looking for authors</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7Y7VjVqVHmdswHg1G3uLBUSqKcKFqfe7PCsOuuNjbL_jtsZSIU0-fuCDXpaa5LtNP-aVFD7oX7v6eY9EOWCiwQVEOMC2q_mnxyCOgnP3t95RLthDJ49E2UbWTc_Rx5i79r_tdglZ7nbA/s1600/Pantallazo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7Y7VjVqVHmdswHg1G3uLBUSqKcKFqfe7PCsOuuNjbL_jtsZSIU0-fuCDXpaa5LtNP-aVFD7oX7v6eY9EOWCiwQVEOMC2q_mnxyCOgnP3t95RLthDJ49E2UbWTc_Rx5i79r_tdglZ7nbA/s320/Pantallazo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;If you are an experienced Blender user, this may be interesting for you:&lt;br /&gt;
BlenderNation is looking for two authors with a good English knowledge, wordpress skills and - of course - good knowledge of what is going on in the Blender Community. for more details, have a look &lt;a href=&quot;http://www.blendernation.com/2011/02/17/blendernation-is-hiring/#utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+Blendernation+%28BlenderNation%29&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/1603445730235245374/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/1603445730235245374' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1603445730235245374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1603445730235245374'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/blendernation-is-looking-for-authors.html' title='BlenderNation is looking for authors'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7Y7VjVqVHmdswHg1G3uLBUSqKcKFqfe7PCsOuuNjbL_jtsZSIU0-fuCDXpaa5LtNP-aVFD7oX7v6eY9EOWCiwQVEOMC2q_mnxyCOgnP3t95RLthDJ49E2UbWTc_Rx5i79r_tdglZ7nbA/s72-c/Pantallazo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-1991211131190825483</id><published>2011-02-13T01:31:00.001-08:00</published><updated>2011-02-13T01:31:35.712-08:00</updated><title type='text'>Cutting edge graphics software meets free culture</title><content type='html'>&lt;h1&gt;&lt;/h1&gt;Developers and users of Free, Libre and Open Source graphics software will meet May 10-13 in Montreal at the sixth annual Libre Graphics Meeting (LGM).</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/1991211131190825483/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/1991211131190825483' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1991211131190825483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1991211131190825483'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/cutting-edge-graphics-software-meets.html' title='Cutting edge graphics software meets free culture'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-5819631533390929189</id><published>2011-02-13T00:25:00.000-08:00</published><updated>2011-02-13T00:25:51.719-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="contributors"/><category scheme="http://www.blogger.com/atom/ns#" term="gimp"/><category scheme="http://www.blogger.com/atom/ns#" term="libre graphics meeting"/><title type='text'>Gimp looking for two contributors</title><content type='html'>Peter Sikking of m+mi works has been a long-time contributor to the Gimpto working on GIMP&#39;s usability. m+mi works is now looking for two interns to work on GIMP&#39;s interaction design for 3-6 months. You will work in Berlin and as contributor to the GIMP project you will travel to Libre Graphics Meeting in May, in Montreal. &lt;a href=&quot;http://www.gimp.org/&quot;&gt;+info&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/5819631533390929189/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/5819631533390929189' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5819631533390929189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5819631533390929189'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/gimp-looking-for-two-contributors.html' title='Gimp looking for two contributors'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-3996216541583020144</id><published>2011-02-12T23:27:00.000-08:00</published><updated>2011-02-12T23:30:45.409-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gtk 3 pygtk"/><title type='text'>Gtk 3.0 released</title><content type='html'>On 10th of february the third generation of the gtk toolkit has seen daylight. The change of the major number indicates a codebreak towards the earlier versions of gtk. However, porting gtk2 based apps shouldn&#39;t be difficult to port to 3.0, because differences are not as big as they were when gtk 1 changed to 2.0. Some of the most important changes are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;All the drawing is done through Cairo now&lt;/li&gt;
&lt;li&gt;Theming is done through stylesheets with css syntax&lt;/li&gt;
&lt;li&gt;More flexible geometry management, which will make frontend design easier&lt;/li&gt;
&lt;li&gt;Easy application support and adding of a GtkApplication class that handles a lot of the platform integration aspects of writing an application&lt;/li&gt;
&lt;/ul&gt;I suppose it will take some time to have python bindings for gtk3 available. &lt;br /&gt;
For more details, have a look at the &lt;a href=&quot;http://www.gtk.org/&quot;&gt;project page&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/3996216541583020144/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/3996216541583020144' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/3996216541583020144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/3996216541583020144'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/gtk-30-released.html' title='Gtk 3.0 released'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-1911083221859221423</id><published>2011-02-04T07:56:00.000-08:00</published><updated>2011-02-04T08:49:34.082-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gnofract4d"/><category scheme="http://www.blogger.com/atom/ns#" term="textures"/><title type='text'>Generating random textures with Gnofract</title><content type='html'>Gnofract is an easy to use fractal generator. The downside is that you have to compile it yourself, but this isn&#39;t difficult. First you get the gzipped tarball from &lt;a href=&quot;http://sourceforge.net/projects/gnofract4d/files/gnofract4d/3.13/gnofract4d-3.13.tar.gz/download&quot;&gt;sourceforge&lt;/a&gt; and unpack it onto&amp;nbsp; your local filesystem. The next step is to make sure you have a compiler installed and that dependencies are fulfilled. To do this you fire up your package manager (Yast or synaptic, depending on your distro) and install the development files for libpng, libjpg and python - these packages usually end on -dev or -devel or something similar. Once you have done this you open up a terminal window, change into the gnofract4d-3.13 directory and run ./setup build. If everything works fine you will then find an executable called gnofract4d. That&#39;s it basically.&lt;br /&gt;
&lt;br /&gt;
When you start gnofract4d you will see a mandelbrot fractal you can select a part of it and zoom into it again and again.&lt;br /&gt;
&lt;br /&gt;
In order to change the fractal you do Tools =&amp;gt; Formula Browser. For our purpose we are going to select the Buffalow.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidLJF6QqRFvmuccHTmssQcJiqEVuVa2s_91hkLlKvd5T8BjsKTh3gOhLue2DZDMwLEz-km_yLLGxcv0HxoboBaKw5FseGIvEdvGkpbCKHP7ukh_3W9OXNqCrxJtsNLuxOU3gfgH3-sY5w/s1600/Pantallazo-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;229&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidLJF6QqRFvmuccHTmssQcJiqEVuVa2s_91hkLlKvd5T8BjsKTh3gOhLue2DZDMwLEz-km_yLLGxcv0HxoboBaKw5FseGIvEdvGkpbCKHP7ukh_3W9OXNqCrxJtsNLuxOU3gfgH3-sY5w/s320/Pantallazo-1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Now you select an area at the bottom right and keep selecting and zooming until you find a pattern that you like. You save that part as png and open it with the Gimp. Now you apply a couple of filters like movement blur - this part is mainly try and error. Here are a couple of examples:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPmI7Qp1Payk0rZ3wdfKxsg4RvlOE0vZOhFr3lLzmEJcDU5JJKvisDgTF7f_-ritZTDLHR8Tlgw3PJqyKjZWeEXDG8idTW_dW_x2Afh6N-hPAMXiSXrUk62N2e1yhh7z9lyq5EPk3hh5o/s1600/texture1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPmI7Qp1Payk0rZ3wdfKxsg4RvlOE0vZOhFr3lLzmEJcDU5JJKvisDgTF7f_-ritZTDLHR8Tlgw3PJqyKjZWeEXDG8idTW_dW_x2Afh6N-hPAMXiSXrUk62N2e1yhh7z9lyq5EPk3hh5o/s320/texture1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;ultrasound&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRQXRT5p-IeyXrDS9kjLVHmXCbvh2MPFYpZm-ocBrtsMWJNQCAnMCVZkCi-_KAT7yhrHD_a0DHNBlSIdcnRyBeX9NGNTnAFlAZvQedhYjWJlksPDgjW1Efg1-x1V-pPzc8kQSNUyaknnU/s1600/texture2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;237&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRQXRT5p-IeyXrDS9kjLVHmXCbvh2MPFYpZm-ocBrtsMWJNQCAnMCVZkCi-_KAT7yhrHD_a0DHNBlSIdcnRyBeX9NGNTnAFlAZvQedhYjWJlksPDgjW1Efg1-x1V-pPzc8kQSNUyaknnU/s320/texture2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;yin - yan&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1rtprCkyjCNQx132LxKkvWukEnYgaqcxPcqTKD-QUdXv2w4K4UaMfiYDErUXTA2vC4TWw1RAMyimi7_m2GZnpg9RUL9uy-Xu8byVEXOSXtl3RiQ27Dk-GEph6cL3l_7TU_Lh8FNifLWg/s1600/texture3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;237&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1rtprCkyjCNQx132LxKkvWukEnYgaqcxPcqTKD-QUdXv2w4K4UaMfiYDErUXTA2vC4TWw1RAMyimi7_m2GZnpg9RUL9uy-Xu8byVEXOSXtl3RiQ27Dk-GEph6cL3l_7TU_Lh8FNifLWg/s320/texture3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;raindrops on glass&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/1911083221859221423/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/1911083221859221423' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1911083221859221423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1911083221859221423'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/generating-random-textures-with.html' title='Generating random textures with Gnofract'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidLJF6QqRFvmuccHTmssQcJiqEVuVa2s_91hkLlKvd5T8BjsKTh3gOhLue2DZDMwLEz-km_yLLGxcv0HxoboBaKw5FseGIvEdvGkpbCKHP7ukh_3W9OXNqCrxJtsNLuxOU3gfgH3-sY5w/s72-c/Pantallazo-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-4127203920545994172</id><published>2011-02-01T05:27:00.000-08:00</published><updated>2011-02-03T10:12:24.569-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Graphic desin apps for linux"/><title type='text'>Resources for graphic designers</title><content type='html'>I have started to collect information about all types of resources for people who deal with graphic design on Linux. It is still a work in progress but is already quite complete. Interested? have a look &lt;a href=&quot;http://linuxgraphics.blogspot.com/p/graphics-apps-that-run-on-linux.html&quot;&gt;here&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/4127203920545994172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/4127203920545994172' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4127203920545994172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4127203920545994172'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/02/resources-for-graphic-designers.html' title='Resources for graphic designers'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-2999088278474210320</id><published>2011-01-29T09:37:00.000-08:00</published><updated>2011-01-29T09:37:15.904-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scribus 1.4"/><title type='text'>Scribus 1.4 scheduled for end of march</title><content type='html'>Good news for those impaciently waiting for the next major release of Scribus: the 1.4 release is scheduled for 31st of march. With two months to go there are 35 issues on the tracker, 16 of which have already been closed. The closing of some of these issues are real milestones, for example the undo/redo of text frames.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/2999088278474210320/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/2999088278474210320' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2999088278474210320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2999088278474210320'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/scribus-14-scheduled-for-end-of-march.html' title='Scribus 1.4 scheduled for end of march'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-1703299371145935424</id><published>2011-01-27T04:01:00.001-08:00</published><updated>2011-01-27T04:04:00.446-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Calligra Suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Koffice fork"/><title type='text'>Calligra Suite</title><content type='html'>More or less by accidents I have stumbled over Calligra Suite, which seems to be a fork or an effort of rebranding of KOffice. The modern and appealing design of the project web shows the will to give the project a good push forward. The idea of rebranding makes a lot of sense because the strength of KOffice is under the hood and use of these technologies are by no means limited to office apps.&lt;br /&gt;
Especially for the graphics sector there are some very interesting possibilities, as you can combine/embed different document types, thus using the best possible app for different tasks.&lt;br /&gt;
Imagine for example a leaflet: The Background could be done with carbon14, Images are Krita flakes and the text and layout work would be done with Kword.&lt;br /&gt;
This sounds really good but it will probably still take quite a long way to get this ready for production. For further details, have a look &lt;a href=&quot;http://www.calligra-suite.org/&quot;&gt;here&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/1703299371145935424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/1703299371145935424' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1703299371145935424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1703299371145935424'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/calligra-suite.html' title='Calligra Suite'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-174646379888404252</id><published>2011-01-26T23:35:00.000-08:00</published><updated>2011-01-26T23:35:39.242-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blender wins award"/><title type='text'>Blender wins PortalPrograma&#39;s Open Source award</title><content type='html'>Portal Programa has recently published the list of their reader&#39;s top app list. On top of the list is the 3d modeler Blender, followed by Firefox. The fact that a graphics app has made it to become the number one beating even the number two of web browsers shows the increasing importance of open source in the graphics world.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/174646379888404252/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/174646379888404252' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/174646379888404252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/174646379888404252'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/blender-wins-portalprogramas-open.html' title='Blender wins PortalPrograma&#39;s Open Source award'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-5177067293917986825</id><published>2011-01-26T04:33:00.003-08:00</published><updated>2011-01-26T23:26:06.832-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Koffice 2.3.1 release"/><title type='text'>Koffice</title><content type='html'>Last week, the KOffice team announced the release of version 2.3.1, the first bugfix release in the 2.3 series. The changes in Krita are the following:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;limit size of custom patterns to fit 1000×1000 — avoid memory problems&lt;/li&gt;
&lt;li&gt;fix error in memory handling. This means really large images are more feasible now&lt;/li&gt;
&lt;li&gt;disable the tile pooler, saving memory for really large images&lt;/li&gt;
&lt;li&gt;fix crash when editing a brightness contrast filter in the action editor&lt;/li&gt;
&lt;li&gt;Do not crash on startup when loading the tutorial if always start with template is checked&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/5177067293917986825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/5177067293917986825' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5177067293917986825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5177067293917986825'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/koffice.html' title='Koffice'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-5876438835271345417</id><published>2011-01-25T03:58:00.000-08:00</published><updated>2011-01-25T03:58:59.123-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LibreOffice"/><title type='text'>LibreOffice 3.3 has just been published</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.libreoffice.org/assets/Shuffler/Screenshot-02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://www.libreoffice.org/assets/Shuffler/Screenshot-02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The announcement of the OpenOffice fork last septembre made it onto the front page of all the specialized press las septembre. Now, &lt;a href=&quot;http://www.libreoffice.org/&quot;&gt;LibreOffice&lt;/a&gt; has just announced its first release: LibreOffice 3.3.&lt;br /&gt;
&lt;br /&gt;
One of the most remarkable difference of LibreOffice with respect to OpenOffice is the fact that community commitments are going to make it to the code with less problems, which means that development may be more dynamic, faster and possibly more innovative. During 2011 LibreOffice will have to show the world that it is able to deliver a consistent and reliable development. I wish them all the best.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/5876438835271345417/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/5876438835271345417' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5876438835271345417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5876438835271345417'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/libreoffice-33-has-just-been-published.html' title='LibreOffice 3.3 has just been published'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-539795453467615411</id><published>2011-01-24T01:56:00.001-08:00</published><updated>2011-01-24T01:56:25.349-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DjangoCon"/><title type='text'>DjangoCon Europe</title><content type='html'>The DjangoCon Europe 2011 organizing committee, chaired by Remco Wendt,  has just announced that DjangoCon Europe 2011 will be held in Amsterdam,  the Netherlands, from June 6-10 2011. The conference itself will take  place on June 6-8, the sprint days will be June 9-10. Though the word  was already put out on twitter, the announcement is now available on the  official site, &lt;a href=&quot;http://www.djangocon.eu/&quot;&gt; http://www.djangocon.eu&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/539795453467615411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/539795453467615411' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/539795453467615411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/539795453467615411'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/djangocon-europe.html' title='DjangoCon Europe'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-2975100640523506410</id><published>2011-01-24T01:21:00.000-08:00</published><updated>2011-01-24T01:57:55.111-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6 is out</title><content type='html'>A couple of weeks ago, the Joomla Community announced the immediate release of the long awaited 1.6 version of Joomla CMS. Some of the drawbacks of Joomla such as limited access control are now history. Here are the most substantial changes:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Finer access controls for viewing and editing content with configurable user groups and viewing levels&lt;/li&gt;
&lt;li&gt;A user-defined category structure, from simple one-level to complex multi-level categories&lt;/li&gt;
&lt;li&gt;Installation improvements allowing for multiple extension installations in one package, updatable with a single click&lt;/li&gt;
&lt;li&gt;Expanded language support for easy production of multi-lingual sites (you needed Joomfish until now)&lt;/li&gt;
&lt;li&gt;Start and end publishing times for modules with more control over where they display,&lt;/li&gt;
&lt;li&gt;Fresh new templates and semantic markup to please the eye as well as the search engines&lt;/li&gt;
&lt;li&gt;More creative control through template styles&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/2975100640523506410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/2975100640523506410' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2975100640523506410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2975100640523506410'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/joomla-16-is-out.html' title='Joomla 1.6 is out'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-4228349965799864125</id><published>2011-01-23T01:27:00.000-08:00</published><updated>2011-01-26T23:25:10.824-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Skencil gtk port"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketch"/><title type='text'>Skencil (the good ol&#39; Sketch) revived</title><content type='html'>Yes, this has been a real big surprise. Bernhard Herzog&#39;s Sketch, that was later renamed to Skencil, was one of the most promising vector drawing apps in the late 90&#39;s / beginning of the new millenium.&lt;br /&gt;
&lt;a href=&quot;http://www.skencil.org/images/tiger.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://www.skencil.org/images/tiger.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
One of the most outstanding facts about it is that it is written in python and can be said to be the first python scriptable vector drawing program. However, with the beginning of the port to gtk, the project died. Fortunately, a new forge appeared some time ago, the sK1 Project. Now it seems, that a new effort is going to be made to take up the old skencil codebase and revive the project. These are really good news. See what&#39;s going to happen in 2011. You will find more detailed information at the &lt;a href=&quot;http://sk1project.org/viewpage.php?page_id=21&quot;&gt;SK1&lt;/a&gt; homepage.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.skencil.org/images/tiger.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;span id=&quot;search&quot; style=&quot;visibility: visible;&quot;&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/4228349965799864125/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/4228349965799864125' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4228349965799864125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/4228349965799864125'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/skencil-good-ol-sketch-revived.html' title='Skencil (the good ol&#39; Sketch) revived'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-1889607802402969084</id><published>2011-01-23T01:06:00.000-08:00</published><updated>2011-01-23T01:11:30.730-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gimp 2.8 release"/><title type='text'>Gimp 2.8 about to come</title><content type='html'>The open source graphics community has been waiting a long time for the 2.8 version of the number one image manipulation app that was scheduled for just after Christmas. However the developer team has just publisched an announcement on the &lt;a href=&quot;http://www.gimp.org/&quot;&gt;official gimp homepage&lt;/a&gt; about the release being postponed. Broken tablet support seems to be one of the show stoppers, the other one seems to be the switch to the completely new user interface.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-qbAJrbo3hQR6mg7XAzu8FQNKGyy5yH4-HBu3Fd7FCsf4EpP2fNttqaloL-jj9pl2DWa359Jcg2kznDK6pAzv7dhrgC3qG68jOjbPldp-hYjsD5vOQhxyXo7k9hA8F2OdyNp4bSrIgMo/s1600/gimp-single-window-mode-in-progress.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-qbAJrbo3hQR6mg7XAzu8FQNKGyy5yH4-HBu3Fd7FCsf4EpP2fNttqaloL-jj9pl2DWa359Jcg2kznDK6pAzv7dhrgC3qG68jOjbPldp-hYjsD5vOQhxyXo7k9hA8F2OdyNp4bSrIgMo/s320/gimp-single-window-mode-in-progress.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;/div&gt;The new user interface is without doubt an important and long awaited step forward. However, the real biggy is going to be the &lt;a href=&quot;http://www.gegl.org/&quot;&gt;GEGL&lt;/a&gt; integration, a graph based image processing     framework that will be used in all GIMP-3.0.&lt;br /&gt;
&lt;br /&gt;
GEGL will enable non destructive editing, i.e. all transformations to a layer/object&amp;nbsp; such as scaling or rotating can be repeated without loss of quality. Until now, if you apply a transformation just to find out you have overdone things or you didn&#39;t hit it on the first try, you had to undo the transformation before giving it another try, otherwise you would risk loss of quality. With GEGL transformations are handled as in vector apps like inkscape. Talking about vector graphics: GEGL will hopefully also enable on-canvas creation of vector shapes, something that photoshop users have been using for a long time.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/1889607802402969084/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/1889607802402969084' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1889607802402969084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/1889607802402969084'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/gimp-28-about-to-come.html' title='Gimp 2.8 about to come'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-qbAJrbo3hQR6mg7XAzu8FQNKGyy5yH4-HBu3Fd7FCsf4EpP2fNttqaloL-jj9pl2DWa359Jcg2kznDK6pAzv7dhrgC3qG68jOjbPldp-hYjsD5vOQhxyXo7k9hA8F2OdyNp4bSrIgMo/s72-c/gimp-single-window-mode-in-progress.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-5327617470547803126</id><published>2011-01-22T10:22:00.000-08:00</published><updated>2011-01-22T10:22:42.171-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="inkscape"/><title type='text'>New web design for Inkscape</title><content type='html'>Inkscape has announced a complete revamp of their webpage. Although the current one is well organized and easy to navigate, a redesign is well appreciated. If you are curious what it&#39;s going to look like, you can see a preview &lt;a href=&quot;http://duckgoesoink.deviantart.com/art/Inkscape-org-redesign-188788814&quot;&gt;here&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/5327617470547803126/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/5327617470547803126' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5327617470547803126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/5327617470547803126'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/new-web-design-for-inkscape.html' title='New web design for Inkscape'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392221252828764254.post-2882235682565006092</id><published>2011-01-22T06:41:00.000-08:00</published><updated>2011-01-22T10:32:09.962-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Document flow"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Poor man&#39;s document flow</title><content type='html'>If you think about document flow in terms of open source, you are most likely thinking of Alfresco. Alfresco is an impressing piece of software but has some severe drawbacks. First of all you have to cope with quite a steep learning curve and second alfresco is anything but lightweight.&lt;br /&gt;
&lt;br /&gt;
There is a bunch of packages that are very well suited to build a python powered full stack document server. But before python comes into gears you have to set up a Linux/Samba/Postgres or Mysql/Apache server.&lt;br /&gt;
&lt;br /&gt;
You will almost certainly want to set up mod_wsgi for the views. Depending on the complexity of your views you can use anything from werkzeug to django.&lt;br /&gt;
&lt;br /&gt;
Another important part is the pyinotify package. It enables you to monitor folders on your linux system and helps you trigger actions as soon as somebody copies/opens/changes a file in the monitored folder(s).&lt;br /&gt;
&lt;br /&gt;
The triggered actions have no limit - python comes with so many batteries included that you can do almost anything - sending the document via mail, load it up to a web server, make a backup or version copy, change read/write access, owner, you name it.&lt;br /&gt;
&lt;br /&gt;
One of the most common and important tasks may be file conversion. Here you can play the same trick as alfresco does - you can run an openoffice / libreoffice instant with the -s option and use it for type conversion even for closed source formats like word.&lt;br /&gt;
&lt;br /&gt;
And of course, you will keep track of the document flow using a SQL database such as PostGres or MySql using one of the excellent objectrelational mappers, starting from the built-in django model, SQLObject (my favourite) or SQLAlchemy.&lt;br /&gt;
&lt;br /&gt;
I don&#39;t know if anybody has already thought of building a full stack document flow system in python, but this would definitely a very useful idea.</content><link rel='replies' type='application/atom+xml' href='http://linuxgraphics.blogspot.com/feeds/2882235682565006092/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7392221252828764254/2882235682565006092' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2882235682565006092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392221252828764254/posts/default/2882235682565006092'/><link rel='alternate' type='text/html' href='http://linuxgraphics.blogspot.com/2011/01/poor-mans-document-flow.html' title='Poor man&#39;s document flow'/><author><name>markus</name><uri>http://www.blogger.com/profile/12279544785503305913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS66KbN_bSnFgWuKjxsQ9GZnISNhSUpgw5QJYYhQSt2muza0cRmMJ1qXKQYjA8nhZriXYrfW23yTz7DyI2YBc8c0lXQkvNeo7436-qZj4jNMFuyHJLOZF34Etag-RH9A/s220/DSC_0305.JPG'/></author><thr:total>0</thr:total></entry></feed>