<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>
I’m Mustafa Paksoy and I write code for a living. I post assorted items of interest here. You can contact me via email.



I also take pictures, dabble in Twitter and occasionally put projects on GitHub.
</description><title>rapid habits ❧</title><generator>Tumblr (3.0; @paksoy)</generator><link>http://paksoy.net/</link><item><title>Web Based Truth Table Generator</title><description>&lt;a href="https://github.com/mustpax/Truth-Table-Generator"&gt;Web Based Truth Table Generator&lt;/a&gt;: &lt;p&gt;I wrote this a while ago, recently ported it to run on GitHub Pages: &lt;a href="http://mustpax.github.com/Truth-Table-Generator/" target="_blank"&gt;&lt;a href="http://mustpax.github.com/Truth-Table-Generator/" target="_blank"&gt;http://mustpax.github.com/Truth-Table-Generator/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://paksoy.net/post/16340738100</link><guid>http://paksoy.net/post/16340738100</guid><pubDate>Mon, 23 Jan 2012 02:38:00 -0500</pubDate><category>javascript</category><category>logic</category></item><item><title>From Malchesine, Italy.</title><description>&lt;img src="http://30.media.tumblr.com/tumblr_luxkdkhPjY1qz98l3o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;From Malchesine, Italy.&lt;/p&gt;</description><link>http://paksoy.net/post/13032593239</link><guid>http://paksoy.net/post/13032593239</guid><pubDate>Sat, 19 Nov 2011 18:10:31 -0500</pubDate></item><item><title>Netflix, Qwikster and the impending introduction premium pricing</title><description>&lt;p&gt;Netflix just &lt;a href="http://techcrunch.com/2011/09/18/netflix-qwikster/" title="TechCrunch article on Netflix spinning off Qwikster" target="_blank"&gt;announced&lt;/a&gt; that they are spinning off their DVD-rental-by-mail service under a new brand Qwikster while the streaming service retains the Netflix name. Many commentators have duly noted Netflix’s boldness in leaving its cash cow behind and looking to the future, a true example of a company facing up to the &lt;em&gt;Innovator’s Dilemma&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;However, this latest change serves a purpose beyond merely signaling Netflix’s future direction to customers and investors. Namely, &lt;strong&gt;Netflix is setting itself up to offer premium pricing options for its streaming product.&lt;/strong&gt; The company has already been burnt by customer confusion stemming from its most recent pricing changes. Netflix knows it needs to clearly delineate the two product offerings to be able to say “pay another $10 a month to watch all Fox shows” without customers wondering they will still be able to rent Family Guy Season 3 DVDs by mail.&lt;/p&gt;

&lt;p&gt;At $10 a month unlimited streaming is a great deal. The cable plans that that Netflix’s service replaces run around $40-50 which means there’s a lot of consumer surplus Netflix can absorb to widens its product offering. As evidenced by the latest Starz loss, Netflix needs to make more compelling bids for streaming rights and offering premium streaming packages is the key to that. I for one can’t wait.&lt;/p&gt;</description><link>http://paksoy.net/post/10403698885</link><guid>http://paksoy.net/post/10403698885</guid><pubDate>Mon, 19 Sep 2011 11:07:00 -0400</pubDate><category>speculation</category><category>netflix</category><category>pricing</category></item><item><title>"Leadership is about taking risks, while management is about mitigating them. They are thus often in..."</title><description>“Leadership is about taking risks, while management is about mitigating them. They are thus often in direct tension. Yahoo had a lot of management and not much leadership.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Joshua Schachter on &lt;a href="http://news.ycombinator.com/item?id=2968125" target="_blank"&gt;Hacker News&lt;/a&gt;&lt;/em&gt;</description><link>http://paksoy.net/post/9910000942</link><guid>http://paksoy.net/post/9910000942</guid><pubDate>Wed, 07 Sep 2011 01:41:11 -0400</pubDate></item><item><title>Simple staging on Heroku</title><description>&lt;p&gt;Not everything runs the same on production as it does on &lt;code&gt;localhost&lt;/code&gt; so you need a staging environment to vet changes before making them public.&lt;/p&gt;

&lt;p&gt;When developing &lt;a href="https://piazza.herokuapp.com" target="_blank"&gt;Piazza&lt;/a&gt; (&lt;a href="https://github.com/ForceDotComLabs/piazza" target="_blank"&gt;on GitHub&lt;/a&gt;) we put together a simple workflow to manage production and staging deployments. Our app is built on the Heroku Cedar stack with Java and the Play framework but this workflow should be applicable to all other apps on Heroku.&lt;/p&gt;

