Posts Tagged ‘share’

Science Fiction: Text-to-Movie

Thursday, October 15th, 2009

It’s a really strange feeling, what you read in sci-fi stories coming true. First they made it possible to generate believable images purely out of bits and pixels. And now you can create a complete animation just with a movie script.

I have stumbled upon STATE via sjjh today. Check out the demo.

I wonder what will be possible next? Hopefully not immortality. There are too many cool things to discover before.

Bookmark and Share

Piracy Tax

Tuesday, September 15th, 2009

There is a discussion going on about founding The Pirate Party in TürkiyeTurkish. Serdar Kuzuloğlu recently said what if there was a tax on sharing?Turkish. The idea is basically you pay a fixed amount of tax for the content you share, regardless of the amount or if you share at all.

This might sound nice at first. If you are pirating music, movies or whatever, and feel guilty, this way you can say I'm paying my tax, therefore my conscience is clear. Pirating is suddenly legit, content is finally free as in free speech. Moreover there is a good sum of money in the Piracy Tax pool now. Yay! We saved the music industry (or content producers in general)! No, you didn’t. You just eased your conscience.

Let’s get real. Suppose you passed the bill of Piracy Tax at the parliament and a good number of people are paying this tax. That’s just one part of the equation. How will this money be distributed? What will determine the relative share between artists? Do we need distributors anymore? Do we even need producers anymore? And most importantly when you cap the total amount of earnings, will this have any negative effects on creativity? And finally which problem exactly is this Piracy Tax solving?

In the comments of Serdar Kuzuloğlu’s post, several people stated that it should be trivial to gather reliable statistics on downloads. This is not true at all. Even if there was a single distributor (I hope we agree this is undesirable) there will be statistical errors. No system is 100% reliable. But HTTP, i.e. web sites are especially not suitable for transactional operations. Aside from this fact, there will likely be a dozen of services. Are you just planning on adding the figures to calculate the final share? How about the differences in these services’ reach? Don’t you think simply adding the figures makes the system easy to game?

Something everybody seems to forget is there will be always piracy a.k.a P2P1. It would take you to the wrong conclusion to assume everybody is the same. Not everybody is using Windows, not everybody has Flash, there are even people who doesn’t have a graphical browser. Do you even know what a text browser is?2 It is not wise to ignore these people because they are the minority. These people are Internet residents, like it or not you are just tourists. They have practically invented the Internet. So please don’t make the mistake of ignoring the possible effects of technologies like tor and the culture of FLOSS.

In any case, statistical errors are unavoidable. I would suggest 3% is an acceptable error margin. Then what happens to the independent artist or the small production company that should have 0.25% and ends up having 0.025% share? Is this fair now? The pirate tax pool would likely benefit the big players and crush the independents. Big players have already been employing portfolio management strategies, independents just can’t do that. It is naive to think Piracy Tax could sweep so called low-quality productions away and elevate finer artists. It will be exactly the opposite.

Virtue consists, not in abstaining from vice, but in not desiring it. (George Bernard Shaw)

Piracy Tax will severe the already severed bonds between the artists (the producers of art) and us (the consumers) even more. When we buy a DVD or CD it is not just bread on the tables. It is also sending the message “I like what you do. Here, I even choose to give my hard earned money willingly to support your art”. Emphasis on willingly and supporting art. It’s not a passive action like listening to the radio. You (consumer) take a conscious step. Your contributions are small materially, but it should mean something to the artist even at the individual level. We need art. It is not just listening to music or whatever. But we need art to compete in the neverending race of civilization. No art, no culture. No culture, no civilization. Lack of civilization is inevitable slavery. So, we need to learn to support our artists willingly and directly. Piracy Tax is an obstacle for this social goal.

What about opting-out? If I opted out will I still be able to use legal download services? If I am not allowed to opt out but I continue pirating3 your download statistics will be further skewed. If this is being done to free the content then why do we have to give up our freedom4. If this is being done to increase the profits of content industry… Well, then it makes sense.

