<?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>naf.tech</title>
	<atom:link href="http://iamnafets.com/tech/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://iamnafets.com/tech</link>
	<description>without drudgery</description>
	<lastBuildDate>Fri, 30 Apr 2010 16:38:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Clear Facebook Newsfeed/Wall Using Javascript</title>
		<link>http://iamnafets.com/tech/?p=35</link>
		<comments>http://iamnafets.com/tech/?p=35#comments</comments>
		<pubDate>Thu, 22 Apr 2010 08:21:37 +0000</pubDate>
		<dc:creator>iamnafets</dc:creator>
				<category><![CDATA[facebook]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://iamnafets.com/tech/?p=35</guid>
		<description><![CDATA[It&#8217;s been brought to my attention that this is also referred to as the wall, thus (and for search engine purposes), this post details how to clear facebook wall using javascript.
My roommate asked me if there was an easier way to clear the facebook news feed. When you have several years of &#8220;now friends with&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been brought to my attention that this is also referred to as the wall, thus (and for search engine purposes), this post details how to clear facebook wall using javascript.</p>
<p>My roommate asked me if there was an easier way to clear the facebook news feed. When you have several years of &#8220;now friends with&#8221; and &#8220;commented&#8221;, this process becomes rather tedious especially given the delete confirmation. Here is a bookmarklet that you can type in the URL bar that will do the process for you (albeit a little slowly).</p>
<p><span id="more-35"></span></p>
<p><strong>WARNING: This code was written and tested on 4/22/10. Facebook could change their site layout at any time. I offer no guarantees as to the utility or non-destructiveness of this script. It worked when I tested it but there is a small possibility things could go wrong. Use at your own risk.</strong></p>
<p>To use, copy the first line (without the &#8220;//&#8221;, so that it reads &#8220;javascript:&#8230;&#8221;) into your address bar and hit enter. Then wait for the magic to stop.</p>
<p>I realize there are some nasty pieces in here (e.g. the code spins to wait on the AJAX requests). This is a &#8220;hack&#8221; and I have no intention of making it seem otherwise.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="660" height="405" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/yrpmoMO25j8&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="660" height="405" src="http://www.youtube.com/v/yrpmoMO25j8&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><script src="http://gist.github.com/374962.js"></script></p>
<p>Credit <a href="http://daringfireball.net/2007/03/javascript_bookmarklet_builder">Daring Fireball</a> for the bookmarklet conversion script.</p>
]]></content:encoded>
			<wfw:commentRss>http://iamnafets.com/tech/?feed=rss2&amp;p=35</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>boost::lambda</title>
		<link>http://iamnafets.com/tech/?p=18</link>
		<comments>http://iamnafets.com/tech/?p=18#comments</comments>
		<pubDate>Mon, 19 Oct 2009 07:13:17 +0000</pubDate>
		<dc:creator>iamnafets</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[Boost]]></category>
		<category><![CDATA[foreach]]></category>
		<category><![CDATA[Functional]]></category>
		<category><![CDATA[Lambda]]></category>

		<guid isPermaLink="false">http://iamnafets.com/tech/?p=18</guid>
		<description><![CDATA[Computer programmers are designed to see patterns everywhere; we discover the systems that underly processes and phenomena for the advantage of our software. Usually, the same watchful eye that looks for patterns in shipping routes also looks for routine in his/her own work. The evolution of languages is a direct consequence of those observations. As [...]]]></description>
			<content:encoded><![CDATA[<p>Computer programmers are designed to see patterns everywhere; we discover the systems that underly processes and phenomena for the advantage of our software. Usually, the same watchful eye that looks for patterns in shipping routes also looks for routine in his/her own work. The evolution of languages is a direct consequence of those observations. As it became clear that programs were oriented around data structures with associated functions, OOP was born. C++ is evolving. Slowly. By committee. But the fellows at the <a href="http://www.boost.org/">Boost project</a> are making artful use of template meta programming, operator overloading, and general trickery to bring the advances of modern, dynamic languages into the statically checked world of C++. Cheers.</p>
<p><span id="more-18"></span></p>
<p>So, you just got started with C.<br />
<script src="http://gist.github.com/213020.js"></script></p>
<p>C++ STL introduces vectors.<br />
<script src="http://gist.github.com/213022.js"></script></p>
<p>&#8230;and iterators.<br />
<script src="http://gist.github.com/213023.js"></script></p>
<p>&#8230;and some hideous ways to do simple things.<br />
<script src="http://gist.github.com/213027.js"></script></p>
<p>Boost makes it easy.<br />
<script src="http://gist.github.com/213028.js"></script></p>
<p>And powerful.<br />
<script src="http://gist.github.com/213029.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://iamnafets.com/tech/?feed=rss2&amp;p=18</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Calendar Retrieve Events for Additional Calendars</title>
		<link>http://iamnafets.com/tech/?p=14</link>
		<comments>http://iamnafets.com/tech/?p=14#comments</comments>
		<pubDate>Thu, 08 Oct 2009 17:07:37 +0000</pubDate>
		<dc:creator>iamnafets</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[additional calendars]]></category>
		<category><![CDATA[gdata]]></category>
		<category><![CDATA[google calendar]]></category>

		<guid isPermaLink="false">http://iamnafets.com/tech/?p=14</guid>
		<description><![CDATA[I&#8217;ve been experimenting with an idea that mergers Remember the Milk (RTM) and Google Calendar. Problem is, their APIs are a bit less documented than I originally expected. No matter, the internet to the rescue!

Google calendar provides some pretty neat examples for how to login and retrieve all the events on your default calendar, but [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with an idea that mergers Remember the Milk (RTM) and Google Calendar. Problem is, their APIs are a bit less documented than I originally expected. No matter, the internet to the rescue!</p>
<p><span id="more-14"></span></p>
<p>Google calendar provides some pretty neat examples for how to login and retrieve all the events on your default calendar, but neglects to mention additional private calendars under your account. The distinction, which isn&#8217;t documented, is that when you create additional calendars <a href="http://markmail.org/message/t37i7p5i36krl2dc#query:google%20calendar%20%22incorrect%20private%20url%22+page:1+mid:2jxiepfamtzmuosp+state:results">they are not actually assigned your username</a> but instead get a unique username so they can migrate between user accounts. Secondly, while you can authenticate yourself for private events on your own calendar, you can&#8217;t authenticate against this new username. This has two implications:</p>
<p>1) Username/password authentication won&#8217;t work (we&#8217;ll use magic cookie).<br />
2) The private event feed requires a unique key.</p>
<p>Thus <a href="http://code.google.com/apis/calendar/data/1.0/developers_guide_python.html#RetrievingDateRange">what was formerly</a>:<br />
<script src="http://gist.github.com/213034.js"></script><br />
Becomes:<br />
<script src="http://gist.github.com/213037.js"></script><br />
As far as I can tell, the private key can only be accessed from within the &#8220;Calendar Properties&#8221; inside of Google Calendar. Additionally, if you copy and paste the result, you will end up with an HTML-escaped @ (%40). Be sure to replace this with an @, otherwise you&#8217;ll get an invalid user ID.</p>
<p>Hopefully this helps! Comment with any questions and I&#8217;ll try to answer them.</p>
]]></content:encoded>
			<wfw:commentRss>http://iamnafets.com/tech/?feed=rss2&amp;p=14</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
