<?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>Natan Yellin</title>
	<atom:link href="http://natanyellin.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://natanyellin.com</link>
	<description>An outdated personal website</description>
	<lastBuildDate>Sat, 14 Nov 2015 15:21:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Downloading PDF Documentation for ReadTheDocs Projects</title>
		<link>http://natanyellin.com/2012/04/22/downloading-pdf-documentation-for-readthedocs-projects/</link>
		<comments>http://natanyellin.com/2012/04/22/downloading-pdf-documentation-for-readthedocs-projects/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 09:37:55 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1300</guid>
		<description><![CDATA[Every Python developer is familiar with Read The Docs&#8216; beautiful HTML documentation for numerous open source projects. However, few developers know that Read the Docs hosts PDF versions of every project&#8217;s documentation. Here, for example, is the url to Django-Tastypie&#8217;s PDF docs: ...]]></description>
			<content:encoded><![CDATA[<p>Every Python developer is familiar with <a href="http://readthedocs.org/">Read The Docs</a>&#8216; beautiful HTML documentation for numerous open source projects. However, few developers know that Read the Docs hosts PDF versions of every project&#8217;s documentation.</p>
<p>Here, for example, is the url to <a href="http://django-tastypie.readthedocs.org/en/latest/index.html">Django-Tastypie&#8217;s</a> PDF docs:</p>
<blockquote><p><a href="http://media.readthedocs.org/pdf/django-tastypie/latest/django-tastypie.pdf">http://media.readthedocs.org/pdf/django-tastypie/latest/django-tastypie.pdf</a></p></blockquote>
<p>You can replace <em>django-tastypie</em> with the slug for any Read the Docs project.</p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2012/04/22/downloading-pdf-documentation-for-readthedocs-projects/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hide Google Plus Notifications on Google and Gmail</title>
		<link>http://natanyellin.com/2012/03/26/hide-google-plus-notifications-on-google-and-gmail/</link>
		<comments>http://natanyellin.com/2012/03/26/hide-google-plus-notifications-on-google-and-gmail/#comments</comments>
		<pubDate>Sun, 25 Mar 2012 23:30:10 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1287</guid>
		<description><![CDATA[Tired of Google aggressively pushing Google Plus? Don&#8217;t want to share your search results with friends?  Not feeling social while you read your email? I wrote a tiny userstyle to hide Google Plus notifications on Google and Gmail. I&#8217;ll update it as necessary.]]></description>
			<content:encoded><![CDATA[<p>Tired of Google aggressively pushing Google Plus? Don&#8217;t want to share your search results with friends?  Not feeling social while you read your email?</p>
<p><a title="Hide Google Plus Notifications" href="http://userstyles.org/styles/63098/hide-google-plus-notifications-march-2012?r=1332718041">I wrote a tiny userstyle to hide Google Plus notifications on Google and Gmail.</a> I&#8217;ll update it as necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2012/03/26/hide-google-plus-notifications-on-google-and-gmail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Goodbye Planet GNOME</title>
		<link>http://natanyellin.com/2012/01/27/goodbye-pgo/</link>
		<comments>http://natanyellin.com/2012/01/27/goodbye-pgo/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 04:21:41 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1278</guid>
		<description><![CDATA[I have been a Planet GNOME blogger for almost three years now. Every post has been a pleasure. I learned some truly odd and interesting things, like how to strangely pass parameter in C and how the kernel reads shebangs. For ...]]></description>
			<content:encoded><![CDATA[<p>I have been a Planet GNOME blogger for almost three years now. Every post has been a pleasure. I learned some truly odd and interesting things, like <a href="http://natanyellin.com/2011/10/13/use-of-void-in-c-prototypes/comment-page-1/#comment-77648">how to strangely pass parameter in C</a> and <a href="http://natanyellin.com/2010/12/20/bad-interpreter-no-such-file-or-directory/comment-page-1/#comment-21583">how the kernel reads shebangs</a>.</p>
<p>For over two years PGO has put up with my oddities, like buying AskJeevesMom.com. I never received warnings to stay on topic. The GNOME community is the most friendly and welcoming online community I know. #gnome-hackers was my home as a teenager and I don&#8217;t think I heard a dirty word once. The GNOME community simply rocks.</p>
<p>Knowing that my posts end up on PGO has always made blogging seem like a bold and glorious undertaking, though I felt a midget among giants. My posts end up on the same page where HP blogs and Mark Shuttleworth announces.</p>
<p>Tonight I&#8217;m saying goodbye because in three weeks my blog will be<a href="http://aruiz.synaptia.net/siliconisland/2012/01/planet-gnome-changes-in-planet-membership-policy.html"> removed from PGO</a> and I support that decision.</p>
<p>You see, my blog was once about GNOME and Linux. When I was added to PGO in 2009, I was a new and passionate GNOME user <a href="http://natanyellin.com/2009/11/12/zeitgeist-hackfest-user-experience-team/">who blogged about Zeitgeist</a>. Today I use OS X and occasionally GNOME 2. I used to be passionate about FOSS, but nowadays I&#8217;m a student and I&#8217;m just happy if I eat two meals a day, preferably with a cup of fresh squeezed orange juice, assuming that isn&#8217;t over-budget, but of course it always is.</p>
<p>It has been a pleasure. If you want to follow me, subscribe to my blog&#8217;s RSS feed, follow <a href="https://twitter.com/#!/aantn">@aantn</a> or <a href="https://plus.google.com/115068043655723460205/">plus me</a> - or even just email me. Do people still use RSS? I still use email.</p>
<p><a title="The best song ever" href="http://www.youtube.com/watch?v=bG6b3V2MNxQ">So long and thanks for all the fish.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2012/01/27/goodbye-pgo/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Politician Market &#8211; Post Launch Writeup on Conversions, AppEngine, and Launching</title>
		<link>http://natanyellin.com/2012/01/26/politician-market/</link>
		<comments>http://natanyellin.com/2012/01/26/politician-market/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 19:21:14 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Startups]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1268</guid>
		<description><![CDATA[On Tuesday, I released Politician Market, a satirical, fake, marketplace for buying US politician votes. I brought it online, posted to Hacker News, and went to take a shower. 15 minutes later, I&#8217;m wearing a towel when I notice that Politician Market ...]]></description>
			<content:encoded><![CDATA[<p>On Tuesday, I released <a title="Politician Market" href="http://politicianmarket.com">Politician Market</a>, a <strong>satirical, fake, </strong>marketplace for buying US politician votes. I brought it online, posted to Hacker News, and went to take a shower. 15 minutes later, I&#8217;m wearing a towel when I notice that Politician Market is #1 on HN and the server is melting. <em>12 requests per second</em>. Gosh. I spent the next hour coding in underpants only. My roommate walked in with family members in the middle. He just pointed, said something with the word &#8220;roommate&#8221;, and walked out.</p>
<p style="text-align: center;"><a href="http://natanyellin.com/wordpress/wp-content/uploads/2012/01/Screen-shot-2012-01-26-at-8.25.42-PM.png"><img class="aligncenter size-full wp-image-1269" title="Screen shot 2012-01-26 at 8.25.42 PM" src="http://natanyellin.com/wordpress/wp-content/uploads/2012/01/Screen-shot-2012-01-26-at-8.25.42-PM.png" alt="" width="360" height="205" /></a></p>
<p>I wanted Politician Market to be entirely static site, so I used <a title="JotForm" href="http://jotform.com/">JotForm</a> for signups. There were so many sign-ups that I crashed <em>JotForm&#8217;s servers </em>after only 10 minutes and had to move the sign-up form to Google Docs.</p>
<h3>Signups and Conversions</h3>
<p><em>Conversion tip: If you want to optimize sign-ups, <strong>don&#8217;t </strong>use  an external service. Sign-ups stopped almost entirely after moving to Google Docs. (I received only 40 signups after the move.) If you want to gain feedback, <strong>do </strong>place a feedback form <strong>on the homepage</strong> and you&#8217;ll get plenty of feedback.</em></p>
<p>12,000 uniques and 4 hours later, Politician Market mysteriously disappeared from the homepage and traffic started to subside. Some time before then, I had to disable the contact form entirely because I was about to overrun my JotForm quota. Despite disabling the form, people kept submitting it, often blank. (A browser bug?) At that point, I changed the form&#8217;s action to &#8220;#&#8221; and added an overlay (see below), but <strong>people kept submitting the damn form</strong>. My brother told me that he wrote me a long message in the contact form, because he was convinced that it really did get sent after all. What must you do for people to believe you?</p>
<p style="text-align: center;"><a href="http://natanyellin.com/wordpress/wp-content/uploads/2012/01/Screen-shot-2012-01-26-at-8.35.55-PM.png"><img class="aligncenter  wp-image-1270" title="Screen shot 2012-01-26 at 8.35.55 PM" src="http://natanyellin.com/wordpress/wp-content/uploads/2012/01/Screen-shot-2012-01-26-at-8.35.55-PM.png" alt="" width="512" height="209" /></a></p>
<p>Another conversion tip: <a href="http://www.politicianmarket.com/#share">Adding social sharing buttons seems to matter.</a> There were 12,000 hits while we were on HN for four hours. After pg killed the submission, the long tail brought (and is still bringing) another 2k. If you add sharing buttons, make sure to include Google Plus. The break down was 259 shares on Twitter, 40 on Google Plus, and a bunch on Facebook. (For an unknown reason, Facebook wont show me the stats anymore.)</p>
<p>I didn&#8217;t have time to A/B test, but conversion rates <em>seemed</em> to rocket when I placed annoying sharing links so far up that they pushed content below the fold. I hated that, so I soon reverted the changes. (Startup idea: I wish I could run automatic A/B tests by including a javascript file that would hash the page, check with a 3rd party server to see if it changed, and provide conversion data when I&#8217;m cowboy coding. Create that and I will pay a one time $10 fee for the service.)</p>
<p>For <strong>absolutely no reason</strong>, I asked for phone numbers in the signup form. About 30% of all sign-ups included them.</p>
<h3>Avoid AppEngine Like the Plague</h3>
<p>I originally wanted to host on S3, but it wouldn&#8217;t accept my credit card so I used AppEngine and <a href="https://github.com/stochastic-technologies/static-appengine-hoster">static-app-engine-hoster</a>. Don&#8217;t do that. There is no caching and you lose all the benefits of a static site. I wasn&#8217;t expecting so many hits, so I didn&#8217;t think this through.</p>
<p>More on AppEngine: Deployment is easy, but payment sucks. AppEngine makes you pay per-week, so if you want to use $10 a day, you have to deposite at least $70. (Slimeballs.) <strong>AppEngine has absolutely no support for paying customers.</strong> I sent two emails about urgent issues and never heard back. <strong>Avoid AppEngine like the plague.</strong></p>
<h3>Publicizing</h3>
<p>I tried publicizing Politician Market on Reddit, Slashdot, and Digg. It almost took off on Reddit, but Slashdot ignored it despite votes on the Firehose submission and Digg was a laughable waste of time. (What they say about Digg is correct: If you aren&#8217;t part of the oligarchy you might as well submit the link to /dev/null.) I emailed a few tech and political bloggers. Most of them ignored me, but some had incredibly kind words and published a link. <strong>Do</strong> have the chutzpa to email bloggers.</p>
<p>This is the <a title="Freeversation" href="http://freeversation.com/">second</a> launch I have done. <em>Third time ice cream.</em> Does anyone know where that weird Israeli saying comes from?</p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2012/01/26/politician-market/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Away from home? Hack some good for the holidays</title>
		<link>http://natanyellin.com/2011/12/24/away-from-home-hack-some-good-for-the-holidays/</link>
		<comments>http://natanyellin.com/2011/12/24/away-from-home-hack-some-good-for-the-holidays/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 17:24:01 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1256</guid>
		<description><![CDATA[Happy holidays, everyone! I&#8217;m off for Hanukah and I want to donate a few holiday hours to a charitable project. Do you know of a good cause that could use a C hacker or independent Python web developer? Let me ...]]></description>
			<content:encoded><![CDATA[<p>Happy holidays, everyone!</p>
<p>I&#8217;m off for Hanukah and I want to donate a few holiday hours to a charitable project. Do you know of a good cause that could use a C hacker or independent Python web developer? Let me know and I&#8217;ll donate four hours tomorrow night, with the goal of continuing to help out during the new year.</p>
<p>Are you a coder yourself? Can you pledge the same? Send me an email and we will code for good tomorrow.</p>
<p><strong>Update: Join us in #holidayhack on Freenode!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2011/12/24/away-from-home-hack-some-good-for-the-holidays/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Termbrot</title>
		<link>http://natanyellin.com/2011/12/17/termbrot/</link>
		<comments>http://natanyellin.com/2011/12/17/termbrot/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 17:35:33 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[fractals]]></category>
		<category><![CDATA[mandelbrot]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1243</guid>
		<description><![CDATA[I decided to learn Ruby, so I present my first experiment in a new language: Termbrot! Termbrot iterates over points in the complex plane, animating the image as it discards points from the Mandelbrot set. Get it on GitHub.]]></description>
			<content:encoded><![CDATA[<p>I decided to learn Ruby, so I present my first experiment in a new language: <a title="Termbrot" href="https://github.com/aantn/Termbrot">Termbrot!</a></p>
<div style="text-align:center"><a href="https://github.com/aantn/Termbrot"><img class="size-medium wp-image-1244 aligncenter" title="Termbrot" src="http://natanyellin.com/wordpress/wp-content/uploads/2011/12/Screen-shot-2011-12-17-at-7.31.04-PM-300x187.png" alt="" width="300" height="187" /></a></div>
<p></p>
<p>Termbrot iterates over points in the complex plane, animating the image as it discards points from the Mandelbrot set. <a title="Termbrot" href="https://github.com/aantn/Termbrot">Get it on GitHub.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2011/12/17/termbrot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dear Google, Please Stop This</title>
		<link>http://natanyellin.com/2011/12/08/dear-google-please-stop-this/</link>
		<comments>http://natanyellin.com/2011/12/08/dear-google-please-stop-this/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 16:30:50 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1223</guid>
		<description><![CDATA[I hate it when Google auto-corrects my searches without telling me. I didn&#8217;t search for Magic or hotkeys. It&#8217;s okay to auto-correct, but give me an undo link.]]></description>
			<content:encoded><![CDATA[<p>I hate it when Google auto-corrects my searches without telling me.</p>
<p style="text-align: center;"><a href="http://natanyellin.com/wordpress/wp-content/uploads/2011/12/Screen-shot-2011-12-08-at-6.24.10-PM.png"><img class="aligncenter size-medium wp-image-1224" title="Google fail" src="http://natanyellin.com/wordpress/wp-content/uploads/2011/12/Screen-shot-2011-12-08-at-6.24.10-PM-300x149.png" alt="" width="300" height="149" /></a></p>
<p style="text-align: left;">I didn&#8217;t search for <em>Magic</em> or <em>hotkeys.</em> It&#8217;s okay to auto-correct, but give me an undo link.</p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2011/12/08/dear-google-please-stop-this/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Bypassing Little Snitch</title>
		<link>http://natanyellin.com/2011/11/03/bypassing-little-snitch/</link>
		<comments>http://natanyellin.com/2011/11/03/bypassing-little-snitch/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 13:10:54 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1149</guid>
		<description><![CDATA[&#8220;Little Snitch informs you whenever a program attempts to establish an outgoing Internet connection. You can then choose to allow or deny this connection, or define a rule how to handle similar, future connection attempts. This reliably prevents private data ...]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;Little Snitch informs you whenever a program attempts to establish an outgoing Internet connection. You can then choose to allow or deny this connection, or define a rule how to handle similar, future connection attempts. <strong>This reliably prevents private data from being sent out without your knowledge.</strong> Little Snitch runs inconspicuously in the background and it can also detect network related activity of viruses, trojans and other malware.&#8221; &#8212; Little Snitch website</p></blockquote>
<h3>Foreword</h3>
<p>Programs like <a href="http://www.obdev.at/products/littlesnitch/index.html">Little Snitch</a> instill users with a false sense of security. Mac owners <a href="http://arstechnica.com/civis/viewtopic.php?f=19&amp;t=70862&amp;sid=9553dcd0072c0dcfc6a1b85077033d2d">often</a> <a href="http://forums.macrumors.com/showthread.php?t=995054">use</a> Little Snitch to prevent pirated applications from dialing home and to ensure that cracked versions of software don&#8217;t contain spyware. Nothing could be more naive: If an attacker can run code in the right context, it&#8217;s game over. Apps like Little Snitch can&#8217;t possibly prevent that.</p>
<p>Keep in mind that this specific attack could have been prevented, but there are more insidious ways to bypass Little Snitch. The security model is broken by design.</p>
<h3>How to bypass Little Snitch</h3>
<p>Once a binary is allowed access to the internet, Little Snitch will continue to allow access even if the binary changes. On OS X, applications are usually installed by dragging them to the Applications folder. This means they are owned by the user who installed them. Firefox and Chrome take advantage of this to auto-update without the root password. We can use this to overwrite binaries.</p>
<p>We bypass Little Snitch by replacing a trusted binary with our own executable; it will execute with the network-permissions of the original app.</p>
<h3>Example</h3>
<p>We need a binary that connects to the internet and we can&#8217;t use an interpreted language. For your convenience, <a href="https://github.com/aantn/littler-snitch">here is one such program</a>.</p>
<p>Download it. Then compile as follows:</p>
<pre class="wp-code-highlight prettyprint">brew install curl &amp;amp;&amp;amp; brew link curl
make</pre>
<p>You can ensure that Little Snitch is working by running ./payload.</p>
<p>Lets backup Firefox and replace it.</p>
<pre class="wp-code-highlight prettyprint">mv /Applications/Firefox.app/Contents/MacOS/firefox{,.orig}
mv payload /Applications/Firefox.app/Contents/MacOS/firefox</pre>
<p>That&#8217;s it. If you were writing a program that needed network access without permission,  you would do this programatically and execute Firefox. That&#8217;s not the case here, so launch Firefox manually and examine /little_snitch_example.txt</p>
<p>Lastly, you probably want to use Firefox again:</p>
<pre class="wp-code-highlight prettyprint">mv /Applications/Firefox.app/Contents/MacOS/firefox{.orig,}</pre>
<h3>Closing Notes</h3>
<p>In real usage, you should examine ~/Library/Application Support/Little Snitch/rules.usr.xpl to pick the right binary.</p>
<p>Lastly, all testing was done on Snow Leopard. You may need to tweak this for Lion or the App Store.</p>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2011/11/03/bypassing-little-snitch/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Use of void in C prototypes</title>
		<link>http://natanyellin.com/2011/10/13/use-of-void-in-c-prototypes/</link>
		<comments>http://natanyellin.com/2011/10/13/use-of-void-in-c-prototypes/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 17:37:34 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1045</guid>
		<description><![CDATA[A giant died this morning. My condolences go to Dennis Ritchie&#8217;s family and friends. In memory of Dennis, here is a short history lesson about C prototypes. Have you ever wondered why the following is legal? #include &#38;lt;stdio.h&#38;gt;; void foo ...]]></description>
			<content:encoded><![CDATA[<p><a href="https://plus.google.com/u/2/101960720994009339267/posts/ENuEDDYfvKP?hl=en">A giant died this morning.</a> My condolences go to Dennis Ritchie&#8217;s family and friends.</p>
<p>In memory of Dennis, here is a short history lesson about C prototypes. Have you ever wondered why the following is legal?</p>
<pre class="wp-code-highlight prettyprint">#include &amp;lt;stdio.h&amp;gt;;

void foo () {
    printf(&quot;Goodbye, World!\n&quot;);
}

int main (int argc, char **argv) {
    foo(1); /* Call foo with a non-existent parameter */
    return 0;
}

---------------
$ gcc test.c -Wall -Werror
$ ./a.out
Goodbye, World!</pre>
<p>This is legal for historical reasons. <a href="http://stackoverflow.com/questions/7299310/of-macro-in-iowin32-h">In pre-ANSI C function prototypes didn&#8217;t include parameters.</a> C89 introduced parameters in prototypes, but it continued to recognize the old syntax for backwards compatibility.</p>
<p>If you want to declare a function foo that <em>really</em> takes no parameters, use void:</p>
<pre class="wp-code-highlight prettyprint">void foo (void);</pre>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2011/10/13/use-of-void-in-c-prototypes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing lxml on Leopard</title>
		<link>http://natanyellin.com/2011/10/03/installing-lxml-on-leopard/</link>
		<comments>http://natanyellin.com/2011/10/03/installing-lxml-on-leopard/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 06:18:18 +0000</pubDate>
		<dc:creator>Natan Yellin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[libxml2]]></category>
		<category><![CDATA[lxml]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://natanyellin.com/?p=1014</guid>
		<description><![CDATA[I&#8217;m surely the last developer using Leopard, but Snow Leopard couldn&#8217;t compete with Ubuntu and Lion has more warts than the Wicked Witch of the West. Anyway, you can&#8217;t just install lxml with pip (the preferred way of installing Python ...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m surely the last developer using Leopard, but Snow Leopard couldn&#8217;t compete with Ubuntu and Lion has more warts than the Wicked Witch of the West.</p>
<p><em>Anyway,</em> you can&#8217;t just install lxml with <a href="http://pypi.python.org/pypi/pip">pip</a> (the preferred way of installing Python libraries) because lxml depends on a recent version of libxml2. If you try, gcc will stop when it encounters missing headers added in later versions of libxml2:<em></em></p>
<pre class="wp-code-highlight prettyprint">libxml/schematron.h: No such file or directory blah blah blah</pre>
<p>Instead, use the fabulous <a title="Homebrew" href="http://mxcl.github.com/homebrew/">Homebrew</a> to install a newer version of libxml2 and then run pip with that version.</p>
<pre class="wp-code-highlight prettyprint">brew install libxml2
pip install lxml --install-option=&quot;--with-xml2-config=/usr/local/Cellar/libxml2/2.7.8/bin/xml2-config&quot;</pre>
]]></content:encoded>
			<wfw:commentRss>http://natanyellin.com/2011/10/03/installing-lxml-on-leopard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
