<?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>Code Swamp</title>
	<atom:link href="http://codeswamp.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://codeswamp.com</link>
	<description></description>
	<lastBuildDate>Tue, 27 Mar 2012 09:46:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Fresh Brewed Code</title>
		<link>http://codeswamp.com/2012/03/27/fresh-brewed-code/</link>
		<comments>http://codeswamp.com/2012/03/27/fresh-brewed-code/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 09:46:37 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=501</guid>
		<description><![CDATA[I&#8217;ve started blogging with Fresh Brewed Code. To see posts written after January 1, 2012 please go here: http://freshbrewedcode.com/bryanhunter/ All of the old stuff will stick around here. Cheers, Bryan]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started blogging with Fresh Brewed Code.</p>
<p><a href="http://freshbrewedcode.com/bryanhunter/"><img src="http://codeswamp.com/wp-content/uploads/2012/03/fbc_logo.png" alt="Fresh Brewed Code" /></a></p>
<p>To see posts written after January 1, 2012 please go here:<br />
<a href="http://freshbrewedcode.com/bryanhunter/">http://freshbrewedcode.com/bryanhunter/</a></p>
<p>All of the old stuff will stick around here.</p>
<p>Cheers,<br />
Bryan</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2012/03/27/fresh-brewed-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging Erlang</title>
		<link>http://codeswamp.com/2011/11/27/debugging-erlang/</link>
		<comments>http://codeswamp.com/2011/11/27/debugging-erlang/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 08:09:14 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Screencast]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=442</guid>
		<description><![CDATA[In 2007 when I keyed my first &#8220;HelloWorld.erl&#8221; in Notepad, I remember a general uneasiness descending over me. I&#8217;m typing code in Notepad. Notepad doesn&#8217;t have syntax highlighting. Notepad doesn&#8217;t provide error squiggles. Notepad doesn&#8217;t provide IntelliSense. Notepad doesn&#8217;t have a &#8220;Build Solution&#8221;. How am I supposed to set a breakpoint from Notepad? How am [...]]]></description>
			<content:encoded><![CDATA[<p>In 2007 when I keyed my first &#8220;HelloWorld.erl&#8221; in Notepad, I remember a general uneasiness descending over me.</p>
<p style="padding-left: 30px;"><em>I&#8217;m typing code in Notepad.<br />
Notepad doesn&#8217;t have syntax highlighting.<br />
</em><em>Notepad doesn&#8217;t provide error squiggles.<br />
Notepad doesn&#8217;t provide IntelliSense.<br />
</em><em>Notepad doesn&#8217;t have a &#8220;Build Solution&#8221;.<br />
</em><em>How am I supposed to set a breakpoint from Notepad?<br />
How am I supposed to debug this stuff?<br />
</em><em>Oh, dark night of the soul! What am I getting into here!?</em></p>
<p>Well here&#8217;s an answer to at least the debugging bit&#8230;</p>
<p>This screencast is a simple demo of debugging (stepping through) a recursive function in an Erlang module. For grins, and to make it clear that no IDE magic is involved, the code is edited using Notepad.</p>
<p><iframe src="http://player.vimeo.com/video/32724400?title=0&amp;portrait=0" frameborder="0" width="640" height="480"></iframe></p>
<p>My plan is to release a new &#8220;Erlang for .NET Developers&#8221;&nbsp;screencast each week. Most will follow this simple &#8220;answer to common questions&#8221; format. In the next one, I&#8217;ll show my Emacs Erlang rig (with syntax highlighting, error squiggles, auto-completion) in action. From there I will work down a list of questions that O.J. Reeves (<a href="https://twitter.com/TheColonial" target="_blank">@TheColonial</a>) and I have accumulated. The two of us are drafting a book with the working title &#8220;Erlang for .NET Developers&#8221;. If you are a .NET developer and learning Erlang, we would love to see your questions. Please post them as comments or via <a href="https://twitter.com/bryan_hunter" target="_blank">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2011/11/27/debugging-erlang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up an Erlang Rig on Windows</title>
		<link>http://codeswamp.com/2011/08/24/setting-up-an-erlang-rig-on-windows/</link>
		<comments>http://codeswamp.com/2011/08/24/setting-up-an-erlang-rig-on-windows/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 03:55:48 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[DevRig]]></category>
		<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=379</guid>
		<description><![CDATA[In January I posted that I was diving into Linux full-time for my Erlang work. Erlang itself runs great on Windows, Linux and Mac. I made the shift because most Erlang developers work in Linux and I felt I was probably missing something with my Windows-centric approach. This turned out to be a very valuable&#160;exercise. [...]]]></description>
			<content:encoded><![CDATA[<p>In January <a title="I, n00b: At the border-crossing from C# to Erlang (on Ubuntu)" href="http://codeswamp.com/2011/01/21/i-n00b/">I posted</a> that I was diving into Linux full-time for my Erlang work. <a href="http://codeswamp.com/wp-content/uploads/2011/08/erlang-rig.jpg"><img class="alignright size-full wp-image-403" title="erlang-rig" src="http://codeswamp.com/wp-content/uploads/2011/08/erlang-rig.jpg" alt="Erlang Rig" width="360" height="270" /></a>Erlang itself runs great on Windows, Linux and Mac. I made the shift because most Erlang developers work in Linux and I felt I was probably missing something with my Windows-centric approach. This turned out to be a very valuable&nbsp;exercise. I tried out ErlIDE (Eclipse), a tricked out gedit, Vim, and Emacs. In the end, the best-paved and most productive path for Erlang development appears to be Emacs tricked-out with Erlang goodies and a console standing by for running Rebar and Git commands.</p>
<p>Here&#8217;s what my Erlang rig consists of:</p>
<ul>
<li><em><strong>Emacs&nbsp;23.3</strong></em></li>
<ul>
<li><span style="text-decoration: underline;">Erlang mode</span> : Provides syntax highlighting,</li>
<li><span style="text-decoration: underline;">Flymake</span>: shows warnings and errors on the fly as you type like visual studio</li>
<li><span style="text-decoration: underline;">IDO</span>: Adds a good way to browse directories and open files</li>
<li><span style="text-decoration: underline;">color-theme</span>: adds pretty colors and fonts</li>
<li><span style="text-decoration: underline;">Distel</span>: theoretically provides auto-completion, step through debugging and other goodies.</li>
<li><span style="text-decoration: underline;">Key mappings</span>: Adds the key bindings for Cut,Copy,Paste,Alt-F4, Ctrl-Tab&nbsp;that a red-blooded Windows expects.</li>
</ul>
<li><em><strong>Rebar</strong></em></li>
<li><em><strong>Git</strong></em></li>
</ul>
<p>A few months in, I realized all of these things should work just fine on Windows. <strong>Today I have the same Erlang development rig on both Windows and Linux.</strong> This makes me very happy. <em>Why?&nbsp;</em>I&#8217;ve mentioned this in previous posts, but I believe C# and Erlang are great complements.&nbsp;Even in a Windows-only .NET shop with no appetite for introducing Linux, there&#8217;s no reason to take Erlang off the table. Having a proper Windows tool-chain for Erlang development moves the discussion away from an OS holy war and back to a cost-benefit analysis of Erlang itself. That&#8217;s a good place to be.</p>
<p>Each time I&#8217;ve done my &#8220;Intro to Erlang for C# Developers&#8221; talk, folks see my Windows Emacs rig in action and ask &#8220;What&#8217;s involved in getting that to work?&#8221; For anyone who is interested here are the steps:</p>
<p><span style="text-decoration: underline;"><strong>Get Erlang R14B03</strong></span></p>
<ol>
<li>Download Erlang <a href="http://www.erlang.org/download/otp_win32_R14B03.exe" target="_blank">from here</a>.</li>
<li>Run the otp_win32_R14B03.exe&nbsp;setup file. By default the installer wants to put Erlang here &#8220;C:\Program Files\erl5.8.4&#8243; but change that to &#8220;C:\erlang\erl5.8.4\&#8221;. <i>OK, but why?</i> Most of the tools and scripts you will use for Erlang development on Windows were crafted over on Linux and the authors may not have tested for spaces in the path (e.g. &#8220;Program Files&#8221;). Remove that risk.</li>
<li>Add &#8220;C:\erlang\erl5.8.4\bin&#8221; to your PATH.</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Get Emacs 23.3</strong></span></p>
<ol>
<li>Download&nbsp;Emacs 23.3 <a href="http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.3-bin-i386.zip" target="_blank">from here</a>.</li>
<li>Right click the zip and &#8220;Unblock&#8221; it.</li>
<li>Extract it to a sensible location such as &#8220;C:\utility\emacs-23.3&#8243;. Again avoid spaces in the path to avoid unnecessary pain.</li>
<li>Add &#8220;C:\utility\emacs-23.3\bin&#8221; to your PATH.</li>
<li>Add an environment variable named &#8220;HOME&#8221; and give it the value of your&nbsp;home directory (for me this is &#8220;C:\Users\bryanhunter&#8221;)</li>
<li>Run Emacs. When it loads it should have a white background, a homely font, and the most hideous splash screen you&#8217;ve ever seen.</li>
<li>Close Emacs.</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Pull down my Emacs configuration files</strong></span>&nbsp;<em>[updated 8/27/2011]</em></p>
<ol>
<li>Visit my GitHub repository named&nbsp;<a href="https://github.com/bryanhunter/ErlangRigEmacsConfig" target="_blank">ErlangRigEmacsConfig</a></li>
<li>Read the readme file</li>
<li>Download the <a href="https://github.com/bryanhunter/ErlangRigEmacsConfig/zipball/master" target="_blank">zip of the repository</a>. This repository contains the &#8220;.el&#8221; (Emacs Lisp) files that turn plain old Emacs into something pretty nice for Erlang development.</li>
<li>Right click the zip and unblock it</li>
<li>Extract it into your home directory (for me this is &#8220;C:\Users\bryanhunter&#8221;). Note: this needs to match what you put in the HOME environment variable under the Emacs steps.</li>
<li>Edit your &#8220;~/.emacs&#8221; file to something like this:</li>
</ol>
<p><script type="text/javascript" src="https://gist.github.com/1172240.js?file=.emacs"></script><br />
If all went well, when you open Emacs it will show a nice black background screen. If you (or I) missed something, you will see the hideous&nbsp;default&nbsp;Emacs splash screen.</p>
<p><span style="text-decoration: underline;"><strong>Extra credit #1: Use a prettier font</strong></span></p>
<ol>
<li>Download the lovely &#8220;DejaVu&#8221; font family from <a href="http://sourceforge.net/projects/dejavu/files/dejavu/2.33/dejavu-fonts-ttf-2.33.zip" target="_blank">here</a>.</li>
<li>Unblock the zip and extract it somewhere.</li>
<li>Open up the &#8220;dejavu-fonts-ttf-2.33\ttf\&#8221; directory.</li>
<li>Select all the TTF files and drag them into your &#8220;C:\Windows\Fonts&#8221; directory.</li>
<li>Open the &#8220;my-config.el&#8221; file (it&#8217;s in your fancy new Emacs configuration directory).</li>
<li>Find the line that reads &#8220;:family &#8220;Consolas&#8221;" and replace &#8220;Consolas&#8221; with &#8220;DejaVu Sans&#8221;.</li>
</ol>
<div><span style="text-decoration: underline;"><strong>Extra credit #2: Start learning Emacs Lisp</strong></span></div>
<div>
<ol>
<li>Open the &#8220;my-config.el&#8221; file (it&#8217;s in your shiny new Emacs configuration directory).</li>
<li>Read it top-to-bottom.</li>
<li>Tinker, save your changes, reload Emacs.</li>
<li>Read the &#8220;Programming in Emacs Lisp&#8221; guide &nbsp;(<a href="http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/index.html" target="_blank">here</a>)&nbsp;to get smarter.</li>
<li>GOTO 3</li>
</ol>
</div>
<p><em>[Note: this post will be in flux until it is correct and complete. Please comment to help me get it there.]</em></p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2011/08/24/setting-up-an-erlang-rig-on-windows/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>devLink 2011 and &#8220;Erlang: an Intro for .NET Developers&#8221;</title>
		<link>http://codeswamp.com/2011/08/22/devlink-2011-and-erlang-an-intro-for-net-developers/</link>
		<comments>http://codeswamp.com/2011/08/22/devlink-2011-and-erlang-an-intro-for-net-developers/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 07:05:41 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[devLink]]></category>
		<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=349</guid>
		<description><![CDATA[A big, warm &#8220;thank you!&#8221; to those who attended my Erlang session at devLink. Your feedback and enthusiasm have made my geek-year. As promised, here are the slides&#8230; &#8230; and the code samples (on github) from my session. This year&#8217;s devLink got off to a great start with Ayende Rahien delivering the opening keynote. It was titled &#8220;NoSQL [...]]]></description>
			<content:encoded><![CDATA[<p>A big, warm &#8220;thank you!&#8221; to those who attended my Erlang session at <a href="http://devlink.net/" target="_blank">devLink</a>. Your feedback and enthusiasm have made my geek-year.</p>
<p>As promised, here are the slides&#8230;</p>
<div><object id="player1157487" width="501" height="416" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.authorstream.com/player.swf?r=0&amp;p=1157487_634495604915773880&amp;pt=0" /><param name="allowscriptaccess" value="always" /><embed id="player1157487" width="501" height="416" type="application/x-shockwave-flash" src="http://www.authorstream.com/player.swf?r=0&amp;p=1157487_634495604915773880&amp;pt=0" allowfullscreen="true" allowScriptAccess="always" allowscriptaccess="always" /></object></div>
<p>&#8230; and the <a href="https://github.com/bryanhunter/ErlangForDotNetDevsTalk" target="_blank">code samples (on github)</a> from my session.</p>
<p>This year&#8217;s devLink got off to a great start with <a href="http://ayende.com/blog" target="_blank">Ayende Rahien</a> delivering the opening keynote. It was titled &#8220;<em>NoSQL &#8211; A change of perspective for the developer of today</em>&#8220;. I heard a lot of <em>Aha!</em>-s from the audience as Ayende talked about the cost of hard disk space in the 80s when relational storage climbed to dominance. He described how ideas that are formed under one set of conditions can build momentum and barrel through the decades as unchallenged defaults even after the conditions that made them relevant have vanished. Spotting examples of this truth will provide me years of dark sport.</p>
<p>To my delight, <strong>Ayende mentioned &#8220;Erlang&#8221; 14 times during his keynote</strong>. In addition to hundreds of people simultaneously &#8220;<em>getting</em>&#8221; what non-relational stores are about, many in the crowd had just heard of &#8220;Erlang&#8221; for the first time. By the end of his keynote, it was clear that he&#8217;s an admirer of Erlang&#8217;s capabilities even if he thoroughly dislikes its syntax. One section of the keynote that was of particular interest to me was where he recommended that all of the conference attendees should<strong> &#8220;check out Bryan&#8217;s Erlang session&#8221;</strong>. Wow! This shocker was one part &#8220;<em>Too cool!</em>&#8220;, one part &#8220;<em>Oh, dear&#8230;!</em>&#8220; As a result of his nod: 1) I didn&#8217;t get much sleep, and 2) my talk was packed to the gills. I&#8217;m happy to report it went very well.</p>
<p>In addition to the keynote and my talk, I&#8217;m aware of several other sessions that touched on Erlang:</p>
<ul>
<li><a href="http://sharplearningcurve.com/blog/" target="_blank">Alex Robson</a>&#8216;s &#8220;Messaging Patterns with RabbitMQ&#8221;,</li>
<li><a href="http://ifandelse.com/" target="_blank">Jim Cowart</a>&#8216;s &#8220;Getting Started With Node.js&#8221;,</li>
<li><a href="https://github.com/meadoch1/RedisIntro" target="_blank">Chris Meadows</a>&#8216;s &#8220;Redis In-Depth&#8221;,</li>
<li><a href="http://digitalbush.com/" target="_blank">Josh Bush</a>&#8216;s &#8220;Getting Started with CouchDB and .NET&#8221;,</li>
<li><a href="http://blog.danielmohl.com/" target="_blank">Dan Mohl</a>&#8216;s &#8220;Getting Started With F# Web Development&#8221;,</li>
</ul>
<p>and in the open spaces, Erlang came up in the CQRS session, and in the <a href="http://corrugatediron.org/" target="_blank">Corrugated Iron</a> session led by <a href="http://www.brentozar.com/consultants/jeremiah-peschka/" target="_blank">Jerimiah Peschka</a> that I (kicking myself) missed.</p>
<p>There seems to have been some sort of dark-horse, tipping-point event for Erlang at devLink this year. Lots of illumination, lots of chatter, lots of installs. I&#8217;d like Erlang to become familiar in good .NET shops in the same way SQL and JavaScript are today. It&#8217;s a far off goal, but we moved a bit closer last week. <em>Godspeed!</em></p>
<p>If anyone knows of other devLink sessions where Erlang got play, please let me know. I&#8217;d like to list them above.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2011/08/22/devlink-2011-and-erlang-an-intro-for-net-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeStock 2011</title>
		<link>http://codeswamp.com/2011/06/08/codestock-2011/</link>
		<comments>http://codeswamp.com/2011/06/08/codestock-2011/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 16:03:02 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[Caliburn.Micro]]></category>
		<category><![CDATA[CodeStock]]></category>
		<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=295</guid>
		<description><![CDATA[My first CodeStock was big fun. Very healthy vibe, cool space, cool people, the nightly parties were crazy and Charles Petzold gave the best keynote I&#8217;ve ever seen. I was originally scheduled to only present &#8220;Intro to Caliburn.Micro&#8221;, but with the last minute Mono news and schedule changes Michael asked if I could also do [...]]]></description>
			<content:encoded><![CDATA[<p>My first CodeStock was big fun. Very healthy vibe, cool space, cool people, the nightly parties were <a href="http://codeswamp.com/wp-content/uploads/2011/06/mezcal.jpg" target="_blank">crazy</a> and Charles Petzold gave the best keynote I&#8217;ve ever seen. I was originally scheduled to only present &#8220;Intro to Caliburn.Micro&#8221;, but with the last minute <a href="http://tirania.org/blog/archive/2011/May-16.html" target="_blank">Mono news</a> and schedule changes <a href="http://www.vinull.com/" target="_blank">Michael</a> asked if I could also do an &#8220;Intro to Erlang (for C# Developers)&#8221;. <em>Heck yeah!</em> Here are my promise fulfillments (slides, links,&#8230;) from these two talks.</p>
<p><strong> &#8220;Intro to Caliburn.Micro&#8221;</strong> <em>Saturday, June 4, 9:50-11:00.</em></p>
<p style="text-align: left;"><img class="size-full wp-image-297" style="margin-top: 5px; margin-bottom: 5px; margin-left: 7px; margin-right: 7px; border: 2px solid black;" title="CM-Small-Slide4" src="http://codeswamp.com/wp-content/uploads/2011/06/CM-Small-Slide41.png" alt="" width="384" height="288" /></p>
<p>You can find the slides and code samples for this talk on <a href="https://github.com/bryanhunter/CaliburnMicroTalk">GitHub here</a>. The samples are built against (<em>and include</em>) the <a href="http://caliburnmicro.codeplex.com" target="_blank">Caliburn.Micro</a> <a title="1.1 RTW" href="http://caliburnmicro.codeplex.com/SourceControl/changeset/changes/5764a107cea0" target="_blank">1.1 RTW</a> build. Shawn Lacroix and I are planning a screencast series (five minutes each) that will capture all the juices and flavors of this talk. I&#8217;ll post here when we pull that off.</p>
<p><strong>&#8220;Intro to Erlang for C# Developers&#8221; </strong> <em>Saturday, June 4, 11:10-12:20</em></p>
<p style="text-align: center;"><a href="http://codeswamp.com/wp-content/uploads/2011/06/ErlangCodeStockDeck1.png"><img class="alignleft size-full wp-image-315" style="margin: 5px; border: 1px solid black;" title="ErlangCodeStockDeck" src="http://codeswamp.com/wp-content/uploads/2011/06/ErlangCodeStockDeck1.png" alt="" width="384" height="288" /></a></p>
<p style="text-align: left;">This was the first time I had given this talk, and it was a fun one. You might wonder why the president of the <a href="nashdotnet.org" target="_blank">Nashville .NET User Group</a> is going around evangelizing Erlang? I&#8217;ve got that question; so here&#8217;s the why&#8230;</p>
<p style="text-align: left;">I first learned of Erlang in 2007 while on a six-week consulting engagement in Oslo, Norway. In a sea of leaky C++, tower-of-babel class hierarchies and endless event storms there was one patch of calm: it was an Erlang system that had been running for years with no bugs and with <strong>no</strong> downtime. I was stunned. When I got back to Nashville I picked up Joe Armstong&#8217;s book (listed below) and have been digging in ever since.</p>
<p style="text-align: left;">Erlang is a beautiful (and fun) language, and its pattern matching is simply amazing. When asked on Twitter &#8220;Why Erlang?&#8221; here&#8217;s my answer: &#8220;Erlang is open source, cross-platform and proven. It simplifies writing safe, concurrent, distributed code.&#8221;</p>
<p style="text-align: left;">At a certain point it started to seem like a real shame that so few .NET developers were familiar with Erlang. <strong>A team of C# and Erlang developers is a force to be reckoned with because Erlang and .NET are complements. Each is lousy at what the other is exceptional at. Realizing this can save a company a lot of time, money and headaches.</strong></p>
<p style="text-align: left;">Well, how do you even get started? How does a .NET shop begin to evaluate Erlang? How do you interop .NET and Erlang code? That&#8217;s what I hope this talk helped with.</p>
<p style="text-align: left;"><img class="size-full wp-image-298 aligncenter" style="margin-top: 5px; margin-bottom: 5px; border: 2px solid black;" title="Codestock2011-ErlangTalk" src="http://codeswamp.com/wp-content/uploads/2011/06/Codestock2011-ErlangTalk.jpg" alt="Packed in at CodeStock" width="384" height="288" /></p>
<p style="text-align: left;">In the picture we&#8217;re discussing <span style="text-decoration: underline;"><a href="http://rvirding.blogspot.com/2008/01/virdings-first-rule-of-programming.html" target="_blank">Virding&#8217;s First Rule of Programming</a></span> which states:</p>
<blockquote>
<p style="text-align: center;"><em>&#8220;Any sufficiently complicated concurrent program in another language </em><em>contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.&#8221;</em></p>
</blockquote>
<p>This quote is one part &#8220;funny&#8221;, one part &#8220;flash of embarrassing truth&#8221; to anyone who has home-grown a distributed, concurrent system. Ahhh&#8230; the past is the past; to the future!</p>
<p>Here&#8217;s what I promised during the presentation:</p>
<p><a name="ErlangLinks"></a><strong>&#8220;Getting started with Erlang&#8221; links:</strong></p>
<ul>
<li><a href="http://www.erlang.org/download.html" target="_blank">Erlang</a> &#8211; Download the Windows binary and get rolling. If you run Ubuntu and want to try out Erlang there see this <a href="http://codeswamp.com/2011/05/25/installing-erlang-r14b03-on-ubuntu-11-04/" target="_blank">post</a>.</li>
<li>&#8220;<a href="http://learnyousomeerlang.com/" target="_blank">Learn you some Erlang for Great Good</a>&#8221; &#8211; an excellent online book.</li>
<li><a href="http://www.talkingshopdownunder.com/2011/05/episode-55-erlang-with-oj-reeves.html" target="_blank">Talking Shop Podcast (Erlang)</a> &#8211; An excellent 23-minute intro to Erlang podcast with OJ Reeves (<a href="http://twitter.com/thecolonial" target="_blank">@TheColonial</a>).</li>
<li><a href="http://erldocs.com/">http://erldocs.com/</a> &#8211; a better UI over the official Erlang docs.</li>
<li><a href="http://www.trapexit.org/">http://www.trapexit.org/</a> &#8211; an Erlang community wiki and forum.</li>
<li><a href="http://groups.google.com/group/erlang-programming">http://groups.google.com/group/erlang-programming</a> &#8211; The Erlang Google Group</li>
<li><a href="http://twitter.com/#!/bryan_hunter/erlang">http://twitter.com/#!/bryan_hunter/erlang</a> &#8211; A Twitter list of Erlang developers that I maintain. This list will give you a pretty good idea of what&#8217;s going on in the community at the moment.</li>
<li><a href="http://erlangcamp.com/">http://erlangcamp.com/</a>- A two day Erlang/OTP conference. I went to the first one in Chicago in August 2010 and it was career-shifting good. The next one is in Boston on Aug 12-13, 2011. ErlangCamp is run by the folks who wrote Manning Press Erlang book below.</li>
<li><a href="http://erlang-factory.com/">http://erlang-factory.com/</a>- The big Erlang conference. Can&#8217;t wait to go some day.</li>
<li><a href="http://pragprog.com/screencasts/v-kserl/erlang-in-practice">http://pragprog.com/screencasts/v-kserl/erlang-in-practice</a> Eight screencasts by the brilliant <a href="http://www.erlang-factory.com/conference/SFBay2011/speakers/KevinSmith" target="_blank">Kevin Smith</a>. Worth much more than $40.</li>
<li>And finally, links to the three books every Erlang developer must own. By placing all three into a prism configuration they unite to form single-use &#8220;Erlang Developer Membership Card&#8221; printer. Those guys think of everything.</li>
</ul>
<p><a href="http://www.amazon.com/gp/product/193435600X/ref=as_li_ss_il?ie=UTF8&amp;tag=codswa-20&amp;linkCode=as2&amp;camp=217153&amp;creative=399349&amp;creativeASIN=193435600X"><img style="border: 1px solid black;" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=193435600X&amp;MarketPlace=US&amp;ID=AsinImage&amp;WS=1&amp;tag=codswa-20&amp;ServiceVersion=20070822" alt="" width="92" height="110" border="0" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=193435600X&amp;camp=217153&amp;creative=399349" alt="" width="1" height="1" border="0" /> <a href="http://www.amazon.com/gp/product/0596518188/ref=as_li_ss_il?ie=UTF8&amp;tag=codswa-20&amp;linkCode=as2&amp;camp=217153&amp;creative=399349&amp;creativeASIN=0596518188"><img style="border: 1px solid black;" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=0596518188&amp;MarketPlace=US&amp;ID=AsinImage&amp;WS=1&amp;tag=codswa-20&amp;ServiceVersion=20070822" alt="" width="84" height="110" border="0" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0596518188&amp;camp=217153&amp;creative=399349" alt="" width="1" height="1" border="0" /> <a href="http://www.amazon.com/gp/product/1933988789/ref=as_li_ss_il?ie=UTF8&amp;tag=codswa-20&amp;linkCode=as2&amp;camp=217153&amp;creative=399349&amp;creativeASIN=1933988789"><img style="border: 1px solid black;" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=1933988789&amp;MarketPlace=US&amp;ID=AsinImage&amp;WS=1&amp;tag=codswa-20&amp;ServiceVersion=20070822" alt="" width="88" height="110" border="0" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=1933988789&amp;camp=217153&amp;creative=399349" alt="" width="1" height="1" border="0" /></p>
<p>If you were at either of my sessions, I&#8217;d love to hear your suggestions. Also, let me know if I forgot any promised links.</p>
<p>If you weren&#8217;t there, but it sounds interesting, I&#8217;ll be giving an updated version of &#8221;Intro to Erlang (for .NET Developers)&#8221; at <a href="http://devlink.net/Speakers.aspx" target="_blank">devLink </a>(August 17-19) and at drivable-from-Nashville .NET user groups (e.g. <a href="http://www.evansvillednug.com/Meetings/062811ErlangBryanHunter/tabid/156/Default.aspx" target="_blank">Evansville, IN</a>). I am trying to decide what mix of speaking engagements, blog posts and screencasts make the most sense.</p>
<p>Feedback welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2011/06/08/codestock-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Erlang R14B03 on Ubuntu 11.04</title>
		<link>http://codeswamp.com/2011/05/25/installing-erlang-r14b03-on-ubuntu-11-04/</link>
		<comments>http://codeswamp.com/2011/05/25/installing-erlang-r14b03-on-ubuntu-11-04/#comments</comments>
		<pubDate>Wed, 25 May 2011 20:08:01 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[DevRig]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=275</guid>
		<description><![CDATA[In January I said I would post instructions on installing the latest Erlang on the latest Ubuntu. Apparently organized people can write major updates to both operating systems and to languages faster than I can write a single paragraph in WordPress. Sigh... Ubuntu is now at 11.04 and Erlang is at R14B03 (just released today!). [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://codeswamp.com/2011/01/21/i-n00b/" target="_blank">January I said</a> I would post instructions on installing the latest Erlang on the latest Ubuntu. Apparently organized people can write major updates to both operating systems and to languages faster than I can write a single paragraph in WordPress. <span style="color: #808080;"><em>Sigh..</em>.</span> Ubuntu is now at 11.04 and Erlang is at R14B03 (just released today!).  To make up for being a slacker, here&#8217;s a script (<a href="https://gist.github.com/991706" target="_blank">a github gist</a>) to install Erlang 14B03 on a fresh install of Ubuntu 11.04:</p>
<p><script src="https://gist.github.com/991706.js"> </script></p>
<p>It&#8217;s not as pretty as &#8220;apt-get install erlang&#8221;, but unfortunately apt-get will give you R13B03 which was released way back in Nov 2009 (five releases ago). If you spot anything silly let me know. For what it&#8217;s worth <em>it works on my machine</em>&#8230; : )</p>
<pre class="prettyprint lang-sh">Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.8.4  (abort with ^G)
(node1@firefly)1&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2011/05/25/installing-erlang-r14b03-on-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I, n00b: At the border-crossing from C# to Erlang (on Ubuntu)</title>
		<link>http://codeswamp.com/2011/01/21/i-n00b/</link>
		<comments>http://codeswamp.com/2011/01/21/i-n00b/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 20:01:32 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[DevRig]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Polyglot]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=220</guid>
		<description><![CDATA[I&#8217;m a C# .NET developer. I have spent most of the past 18 years in Windows. I&#8217;ve played around with various Linux distros, but it&#8217;s really been hobby stuff. Another hobby over the past three years has been learning Erlang. Until recently I&#8217;ve used the Windows builds of Erlang and it&#8217;s been fun and easy. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a C# .NET developer. I have spent most of the past 18 years in Windows. I&#8217;ve played around with various <a href="http://distrowatch.com/">Linux distros</a>, but it&#8217;s really been hobby stuff. Another hobby over the past three years has been learning <a href="http://www.erlang.org/faq/introduction.html">Erlang</a>. Until recently I&#8217;ve used the <a href="http://www.erlang.org/download.html">Windows builds of Erlang</a> and it&#8217;s been fun and easy.</p>
<p>I&#8217;m now on a full-time Erlang project and have realized my Windows-centric approach to Erlang development is adding lots of friction to &#8220;going pro&#8221;. Erlang runs perfectly well on Windows, but most of the Erlang community develops on Linux (or Mac). As a result, the developer tool-chain is much more complete in Linux. As I learn I&#8217;m constantly translating to Windows what the experts are saying and doing in Linux, and occasionally I hit dead ends. It&#8217;s been a challenge, but not the fun, worthwhile kind. So now I&#8217;m learning how to be an all-day-in-it Erlang developer on Linux (Ubuntu 10.10). I&#8217;ve had many newbie questions and I&#8217;m attempting to document them.  I plan to post answers as I stumble across them (e.g.- I&#8217;m currently piecing together a post on &#8220;Upgrading Erlang to 14B01 on Ubuntu 10.10&#8243; ).</p>
<p>I have a professional goal of being able to fluidly shift between C#, Ruby, F# and Erlang on both Windows and Linux. Bigotry and partisanship aren&#8217;t pretty anywhere&#8211; not even in technology. I&#8217;m aiming to not have favorites or default answers, but instead to pick the best tool for the situation. It&#8217;s going to hurt a bit, but I think on the other side of this journey I&#8217;ll be a happier, smarter and more useful developer. And really what&#8217;s the alternative? Complacency? To acknowledge there are better ways to do what I&#8217;m doing, but that I&#8217;m too much of a &#8220;sorry ass&#8221; to get there? Please, heavens, no.</p>
<p>I&#8217;d be curious to hear from other folks who have made (or are embarking on) this journey.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2011/01/21/i-n00b/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&#8220;Caliburn.Micro Talk&#8221; project now on github</title>
		<link>http://codeswamp.com/2010/11/18/caliburn-micro-talk-project-now-on-github/</link>
		<comments>http://codeswamp.com/2010/11/18/caliburn-micro-talk-project-now-on-github/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 15:57:50 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Caliburn.Micro]]></category>
		<category><![CDATA[MVVM]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=229</guid>
		<description><![CDATA[Going forward you&#8217;ll be able to find the latest revision of my &#8220;Caliburn.Micro Talk&#8221; on github here. If you don&#8217;t use Git (yet) you can download a zip of the latest here. If you have trouble compiling, or if you see ways to improve the samples I&#8217;d really appreciate the feedback.]]></description>
			<content:encoded><![CDATA[<p>Going forward you&#8217;ll be able to find the latest revision of my &#8220;Caliburn.Micro Talk&#8221; on github <a href="https://github.com/bryanhunter/CaliburnMicroTalk" target="_blank">here</a>.  If you don&#8217;t use Git (yet) you can download a zip of the latest <a href="https://github.com/bryanhunter/CaliburnMicroTalk/zipball/master" target="_blank">here</a>. If you have trouble compiling, or if you see ways to improve the samples I&#8217;d really appreciate the feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2010/11/18/caliburn-micro-talk-project-now-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caliburn.Micro talk at Nash.NET</title>
		<link>http://codeswamp.com/2010/11/11/caliburn-micro-talk-at-nash-net/</link>
		<comments>http://codeswamp.com/2010/11/11/caliburn-micro-talk-at-nash-net/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 19:26:40 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Caliburn.Micro]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[MVVM]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=218</guid>
		<description><![CDATA[I had a great time introducing folks to Caliburn.Micro at the October 14 meeting of the Nashville .NET user group. You can download the code samples here. The zip contains code samples (slightly updated from devLink), slides and a Word Document that compiles all of the documentation from caliburnmicro.codeplex.com.]]></description>
			<content:encoded><![CDATA[<p>I had a great time introducing folks to Caliburn.Micro at the <a href="http://www.nashdotnet.org/Resources/GroupCalendar/tabid/79/ModuleID/412/ItemID/75/mctl/EventDetails/Default.aspx">October 14 meeting of the Nashville .NET user group</a>. You can <a href="http://codeswamp.com/wp-content/uploads/2010/11/CaliburnMicroTalk.NashDotNet.Oct2010.zip">download the code samples here</a>. The zip contains code samples (slightly updated from devLink), slides and a Word Document that compiles all of the documentation from caliburnmicro.codeplex.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2010/11/11/caliburn-micro-talk-at-nash-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caliburn.Micro talk at devLink</title>
		<link>http://codeswamp.com/2010/08/14/caliburn-micro-talk-at-devlink/</link>
		<comments>http://codeswamp.com/2010/08/14/caliburn-micro-talk-at-devlink/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 06:36:31 +0000</pubDate>
		<dc:creator>Bryan Hunter</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Caliburn.Micro]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[devLink]]></category>
		<category><![CDATA[MVVM]]></category>

		<guid isPermaLink="false">http://codeswamp.com/?p=182</guid>
		<description><![CDATA[I presented Caliburn.Micro at devLink on Thursday, August 5. You can download a zip of the code samples and slides here, or if you just want to preview the slides&#8230; Caliburn.Micro Not all presentations are fun to prepare, deliver or attend, but with this one I had a blast. Caliburn.Micro (CM) is a good topic. Folks can [...]]]></description>
			<content:encoded><![CDATA[<p>I presented <a href="http://caliburnmicro.codeplex.com/" target="_blank">Caliburn.Micro</a> at <a href="http://www.devlink.net/" target="_blank">devLink</a> on Thursday, August 5. You can <a href="http://codeswamp.com/wp-content/uploads/2010/08/Caliburn.Micro-devLink-talk.zip" target="_blank">download a zip of the code samples and slides here</a>, or if you just want to preview the slides&#8230;</p>
<div id="__ss_4972115" style="width: 425px;"><strong><a title="Caliburn.Micro" href="http://www.slideshare.net/bryanhunter/caliburnmicro">Caliburn.Micro</a></strong><object id="__sse4972115" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=caliburnmicro-100815001945-phpapp02&amp;stripped_title=caliburnmicro" /><param name="name" value="__sse4972115" /><param name="allowfullscreen" value="true" /><embed id="__sse4972115" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=caliburnmicro-100815001945-phpapp02&amp;stripped_title=caliburnmicro" name="__sse4972115" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>Not all presentations are fun to prepare, deliver or attend, but with this one I had a blast. Caliburn.Micro (CM) is a good topic. Folks can go from &#8220;zero&#8221; to &#8220;fumbling novice&#8221; after a one-hour session and within a couple of weeks of daily use they&#8217;re &#8220;old pros&#8221;. CM is powerful, small, and improves the air-quality in XAML shops (think code smells). At <a href="http://www.fireflylogic.com" target="_blank">Firefly Logic</a> we picked Caliburn.Micro as our company standard for XAML-based development just two weeks after it was released. Before you make a commitment like that it&#8217;s wise to have someone look over the entire code-base, and I did (each of the 2,000 lines). I didn&#8217;t spot a single skeleton, leather-gimp-hood, or toxic-waste-barrel in there. Three cheers to <a href="http://twitter.com/eisenbergeffect" target="_blank">Rob Eisenberg</a>!</p>
<p>So at the devLink session on Caliburn.Micro the room was packed (despite me being the speaker). Folks seemed excited about this new <a href="http://devlicio.us/blogs/rob_eisenberg/" target="_blank">funky fresh</a> addition to their toolbox. At the end of the talk a &#8220;by popular demand&#8221; follow-up session was added to the conference schedule, and in a surge of adrenaline I decided I would run it as an unstructured &#8220;dunking booth&#8221; talk— no agenda, the audience would just throw Caliburn questions, and I would try to answer them (without getting dunked). I like this format; lots of <a href="http://en.wikipedia.org/wiki/Tacit_knowledge" target="_blank">tacit knowledge</a> is transferred that simply can&#8217;t flow in a structured PowerPoint-driven talk. The format has some problems though: it is chaotic and it&#8217;s terribly easy for the speaker to look like a damn fool. Happy to report I only got dunked twice!</p>
<p>If you&#8217;ve been thinking about speaking at your local .NET Users Group, you should consider Caliburn.Micro as a topic. Feel free to harvest stuff from my slides and samples if you do. This week I&#8217;ll start a series of &#8220;Caliburn.Micro from the trenches&#8221; posts you may find handy as well. The first will be on CM&#8217;s coroutines— very useful, but tricky.  Compressing this into a five minute epiphany box is my goal. We&#8217;ll see.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeswamp.com/2010/08/14/caliburn-micro-talk-at-devlink/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  codeswamp.com/feed/ ) in 35.29862 seconds, on May 19th, 2012 at 9:00 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 19th, 2012 at 10:00 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  codeswamp.com/feed/ ) in 0.07966 seconds, on May 19th, 2012 at 9:41 am UTC. -->