&lt;h1&gt;Git branches&lt;/h1&gt;

&lt;p&gt;We need Git branches to track what we have on Heroku. We will be pushing these back to our central repository &lt;code&gt;origin&lt;/code&gt;  (GitHub in our case) to facilitate easier collaboration.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git checkout -b prod
git checkout -b staging
git push origin prod
git push origin staging
&lt;/code&gt;&lt;/pre&gt;

&lt;h1&gt;Heroku setup&lt;/h1&gt;

&lt;p&gt;You will need two different Heroku applications, one for staging and one for production. If you’re starting from scratch you can create these applications and attach them to the right Git remote repository.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;heroku create --stack cedar --remote prod
heroku create --stack cedar --remote staging
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you already have a Heroku app under the Git remote &lt;code&gt;heroku&lt;/code&gt; you can rename it and create a new app for staging.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git remote rename heroku prod
heroku create --stack cedar --remote staging
&lt;/code&gt;&lt;/pre&gt;

&lt;h1&gt;&lt;code&gt;make&lt;/code&gt; me a sandwich&lt;/h1&gt;

&lt;p&gt;Create a file in your project root named &lt;code&gt;makefile&lt;/code&gt; (with the lowercase &lt;code&gt;m&lt;/code&gt;). We will create two make targets in this file which are basically project specific shortcuts. There’s a lot more you can do with &lt;code&gt;make&lt;/code&gt; but we’re sticking to basics. Our two make targets look like this:&lt;/p&gt;

&lt;script src="https://gist.github.com/1184335.js"&gt; &lt;/script&gt;&lt;p&gt;&lt;code&gt;make stage&lt;/code&gt; will now deploy the contents of the &lt;code&gt;staging&lt;/code&gt; branch to the appropriate Heroku app followed by GitHub. &lt;code&gt;make deploy&lt;/code&gt; will do the same with the &lt;code&gt;prod&lt;/code&gt; branch. You will have to merge changes from master into these branches yourself like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git checkout staging
git merge master
make stage
&lt;/code&gt;&lt;/pre&gt;

&lt;h1&gt;Bonus: Keeping branches clean&lt;/h1&gt;

&lt;p&gt;Since you have to update the &lt;code&gt;staging&lt;/code&gt; and &lt;code&gt;prod&lt;/code&gt; branches manually it is good to put in some safety measures to prevent bad deployments. For our part, we require the Git branch to be clean. A simple Bash script can check Git to see if there are any uncommitted changes and abort the make target&lt;/p&gt;

&lt;script src="https://gist.github.com/1184331.js"&gt; &lt;/script&gt;&lt;p&gt;The new make targets should look like&lt;/p&gt;

&lt;script src="https://gist.github.com/1184348.js"&gt; &lt;/script&gt;&lt;p&gt;Now if you try to &lt;code&gt;make stage&lt;/code&gt; with a dirty repo the deployment will be aborted.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git checkout prod
Switched to branch 'prod'
$ touch newfile
$ make deploy
There are uncommitted changes.
make: *** [deploy] Error 1
&lt;/code&gt;&lt;/pre&gt;

&lt;h1&gt;Appendix&lt;/h1&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/1279787/staging-instance-on-heroku" target="_blank"&gt;StackOverflow question about Heroku staging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.opussoftware.com/tutorial/TutMakefile.htm" target="_blank"&gt;Turorial on Makefiles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://paksoy.net/post/9634387657</link><guid>http://paksoy.net/post/9634387657</guid><pubDate>Wed, 31 Aug 2011 15:06:00 -0400</pubDate><category>heroku</category><category>piazza</category><category>java</category><category>play</category><category>twitter</category><category>salesforce</category></item><item><title>"Go the F*** to Sleep not funny"</title><description>&lt;p&gt;From &lt;a href="http://www.cnn.com/2011/OPINION/06/27/zacharias.kid.book/" title="CNN Op-Ed on Go the F*** to Sleep" target="_blank"&gt;“Go the F*** to Sleep not funny”&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“She has good reason to be concerned about the message behind such a parody. Demarest was the prosecuting attorney in one of Oregon’s most high-profile child murder cases. […] Nobody is suggesting that there’s a connection between Adam Mansbach’s book and child abuse or child neglect.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dear CNN op-ed author, I believe you’ve made that very suggestion.&lt;/p&gt;</description><link>http://paksoy.net/post/7135189587</link><guid>http://paksoy.net/post/7135189587</guid><pubDate>Fri, 01 Jul 2011 18:42:00 -0400</pubDate></item><item><title>Lazy loading click handlers with onmousedown</title><description>&lt;p&gt;Just today I was thinking about how annoying it is that Facebook redirects all outgoing links to an internal page. They do this to mitigate the spread of clickjacking worms and whatnot but I like to think I’m smart enough to not click a post titled “I can’t believe she isnt werring a bra LOL WORM!!” So I figured I’d write a quick greasmonkey script to switch the links back to their pristine form. Well, I didn’t exactly get around to writing the script but I discovered something nifty instead.&lt;/p&gt;