If the free market is a bad idea, why don’t we shift the whole economy to a controlled market? With pirate tax in effect, content industry’s income is not only centralized but falls under government control. The government controls the art. I don’t like that idea. Art should be free. In short I don’t think Piracy Tax is the way to go.

What Is My Proposal Then?

I have been thinking hard about Pirate Party and the problem of piracy. The question is not what should we do about piracy? Unless you want to treat the symptoms. The question is how will content industry adapt to the information age? We adapted to information age quite well, didn’t we? Why can’t they do the same? I don’t want to believe they are so stupid that they don’t really know how. As far as I can understand they don’t want to change. Because change has a price. And they don’t want to pay. They want us to pay the price for them stagnating like that. Let’s stop beating around the bush and see it as it is.

Smart artists are already making the move. They let you download their movies and songs for free, and find other channels of monetization. Lots of concerts for example. Not necessarily huge stadium concerts. If you take all those middlemen out of the equation you don’t have to be all that popular. All in all, it is much better than continuously whine about piracy.

My proposal is not to engage ourselves with Piracy Tax5. There has to be a better solution. At least a solution that doesn’t necessarily make big players more powerful than they are. Let’s support far-sighted artists who take the steps to adapt new conditions for now. And continue to discuss alternatives.


1: I know piracy doesn’t equal to P2P. It is possible to share content legally via P2P networks. Also P2P is not the only channel you can distribute pirate content. I just think they are interchangeable in the context of this post.

2: It does matter. Let’s not go to the extreme. It would be a waste of time and energy for me to even subscribe to a web based service. Torrents are much easier and flexible for me. And I have a graphical browser with Flash capability.

3: See 2 above.

4: Money can buy freedom, any objections?

5: I would like to remind those who would suggest Piracy Tax as a temporary solution; laws might end up being in effect for too long.

Bookmark and Share

django-renderformplain

Sunday, July 26th, 2009

django-renderformplain is a Django app that allows you to render forms in plain text. I have found myself implementing quite a bit of styling into my forms and thought why do it once more when I want to render just the data. Renderformplain works both with bound forms (renders bound data) and unbound forms (renders initial data). The project is new, so there is no release yet1. But I’d like you to try it out and tell me what you think about it. And maybe find a few bugs.

An Example

After you copy renderformplain folder somewhere within your PYTHONPATH, add "renderformplain" to your INSTALLED_APPS setting to be able to run the example.

Let’s say you have a model File:

   1 class File(models.Model):
   2     name = models.CharField(max_length=100)
   3     path = models.CharField(max_length=250)
   4     size = models.IntegerField()
   5     last_modified = models.DateTimeField(default=datetime.datetime.now)
   6     created = models.DateTimeField(default=datetime.datetime.now)
   7     permissions = models.IntegerField()

And a form FileForm:

   1 class FileForm(forms.ModelForm):
   2     class Meta:
   3         model = File

Now assume you are using django.contrib.formtools.preview.FormPreview to review entered data before saving. In your formtools/preview.html template, instead of rendering the form as an HTML form, you can render it in plain text like this:

{% load renderformplain_tags %}

{% plainform form as plain_form %}

<h1>Preview your submission</h1>
{{ plain_form.as_table }}

<form action="" method="post">
  {{ form.as_hidden }}
  <input type="hidden" name="{{ stage_field }}" value="2" />
  <input type="hidden" name="{{ hash_field }}" value="{{ hash_value }}" />
  <p><input type="submit" value="Submit" /></p>
</form>

This will render the plain_form just like a normal form, except all fields will be replaced with read-only plain text.

Anyway. Try renderformplain and tell me what you think.


1: I will tag releases. Check out the repository for tags.

Bookmark and Share

Psychic IRC Support In 10 Easy Steps

Wednesday, June 24th, 2009

This list is somewhat specific to Django and #django channel on freenode.net.

