<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>muhuk.com &#187; media</title>
	<atom:link href="http://www.muhuk.com/tag/media/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.muhuk.com</link>
	<description>know thyself</description>
	<lastBuildDate>Thu, 29 Dec 2011 05:05:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Working with files in Django &#8211; Part 3</title>
		<link>http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=working-with-files-in-django-part-3</link>
		<comments>http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 00:02:14 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=463</guid>
		<description><![CDATA[First part of this article is (http://www.muhuk.com/2011/11/working-with-files-in-django/).

<h2>How to add STATIC files</h2>

You will most likely add <code>STATIC</code> files to your source code repository. As they are likely to be hardcoded in your code and templates it is a good idea to keep those and your <code>STATIC</code> files in sync.

Your <code>STATIC</code> files are collected (found ...]]></description>
			<content:encoded><![CDATA[<p><small>First part of this article is <a href="http://www.muhuk.com/2011/11/working-with-files-in-django/">here</a>.</small></p>

<h2>How to add STATIC files</h2>

<p>You will most likely add <code>STATIC</code> files to your source code repository. As they are likely to be hardcoded in your code and templates it is a good idea to keep those and your <code>STATIC</code> files in sync.</p>

<p>Your <code>STATIC</code> files are collected (found and copied or symlinked) with the help of <a href="https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/#staticfiles-finders">finders</a>. This <em>collection</em> process might be a little confusing for you. Basically you don&#8217;t need to worry about where your files are copied, you just need to maintain the files in the locations I mention below. Collection process consolidates all your <code>STATIC</code> files for you, and it does it automatically.</p>

<p>If you are developing a reusable app place your <code>STATIC</code> files under the <code>static</code> directory. Your app directory should look like this:</p>

<pre><code>$ ls -1
models.py
static/
templates/
views.py
</code></pre>

<p>If you are developing a project absolute filesystem paths listed in your <code>STATICFILES_DIRS</code> setting will be collected:</p>

<pre><code>&gt;&gt;&gt; from django.conf import settings
&gt;&gt;&gt; settings.STATICFILES_DIRS
('/opt/myproject/src/project/static',)
</code></pre>

<p>One important thing to note, as I mentioned in the first part, is to set your <code>STATIC_ROOT</code> outside of your project directory. This is the location where all the <code>STATIC</code> files found will be consolidated. Making this directory independent from your project installation enabled its reuse.</p>

<h2>How to upload MEDIA files</h2>

<p>MEDIA files are typically uploaded by users when the project is online and a reference is stored in a model field. While this is true most of the time, <code>MEDIA</code> files can be generated by code and/or a reference can be provided in some other way that doesn&#8217;t involve models. But these edge cases are out of the scope of this post.</p>

<p>The easiest way to allow users upload their files is to use a <a href="https://docs.djangoproject.com/en/1.3/ref/models/fields/#filefield">FileField</a> or <a href="https://docs.djangoproject.com/en/1.3/ref/models/fields/#imagefield">ImageField</a> on a model and <a href="https://docs.djangoproject.com/en/dev/topics/forms/modelforms/">derive a form</a> from it:</p>

<pre><code>from django.db import models
from django.forms.models import modelform_factory


class MediaModel(models.Model):
    media_file = models.FileField(upload_to='user_media')


MediaForm = modelform_factory(MediaModel)
</code></pre>

<p>You can then use this form to provide upload functionality:</p>

<pre><code>def media_create(request):
    if request.method == "POST":
        form = MediaForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('media-list'))
    else:
        form = MediaForm()
    return render_to_response('usermedia/create/html', {'form': form})
</code></pre>

<p>Of course it is better to use a generic <a href="https://docs.djangoproject.com/en/1.3/ref/class-based-views/#createview">CreateView</a> now we have them with Django 1.3. I wanted to emphasize one point and avoid the complexities of a class based view; you must pass <code>request.FILES</code> to the form&#8217;s constructor. Actually this is a good practice whether or not your form has an file field.</p>

<p>As in the case with <code>STATIC</code> files, <code>MEDIA_ROOT</code> should be in a location seperate from your project files. If you delete your project directory you would also lose <code>MEDIA</code> files otherwise.</p>

<h2>Conclusion</h2>

<p>This concludes <a href="">Working with files in Django</a>. I hope these posts are helpful to you. Once you are comfortable working with files I strongly recommend you to take a look at <a href="http://django_compressor.readthedocs.org/en/latest/index.html">Django Compressor</a></p>

<p><small>If you enjoyed this post please <a href="http://www.muhuk.com/about-you/">tell me a little bit about yourself</a>.</small></p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/' addthis:title='Working with files in Django &#8211; Part 3 '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with files in Django &#8211; Part 2</title>
		<link>http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=working-with-files-in-django-part-2</link>
		<comments>http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 08:31:08 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=461</guid>
		<description><![CDATA[First part of this article is (http://www.muhuk.com/2011/11/working-with-files-in-django/).

<h2>How to setup file serving for development server</h2>

As I mentioned earlier, it is best to serve files on a fast HTTP server. But this setup is overkill for development environments, you can safely let Django handle your files. The snippet below relies on the assumption, behind the ...]]></description>
			<content:encoded><![CDATA[<p><small>First part of this article is <a href="http://www.muhuk.com/2011/11/working-with-files-in-django/">here</a>.</small></p>

<h2>How to setup file serving for development server</h2>

<p>As I mentioned earlier, it is best to serve files on a fast HTTP server. But this setup is overkill for development environments, you can safely let Django handle your files. The snippet below relies on the assumption, behind the scenes, that <code>DEBUG</code> is always <code>True</code> in development environment and it is always <code>False</code> in production environment. It should be fine for the purposes of this post:</p>

<pre><code>from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
</code></pre>

<p>It is quite straightforward. Nothing gets added to <code>urlpatterns</code> unless <code>DEBUG</code> is <code>True</code> <strong>and</strong> prefix (<code>MEDIA_URL</code> and <code>STATIC_URL</code>) is not a fully qualified URL.</p>

<h2>How to reference <code>STATIC</code> files in templates</h2>

<p>There are two ways to reference any file. You can use a file&#8217;s location in your file storage (your filesystem for example) for internal use. Or you can build a URL for the file so that clients can access it. This post will cover the latter, as the former is a simple matter of applying <code>os.path.join()</code> to <code>STATIC_ROOT</code> and the particular file&#8217;s path.</p>

<p>To build a URL in your templates you can simply concetenate <code>STATIC_URL</code> with the file&#8217;s relative location to it:</p>

<pre><code>&lt;img src="{{ STATIC_URL }}myapp/img/logo.png" /&gt;
</code></pre>

<p>However, to have <code>STATIC_URL</code> available within your template context you need to make sure of two things:</p>

<ul>
<li>The template needs to be rendered with a <a href="https://docs.djangoproject.com/en/1.3/ref/templates/api/#django.template.RequestContext">RequestContext</a>.</li>
<li><code>django.core.context_processors.static</code> needs to be included in <code>TEMPLATE_CONTEXT_PROCESSORS</code> setting.</li>
</ul>

<p>I can&#8217;t think of a reason why, but if for some reason you are not using <code>RequestContext</code>, you can provide <code>STATIC_URL</code> using <a href="https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/#the-get-static-prefix-templatetag">get<em>static</em>prefix</a> tag:</p>

<pre><code>{% load static %}
{% get_static_prefix as STATIC_URL %}

&lt;img src="{{ STATIC_URL }}myapp/img/logo.png" /&gt;
</code></pre>

<h2>How to reference MEDIA files in templates</h2>

<p>Dealing with <code>MEDIA</code> files is much simpler. The <code>FieldFile</code> object returned by <code>ImageField</code> and <code>FileField</code> has <code>path</code> and <code>url</code> properties and you don&#8217;t need to do concetenation yourself:</p>

<pre><code>&lt;img src="{{ some_model.some_image_field.url }}" /&gt;
</code></pre>

<p><small><a href="http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/">Next part</a> deals with adding files to your project.</small></p>

<p><small>If you enjoyed this post please <a href="http://www.muhuk.com/about-you/">tell me a little bit about yourself</a>.</small></p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' addthis:title='Working with files in Django &#8211; Part 2 '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/' rel='bookmark' title='Working with files in Django &#8211; Part 3'>Working with files in Django &#8211; Part 3</a></li>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with files in Django &#8211; Part 1</title>
		<link>http://www.muhuk.com/2011/11/working-with-files-in-django/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=working-with-files-in-django</link>
		<comments>http://www.muhuk.com/2011/11/working-with-files-in-django/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 10:47:18 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=453</guid>
		<description><![CDATA[In this post what I mean by <code>file</code> is any content that is not dynamically generated. There are basically two types of files a web application deals with:

<ul>
<li>Files that are hard coded in templates or in code. We will call them <code>STATIC</code> files.</li>
<li>Files that are referenced in the code but only known ...</li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>In this post what I mean by <code>file</code> is any content that is not dynamically generated. There are basically two types of files a web application deals with:</p>

<ul>
<li>Files that are hard coded in templates or in code. We will call them <code>STATIC</code> files.</li>
<li>Files that are referenced in the code but only known in the run time. We will call them <code>MEDIA</code> files.</li>
</ul>

<p>Now of course all these files are static and most of them can be classified as media, but I chose those terms because that more or less how they are referred to in <a href="https://docs.djangoproject.com/en/1.3/">Django documentation</a>.</p>

<p>Since files are stored on disk or some other <a href="https://docs.djangoproject.com/en/1.3/ref/files/storage/">storage backend</a> it is best to <a href="https://docs.djangoproject.com/en/1.3/howto/static-files/#serving-static-files-from-a-dedicated-server">serve them on a fast HTTP server</a> and let Django handle only dynamic content.</p>

<h2>How to configure STATIC/MEDIA related settings</h2>

<p>Let&#8217;s look at some code first and we can comment on it afterwards. I use the following setup in my projects:</p>

<pre><code>import os

_PATH = os.path.abspath(os.path.dirname(__file__))

MEDIA_ROOT = os.path.join(_PATH, 'files', 'media')
MEDIA_URL = '/media/'

STATIC_ROOT = os.path.join(_PATH, 'files', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(_PATH, 'static'),
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

ADMIN_MEDIA_PREFIX = '/static/admin/'
</code></pre>

<p><code>_PATH</code> should be obvious. But the way I use it is a little tricky here. Basically I am using a <code>files</code> directory that contains <code>media</code>, for <code>MEDIA</code> files, and <code>static</code>, for <code>STATIC</code> files, directories. This seperation is essential. You will pull your hair if you don&#8217;t seperate those two from the beginning. This will allow you to reuse them easily if you deploy a new version to a different location.</p>

<p>But why is <code>files</code> under the project directory? Because we need to check-in <code>STATIC</code> files? NO! It is just a convenience for the development environments. I strongly suggest overriding <code>MEDIA_ROOT</code> and <code>STATIC_ROOT</code> in your deployment settings and basically move the <code>files</code> directory outside of the project path. <code>STATIC</code> files that we check-in resides in <code>&lt;_PATH&gt;/static</code>. <a href="https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/"><code>django.contrib.staticfiles</code></a> app collects your <code>STATIC</code> files from your project specific directories and within your apps and copies everything in the right places inside <code>STATIC_ROOT</code>.</p>

<p>To sum up the points above:</p>

<ul>
<li>Check-in <code>STATIC</code> files in a folder within your project directory (see <code>STATICFILES_DIRS</code> &amp; <code>FileSystemFinder</code>). If you are <a href="http://www.muhuk.com/2010/01/developing-reusable-django-apps/">developing an app</a> <code>AppDirectoriesFinder</code> will collect static files within the <code>static</code> directory in your app directory.</li>
<li>Seperate the directories, where your <code>MEDIA</code> files are saved and where your <code>STATIC</code> files are collected (see <code>STATIC_ROOT</code> &amp; <code>MEDIA_ROOT</code>).</li>
<li>Keep your <code>STATIC_ROOT</code> and <code>MEDIA_ROOT</code> outside of your project directory in production environment.</li>
</ul>

<p>One more thing to note is <code>STATIC_URL</code> and <code>MEDIA_URL</code> should both have a trailing slash. This will save you a lot of trouble later.</p>

<p><small><a href="http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/">Next part</a> deals with serving files in development environment and referencing them in code and templates.</small></p>

<p><small>If you enjoyed this post please <a href="http://www.muhuk.com/about-you/">tell me a little bit about yourself</a>.</small></p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2011/11/working-with-files-in-django/' addthis:title='Working with files in Django &#8211; Part 1 '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/' rel='bookmark' title='Working with files in Django &#8211; Part 3'>Working with files in Django &#8211; Part 3</a></li>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2011/11/working-with-files-in-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</title>
		<link>http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pycon-apac-optimizing-media-performance-with-django_compressor</link>
		<comments>http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 09:41:45 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=416</guid>
		<description><![CDATA[I have given a presentation about (http://django_compressor.readthedocs.org/) at (http://apac.pycon.org/). Slides are below for everyone to see:

Optimizing Media Performance with django_compressor   View more presentations from muhuk  ]]></description>
			<content:encoded><![CDATA[<p>I have given a presentation about <a href="http://django_compressor.readthedocs.org/">django_compressor</a> at <a href="http://apac.pycon.org/">PyCon APAC 2011</a>. Slides are below for everyone to see:</p>

<div style="width:425px" id="__ss_8387857"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/muhuk/optimizing-media-performance-with-djangocompressor" title="Optimizing Media Performance with django_compressor">Optimizing Media Performance with django_compressor</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8387857" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/muhuk">muhuk</a> </div> </div>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' addthis:title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-3/' rel='bookmark' title='Working with files in Django &#8211; Part 3'>Working with files in Django &#8211; Part 3</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Piracy Tax</title>
		<link>http://www.muhuk.com/2009/09/piracy-tax/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=piracy-tax</link>
		<comments>http://www.muhuk.com/2009/09/piracy-tax/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 12:26:31 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[morality]]></category>
		<category><![CDATA[piracy]]></category>
		<category><![CDATA[pirate party]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[tax]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=282</guid>
		<description><![CDATA[There is a discussion going on about founding (http://www.piratpartiet.se/international/english) (http://mserdark.com/genel/turkiye-korsan-partisi-kuruluyor)Turkish. Serdar Kuzuloğlu recently said (http://mserdark.com/genel/paylasim-vergisi-olur-mu)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 ...]]></description>
			<content:encoded><![CDATA[<p>There is a discussion going on about founding <a href="http://www.piratpartiet.se/international/english">The Pirate Party</a> <a href="http://mserdark.com/genel/turkiye-korsan-partisi-kuruluyor">in Türkiye</a><sup>Turkish</sup>. Serdar Kuzuloğlu recently said <a href="http://mserdark.com/genel/paylasim-vergisi-olur-mu"><code>what if there was a tax on sharing?</code></a><sup>Turkish</sup>. 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.</p>

<p>This might sound nice at first. If you are pirating music, movies or whatever, and feel guilty, this way you can say <code>I'm paying my tax, therefore my conscience is clear</code>. 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&#8217;t. You just eased your conscience.</p>

<p>Let&#8217;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&#8217;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 <strong>need</strong> producers anymore? And most importantly when you cap the total amount of earnings, will this have any negative effects on <em>creativity</em>? And finally <em>which problem exactly is this Piracy Tax solving?</em></p>

<p>In the comments of Serdar Kuzuloğlu&#8217;s post, several people stated that it should be <em>trivial</em> 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&#8217; reach? Don&#8217;t you think simply adding the figures makes the system easy to game?</p>

<p>Something everybody seems to forget is <strong>there will be always piracy a.k.a P2P</strong><sup>1</sup>. 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&#8217;t have a graphical browser. Do you even know what a text browser is?<sup>2</sup> 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&#8217;t make the mistake of ignoring the possible effects of technologies like <a href="http://www.torproject.org/">tor</a> and the culture of <a href="http://en.wikipedia.org/wiki/FLOSS">FLOSS</a>.</p>

<p>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 <a href="http://en.wikipedia.org/wiki/Portfolio_management">portfolio management</a> strategies, independents just can&#8217;t do that. It is naive to think Piracy Tax could sweep so called <em>low-quality productions</em> away and elevate finer artists. It will be exactly the opposite.</p>

<blockquote>
  <p>Virtue consists, not in abstaining from vice, but in not desiring it. (George Bernard Shaw)</p>
</blockquote>

<p>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 &#8220;I like what you do. Here, I even choose to give my hard earned money willingly to support your art&#8221;. Emphasis on <strong>willingly</strong> and <strong>supporting art</strong>. It&#8217;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 <strong>need art to compete in the neverending race of civilization</strong>. 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.</p>

<p>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 pirating<sup>3</sup> 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 freedom<sup>4</sup>. If this is being done to increase the profits of content industry&#8230; Well, then it makes sense.</p>

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

<h3>What Is My Proposal Then?</h3>

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

<p>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&#8217;t have to be all that popular. All in all, it is much better than continuously whine about piracy.</p>

<p>My proposal is not to engage ourselves with Piracy Tax<sup>5</sup>. There has to be a better solution. At least a solution that doesn&#8217;t necessarily make big players more powerful than they are. Let&#8217;s support far-sighted artists who take the steps to adapt new conditions for now. And continue to discuss alternatives.</p>

<hr />

<p><strong>1</strong>: I know piracy doesn&#8217;t equal to P2P. It is possible to <a href="http://torrentfreak.com/elephants-dream/">share content legally</a> 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.</p>

<p><strong>2</strong>: It does matter. Let&#8217;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.</p>

<p><strong>3</strong>: See <strong>2</strong> above.</p>

<p><strong>4</strong>: Money can buy freedom, any objections?</p>

<p><strong>5</strong>: 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.</p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2009/09/piracy-tax/' addthis:title='Piracy Tax '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2009/09/piracy-tax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serving Static Media In Django Development Server</title>
		<link>http://www.muhuk.com/2009/05/serving-static-media-in-django-development-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=serving-static-media-in-django-development-server</link>
		<comments>http://www.muhuk.com/2009/05/serving-static-media-in-django-development-server/#comments</comments>
		<pubDate>Mon, 25 May 2009 09:30:10 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=225</guid>
		<description><![CDATA[<hr />

There is a (/2011/11/working-with-files-in-django/). Information below is no longer valid!

<hr />

There is a misconception about how static files (a.k.a media files) are handled in Django. Actually it is quite clearly documented (http://docs.djangoproject.com/en/dev/howto/static-files/#module-django.views.static) and (http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#id1). Nevertheless a question about this comes up in the mailing-list or IRC channel frequently:

<blockquote>
  Where do I ...
</blockquote>]]></description>
			<content:encoded><![CDATA[<hr />

<p><b>There is a <a href="http://www.muhuk.com/2011/11/working-with-files-in-django/">newer version of this post</a>. Information below is no longer valid!</b></p>

<hr />

<p>There is a misconception about how static files (a.k.a media files) are handled in Django. Actually it is quite clearly documented <a href="http://docs.djangoproject.com/en/dev/howto/static-files/#module-django.views.static">here</a> and <a href="http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#id1">here</a>. Nevertheless a question about this comes up in the mailing-list or IRC channel frequently:</p>

<blockquote>
  <p>Where do I put my media files?</p>
  
  <p>Django can&#8217;t find my <code>foo.gif</code>!</p>
  
  <p>How can I link my CSS?</p>
</blockquote>

<p>First of all, just to make it clear; <strong>just because a server returns a response body with an internal URL doesn&#8217;t necessarily mean it will be available on that server</strong>. It is one thing that your templates produce the correct URL to a media file and another thing that your server actually serves that resource on that URL. <strong>Django development server doesn&#8217;t automagically serve media files</strong><sup>1</sup>.</p>

<h3>Settings</h3>

<p>There are three settings to get right: <code>MEDIA_ROOT</code>, <code>MEDIA_URL</code> and <code>ADMIN_MEDIA_PREFIX</code>. <code>MEDIA_ROOT</code> is the <em>absolute filesystem path</em> where your media files are. I usually set it like:</p>

<pre><code>MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')
</code></pre>

<p>This will set <code>MEDIA_ROOT</code> to point to the <code>media</code> directory in your project directory<sup>2</sup>. <code>MEDIA_URL</code> and <code>ADMIN_MEDIA_PREFIX</code> are <em>URL&#8217;s</em>:</p>

<pre><code>MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/media/admin/'
</code></pre>

<p>With this setup, to serve admin media in production, all I need to do is to symlink media folder of admin app into my media directory. Of course you can set <code>MEDIA_URL</code> to point to another domain/subdomain. Such as <code>http://media.mydomain.com/</code>. But this way you can&#8217;t serve your media from development server.</p>

<h3>URL Configuration</h3>

<p>Add the following code snipplet at the end of your root <code>urls.py</code>:</p>

<pre><span style="color:#555555">   1 </span><span style="color:#000000; font-weight:bold">if</span> settings<span style="color:#000000">.</span>DEBUG<span style="color:#000000">:</span>
<span style="color:#555555">   2 </span>    <span style="color:#000000; font-weight:bold">from</span> django<span style="color:#000000">.</span>views<span style="color:#000000">.</span>static <span style="color:#000000; font-weight:bold">import</span> serve
<span style="color:#555555">   3 </span>    _media_url <span style="color:#000000">=</span> settings<span style="color:#000000">.</span>MEDIA_URL
<span style="color:#555555">   4 </span>    <span style="color:#000000; font-weight:bold">if</span> _media_url<span style="color:#000000">.</span><span style="color:#010181">startswith</span><span style="color:#000000">(</span><span style="color:#ff0000">'/'</span><span style="color:#000000">):</span>
<span style="color:#555555">   5 </span>        _media_url <span style="color:#000000">=</span> _media_url<span style="color:#000000">[</span><span style="color:#2928ff">1</span><span style="color:#000000">:]</span>
<span style="color:#555555">   6 </span>        urlpatterns <span style="color:#000000">+=</span> <span style="color:#010181">patterns</span><span style="color:#000000">(</span><span style="color:#ff0000">''</span><span style="color:#000000">,</span>
<span style="color:#555555">   7 </span>                                <span style="color:#000000">(</span>r<span style="color:#ff0000">'^%s(?P&lt;path&gt;.*)$'</span> <span style="color:#000000">%</span> _media_url<span style="color:#000000">,</span>
<span style="color:#555555">   8 </span>                                serve<span style="color:#000000">,</span>
<span style="color:#555555">   9 </span>                                <span style="color:#000000">{</span><span style="color:#ff0000">'document_root'</span><span style="color:#000000">:</span> settings<span style="color:#000000">.</span>MEDIA_ROOT<span style="color:#000000">}))</span>
<span style="color:#555555">  10 </span>    <span style="color:#000000; font-weight:bold">del</span><span style="color:#000000">(</span>_media_url<span style="color:#000000">,</span> serve<span style="color:#000000">)</span>
</pre>

<p><code>settings.DEBUG == True</code> doesn&#8217;t necessarily mean development server is running. But it is a good indicator since deploying with development server is not a good idea for many reasons. Notice here we don&#8217;t serve media unless <code>MEDIA_URL</code> is an absolute URL on our server.</p>

<h3>Templates</h3>

<p>Finally we need to specify media URL&#8217;s correctly. To avoid hard-coding media path we will be using <code>{{ MEDIA_URL }}</code> context variable in our templates. To have <code>{{ MEDIA_URL }}</code> included automatically in each template we need to do two things:</p>

<ol>
<li>Make sure you have <code>django.core.context_processors.media</code> in your <code>TEMPLATE_CONTEXT_PROCESSORS</code>.</li>
<li>Make sure each view is using a <a href="http://docs.djangoproject.com/en/dev/ref/templates/api/#id1"><code>RequestContext</code></a>.</li>
</ol>

<p>Afterwards all we need to do is to specify our media URL&#8217;s like this:</p>

<pre><code>&lt;img src="<b>{{ MEDIA_URL }}</b>img/header.jpeg" /&gt;</code></pre>

<p>This will be translated to:</p>

<pre><code>&lt;img src="/media/img/header.jpeg" /&gt;
</code></pre>

<h3>Bonus</h3>

<p>While we are at it, why not serve our <code>500</code> and <code>404</code> pages statically. When <code>DEBUG == True</code>, 500 (server error) and 404 (not found) situations are handled with special debugging views. So there&#8217;s no chance to test your error pages. Add the following code, just like static serving code:</p>

<pre><span style="color:#555555">   1 </span><span style="color:#000000; font-weight:bold">if</span> settings<span style="color:#000000">.</span>DEBUG<span style="color:#000000">:</span>
<span style="color:#555555">   2 </span>    urlpatterns <span style="color:#000000">+=</span> <span style="color:#010181">patterns</span><span style="color:#000000">(</span><span style="color:#ff0000">''</span><span style="color:#000000">,</span>
<span style="color:#555555">   3 </span>                            <span style="color:#000000">(</span>r<span style="color:#ff0000">'^404/'</span><span style="color:#000000">,</span>
<span style="color:#555555">   4 </span>                                <span style="color:#ff0000">'django.views.generic.simple.'</span> \
<span style="color:#555555">   5 </span>                                <span style="color:#ff0000">'direct_to_template'</span><span style="color:#000000">,</span>
<span style="color:#555555">   6 </span>                                <span style="color:#000000">{</span><span style="color:#ff0000">'template'</span><span style="color:#000000">:</span> <span style="color:#ff0000">'404.html'</span><span style="color:#000000">}),</span>
<span style="color:#555555">   7 </span>                            <span style="color:#000000">(</span>r<span style="color:#ff0000">'^500/'</span><span style="color:#000000">,</span>
<span style="color:#555555">   8 </span>                                <span style="color:#ff0000">'django.views.generic.simple.'</span> \
<span style="color:#555555">   9 </span>                                <span style="color:#ff0000">'direct_to_template'</span><span style="color:#000000">,</span>
<span style="color:#555555">  10 </span>                                <span style="color:#000000">{</span><span style="color:#ff0000">'template'</span><span style="color:#000000">:</span> <span style="color:#ff0000">'500.html'</span><span style="color:#000000">}))</span>
</pre>

<p>Now when you visit <code>/500/</code> and <code>/404/</code> on your development server you will be served a fake error page.</p>

<hr />

<p><strong>1</strong>: There is an exception here. If you configured your settings correctly, development server will serve admin media.</p>

<p><strong>2</strong>: Assuming your <code>settings.py</code> is directly inside your project directory, hence the <code>__file__</code>.</p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2009/05/serving-static-media-in-django-development-server/' addthis:title='Serving Static Media In Django Development Server '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2009/05/serving-static-media-in-django-development-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>David Heinemeier Hansson at Startup School 08</title>
		<link>http://www.muhuk.com/2009/03/david-heinemeier-hansson-at-startup-school-08/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=david-heinemeier-hansson-at-startup-school-08</link>
		<comments>http://www.muhuk.com/2009/03/david-heinemeier-hansson-at-startup-school-08/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 17:23:14 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[Y Combinator]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=150</guid>
		<description><![CDATA[Share and annotate your videos with Omnisio!

Great talk. Also note the elegance of (/2008/08/omnisio/) player.]]></description>
			<content:encoded><![CDATA[<p><object width='520' height='276'><param name='movie' value='http://www.omnisio.com/bin/Embed.swf?embedID=dInYO4IlCr3AIdadbiFy2w' /><param name='bgcolor' value='#FFFFFF' /><param name='quality' value='high' /><param name='allowscriptaccess' value='always' /><param name='allowfullscreen' value='true' /><embed type='application/x-shockwave-flash' src='http://www.omnisio.com/bin/Embed.swf?embedID=dInYO4IlCr3AIdadbiFy2w' bgcolor='#FFFFFF' quality='high' allowfullscreen='true' allowscriptaccess='always' width='520' height='276' ><noembed><div><a href='http://www.omnisio.com'>Share and annotate your videos</a> with Omnisio!</div></noembed></embed></object></p>

<p>Great talk. Also note the elegance of <a href="http://www.muhuk.com/2008/08/omnisio/">Omnisio</a> player.</p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2009/03/david-heinemeier-hansson-at-startup-school-08/' addthis:title='David Heinemeier Hansson at Startup School 08 '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2009/03/david-heinemeier-hansson-at-startup-school-08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Birthday Fazlamesai!</title>
		<link>http://www.muhuk.com/2008/10/happy-birthday-fazlamesai/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=happy-birthday-fazlamesai</link>
		<comments>http://www.muhuk.com/2008/10/happy-birthday-fazlamesai/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 08:16:27 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[fazlamesai]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[social network]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=30</guid>
		<description><![CDATA[(http://www.fazlamesai.net), <strong>the</strong> geek hub of Turkey, is now (http://www.fazlamesai.net/index.php?a=article&#38;sid=5098). Happy anniversary, we love you!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fazlamesai.net">Fazlamesai.net</a>, <strong>the</strong> geek hub of Turkey, is now <a href="http://www.fazlamesai.net/index.php?a=article&amp;sid=5098">8 years old</a>. Happy anniversary, we love you!</p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2008/10/happy-birthday-fazlamesai/' addthis:title='Happy Birthday Fazlamesai! '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2008/10/happy-birthday-fazlamesai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Networking Done Right</title>
		<link>http://www.muhuk.com/2008/09/social-networking-done-right/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=social-networking-done-right</link>
		<comments>http://www.muhuk.com/2008/09/social-networking-done-right/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 10:30:26 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[social network]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=15</guid>
		<description><![CDATA[Let me just say that the social media, or more technically loser generated content is inherently flawed. That is of course a polite way of saying it is screwed. But I am not a polite person, so there you have it. I have found a (http://www.cnet.com/4520-6033_1-6240543-1.html) explaining why. It is a short, good ...]]></description>
			<content:encoded><![CDATA[<p>Let me just say that the social media, or more technically loser generated content is inherently flawed. That is of course a polite way of saying it is screwed. But I am not a polite person, so there you have it. I have found a <a href="http://www.cnet.com/4520-6033_1-6240543-1.html">CNET article</a> explaining why. It is a short, good read. So I won&#8217;t go into details why social networking sites are crap.</p>

<p>But I would like to take the first argument from the article and elaborate on it a little bit; <strong>There&#8217;s nothing to do there</strong> (in a social network). Social networks like <a href="http://www.myspace.com/">MySpace</a>, <a href="http://www.facebook.com">Facebook</a> and <a href="http://www.orkut.com">Orkut</a> are based on creating a profile and associating other profiles with it. Thus you get to show everybody how many friends you have, you get to sell them and poke them and bite them (via Facebook applications), you get to rate them (in Orkut) and finally you get to send them private (and otherwise) messages. You can do all this stuff, so these social networks must be invaluable tools for our social life, right? Let&#8217;s take a closer look.</p>

<p>Last time I checked, relationships were more about quality than quantity. Who cares if you have 10 or 1000 friends in your profile? Having a huge friend count doesn&#8217;t even make you a <em>popular</em> person as far as I&#8217;m concerned. Because I know people who just pop out of nowhere and request to be friends with me. Unsurprisingly they have a high friend count themselves, go figure!</p>

<p>I think relationships are about sharing experiences. Social networks like Facebook give you that opportunity. In a twisted sick way though. For example you can poke your friends. Think about how much you can strenghten your relationships by poking people. And not only that, thanks to the <em>application API</em> you can buy and sell your friends as pets or you can suck their blood till they become vampires. Just the constant stream of invitations makes up a great experience. But I doubt it is the kind of experience Facebook wants you to have.</p>

<p>But hey, you can use social networks to communicate with people too. Isn&#8217;t that a good thing? You can publish your status, you can send your friends private messages. You can even join groups to meet like minded people! Isn&#8217;t that cool? &#8230;well, no. If you think that&#8217;s cool you must have missed the news about something called <strong>Internet</strong>! You can do all these without a social apparatus and almost always more effectively. You can email people for example. I would suppose people check their email more often and with greater attention than their social web2.0 gadgetry Mainstream social networks are not much more than profile association tools. There is nothing to do there. And noone, other than your friends, cares about your profile decoration. Perhaps not even your friends&#8230;</p>

<p>This huge mass of loser generated content reminds me of all that wasted bandwidth over once popular and useless e-mail forwards. When I lashed out to the senders they would be offended and surprised at the same time. How could I  reject these wonderful delights Internet has to offer us. Do they still forward? That was before we had hyper-super-wall applications and send-poop applications. Actually I am a big fan of user generated content. There are many blogs for example, not only worth reading but their content is so precious that you can&#8217;t just possibly buy a book or take a course to get to that information. These people genuinely have something to tell and they have spent the effort to set-up a proper channel for their valuable voice. There are lame blogs as well, but of course if you&#8217;re reading this you already know that. But the bad ones are not strongly connected with the good ones, therefore you don&#8217;t even have to notice them. In other words they can not publish stories in your news feed.</p>

<p>There are also social networks that are built around another application. So there is a common goal, or at least something solid to talk about. I divide them into three and a half categories; building, sharing, bookmarking and business.</p>

<ul>
<li><strong>Building</strong> applications with social networking are in my opinion most sophisticated and most valuable. Common example is Wikipedia. If you find it hard to spot social networking elements in Wikipedia that is probably because you have only seen the frontend. Wikipedia is a big community, and they form a social network with a wide communication bandwidth. Just google it to find out about how they operate and edit. Another good example to this category is open source software development. They also form a social network, and the networking aspect is much bigger this time.</li>
<li><strong>Sharing</strong> applications with social networking include <a href="http://www.youtube.com">Youtube</a>, <a href="http://www.flickr.com/">Flickr</a>, <a href="http://8tracks.com/">8tracks</a> and the like. I won&#8217;t deny most of the content here is loser generated, just go to a random Youtube video and try to read the comments. But that may be, on an end user level, irrelevant. In these applications networking is not pushed too hard and the sharing mission is fully accomplished.</li>
<li><strong>Bookmarking</strong> is actually a special case of sharing. Bookmarking applications such as <a href="http://www.reddit.com/">Reddit</a>, <a href="http://digg.com/">Digg</a> and <a href="http://www.stumbleupon.com/">Stumbleupon</a> are built on an <strong>incredibly powerful idea</strong> of sharing bookmarks. Today we are using WWW for many different things, but generally surfing is still the most prevalent. And hyperlinks and search engines fail to serve well enough for general purpose surfing. Social bookmarking does. You can choose a general or specific category and enjoy an almost endless stream of human reviewed websites.</li>
<li><strong>Business</strong> oriented social networks form half a category. They are not very different than mainstream friend portfolios. They emphasize business networking and I hear they can be useful. People are more open to meet new people in business context and these sites copy real world interaction successfully, so I don&#8217;t put them together with the other time wasters.</li>
</ul>

<p>If you want a web presence the best way in my opinion is blogging. If you don&#8217;t have anything to say, no matter how many social profiles you have and how many times you can twit a day doesn&#8217;t really matter, nobody cares. You can also incorporate social media if you like, you can import your RSS into your Facebook profile or <a href="http://ping.fm/">ping.fm</a> some your posts. There is no need to spend a lot of time tweaking your profile, it is pointless.</p>

<p>On the other hand social networking is an important concept. It adds value when it is built around another, related service. Take <a href="http://www.kongregate.com/">Kongregate</a> for example. I <a href="http://www.muhuk.com/2008/07/kongai/">mentioned</a> about how it is structured as a game which forms social network with unique dynamics. Check it out, if you also believe profile association is not the highest point for social networks.</p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2008/09/social-networking-done-right/' addthis:title='Social Networking Done Right '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2008/09/social-networking-done-right/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Omnisio</title>
		<link>http://www.muhuk.com/2008/08/omnisio/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=omnisio</link>
		<comments>http://www.muhuk.com/2008/08/omnisio/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 17:14:28 +0000</pubDate>
		<dc:creator>Atamert Ölçgen</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[Y Combinator]]></category>

		<guid isPermaLink="false">http://www.muhuk.com/?p=8</guid>
		<description><![CDATA[(http://omnisio.com/) is a video hosting application, one of (http://www.ycombinator.com/) startups, acquired last month by Google.

Looking at aqcuisitions like this one, I see two things;

<ul>
<li>Improving end user experience (or conversation in some cases) is more important than technical superiority. Omnisio didn't host uber quality HD videos or 3D sound or anything fancy like ...</li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://omnisio.com/">Omnisio</a> is a video hosting application, one of <a href="http://www.ycombinator.com/">Y Combinator</a> startups, acquired last month by Google.</p>

<p>Looking at aqcuisitions like this one, I see two things;</p>

<ul>
<li>Improving end user experience (or conversation in some cases) is more important than technical superiority. Omnisio didn&#8217;t host uber quality HD videos or 3D sound or anything fancy like that. What made me fall in love with the service is that they simply synchronized (vector) keynotes with the actual video.</li>
<li>Execution is king for investors of any kind. This should be no surprise though. Not because they risk their money. But because startup businesses are usually <em>making up their specific business as a whole</em> as they go. So there is not really any substantial know-how, unless you are a copycat.</li>
</ul>

<p>Check out <a href="http://omnisio.com/startupschool08">Startup School 2008</a> videos on Omnisio.</p>
<div><a class="addthis_button" href="http://www.muhuk.com//addthis.com/bookmark.php?v=250" addthis:url='http://www.muhuk.com/2008/08/omnisio/' addthis:title='Omnisio '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div><p>Related posts:<ol>
<li><a href='http://www.muhuk.com/2011/06/pycon-apac-optimizing-media-performance-with-django_compressor/' rel='bookmark' title='My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor'>My PyCon APAC 2011 Presentation: Optimizing Media Performance with django_compressor</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django/' rel='bookmark' title='Working with files in Django &#8211; Part 1'>Working with files in Django &#8211; Part 1</a></li>
<li><a href='http://www.muhuk.com/2011/11/working-with-files-in-django-part-2/' rel='bookmark' title='Working with files in Django &#8211; Part 2'>Working with files in Django &#8211; Part 2</a></li>
</ol></p><p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.muhuk.com/2008/08/omnisio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