&lt;p&gt;Take the following innocuous link to a humorous imgur image a friend posted on my wall:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;a href="http://i.imgur.com/7XSdO.jpg" target="_blank" rel="nofollow" 
    onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;SNIP&amp;quot;, event, bagof(null));"&gt;
        &lt;a href="http://i.imgur.com/7XSdO.jpg" target="_blank"&gt;http://i.imgur.com/7XSdO.jpg&lt;/a&gt;
&lt;/a&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The link target (&lt;code&gt;href&lt;/code&gt;) is not rewritten on the server so the click must be getting intercepted via JavaScript. But you can’t preventDefault for a click via &lt;code&gt;onmousedown&lt;/code&gt;, you have to catch the &lt;code&gt;onclick&lt;/code&gt; event instead. Here’s what UntrustedLink looks like once beautified:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;function UntrustedLink(a, d, b, c) {
    this.dom = a;
    this.url = a.href;
    this.hash = d;
    this.func_get_params = c ||
    function () {
        return {};
    };
    Event.listen(this.dom, 'click', this.onclick.bind(this));
    Event.listen(this.dom, 'mousedown', this.onmousedown.bind(this));
    Event.listen(this.dom, 'mouseup', this.onmouseup.bind(this));
    Event.listen(this.dom, 'mouseout', this.onmouseout.bind(this));
    this.onmousedown($E(b));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Facebook is adding &lt;code&gt;onclick&lt;/code&gt; handlers to links &lt;em&gt;right&lt;/em&gt; before the click happens. No wasting time with pesky &lt;code&gt;onload&lt;/code&gt; initializations, links are self-initializing! Pretty neat.&lt;/p&gt;</description><link>http://paksoy.net/post/6781374959</link><guid>http://paksoy.net/post/6781374959</guid><pubDate>Wed, 22 Jun 2011 00:51:17 -0400</pubDate><category>facebook</category><category>javascript</category><category>dom</category></item><item><title>Well, not *that* interactive</title><description>&lt;p&gt;I always alias &lt;code&gt;rm&lt;/code&gt; to &lt;code&gt;rm -i&lt;/code&gt; to prevent fat-fingered mishaps. This is usually too chatty if you try to recursively delete even a moderately big directory, so you have to go all out with &lt;code&gt;rm -rf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I get chills every time I type that little &lt;code&gt;f&lt;/code&gt; in there and it turns out the new version of &lt;code&gt;rm&lt;/code&gt; from GNU coreutils allows an alternate interactive mode &lt;code&gt;-I&lt;/code&gt; that will prompt you once for all arguments. It also skips prompting altogether if you specify less than 4 files for deletion.&lt;/p&gt;

&lt;p&gt;From the man page for &lt;code&gt;rm&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If  the &lt;code&gt;-I&lt;/code&gt; or &lt;code&gt;--interactive=once&lt;/code&gt; option is given, and there are more than three files or the &lt;code&gt;-r&lt;/code&gt;, &lt;code&gt;-R&lt;/code&gt;, or &lt;code&gt;--recursive&lt;/code&gt; are given, then &lt;code&gt;rm&lt;/code&gt; prompts the user for whether to proceed with the entire operation.  If the response is not affirmative, the entire command is aborted.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://paksoy.net/post/6588575733</link><guid>http://paksoy.net/post/6588575733</guid><pubDate>Thu, 16 Jun 2011 11:23:00 -0400</pubDate><category>rm</category><category>shell</category><category>linux</category></item><item><title>One Instruction Set Computer VM and Assembler on GitHub</title><description>&lt;a href="https://github.com/mustpax/OISC"&gt;One Instruction Set Computer VM and Assembler on GitHub&lt;/a&gt;: &lt;p&gt;I wrote this with a friend for a Computer Architecture course final project back in 2005. It is one of the first significant chunks of Java I’ve written, which shows. The concept is still interesting though.&lt;/p&gt;</description><link>http://paksoy.net/post/6510563613</link><guid>http://paksoy.net/post/6510563613</guid><pubDate>Mon, 13 Jun 2011 23:22:10 -0400</pubDate></item><item><title>HELO EHLO</title><description>&lt;p&gt;Why is it that ubiquitous internet protocols can’t spell? HTTP’s got “referer”. SMTP has not one but two misspellings of hello.&lt;/p&gt;</description><link>http://paksoy.net/post/6441857453</link><guid>http://paksoy.net/post/6441857453</guid><pubDate>Sat, 11 Jun 2011 23:50:00 -0400</pubDate></item><item><title>My ideal reader is a second version of me.

The whole series is...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_lhju7kyu0k1qz98l3o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;My ideal reader is a second version of me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The whole series is wonderful and candid snapshot of Merlin and John’s talk.&lt;/p&gt;</description><link>http://paksoy.net/post/3641636378</link><guid>http://paksoy.net/post/3641636378</guid><pubDate>Fri, 04 Mar 2011 14:59:44 -0500</pubDate></item><item><title>"When you’re young, you look at television and think, There’s a conspiracy. The networks..."</title><description>“When you’re young, you look at television and think, There’s a conspiracy. The networks have conspired to dumb us down. But when you get a little older, you realize that’s not true. The networks are in business to give people exactly what they want. That’s a far more depressing thought. Conspiracy is optimistic! You can shoot the bastards! We can have a revolution! But the networks are really in business to give people what they want. It’s the truth.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Steve Jobs in &lt;a href="http://www.wired.com/wired/archive/4.02/jobs_pr.html" target="_blank"&gt;WIRED magazine, February 1996&lt;/a&gt;&lt;/em&gt;</description><link>http://paksoy.net/post/3072266288</link><guid>http://paksoy.net/post/3072266288</guid><pubDate>Wed, 02 Feb 2011 15:03:35 -0500</pubDate></item><item><title>The origin of Unix file delete permissions</title><description>&lt;p&gt;Unix file permissions fall into three basic categories, read, write and execute. Which one do you think controls file deletion? It’s probably write, right? Well, let’s test it:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ touch foo; chmod -w foo
$ ls -l foo
-r-------- 1 user group 0 2011-01-24 12:16 foo
$ rm foo
$ ls foo
ls: cannot access foo: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That’s weird, it looks like I successfully deleted that file. Maybe it’s governed by user/group ownership.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ touch foo; sudo chown root:root foo
$ ls -l foo
-rw------- 1 root root 0 2011-01-24 12:18 foo
$ rm foo
$ ls foo
ls: cannot access foo: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I just deleted a file owned by root. WTF?&lt;/p&gt;

&lt;p&gt;It turns out, Unix file deletion (and creation) is controlled by write access to the parent directory. Let’s demonstrate quickly:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ mkdir test; touch test/foo
$ chmod -w test
$ rm test/foo
rm: test/foo: Permission denied
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You see, each Unix file has a dedicated datastructure that stores metadata called an inode. While inodes store permissions, access/modification timestamps and other useful info, they do not track file location or name. Instead, directories map file names to inodes. The name of an inode is derived from its location. When we delete a file with the &lt;code&gt;rm&lt;/code&gt; command, we are merely removing a directory entry. Hence, we only need write permissions to the directory in question.&lt;/p&gt;

&lt;p&gt;You can even link to an inode from multiple directory locations with the &lt;code&gt;ln&lt;/code&gt; command. These references are called hard links and are counted by the inode. The inode is reclaimed and the disk storage freed only when the reference count reaches zero. So not all &lt;code&gt;rm&lt;/code&gt; operations will result in the underlying file being destroyed, which is yet another reason for file deletion being controlled by the parent directory.&lt;/p&gt;</description><link>http://paksoy.net/post/2942355309</link><guid>http://paksoy.net/post/2942355309</guid><pubDate>Wed, 26 Jan 2011 12:24:00 -0500</pubDate><category>unix</category><category>files</category><category>security</category></item><item><title>Apparently the iPhone also has a universal orientation lock like...</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_lejslyUpao1qz98l3o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Apparently the iPhone also has a universal orientation lock like the iPad. Here’s how to use it:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Doube-tap the home button to view the recent apps selector.&lt;/li&gt;
&lt;li&gt;Swipe right on the selector to reveal the iPod controls and, lo and behold, the orientation lock.&lt;/li&gt;
&lt;li&gt;Lie in bed all morning browsing the web.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;(Step 3 is optional.)&lt;/p&gt;</description><link>http://paksoy.net/post/2608202292</link><guid>http://paksoy.net/post/2608202292</guid><pubDate>Wed, 05 Jan 2011 06:44:22 -0500</pubDate></item><item><title>Keep trying till you succeed with Bash</title><description>&lt;p&gt;The following Bash snippet will repeat a command with the given delay until it succeeds.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;while [ "$?" -gt "0" ] ; do
    sleep 120 # delay in seconds between retries
    # insert command to retry here
done
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Unix processes return integers when they exit. These values can be read via &lt;code&gt;$?&lt;/code&gt; in Bash. As a matter of convention, a process that completes without errors will return 0, so by checking for exit codes greater than zero we can detect errors and retry.&lt;/p&gt;</description><link>http://paksoy.net/post/1536444989</link><guid>http://paksoy.net/post/1536444989</guid><pubDate>Wed, 10 Nov 2010 16:18:00 -0500</pubDate><category>bash</category><category>cli</category></item><item><title>Click on album art.
⌘-W main window.
Pretend iTunes is a...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_latpeydyVW1qz98l3o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;ol&gt;&lt;li&gt;Click on album art.&lt;/li&gt;
&lt;li&gt;⌘-W main window.&lt;/li&gt;
&lt;li&gt;Pretend iTunes is a minimalist music player.&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</description><link>http://paksoy.net/post/1394352935</link><guid>http://paksoy.net/post/1394352935</guid><pubDate>Sun, 24 Oct 2010 21:56:00 -0400</pubDate></item><item><title>Secure delete with rm on OS X</title><description>&lt;p&gt;I discovered this gem in the &lt;code&gt;rm&lt;/code&gt; man page on OS X the other day:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;-P  Overwrite regular files before deleting them.  Files are
    overwritten three times, first with the byte pattern 0xff,
    then 0x00, and then 0xff again, before they are deleted.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So there you go &lt;code&gt;rm -P&lt;/code&gt; will securely delete a file from your disk with minimum hassle (i.e. without having to through the Thrash folder). This might be one of those goodies OS X inherited from BSD. On Linux you have to use something like &lt;code&gt;shred&lt;/code&gt; to achieve the same thing.&lt;/p&gt;

&lt;p&gt;Addendum: santry on the &lt;a href="http://news.ycombinator.com/item?id=1824899" title="Hacker News thread" target="_blank"&gt;HN Thread&lt;/a&gt; points out the same thing can done via the &lt;code&gt;srm&lt;/code&gt; command. Several people also noted that secure delete interacts unpredictably with modern file systems. jrockway points out that full disk encryption should be used in place of secure delete for this reason.&lt;/p&gt;</description><link>http://paksoy.net/post/1385176457</link><guid>http://paksoy.net/post/1385176457</guid><pubDate>Sat, 23 Oct 2010 21:02:00 -0400</pubDate><category>cli</category><category>rm</category><category>os x</category><category>security</category></item><item><title>"The major difference between a thing that might go wrong and a thing that cannot possibly go wrong..."</title><description>“The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt; Douglas Adams, presumably talking about how distributed systems are more reliable since fault tolerance is baked into the architecture&lt;/em&gt;</description><link>http://paksoy.net/post/952944249</link><guid>http://paksoy.net/post/952944249</guid><pubDate>Sat, 14 Aug 2010 12:40:15 -0400</pubDate></item><item><title>I keep coming back to this one.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_l6t94rp89Q1qz98l3o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I keep coming back to this one.&lt;/p&gt;</description><link>http://paksoy.net/post/920093654</link><guid>http://paksoy.net/post/920093654</guid><pubDate>Sat, 07 Aug 2010 21:50:00 -0400</pubDate></item><item><title>"My ability to decide how I feel about Wikileaks’ activities is totally annihilated by my ongoing..."</title><description>“My ability to decide how I feel about Wikileaks’ activities is totally annihilated by my ongoing realization that it cannot possibly be real. It’s a plot device in a near-future thriller novel. I mean, seriously, semi-stateless man with an unusual appearance uses an army of anonymous allies to expose governments’ secrets, and posts an insurance file in public with some kind of deadman switch in case he’s taken out by his enemies? That shit does not happen in real life. Julian Assange is a Neal Stephenson character who’s escaped in to the real world.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.metafilter.com/94273/The-plot-thickens#3212444" target="_blank"&gt;Tomorrowful on MetaFilter&lt;/a&gt; (via &lt;a href="http://simonwillison.net/2010/Aug/1/plotdevice/" target="_blank"&gt;Simon Willison&lt;/a&gt;)&lt;/em&gt;</description><link>http://paksoy.net/post/893562236</link><guid>http://paksoy.net/post/893562236</guid><pubDate>Mon, 02 Aug 2010 11:45:00 -0400</pubDate><category>literature</category><category>journalism</category></item></channel></rss>