Psychic support is what people are looking for when they expect others to just know their development environment and their code. If one doesn’t supply enough information on the problem, no matter how good a hacker the person on the other end of the conversation, it becomes a silly guessing game. So the following list is actually about avoiding psychic support and similar situations.

What Not To Ask

  • Don’t ask to ask! Just ask your question. Don’t ever say “I have a question about X, can anybody help me?“. Even worse is “Hello! Is anyone there?“.
  • Don’t ask for competency. It’s unkind to try testing people whether they are worthy of your question or not. This’ll only decrease your chances to get an answer.
  • Don’t ask what’s already documented. This is the most frequent and the most disturbing problem in IRC support channels. Django is exceptionally well documented. Nobody wants to parrot docs just because you’re too lazy to read them.

Psychic Support? You’ll Have To Wait… Long.

  • Ideally you should supply related code with your question. But it’s understandable for beginners to not know what to paste. Even so it becomes annoying when the person asking the question has a you-dont-need-to-know-that attitude. If you know so much, why are you asking here?
  • Don’t paste in the channel. It’s unreadable, I can’t copy & paste it for testing and worst of all you’re flooding the channel. If it’s more than 1 (in writing one) line, use a pasting service.
  • When pasting tracebacks always use the plaintext version. Don’t insist it’s plaintext when you have selected it with mouse from an HTML page and copied. Instead use Switch to copy-and-paste view link right next to Traceback header. Django is civilized.

Hit-N-Run

  • This is an unsolved mystery. Enter the chat room, send your question, leave as soon as you see it on screen… If you don’t get an answer immediately, don’t get discouraged. If there’s no activity, your message will be noticed when others check their clients1. If there’s activity and your message gets scrolled, you can repeat your question in reasonable intervals2. If you don’t have time to wait for and work through answers, you should postpone your question. Better not waste somebody else’s time for nothing.
  • IRC support is for practical problems. So if you are asking a question; please be kind enough to try out the proposed solutions and tell us about the results. Asking the same question again and again, even tough somebody has suggested a solution, won’t help you much. Instead try building on the topic, interact with whoever has joined the conversation and give feedback for their answers.

A Winning Effort Begins With Preparation

  • Django runs on Python. Python is a dynamic language. Just fire up the Django shell3 and try out different possibilities. Make this a habit and you’ll see it is much more effective to run a couple of commands than asking someone else to guess their result for you.
  • Again, read the relevant docs before you ask. Don’t expect the title of a documentation page to be your exact question. Just read whatever you can find on subject. If people see that you’ve done your homework they will be willing to give you more attention.
  • Google your question. If your question is generic enough there is probably a blog post about it somewhere. StackOverflow has quite an impressive repertoire of Django related questions as well. In fact I suggest you to use SO for your non-trivial questions.

1: Some of us have work to do you know. ;)

2: Reasonable depends on the number of messages and the number of joins/leaves. In my opinion you should wait 5 minutes at least.

3: Use manage.py shell command to enter the Django shell.

Bookmark and Share

django-formfieldset

Thursday, May 28th, 2009

django-formfieldset is a Django application that allows you define and render your forms with fieldsets. Just like in admin. To enable fieldset rendering you need to add FieldsetMixin as a parent class to your form and define a fieldsets attribute:

from django import forms
from formfieldset.forms import FieldsetMixin


class MyForm(forms.Form, FieldsetMixin):
    # Fields etc...

    fieldsets = ((u'Fieldset Title',
                  {'fields': ('foo', 'bar', 'baz'),
                   'description': u'This is the description for fieldset.'}),
                 (None,
                  {'fields': ('some_field',),
                   'description': u'This fieldset has no title.'}),
                 (u'Fieldset With No Description',
                  {'fields': ('some_other_field',)}))

Then you can render your form with fieldset enabled methods:

<form method="POST" action=""><table>{{ form.as_fieldset_table }}</table></form>

It is far from complete1, but feel free to download and play with it.


1: Not released yet.

Bookmark and Share