<?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>Shattered Terminal</title>
	<atom:link href="http://shatteredterminal.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://shatteredterminal.com</link>
	<description>i don't have a tagline yet</description>
	<lastBuildDate>Sun, 11 Apr 2010 18:13:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Backward-compatibility vs. forward-fitting</title>
		<link>http://shatteredterminal.com/2010/04/backward-compatibility-vs-forward-fitting/</link>
		<comments>http://shatteredterminal.com/2010/04/backward-compatibility-vs-forward-fitting/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 18:13:22 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=234</guid>
		<description><![CDATA[I have serious problem with Adobe. I just watched a presentation video from Adobe on CS 5 here (YouTube video). My problem is with their last feature: exporting Flash animation to HTML5 canvas.
This seriously encourage people to stick with outdated technology (it is debatable, but this is my view) and not move on to program [...]]]></description>
			<content:encoded><![CDATA[<p>I have serious problem with Adobe. I just watched a presentation video from Adobe on CS 5 <a href="http://www.youtube.com/watch?v=v69S22ZBBqA">here</a> (YouTube video). My problem is with their last feature: exporting Flash animation to HTML5 canvas.</p>
<p>This seriously encourage people to stick with outdated technology (it is debatable, but this is my view) and not move on to program directly in future technology (HTML 5). Well, this, obviously, is what Adobe wants. However, Flash is never a good platform to develop with. I&#8217;ve heard some experienced Flash developers (and mind you, these are the good ones, not your run-of-the-mill Flash developers) complaining about the shortcoming of Flash technology. Why should we let programmers get lazy and stick with lousy platform when there is momentum to force them to move on to newer, cleaner technology. (Yes, part of the problem is the developers themselves; lots of lazy ones out there.)</p>
<p>Also, knowing that Adobe does ship very buggy Flash Player, I&#8217;d doubt that their Flash-to-Javascript/HTML5 compiler would be any good. Extrapolate a little and we might see a wholesale exporting of Flash games to HTML5 in the future. Oh gosh, I don&#8217;t want to imagine that world. This is what I see: Javascript code exported from Flash with lousy performance, probably pollutes the global namespace, and likely to be bloated as well. This will cause the web to crawl as slow as ever when developers could have moved into faster, cleaner technology. (On another note, Microsoft <a href="http://blogs.msdn.com/ie/archive/2010/04/07/a-closer-look-at-internet-explorer-9-hardware-acceleration-through-flying-images.aspx">demo</a>-ed its IE9 recently with hardware acceleration to render HTML 5 canvas and animation, uber cool. Other browsers will definitely go there as well.)</p>
<p>At the end of the day, what we are missing today is backward-compatibility of HTML5 canvas to browsers with no canvas implementation. What we don&#8217;t miss: forward-fitting old, outdated technology to newer, cleaner HTML 5. So if anything, I would want to focus on writing a backward-compatible Javascript abstraction of canvas. Enabling substitution of HTML 5 with older technology (yes, I&#8217;m talking about Flash). We&#8217;ll see whether I have the time to take that up.</p>
<p>Apple might not do everything right, but I totally support their attempts to stamp Adobe out of iPhone/iPad, including the infamous <a href="http://daringfireball.net/2010/04/why_apple_changed_section_331">change of Section 3.3.1</a> on top of not implementing Flash at all in iPhone and iPad.</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2010/04/backward-compatibility-vs-forward-fitting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guarantees in sizes of C++ objects</title>
		<link>http://shatteredterminal.com/2010/03/guarantees-in-sizes-of-c-objects/</link>
		<comments>http://shatteredterminal.com/2010/03/guarantees-in-sizes-of-c-objects/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 05:37:42 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=229</guid>
		<description><![CDATA[Well, this is really basic, but something I did not always remember. So I decided to check up on this in Stroustrup book that happened to be on my table this morning. Here is what I found:
C++ objects are expressed in terms of multiples of the size of a char, so by definition the size [...]]]></description>
			<content:encoded><![CDATA[<p>Well, this is really basic, but something I did not always remember. So I decided to check up on this in Stroustrup book that happened to be on my table this morning. Here is what I found:</p>
<p>C++ objects are expressed in terms of multiples of the size of a char, so by definition the size of a char is 1. Here is the guarantee provided by the language:</p>
<p>1 &equiv; sizeof(char) &le; sizeof(short) &le; sizeof(int) &le; sizeof(long)<br />
1 &le; sizeof(bool) &le; sizeof(long)<br />
sizeof(char) &le; sizeof(wchar_t) &le; sizeof(long)<br />
sizeof(float) &le; sizeof(double) &le; sizeof(long double)<br />
sizeof(N) &equiv; sizeof(signed N) &equiv; sizeof(unsigned N)</p>
<p>where N can be char, short int, int, or long int. It is also guaranteed that a char has at least 8 bits, a short and an int at least 16 bits, a long at least 32 bits. A char can hold a character of the machine&#8217;s character set.</p>
<p>Certainly interesting that I don&#8217;t remember half of this. Some of them are what we already know from basic computer organization class (where some of us learned C), but my memory doesn&#8217;t last that long.</p>
<p>P.S. This is also certainly very different from Java, where the basic &#8220;1&#8243; is actually an int instead of a char.</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2010/03/guarantees-in-sizes-of-c-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy holiday!</title>
		<link>http://shatteredterminal.com/2009/12/happy-holiday/</link>
		<comments>http://shatteredterminal.com/2009/12/happy-holiday/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 03:29:25 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/2009/12/happy-holiday/</guid>
		<description><![CDATA[Happy holiday folks! Hope the new year brings in more joy and fun and happiness&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Happy holiday folks! Hope the new year brings in more joy and fun and happiness&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/12/happy-holiday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;re mad people</title>
		<link>http://shatteredterminal.com/2009/11/were-mad-people/</link>
		<comments>http://shatteredterminal.com/2009/11/were-mad-people/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 20:35:28 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=224</guid>
		<description><![CDATA[Two friends and I came up with an idea to come up with a wiki for our internal group usage to help with community building. Know what? It&#8217;s an insane effort! Within two weeks, we have a domain name purchased, a wiki set up, several articles at almost complete stage, and 3 mad administrators. Soon [...]]]></description>
			<content:encoded><![CDATA[<p>Two friends and I came up with an idea to come up with a wiki for our internal group usage to help with community building. Know what? It&#8217;s an insane effort! Within two weeks, we have a domain name purchased, a wiki set up, several articles at almost complete stage, and 3 mad administrators. Soon there will be more mad people helping us with the wiki.</p>
<p>The best part is: more than 2000 pageviews in the past 9 days! And that&#8217;s without much publicity yet! Insane!</p>
<p>P.S. Btw, yes, the post title has ambiguous grammar (well not really, if you are speaking formally, but in informal speech, it is kind of ambiguous).</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/11/were-mad-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave account first preview</title>
		<link>http://shatteredterminal.com/2009/11/google-wave-account-first-preview/</link>
		<comments>http://shatteredterminal.com/2009/11/google-wave-account-first-preview/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 16:17:18 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=221</guid>
		<description><![CDATA[I finally had a chance to play around with my Google Wave account, now that I&#8217;m slightly freer. Well, to be really honest, at first, I was a little lost. I didn&#8217;t have many contacts with Wave accounts yet (at least not in my highly contacted group of friends). Plus, I was clueless on what [...]]]></description>
			<content:encoded><![CDATA[<p>I finally had a chance to play around with my Google Wave account, now that I&#8217;m slightly freer. Well, to be really honest, at first, I was a little lost. I didn&#8217;t have many contacts with Wave accounts yet (at least not in my highly contacted group of friends). Plus, I was clueless on what I wanted to do. Well, the most natural step to take would be to invite more friends to join Wave. That was exactly what I did. I invited a couple of friends to Wave. (Yes, I was pretty lucky to have a Wave account from a friend who is a Googler, hence the extra invites.)</p>
<p>Didn&#8217;t take long before a few of them got the invites soon afterwards. I think it takes the Wave team at least a day or two to send an invite once you nominate your friends. Anyway, now we have more interesting stuffs to do.</p>
<p>The first wave: I started a wave on the recipe of the chicken katsu my girlfriend and I cooked last weekend. I might not look like it, but I do cook often enough, and the katsu was really good! Even my girlfriend&#8217;s sister, who has a high standard for food, liked it. Well, back to the point, it was kind of fun to write the recipe in Wave. But wait a sec, I can do that just using Google Docs, can&#8217;t I? Or even this blog. Well, let&#8217;s put that thought on hold for a moment&#8230;</p>
<p>The second wave: my girlfriend went online and she started playing with her Wave account. She was initially confused. So we both started a wave (oh, and I shared the katsu recipe wave with her) and started experimenting. This is where Wave really shines. We were able to edit any of the sub-waves together and the changes appear live on the other person&#8217;s Wave account. I can see exactly where she&#8217;s editing and can even reply to her post before she finished writing. We also played (well, I did) with the playback function. Really cool!</p>
<p>The third wave: well, I am supposed to write an article for this small blog-based publication that my friend is running. Since she has a Wave account too (and, like me, has no idea what to do with it), I suggested that we might want to try writing the article as a wave. My idea would be to write the article (outline and the actual article), brainstorms, and have her editing the article as necessary. Thought that is a neat idea, but we&#8217;ll only be able to test that next week since I&#8217;m still kind of busy this week. Seems fun though! Imagine live collaboration on an article, bouncing ideas through a wave or gtalk, while writing the article at the same time. Plus, I&#8217;ll be able to see her edits appearing live on my wave.</p>
<p>Well, anyway, back to the thought that I put on hold some moments ago: Google Wave equals Google Docs? Is that true? Well, yes and no! Wave can indeed work like Google Docs (well, right now minus the spreadsheet/presentation stuffs, but I bet there will be a gadget to take care of that soon). And that is indeed the point! Wave is Google Docs + GTalk + GMail + wiki! It&#8217;s like this all-in-one, all encompassing collaborative solutions. Cool? Hell yeah. Will it work? Only time will tell.</p>
<p>Well, I had fun waving today. But I shall stop here. Still have a presentation to write for Monday and I need to get a draft of it by tomorrow. ):</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/11/google-wave-account-first-preview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Largest value sub-array [part 1]</title>
		<link>http://shatteredterminal.com/2009/11/largest-value-sub-array-part-1/</link>
		<comments>http://shatteredterminal.com/2009/11/largest-value-sub-array-part-1/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 05:01:27 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[dynamic programming]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=215</guid>
		<description><![CDATA[I was teaching a bunch of freshman the other day. One of the questions that came up was to determine the largest value sub-array given an array of integers. Obviously, the value is the array can be negative. There are two variants of the questions, one to find the actual maximum value when each of [...]]]></description>
			<content:encoded><![CDATA[<p>I was teaching a bunch of freshman the other day. One of the questions that came up was to determine the largest value sub-array given an array of integers. Obviously, the value is the array can be negative. There are two variants of the questions, one to find the actual maximum value when each of the members of the sub-array are added together, and the second variant is to actually find the start and ending location of the sub-array.</p>
<p>We will first consider the first variant to arrive at optimum answer.</p>
<p>A simple answer would be to perform brute force search in the array, considering each position as possible starting and ending point. Time complexity: O(n^2). Not very good eh? Can we improve on this? Yes, we can if we use dynamic programming. For many of us, the algorithm came up as obvious, but I realize that it is really not that simple for students new to programming to come up with a correct algorithm. To answer this, I tried to explain the concept behind the algorithm: for each element of the array, we find the maximum value sub-array that ends at that element. This value can either be the value of the element itself (meaning starting at the element and ending at the particular element) or the maximum value sub-array ending at the previous element added to the value of the element. (The latter only occurs if the maximum value sub-array at previous location is not negative.) There you go, we have a recurrence relation: given an array A, let v(k) be the maximum value of any sub-array ending at position k, where k ranging from 0 inclusive to N exclusive, N is the length of the array. Hence we have:</p>
<p>v(0) = A[0]<br />
v(k) = max{v(k-1) + A[k], A[k]} if k &gt; 0</p>
<p>The maximum value will be given by max{v_i} for i from 0 to N-1. To implement this in Java, we make several optimization. Firstly, we can opt for recursive method or dynamic programming. Both will take O(n) time but since we&#8217;re using Java, we would rather use dynamic programming since there is no <a href="http://en.wikipedia.org/wiki/Tail_recursion">tail call optimization</a> in Java. Then, rather than finding the maximum value using max{v_i} at the end, we keep a running maximum throughout the running of the algorithm and return it. We also note that v(k-1) + A[k] will only be greater than A[k] iff v(k-1) is greater than 0. Here is how the code goes (this is a rather faithful implementation, it uses the same variable names as the recurrence relation above to make it easier to see):</p>
<pre name="code" class="java">public static int calculateMaxValue(int[] A) {
  int[] v = new int[A.length];
  int max = v[0] = A[0];
  for (int i = 1; i < A.length; ++i) {
    v[i] = A[i];
    if (v[i-1] > 0) {
      v[i] += v[i-1];
    }

    if (v[i] > max) {
      max = v[i];
    }
  }
  return max;
}</pre>
<p>This algorithm has O(n) time complexity.</p>
<p>What else can we do to optimize this code? Well, we don&#8217;t really need to keep an array of maximum values. We notice that at any point of time, to calculate the value of v(k), we only need the value of A[k] and v(k-1). We just turn an O(n) space requirement to O(1).</p>
<pre name="code" class="java">public static int calculateMaxValue(int[] A) {
  int max = A[0], current = A[0];
  for (int i = 1; i < A.length; ++i) {
    if (current < 0) current = 0;
    current += A[i];

    if (current > max) max = current;
  }
  return max;
}</pre>
<p>Voila! We shall continue with the second variant next time. (:</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/11/largest-value-sub-array-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random sample from a long linked list</title>
		<link>http://shatteredterminal.com/2009/11/random-sample-from-a-long-linked-list/</link>
		<comments>http://shatteredterminal.com/2009/11/random-sample-from-a-long-linked-list/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 04:08:35 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[probability interview]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=192</guid>
		<description><![CDATA[Sorry for the long no-update period. I had quite a few posts that I wrote half way in my posting queues but haven&#8217;t got the time to finish them since I was very busy with work and research. Plus I&#8217;m currently learning basic German and that really sucks out a lot of my free time. [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry for the long no-update period. I had quite a few posts that I wrote half way in my posting queues but haven&#8217;t got the time to finish them since I was very busy with work and research. Plus I&#8217;m currently learning basic German and that really sucks out a lot of my free time. (Though German is really, really fun; I really hope that one day, I can actually work&mdash;maybe temporarily, maybe permanently&mdash; in Germany.)</p>
<p>Anyway, a friend of mine is currently applying for jobs in several &#8220;big&#8221; companies (you know, the Google-Microsoft-Apple kind?). So he was preparing for his interview by hunting quite a few online questions. One of the questions he asked reminded me of a question I used to use to exemplify the kind of questions these companies used in their technical interview:</p>
<blockquote><p>Given a head pointer to a (possibly very long) linked list of unknown length, devise a method to sample m members at random. Ensure that the method yields equal probability for each element in the linked list to be picked.</p></blockquote>
<p>Obviously we can traverse the list once to find the length, generate m random numbers from 1 to length of the list and traverse the list another time to pick up these items. A common question would be to prevent you from going through the list more than once. Say the list is very long, the disk I/O you need to get the items from harddisk (even after making sure the items are arranged well that it minimizes cache misses) would make traversal a very expensive operation and hence should be minimized.</p>
<p>The solution I have is inspired by the fact that if the linked list contained m or less elements, I have no choice but to pick all m of them. Hence, the main idea of the solution would be to pick the first m elements and keeping track of k&mdash;the number of elements we have seen so far. When we encounter a new element, the new element has an m/k chance of being picked. If it is picked, we dropped 1 of the previously selected m elements at random. We can easily prove that this indeed yields the correct probability via mathematical induction.</p>
<p>Now of course it won&#8217;t be fun to implement this in Java or C++, so I decided to use Scheme to code this, just for the fun of it. The solution is surprisingly short and pretty. Here goes:</p>
<pre name="code" class="scheme">(define (sample-m lst m)
  (define (helper curr k m-vec)
    (if (empty? curr)
        (if (< k m)
            lst
            (vector->list m-vec))
        (let ((pos (random k)))
          (cond ((<= k m)
                 (vector-set! m-vec
                              (- k 1)
                              (car curr)))
                ((< pos m)
                 (vector-set! m-vec
                              pos
                              (car curr))))
          (helper (cdr curr) (+ k 1) m-vec))))
  (helper lst 1 (make-vector m)))

;;; Let's test this!
(sample-m (build-list 1000 values) 7)</pre>
<p>EDIT: I decided to try writing a version for Java as well. Here is the Java code:</p>
<pre name="code" class="java">public class LinkedListSampler {
  private static Random rand = new Random();
  public static &lt;T&gt; List&lt;T&gt; sample(
      LinkedList&lt;T&gt; list, int m) {
    ArrayList&lt;T&gt; samples = new ArrayList&lt;T&gt;(m);
    int k = 0;
    for (T element : list) {
      int pos = k++;
      if (pos &lt; m) {
        samples.add(element);
      } else if ((pos = rand.nextInt(k)) &lt; m) {
        samples.set(pos, element);
      }
    }
    return samples;
  }
}</pre>
<p>EDIT 2: Btw, seriously, the Java code is just for fun. Just imagine that LinkedList does not have a size method, will ya? ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/11/random-sample-from-a-long-linked-list/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Applying for J1 Waiver</title>
		<link>http://shatteredterminal.com/2009/10/applying-for-j1-waiver/</link>
		<comments>http://shatteredterminal.com/2009/10/applying-for-j1-waiver/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 01:09:53 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=197</guid>
		<description><![CDATA[I am starting my J1 foreign residency requirement waiver application in the next few days. Anyone with such experience before? I&#8217;ve heard that it is a long and painful wait. Sigh.
]]></description>
			<content:encoded><![CDATA[<p>I am starting my J1 foreign residency requirement waiver application in the next few days. Anyone with such experience before? I&#8217;ve heard that it is a long and painful wait. Sigh.</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/10/applying-for-j1-waiver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACL-IJCNLP &#8216;09 Blog</title>
		<link>http://shatteredterminal.com/2009/05/acl-ijcnlp-09-blog/</link>
		<comments>http://shatteredterminal.com/2009/05/acl-ijcnlp-09-blog/#comments</comments>
		<pubDate>Wed, 13 May 2009 13:15:29 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Self]]></category>
		<category><![CDATA[acl-ijcnlp]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=187</guid>
		<description><![CDATA[I have been invited to co-ordinate the blog for ACL-IJCNLP &#8216;09, a joint conference on natural language processing to be held in Singapore this August. We will be posting both general articles about NLP and computational linguistics for general public, and articles on things to do in Singapore and nearby regions. Stay tune to the [...]]]></description>
			<content:encoded><![CDATA[<p>I have been invited to co-ordinate the blog for ACL-IJCNLP &#8216;09, a joint conference on natural language processing to be held in Singapore this August. We will be posting both general articles about NLP and computational linguistics for general public, and articles on things to do in Singapore and nearby regions. Stay tune to the new blog! It will officially be launched next Monday, but you can already access it <a href="http://www.colips.org/blog/acl-ijcnlp-2009/">here</a> (sorry, about the design, we haven&#8217;t figured what design to use for the blog yet). Also check out the conference <a href="http://www.acl-ijcnlp-2009.org/">website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/05/acl-ijcnlp-09-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chrome Shorts</title>
		<link>http://shatteredterminal.com/2009/04/chrome-shorts/</link>
		<comments>http://shatteredterminal.com/2009/04/chrome-shorts/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 19:01:19 +0000</pubDate>
		<dc:creator>shards</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[film]]></category>
		<category><![CDATA[shorts]]></category>

		<guid isPermaLink="false">http://shatteredterminal.com/?p=183</guid>
		<description><![CDATA[OH MY GOD! The Chrome Shorts are really cute! It&#8217;s as if I&#8217;m turning into a small kids awestruck by some of the videos! Good timing! Have been pretty stressed up getting things right in my mind (while getting ready for exams).
Anyway, this one is the cutest! Shit! The cat and the video is just [...]]]></description>
			<content:encoded><![CDATA[<p>OH MY GOD! The <a href="http://chrome.blogspot.com/2009/04/11-short-films-about-browser.html">Chrome Shorts</a> are really cute! It&#8217;s as if I&#8217;m turning into a small kids awestruck by some of the videos! Good timing! Have been pretty stressed up getting things right in my mind (while getting ready for exams).</p>
<p>Anyway, this one is the cutest! Shit! The cat and the video is just so cute!</p>
<div style="margin: 0 auto;"><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/5535Ts-iOP0&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5535Ts-iOP0&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></div>
<p>(Watch the other 10 videos from YouTube&#8217;s <a href="http://www.youtube.com/googlechrome">Chrome channel</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://shatteredterminal.com/2009/04/chrome-shorts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
