<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Yousef Ourabi</title>
	
	<link>http://yousefourabi.com/blog</link>
	<description />
	<pubDate>Wed, 19 Nov 2008 07:15:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/YousefOurabi" type="application/rss+xml" /><item>
		<title>The origin of CloudFronts competitive advantage</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/458075220/the-origin-of-cloudfronts-competitive-advantage</link>
		<comments>http://yousefourabi.com/blog/virtualization/the-origin-of-cloudfronts-competitive-advantage#comments</comments>
		<pubDate>Wed, 19 Nov 2008 07:08:53 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/blog/?p=183</guid>
		<description><![CDATA[Sorry for the word play, but I&#8217;m about to drop some nerd up in here. There is some FUD being spread by people who either don&#8217;t understand the real advantages of Amazons cloudfront, or have a vested interest in spreading fear. One conversation that caught my attention for was in the comments section of an [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry for the word play, but I&#8217;m about to drop some nerd up in here. There is some FUD being spread by people who either don&#8217;t understand the real advantages of Amazons cloudfront, or have a vested interest in spreading fear. One conversation that caught my attention for was in the comments section of an article published on GigaOM: <a title="Amazons CloudFront could storm fival CDNs" href="http://gigaom.com/2008/11/18/amazons-cloudfront-could-storm-rival-cdns/">Amazons cloudfront could strom rival CDNS</a></p>
<p>The two real competitive advantages I see are the pricing points (lack of contract, quick setup) and more technically that it eliminates the need of an origin server.</p>
<p>That last point is key &#8212; you&#8217;ll hear things like: &#8220;Cloud front doesn&#8217;t have the ability to pull from an origin server, there for it is a big joke that can&#8217;t compete with Akamai, LimeLight&#8230;etc&#8221;.</p>
<p>This is bogus.</p>
<p>In most typical CDN setups that I know there is what is called an &#8216;origin&#8217; server, the server where you continually host the content you want pushed out to the delivery network. As requests come in for specific assets most CDN providers will &#8216;pull&#8217; the content off of your server by convention (specific URI/path) and publish to their cloud.</p>
<p>The problem with this setup?</p>
<p>It&#8217;s so not cloud.</p>
<p>You are forced to maintain a perpetually running server, with enough storage for all the assets, which sits there slurping up space, electric and maintenance (admin) fees</p>
<p>Since CloudFront is built on the S3 storage service &#8212; S3 is in essence the origin server. In fact CloudFront is merely an S3 bucket that has been blessed into a &#8216;distribution&#8217; via a simple RESTful API call&#8230;</p>
<p>That&#8217;s the origin of cloudfronts competitive advantage.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/458075220" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/virtualization/the-origin-of-cloudfronts-competitive-advantage/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/virtualization/the-origin-of-cloudfronts-competitive-advantage</feedburner:origLink></item>
		<item>
		<title>Amazon CloudFront via SVN or GIT hook</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/456908274/amazon-cloudfront-via-svn-or-git-hook</link>
		<comments>http://yousefourabi.com/blog/virtualization/amazon-cloudfront-via-svn-or-git-hook#comments</comments>
		<pubDate>Tue, 18 Nov 2008 07:42:10 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/blog/?p=182</guid>
		<description><![CDATA[So the big news of the night is that Amazon has released &#8216;CloudFront&#8217; their S3 based CDN that competes really agressivly with exisitng players (Akamai&#8230;etc)
Having worked with&#8230; less enlightened solutions&#8230; I&#8217;m thinking the ultimate CloudFront deployment scenario would be via an SVN or GIT hook. If you commit an asset to /static/css or /static/css a [...]]]></description>
			<content:encoded><![CDATA[<p>So the big news of the night is that Amazon has released &#8216;CloudFront&#8217; their S3 based CDN that competes really agressivly with exisitng players (Akamai&#8230;etc)</p>
<p>Having worked with&#8230; less enlightened solutions&#8230; I&#8217;m thinking the ultimate CloudFront deployment scenario would be via an SVN or GIT hook. If you commit an asset to /static/css or /static/css a post-commit hook would automatically publish to CloudFront.</p>
<p>If I have time I&#8217;ll take a look at implementing something quick and dirty tomorrow.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/456908274" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/virtualization/amazon-cloudfront-via-svn-or-git-hook/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/virtualization/amazon-cloudfront-via-svn-or-git-hook</feedburner:origLink></item>
		<item>
		<title>DjangoCon: Schema Evolution Panel</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610838/djangocon-schema-evolution-panel</link>
		<comments>http://yousefourabi.com/blog/programming/djangocon-schema-evolution-panel#comments</comments>
		<pubDate>Mon, 08 Sep 2008 00:05:20 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=180</guid>
		<description><![CDATA[The Schema Migration panel by: Simon Willison, Russ Keith-Magee, Andrew Godwin, and  moderated by Michael Trier was an interesting sampling of the various methods used in schema migration.
Simon Wilson presented dmigrations . Installing dmigrations is as simple as installing it in INSTALLED_APPS, and it will registers a few custom admin commands:
./manage.py dmigrate app APP_NAME
./manage.py dmigrate [...]]]></description>
			<content:encoded><![CDATA[<p>The Schema Migration panel by: Simon Willison, Russ Keith-Magee, Andrew Godwin, and  moderated by Michael Trier was an interesting sampling of the various methods used in schema migration.</p>
<p>Simon Wilson presented <a title="dmigrations" href="http://simonwillison.net/2008/Sep/3/dmigrations/">dmigrations</a> . Installing dmigrations is as simple as installing it in INSTALLED_APPS, and it will registers a few custom admin commands:</p>
<p>./manage.py dmigrate app APP_NAME</p>
<p>./manage.py dmigrate list</p>
<p>./manage.py dmigrate addcolum</p>
<p>My take: dmigrations is great and will work for migration problems right now, but in its current form is unlikely to end up in django as the annointed migration solution. Why? Because it basically wraps SQL directly, loosing some of the cross-database portability of the Django DB.</p>
<p>Andrew Godwin: <a title="south migrations" href="http://south.aeracode.org/">South</a> &#8212; described as the next step of dmigrations. Philosophy: Migrations are essential, branched development / missing migrations, inter-app dependencies, database abstraction needed too. Can handle model dependency (foreign keys.)</p>
<p>My Take: worth looking into, more database indapenent.</p>
<p>Russel Keith-Magee: <a href="http://code.google.com/p/django-evolution/">Django-evolution</a>, his response to a mailing list thread that would not end. Google Summer of code 2006. Russel complaining of Magic moniker attached to django-evolution, everything done via introspection of models. Goals: Hint and Tweak, Simple changes without user intervention, easy entre for customization, raw sql, self documenting, self auditings, Validation (where possible).</p>
<p>Signature: pickled summary of django model. Stores state of django models at syncdb, can be diffed against current models, diffs used to generate hints.</p>
<p>Mutation: Atomic unit of change, common operations built in. Can be user-defined, can be raw sql, know the effect they will have.</p>
<p>Evolution: Ordered collection of mutations. Two flavors of mutations: hinted and stored. Executed evolutions stored in database.</p>
<p>Hinted Evolution: Best guess by looking at diff, if acceptable can be used to execute evolution right away. Can also be used as prototype to stored evolution. Can&#8217;t resolve ambiguous updates (rename) can&#8217;t fill in the blanks (initial data)</p>
<p>Stored Evolution:<br />
Named sequence of mutations. Defined per application, stored in evolutions directory of app (can be put into version control).</p>
<p>django-evolution extends syncdb &#8212; as in ./mange.py syncdb &#8212; schema change detected you need an evolutions.</p>
<p>Custom commands:</p>
<p>./manage.py evolve &#8211;hint</p>
<p>./manage.py evolve</p>
<p>My Take: Highly interesting, most likely to end up in django. Grok this.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610838" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/djangocon-schema-evolution-panel/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/djangocon-schema-evolution-panel</feedburner:origLink></item>
		<item>
		<title>DjangoCon: Django Code Design and Writing Patches</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610839/djangocon-django-code-design-and-writing-patches</link>
		<comments>http://yousefourabi.com/blog/programming/djangocon-django-code-design-and-writing-patches#comments</comments>
		<pubDate>Sun, 07 Sep 2008 22:00:03 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=179</guid>
		<description><![CDATA[A follow up to the &#8220;Inside the Django ORM&#8221; speak, Malcolm Tredinnick gave his second talk Sunday on Django Code design and patch writing (Aka Code Quality, Patch Quality).
After reading around 6000 bug tickets, certain patterns have emerged in the submitted patches&#8230;
Code Quality Matters &#8212; funny quote from Leah Culver: &#8220;Have you every written a [...]]]></description>
			<content:encoded><![CDATA[<p>A follow up to the &#8220;<a href="http://yousefourabi.com/programming/djangocon-inside-the-orm">Inside the Django ORM</a>&#8221; speak, Malcolm Tredinnick gave his second talk Sunday on Django Code design and patch writing (Aka Code Quality, Patch Quality).</p>
<p>After reading around 6000 bug tickets, certain patterns have emerged in the submitted patches&#8230;</p>
<p>Code Quality Matters &#8212; funny quote from Leah Culver: &#8220;Have you every written a library? It&#8217;s like people seeing you in your underwear. You gotta make sure it&#8217;s clean.&#8221;</p>
<p>Do the basics properly. The word &#8220;print&#8221; is in your patch. Similarly for &#8220;import pdb&#8221;. If you think <a href="http://www.python.org/dev/peps/pep-0008/">PEP 8</a> is the name of a new energy drink. Run the django testsuite. Submit patches, and not entire files. Start from top of tree when using svn diff.</p>
<p>Read the contributing document (<a href="http://code.djangoproject.com/browser/django/trunk/docs/internals/contributing.txt">contributing.txt</a>), use sensibly names, comments should last, comments should be correct.</p>
<p>Fix problems, not symptoms. The crowd is smarter than you think &#8212; the code mostly works. If you find yourself ripping out lots of code, stop and think.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610839" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/djangocon-django-code-design-and-writing-patches/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/djangocon-django-code-design-and-writing-patches</feedburner:origLink></item>
		<item>
		<title>DjangoCon: Inside the ORM</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610840/djangocon-inside-the-orm</link>
		<comments>http://yousefourabi.com/blog/programming/djangocon-inside-the-orm#comments</comments>
		<pubDate>Sat, 06 Sep 2008 22:10:18 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=178</guid>
		<description><![CDATA[Malcom Tredinnick gave an awesome presentation about the Django ORM.
The code for the ORM is located in django/db with juicy bits in the following locations:
django/db/models/query.py (public queryset API)
django/db/models/sql/* (Public API-&#62;SQL conversion. Deep dark internals. Does&#8217;t know DB, knows SQL)
django/db/backends/* (Individual DB wrappers, third-party wrappers possible. This is where you actually talk to the DB). See [...]]]></description>
			<content:encoded><![CDATA[<p>Malcom Tredinnick gave an awesome presentation about the Django ORM.</p>
<p>The code for the ORM is located in django/db with juicy bits in the following locations:</p>
<p>django/db/models/query.py (public queryset API)</p>
<p>django/db/models/sql/* (Public API-&gt;SQL conversion. Deep dark internals. Does&#8217;t know DB, knows SQL)</p>
<p>django/db/backends/* (Individual DB wrappers, third-party wrappers possible. This is where you actually talk to the DB). See (dummy or mysql dir for examples)</p>
<p>The different pieces in depth</p>
<p>Blog.objects.filter(owner=user) = [model, manage, QuerySet method]</p>
<p>Model Manages:</p>
<p>inherit from django.db.models.Manager, ideal for extra methods that act on the whole table at once, not just one record, usually wraps/proxies public querySet methos, has method called get_query_set() which returns QuerySet (QuerySet.all)</p>
<p>QuerySets:</p>
<p>django.db.models.query.QuerySet</p>
<p>Every time you call a method on a QuerySet it returns a copy (clone) of that QuerySet (side effect free?) For example every time you call filter on a query set you get a different queryset.</p>
<p>Query</p>
<p>django.db.models.sql.query.Query, an attribute of QuerySet, holds the internal state of the current query, knows how to produce SQL. This is where you implement something that knows how to speak to MySQL, or CouchDB or Hadoop for example. (Aka class from Hell, almost every data-structure known to man used here). AsSQL is when state is rewritten into SQL. This is a change from before QuerySet Refactor landed in trunk where the internal representation for everything was strings.</p>
<p>Every method of QuerySet updates the Query (calls method on Query).</p>
<p>Query.results_iter() is how the results end up from the DB back into Python objects, reconstructing Python objects happens in various other Query methods: Query.select_related, Query.extra_select&#8230;etc</p>
<p>Looking inside the Query. Query.add_filter() is the guts &#8212; the place to start when trying to grok the Query class. Query.setup_joins() converts filter/exclude into table joins. Query.join() responsible for joining a pair of tables</p>
<p>Recap on flow/organization: Manager-&gt;QuerySet-&gt;Query</p>
<p>Customization:</p>
<p>Custom Managers (Easy)</p>
<p>Custom QuerySet (Not so Easy)</p>
<p>&#8211;&gt; (Some example QuerySet) ValuesQuerySet, DateQuerySet, EmptyQuerySet</p>
<p>Custom Query (Not so Easy)</p>
<p>GeoDjango for example has to use very different types of query.</p>
<p>Note to self: I&#8217;m wondering how(or even IF)  one would  use Django&#8217;s ORM for a Solr-backend for intergrated search via a DJango ORM model.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610840" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/djangocon-inside-the-orm/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/djangocon-inside-the-orm</feedburner:origLink></item>
		<item>
		<title>DjangoCon: ReviewBoard</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610841/djangocon-reviewboard</link>
		<comments>http://yousefourabi.com/blog/programming/djangocon-reviewboard#comments</comments>
		<pubDate>Sat, 06 Sep 2008 20:47:21 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=177</guid>
		<description><![CDATA[Presented by: Christian Hammon, David Trowbridge
Review-Board is a python/django based code-review application. In 2004 VMware was approx. 600 employee&#8217;s and already had a rigorous code-review process in place. At first simple HTML snippets were emailed around. Fast forward to 2007 and the company had grown to 5000 employee&#8217;s, and the previous system of email around [...]]]></description>
			<content:encoded><![CDATA[<p>Presented by: Christian Hammon, David Trowbridge</p>
<p><a href="http://www.review-board.org/">Review-Board</a> is a python/django based code-review application. In 2004 VMware was approx. 600 employee&#8217;s and already had a rigorous code-review process in place. At first simple HTML snippets were emailed around. Fast forward to 2007 and the company had grown to 5000 employee&#8217;s, and the previous system of email around snippets was unmanageable.</p>
<p>And thus <a href="http://www.review-board.org/">Review-Board </a>was born.</p>
<p>Earlier in the day Guido mentioned that he wrote a similar, python based code review tool that is used internally at google. I&#8217;ll try to dig that up and make a follow up post.</p>
<p>Stats: 2 core developers, 74 contributors, 295 mailing list members.</p>
<p>I&#8217;ll be installing this on my own dev box &#8212; In the future expect a post or two about how it intergrates with other tools I like (git/svn, trac&#8230;etc)</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610841" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/djangocon-reviewboard/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/djangocon-reviewboard</feedburner:origLink></item>
		<item>
		<title>DjangoCon 2008</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610842/djangocon-2008</link>
		<comments>http://yousefourabi.com/blog/programming/djangocon-2008#comments</comments>
		<pubDate>Sat, 06 Sep 2008 20:37:40 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=176</guid>
		<description><![CDATA[I&#8217;ve been really, really inactive in posting. That is going to change. I&#8217;m currently at DjangoCon 2008, and will be posting a few things about some cool new things I&#8217;m learning about.
More soon.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been really, really inactive in posting. That is going to change. I&#8217;m currently at DjangoCon 2008, and will be posting a few things about some cool new things I&#8217;m learning about.<br />
More soon.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610842" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/djangocon-2008/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/djangocon-2008</feedburner:origLink></item>
		<item>
		<title>Amazon EBS SAN for the cloud</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610843/amazon-ebs-san-for-the-cloud</link>
		<comments>http://yousefourabi.com/blog/cloud-computing/amazon-ebs-san-for-the-cloud#comments</comments>
		<pubDate>Thu, 21 Aug 2008 14:20:25 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Cloud Computing]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=174</guid>
		<description><![CDATA[Amazon has just released their latest addition to the cloud offerings: EBS or &#8220;Elastic Block Store&#8221;. The pricing looks very reasonable at 10 cents per Gigabyte, and 10 cents for every millionth I/O operation. It also comes with some juicy features like the ability to create a snapshot to S3 at any point in time, [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon has just released their latest addition to the cloud offerings: EBS or &#8220;Elastic Block Store&#8221;. The pricing looks very reasonable at 10 cents per Gigabyte, and 10 cents for every millionth I/O operation. It also comes with some juicy features like the ability to create a snapshot to S3 at any point in time, and then create another EBS volume from that snapshot.</p>
<p>The SAN like storage mounts are (only) available in a given &#8220;Availability Zone&#8221;. Nothing specific is mentioned about distributed file systems like GFS, so that is something I&#8217;ll be looking into ASAP. Like a regular volume you can create several EBS volumes and do your own software raid on top of that.</p>
<p>There are also some interesting scenarios around the snapshot facility such as having one &#8220;master&#8221; EBS volume in the designated &#8220;write&#8221; availability and replicating out to several &#8220;slave&#8221; availability zones in geographically disparate regions.</p>
<p>Performance seems inline with high end RAID arrays:</p>
<p>To recap:</p>
<p>Price: $0.1 per GB<br />
Performance:<br />
Features: Reliability, Snapshots, Traditional Posix filesystem</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610843" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/cloud-computing/amazon-ebs-san-for-the-cloud/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/cloud-computing/amazon-ebs-san-for-the-cloud</feedburner:origLink></item>
		<item>
		<title>Django 1 Alpha 2 released</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610844/django-1-alpha-2-released</link>
		<comments>http://yousefourabi.com/blog/programming/django-1-alpha-2-released#comments</comments>
		<pubDate>Sat, 09 Aug 2008 04:14:32 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=175</guid>
		<description><![CDATA[The Django foundation has pushed out the second alpha release of Django 1.0 , see the blog post here
Earlier in the week I received &#8220;Practical Django Projects&#8221; in the mail &#8212; chomping at the bit for enough time to get into it.
Exciting times. 
I wonder if there isn&#8217;t some room in the Django ORM back-end [...]]]></description>
			<content:encoded><![CDATA[<p>The Django foundation has pushed out the second alpha release of Django 1.0 , see the <a href="http://www.djangoproject.com/weblog/2008/aug/08/10-alpha-2/">blog post here</a></p>
<p>Earlier in the week I received &#8220;<a href="http://www.amazon.com/Practical-Django-Projects-Pratical/dp/1590599969">Practical Django Projects</a>&#8221; in the mail &#8212; chomping at the bit for enough time to get into it.</p>
<p>Exciting times. </p>
<p>I wonder if there isn&#8217;t some room in the Django ORM back-end to support stuff like S3 and Google App Engine &#8212; with some warnings of course that the store isn&#8217;t relational&#8230; etc</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610844" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/django-1-alpha-2-released/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/django-1-alpha-2-released</feedburner:origLink></item>
		<item>
		<title>LinkedIn redirecting?</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610845/linkedin-redirecting</link>
		<comments>http://yousefourabi.com/blog/startups/linkedin-redirecting#comments</comments>
		<pubDate>Thu, 07 Aug 2008 01:50:23 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=172</guid>
		<description><![CDATA[Has anyone else noticed that LinkedIn is redirecting to some video commenting startup? I did an nslookup on linkedin.com which resolves to 70.42.142.23 &#8212; I ran host 70.42.142.23 which resolved to redirect.linkedin.com
The page &#8220;Intense Debate&#8221; seems to be about some sort of video blogging system. See screenshot:
What is going on?

Update: redirect is no longer happening [...]]]></description>
			<content:encoded><![CDATA[<p>Has anyone else noticed that LinkedIn is redirecting to some video commenting startup? I did an nslookup on linkedin.com which resolves to 70.42.142.23 &#8212; I ran host 70.42.142.23 which resolved to redirect.linkedin.com</p>
<p>The page &#8220;Intense Debate&#8221; seems to be about some sort of video blogging system. See screenshot:<br />
What is going on?</p>
<p><a href="../wp-content/uploads/2008/08/linkedin-redirect.png" mce_href="http://yousefourabi.com/wp-content/uploads/2008/08/linkedin-redirect.png"><img src="../wp-content/uploads/2008/08/linkedin-redirect-300x193.png" mce_src="http://yousefourabi.com/wp-content/uploads/2008/08/linkedin-redirect-300x193.png" alt="linkined in redirect to intense debate" title="linkedin-redirect" class="alignnone size-medium wp-image-173" height="193" width="300"></a></p>
<p>Update: redirect is no longer happening as of 7:06 pm PST.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610845" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/startups/linkedin-redirecting/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/startups/linkedin-redirecting</feedburner:origLink></item>
		<item>
		<title>why -1 evaluates true</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610846/why-1-evaluates-true</link>
		<comments>http://yousefourabi.com/blog/programming/why-1-evaluates-true#comments</comments>
		<pubDate>Fri, 01 Aug 2008 05:35:03 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=171</guid>
		<description><![CDATA[Languages that do not have native boolean data-types that let you branch on non-boolean data types evaluate all non zero values as &#8220;truthy&#8221;,  (-1) evaluates to true. You might be wondering, as I did, why that is?  The short version: it is a compiler optimization.
At first I thought it was a perl specific choice, [...]]]></description>
			<content:encoded><![CDATA[<p>Languages <del datetime="2008-08-01T06:03:46+00:00">that do not have native boolean data-types </del>that let you branch on non-boolean data types evaluate all non zero values as &#8220;truthy&#8221;,  (-1) evaluates to true. You might be wondering, as I did, why that is?  The short version: it is a compiler optimization.</p>
<p>At first I thought it was a perl specific choice, but a few quick tests with C and Python confirmed this was not the case.</p>
<p>It seemed like an odd design choice given that truthiness in this (programming) context is quasi-inspired after the presence of current in a given transistor. So why wouldn&#8217;t you want negative integers to be false?</p>
<p>Then I started thinking that it was either an optimization issue &#8212; so I started looking at the x86 assembly generated by GCC for my C example (see below). I used the -S flag to gcc to save the assembly so gcc -S test.c created the test.s (assembly). A quick glance revleaed that this was indeed the case, particularly the following three lines:</p>
<pre>  movl  $-1, -4(%rbp)
  cmpl  $0, -4(%rbp)
  je  .L2
</pre>
<p>movl moves the value of X (-1) to the appropriate place (this is int x = -1) then the actual comparison happens with the cmpl operator which compares that value to zero. If those to values are equal (0 and X) the je executes (jump-if-equal) and executes that branch.</p>
<p>Now the next question, for another day, why is gcc assembly ifs to JE and JLE &#8212; which would return false for anything less than 1 for example.</p>
<p>My guess is because it&#8217;s more expensive. But more to come on that subject.</p>
<p>perl:</p>
<pre>#!/usr/bin/env perl
if (-1) {
  print STDERR "I am true \n";
}
</pre>
<p>python:</p>
<pre>#!/usr/bin/env python
num = -1
if (num):
  print "I am true"
</pre>
<p>C:</p>
<pre>#include  

int main (void) {
  int x = -1;
  if (x) {
    printf("I am true");
  } else {
    printf("not true");
  }
}
</pre>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610846" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/why-1-evaluates-true/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/why-1-evaluates-true</feedburner:origLink></item>
		<item>
		<title>On demand indexing</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610847/on-demand-indexing</link>
		<comments>http://yousefourabi.com/blog/semantic-web/on-demand-indexing#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:34:37 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/semantic-web/on-demand-indexing</guid>
		<description><![CDATA[The world is full of buzz around the launch of cuil whose premise is more effecient indexing &#8212; what about indexing on demmand &#8212; more after I get off the bus
]]></description>
			<content:encoded><![CDATA[<p>The world is full of buzz around the launch of cuil whose premise is more effecient indexing &#8212; what about indexing on demmand &#8212; more after I get off the bus</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610847" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/semantic-web/on-demand-indexing/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/semantic-web/on-demand-indexing</feedburner:origLink></item>
		<item>
		<title>DjangoCon at the Googleplex</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610848/djangocon-at-the-googleplex</link>
		<comments>http://yousefourabi.com/blog/programming/djangocon-at-the-googleplex#comments</comments>
		<pubDate>Sun, 13 Jul 2008 23:59:57 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=168</guid>
		<description><![CDATA[Robert Lofthouse and Jacob Kaplan-Moss have just announced the first DjangoCon over at the Django Blog
It will be hosted the weekend of September 6th and 7th at the GooglePlex (Mountain View, CA). Since this is the first conference (and hosted at Google) space will be limited to 200 attendees so I suggested putting the Django [...]]]></description>
			<content:encoded><![CDATA[<p>Robert Lofthouse and Jacob Kaplan-Moss have just announced the first DjangoCon over at the <a href="http://www.djangoproject.com/weblog/2008/jul/13/djangocon/">Django Blog</a></p>
<p>It will be hosted the weekend of September 6th and 7th at the GooglePlex (Mountain View, CA). Since this is the first conference (and hosted at Google) space will be limited to 200 attendees so I suggested putting the Django blog in your feed reader and keeping a keen eye out for ticket announcements. Tickets will be free, but a dontation to Django is always appreciated.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610848" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/djangocon-at-the-googleplex/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/djangocon-at-the-googleplex</feedburner:origLink></item>
		<item>
		<title>Django sprint in Sausalito</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610849/django-sprint-in-sausalito</link>
		<comments>http://yousefourabi.com/blog/programming/django-sprint-in-sausalito#comments</comments>
		<pubDate>Sat, 12 Jul 2008 05:06:54 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=167</guid>
		<description><![CDATA[Django 1.0 is scheduled for release this September and I was surprised to see that one of the upcoming sprints (July 25th) will be in Sausalito &#8212; I&#8217;m interested in going, but not sure I can get away from work for an entire day.
http://code.djangoproject.com/wiki/SprintSausalitoJuly2008
]]></description>
			<content:encoded><![CDATA[<p>Django 1.0 is scheduled for release this September and I was surprised to see that one of the upcoming sprints (July 25th) will be in Sausalito &#8212; I&#8217;m interested in going, but not sure I can get away from work for an entire day.</p>
<p>http://code.djangoproject.com/wiki/SprintSausalitoJuly2008</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610849" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/django-sprint-in-sausalito/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/django-sprint-in-sausalito</feedburner:origLink></item>
		<item>
		<title>Manage AWS with Jollat</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610850/manage-aws-with-jollat</link>
		<comments>http://yousefourabi.com/blog/cloud-computing/manage-aws-with-jollat#comments</comments>
		<pubDate>Sat, 12 Jul 2008 02:41:54 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Cloud Computing]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=164</guid>
		<description><![CDATA[Jollat is a cross platform too (Windows, Mac, OS X) to manage Amazon&#8217;s EC2 and S3 services. There is a video demonstrating the tool on youtube
The S3 manage allows you to create US or EU buckets and drag and drop stuff from your desktop. The EC2 component comes with an AMI browser and built in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://web.jollat.com/index.html">Jollat</a> is a cross platform too (Windows, Mac, OS X) to manage Amazon&#8217;s EC2 and S3 services. There is a video demonstrating the tool on <a href="http://www.youtube.com/watch?v=aJsw_4pYoZE ">youtube</a></p>
<p>The S3 manage allows you to create US or EU buckets and drag and drop stuff from your desktop. The EC2 component comes with an AMI browser and built in SSH client.</p>
<p><a href="http://yousefourabi.com/wp-content/uploads/2008/07/jollat-credentials.png"><img class="alignnone size-medium wp-image-165" title="jollat-credentials" src="http://yousefourabi.com/wp-content/uploads/2008/07/jollat-credentials-300x195.png" alt="Jollat Credentials" width="300" height="195" /></a></p>
<p>Immediately I found a few bugs. The S3 component was&#8217;t displaying any buckets (that I knew I had) and instead displayed and error &#8220;Invalid Argument&#8221;. So I guessed that perhaps my credentials had a space in them so I deleted the account and created a new one. However after entered the Access and Secret key, it now says &#8220;License invalid&#8221;.</p>
<p>I hope I can figure out the &#8220;License invalid&#8221; issue so I can actually try the product.</p>
<p><a href="http://web.jollat.com/index.html">Jollat</a> is a free <a title="Jollat Download Link" href="http://web.jollat.com/download.html">download</a>, but only for 30 days.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610850" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/cloud-computing/manage-aws-with-jollat/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/cloud-computing/manage-aws-with-jollat</feedburner:origLink></item>
		<item>
		<title>CLISP 2.46 to keep you busy</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610851/clisp-246-to-keep-you-busy</link>
		<comments>http://yousefourabi.com/blog/programming/clisp-246-to-keep-you-busy#comments</comments>
		<pubDate>Thu, 03 Jul 2008 01:31:58 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=157</guid>
		<description><![CDATA[I&#8217;ve been super busy lately barely finding the time for the mediocre updates I have posted. My team-mates and I have been working on a revamp of a major advertising platform and it&#8217;s a lot of work.
In the mean time check out GNU Common Lisp (CLISP) which just pushed out version 2.46 today:
http://freshmeat.net/projects/clisp/?branch_id=1341&#38;release_id=280569

]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been super busy lately barely finding the time for the mediocre updates I have posted. My team-mates and I have been working on a revamp of a major advertising platform and it&#8217;s a lot of work.</p>
<p>In the mean time check out GNU Common Lisp (CLISP) which just pushed out version 2.46 today:</p>
<p><a href="http://freshmeat.net/projects/clisp/?branch_id=1341&amp;release_id=280569" mce_href="http://freshmeat.net/projects/clisp/?branch_id=1341&amp;release_id=280569">http://freshmeat.net/projects/clisp/?branch_id=1341&amp;release_id=280569</a></p>
<p></p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610851" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/clisp-246-to-keep-you-busy/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/clisp-246-to-keep-you-busy</feedburner:origLink></item>
		<item>
		<title>Microsoft buys Powerset</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610852/microsoft-buys-powerset</link>
		<comments>http://yousefourabi.com/blog/startups/microsoft-buys-powerset#comments</comments>
		<pubDate>Wed, 02 Jul 2008 04:26:34 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=156</guid>
		<description><![CDATA[The big news of the day is the MSFT aquisition of Powerset, the semantic / contextual search startup based in San Francisco.
Congrats!
]]></description>
			<content:encoded><![CDATA[<p>The big news of the day is the MSFT aquisition of Powerset, the semantic / contextual search startup based in San Francisco.</p>
<p>Congrats!</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610852" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/startups/microsoft-buys-powerset/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/startups/microsoft-buys-powerset</feedburner:origLink></item>
		<item>
		<title>BitNami Django Package</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610853/bitnami-django-package</link>
		<comments>http://yousefourabi.com/blog/apple/bitnami-django-package#comments</comments>
		<pubDate>Fri, 27 Jun 2008 03:35:33 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=155</guid>
		<description><![CDATA[I wrote about how I got Django setup on OS X Leopard a few days ago&#8230;I just stumbled across the BitNami Django packags: http://bitnami.org/stack/djangostack &#8212; that do more or less what I need&#8230; I&#8217;ll be experimenting, I&#8217;ll write about the pros and cons of the two approaches.
]]></description>
			<content:encoded><![CDATA[<p>I wrote about how I got<a href="http://yousefourabi.com/apple/django-on-leopard"> Django setup on OS X Leopard</a> a few days ago&#8230;I just stumbled across the BitNami Django packags: http://bitnami.org/stack/djangostack &#8212; that do more or less what I need&#8230; I&#8217;ll be experimenting, I&#8217;ll write about the pros and cons of the two approaches.</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610853" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/apple/bitnami-django-package/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/apple/bitnami-django-package</feedburner:origLink></item>
		<item>
		<title>FreeBase Meetup Tomorrow</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610854/freebase-meetup-tomorrow</link>
		<comments>http://yousefourabi.com/blog/semantic-web/freebase-meetup-tomorrow#comments</comments>
		<pubDate>Tue, 17 Jun 2008 04:41:20 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=154</guid>
		<description><![CDATA[I&#8217;ll be heading to the FreeBase (I keep on writing FreeBSD&#8230;) meetup tomorrow at their SF HQ&#8230; Check out a description here: http://blog.freebase.com/2008/06/12/speakers-at-next-tuesdays-freebase-user-group/
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be heading to the FreeBase (I keep on writing FreeBSD&#8230;) meetup tomorrow at their SF HQ&#8230; Check out a description here: <a href="http://blog.freebase.com/2008/06/12/speakers-at-next-tuesdays-freebase-user-group/">http://blog.freebase.com/2008/06/12/speakers-at-next-tuesdays-freebase-user-group/</a></p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610854" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/semantic-web/freebase-meetup-tomorrow/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/semantic-web/freebase-meetup-tomorrow</feedburner:origLink></item>
		<item>
		<title>HiveDB MySQL Sharding</title>
		<link>http://feeds.feedburner.com/~r/YousefOurabi/~3/444610855/hivedb-mysql-sharding</link>
		<comments>http://yousefourabi.com/blog/programming/hivedb-mysql-sharding#comments</comments>
		<pubDate>Tue, 17 Jun 2008 04:34:13 +0000</pubDate>
		<dc:creator>Yousef Ourabi</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://yousefourabi.com/?p=153</guid>
		<description><![CDATA[I just stumbled across HiveDB an open source project that allows horizontal partitioning (sharding) for MySQL&#8230;
Check it out: http://www.hivedb.org/
]]></description>
			<content:encoded><![CDATA[<p>I just stumbled across HiveDB an open source project that allows horizontal partitioning (sharding) for MySQL&#8230;</p>
<p>Check it out: http://www.hivedb.org/</p>
<img src="http://feeds.feedburner.com/~r/YousefOurabi/~4/444610855" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://yousefourabi.com/blog/programming/hivedb-mysql-sharding/feed</wfw:commentRss>
		<feedburner:origLink>http://yousefourabi.com/blog/programming/hivedb-mysql-sharding</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.989 seconds --><!-- Cached page served by WP-Cache -->
