<?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>recluze &#187; recluze</title>
	<atom:link href="http://www.csrdu.org/nauman/author/administrator/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.csrdu.org/nauman</link>
	<description>Nauman (recluze) on Computing, Philosophy and more.</description>
	<lastBuildDate>Sun, 16 Dec 2012 13:02:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Row-level Permissions in Django Admin</title>
		<link>http://www.csrdu.org/nauman/2012/12/16/row-level-permissions-in-django-admin/</link>
		<comments>http://www.csrdu.org/nauman/2012/12/16/row-level-permissions-in-django-admin/#comments</comments>
		<pubDate>Sun, 16 Dec 2012 12:07:44 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=828</guid>
		<description><![CDATA[So you&#8217;ve started working with Django and you love the admin interface that you get for free with your models. You deploy half of your app with the admin interface and are about to release when you figure out that anyone who can modify a model can do anything with it. There is no concept [...]]]></description>
				<content:encoded><![CDATA[<p>So you&#8217;ve <a href="https://docs.djangoproject.com/en/dev/intro/tutorial01/" target="_blank">started working with Django</a> and you love the admin interface that you get for free with your models. You deploy half of your app with the admin interface and are about to release when you figure out that anyone who can modify a model can do anything with it. There is no concept of &#8220;ownership&#8221; of records!</p>
<p>Let me give you an example. Let&#8217;s say we&#8217;re creating a little MIS for the computer science department where each faculty member can put in his courses and record the course execution (what was done per lecture). That would be a nice application. (In fact, it&#8217;s available <a href="http://recluze.github.com/fastnu-csd-audit" target="_blank">open source on github</a> and that is what this tutorial is referring to.) However, the issue is that all instructors can access all the course records and there is no way of ensuring that an instructor can modify only the courses that s/he taught. This isn&#8217;t easily possible because admin doesn&#8217;t not have &#8220;row-level permissions&#8221;.</p>
<p>Of course, we can create them by sub-classing some of the Admin classes and modifying a couple of functions. Here&#8217;s how:</p>
<p>Let&#8217;s assume we have the following in our models:</p>
<pre class="brush: python; title: ; notranslate">
class Instructor(models.Model):
    name = models.CharField(max_length=200)
    # other stuff here 

class Course(models.Model):
    course_code = models.CharField(max_length=10, default='CS')
    instructor = models.ForeignKey(Instructor)
    course_name = models.CharField(max_length=200)
    # other stuff here 

class CourseOutline(models.Model):
    course = models.OneToOneField(Course)
    objectives = models.TextField(blank=True)
    # other stuff 
</pre>
<p>And in admin.py, we have the following: </p>
<pre class="brush: python; title: ; notranslate">
class CourseAdmin(admin.ModelAdmin):
    list_display = ('course_name', 'instructor')
    # some other stuff 

admin.site.register(Course, CourseAdmin)

class CourseOutlineAdmin(admin.ModelAdmin):
    # nothing here of importance     

admin.site.register(CourseOutline, CourseOutlineAdmin)
</pre>
<p>So, when you open the page for Course, you can see the instructors and when you open the CourseOutline, you can see the Courses. Pretty good but how do we add row-level permissions? We do this by overriding a couple of functions. </p>
<p>Here&#8217;s the strategy I followed: </p>
<p>First, create a user account for each instructor. Then, take away these user&#8217;s rights to modify Instructor objects. (You can keep stuff in Instructor Profile so that they can modify their information.) </p>
<p>Next, add a field to the Instructor model that binds it to a particular user. The model now becomes: </p>
<pre class="brush: python; title: ; notranslate">
from django.contrib.auth.models import User
...

class Instructor(models.Model):
    name = models.CharField(max_length=200)
    owner = models.ForeignKey(User)
    # other stuff here 

</pre>
<p>The other models can remain the same. We only need to modify their &#8220;querysets&#8221;. Let&#8217;s open up admin.py again and modify the *Admins. </p>
<p>We override two functions to make CourseAdmin look like the following: </p>
<pre class="brush: python; title: ; notranslate">
class CourseAdmin(admin.ModelAdmin):
    # whatever was here 
 
    def queryset(self, request):
        qs = super(CourseAdmin, self).queryset(request)
        if request.user.is_superuser:
            return qs 
        
        # get instructor's &quot;owner&quot; 
        return qs.filter(instructor__owner=request.user)
    
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == &quot;instructor&quot; and not request.user.is_superuser:
            kwargs[&quot;queryset&quot;] = Instructor.objects.filter(owner=request.user)
            return db_field.formfield(**kwargs)
        return super(CourseAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
    
admin.site.register(Course, CourseAdmin)
</pre>
<p>What&#8217;s that? The first function basically modifies the queryset function and makes sure that if you&#8217;re not a super user, you will see only those courses in the course list where <code>instructor__owner=request.user</code> i.e. your own courses. </p>
<p>The second function is required so that you can&#8217;t add courses that belong to other instructors. It filters the foreign key dropdown box so that only <code>owner=request.user</code> objects are shown in the foreign key dropdown. That is, you only see yourself in that dropdown. </p>
<p>We can do the same thing for CourseOutline. That is here: </p>
<pre class="brush: python; title: ; notranslate">
class CourseOutlineAdmin(admin.ModelAdmin):
    # whatever was here 

    def queryset(self, request):
        qs = super(CourseOutlineAdmin, self).queryset(request)
        if request.user.is_superuser:
            return qs 
        
        # get instructor's &quot;owner&quot; 
        return qs.filter(course__instructor__owner=request.user)
    
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == &quot;course&quot; and not request.user.is_superuser:
            kwargs[&quot;queryset&quot;] = Course.objects.filter(instructor__owner=request.user)
            return db_field.formfield(**kwargs)
        return super(CourseAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

</pre>
<p>The only difference is that we&#8217;re now going two levels up the foreign key ladder. That&#8217;s all you need to have row-level permissions in admin. Questions? </p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F16%2Frow-level-permissions-in-django-admin%2F&amp;linkname=Row-level%20Permissions%20in%20Django%20Admin" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F16%2Frow-level-permissions-in-django-admin%2F&amp;linkname=Row-level%20Permissions%20in%20Django%20Admin" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F16%2Frow-level-permissions-in-django-admin%2F&amp;linkname=Row-level%20Permissions%20in%20Django%20Admin" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F16%2Frow-level-permissions-in-django-admin%2F&amp;linkname=Row-level%20Permissions%20in%20Django%20Admin" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F16%2Frow-level-permissions-in-django-admin%2F&amp;linkname=Row-level%20Permissions%20in%20Django%20Admin" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F16%2Frow-level-permissions-in-django-admin%2F&amp;title=Row-level%20Permissions%20in%20Django%20Admin" id="wpa2a_2">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2012/12/16/row-level-permissions-in-django-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AVL Tree in Python</title>
		<link>http://www.csrdu.org/nauman/2012/12/09/avl-tree-in-python/</link>
		<comments>http://www.csrdu.org/nauman/2012/12/09/avl-tree-in-python/#comments</comments>
		<pubDate>Sun, 09 Dec 2012 09:10:11 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Geek stuff]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=825</guid>
		<description><![CDATA[I&#8217;ve been teaching &#8220;Applied Algorithms and Programming Techniques&#8221; and we just reached the topic of AVL Trees. Having taught half of the AVL tree concept, I decided to code it in python &#8212; my newest adventure. Bear in mind that I have never actually coded an AVL tree before and I&#8217;m not particularly comfortable with [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been teaching &#8220;Applied Algorithms and Programming Techniques&#8221; and we just reached the topic of AVL Trees. Having taught half of the AVL tree concept, I decided to code it in python &#8212; my newest adventure. Bear in mind that I have never actually coded an AVL tree before and I&#8217;m not particularly comfortable with python. I thought it would be a good idea to experiment with both of them at the same time. So, I started up my python IDE (that&#8217;s Aptana Studio, btw) and started coding.</p>
<p>For the newbie programmer, the code itself may not be very useful since you can find better code online. The benefit is in being able to look at the process. You can take a look at the commits I made along the way over <a href="https://github.com/recluze/python-avl-tree/commits/master" target="_blank">here</a> on github. You can take a look at how I structured the code when I began and how I added bits and pieces. This abstraction should help in solving other problems as well. The final code (along with a rigorous unit test file) can be seen here: <a href="https://github.com/recluze/python-avl-tree">https://github.com/recluze/python-avl-tree</a></p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F09%2Favl-tree-in-python%2F&amp;linkname=AVL%20Tree%20in%20Python" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F09%2Favl-tree-in-python%2F&amp;linkname=AVL%20Tree%20in%20Python" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F09%2Favl-tree-in-python%2F&amp;linkname=AVL%20Tree%20in%20Python" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F09%2Favl-tree-in-python%2F&amp;linkname=AVL%20Tree%20in%20Python" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F09%2Favl-tree-in-python%2F&amp;linkname=AVL%20Tree%20in%20Python" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F12%2F09%2Favl-tree-in-python%2F&amp;title=AVL%20Tree%20in%20Python" id="wpa2a_4">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2012/12/09/avl-tree-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random Chemicals to Reproducible  Life</title>
		<link>http://www.csrdu.org/nauman/2012/09/04/random-chemicals-to-reproducible-life/</link>
		<comments>http://www.csrdu.org/nauman/2012/09/04/random-chemicals-to-reproducible-life/#comments</comments>
		<pubDate>Tue, 04 Sep 2012 04:08:00 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=813</guid>
		<description><![CDATA[Back when I first became interested in science, one of the first areas I was interested in was Biology &#8212; specifically human evolution because of the hype it gets. The whole religion versus science becomes very pronounced in the creation-or-evolution debate. I read through a lot of material and was able to understand natural selection [...]]]></description>
				<content:encoded><![CDATA[<p>Back when I first became interested in science, one of the first areas I was interested in was Biology &#8212; specifically human evolution because of the hype it gets. The whole religion versus science becomes very pronounced in the creation-or-evolution debate. I read through a lot of material and was able to understand natural selection quite easily. It&#8217;s not all that complicated as some would like to suggest. It&#8217;s simply this: whoever is the better in a particular situation survives. It&#8217;s easy to understand once you realize that that&#8217;s a tautology. Whoever survives is the &#8220;fittest&#8221; and the fittest survives. So, no problems there but there was always something that didn&#8217;t quite fit. I could never quite digest the &#8220;theory&#8221; that micro-evolution (birds changing bone shape etc.) could lead to macro evolution (going from single-strand RNA to fish).</p>
<p>Finally, after much thought, I realized something. The way evolution is normally explained is by half a process of induction. The proponents of evolution (by the way, in the rest of this post, &#8220;evolution&#8221; should be read as &#8220;macro-evolution&#8221;) suggest that there is a gradual change from one species to another. You get to see a lot of &#8220;minor changes&#8221; and finally, with some blanks, you can see the whole chain. The base case, however, is missing. Where does this process start?</p>
<p>According to Darwinian evolution, if you go back in time, you go back in complexity. From complex mammals, you get fish and from there, you get stuff like amoebas, and then very simple living material like RNA etc. The problem with that though, is that there comes a point where you can&#8217;t get any simpler. If you do, your &#8220;living thing&#8221; cannot reproduce. The reason is that reproduction is a fairly complicated process and anything that does it can&#8217;t said to be the basic organism. However, if you get any simpler, you lose the ability to reproduce and then you cannot demonstrate survival of the fittest because no matter how fit you are, you cannot pass on your traits.</p>
<p>Now, after a long time, I came across this article on MIT Technology Review which documents <a href="http://www.technologyreview.com/news/428793/three-questions-with-george-whitesides" target="_blank">an interview with George Whitesides </a>. George Whitesides is introduced in the article with these words:</p>
<blockquote><p><em>Harvard professor George Whitesides has spent his career solving problems in science and industry—he cofounded the pharmaceutical giant Genzyme, and he&#8217;s the world&#8217;s most cited living chemist.</em></p></blockquote>
<p>Please read through the brief interview. It&#8217;s very informative and though provoking. Of relevance here is the answer to the first question quoted here for the sake of completeness.</p>
<blockquote><p><em>Technology Review: What&#8217;s the problem you have most wanted to solve and haven&#8217;t been able to?</em><br />
<em> Whitesides: There&#8217;s an intellectual problem, which is the origin of life. The origin of life has the characteristic that there&#8217;s something in there as a chemist, which I just don&#8217;t understand. I don&#8217;t understand how you go from a system that&#8217;s random chemicals to something that becomes, in a sense, a Darwinian set of reactions that are getting more complicated spontaneously. I just don&#8217;t understand how that works. So that&#8217;s a scientific problem.</em></p></blockquote>
<p>That&#8217;s a concise and succinct way of explaining the problem that I just introduced. If you get simpler beyond a certain point, you cannot obey Darwinian set of reactions (i.e. survival of the fittest). So, the question is: why aren&#8217;t we told about this problem in the Darwinian theory when we&#8217;re all taught evolution in school? It&#8217;s not that hard to explain.</p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F09%2F04%2Frandom-chemicals-to-reproducible-life%2F&amp;linkname=Random%20Chemicals%20to%20Reproducible%20%20Life" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F09%2F04%2Frandom-chemicals-to-reproducible-life%2F&amp;linkname=Random%20Chemicals%20to%20Reproducible%20%20Life" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F09%2F04%2Frandom-chemicals-to-reproducible-life%2F&amp;linkname=Random%20Chemicals%20to%20Reproducible%20%20Life" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F09%2F04%2Frandom-chemicals-to-reproducible-life%2F&amp;linkname=Random%20Chemicals%20to%20Reproducible%20%20Life" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F09%2F04%2Frandom-chemicals-to-reproducible-life%2F&amp;linkname=Random%20Chemicals%20to%20Reproducible%20%20Life" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F09%2F04%2Frandom-chemicals-to-reproducible-life%2F&amp;title=Random%20Chemicals%20to%20Reproducible%20%20Life" id="wpa2a_6">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2012/09/04/random-chemicals-to-reproducible-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A No-nonsense OpenERP Installation Guide</title>
		<link>http://www.csrdu.org/nauman/2012/01/10/a-no-nonsense-openerp-installation-guide/</link>
		<comments>http://www.csrdu.org/nauman/2012/01/10/a-no-nonsense-openerp-installation-guide/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 04:14:26 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=801</guid>
		<description><![CDATA[This is a no-nonsense guide to the installation of OpenERP &#8212; the popular open source and customizable ERP solution &#8212; aimed at the complete newbie. Of course, there has to just a little bit of &#8220;nonsense&#8221; to get you started. So, here it is: (a) You need to have PostgreSQL installed as the database backend [...]]]></description>
				<content:encoded><![CDATA[<p>This is a no-nonsense guide to the installation of <a href="http://www.openerp.com/" target="_blank">OpenERP</a> &#8212; the popular open source and customizable ERP solution &#8212; aimed at the complete newbie. Of course, there has to just a little bit of &#8220;nonsense&#8221; to get you started. So, here it is: (a) You need to have <a href="http://www.postgresql.org/" target="_blank">PostgreSQL</a> installed as the database backend for OpenERP. (b) OpenERP is written in python so you&#8217;ll need some packages for that part. (c) There is a server and a client. The server is important &#8212; client can be both a desktop client or a web client. (d) We&#8217;ll cover all of this except the web client. You don&#8217;t need that to get started. (e) We&#8217;re using OpenERP on Ubuntu 11.10 but an older version should also work. </p>
<p><span id="more-801"></span> </p>
<p><strong>Setting up PostgreSQL</strong><br />
This is fairly straight-forward. You need to issue the following commands. (If you&#8217;re new to Linux, the (parts of) lines starting with <code>#</code> are comments.) </p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get install postgresql pgadmin3 
sudo su postgres  # login as postgres user

createuser openerp
# Answer y to the following question: 
# Shall the new role be a superuser? (y/n) y

psql template1
alter role openerp with password 'postgres';
# ALTER ROLE 
# Enter Ctrl+D to exit

# create database for openerp with owner openerp 
createdb -O openerp openerp 
exit  # to go back to the normal user
</pre>
<p><strong>Setting up OpenERP Server</strong></p>
<p>First, we need to download the sources: </p>
<pre class="brush: bash; title: ; notranslate">
cd ~ 
mkdir temp 
wget http://www.openerp.com/download/stable/source/openerp-server-6.0.3.tar.gz
wget http://www.openerp.com/download/stable/source/openerp-client-6.0.3.tar.gz
</pre>
<p>Then, we install all the required dependencies: </p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get -y install python-lxml \
   python-mako python-dateutil python-psycopg2 \
   python-pychart python-pydot python-tz \
   python-reportlab  python-yaml python-vobject python-setuptools
</pre>
<p>Extract and install the server: </p>
<pre class="brush: bash; title: ; notranslate">
cd ~/tmp 
tar zxf openerp-server-6.0.3.tar.gz 
cd openerp-server-6.0.3
sudo python setup.py install 
</pre>
<p>Create an OS user for openerp to run as: </p>
<pre class="brush: bash; title: ; notranslate">
sudo useradd openerp 
sudo passwd openerp 
# give it password 'postgres' for simplicity
</pre>
<p>And finally, start the server:</p>
<pre class="brush: bash; title: ; notranslate"> 
sudo su openerp # we should run openerp as its own user  
openerp-server 
</pre>
<p><strong>Using the Client </strong></p>
<p>Leave that terminal running and open up another one. First, we&#8217;ll install the dependencies for the client: </p>
<pre class="brush: bash; title: ; notranslate"> 
sudo apt-get -y install python-gtk2 \
   python-glade2 python-matplotlib python-egenix-mxdatetime \
   python-dateutil python-pydot python-tz python-hippocanvas
</pre>
<p>The package <code>python-xml</code> (suggested by the official documentation) is deprecated and is no longer available. You don&#8217;t need it anyway since you can use the xml support in core python. </p>
<pre class="brush: bash; title: ; notranslate"> 
cd ~/tmp 
tar zxf openerp-client-6.0.3.tar.gz
cd openerp-client-6.0.3
</pre>
<p>To test out that the server is working properly: </p>
<pre class="brush: bash; title: ; notranslate"> 
cd bin 
./openerp-client.py
</pre>
<p>You should now see the login screen similar to this one: </p>
<div id="attachment_806" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.csrdu.org/nauman/wp-content/uploads/2012/01/openerp-client-test.png"><img src="http://www.csrdu.org/nauman/wp-content/uploads/2012/01/openerp-client-test-300x187.png" alt="" title="OpenERP Client" width="300" height="187" class="size-medium wp-image-806" /></a><p class="wp-caption-text">OpenERP Client</p></div>
<p>Login using the following credentials: </p>
<pre class="brush: plain; title: ; notranslate">
username: admin 
password: admin 
</pre>
<p>Installation of the client is giving me trouble right now. I&#8217;ll post the installation instructions after I sort them out inshaallah. </p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F01%2F10%2Fa-no-nonsense-openerp-installation-guide%2F&amp;linkname=A%20No-nonsense%20OpenERP%20Installation%20Guide" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F01%2F10%2Fa-no-nonsense-openerp-installation-guide%2F&amp;linkname=A%20No-nonsense%20OpenERP%20Installation%20Guide" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F01%2F10%2Fa-no-nonsense-openerp-installation-guide%2F&amp;linkname=A%20No-nonsense%20OpenERP%20Installation%20Guide" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F01%2F10%2Fa-no-nonsense-openerp-installation-guide%2F&amp;linkname=A%20No-nonsense%20OpenERP%20Installation%20Guide" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F01%2F10%2Fa-no-nonsense-openerp-installation-guide%2F&amp;linkname=A%20No-nonsense%20OpenERP%20Installation%20Guide" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2012%2F01%2F10%2Fa-no-nonsense-openerp-installation-guide%2F&amp;title=A%20No-nonsense%20OpenERP%20Installation%20Guide" id="wpa2a_8">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2012/01/10/a-no-nonsense-openerp-installation-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agent Mobility with JADE and JIPMS</title>
		<link>http://www.csrdu.org/nauman/2011/12/29/agent-mobility-with-jade-and-jipms/</link>
		<comments>http://www.csrdu.org/nauman/2011/12/29/agent-mobility-with-jade-and-jipms/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 03:50:12 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=779</guid>
		<description><![CDATA[A friend and I have been working on Java Agent DEvelopment Framework (JADE) for a while now. The idea is to enhance security mechanisms in the open source agent-deployment platform. The first step we decided to address was the actual mobility of an agent from one platform (in the sense of a dedicated machine running [...]]]></description>
				<content:encoded><![CDATA[<p>A friend and I have been working on <em>Java Agent DEvelopment Framework (JADE)</em> for a while now. The idea is to enhance security mechanisms in the open source agent-deployment platform. The first step we decided to address was the actual mobility of an agent from one platform (in the sense of a dedicated machine running the JADE middleware) to another one. Turned out that it was much harder than one would imagine &#8212; especially given the fact that these agents are supposed to be <em>mobile</em>. Anyway, after around two months of part-time efforts, we got the agent working. Since the whole ordeal involved a lot of missing documentation and bad support, I decided to document the process through this tutorial. So, here it is. Read on to see how you can create an agent on one platform, migrate it to another platform, have it do some computation there and come back to the source. <span id="more-779"></span></p>
<p>First, you&#8217;re going to need two machines running Ubuntu. (We used Ubuntu 11.10 oneric for this.) If you only have one machine, you can install VirtualBox, setup a Ubuntu instance in a VM and connect it to the host through a virtual interface. I prefer using two adapters, first one set to a NAT setting and another one set to Host-only setting. This way, I get Internet connectivity in the guest as well as host-to-guest simple addressing.</p>
<p>We&#8217;re going to use JADE 3.6 along with the <em>JADE Inter-platform Mobility Service (JIPMS)</em> 1.2 for our needs. Download <a href="http://jade.tilab.com/" target="_blank">JADE</a> and <a href="https://tao.uab.cat/ipmp/" target="_blank">JIPMS</a>.  I used jade-binary package and extracted it in /home/documents/jade. I also extracted the JIPMS and moved the file migration.jar from its lib folder to the lib folder of jade binary. This makes it easier for us to change the classpath later on. We&#8217;ll need these files on both machines.</p>
<p>Now we need to setup the machines. Here are the details of the setup on each machine:</p>
<p><strong>Host:</strong></p>
<p>hostname: slave1<br />
IP: 192.168.56.1 (set by VirtualBox automatically)</p>
<p>You can get the IP addresses of each machine through the ifconfig command. Edit /etc/hosts to insert the other machine&#8217;s address. My hosts file on slave1 looks like this:</p>
<pre class="brush: bash; title: ; notranslate">
# 127.0.0.1       localhost
127.0.0.1         slave1
192.168.56.101    slave2
</pre>
<p>Now, we can run jade using the following command:</p>
<pre class="brush: bash; title: ; notranslate">
java -cp lib/jade.jar:lib/migration.jar:lib/iiop.jar:
         lib/jadeTools.jar:lib/http.jar:
         lib/commons-codec/commons-codec-1.3.jar
     jade.Boot
         -gui
         -platform-id slave1
         -host slave1
         -services jade.core.mobility.AgentMobilityService\;
                   jade.core.migration.InterPlatformMobilityService
         -accept-foreign-agents true
</pre>
<p>You will need to use a little common sense about the line breaks and spaces here. I&#8217;ve formatted the command for highest readability. (Note the escaped &#8216;;&#8217; in the services param and the use of full colon instead of the semi-colon in the classpath. This is only required on *nix platforms.) Three switches are important here: platform-id, host and services.  First two are self-explanatory. Third tells the IPMS to start the services that take care of the agent migration. We also need to enable the acceptance of foreign agents but I&#8217;m sure you already knew that from all the mailing list searches.</p>
<p><strong>Guest:</strong></p>
<p>hostname: slave2<br />
IP: 192.168.56.101 (set by VirtualBox automatically)<strong></strong></p>
<p>The hosts file looks like this:</p>
<pre class="brush: bash; title: ; notranslate">
# 127.0.0.1     localhost
127.0.0.1       slave2
192.168.56.1    slave1
</pre>
<p>Start jade on slave2 using the following command:</p>
<pre class="brush: bash; title: ; notranslate">
java -cp lib/jade.jar:lib/migration.jar:lib/iiop.jar:
         lib/jadeTools.jar:lib/http.jar:
         lib/commons-codec/commons-codec-1.3.jar
     jade.Boot
        -gui
        -platform-id slave2
        -host slave2
        -services jade.core.mobility.AgentMobilityService\;
                  jade.core.migration.InterPlatformMobilityService
        -accept-foreign-agents true
</pre>
<p><strong>The Agent:</strong></p>
<p>Now, we turn to the actual agent code that does the migration. For this, we can setup eclipse and code from within that. The code for the agent is fairly straight-forward:</p>
<pre class="brush: java; title: ; notranslate">
package org.csrdu.mobility;

import jade.core.AID;
import jade.core.Agent;
import jade.core.PlatformID;
import jade.core.behaviours.TickerBehaviour;

@SuppressWarnings(&quot;serial&quot;)
public class MobileAgent extends Agent {

    @Override
    protected void setup() {
        super.setup();
        addBehaviour(new MyTickerBehaviour(this, 1000));

        System.out.println(&quot;Hello World. I am an agent!&quot;);
        System.out.println(&quot;My LocalName: &quot; + getAID().getLocalName());
        System.out.println(&quot;My Name: &quot; + getAID().getName());
        System.out.println(&quot;My Address: &quot; + getAID().getAddressesArray()[0]);
    }

    private class MyTickerBehaviour extends TickerBehaviour {
        Agent agent;
        // long interval;
        int counter;

        public MyTickerBehaviour(Agent agent, long interval) {
            super(agent, interval);
            this.agent = agent;
            // this.interval = interval;
        }

        @Override
        protected void onTick() {
            if (counter == 3) {
                // move out
                AID remoteAMS = new AID(&quot;ams@slave2&quot;, AID.ISGUID);
                remoteAMS.addAddresses(&quot;http://slave2:7778/acc&quot;);
                PlatformID destination = new PlatformID(remoteAMS);
                agent.doMove(destination);
            }
            if (counter == 10) {
                // move back
                AID remoteAMS = new AID(&quot;ams@slave1&quot;, AID.ISGUID);
                remoteAMS.addAddresses(&quot;http://slave1:7778/acc&quot;);
                PlatformID destination = new PlatformID(remoteAMS);
                agent.doMove(destination);
            }
            if (counter &lt; 15)
                System.out.println(counter++);
            else
                agent.doDelete();
        }

    }
}
</pre>
<p>For the sake of completion, here&#8217;s the arguments that you have to pass when running the agent code from within eclipse.</p>
<pre class="brush: plain; title: ; notranslate">
-container -agents mob:org.csrdu.mobility.MobileAgent 
  -services jade.core.mobility.AgentMobilityService;jade.core.migration.InterPlatformMobilityService
</pre>
<p>Also, add all the jade and mobility jars to the build path of the project. I&#8217;m not sure which ones are needed here so you will have to figure that out on your own. </p>
<p><strong>Caveats:</strong></p>
<ol>
<li>If you get this error:  <code>Destination slave2:1099/JADE does not exist or does not support mobility</code>, it most probably means that you (a) you don&#8217;t have IPMS running, (b) you didn&#8217;t put the -services switch properly (c) there&#8217;s a firewall blocking your port 7778 or (d) your hostnames are messed up. In any case, the whole instructions above should work for you.
     </li>
<li>You will most probably need to change your /etc/hosts file and comment out the line that says &#8217;127.0.0.1 localhost&#8217;. It causes JADE to start the ams@slaveN service as http://localhost:7778/acc instead of http://slaveN:7778/acc and that means a lot of missed ACL messages and a lot of headaches. You usually get the dreaded <code>getContainerID() failed to find agent ams@slave1</code> error because of this. Do this for both the host and the guest. Make sure your JADE GUI looks like the following:<br />
<a href="http://www.csrdu.org/nauman/wp-content/uploads/2011/12/rma_jade_slave.png"><img src="http://www.csrdu.org/nauman/wp-content/uploads/2011/12/rma_jade_slave.png" alt="" title="JADE GUI for AMS Address" width="586" height="393" class="aligncenter size-full wp-image-784" /></a></li>
<li>Finally, if you need detailed logging, you can create the logging config file by the name of logging.properties given below and pass the <code>-Djava.util.logging.config.file=logging.properties</code> parameter when starting JADE. This will give much finer-grained logs. This is standard log4j syntax.
</li>
</ol>
<pre class="brush: plain; title: ; notranslate">
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level=INFO
jade.domain.mobility.level=ALL

# --- ConsoleHandler ---
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

# --- FileHandler ---
java.util.logging.FileHandler.level=ALL

java.util.logging.FileHandler.pattern=%h/java%u.log
java.util.logging.FileHandler.limit=50000
java.util.logging.FileHandler.count=1
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter 
</pre>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F12%2F29%2Fagent-mobility-with-jade-and-jipms%2F&amp;linkname=Agent%20Mobility%20with%20JADE%20and%20JIPMS" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F12%2F29%2Fagent-mobility-with-jade-and-jipms%2F&amp;linkname=Agent%20Mobility%20with%20JADE%20and%20JIPMS" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F12%2F29%2Fagent-mobility-with-jade-and-jipms%2F&amp;linkname=Agent%20Mobility%20with%20JADE%20and%20JIPMS" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F12%2F29%2Fagent-mobility-with-jade-and-jipms%2F&amp;linkname=Agent%20Mobility%20with%20JADE%20and%20JIPMS" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F12%2F29%2Fagent-mobility-with-jade-and-jipms%2F&amp;linkname=Agent%20Mobility%20with%20JADE%20and%20JIPMS" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F12%2F29%2Fagent-mobility-with-jade-and-jipms%2F&amp;title=Agent%20Mobility%20with%20JADE%20and%20JIPMS" id="wpa2a_10">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2011/12/29/agent-mobility-with-jade-and-jipms/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Creating UML Sequence Diagrams with TikZ in LaTeX</title>
		<link>http://www.csrdu.org/nauman/2011/11/24/creating-uml-sequence-diagrams-with-tikz-in-latex/</link>
		<comments>http://www.csrdu.org/nauman/2011/11/24/creating-uml-sequence-diagrams-with-tikz-in-latex/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 13:43:20 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Geek stuff]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=740</guid>
		<description><![CDATA[I&#8217;ve been working on my LaTeX skills for some time. The goal is to move towards an all-latex solution for writing research papers, slide sets and other documents. I&#8217;m almost there. An important goal was to be able to create all sorts of figures within LaTeX. (Well, originally, the goal was to use open source [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been working on my LaTeX skills for some time. The goal is to move towards an all-latex solution for writing research papers, slide sets and other documents. I&#8217;m almost there. An important goal was to be able to create all sorts of figures within LaTeX. (Well, originally, the goal was to use open source softwares to create them but it turns out that LaTeX is really good at this stuff.) The package that I&#8217;m using for graphics creation is TikZ. Here we&#8217;ll cover how we can create sequence diagrams using TikZ and a plugin package.</p>
<p>Here&#8217;s what we&#8217;re planning on creating.</p>
<div class="mceTemp mceIEcenter" style="text-align: center;">
<dl id="attachment_743" class="wp-caption aligncenter" style="width: 385px;">
<dt class="wp-caption-dt"><a href="http://www.csrdu.org/nauman/wp-content/uploads/2011/11/tikzseq.png"><img class="size-full wp-image-743 " title="Sequence Diagram using TikZ" src="http://www.csrdu.org/nauman/wp-content/uploads/2011/11/tikzseq.png" alt="" width="375" height="206" /></a></dt>
<dd class="wp-caption-dd">Sequence Diagram using TikZ (click to enlarge)</dd>
</dl>
</div>
<p>First, you need to get the <code>pgf-umlsd.sty</code> file from over <a href="http://code.google.com/p/pgf-umlsd/" target="_blank">here</a> and put it in a folder. Then, create your minimal working example (main document) using the following code.</p>
<pre class="brush: latex; title: ; notranslate">
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shadows}
\usepackage{pgf-umlsd}

\begin{document}

\begin{sequencediagram}
\newthread[white]{u}{User}
\newinst[3]{b}{Browser}
\newinst[3]{t}{TPM}
\newinst[3]{p}{TTP}

\begin{call}{u}{Init()}{b}{}
\end{call}

\begin{call}{u}{AIKAuthSecret}{b}{}

  \mess{b}{verifyAIKAuthSecret}{t}

  \begin{call}{b}{get AIK$_{pub}$}{t}{AIK$_{pub}$}
  \end{call}

\end{call}
  \begin{sdblock}{Loop}{}

    \begin{call}{u}{Do Something}{p}{AIK$_{pub}$}
    \end{call}
  \end{sdblock}
\end{sequencediagram}

\end{document}
</pre>
<p>As you can see, the pgf-umlsd package is really awesome. You first create a new thread using the syntax <code>\newthread[color]{variable}{ClassName}</code>. Then, you create instances using <code>\newinst[distance]{variable}{InstanceName}</code>. Afterwards, use <code>call</code> environment to specify calls. All you need to do is specify the caller, the message label, recipient and return label. Messages are similar and can be done through the <code>\mess</code> command. You can insert blocks using the <code>sdblock</code> environment. All it needs is a label and a description. A block will automatically surround everything within this environment. Oh, and calls can be nested.</p>
<p>If you&#8217;re like me and don&#8217;t like your object names underlined, you can pass the <code>[underline=false]</code> option to the <code>pgf-umlsd</code> package.</p>
<p>p.s. Your output may be a little bit different from mine because I modified the package file to suit my personal liking &#8212; just a bit though.</p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F24%2Fcreating-uml-sequence-diagrams-with-tikz-in-latex%2F&amp;linkname=Creating%20UML%20Sequence%20Diagrams%20with%20TikZ%20in%20LaTeX" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F24%2Fcreating-uml-sequence-diagrams-with-tikz-in-latex%2F&amp;linkname=Creating%20UML%20Sequence%20Diagrams%20with%20TikZ%20in%20LaTeX" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F24%2Fcreating-uml-sequence-diagrams-with-tikz-in-latex%2F&amp;linkname=Creating%20UML%20Sequence%20Diagrams%20with%20TikZ%20in%20LaTeX" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F24%2Fcreating-uml-sequence-diagrams-with-tikz-in-latex%2F&amp;linkname=Creating%20UML%20Sequence%20Diagrams%20with%20TikZ%20in%20LaTeX" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F24%2Fcreating-uml-sequence-diagrams-with-tikz-in-latex%2F&amp;linkname=Creating%20UML%20Sequence%20Diagrams%20with%20TikZ%20in%20LaTeX" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F24%2Fcreating-uml-sequence-diagrams-with-tikz-in-latex%2F&amp;title=Creating%20UML%20Sequence%20Diagrams%20with%20TikZ%20in%20LaTeX" id="wpa2a_12">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2011/11/24/creating-uml-sequence-diagrams-with-tikz-in-latex/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to Create a Beamer Template &#8212; A Newbie&#8217;s Tutorial</title>
		<link>http://www.csrdu.org/nauman/2011/11/12/how-to-create-a-beamer-template-a-newbies-tutorial/</link>
		<comments>http://www.csrdu.org/nauman/2011/11/12/how-to-create-a-beamer-template-a-newbies-tutorial/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 04:53:33 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=727</guid>
		<description><![CDATA[I started switching full-time to Ubuntu (once again) a couple of weeks ago. Turns out, it&#8217;s in much better condition than when I last tried it. Anyway, one of the problems was finding a replacement for Powerpoint. I hate creating presentations for classes &#8212; in fact, I think they&#8217;re counter-productive &#8212; but I have no [...]]]></description>
				<content:encoded><![CDATA[<p>I started switching full-time to Ubuntu (once again) a couple of weeks ago. Turns out, it&#8217;s in much better condition than when I <a href="http://www.csrdu.org/nauman/2010/08/24/quoth-ubuntu-nevermore/" title="Quoth Ubuntu, ‘Nevermore’" target="_blank">last tried it</a>. Anyway, one of the problems was finding a replacement for Powerpoint. I hate creating presentations for classes &#8212; in fact, I think they&#8217;re counter-productive &#8212; but I have no choice for the moment. So, I decided to give LibreOffice Impress a chance. That was an hour of my life down the drain. Finally, I returned to beamer. Of course, I had to write my own theme because I couldn&#8217;t use the same theme used by all the rest of the world. To cut this long and boring story short, I tried very hard to find a tutorial on writing beamer themes, couldn&#8217;t do so, learned it through experiment and decided to write the tutorial myself. Here is that tutorial. <span id="more-727"></span>  </p>
<p>This is a beamer newbie tutorial, not a LaTeX newbie tutorial. You should be somewhat comfortable with LaTeX before you can understand this stuff. Also, most of the &#8220;techniques&#8221; I use here will be frowned upon by LaTeX gurus and I know they&#8217;re not the &#8220;right&#8221; approaches but they get the job done and I will be refactoring this when I get time to adopt the best practices. This tutorial just aims to help you write your own themes in the hope that more and more beamer templates will be created and people will stop using the blue rounded-corner-box theme that beamer has become associated with. </p>
<p>Here&#8217;s the <a href="https://github.com/recluze/latex-templates/blob/beamer-tutorial/doc-prep-latex/slideset01.pdf?raw=true" target="_blank">final result</a> we&#8217;re trying to produce.  (This is the beamer-tutorial tag on my github project titled <a href="https://github.com/recluze/latex-templates" target="_blank">latex-templates</a>. Notice that the template in the github tree might have changed since the writing of this tutorial as I&#8217;m continually modifying the code to better suit my workflow. I created the beamer-tutorial tag specifically for this tutorial &#8212; as the name implies. All links in this tutorials are supposed to point to files in this tag.)   </p>
<p>Let&#8217;s begin. Firs, get the <a href="https://github.com/recluze/latex-templates/tags" target="_blank">tutorial files here</a>. Download the beamer-tutorial.zip and extract it. </p>
<p>The two important files are the following: </p>
<ol>
<li>The source file is in: doc-prep-latex/sources/slideset01.tex</li>
<li>Include file is in: includes/header-commands.tex </li>
</ol>
<p>There are three sections that you need to define to get a basic custom beamer template. </p>
<ol>
<li>Title page</li>
<li>Header and</li>
<li>Footer</li>
</ol>
<p><strong>Some Pre-requisites</strong> </p>
<p>First, we want to define some custom fields that will be used throughout our files. (I know this isn&#8217;t the proper method of defining custom fields but it&#8217;s the only one I&#8217;m comfortable with.) I will refer to github links but you can see the same thing in your downloaded files. In the <a href="https://github.com/recluze/latex-templates/blob/beamer-tutorial/doc-prep-latex/sources/slideset01.tex" target="_blank">slideset01.tex</a> file:</p>
<pre class="brush: latex; first-line: 12; title: ; notranslate">
\newcommand{\logoimagepath}{../../logos/fastlogo}
\newcommand{\highlightcolor}{DeepSkyBlue3}
\newcommand{\headbarcolor}{DeepSkyBlue4!25}
\newcommand{\authorname}{Nauman}
\newcommand{\authoremail}{recluze@gmail.com}
\newcommand{\authorweb}{http://csrdu.org/nauman}
\newcommand{\authoraffiliation}{FAST National University of Computer and Emerging Sciences (FAST-NU) \\ Peshawar Campus}
\institute{http://csrdu.org/nauman}
% --------------------------------------
\newcommand{\coursetitle}{Seminar Series on Introduction to Research}
\newcommand{\slidesettitle}{Document Preparation Using \LaTeX2$_\epsilon$}
\newcommand{\slidesetsubtitle}{}
\newcommand{\slidesetnumber}{01}
\usefonttheme{professionalfonts}
</pre>
<p><strong>Title Page </strong></p>
<p>Let&#8217;s begin by looking at how we&#8217;ve modified the title page. Notice, first that we&#8217;re including the header file just after the definitions above. </p>
<pre class="brush: latex; first-line: 28; title: ; notranslate">
\input{../../includes/header-commands}
</pre>
<p>This will ensure that we have the stuff included in this location. The way I&#8217;ve set this up, the title page will get created automatically and the body will start. The code for that can be seen in <a href="https://github.com/recluze/latex-templates/blob/beamer-tutorial/includes/header-commands.tex" target="_blank">includes/header-commands.tex</a>: </p>
<pre class="brush: latex; first-line: 101; title: ; notranslate">
\begin{document}
{\setbeamertemplate{footline}{}
\begin{frame}
\title{\slidesettitle}
%\subtitle{SUBTITLE}
\author{\footnotesize
\textbf{\authorname}\\ \authoremail \\ {\scriptsize \url{\authorweb}} \\\vspace{12pt}
{\scriptsize \authoraffiliation}\\\vspace{6pt}
{\tiny \textcolor{gray}{\insertdate}}
}
\date{
{\scriptsize \today}
}
\begin{flushright}\includegraphics[width=0.15\textwidth]{\logoimagepath}\end{flushright}
.
.
\begin{flushleft}
\vspace{-1.5cm}{\small \textcolor{\highlightcolor}{\coursetitle}}\\\vspace{2cm}
{\huge \slidesettitle \ifthenelse{\equal{\slidesetsubtitle}{}}%
    {}% if #1 is empty
    {: \\ {\large \slidesetsubtitle}}% if #1 is not empty
    } \\
    \vspace{20pt}
\insertauthor
\end{flushleft}
\end{frame}
}
% custom footer after the title
%\setbeamertemplate{navigation symbols}{\tiny \textcolor{gray}{\coursetitle\ [Slideset \slidesetnumber] - }\textcolor{black}{\insertframenumber\ / \inserttotalframenumber}}
\setbeamertemplate{navigation symbols}{}
</pre>
<p>A little explanation of what&#8217;s going on here. This should help you customize the theme depending on your needs. The line numbers in code below refer to the actual file. (Refer to the complete file for reference. We&#8217;ll be jumping around a bit.)  </p>
<p>Line 102 sets the footline (that&#8217;s the footer) to empty. This makes the page numbers etc disappear. </p>
<p>Line 103 begins the first frame (slide). </p>
<p>Lines 104-113 set the title and author etc. Pretty basic stuff. </p>
<p>Line 114 inserts the logo. See the pre-reqs section above to see where the logo image comes from. </p>
<p>Lines 117-127 typeset the title of the presentation, author etc. Again, it&#8217;s pretty straight-forward if you know a bit of LaTeX. The only complication might be the if statements. It&#8217;s basically saying that if we have a non-empty subtitle, put a colon after the title, insert a linebreak and put the subtitle, otherwise, skip the colon and the subtitle. </p>
<p>Line 130 hides the navigation symbols from this point onwards i.e. they won&#8217;t appear on slides other than the title. </p>
<p>We have another little fix that we need to do to finish off the title page and that is the definition of the header for it. </p>
<p><strong>Header for Slides</strong></p>
<p>So, we have two types of headers: (a) for the title page and (b) for subsequent pages. </p>
<p>The title header gets defined as: </p>
<pre class="brush: latex; first-line: 51; title: ; notranslate">
\setbeamertemplate{headline}{%
\setbeamercolor{head1}{bg=\headbarcolor}
\hbox{%
  \begin{beamercolorbox}[wd=.01\paperwidth,ht=2.25ex,dp=50ex,center]{head1}%
  \fontsize{5}{5}\selectfont
  
  \end{beamercolorbox}%
  }\vspace{-50ex}
}
</pre>
<p>We basically redefine the headline template to be a a box! It&#8217;s a thin, tall box that just sits on the left edge. It&#8217;s created using the beamercolorbox environment with 50ex height, 2.25ex width and the color headbarcolor (Line 54). It has no text (Line 56). Finally, we add a -50ex vertical space so that the text that follows will not get displaced because of this box. (Try getting rid of this line to see where the title goes.)</p>
<p>The second headline we need to define is for subsequent pages.</p>
<pre class="brush: latex; first-line: 134; title: ; notranslate">
\setbeamertemplate{headline}{%
\setbeamercolor{head1}{bg=\headbarcolor}
\hbox{%
  \begin{beamercolorbox}[wd=.01\paperwidth,ht=2.25ex,dp=10ex,center]{head1}%
  \fontsize{5}{5}\selectfont
  
  \end{beamercolorbox}%
  }\vspace{-10ex}
}

% greater line spacing for new slides
\linespread{1.2} 
</pre>
<p>This very similar to the first headline. The only difference is that the box is much shorter (10ex). Same trick with the negative vertical space. Notice that we have not actually inserted the frame title. Beamer will take care of that automatically for us. We&#8217;re just redefining the headline. </p>
<p>We&#8217;re also increasing the line spacing for our subsequent slides (Line 145).  </p>
<p>Finally, let&#8217;s get to the footer. </p>
<p><strong>Footer</strong></p>
<p>The footer is going to be defined using the same technique of placing boxes with some information in them this time. </p>
<pre class="brush: latex; first-line: 60; title: ; notranslate">
\setbeamertemplate{footline}{
\begin{tiny}
\setbeamercolor{foot1}{fg=black!70,bg=gray!10}
\setbeamercolor{foot2}{fg=gray,bg=gray!15}
\setbeamercolor{foot3}{fg=gray,bg=gray!10}
\setbeamercolor{foot4}{fg=black!70,bg=gray!20}
\setbeamercolor{foot5}{fg=gray,bg=gray!15}
\setbeamercolor{foot6}{fg=black,bg=gray!20}

% taken from theme infolines and adapted
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.35\paperwidth,ht=2.25ex,dp=1ex,center]{foot1}%
  \fontsize{5}{5}\selectfont
  \slidesettitle
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.1\paperwidth,ht=2.25ex,dp=1ex,center]{foot2}
  \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.05\paperwidth,ht=2.25ex,dp=1ex,center]{foot3}
  \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.25\paperwidth,ht=2.25ex,dp=1ex,center]{foot4}%
  \fontsize{5}{5}\selectfont
  \insertshortauthor\ (\authorweb)
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.05\paperwidth,ht=2.25ex,dp=1ex,center]{foot5}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.25ex,dp=1ex,right]{foot6}%
\insertframenumber{} / \inserttotalframenumber \hspace*{2ex}
  \end{beamercolorbox}}%
  \vskip0pt%
\end{tiny}
\vskip10pt
}
</pre>
<p>Lines 62-67 define some colors &#8212; basically shades of gray. </p>
<p>Linex 71-88 insert some boxes. Most of them are empty and there for design. We do, however, put the slidesettitle with a small fontsize in the first box (Lines 73-74) and the author&#8217;s web address in another box (Lines 81-82). We also put the page numbers in the last box (Line 87). If you can get over all the boxes, this is not that complicated. </p>
<p>Finally, we put a vspace (Line 91) at the end to separate the footer from the lower edge of our slide.  </p>
<p><strong>Some Comments</strong><br />
Our slides file now works on this theme and every LaTeX command will work as usual. Maybe I should&#8217;ve done some renewcommand&#8217;s to get a .sty file but that will have to wait for another day. If someone reading this tutorial can help out with that, fork the project on github, make the changes and send me a pull request. </p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F12%2Fhow-to-create-a-beamer-template-a-newbies-tutorial%2F&amp;linkname=How%20to%20Create%20a%20Beamer%20Template%20%26%238212%3B%20A%20Newbie%26%238217%3Bs%20Tutorial" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F12%2Fhow-to-create-a-beamer-template-a-newbies-tutorial%2F&amp;linkname=How%20to%20Create%20a%20Beamer%20Template%20%26%238212%3B%20A%20Newbie%26%238217%3Bs%20Tutorial" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F12%2Fhow-to-create-a-beamer-template-a-newbies-tutorial%2F&amp;linkname=How%20to%20Create%20a%20Beamer%20Template%20%26%238212%3B%20A%20Newbie%26%238217%3Bs%20Tutorial" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F12%2Fhow-to-create-a-beamer-template-a-newbies-tutorial%2F&amp;linkname=How%20to%20Create%20a%20Beamer%20Template%20%26%238212%3B%20A%20Newbie%26%238217%3Bs%20Tutorial" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F12%2Fhow-to-create-a-beamer-template-a-newbies-tutorial%2F&amp;linkname=How%20to%20Create%20a%20Beamer%20Template%20%26%238212%3B%20A%20Newbie%26%238217%3Bs%20Tutorial" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F11%2F12%2Fhow-to-create-a-beamer-template-a-newbies-tutorial%2F&amp;title=How%20to%20Create%20a%20Beamer%20Template%20%26%238212%3B%20A%20Newbie%26%238217%3Bs%20Tutorial" id="wpa2a_14">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2011/11/12/how-to-create-a-beamer-template-a-newbies-tutorial/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>LaTeX Screencasts</title>
		<link>http://www.csrdu.org/nauman/2011/10/16/latex-screencasts/</link>
		<comments>http://www.csrdu.org/nauman/2011/10/16/latex-screencasts/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 09:05:13 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Geek stuff]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=715</guid>
		<description><![CDATA[I&#8217;ve started putting together a couple of screencasts for those who want to start working with LaTeX. These are aimed at the extreme newbie who wants to learn the basics and get up to speed with the typesetting tool. I&#8217;ll be updating this post as I put more videos online inshallah. For now, see the [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve started putting together a couple of screencasts for those who want to start working with LaTeX. These are aimed at the extreme newbie who wants to learn the basics and get up to speed with the typesetting tool. I&#8217;ll be updating this post as I put more videos online inshallah. For now, see the videos below or on Youtube. For best results, view in HD at full screen.</p>
<p><strong>Part I: Introduction</strong></p>
<p><iframe src="http://www.youtube-nocookie.com/embed/ZKhcXau2YYI?hd=1" frameborder="0" width="640" height="360"></iframe></p>
<p><strong>Part II: Creating your first document</strong><br />
Download the files mentioned in the video from here: <a href="http://csrdu.org/pub/nauman/files/latex-videos/latex-seminar-files-demo-1.zip">latex-seminar-files-demo-1.zip</a></p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/P0eH2CTfLFM?hd=1" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Part III: Bibliographies, Class Files for Conference Styles</strong><br />
Download the files mentioned in the video from here: <a href="http://csrdu.org/pub/nauman/files/latex-videos/latex-seminar-files-demo-2.zip">latex-seminar-files-demo-2.zip</a></p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/yy8gQBDaY3U?hd=1" frameborder="0" allowfullscreen></iframe></p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F10%2F16%2Flatex-screencasts%2F&amp;linkname=LaTeX%20Screencasts" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F10%2F16%2Flatex-screencasts%2F&amp;linkname=LaTeX%20Screencasts" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F10%2F16%2Flatex-screencasts%2F&amp;linkname=LaTeX%20Screencasts" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F10%2F16%2Flatex-screencasts%2F&amp;linkname=LaTeX%20Screencasts" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F10%2F16%2Flatex-screencasts%2F&amp;linkname=LaTeX%20Screencasts" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F10%2F16%2Flatex-screencasts%2F&amp;title=LaTeX%20Screencasts" id="wpa2a_16">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2011/10/16/latex-screencasts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>F11, CS314 Lab Interim Results</title>
		<link>http://www.csrdu.org/nauman/2011/09/23/f11-cs314-lab-interim-results/</link>
		<comments>http://www.csrdu.org/nauman/2011/09/23/f11-cs314-lab-interim-results/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 06:33:02 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=707</guid>
		<description><![CDATA[Below you can find the individual scores for assignments and quizzes set in CS314 Computer Networks Lab for Fall 2011. Note that the course instructor will decide at the end of the semester how these get incorporated in the final assessment.]]></description>
				<content:encoded><![CDATA[<p>Below you can find the individual scores for assignments and quizzes set in CS314 Computer Networks Lab for Fall 2011. Note that the course instructor will decide at the end of the semester how these get incorporated in the final assessment. </p>
<p><iframe width='800' height='600' frameborder='0' src='https://docs.google.com/spreadsheet/pub?hl=en_US&#038;hl=en_US&#038;key=0At2k2naHPl_qdGpJNnFtNS11cHhsQXE2MlUtYzA0Qmc&#038;single=true&#038;gid=0&#038;output=html&#038;widget=true'></iframe></p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F23%2Ff11-cs314-lab-interim-results%2F&amp;linkname=F11%2C%20CS314%20Lab%20Interim%20Results" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F23%2Ff11-cs314-lab-interim-results%2F&amp;linkname=F11%2C%20CS314%20Lab%20Interim%20Results" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F23%2Ff11-cs314-lab-interim-results%2F&amp;linkname=F11%2C%20CS314%20Lab%20Interim%20Results" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F23%2Ff11-cs314-lab-interim-results%2F&amp;linkname=F11%2C%20CS314%20Lab%20Interim%20Results" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F23%2Ff11-cs314-lab-interim-results%2F&amp;linkname=F11%2C%20CS314%20Lab%20Interim%20Results" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F23%2Ff11-cs314-lab-interim-results%2F&amp;title=F11%2C%20CS314%20Lab%20Interim%20Results" id="wpa2a_18">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2011/09/23/f11-cs314-lab-interim-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CS 303 Software Engineering (NU) Administrivia</title>
		<link>http://www.csrdu.org/nauman/2011/09/05/cs-303-software-engineering-nu-administrivia/</link>
		<comments>http://www.csrdu.org/nauman/2011/09/05/cs-303-software-engineering-nu-administrivia/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 04:42:43 +0000</pubDate>
		<dc:creator>recluze</dc:creator>
				<category><![CDATA[resources]]></category>
		<category><![CDATA[Students]]></category>

		<guid isPermaLink="false">http://www.csrdu.org/nauman/?p=675</guid>
		<description><![CDATA[Update Sep 08, 2011: Lectures are now available on the Lecture Server. Please get the updates there. This is a (hopefully) temporary location for posting the contents that I want communicated to the students of CS303 Software Engineering course. These will be posted to the lecturer server as soon as I get access inshaallah. For [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Update Sep 08, 2011:</strong> Lectures are now available on the Lecture Server. Please get the updates there.</p>
<p>This is a (hopefully) temporary location for posting the contents that I want communicated to the students of CS303 Software Engineering course. These will be posted to the lecturer server as soon as I get access inshaallah. For the time being, bookmark this page and keep checking for updates.</p>
<p><a href="http://www.csrdu.org/nauman/wp-content/uploads/2011/09/CS303-Course-Outline-Fall-2011.doc">CS303- Course Outline &#8211; Fall 2011</a><br />
<a href="http://www.csrdu.org/nauman/wp-content/uploads/2011/09/Slideset-01.pptx">Slideset-01</a><br />
<a href="http://www.csrdu.org/nauman/wp-content/uploads/2011/09/Slideset-02.pptx">Slideset-02</a></p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F05%2Fcs-303-software-engineering-nu-administrivia%2F&amp;linkname=CS%20303%20Software%20Engineering%20%28NU%29%20Administrivia" title="Digg" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F05%2Fcs-303-software-engineering-nu-administrivia%2F&amp;linkname=CS%20303%20Software%20Engineering%20%28NU%29%20Administrivia" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F05%2Fcs-303-software-engineering-nu-administrivia%2F&amp;linkname=CS%20303%20Software%20Engineering%20%28NU%29%20Administrivia" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F05%2Fcs-303-software-engineering-nu-administrivia%2F&amp;linkname=CS%20303%20Software%20Engineering%20%28NU%29%20Administrivia" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F05%2Fcs-303-software-engineering-nu-administrivia%2F&amp;linkname=CS%20303%20Software%20Engineering%20%28NU%29%20Administrivia" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.csrdu.org/nauman/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.csrdu.org%2Fnauman%2F2011%2F09%2F05%2Fcs-303-software-engineering-nu-administrivia%2F&amp;title=CS%20303%20Software%20Engineering%20%28NU%29%20Administrivia" id="wpa2a_20">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.csrdu.org/nauman/2011/09/05/cs-303-software-engineering-nu-administrivia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
