<?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>Andrew Munn</title>
	<atom:link href="http://www.andrewmunn.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andrewmunn.com</link>
	<description>A Software Engineering Student</description>
	<lastBuildDate>Tue, 29 Jun 2010 00:17:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Midterms argh</title>
		<link>http://www.andrewmunn.com/2010/06/midterms-argh/</link>
		<comments>http://www.andrewmunn.com/2010/06/midterms-argh/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 00:14:49 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=211</guid>
		<description><![CDATA[I&#8217;ve got a midterm tomorrow so instead of studying I&#8217;ve decided to post on my neglected blog. So without further ado: I try to avoid taking a strong stance on programming languages because depending on one&#8217;s need there are plenty of acceptable languages for any project. Java or C#? Whatever. Python or Ruby? Meh. Scala, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got a midterm tomorrow so instead of studying I&#8217;ve decided to post on my neglected blog.  So without further ado:</p>
<p>I try to avoid taking a strong stance on programming languages because depending on one&#8217;s need there are plenty of acceptable languages for any project.<br />
Java or C#? Whatever.<br />
Python or Ruby? Meh.<br />
Scala, Erlang or perhaps Haskell? *shrug*</p>
<p>However, the University of Waterloo, in its wisdom has decided that CS 246: <em>Software Abstraction and Specification</em> is to be taught in C++.  C++ is the absolute last OO language that should be used to teach CS 246.  We spent way too long learning about copy constructors, operator overloading, memory management, pointers, references, friend functions, and forward declarations instead of the proper principles of effective OOP. CS 246 should be about design patterns, agile development, UML, unit testing and the like.  We are getting to that, but half the semester was wasted learning the intricacies of C++.</p>
<p>Don&#8217;t get me wrong, a strong background in C++ is an asset for any programmer, but it&#8217;s just a terrible teaching language.  Not to mention it&#8217;s not portable.  For the last homework project, we had to implement the game of Euchre.  The specification provided was incomplete, so the only way to determine the correct output was by copying logic and output from the provided reference implementation.  Not a bid deal. Except&#8230;</p>
<p>The only provided binary was compiled for 64 bit Linux.  Turns out my Ubuntu VM is 32 bit.  Crap.   I was forced to SSH into the slow Waterloo machines to test the code (I&#8217;m too lazy to install another VM).  If only the provided code was Java byte code, a Python .pyc file, or even Microsoft Intermediate Language (yes, MIL is portable thanks to Mono).</p>
<p>TL;DR: I finally understand why CS departments don&#8217;t teach CS using C++ anymore (except Waterloo, that is).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2010/06/midterms-argh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery and YUI</title>
		<link>http://www.andrewmunn.com/2010/02/jquery-and-yui/</link>
		<comments>http://www.andrewmunn.com/2010/02/jquery-and-yui/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 02:29:58 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=188</guid>
		<description><![CDATA[Recently I&#8217;ve had the pleasure of developing a web app using a combination of jQuery and YUI on the front end.  These two frameworks take strikingly different approaches to JavaScript development.  YUI is massive, verbose, and feels like using a mildly over-engineered Java library.  JQuery code tends to be much smaller and functional.  I imagine [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve had the pleasure of developing a web app using a combination of jQuery and YUI on the front end.  These two frameworks take strikingly different approaches to JavaScript development.  YUI is massive, verbose, and feels like using a mildly over-engineered Java library.  JQuery code tends to be much smaller and functional.  I imagine jQuery is much closer to what the creators of JavaScript originally had in mind.  The ease of navigating the DOM in jQuery needs to be seen to be believed:</p>
<pre>&lt;script&gt;
     //selects the first li element from the first ul under
     //the navigation element in the following HTML
     $("#navigation ul:first li:first"); //the entire JQuery code
&lt;/script&gt;
&lt;div id="navigation"&gt;
&lt;ul&gt;
   &lt;li&gt;foo&lt;/li&gt;
   &lt;li&gt;bar&lt;/li&gt;
   &lt;li&gt;Ackbar&lt;/li&gt;
   &lt;li&gt;Bob Barker&lt;/li&gt;
&lt;/ul&gt;
&lt;!--- subnav ---&gt;
&lt;ul&gt;
    &lt;li&gt;Some other useless list item&lt;/li&gt;
    &lt;li&gt;Jeff Bain should use JQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</pre>
<p>However, YUI does have one advantage.  The YUI GUI widgets are extremely powerful and exceed in breadth and depth the widgets of jQuery-UI.  For example, jQuery has no equivalent of the YUI DataTable.  Recently I was tasked with scrapping the data in a HTML &lt;table&gt; from a live website.  There was lots of superflious rows in the table, so I used jQuery&#8217;s AJAX API&#8217;s to download the table and remove all the irrelevent information. Once complete, I passed off the formatted &lt;table&gt; data to a YUI DataSource, which generated a beautiful, sortable, and resizable YUI DataTable on the fly.</p>
<p>Without jQuery, it would have been agany using YUI&#8217;s verbose and limited selectors.  Without YUI, I would have had to either create my own datasheet class or trust that a bug free and costumizable jQuery plugin existed.  jQuery and YUI are an awesome combination and cover just about anything you&#8217;d want to do on the web.</p>
<p>Disclaimer: I used YUI 2.8.  It&#8217;s entirely possible that YUI 3.0 is better, however it&#8217;s missing most of YUI 2&#8242;s nice widgets &#8211; defeating the point.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2010/02/jquery-and-yui/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Concurrency versus Distributed Systems</title>
		<link>http://www.andrewmunn.com/2009/11/concurrency-versus-distributed-systems/</link>
		<comments>http://www.andrewmunn.com/2009/11/concurrency-versus-distributed-systems/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 20:01:28 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=182</guid>
		<description><![CDATA[Up until recently I was a bit fuzzy on the difference between concurrency and distributed systems.  It was not until I was studying Facebook Chat, Erlang, Scala, Go, and the new python web server Tornado that it finally clicked.  Concurrency simply implies that two or more pieces of code are executing at the same time.  Distributed system are [...]]]></description>
			<content:encoded><![CDATA[<p>Up until recently I was a bit fuzzy on the difference between concurrency and distributed systems.  It was not until I was studying Facebook Chat, Erlang, Scala, Go, and the new python web server Tornado that it finally clicked.  Concurrency simply implies that two or more pieces of code are executing at the same time.  Distributed system are running concurrently on many different machines.</p>
<p>The difference is a critical when planning how to scale a system.  With simple concurrency, you can only scale a program vertically- by adding faster or more cores, installing more ram, etc.  However, a properly abstracted distributed system can be scaled horizontally &#8211; adding in more machines or nodes to the system easily by simply modifying a config file.</p>
<p>Scala and Erlang and Google&#8217;s new language Go share a model of concurrency based on message passing.  However, only one of these languages, Erlang, natively supports distributed systems using its message passing system.  Erlang&#8217;s native and transparent support of distributed computing is one of the reasons Facebook chose to use it for Facebook Chat. Other languages like Scala and Python require cumbersome third party libraries to support distributed computing.  Scala&#8217;s lack of native support for distributed computing is particularly interesting given that it&#8217;s concurrency model is directly based on Erlang.</p>
<p>So I could learn Erlang, or try to learn distributed programming in Python. It has <a href="http://wiki.python.org/moin/DistributedProgramming">tons of third party options</a> for distributed programming, but as yet I don&#8217;t know which is the best.</p>
<p>Thoughts? Am I an idiot?</p>
<p>PS: Thanks to my six readers <a href="http://jeffbain.ca/">Jeff</a>,<a href="http://www.thurn.ca/"> Thor</a>,<a href="http://www.karan.bhangui.com/"> Karan</a>, <a href="http://sadleric.net/">Eric</a>,  <a href="http://getawebsiterachel.com/">Rachel</a>, and Dad for reading!</p>
<p><em>EDIT:</em></p>
<p>And <a href="http://jamie-wong.com/">Jamie</a> (Nice blog dude! (Omegle Voyeur is hilarious))</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/11/concurrency-versus-distributed-systems/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Amazon.com</title>
		<link>http://www.andrewmunn.com/2009/11/amazon-com/</link>
		<comments>http://www.andrewmunn.com/2009/11/amazon-com/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 19:37:00 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=180</guid>
		<description><![CDATA[My next coop position will be with Amazon.com in Seattle from January to April 2010.  I&#8217;m excited and a bit nervous to be working at Amazon!  Getting this kind of coop position is one of the major reasons I chose Waterloo and the Software Engineering profession.  Hopefully the job lives up to the hype and I live [...]]]></description>
			<content:encoded><![CDATA[<p>My next coop position will be with Amazon.com in Seattle from January to April 2010.  I&#8217;m excited and a bit nervous to be working at Amazon!  Getting this kind of coop position is one of the major reasons I chose Waterloo and the Software Engineering profession.  Hopefully the job lives up to the hype and I live up to my own expectations of excellence.  I&#8217;d like to talk about what I&#8217;ll be doing over there, but I&#8217;m under a strict NDA.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/11/amazon-com/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ElectroMag</title>
		<link>http://www.andrewmunn.com/2009/10/electromag/</link>
		<comments>http://www.andrewmunn.com/2009/10/electromag/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:59:05 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=176</guid>
		<description><![CDATA[I am sitting in ECE 126, Electricity and Magnetism.  I&#8217;m not paying attention (clearly because I&#8217;m writing this). This class is useless for a Software Engineer. Ordinarily, I am entranced and fascinated by advanced science, but calculating the voltage or capacitance of a complex circuit system is of little interest to me. Perhaps if we [...]]]></description>
			<content:encoded><![CDATA[<p>I am sitting in ECE 126, Electricity and Magnetism.  I&#8217;m not paying attention <em>(clearly because I&#8217;m writing this)</em>.  This class is useless for a Software Engineer.  Ordinarily, I am entranced and fascinated by advanced science, but calculating the voltage or capacitance of a complex circuit system is of little interest to me.  Perhaps if we learned how these equations are derived class would at least be interesting &#8211; if not still useful for my degree.</p>
<p>It pains me that seemingly only one or two classes I take each term is relevant to Software Engineering.  This term it&#8217;s CS 241, which is by far the best class I&#8217;ve taken in my program thus far.  I&#8217;ve actually learned many interesting CS concepts, such as the origin of regular expressions in DFAs, MIPS assembly, and how to write a functioning assembler.  Thankfully, I&#8217;ve been informed I will have more classes of this quality in the future (hopefully).</p>
<p>It would be useful for a class on data structures and algorithms to be included in the 2A curriculum.  I independently studied graph theory in preparation of my interviews this semester and let me just say it was a good thing I did!</p>
<p>Finally, a tip for those who watch How I met your Mother and The Big Bang Theory.  Watch TBBT first, because the superior writing in HIMYM tends to ruin TBBT if watched second.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/10/electromag/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twitter</title>
		<link>http://www.andrewmunn.com/2009/08/twitter/</link>
		<comments>http://www.andrewmunn.com/2009/08/twitter/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 14:00:27 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=163</guid>
		<description><![CDATA[So maybe I don&#8217;t write a ton of blog updates&#8230; but I do use Twitter now!! http://www.twitter.com/andrewmunn]]></description>
			<content:encoded><![CDATA[<p>So maybe I don&#8217;t write a ton of blog updates&#8230; but I do use Twitter now!! <a href="http://www.twitter.com/andrewmunn">http://www.twitter.com/andrewmunn</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/08/twitter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Layout</title>
		<link>http://www.andrewmunn.com/2009/08/new-layout/</link>
		<comments>http://www.andrewmunn.com/2009/08/new-layout/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 01:30:35 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=161</guid>
		<description><![CDATA[This WordPress theme is gorgeous!  Checkout the Javascript rollover effects on the links on the left! Snazzy.]]></description>
			<content:encoded><![CDATA[<p>This WordPress theme is gorgeous!  Checkout the Javascript rollover effects on the links on the left! Snazzy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/08/new-layout/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Guest Post by Greg Burgoon</title>
		<link>http://www.andrewmunn.com/2009/07/guest-post-by-greg-burgoon/</link>
		<comments>http://www.andrewmunn.com/2009/07/guest-post-by-greg-burgoon/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 17:26:10 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/?p=155</guid>
		<description><![CDATA[Greg Burgoon is a Waterloo Computer Science student in his final year.  He is a colleague of mine at Xtreme Labs and has agreed to write a post on my blog.  Take it away Greg! &#8220;So, I was sitting today, thinking &#8216;Man, i feel like writing&#8230;.&#8217; and BAM, Andrew was like &#8216;I&#8217;ll let you do [...]]]></description>
			<content:encoded><![CDATA[<p>Greg Burgoon is a Waterloo Computer Science student in his final year.  He is a colleague of mine at Xtreme Labs and has agreed to write a post on my blog.  Take it away Greg!</p>
<p>&#8220;So, I was sitting today, thinking &#8216;Man, i feel like writing&#8230;.&#8217; and BAM, Andrew was like &#8216;I&#8217;ll let you do a guest post on my blog&#8217;.  So here I am.  So we&#8217;re doing Palm Pre development, and let me tell you&#8230;.its garbage&#8230;..but fantastic&#8230;&#8230;.at the same time.   Due to the nature of webOS, palm is very easy for web developers to get started on (or any developer, cuz let be honest, web development is easy), but because it is based on javascript it limits your capabilities (ie. hitting a server via ajax and retrieving a large file can kill your phone <img src='http://www.andrewmunn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Also, I like long walks on the beach.  And in true  5 year old writing style, here is the end of my post. THE END.&#8221;</p>
<p>Thanks Greg for the insightful, ground-breaking, and frankly riviting commentary.  Finally, here is a picture of the coolest person I&#8217;ve ever met.</p>
<div class="wp-caption aligncenter" style="width: 487px"><img title="Andrew At Work" src="http://photos-d.ak.fbcdn.net/hphotos-ak-snc1/hs142.snc1/5252_111062443908_701578908_2107323_807686_n.jpg" alt="Andrew is one badass dude." width="477" height="357" /><p class="wp-caption-text">Andrew is one badass dude.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/07/guest-post-by-greg-burgoon/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Back</title>
		<link>http://www.andrewmunn.com/2009/07/im-back/</link>
		<comments>http://www.andrewmunn.com/2009/07/im-back/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 02:17:28 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.andrewmunn.com/2009/07/im-back/</guid>
		<description><![CDATA[My blog is up and running after been down for a while. I&#8217;m now hosted on NFS, which charges by the bandwidth and HD space used, so don&#8217;t comment too much . Unfortunately many of my older posts have encoding errors which have added random characters. This is the result of a database dump mistake. [...]]]></description>
			<content:encoded><![CDATA[<p>My blog is up and running after been down for a while.  I&#8217;m now hosted on <a href="http://nearlyfreespeech.net">NFS</a>, which charges by the bandwidth and HD space used, so don&#8217;t comment too much <img src='http://www.andrewmunn.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>
<p>Unfortunately many of my older posts have encoding errors which have added random characters.  This is the result of a database dump mistake.  On the bright side, nobody read&#8217;s my posts anyway, so no loss to the world.</p>
<p>I shall write a post comparing developing for iPhone,  Palm Pre, Blackberry, Android, and Symbian soon.  Who knows, I might make it actually good and try to get on Reddit!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/07/im-back/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android, Blackberry, and Java ME</title>
		<link>http://www.andrewmunn.com/2009/07/android-blackberry-and-java-me/</link>
		<comments>http://www.andrewmunn.com/2009/07/android-blackberry-and-java-me/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 02:01:26 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://andrewmunn.com/?p=144</guid>
		<description><![CDATA[At my coop job this summer I&#8217;ve had the pleasure of developing mobile applications for the Android, Blackberry, and Symbian platforms.  The contrast between the three from a developer&#8217;s point of view is striking, especially for me because I ported an application between all three. The first platform I was introduced to was Google&#8217;s Android. [...]]]></description>
			<content:encoded><![CDATA[<p>At my coop job this summer I&#8217;ve had the pleasure of developing mobile applications for the Android, Blackberry, and Symbian platforms.  The contrast between the three from a developer&#8217;s point of view is striking, especially for me because I ported an application between all three.</p>
<p>The first platform I was introduced to was Google&#8217;s Android.  Android applications are written in Java. Â Blackberry and Symbian are written in Java ME. What&#8217;s the difference? Â I&#8217;ll illustrate with a few problems I experienced and the solutions I used.</p>
<p>Problem 1: I need to remove HTML tags from a string.</p>
<p>Android: I&#8217;ll either use a simple regular expression or the tag remover method that comes with Android.</p>
<p>Java ME: I&#8217;ll either write a crappy HTML remover by hand or find and install a 3rd party regex engine.</p>
<p>Problem 2: I need a GUI element that smoothly animates between a bunch of pictures. (A picture gallery)</p>
<p>Android: I&#8217;ll use the built in gallery widget.</p>
<p>Java ME: I&#8217;ll spend days writing my own gallery widget at a low level or pay to use a 3rd party GUI toolkit like J2ME Polish.</p>
<p>Problem 3: I need to format the output of some floating point numbers to 2 digits after the decimal point (ie, money)</p>
<p>Android: I&#8217;ll use the String Formatter class that comes with Java.</p>
<p>Java ME: I&#8217;ll be shocked that simple output formating that has been available since C was released is not available in Java ME. I will Â then I&#8217;ll spend 90 minutes formatting my output with if statements.</p>
<p>Problem 4: I need to sort an array of objects.</p>
<p>Android: I&#8217;ll have the objects implement Comparitor then I&#8217;ll use the built in Array sorting method.</p>
<p>Java ME: I jump off a cliff.</p>
<p>Problem 5: I need to store some user data</p>
<p>Android: I&#8217;ll use the built in SQLite DB or, for simple app settings, I&#8217;ll use a persistence dictionary.</p>
<p>Java ME: I overdose on cocaine.</p>
<p>You get the picture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewmunn.com/2009/07/android-blackberry-and-java-me/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
