<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3" -->
<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/"
	>

<channel>
	<title>E15 Blog</title>
	<link>http://e15.media.mit.edu/blog</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Wed, 23 Jul 2008 07:36:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3</generator>
	<language>en</language>
			<item>
		<title>E15: iPhone and Multi-touch</title>
		<link>http://e15.media.mit.edu/blog/?p=39</link>
		<comments>http://e15.media.mit.edu/blog/?p=39#comments</comments>
		<pubDate>Mon, 21 Jul 2008 05:14:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=39</guid>
		<description><![CDATA[Although I really haven’t been looking, I don’t think I’ve seen any iPhone applications that use multi-touch for 3D navigation, so I thought I’d see if I could come up with a simple mapping suitable for navigation in E15, effectively turning the iPhone into a device for remote navigation of 3D space. My initial set [...]]]></description>
			<content:encoded><![CDATA[<p><font size="2">Although I really haven’t been looking, I don’t think I’ve seen any iPhone applications that use multi-touch for 3D navigation, so I thought I’d see if I could come up with a simple mapping suitable for navigation in E15, effectively turning the iPhone into a device for remote navigation of 3D space. My initial set of mappings used the pinching gesture to navigate in the z direction, and parallel two-fingered gestures for rotation about the x and y axes.</font><font size="2"> </font><br />
<br/><br />
<font size="2">After sketching these up, I wrote an iPhone application that detects the relevant gestures, and communicates with a running E15 instance on another machine, sending this gesture information over the network. I added E15 support to handle this incoming data, as well as built some infrastructure for invoking user-defined Python callbacks in response to actions received from the iPhone (e.g. tapping and shaking). Below is a short movie of demonstrating this functionality working in a 3D E15 context to interact with an image collection obtained from YouTube video thumbnails. It also shows E15 playing live video from YouTube, something I&#8217;ve never quite gotten around to showing in anything other than static images on my <a href="http://flickr.com/photos/kylebuza/">Flickr account</a> and <a href="http://e15web.media.mit.edu/">E15:Web</a>.<br />
<br/><br />
Read more <a href="http://buza.mitplw.com/blog/?p=174"> here</a>.</font><br />
<br/><br />
<a href="http://buza.mitplw.com/plw/iphone_render_compressed.mov"><img src="http://buza.mitplw.com/blog/wp-content/uploads/2008/07/iphone_mt3.png" height="454" width="455" title="iphone_mt3" class="aligncenter size-full wp-image-180" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=39</wfw:commentRss>
<enclosure url="http://buza.mitplw.com/plw/iphone_render_compressed.mov" length="8368618" type="video/quicktime" />
		</item>
		<item>
		<title>Now looking for beta testers.</title>
		<link>http://e15.media.mit.edu/blog/?p=38</link>
		<comments>http://e15.media.mit.edu/blog/?p=38#comments</comments>
		<pubDate>Tue, 22 Apr 2008 23:12:50 +0000</pubDate>
		<dc:creator>buza</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=38</guid>
		<description><![CDATA[We&#8217;ve just started handing out E15 binaries to a select group of individuals to help us start hammering out the bugs. If you&#8217;re interested in being a beta tester, email buza at mit dot edu with your system specs (OS X 10.5 required), and why you&#8217;re interested in giving it a try.
Go!
]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just started handing out E15 binaries to a select group of individuals to help us start hammering out the bugs. If you&#8217;re interested in being a beta tester, email buza at mit dot edu with your system specs (OS X 10.5 required), and why you&#8217;re interested in giving it a try.</p>
<p>Go!</p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=38</wfw:commentRss>
		</item>
		<item>
		<title>jscripteval(): Leveraging the DOM</title>
		<link>http://e15.media.mit.edu/blog/?p=36</link>
		<comments>http://e15.media.mit.edu/blog/?p=36#comments</comments>
		<pubDate>Thu, 27 Mar 2008 23:50:57 +0000</pubDate>
		<dc:creator>buza</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=36</guid>
		<description><![CDATA[I&#8217;ve been struggling for the past many months about how to most appropriately build an interface between Python and the DOM provided by the embedded E15 browser. As Tak and I prepare to show some E15 stuff at the upcoming ICWSM 2008 in Seattle, I began to feel some pressure to fix the integration once [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been struggling for the past many months about how to most appropriately build an interface between Python and the DOM provided by the embedded E15 browser. As Tak and I prepare to show some E15 stuff at the upcoming <a href="http://www.icwsm.org/2008/index.shtml">ICWSM 2008</a> in Seattle, I began to feel some pressure to fix the integration once and for all. The end result (at least for the time being) is a Python function: <em>jscripteval().</em> This allows us to evaluate arbitrary chunks of Javascript in the context of the embedded E15 browser in a manner similar to the <a href="http://www.greasespot.net/">Greasemonkey</a> Firefox plugin. We can now write Javascript to inspect and modify elements of the DOM, and even return these values back to the Python context.</p>
<p>This kind of easy DOM access allows us to augment the traditional browsing experience in strange new ways. As a simple example, we can write some Javascript to return all of the <em>src</em> attributes of the current page, and load them as individual images into the E15 context:</p>
<pre><font size="1">
from staticwriter import *
from random import random

jscript = “”&#8221;function pyeval(s) {
    res = document.getElementsByTagName(s)
    var myArray = [];
    for (var i = 0; i &lt; res.length; i++)
        myArray[i] = res[i].src;
    return myArray;
}
“”&#8221;
envcolor(1, 1, 1)
images = jscripteval( jscript, “pyeval”, [”img”])
for img in images:
    imgload(img, img, random(), random(), random(), 0, 0, 0)
</font></pre>
<p><font size="1"><font><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2008/03/e15_m2_sm.gif"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2008/03/e15_m2_sm.thumbnail.gif" /></a></font></font></p>
<p><font size="1"><font>In addition to this usage, <em>jscripteval()</em> can be used in another way. Users can specify a URL pattern that, if matched, will trigger the invocation of the specified Javascript, and return the value through the invocation of a specified Python callback function. In this way, we can write some Javascript that extracts out all of the message headers from my Facebook message inbox, and places that text next to each user icon.</font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=36</wfw:commentRss>
		</item>
		<item>
		<title>E15:YouTube</title>
		<link>http://e15.media.mit.edu/blog/?p=31</link>
		<comments>http://e15.media.mit.edu/blog/?p=31#comments</comments>
		<pubDate>Mon, 18 Feb 2008 09:42:11 +0000</pubDate>
		<dc:creator>buza</dc:creator>
		
		<category><![CDATA[news]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=31</guid>
		<description><![CDATA[Well, it wasn&#8217;t easy, but now we&#8217;ve included support for the procedural loading and playing of YouTube videos directly within E15. Through the use of the poorly documented Google Data APIs, E15 users can access all kinds of interesting YouTube video metadata to aid their visualizations. The new E15 interface with the new console. Now with [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it wasn&#8217;t easy, but now we&#8217;ve included support for the procedural loading and playing of YouTube videos directly within E15. Through the use of the poorly documented Google Data APIs, E15 users can access all kinds of interesting YouTube video metadata to aid their visualizations.<img src="http://e15.media.mit.edu/blog/wp-content/uploads/2008/02/jet2.thumbnail.png" /> <a href="http://e15.media.mit.edu/blog/wp-content/uploads/2008/02/yt_lg2.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2008/02/yt_lg2.thumbnail.png" /></a><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2008/02/yt_lg2.png"></a>The new E15 interface with the new <a href="http://blog.mudserver.org/2008/02/16/building-a-console-in-e15/">console</a>. Now with YouTube.</p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=31</wfw:commentRss>
		</item>
		<item>
		<title>New look, new features</title>
		<link>http://e15.media.mit.edu/blog/?p=27</link>
		<comments>http://e15.media.mit.edu/blog/?p=27#comments</comments>
		<pubDate>Fri, 18 Jan 2008 18:00:33 +0000</pubDate>
		<dc:creator>buza</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=27</guid>
		<description><![CDATA[This past week, Tak was nice enough to give the E15 interface a full overhaul, and he&#8217;s done an incredible job. Everything is much cleaner, and this has allowed us to continue pushing forward.
During this time, I finished up some more advanced E15 additions, providing users with the ability to modify the way they interact [...]]]></description>
			<content:encoded><![CDATA[<p>This past week, Tak was nice enough to give the E15 interface a full overhaul, and he&#8217;s done an incredible job. Everything is much cleaner, and this has allowed us to continue pushing forward.</p>
<p>During this time, I finished up some more advanced E15 additions, providing users with the ability to modify the way they interact with web content. I think the easiest way to demonstrate these new additions is through a detailed example, so here we go….</p>
<p>Suppose I’m an E15 user. I use it to write scripts and make nice visualizations. Suppose I have collected a few examples that I like, and want to make a nice little web page that contains some images that show what these scripts look like, and have those images link to the scripts themselves. As a demonstration, I took four existing scripts, and created a web page that shows them as follows:</p>
<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2008/01/script_list2.gif"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2008/01/script_list2.gif" /></a></p>
<p>The images in the page above link to the scripts themselves. That is, the html looks like the following:</p>
<pre id="line36"><font size="1">&lt;a href=&#8221;http://plw.media.mit.edu/balls.py&#8221;&gt; &lt;img src=&#8221;balls.png&#8221;&gt; &lt;/a&gt;</font></pre>
<p>When loaded in the context of a standard web browser, clicking on one of the images will show the textual form of the python script, which isn&#8217;t particularly interesting. What we would <em>really</em> like to do, is be able to click on one of those images, and have the script load directly into E15. Load, and start running immediately. The question is, then, how the heck would you do something like that?</p>
<p>While there isn&#8217;t really any particularly elegant way of supporting this functionality when using a standard browser, we can now do some nice things within E15 itself. What end user can do now, is write Python code not only to create visualizations and graphics, but code to create native OS X interfaces. With this functionality, end users can write scripts to create OS X windows that contain a web browser, for example. In addition, users can define what happens when certain browser-specific events happen (e.g. clicking on a link). For the most part, this boils down to the user writing a small piece of handling code to do something special when links are clicked on in the context of the custom browser the user has written. So,  the following script will allow us to detect whether or not the link we clicked on was a Python script, and if so, try to load it into E15:</p>
<pre><font size="1">def webView_didFinishLoadForFrame_(self,webview,frame):
    url = &#8230;
    if url.hasSuffix_(&#8221;.py&#8221;):
        e15_loadScript(url)</font></pre>
<p>The result?</p>
<pre><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2008/01/e15_a_sm.gif"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2008/01/e15_a_sm.gif" /></a></pre>
<p>Running this custom handling code in the context of our custom E15 browser allows us to talk to the web in ways never before possible. Giving creative individuals the ability to do with web content <em>what they want</em>, as opposed to <em>what they have to</em>, stands to be a paradigm changing idea for the future of creative media, and is an integral part of E15.</p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=27</wfw:commentRss>
		</item>
		<item>
		<title>Moving Objects and Moving to Objects</title>
		<link>http://e15.media.mit.edu/blog/?p=26</link>
		<comments>http://e15.media.mit.edu/blog/?p=26#comments</comments>
		<pubDate>Tue, 25 Dec 2007 20:26:06 +0000</pubDate>
		<dc:creator>mud</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=26</guid>
		<description><![CDATA[
This semester, I&#8217;ve been using E15 to visualize data from Facebook. Whether you like Facebook or not, it is one place that can offer a lot of social data related to you, and the data is unique for individual user. Thanks to E15 using Python, we can easily interface with Facebook using PyFacebook. Anyway, the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/12/facebook_1.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/12/facebook_1.thumbnail.png" /></a></p>
<p>This semester, I&#8217;ve been using E15 to visualize data from <a href="http://www.facebook.com" title="Facebook">Facebook</a>. Whether you like Facebook or not, it is one place that can offer a lot of social data related to you, and the data is unique for individual user. Thanks to E15 using Python, we can easily interface with Facebook using <a href="http://code.google.com/p/pyfacebook/" title="PyFacebook">PyFacebook</a>. Anyway, the Facebook visualization is still not done, but it will be posted when it is. <a href="http://plw.media.mit.edu/people/mud/media/E15_Facebook_final.mov">This is a video</a> I made for a class that shows the initial Facebook visualization.</p>
<p>There were numerous features that did not exist in E15 which had to be implemented for the Facebook visualization. Kyle already mentioned the threading issue. There&#8217;s now a method called settimeout and cleartimeout which can execute methods with a delay, much like JavaScript&#8217;s window.setTimeout() and clearTimeout(). Also, E15 did not have any facilities to move to an object in the environment nor a way to move the object&#8217;s coordinates once inserted.</p>
<p>Now both of these features are implemented. There is an elem_moveto() method which can animate any element into a new location in space. The camera can animate to fit an element into the viewing space by calling camera_goto().</p>
<p>Another feature attempted was using the accumulation buffer to create a trailing effect when elements moved. Given that E15&#8217;s native view size is 1600&#215;900, when the accumulation buffer was enabled, the frame rate dropped to a point of uselessness. It does look cool though&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=26</wfw:commentRss>
<enclosure url="http://scripts.mit.edu/~4.366/wiki/images/4/4f/E15_Facebook_final_s.mov" length="0" type="video/quicktime" />
<enclosure url="http://plw.media.mit.edu/people/mud/media/E15_Facebook_final.mov" length="125480627" type="video/quicktime" />
		</item>
		<item>
		<title>Scripting</title>
		<link>http://e15.media.mit.edu/blog/?p=22</link>
		<comments>http://e15.media.mit.edu/blog/?p=22#comments</comments>
		<pubDate>Sun, 25 Nov 2007 07:45:11 +0000</pubDate>
		<dc:creator>buza</dc:creator>
		
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=22</guid>
		<description><![CDATA[With the recent browser integration, E15 is now able to support custom user scripting. Because E15 has a Python interpreter at its core, page content can be searched, and browsing automated. As an example, we have integrated a spidering script into E15:In this example, a Python script directs the procedural traversal of a set of [...]]]></description>
			<content:encoded><![CDATA[<p>With the recent browser integration, E15 is now able to support custom user scripting. Because E15 has a Python interpreter at its core, page content can be searched, and browsing automated. As an example, we have integrated a spidering script into E15:<a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/crawl3.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/crawl3.png" width="442" height="252" /></a>In this example, a Python script directs the procedural traversal of a set of links originating from a single Flickr page. The end result is a space of pages that can then be visually explored. And if visual exploration is not enough, text-based filtering of results can reveal pages that would have otherwise been hard to find in a large set of pages:<a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/filter4-1.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/filter4-1.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=22</wfw:commentRss>
		</item>
		<item>
		<title>Browser integration</title>
		<link>http://e15.media.mit.edu/blog/?p=19</link>
		<comments>http://e15.media.mit.edu/blog/?p=19#comments</comments>
		<pubDate>Sat, 03 Nov 2007 23:36:31 +0000</pubDate>
		<dc:creator>buza</dc:creator>
		
		<category><![CDATA[news]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=19</guid>
		<description><![CDATA[When we give the E15 demo to sponsors here at the Media Lab, a question we&#8217;re often asked is whether or not the pages we&#8217;ve loaded are still &#8220;active&#8221;. Unfortunately, E15 was not built for this type of support. We&#8217;re trying to enable experiences and interactions with web content beyond the web browser, not to [...]]]></description>
			<content:encoded><![CDATA[<p>When we give the E15 demo to sponsors here at the Media Lab, a question we&#8217;re often asked is whether or not the pages we&#8217;ve loaded are still &#8220;active&#8221;. Unfortunately, E15 was not built for this type of support. We&#8217;re trying to enable experiences and interactions with web content <em>beyond</em> the web browser, not to simply re-create the browser experience within a 3D environment. However, there is an important relationship between the browser and web content, and E15 needs to have the ability to talk directly to the browser. As a result, we&#8217;ve recently integrated a full-fledged web browser into E15:</p>
<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/browsehistory_google_sm.png" onclick="return false;" title="Direct link to file"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/browsehistory_google_sm.thumbnail.png" height="269" width="502" /></a></p>
<p>With a browser, it becomes trivial to leverage the existing features of E15 to visually represent browser interactions. As a simple first demo, we can load a page into the embedded E15 browser, navigate through a set of pages, and construct a visual history of pages traversed. Show below is the result of the traversal of 9 links starting from google:</p>
<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/browsehistory1_sm.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/11/browsehistory1_sm.thumbnail.png" height="234" width="507" /></a></p>
<p><a href="javascript:void(0)" id="file-link-17" class="file-link image"> </a></p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=19</wfw:commentRss>
		</item>
		<item>
		<title>Type and Mipmaps</title>
		<link>http://e15.media.mit.edu/blog/?p=13</link>
		<comments>http://e15.media.mit.edu/blog/?p=13#comments</comments>
		<pubDate>Sun, 28 Oct 2007 17:50:26 +0000</pubDate>
		<dc:creator>mud</dc:creator>
		
		<category><![CDATA[graphics]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=13</guid>
		<description><![CDATA[A lot of times people tend to forget about the importance of type support. Some have poor font rendering, but most don&#8217;t support things like kerning or ligatures. Not supporting kerning is just unacceptable. We made sure we have great type support in E15, and we do. E15 can render TrueType, PostScript and OpenType, all [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of times people tend to forget about the importance of type support. Some have poor font rendering, but most don&#8217;t support things like kerning or ligatures. Not supporting kerning is just unacceptable. We made sure we have great type support in E15, and we do. E15 can render TrueType, PostScript and OpenType, all with kerning, ligatures and for OpenType, unicode support. The font rendering is also nice thanks to CoreText and Quartz. Here are some screen captures.</p>
<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/type-outside.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/type-outside.thumbnail.png" /></a></p>
<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/type-side.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/type-side.thumbnail.png" /></a></p>
<p><a href="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/type-closeup.png"><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/type-closeup.thumbnail.png" /></a></p>
<p>While adding support to text, we discovered that our mipmaps weren&#8217;t working. We noticed a lot of scintillation effects from the texts drawn in the environment. We are using NPOT textures, and after a couple days of going back and forth about whether NPOT mipmaps were possible or not, we finally figured it all out. As long as <a href="http://www.opengl.org/registry/specs/ARB/texture_non_power_of_two.txt">ARB_texture_non_power_of_two</a> extension is supported, NPOT mipmaps will work just like POT. The trick is to use GL_TEXTURE_2D and treat NPOT just like POT.The other problem which hopefully is fixed with the official release of Leopard is that our ATI X1900 does not support hardware mipmap generation. Instead, we have to call gluBuild2DMipmaps(). The NVIDIA 7300 however does support it.</p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=13</wfw:commentRss>
		</item>
		<item>
		<title>Curves from Wikipedia</title>
		<link>http://e15.media.mit.edu/blog/?p=4</link>
		<comments>http://e15.media.mit.edu/blog/?p=4#comments</comments>
		<pubDate>Mon, 08 Oct 2007 20:11:34 +0000</pubDate>
		<dc:creator>kjhollen</dc:creator>
		
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://e15.media.mit.edu/blog/?p=4</guid>
		<description><![CDATA[We&#8217;ve been using E15 to experiment with different layouts of web content in a 3D environment. The Python scripting interface makes it possible for us to have access to a wide variety of datasets using existing libraries to grab content from blogs, Flickr, Facebook, Wikipedia, and just about any other site with an API or [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been using E15 to experiment with different layouts of web content in a 3D environment. The Python scripting interface makes it possible for us to have access to a wide variety of datasets using existing libraries to grab content from blogs, Flickr, Facebook, Wikipedia, and just about any other site with an API or RSS feed. What to do with the web content is a much more challenging problem than actually acquiring the content.</p>
<p>In some early sketches of web content layouts, I had arranged webpages around the perimeter of a circle. While searching for more interesting equations to use for laying out pages, I found an awesome Wikipedia page called <a href="http://en.wikipedia.org/wiki/List_of_curves" target="_blank" title="Wikipedia's List of Curves">List of Curves</a> with over 50 different types of mathematical curves. The problem with this page, however, is that it has no pictures of the curves. I want to see what all the curves look like, but I&#8217;m not about to click through every single page, one at a time.</p>
<p>So, I wrote a Python script that uses the <a href="http://www.mediawiki.org/wiki/API" title="MediaWiki API for Wikipedia" target="_blank">MediaWiki API for Wikipedia</a> to find all the articles linked from the List of Curves article, finds the images linked from those articles, and finally renders all the images in E15 with the relevant article titles:</p>
<p><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/curves1-small.png" alt="Curves from Wikipedia rendered in E15" /></p>
<p>If you&#8217;re curious about how these pages were laid out, I used a <a href="http://en.wikipedia.org/wiki/Rose_(mathematics)" title="Rose curve">rose curve</a> with 8 petals &#8212; pictures of this curve are in the middle of the screenshot below:</p>
<p><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/rose-small.png" alt="Close up of rose curve" /></p>
<p>One more screenshot:</p>
<p><img src="http://e15.media.mit.edu/blog/wp-content/uploads/2007/10/spirals-small.png" alt="Pictures of spirals and other curves, in E15" /></p>
<p>I&#8217;ll be working with the same data more this week, so check back soon for more images, and probably a video or two!</p>
]]></content:encoded>
			<wfw:commentRss>http://e15.media.mit.edu/blog/?feed=rss2&amp;p=4</wfw:commentRss>
		</item>
	</channel>
</rss>
