<?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>chrisjrn&#039;s site &#187; uni</title>
	<atom:link href="http://chris.neugebauer.id.au/tags/uni/feed/" rel="self" type="application/rss+xml" />
	<link>http://chris.neugebauer.id.au</link>
	<description>Indeed it is.</description>
	<lastBuildDate>Tue, 24 Jan 2012 23:06:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>BSc(Hons) Graduation mk.3</title>
		<link>http://chris.neugebauer.id.au/2010/12/15/bschons-graduation-mk-3/</link>
		<comments>http://chris.neugebauer.id.au/2010/12/15/bschons-graduation-mk-3/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 23:19:41 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[graduation]]></category>
		<category><![CDATA[uni]]></category>
		<category><![CDATA[university medal]]></category>
		<category><![CDATA[utas]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/?p=1495</guid>
		<description><![CDATA[On Monday, I had the wonderful opportunity to walk through my third graduation ceremony for what is effectively the same degree! So a bit on how that happened, maybe? Well, I completed my Bachelor of Science with Honours degree in &#8230; <a href="http://chris.neugebauer.id.au/2010/12/15/bschons-graduation-mk-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On Monday, I had the wonderful opportunity to walk through my third graduation ceremony for what is effectively the same degree!  So a bit on how that happened, maybe?</p>
<p><a href="http://www.flickr.com/photos/chrisjrn/5261396779/" title="UTAS Graduation, December 2010 by Christopher Neugebauer, on Flickr"><img src="http://farm6.static.flickr.com/5283/5261396779_3186bdb233_m.jpg" width="240" height="160" alt="UTAS Graduation, December 2010" /></a></p>
<p>Well, I completed my Bachelor of Science with Honours degree in June, from which I graduated with First Class Honours in August.  Just on two weeks ago, I received a further letter, suggesting that I attend another graduation to collect a University Medal.  The University Medal is the highest award that can be awarded to an Undergraduate Student at the University of Tasmania, and my friend Josh Deprez did an <a href="http://joshdeprez.com/?p=395">exceedingly thorough writeup</a> of the dimensions etc of the Medal itself when he won his last year.</p>
<p>I note with some amusement the comment that I wrote on that post:</p>
<blockquote><p>Hmmm. Not so convinced I want to aim for a uni medal now. Really really worrying about the number of opportunities the dean would get to mispronounce my name.</p></blockquote>
<p>Luckily for me, they paid attention to this and solved the problem by awarding two other Medals in the same ceremony (one to a Maths/Physics student, Paul Stack; the other to my colleague from Computer Science, Theo Wadsley, both of whom thoroughly deserved their awards).  This resulted in the script detailed in Josh&#8217;s post being altered to something resembling: </p>
<p><a href="http://www.flickr.com/photos/chrisjrn/5261528329/" title="IMG_20101213_141528.jpg by Christopher Neugebauer, on Flickr"><img src="http://farm6.static.flickr.com/5168/5261528329_f18b518e34_m.jpg" width="240" height="180" alt="IMG_20101213_141528.jpg" /></a></p>
<p>Naturally, my name still needed to be read out, so I made the requisite alteration to my card in the hope of something resembling the correct pronunciation appearing (this is primarily due to the Dean at my BSc graduation in 2009 pronouncing my surname as &#8216;Nee-ge-boa&#8217;):</p>
<p><a href="http://www.flickr.com/photos/chrisjrn/5261528905/" title="IMG_20101213_141536.jpg by Christopher Neugebauer, on Flickr"><img src="http://farm6.static.flickr.com/5008/5261528905_c27872e314_m.jpg" width="240" height="180" alt="IMG_20101213_141536.jpg" /></a></p>
<p>The result wasn&#8217;t that bad (Something along the lines of &#8216;Neu-bauer&#8217;, which I&#8217;ll accept as a pass <img src='http://chris.neugebauer.id.au/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ).  </p>
<p>Since Josh&#8217;s graduation last year, they&#8217;ve made slight variations to the process of handing out Testamurs, instead of having blank scrolls handed out, the testamurs are now handed out in envelopes at the ceremony.  In this case, like every other student, I was handed an envelope reading &#8220;Your Graduation Certificate&#8221;, bearing a large UTAS Lion on it.  Unlike every other student, mine did not contain a testamur (I collected mine at my proper graduation in August), but instead a blank piece of cardboard &#8212; this naturally led to jokes about the worth of my degree&#8230;</p>
<p>Finally, here&#8217;s a photo of me with the medal, and its obverse, just in case you were at all interested:</p>
<div class="thumbnail"><a href="https://skitch.com/chrisjrn/rrsi6/medal-front"><img src="http://img.skitch.com/20101213-kpwmmxxuc8e1ms7nsmyf58bnit.preview.png" alt="Medal_Front" /></a></div>
<div class="thumbnail"><a href="https://skitch.com/chrisjrn/rrssy/medal-reverse"><img src="http://img.skitch.com/20101213-qtidwq1xb8cy2bbau5hfjchg4.preview.png" alt="Medal_Reverse" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2010/12/15/bschons-graduation-mk-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Academia, gogo!</title>
		<link>http://chris.neugebauer.id.au/2010/10/21/academia-gogo/</link>
		<comments>http://chris.neugebauer.id.au/2010/10/21/academia-gogo/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 10:36:18 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[honours]]></category>
		<category><![CDATA[ivcnz2010]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/?p=1437</guid>
		<description><![CDATA[In today&#8217;s exciting post I describe a rather amusing series of events and the end result of it: The events: In August I submitted a paper to a Computer Vision conference being held in New Zealand in November. This is &#8230; <a href="http://chris.neugebauer.id.au/2010/10/21/academia-gogo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In today&#8217;s exciting post I describe a rather amusing series of events and the end result of it:</p>
<p>The events:</p>
<ul>
<li>In August I submitted a paper to a Computer Vision conference being held in New Zealand in November.  This is entirely sensible because my honours research received a first-class grade and was in the field of computer vision.</li>
<li>In September, a large earthquake occurred in the Christchurch region, causing much pandemonium amongst organisers of said conference.</li>
<li>On Tuesday this week, my paper got accepted.  Naturally, the conference was organised by people in Christchurch, and they were disrupted by several weeks due to the earthquake.</li>
</ul>
<p>So the conference is on November 8 and 9 in Queenstown, New Zealand; this leaves me just over two weeks to:</p>
<ol>
<li>Arrange travel</li>
<li>Revise the paper based upon reviewers&#8217; comments</li>
<li>Prepare a poster to present at the conference</li>
<li>Get there</li>
</ol>
<p>Hrrrnght.</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2010/10/21/academia-gogo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Honours Etc</title>
		<link>http://chris.neugebauer.id.au/2010/07/10/honours-etc/</link>
		<comments>http://chris.neugebauer.id.au/2010/07/10/honours-etc/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 20:02:05 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[honours]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2010/07/10/honours-etc/</guid>
		<description><![CDATA[Ooops, I appear to have forgotten to update my blog (as usual), and forgot to mention anything at all about my Thesis or my Honours work otherwise for the past four months. I truly can&#8217;t be bothered writing about it &#8230; <a href="http://chris.neugebauer.id.au/2010/07/10/honours-etc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ooops, I appear to have forgotten to update my blog (as usual), and forgot to mention anything at all about my Thesis or my Honours work otherwise for the past four months.  I truly can&#8217;t be bothered writing about it at the moment, so I&#8217;ll just mention that I submitted it a couple of weeks ago, and that I received a mark of First Class for it.  I&#8217;m pretty happy about that.</p>
<p>More news at 11!</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2010/07/10/honours-etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Summer of Etc!</title>
		<link>http://chris.neugebauer.id.au/2009/12/18/summer-of-etc/</link>
		<comments>http://chris.neugebauer.id.au/2009/12/18/summer-of-etc/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 22:04:55 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[honours]]></category>
		<category><![CDATA[sydney]]></category>
		<category><![CDATA[thesis]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/12/18/summer-of-etc/</guid>
		<description><![CDATA[Once again, I&#8217;ve left this site for faaaaar too long without letting you all know what I&#8217;ve been up to of late (oops). Needless to say, a fair bit has happened in the past few weeks, and it&#8217;s probably worth &#8230; <a href="http://chris.neugebauer.id.au/2009/12/18/summer-of-etc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Once again, I&#8217;ve left this site for faaaaar too long without letting you all know what I&#8217;ve been up to of late (oops).  Needless to say, a fair bit has happened in the past few weeks, and it&#8217;s probably worth telling you all about this.</p>
<h4>Honours, Semester 1 (during semester 2)</h4>
<p>Uni study&#8217;s been going quite swimmingly of late: both my units of study went pretty well (insofar as I got HDs in them); thesis on the other hand, has only really just started to take off.  My research is into the computer vision task fo <em>object detection</em> (for example, finding faces in images), in particular, I&#8217;m working on improving the scheme built into the Intel OpenCV Library (Haar Classifier Cascades, if you&#8217;re at all interested) by having them consider colour.</p>
<p>One of the deficiencies I&#8217;ve discovered during my research is lack of sufficient real-world colour face datasets to perform detection upon: whilst I need in the order of 2000 faces (1000 to train upon, 1000 to test upon), the largest useful academic set is an order of magnitude smaller.  For this reason I&#8217;m developing my own set.  My current intention is to assemble the data set entirely from Creative Commons-licensed data (e.g. from Flickr and Wikipedia) and to release the resultant set under CC licenses too.  I expect I&#8217;ll give a lightning talk at LCA on this, I&#8217;ll also dump a blog post here somewhere about what sort of data I&#8217;d like donated.</p>
<h4>Summer of Google</h4>
<p>One thing that&#8217;s looking like it will derail my Honours work slightly happened not too long ago.  I applied for a Software Engineering Internship at Google Sydney back in July, and didn&#8217;t hear much about it.  In late October, however, I very suddenly got contacted about it, and interviewed for the position, and quite happily, I was offered a job.  This, amongst other things, involved dropping (almost*) everything for the summer, and moving to Sydney within two weeks, which I guess I&#8217;ve done somewhat successfully.</p>
<p>So I&#8217;m now working at Google until sometime during the first two weeks of semester (!).  My current project involves working on [redacted], to make [redacted] do [redacted]; in related news, the new Sydney offices are pretty damn cool, the food is excellent, and the work is fun.  I&#8217;m really looking forward to the rest of my time here.</p>
<p>*I guess the most important thing to mention here is that I&#8217;m still spending my week-and-a-bit in Wellington for <a href="http://lca2010.linux.org.au">Linux.conf.au 2010</a>, and that I&#8217;ll still be running the <a href="http://blogs.tucs.org.au/oplm">Open Programming Languages Miniconf</a> there.  I can hardly wait!</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/12/18/summer-of-etc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3 birds&#8230;</title>
		<link>http://chris.neugebauer.id.au/2009/07/24/3-birds/</link>
		<comments>http://chris.neugebauer.id.au/2009/07/24/3-birds/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 10:06:43 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[graduation]]></category>
		<category><![CDATA[honours]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/07/24/3-birds/</guid>
		<description><![CDATA[Let&#8217;s kill two birds with one picture, as it were&#8230; Point 1? I got an Honours scholarship. Yay me! Secondly? I got my final mark today (for Functional Analysis), a very satisfying 95 (better than my previous marks for the &#8230; <a href="http://chris.neugebauer.id.au/2009/07/24/3-birds/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s kill two birds with one picture, as it were&#8230;</p>
<p> <img src="http://img.skitch.com/20090724-px6pab8d5jpgm6rympkqfrjehy.jpg">
<p>Point 1? I got an Honours scholarship.  Yay me! Secondly? I got my final mark today (for <a href="http://www.utas.edu.au/units/KMA352">Functional Analysis</a>), a very satisfying 95 (better than my previous marks for the semester by a long way).  This means that I now <em>officially</em> have sufficient credit to graduate to a Bachelor of Science (though this is mostly a formality, I&#8217;ve been doing Honours study for two weeks now), and will do so in two weeks time.  Awesome!</p>
<p>The third bird? My Honours thesis topic has been allocated.  Put as vaguely as possible, it&#8217;s about augmenting a machine learning-based object detection system (for images) to use colour images instead of black and white.  My supervisor is Mike (my <a href="http://www.noogz.net/website/tags/acm%20icpc">ACM-ICPC</a> coach, as it were).  I&#8217;ll _try_ and explain it better once I&#8217;ve done a bit more reading than I have so far&#8230;</p>
<p>Normal service to be resumed later, <br/> <br/> &#8211;Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/07/24/3-birds/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More Thingies!</title>
		<link>http://chris.neugebauer.id.au/2009/07/20/more-thingies/</link>
		<comments>http://chris.neugebauer.id.au/2009/07/20/more-thingies/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 22:27:33 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[honours]]></category>
		<category><![CDATA[lca2010]]></category>
		<category><![CDATA[linux.conf.au]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/07/20/more-thingies/</guid>
		<description><![CDATA[Time for another status report on things that have happened recently! More Uni! First up, I&#8217;ve started on my Honours year! Isn&#8217;t that exciting? As I&#8217;ve learnt this week, the next 12 months for me will consist of 4 coursework &#8230; <a href="http://chris.neugebauer.id.au/2009/07/20/more-thingies/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Time for another status report on things that have happened recently!</p>
<h4>More Uni!</h4>
<p>First up, I&#8217;ve started on my Honours year! Isn&#8217;t that exciting?  As I&#8217;ve learnt this week, the next 12 months for me will consist of 4 coursework units, and a research thesis.  This semester, it looks like I&#8217;ll be studying <a href="http://www.utas.edu.au/units/KXA404">Embedded Systems</a> (yay! I get to program some microprocessors! Whoo!), <a href="http://www.utas.edu.au/units/KXA403">Computing in Context</a> (a research-intensive unit in HCI), and possibly one other, depensive on what the unit outline for it looks like.  My thesis I&#8217;m not so sure about, given that the process by which we get assigned supervisors hasn&#8217;t occurred yet.  Currently, I have a pile of 12 project areas for my perusal, from which I must rank 6 proposals by order of how much I want to study them.  At the moment, there are some interesting-looking proposals relating to Machine Learning, and some interesting ones relating to web monitoring; I find out what I&#8217;ve been assigned by Friday (very exciting, no?).</p>
<h4>Linux.conf.au 2010</h4>
<p><a href="http://lca2010.linux.org.au">Linux.conf.au</a> 2010 is being held in Wellington, New Zealand.  One of the things that makes LCA a truly wonderful conference is the first two days, devoted to single-day &#8220;miniconfs&#8221; on topic areas of interest to the Free and Open Source Software communities.  I&#8217;m currently involved with two proposals; I&#8217;m primary proposer of a developers&#8217; miniconf (called &#8220;Open Languages&#8221;) aimed towards uniting the developer communities of open source programming languages, and I&#8217;m secondary proposer of an education-flavoured miniconf.  I&#8217;d be equally happy if either of these proposals get up, but with <a href="http://lca2010.blogspot.com/2009/07/32-miniconf-proposals.html">30 other awesome proposals</a> competing for 12 openings for miniconfs, there&#8217;s going to be some very stiff competition.</p>
<h4>Blackjack?</h4>
<p>Hey, turns out I turned 21 on Wednesday.  How did I manage that?</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/07/20/more-thingies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>End.</title>
		<link>http://chris.neugebauer.id.au/2009/07/08/end/</link>
		<comments>http://chris.neugebauer.id.au/2009/07/08/end/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 07:16:05 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/07/08/end/</guid>
		<description><![CDATA[After a somewhat self-enforced marathon exams session, I finished my last (and arguably most difficult) exam on Monday, that was for Functional Analysis, and my first results came out this morning: 3 HD marks and a Distinction, not quite as &#8230; <a href="http://chris.neugebauer.id.au/2009/07/08/end/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After a somewhat self-enforced marathon exams session, I finished my last (and arguably most difficult) exam on Monday, that was for <a href="http://www.utas.edu.au/units/KMA352">Functional Analysis</a>, and my first results came out this morning: 3 HD marks and a Distinction, not quite as good as my excellent run of last year, but still not dreadful either.  Given that I&#8217;ve passed everything, it means that I&#8217;ve finished the undergrad component of my degree! Hurrah!</p>
<p>Graduation is in early August, but before then, the Honours programme starts Friday, after only three days worth of holidays.  Excellent!</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/07/08/end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What? Where did the last 2 months go?</title>
		<link>http://chris.neugebauer.id.au/2009/06/01/what-where-did-the-last-2-months-go/</link>
		<comments>http://chris.neugebauer.id.au/2009/06/01/what-where-did-the-last-2-months-go/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 02:58:02 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[acm icpc]]></category>
		<category><![CDATA[europe 2009]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/06/01/what-where-did-the-last-2-months-go/</guid>
		<description><![CDATA[Well, somehow we&#8217;ve made it to the end of the first semester of this year, and I quite inconveniently forgot to write about anything since the start of April. This is quite problematic. I guess that means it&#8217;s time for &#8230; <a href="http://chris.neugebauer.id.au/2009/06/01/what-where-did-the-last-2-months-go/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well, somehow we&#8217;ve made it to the end of the first semester of this year, and I quite inconveniently forgot to write about anything since the start of April.  This is quite problematic.  I guess that means it&#8217;s time for me to do my semi-regular dump of notable things.  Bleh.</p>
<p>So, where to begin?</p>
<h4>ACM-ICPC Trip</h4>
<p>So yes, we did arrive safely in Germany, spending a week with my relatives who live just outside of Frankfurt-am-Main in centre of the country.  That was a fun week, we spent many days taking in the area, sampling the culture, and preparing for the programming contest the next week.  We spent a week in Stockholm, where the contest was held, which was great fun in general (despite being somewhat colder than Germany and indeed Australia), we met many like-minded people, and thoroughly enjoyed the week.  In the end, we solved three problems in the contest, which was (just) sufficient to see us getting a ranked position of equal 49th (yay!).</p>
<p> <img src="http://www.cis.utas.edu.au/downloads/acm09mehffortlarge.jpg" width=480>
<p>I&#8217;ll write up the two weeks spent overseas in greater detail soon (hopefully).</p>
<h4>Twitter &#038; Co.</h4>
<p>So I succumbed to peer pressure roughly two weeks ago, signing up for <a href="http://twitter.com/chrisjrn">Twitter</a> and <a href="http://identi.ca/chrisjrn/">Identi.ca</a>.  As a fun experiment into the field, I investigated how long it would take, and what measures would be necessary, for someone to notice that I was on Twitter, and then follow me.  I did this by following one or two people per day, and getting them to drop relatively silent hints about my existence.  In the end, it took about a week for someone to notice me, with a <a href="http://twitter.com/TUCS/status/1901843959">fairly blatant reference to me</a> needed to make it obvious.  Despite the great scientific breakthrough observed, I don&#8217;t think the result is sufficient to write a paper about&#8230; <img src='http://chris.neugebauer.id.au/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>My main observation is that Twitter is miles behind Identi.ca in terms of useful features (I like group notices, denoted by &#8216;!&#8217; tags in Identi.ca, and Jabber-based updating in particular), stability (updating my Avatar in Identi.ca does indeed work first time, every time, whereas it took me 10 tries to get it to work in Twitter), and <em>ability to store my own name</em> (This would make Twitter the first site that I have ever <em>needed</em> to call myself &#8220;Chris&#8221; as opposed to &#8220;Christopher&#8221;), that said, Twitter is ahead greatly in terms of the number of people on it, which makes sticking around there a necessary evil (boo for centralisation!).</p>
<h4>End of Semester/Undergrad</h4>
<p>And yes, it would be amiss to not note that last week was my last week of lectures as an undergrad student (presuming, of course, that all of my exams go sufficiently well), it was mostly uneventful, with the exception of having to hand in two major assignments, <a href="http://www.noogz.net/website/blog/programming/20090601-Cocomo.html">prepare and present a lightning talk</a>, and run the <a href="http://blip.tv/file/2177007">session in which it was presented</a>.  All-in-all rather busy!</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/06/01/what-where-did-the-last-2-months-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cocomo: An experiment in metaprogramming in python</title>
		<link>http://chris.neugebauer.id.au/2009/06/01/cocomo-an-experiment-in-metaprogramming-in-python/</link>
		<comments>http://chris.neugebauer.id.au/2009/06/01/cocomo-an-experiment-in-metaprogramming-in-python/#comments</comments>
		<pubDate>Sun, 31 May 2009 23:16:40 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[cocomo]]></category>
		<category><![CDATA[lightning talks]]></category>
		<category><![CDATA[metaprogramming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[tucs]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/06/01/cocomo-an-experiment-in-metaprogramming-in-python/</guid>
		<description><![CDATA[Friday saw the second edition of the UTAS Computing Society Lightning Talks, if you haven&#8217;t seen them already, I highly recommend that you check them out &#8212; this semester&#8217;s were at a very high standard indeed, and I wish I&#8217;d &#8230; <a href="http://chris.neugebauer.id.au/2009/06/01/cocomo-an-experiment-in-metaprogramming-in-python/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Friday saw the second edition of the <a href="http://blip.tv/file/2177007">UTAS Computing Society Lightning Talks</a>, if you haven&#8217;t seen them already, I highly recommend that you check them out &#8212; this semester&#8217;s were at a very high standard indeed, and I wish I&#8217;d printed out more certificates for good talks <img src='http://chris.neugebauer.id.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  My talk was a demonstration of using metaprogramming in Python, though that&#8217;s not what it seemed to be about.</p>
<h4>An introduction</h4>
<p>I went to the <a href="http://www.auc.edu.au">Apple University Consortium&#8217;s</a> Cocoa Workshop at the University of New South Wales in February of this year, it was a heap of fun, and we learnt heaps whilst there.  One of the key distinguising features of Cocoa is its use of verbose English method and attribute names, the idea being that each line of code should make a reasonable amount of sense when read aloud, hence:</p>
<pre>NSString *str = [[NSString alloc] initWithString @"Hello World!"]</pre>
<p>does indeed allocate memory to hold a string object, and initialises the newly-allocated memory with a string containing &#8220;Hello World!&#8221; (this code is highly redundant!).  Supposedly such a naming scheme allows coders to write code that is easily maintainable by the original coder, and easily learnable by people who pick up the code for the first time.</p>
<p>On the other hand, my friends, collectively known as <a href="http://planetmaclab.com">Maclab</a> (named after the room at UTAS we inhabit) have developed a rather unique vocabularly, which in particular involves replacing as many words as possible with either &#8216;thrust&#8217; or &#8216;fork&#8217;, so &#8220;Thrustingly thrust the forking forker&#8221; is not an uncommon utterance amongst my friends.  If this is indeed their usual mode of conversation, then Cocoa&#8217;s way of identifying methods and attributes is not necessarily going to be a particularly intiuitive one.  So, clearly, we need a version of cocoa that meets their needs.</p>
<h4>The setup</h4>
<p>So, conveniently, Apple provide a comprehensive version of the Cocoa API, thanks to the PyObjC project.  We can therefore use the Python bindings for Cocoa facilitate our new version of Cocoa.  Since Cocoa has a very consistent naming scheme, we can simply perform string replacement to translate from our maclab language to the standard cocoa language, using a routine somewhat like this:</p>
<pre> def translate(inp): ''' Translates an input string from key language to value language ''' for i in LANGUAGE: if i[0].islower(): inp = inp.replace(i, LANGUAGE[i]) inp = inp.replace(rtitle(i), rtitle(LANGUAGE[i])) else: inp = inp.replace(i, LANGUAGE[i]) return inp def rtitle(i): return i[0].upper() + i[1:] </pre>
<p>Here, <tt>LANGUAGE</tt> is a dictionary, with keys in the language code will be written in and values being the target language (in this case, Cocoa).  There&#8217;s not all that much of a sophisticated nature going on in here.  Now that we have a method by which we can translate our attribute accesses, we can get to the meat of the the code.</p>
<h4>The implementation</h4>
<p>To achieve the new API, we need to use a technique that I will call proxying.  This involves the use of objects whose sole purpose is to intercept attribute accesses and calls to an underlying object.  In this case, the point of intercepting the calls and accesses is to perform translation from our new objects to standard Cocoa objects.  In Python we can do this by overriding the standard attribute access and call methods.</p>
<p>First up is <tt>__getattr__</tt>, the attribute accessor method &#8212; for this, we are passed a string; the name of the attribute that we&#8217;re looking for, which we translate, and then attempt to access upon the method on the underlying object (in this case, <tt>self.__u__</tt>).  There is one slight hitch: in certain cases, we may not want to translate the attribute name.  This is true, in particular, of the attribute that represents the underlying object.  Hence we provide a <tt>REAL_ATTRS</tt> list, for which we use the default <tt>__getattr__</tt> method for.  This results in code that looks something like this:</p>
<pre> def __getattribute__(self,name): if name in REAL_ATTRS: return object.__getattribute__(self,name) else: new_objectname = "self.__u__.%s" % translate(name) new_object = eval(new_objectname) return CocomoProxy(new_object) </pre>
<p>Notice that we use <tt>eval</tt> to perform the lookup? It turns out that <tt>__getattr__</tt> doesn&#8217;t work universally, whereas . notation does &#8212; so we use that for less failover.</p>
<p>Being able to call methods on the objects is important, but slightly more difficult &#8212; we want behaviour to be maintained, so we need to make sure that proper Cocoa objects are passed as arguments, rather than the Proxy objects that you may have originally dealt with.  We can do this with Python&#8217;s argument unpacking &#8212; we build up a list of arguments, and unproxy them as necessary:</p>
<pre> def __call__(self,*a, **k): new_a = [i.__u__ if type(i) == CocomoProxy else i for i in a] new_k = dict( (translate(i), k[i].__u__ if type(k[i]) == CocomoProxy else k[i]) for i in k) return CocomoProxy(self.__u__(*new_a,**new_k)) </pre>
<p>We may also need to deal with iterators.  This can be done using a standard generator function, thusly:</p>
<pre> def __iter__(self): for i in self.__u__: yield CocomoProxy(i) </pre>
<p>Finally, there may be legitimate reasons for extracting Cocoa objects, these include printing strings, so we provide an accessor method called <tt>no_really</tt>:</p>
<pre> def no_really(self): return self.__u__ </pre>
<p>And that&#8217;s the entire implementation!  The final thing we need to do is provide a pre-proxied version of the base module for Cocoa.  Let&#8217;s call it <tt>GypsyMagic</tt>.</p>
<h4>The payoff</h4>
<p>So now that we have a working bridge from Maclab English to Cocoa English, we can take this sample code that puts some stuff into an array, and then prints it:</p>
<pre> import AppKit hworld = AppKit.NSString.alloc().initWithString_("Hello, World!") arr = AppKit.NSMutableArray.alloc().init() arr.addObject_(hworld) arr.addObject_("Boop!") for i in arr: print i </pre>
<p>And write it in the far more palatable:</p>
<pre> from cocomo import GypsyMagic hworld = GypsyMagic.OGMouthWords.subsume().makeGogoWithMouthWords_("Hello, World!") arr = GypsyMagic.OGForkableTrinketHolder.subsume().makeGogo() arr.thrustinglyThrustForker_(hworld) arr.thrustinglyThrustForker_("Boop!") for i in arr: print i.no_really() </pre>
<p>If you&#8217;re interested in seeing how it all fits together, see <a href="http://noogz.net/cocomo">Cocomo&#8217;s website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/06/01/cocomo-an-experiment-in-metaprogramming-in-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>February in Brief</title>
		<link>http://chris.neugebauer.id.au/2009/02/27/february-in-brief/</link>
		<comments>http://chris.neugebauer.id.au/2009/02/27/february-in-brief/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 12:06:02 +0000</pubDate>
		<dc:creator>Christopher Neugebauer</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[uni]]></category>

		<guid isPermaLink="false">http://chris.neugebauer.id.au/2009/02/27/february-in-brief/</guid>
		<description><![CDATA[Wow. It&#8217;s been a thoroughly busy month, lots of things to recap, so I won&#8217;t bother going into too much detail&#8230; Here&#8217;s a selection: AUC Workshops In February, the Apple University Consortium sent me to Sydney for their annual Cocoa &#8230; <a href="http://chris.neugebauer.id.au/2009/02/27/february-in-brief/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wow.  It&#8217;s been a thoroughly busy month, lots of things to recap, so I won&#8217;t bother going into too much detail&#8230; Here&#8217;s a selection:</p>
<h4>AUC Workshops</h4>
<p>In February, the <a href="http://www.auc.edu.au">Apple University Consortium</a> sent me to Sydney for their annual Cocoa Developement workshop, and to Melbourne for their inaugural Ruby on OS X Workshop.  Both workshops were great, and if you attend an AUC Member University, you really should sign up for their future workshops; that said, I can&#8217;t see me seriously using Rails for anything in the future, and Obj-C peeves me&#8230; Cocoa, on the other hand is seriously exciting, and even from a few days&#8217; exposure, I can see why Cocoa developers love their framework so much, and the lack of a similar facility for making good UIs quickly in Linux is really obvious to me now .  Hopefully this is something that gets addressed in future releases of the major desktop environments.</p>
<h4>Semester 1 Gogog!</h4>
<p>Uni went back this week, and it&#8217;s been all-in-all rather eventful.  It&#8217;s the start of my final semester of undergrad study, which is going to encompass holding the presidency of TUCS, our Campus Computing Society, going to Stockholm to compete in the ACM Programming Contest, all the while juggling effectively 5 units of study.  How I&#8217;m going to cope with it I have no idea, presumably I will though&#8230;</p>
<p>This semester, I&#8217;m studying three maths units (two pure, one applied): <a href="http://www.utas.edu.au/units/KMA350">Computational Methods</a> (or, how to avoid doing hard maths&#8230; clever how they keep that one for third year), <a href="http://www.utas.edu.au/units/KMA351">Algebra 3</a> (mostly group theory this year) and (Functional) <a href="http://www.utas.edu.au/units/KMA352">Analysis 3</a>; Computing-wise, I&#8217;m studying <a href="http://www.utas.edu.au/units/KXT311">Data Mining &#038; Text Retrieval</a> (the 3rd-year Machine Learning unit), and <a href="http://www.utas.edu.au/units/KXT309">Advanced Web Development</a> (purely as a Gimme unit).  Hopefully this one constitutes a reasonably good mix between fun and interestingness &#8212; and hopefully not too time-consuming.  On another note, Kumudini (the lecturer for Analysis) deserves special thanks, as she&#8217;s gone out of her way to ensure that Analysis is being offered before Semester 2 for me, which I&#8217;m quite grateful for (as it means that I can graduate with the Pure Maths Major).</p>
<h4>TUU Societies Day 2009</h4>
<p>Mentioning the start of semester without mentioning Societies day would be quite amiss &#8212; for those who are unfamiliar, socieities day is a 3-hour event held on the first Wednesday of the Uni year, where students signup for their chosen sports clubs and societies, generally in return for Alcohol.  This year, however, the Union made the curious decision to spilt the allocated space in two, and provide a dry area, which proved to be very useful for us at TUCS (as we&#8217;d decided quite some time eadlier that we&#8217;d not be providing alcohol).  The Union kindly provided us with space directly outside the wet area, which gave us a massive wall for advertising, and the dry area made all our volunteers highly visible (due to there actually being space to move about).</p>
<p>TUCS put on a Barbecue, and provided &#8220;Enticing Gift Bags&#8221; (full of things including leftover LCA09 schwag) to new members.  The Nett effect of this was that TUCS signed up 115 members, which is almost three times as many as we managed on societies day last year.  Obviously, we&#8217;re pretty happy.</p>
<p><a href="http://www.flickr.com/photos/chrisjrn/3311434160/" title="TUCS Societies Day 2009 by Christopher Neugebauer, on Flickr"><img src="http://farm4.static.flickr.com/3510/3311434160_f3071c1215.jpg" width="333" height="500" alt="TUCS Societies Day 2009" /></a><a href="http://www.flickr.com/photos/chrisjrn/3311410788/" title="TUCS Societies Day 2009 by Christopher Neugebauer, on Flickr"><img src="http://farm4.static.flickr.com/3401/3311410788_193bbcef6b.jpg" width="333" height="500" alt="TUCS Societies Day 2009" /></a></p>
<p>That&#8217;s all for now, more as it comes!</p>
]]></content:encoded>
			<wfw:commentRss>http://chris.neugebauer.id.au/2009/02/27/february-in-brief/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

