<?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>UMBC ebiquity &#187; Programming</title>
	<atom:link href="http://ebiquity.umbc.edu/blogger/category/cs/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://ebiquity.umbc.edu/blogger</link>
	<description>EBB is the ebiquity research group\\\'s blog at the University of Maryland, Baltimore County (UMBC).  We focus on technologies that facilitate the design, implementation and control of distributed, intelligent information systems -- mobile and pervasive computing, ad hoc networking, multiagent systems, knowledge representation and reasoning, and the semantic web.  As the tides of technology ebb and flow, we hope the good ideas wash up on our beach and the bad ones drift back out to sea.</description>
	<lastBuildDate>Mon, 30 Jan 2012 02:42:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Lisp in 96 lines of Python: Maxwells equations of software</title>
		<link>http://ebiquity.umbc.edu/blogger/2010/09/30/lisp-in-96-lines-of-python-maxwells-equations-of-software/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2010/09/30/lisp-in-96-lines-of-python-maxwells-equations-of-software/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 02:15:51 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=3564</guid>
		<description><![CDATA[TweetPeter Norvig has exquisite tastes in programming, is a Lisp guru and is also a great Python hacker. Put that together and what do you get? Lis.py, an interpreter for the core of the Lisp dialect Scheme in 96 lines of Python. Norvig mentions Alan Kay&#8217;s view of Lisp as &#8220;Maxwell’s Equations of Software&#8221; in [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton3564" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2010%2F09%2F30%2Flisp-in-96-lines-of-python-maxwells-equations-of-software%2F&amp;text=Lisp%20in%2096%20lines%20of%20Python%3A%20Maxwells%20equations%20of%20software&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2010%2F09%2F30%2Flisp-in-96-lines-of-python-maxwells-equations-of-software%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p><a href="http://en.wikipedia.org/wiki/Peter_Norvig">Peter Norvig</a> has exquisite tastes in programming, is a Lisp guru and is also a great Python hacker.  Put that together and what do you get?  <a href="http://norvig.com/lispy.html">Lis.py</a>, an interpreter for the core of the Lisp dialect <a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)">Scheme</a> in 96 lines of Python.  Norvig mentions Alan Kay&#8217;s view of Lisp as &#8220;Maxwell’s Equations of Software&#8221; in a 2004 <a href="http://queue.acm.org/detail.cfm?id=1039523">interview</a> with Stu Feldman:</p>
<blockquote><p> <b>SF:</b> If nothing else, Lisp was carefully defined in terms of Lisp.
<p> <b>AK</b>: Yes, that was the big revelation to me when I was in graduate school—when I finally understood that the half page of code on the bottom of page 13 of the Lisp 1.5 manual was Lisp in itself. These were “Maxwell’s Equations of Software!” This is the whole world of programming in a few lines that I can put my hand over.  </p>
</blockquote>
<p>There is also a companion essay, <a href="http://norvig.com/lispy2.html">(How to Write a ((Better) Lisp) Interpreter (in Python))</a>, that shows how to add other features, like macros, quasi-quote, tail recursion optimization and continuations.  Sadly, this bloats the code to well over 200 lines.</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2010/09/30/lisp-in-96-lines-of-python-maxwells-equations-of-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kodu: see apple red, move toward quickly</title>
		<link>http://ebiquity.umbc.edu/blogger/2010/09/21/kodu-see-apple-red-move-toward-quickly/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2010/09/21/kodu-see-apple-red-move-toward-quickly/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 13:20:04 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=3521</guid>
		<description><![CDATA[TweetThe New York times has a short article, The 8-Year-Old Programmer, on Kodu, a programming environment intended to help young children learn to write programs. &#8220;Kodu, built by a team at Microsoft’s main campus outside Seattle, is a programming environment that runs on an Xbox 360, using the game console’s controller rather than a keyboard. [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton3521" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2010%2F09%2F21%2Fkodu-see-apple-red-move-toward-quickly%2F&amp;text=Kodu%3A%20see%20apple%20red%2C%20move%20toward%20quickly&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2010%2F09%2F21%2Fkodu-see-apple-red-move-toward-quickly%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>The New York times has a short article, <a href="http://www.nytimes.com/2010/09/19/magazine/19Essays-kodu-t.html">The 8-Year-Old Programmer</a>, on Kodu, a programming environment intended to help young children learn to write programs.<br />
<img src="http://ebiquity.umbc.edu/blogger/wp-content/uploads/2010/09/kudo_project_badge1.jpg" alt="" title="kudo_project_badge" width="90" height="120" align="right" /></p>
<blockquote><p> &#8220;Kodu, built by a team at Microsoft’s main campus outside Seattle, is a programming environment that runs on an Xbox 360, using the game console’s controller rather than a keyboard. Instead of typing if/then statements in a syntax that must be memorized — as adult programmers do — the student uses the Xbox controller to pop up menus that contain options from which to choose. Kodu itself resembles a video game, with a point-and-click interface instead of the thousand-lines-of-text coding tools used by grown-ups.&#8221;  </p></blockquote>
<p>You can also read about Kodu in the Wikipedia article <a href="http://en.wikipedia.org/wiki/Kodu_Game_Lab">Kodu Game Lab</a> or <a href="http://research.microsoft.com/en-us/projects/kodu/">Kodu project page</a> at Microsoft Research, from which you can also <a href="http://fuse.microsoft.com/project/kodu.aspx">download a free version</a> for the PC.</p>
<p>Kodu is an rule-based, event-driven language with a simple context free <a href="http://research.microsoft.com/en-us/projects/kodu/kodugrammar.pdf">grammar</a> that lets you write rules like <i>&#8220;see apple red, move toward quickly&#8221;</i>.</p>
<p>Kudu takes it&#8217;s place in a long history of programming languages developed to teach programming to children, starting with <a href="http://en.wikipedia.org/wiki/Logo_(programming_language)">Logo</a> in the late 1960s.  None of these have ever truly caught on, although Logo was taught in many elementary schools in the 1980s.  As a computer scientist, I believe that being able to write simple programs for one&#8217;s own use will eventually be a skill that all educated people will have, just as being able to basic numerical computations and write effective text are today.</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2010/09/21/kodu-see-apple-red-move-toward-quickly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A review of the Google Go programming language</title>
		<link>http://ebiquity.umbc.edu/blogger/2009/11/12/a-review-of-googles-go-programming-language/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2009/11/12/a-review-of-googles-go-programming-language/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 05:15:32 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=2671</guid>
		<description><![CDATA[TweetMark Chu-Carroll is a Google software engineer who&#8217;s written a long, detailed and informed review of Google&#8217;s new programming language Go. It&#8217;s worth a read if you are interested in understanding what it&#8217;s like as a programming language. Here&#8217;s a few points that I took note of. &#8220;The guys who designed Go were very focused [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton2671" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F11%2F12%2Fa-review-of-googles-go-programming-language%2F&amp;text=A%20review%20of%20the%20Google%20Go%20programming%20language&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F11%2F12%2Fa-review-of-googles-go-programming-language%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Mark Chu-Carroll is a Google software engineer who&#8217;s written a long, detailed and informed review of <a href="http://scienceblogs.com/goodmath/2009/11/googles_new_language_go.php">Google&#8217;s new programming language Go</a>.  It&#8217;s worth a read if you are interested in understanding what it&#8217;s like as a programming language. Here&#8217;s a few points that I took note of.</p>
<ul>
&#8220;The guys who designed Go were very focused on keeping things as small and simple as possible. When you look at it in contrast to a language like C++, it&#8217;s absolutely striking. Go is very small, and very simple. There&#8217;s no cruft. No redundancy. Everything has been pared down. But for the most part, they give you what you need. If you want a C-like language with some basic object-oriented features and garbage collection, Go is about as simple as you could realistically hope to get.&#8221;</p>
<p>&#8220;The most innovative thing about it is its type system. &#8230; It ends up giving you something with the flavor of Python-ish duck typing, but with full type-checking from the compiler.&#8221;</p>
<p>&#8220;Go programs compile really astonishingly quickly. When I first tried it, I thought that I had made a mistake building the compiler. It was just too damned fast. I&#8217;d never seen anything quite like it.&#8221;</p>
<p>&#8220;At the end of the day, what do I think? I like Go, but I don&#8217;t love it. If it had generics, it would definitely be my favorite of the C/C++/C#/Java family. It&#8217;s got a very elegant simplicity to it which I really like. The interface type system is wonderful. The overall structure of programs and modules is excellent. But it&#8217;s got some ugliness. &#8230;  It&#8217;s not going to wipe C++ off the face of the earth. But I think it will establish itself as a solid alternative.&#8221;
</ul>
<p><a href="http://golang.org/">Go</a> sounds like a language that will help you grow as a computer scientist if you use it.  That&#8217;s a good enough recommendation for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2009/11/12/a-review-of-googles-go-programming-language/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Can a programming language make you happy?</title>
		<link>http://ebiquity.umbc.edu/blogger/2009/05/11/can-a-programming-language-make-you-happy/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2009/05/11/can-a-programming-language-make-you-happy/#comments</comments>
		<pubDate>Tue, 12 May 2009 01:03:29 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1855</guid>
		<description><![CDATA[TweetWe all know that some programming languages are a joy to use and others can be damned painful. Lukas Biewald ran an interesting experiment to gather some data about this in his post, The Programming Language with the Happiest Users. &#8220;Which languages make programmers the happiest? &#8230; I decided to do a little market research. [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1855" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F05%2F11%2Fcan-a-programming-language-make-you-happy%2F&amp;text=Can%20a%20programming%20language%20make%20you%20happy%3F&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F05%2F11%2Fcan-a-programming-language-make-you-happy%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>We all know that some programming languages are a joy to use and others can be damned painful.  Lukas Biewald ran an interesting experiment to gather some data about this in his post, <a href="http://blog.doloreslabs.com/2009/05/the-programming-language-with-the-happiest-users/">The Programming Language with the Happiest Users</a>.</p>
<blockquote><p> &#8220;Which languages make programmers the happiest? &#8230; I decided to do a little market research. I scraped the top 150 most recent tweets on Twitter for the query “X language” where X was one of {COBOL, Ruby, Fortran, Python, Visual Basic, Perl, Java, Haskell, Lisp, C}. Then I asked three people on Amazon Mechanical Turk to verify that the tweet was on the topic. If so, I asked if the tweet seemed positive, negative or neutral. &#8230;&#8221;</p></blockquote>
<p>Great idea and a nice use of Amazon Mechanical Turk!</p>
<div align="center"><a href='http://ebiquity.umbc.edu/blogger/wp-content/uploads/2009/05/langsent.png'><img src="http://ebiquity.umbc.edu/blogger/wp-content/uploads/2009/05/langsent-300x209.png" alt="" title="Which programming languages have the happiest users?" width="300" height="209"  /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2009/05/11/can-a-programming-language-make-you-happy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Python: Basic of the future !?!</title>
		<link>http://ebiquity.umbc.edu/blogger/2009/04/28/python-basic-of-the-future/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2009/04/28/python-basic-of-the-future/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 16:48:34 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1842</guid>
		<description><![CDATA[TweetGuido van Rossum has been blogging about the lack of support for optimizing tail recursion in Python (he&#8217;s agin it). His most recent post, Final Words on Tail Calls, includes this paragraph near the end. &#8216;And here it ends. One other thing I learned is that some in the academic world scornfully refer to Python [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1842" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F04%2F28%2Fpython-basic-of-the-future%2F&amp;text=Python%3A%20Basic%20of%20the%20future%20%21%3F%21&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F04%2F28%2Fpython-basic-of-the-future%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p><a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> has been blogging about the lack of support for optimizing tail recursion in Python (he&#8217;s agin it).  His most recent post, <a href="http://neopythonic.blogspot.com/2009/04/final-words-on-tail-calls.html">Final Words on Tail Calls</a>, includes this paragraph near the end.</p>
<blockquote><p> &#8216;And here it ends. One other thing I learned is that some in the academic world scornfully refer to Python as &#8220;the Basic of the future&#8221;. Personally, I rather see that as a badge of honor, and it gives me an opportunity to plug a book of <a href="http://oreilly.com/catalog/9780596515171/">interviews with language designers</a> to which I contributed, side by side with the creators of Basic, C++, Perl, Java, and other academically scorned languages &#8212; as well as those of ML and Haskell, I hasten to add. (Apparently the creators of Scheme were too busy arguing whether to say &#8220;tail call optimization&#8221; or &#8220;proper tail recursion.&#8221; <img src='http://ebiquity.umbc.edu/blogger/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &#8217; </p></blockquote>
<p>I&#8217;ve not yet been able to track down any sources calling Python the &#8216;Basic of the future&#8217; &#8212; all I could find is one person who referred to Java this way and another referring to Javascript. But for a programming language, it is a great slur, or maybe, to take Guido&#8217;s stance, a great compliment.</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2009/04/28/python-basic-of-the-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: Hadoop on Windows with Eclipse</title>
		<link>http://ebiquity.umbc.edu/blogger/2009/04/09/hadoop-on-windows-with-eclipse/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2009/04/09/hadoop-on-windows-with-eclipse/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 16:35:06 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[High performance computing]]></category>
		<category><![CDATA[MC2]]></category>
		<category><![CDATA[Multicore Computation Center]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1821</guid>
		<description><![CDATA[TweetHadoop has become one of the most popular frameworks to exploit parallelism on a computing cluster. You don&#8217;t actually need access to a cluster to try Hadoop, learn how to use it, and develop code to solve your own problems. UMBC Ph.D student Vlad Korolev has written an excellent tutorial, Hadoop on Windows with Eclipse, [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1821" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F04%2F09%2Fhadoop-on-windows-with-eclipse%2F&amp;text=Tutorial%3A%20Hadoop%20on%20Windows%20with%20Eclipse&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F04%2F09%2Fhadoop-on-windows-with-eclipse%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p><a href="http://en.wikipedia.org/wiki/Hadoop">Hadoop</a> has become one of the most popular frameworks to exploit parallelism on a computing cluster. You don&#8217;t actually need access to a cluster to try Hadoop, learn how to use it, and develop code to solve your own problems.  </p>
<p>UMBC Ph.D student <a href="http://ebiquity.umbc.edu/person/html/Vladimir/Korolev/">Vlad Korolev</a> has written an excellent tutorial, <a href="http://ebiquity.umbc.edu/Tutorials/Hadoop/">Hadoop on Windows with Eclipse</a>, showing how to install and use Hadoop on a single computer running Microsoft Windows.  It also covers the Eclipse Hadoop plugin, which enables you to create and run Hadoop projects from Eclipse.  In addition to step by step instructions, the tutorial has short videos documenting the process.  </p>
<p>If you want to explore Hadoop and are comfortable developing Java programs in Eclipse on a Windows box, this tutorial will get you going.  Once you have mastered Hadoop and had developed your first project using it, you can go about finding a cluster to run it on.</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2009/04/09/hadoop-on-windows-with-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perl/Python Phrasebook</title>
		<link>http://ebiquity.umbc.edu/blogger/2009/02/05/perlpython-phrasebook/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2009/02/05/perlpython-phrasebook/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:03:47 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1761</guid>
		<description><![CDATA[TweetPeople who&#8217;s native language is Perl might find the Perl/Python phrasebook handy. When talking to the Python interpreter, some try hand gestures, typing slowly or using ALL CAPS, but these seldom work and can often annoy or even alarm the interpreter. This phrasebook covers the most common things you need to say to a simple [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1761" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F02%2F05%2Fperlpython-phrasebook%2F&amp;text=Perl%2FPython%20Phrasebook&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F02%2F05%2Fperlpython-phrasebook%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>People who&#8217;s native language is Perl might find the <a href="http://wiki.python.org/moin/PerlPhrasebook">Perl/Python phrasebook</a> handy.  When talking to the Python interpreter, some try hand gestures, typing slowly or using ALL CAPS, but these seldom work and can often annoy or even alarm the interpreter.  This phrasebook covers the most common things you need to say to a simple Python system.  For example, if you wanted to tell it to read your file as a list of lines, there&#8217;s a <a href="http://wiki.python.org/moin/PerlPhrasebook#Readingafileasalistoflines">phrasebook entry</a> that that shows just how to say it.</p>
<blockquote>
<p>my $filename = &#8220;cooktest1.1-1&#8243;;<br />
open my $f, $filename or die &#8220;can&#8217;t open $filename: $!\n&#8221;;<br />
@lines = &lt;$f>;</p>
<p>&#8211;</p>
<p>filename = &#8220;cooktest1.1-1&#8243;<br />
f = open(filename) # Python has exceptions with somewhat-easy to<br />
                   # understand error messages. If the file could<br />
                   # not be opened, it would say &#8220;No such file or<br />
                   # directory: %filename&#8221; which is as<br />
                   # understandable as &#8220;can&#8217;t open $filename:&#8221;<br />
lines = f.readlines()
</p></blockquote>
<p>Many of the entries also contain helpful facts and advice about the customs and social norms of native Python speakers.  Not only can this keep you out of trouble, it will deepen your understanding of the colorful and sometimes quaint Python speakers.   I hope that the pocket travel version of the phrasebook, suitable for downloading onto an ipod, will be out soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2009/02/05/perlpython-phrasebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>octo.py: quick and easy MapReduce for Python</title>
		<link>http://ebiquity.umbc.edu/blogger/2009/01/02/octopy-quick-and-easy-mapreduce-for-python/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2009/01/02/octopy-quick-and-easy-mapreduce-for-python/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 17:34:37 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[MC2]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[distributed computing needs]]></category>
		<category><![CDATA[MapReduce]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1718</guid>
		<description><![CDATA[TweetThe amount of free, interesting, and useful data is growing explosively. Luckily, computer are getting cheaper as we speak, they are all connected with a robust communication infrastructure, and software for analyzing data is better than ever. That&#8217;s why everyone is interested in easy to use frameworks like MapReduce for every-day programmers to run their [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1718" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F01%2F02%2Foctopy-quick-and-easy-mapreduce-for-python%2F&amp;text=octo.py%3A%20quick%20and%20easy%20MapReduce%20for%20Python&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2009%2F01%2F02%2Foctopy-quick-and-easy-mapreduce-for-python%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>The amount of free, interesting, and useful data is growing explosively. Luckily, computer are getting cheaper as we speak, they are all connected with a robust communication infrastructure, and software for analyzing data is better than ever.  That&#8217;s why everyone is interested in easy to use frameworks like <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a> for every-day programmers to run their data crunching in parallel.</p>
<p><a href="http://code.google.com/p/octopy/">octo.py</a> is a very simple MapReduce like system inspired by Ruby&#8217;s <a href="http://tech.rufy.com/2006/08/mapreduce-for-ruby-ridiculously-easy.html"> Starfish</a>.</p>
<blockquote><p>
&#8220;<a href="http://code.google.com/p/octopy/">Octo.py</a> doesn&#8217;t aim to meet all your distributed computing needs, but its simple approach is amendable to a large proportion of parallelizable tasks. If your code has a for-loop, there&#8217;s a good chance that you can make it distributed with just a few small changes. If you&#8217;re already using Python&#8217;s map() and reduce() functions, the changes needed are trivial!&#8221;
</p></blockquote>
<p>triangular.py is the simple example given in the documentation that is used with octo.py to compute the first 100 <a href="http://wikipedia.org/wiki/Triangular_number">triangular numbers</a>.</p>
<blockquote>
<pre>
# triangular.py compute first 100 triangular numbers. Do
# 'octo.py server triangular.py' on server with address IP
# and 'octo.py client IP' on each client. Server uses source
# &#038; final, sends tasks to clients, integrates results. Clients
# get tasks from server, use mapfn &#038; reducefn, return results.

source = dict(zip(range(100), range(100)))

def final(key, value):
    print key, value

def mapfn(key, value):
    for i in range(value + 1):
        yield key, i

def reducefn(key, value):
    return sum(value)
</pre>
</blockquote>
<p>Put <a href="http://ebiquity.umbc.edu/blogger/wp-content/uploads/2009/01/octo.py">octo.py</a> on all of the machines you want to use. On the machine you will use as a server (with ip address &lt;ip&gt;), also install <a href="http://ebiquity.umbc.edu/blogger/wp-content/uploads/2009/01/triangular.py"> triangular.py</a>, and then execute:</p>
<pre>
     python octo.py server triangular.py &amp;
</pre>
<p>On each of your clients, run </p>
<pre>
     python octo.py client &lt;ip&gt; &amp;
</pre>
<p>You can try this out using the same machine to run the server process and one or more client processes, of course.</p>
<p>When the clients register with the server, they will get a copy of <em>triangular.py</em> and wait for tasks from the server.  The server access the data from <em>source</em> and distributed tasks to the clients. These in turn use <em>mapfn</em> and <em>reducefn</em> to complete the tasks, returning the results.  The server integrates these and, when all have completed, invokes <em>final</em>, which in this case just prints the answers, and halts.  The clients continue to run, waiting for more tasks to do. </p>
<p>Octo.py is not a replacement for more sophisticated frameworks like Hadoop or Disco but if you are working in Python, its <a href="http://en.wikipedia.org/wiki/KISS_principle">KISS</a> approach is a good way to get started with the MapReduce paradigm and might be all you need for a small projects.</p>
<p>(Note: The package has not been updated since April 2008, so it&#8217;s status is not clear.  But further development would run the risk of making it more complex and would be self-defeating.)</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2009/01/02/octopy-quick-and-easy-mapreduce-for-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WWGD: Understanding Google&#8217;s Technology Stack</title>
		<link>http://ebiquity.umbc.edu/blogger/2008/12/24/wwgd-understanding-googles-technology-stack/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2008/12/24/wwgd-understanding-googles-technology-stack/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 16:15:38 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[GENERAL]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[MapReduce]]></category>
		<category><![CDATA[pagerank]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1708</guid>
		<description><![CDATA[TweetIt&#8217;s popular to ask &#8220;What Would Google Do&#8221; these days &#8212; The Google reports over 7,000 results for the phrase. Of course, it&#8217;s not just about Google, which we all use as the archetype for a new Web way of building and thinking about information systems. Asking WWGD can be productive, but only if we [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1708" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2008%2F12%2F24%2Fwwgd-understanding-googles-technology-stack%2F&amp;text=WWGD%3A%20Understanding%20Google%26%238217%3Bs%20Technology%20Stack&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2008%2F12%2F24%2Fwwgd-understanding-googles-technology-stack%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>It&#8217;s popular to ask &#8220;What Would Google Do&#8221; these days &#8212; The Google reports over <a href="http://www.google.com/search?num=20&#038;hl=en&#038;safe=off&#038;q=%22what+would+google+do%22&#038;btnG=Search">7,000 results</a> for the phrase.  Of course, it&#8217;s not just about Google, which we all use as the archetype for a new Web way of building and thinking about information systems.  Asking WWGD can be productive, but only if we know how to implement and exploit the insights the answer gives us.  This in turn requires us (well, some of us, anyway) to understand the algorithms, techniques, and software technology that Google and other large scale Web-oriented companies use.  We need to ask &#8220;How Would Google Do It&#8221;.</p>
<p><a href="http://michaelnielsen.org/blog/?page_id=181">Michael Nielsen</a> has a nice post on <a href="http://michaelnielsen.org/blog/?p=523">using your laptop to compute PageRank for millions of webpages</a>. His posts reviews PageRank and how to compute it and shows a short, but reasonably efficient, Python program that can easily do a graph with a few million nodes.  While not sufficient for many applications, like the Web, there are lots of interesting and significant graphs this small Python program can handle &#8212; Wikipedia pages, DBLP publications, RDF namespaces, BGP routers, Twitter followers, etc.</p>
<p>The post is part of a series Nielsen is making on the <a href="http://michaelnielsen.org/blog/?page_id=503">Google Technology Stack</a> including PageRank, MapReduce, BigTable, and GFS.  The posts are a byproduct of a series of weekly lectures he&#8217;s giving starting earlier this month in Waterloo.  Here&#8217;s the way that Nielsen describes the series.</p>
<blockquote><p> &#8220;Part of what makes Google such an amazing engine of innovation is their internal technology stack: a set of powerful proprietary technologies that makes it easy for Google developers to generate and process enormous quantities of data. According to a senior Microsoft developer who moved to Google, Googlers work and think at a higher level of abstraction than do developers at many other companies, including Microsoft: “Google uses Bayesian filtering the way Microsoft uses the if statement” (<a href="http://www.joelonsoftware.com/items/2005/10/17.html">Credit: Joel Spolsky</a>). This series of posts describes some of the technologies that make this high level of abstraction possible.&#8221;  </p></blockquote>
<p>Videos of the first two lectures, <a href="http://michaelnielsen.org/blog/?p=509">Introducion to PageRank</a> and <a href="http://michaelnielsen.org/blog/?p=520">Building our PageRank Intuition</a>) are available online.  Nielsen illustrates the concepts and algorithms with well-written Python code and provides exercises to help readers master the material as well as &#8220;more challenging and often open-ended problems&#8221; which he has worked on but not completely solved. </p>
<p><a href="http://en.wikipedia.org/wiki/Michael_Nielsen">Nielsen</a> was trained as a as a theoretical Physicist but has shifted his attention to “the development of new tools for scientific collaboration and publication”.  As far as I can see, he is offering these as free public lectures out of a desire to share his knowledge and also to help (or maybe force) him to deepen his own understanding of the topics and develop better ways of explaining them.  In both cases, it an admirable and inspiring example for us all and appropriate for the holiday season.  Merry Christmas!</p>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2008/12/24/wwgd-understanding-googles-technology-stack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UMBC to offer special course in parallel programming</title>
		<link>http://ebiquity.umbc.edu/blogger/2008/12/09/umbc-to-offer-special-course-in-parallel-programming/</link>
		<comments>http://ebiquity.umbc.edu/blogger/2008/12/09/umbc-to-offer-special-course-in-parallel-programming/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 23:49:46 +0000</pubDate>
		<dc:creator>Tim Finin</dc:creator>
				<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[High performance computing]]></category>
		<category><![CDATA[MC2]]></category>
		<category><![CDATA[Multicore Computation Center]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ebiquity.umbc.edu/blogger/?p=1698</guid>
		<description><![CDATA[TweetThere’s a very interesting late addition to UMBC&#8217;s spring schedule &#8212; CMSC 491/691A, a special topics class on parallel programming. Programming multi-core and cell-based processors is likely to be an important skill in the coming years, especially for systems that require high performance such as those involving scientific computing, graphics and interactive games. The class [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton1698" class="tw_button" style="clear:left; float: left; margin-right: 10px; margin-top:10px; margin-left: -80;float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2008%2F12%2F09%2Fumbc-to-offer-special-course-in-parallel-programming%2F&amp;text=UMBC%20to%20offer%20special%20course%20in%20parallel%20programming&amp;related=ebiquity&amp;lang=en&amp;count=vertical&amp;counturl=http%3A%2F%2Febiquity.umbc.edu%2Fblogger%2F2008%2F12%2F09%2Fumbc-to-offer-special-course-in-parallel-programming%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://ebiquity.umbc.edu/blogger/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>There’s a very interesting late addition to UMBC&#8217;s spring schedule &#8212; CMSC 491/691A, a special topics class on parallel programming.  Programming multi-core and cell-based processors is likely to be an important skill in the coming years, especially for systems that require high performance such as those involving scientific computing, graphics and interactive games.  </p>
<p>The class will meet Tu/Thr from 7:00pm to 8:15pm in the &#8220;Game Lab&#8221; in ECS 005A and will be taught by research professors <a href="http://ebiquity.umbc.edu/person/html/John/E/Dorband/">John Dorband</a> and Shujia Zhou.  Both are very experienced in high-performance and parallel programming.  Professor Dorband helped to design and build the first Beowulf cluster computer in the mid 1990s when he worked at the NASA&#8217;s Goddard Space Flight Center. Shujia Zhou has worked at Northrop Grumman and NASA/Goddard on a wide range of projects using high-performance and parallel computing for climate modeling and simulation.</p>
<blockquote><p>
  CMSC 491/691a Special Topics in Computer Science:<br />
  Introduction to parallel computing emphasizing the<br />
  use of the IBM Cell B.E.</p>
<p>  3 credits.  Grade Method: REG/P-F/AUD Course meets in<br />
  ENG 005A. Prerequisites: CMSC 345 and CMSC 313 or<br />
  permission of instructor.</p>
<p>  [7735/7736] 0101 TuTh 7:00pm- 8:15pm
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ebiquity.umbc.edu/blogger/2008/12/09/umbc-to-offer-special-course-in-parallel-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

