<?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>Some Assembly Required &#187; Programming</title>
	<atom:link href="http://znark.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://znark.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 05 Jul 2009 22:23:56 +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>OSCON: Friday</title>
		<link>http://znark.com/blog/2007/07/oscon-friday/</link>
		<comments>http://znark.com/blog/2007/07/oscon-friday/#comments</comments>
		<pubDate>Sun, 29 Jul 2007 20:26:42 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Filesystems]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Parrot]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/29/oscon-friday</guid>
		<description><![CDATA[On Friday, I made it to the morning keynotes. None of them were really informative but were entertaining and funny. I attended ZFS: Bringing Terabytes Under Control by Jay Edwards. He mainly talked about using ZFS on Solaris for large storage systems. The biggest advantage of ZFS is the nice management tools for creating pools [...]]]></description>
			<content:encoded><![CDATA[<p>On Friday, I made it to the morning keynotes.  None of them were really informative but were entertaining and funny.</p>

<p>I attended <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12312">ZFS: Bringing Terabytes Under Control</a> by Jay Edwards.  He mainly talked about using ZFS on Solaris for large storage systems.  The biggest advantage of ZFS is the nice management tools for creating pools and filesystems.  RAIDZ, which is RAID5 with tracking of which blocks need to be rebuilt, sounded neat.  The copy-on-write behavior which makes snapshots and clones easy sounded very useful.  He mentioned some of the problems between the impedance mismatch between smart ZFS and smart hardware.  ZFS assumes that the hardware is dumb and lies which causes performance problems with smart drive arrays.  </p>

<p>Next, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12967">Running Your Programming Language on Parrot</a> by chromiat and Patrick Michaud.  They talked about how to write parsers and compilers for Parrot using the Parrot Compiler Tools.  The tools make it easy to write a Parrot compiler for a language by doing a parse grammar and AST grammar to transform the source into an AST; the tools can produce PIR from the AST.  It sounded like the new tools are being used for more languages and should improve the progress in getting languages implemented on Parrot.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-friday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON: Thursday</title>
		<link>http://znark.com/blog/2007/07/oscon-thursday/</link>
		<comments>http://znark.com/blog/2007/07/oscon-thursday/#comments</comments>
		<pubDate>Sun, 29 Jul 2007 20:18:25 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/29/oscon-thursday</guid>
		<description><![CDATA[After staying up late on Wednesday night, I slept late on Thursday and missed the keynotes. I went to Matt Tucker&#8217;s talk on Jingle: Cutting Edge Open Source VoIP describing the Jingle extension to Jabber that allows voice chat and other multimedia. Jingle is the standardization of the Google Talk protocol for voice chat. One [...]]]></description>
			<content:encoded><![CDATA[<p>After staying up late on Wednesday night, I slept late on Thursday and missed the keynotes.  I went to Matt Tucker&#8217;s talk on <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13134">Jingle: Cutting Edge Open Source VoIP</a> describing the Jingle extension to Jabber that allows voice chat and other multimedia.  Jingle is the standardization of the Google Talk protocol for voice chat.  One thing that sounds good about Jingle is that it reuses the ICE, STUN, and RTP standards for making the connections through firewalls and NAT.  Jingle replaces SIP and SDP for the session setup with much nicer XML language.  It sounds like Jingle isn&#8217;t meant to replace SIP for making phone calls with hardware but instead to provide standard multimedia chat for instant messaging.</p>

<p>I skipped the next session talk and worked on my computer instead.  After lunch, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12961">Next Generation Version Control Systems</a> by Sam Villian.  He talked about <a href="http://bazaar-vcs.org/">bzr</a>, <a href="http://www.selenic.com/mercurial/wiki/">Mercurial</a>, and <a href="http://git.or.cz/">git</a>, the three modern distributed version control systems.  He talked about why distributed version control is better than centralized ones like Subversion.  I liked is distributed systems are more transactional with commits not relying on a server.  Also, these distributed systems are more descriptive and keep track of the DAG of the history instead of having to be told about merges and renames.  He also talked about how the distributed systems allow the stable development model with each change getting a branch that is merged into an always-stable branch when ready.  In comparing the systems, the main thing is that bzr is slow and doesn&#8217;t scale as well to large repositories.  git is harder to use and impossible to install on Windows.  It is really fast and produces compact repositories.  Mercurial sounded nice with a speed comparable to git while being easier to install and use.</p>

<p>Next, I went to Jesse Vincent&#8217;s talk on <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12963">Building Domain Specific Languages in Perl</a>.  He was talking about so-called internal DSLs where an easy-o=use dialect of Perl is used for a specific domain.  He mentioned a couple of tricks to persuade the Perl parser to support a simplified syntax including installing helper functions, using prototypes, and returning closures.  He mentioned a couple of DSLs that they had invented for <a href="http://jifty.org/">Jifty</a>: Jifty::DBI, Object::Declare, Template::Declare, and Jifty::Dispatcher.  Template::Declare was interesting since it is a templating system that instead of embedding code in text or using a special language just uses special Perl code with functions for HTML elements.  This allows refactoring and modularizing the templates like code.</p>

<p>Finally, I went to the <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14166">Perl Lightning Talks</a>, a bunch of five minute long talks.  They are just long enough to advertise a project, perform a rant, give a brief summary of a longer talk, or sing a song. I remember some of the same talks from last year.  Some of the projects I bookmarked where <a href="http://developer.yahoo.com/yui/">Yahoo UI Library</a>, <a href="http://smtpd.develooper.com/">qpsmptd</a>, <a href="http://movemydata.org/">Move My Data</a>, <a href="http://search.cpan.org/dist/DashProfiler/">DashProfiler</a>, DBD::Grofer, and <a href="http://perlfoundation.org/perl5/">Perl 5 Wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-thursday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON: Wednesday Afternoon</title>
		<link>http://znark.com/blog/2007/07/oscon-wednesday-afternoon/</link>
		<comments>http://znark.com/blog/2007/07/oscon-wednesday-afternoon/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 04:00:24 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/25/oscon-wednesday-afternoon</guid>
		<description><![CDATA[In the afternoon, I went to more OSCON sessions. First, I went to Nested Data Parallelism in Haskell by Simon Peyton-Jones, the same guy who gave the keynote talk I went to. This time, he was talking about extending the Haskell compiler to do data parallelism. Flat data parallelism is when a computation is split [...]]]></description>
			<content:encoded><![CDATA[<p>In the afternoon, I went to more OSCON sessions.  First, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14014">Nested Data Parallelism in Haskell</a> by Simon Peyton-Jones, the same guy who gave the keynote talk I went to.  This time, he was talking about extending the Haskell compiler to do data parallelism.  Flat data parallelism is when a computation is split into chunks and processing distributed across processor.  Nested data parallelism is where the depth and complexity of the algorithm depends on the data so it isn&#8217;t simple to split up.  Flattening transformation can turn these problems into flat ones that can be chunked.  Also, multiple steps can be fused together into single ones.  The special syntax and <a href="http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell">data parallel extensions</a> they wrote for the GHC allows the compiler to do these transformations.  He pointed out that this is only possible with purely functional languages.  He thinks that functional languages are the future for scaling to multiple cores.</p>

<p>Next, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14569">Hacking with (and on) Gears</a> by Andy Boodman from Google.  He talked about <a href="http://gears.google.com/">Google Gears</a> a browser extension that supports offline applications written in Java.  It adds a local server for caching files.  A database module with embeds SQLite in the browser for local database storage.  And a worker pool of threads for running background JavaScript tasks.  He showed how these could be used to write an application, like the new Google Reader offline mode, that downloads the files, stores data locally, and synchronizes the data to the live site.  The big problem left unanswered by the framework is the synchronization and conflict resolution problems.  I thought it was interesting that the pieces were generally useful JavaScript extensions that would be useful outside of offline apps.</p>

<p>Next, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12403">Hecl: Open Source Scripting for Mobile Phones</a> by David Welton. <a href="http://hecl.org">Hecl</a> is a dynamic scripting language for mobile phones.  It is interpreter, written in Java, and designed to run on J2ME.  It has a very simple syntax based on Tcl.  The interpreter runs in a tiny amount of space.  It has support for making widgets and basic GUIs.</p>

<p>Finally, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13081">Using Puppet to Manage Your Network</a> by Luke Kaines.  I went to a talk on <a href="http://reductivelabs.com/trac/puppet">Puppet</a> last year.  This talk was much better since he talked about how Puppet works and how it could be used instead of vaguely talking about why it was useful.  Puppet has definitely gotten some recognition since this talk was well attended.  Most of the content was familiar to me from working with Puppet but I learned a couple of things about reporting changes and modules.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-wednesday-afternoon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON: Wednesday Morning</title>
		<link>http://znark.com/blog/2007/07/oscon-wednesday-morning/</link>
		<comments>http://znark.com/blog/2007/07/oscon-wednesday-morning/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 22:46:42 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/25/oscon-wednesday-morning</guid>
		<description><![CDATA[I am going to the OSCON sessions today and the rest of the week. I missed most of the keynotes this morning. I did Transactional Memory for Concurrent Programming by Simon Peyton-Jones and Haskell guy at Microsoft. He described the idea of transaction memory as the alternative to locking for concurrent programming. Transactional memory basically [...]]]></description>
			<content:encoded><![CDATA[<p>I am going to the OSCON sessions today and the rest of the week.  I missed most of the keynotes this morning.  I did <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14017">Transactional Memory for Concurrent Programming</a> by Simon Peyton-Jones and Haskell guy at Microsoft.  He described the idea of transaction memory as the alternative to locking for concurrent programming.  Transactional memory basically wraps critical sections in atomic transactions.  It was somewhat interesting since Parrot is talking about using STM.  GHC is a Haskell implementation with STM.  He talked about how transactional memory requires blocking with retry and waiting until the memory read changes.  He also talked about how useful systems add choice which instead of blocking does an alternative.</p>

<p>I also went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12486">Performance Whack-a-Mole</a> by Josh Berkus.  He talked about how to solve database performance problems.  He gave a couple of rules to tracking the problems which he called moles.  Most problems are not really database problems and are at other levels of the stack.  Most slowdown is caused by a few big problems.  You can only see the worst problem which hides the others.  Different classes of apps have different performance problems.  Web apps tend to read heavy and have issues with connections and caching.  OLTP have locks, transactions, IO write problems.  Data warehousing has IO issues with bad queries.  He also talked about doing a baseline inspection for common problems, benchmarks, microbenchmarks, and profiling.</p>

<p>I also went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13137">Care and Feeding of Large Web Applications</a> by Perre Harkins.  He talked about the issues dealing with deploying and releasing a large web application in Perl.  I was most interested in the system he described of installing CPAN modiules.  They have their own tool for deploying specific versions of modules.  He also mentioned automating database updates, simplying the configuration, testing, and doing version control and branches.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-wednesday-morning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
