<?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>Ulf Wiger</title>
	<atom:link href="http://ulf.wiger.net/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ulf.wiger.net/weblog</link>
	<description>Feuerlabs Inc - @uwiger - ulf (at) feuerlabs.com</description>
	<lastBuildDate>Fri, 12 Nov 2010 05:21:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Bye U.S., on to Australia</title>
		<link>http://ulf.wiger.net/weblog/2010/11/12/bye-u-s-on-to-australia/</link>
		<comments>http://ulf.wiger.net/weblog/2010/11/12/bye-u-s-on-to-australia/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 05:21:26 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=192</guid>
		<description><![CDATA[Soon, I'm off again. This time to Australia and YOW 2010. I will give a talk on Erlang, and also give two one-day tutorials on Erlang OTP. ]]></description>
			<content:encoded><![CDATA[<p>Finishing up a whirlwind tour of the US West coast (QCon SF, Erlang Factory Lite LA, and a Cognitive Modeling workshop in Scottsdale), I am now waiting for a delayed BA flight at the Phoenix airport. Although I&#8217;ve spent as many days flying as I have on US soil, it&#8217;s been a great trip.</p>
<p><a href="http://www.yowconference.com.au/index.html"><img src="http://www.yowconference.com.au/site/menu/m_banner.gif" alt="YOW 2010 Australia" / width="400"/></a></p>
<p>Still, I can&#8217;t wait to get home and spend some time with the family. Soon, I&#8217;m off again. This time to Australia and <a href="http://www.yowconference.com.au/">YOW 2010</a>. I will give a talk on Erlang, and also give two one-day tutorials on <a href="http://www.yowconference.com.au/melbourne/events_tracks/event_details.html?eventId=2625">Erlang</a> and <a href="http://www.yowconference.com.au/melbourne/events_tracks/event_details.html?eventId=2626">OTP</a>. I hope to see many new faces there. Come loaded with your trickiest questions, and I will do my best to answer them.</p>
<p>Gearing up for the experience Down Under, I joined my brothers in forming a <a href="http://au.movemberfoundation.com/about-us/">Movember</a> team. Movember is a great Australian initiative to raise funds funds and awareness for men’s health, specifically prostate cancer and depression in men. All you have to do is to grow a mustache during the month of November, and invite friends to make a <a href="http://au.movember.com/mospace/1211354/">donation</a> (clicking that link, you can also judge how my mo is coming along). </p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2010/11/12/bye-u-s-on-to-australia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Erlang.org traffic no longer exponential</title>
		<link>http://ulf.wiger.net/weblog/2010/04/05/erlang-org-traffic-no-longer-exponential/</link>
		<comments>http://ulf.wiger.net/weblog/2010/04/05/erlang-org-traffic-no-longer-exponential/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 11:00:07 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[erlang statistics]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=184</guid>
		<description><![CDATA[For years, the erlang.org graph has been nicely exponential. This latest peak seems to break the pattern. It will be interesting to see what follows.]]></description>
			<content:encoded><![CDATA[<p>Bjarne Däcker, who has been tracking download and web site statistics on erlang.org for years, just produced a new graphic.</p>
<div id="attachment_185" class="wp-caption alignnone" style="width: 310px"><a href="http://ulf.wiger.net/weblog/wp-content/uploads/2010/04/erlang-org-traffic-jan10.gif"><img src="http://ulf.wiger.net/weblog/wp-content/uploads/2010/04/erlang-org-traffic-jan10-300x225.gif" alt="Visits to http://www.erlang.org up to March 2010" title="erlang-org-traffic-jan10" width="300" height="225" class="size-medium wp-image-185" /></a><p class="wp-caption-text">Visits to http://www.erlang.org up to March 2010</p></div>
<p>For years, the erlang.org graph has been nicely exponential. This latest peak seems to break the pattern. It will be interesting to see what follows.</p>
<p>(Update: Looking closer at the graph, it appears to stretch as far as to March 2010. I changed the caption, but left the URL unchanged.)</p>
<p>(Update 2: Closer inspection suggests that this is indeed measurement error. Google analytics, which also takes mirrors into account, reports a steady, but decidedly less dramatic, rise. The number of visitors to <a href="http://www.erlang.org">erlang.org</a> is now at ca 80,000/month, up from ca 57,000/month in September 2008.)</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2010/04/05/erlang-org-traffic-no-longer-exponential/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>QCon 2010 Concurrency Track</title>
		<link>http://ulf.wiger.net/weblog/2010/01/06/qcon-2010-concurrency-track/</link>
		<comments>http://ulf.wiger.net/weblog/2010/01/06/qcon-2010-concurrency-track/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 16:01:40 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[qcon]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=180</guid>
		<description><![CDATA[I will be hosting the &#8220;Concurrency Challenge&#8221; track at QCon 2010. The speakers list is now ready with all titles and abstracts in place. I am quite pleased with the mix and the dignity of the speakers. One of the things we wanted to highlight is that there is no one-size-fits-all concurrency model, and it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I will be hosting the <a href="http://qconlondon.com/london-2010/tracks/show_track.jsp?trackOID=333">&#8220;Concurrency Challenge&#8221;</a> track at QCon 2010. The speakers list is now ready with all titles and abstracts in place.</p>
<p><a href="http://qconlondon.com/london-2010/"><img src="http://qcon.infoq.com/images/logo_qcon.gif" alt="QCon 2010 London" /></a></p>
<p>I am quite pleased with the mix and the dignity of the speakers. One of the things we wanted to highlight is that there is no one-size-fits-all concurrency model, and it&#8217;s time for us to start being a little bit more specific about what kind of concurrency we have in mind. </p>
<p>Each setting brings its own set of challenges, and in this track, you can expect to get a good orientation from some brilliant people, who know how to tell a story and are not afraid of offering their opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2010/01/06/qcon-2010-concurrency-track/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Øredev 2009</title>
		<link>http://ulf.wiger.net/weblog/2009/11/07/%c3%b8redev-2009/</link>
		<comments>http://ulf.wiger.net/weblog/2009/11/07/%c3%b8redev-2009/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 14:43:11 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=176</guid>
		<description><![CDATA[I made a quick stop at Øredev in Malmö on Friday Nov 6. It seemed like it would have been a fun place to spend the week, but alas I was too busy to do more than just come in, give my talk, and go home again (getting up 4am London time to make it [...]]]></description>
			<content:encoded><![CDATA[<p>I made a quick stop at <a href="http://www.oredev.org/">Øredev in Malmö</a> on Friday Nov 6.<br />
It seemed like it would have been a fun place to spend the week, but alas I was too busy to do more than just come in, give my talk, and go home again (getting up 4am London time to make it in time&#8230;) I did manage to catch Stuart Halloway&#8217;s talk on Clojure and had some good discussions.</p>
<p>Here is a <a href="http://ulf.wiger.net/weblog/wp-content/uploads/2009/11/MsgPassingConcurrencyOredev.pdf">copy of my slides</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/11/07/%c3%b8redev-2009/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Erlang User Conference 2009 &#8211; In the Wild</title>
		<link>http://ulf.wiger.net/weblog/2009/10/12/erlang-user-conference-2009-in-the-wild/</link>
		<comments>http://ulf.wiger.net/weblog/2009/10/12/erlang-user-conference-2009-in-the-wild/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 15:03:46 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[euc]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=168</guid>
		<description><![CDATA[About a month to go now to the 15th Erlang User Conference in Stockholm. For the first time ever, the conference is arranged by someone other than Ericsson, namely Erlang Training and Consulting Ltd. In fact, it is also the first time since 1998 that the conference is held outside Ericsson premises. Then, it was [...]]]></description>
			<content:encoded><![CDATA[<p>About a month to go now to the <a href="http://www.erlang-factory.com/conference/ErlangUserConference2009">15th Erlang User Conference in Stockholm</a>.<br />
For the first time ever, the conference is arranged by someone other than Ericsson, namely <a href="http://www.erlang-consulting.com">Erlang Training and Consulting Ltd</a>. In fact, it is also the first time since 1998 that the conference is held outside Ericsson premises. Then, it was held at <a href="http://www.vandernootska.se/index3.html">Van der Nootska Palatset</a> for reasons I no longer recall (I guess we wanted to spice it up a little). </p>
<p>This year, it will be at the <a href="http://www.bokalokal.se/astoria_festlokal.htm">Astoria</a> in the center of Stockholm. The reason this time is clear: the EUC has outgrown the largest lecture halls at Ericsson. With a month to go, we have more than 200 registered participants, and we are now investigating what the maximum capacity of the Astoria is, to see how many more we can squeeze in.</p>
<p><a href="http://www.erlang-factory.com/conference/ErlangUserConference2009"> <img src="http://www.erlang-factory.com/images/euc-stk-09-speak.gif" alt="" border="0"/></a></p>
<p>Another difference this year is that the speaker roster filled up in no time! We now have 14 talks, which is a busy program for a one-day conference! You have every chance to make EUC week an intense learning experience, with <a href="http://www.erlang-factory.com/conference/ErlangUserConference2009/university">courses on Nov 9-11</a>, the EUC on the 12th and on the 13th either a hackathon hosted by <a href="http://www.klarna.se/">Klarna</a> or <a href="http://www.erlang-factory.com/conference/testingtutorialworkshop">ProTest tutorials</a> in Älvsjö south of Stockholm. Add to this the chance to meet people like Tom Preston-Werner, founder of Github, <a href="http://www.erlang-factory.com/conference/ErlangUserConference2009/speakers/RustyKlophaus">Rusty Klophaus</a>, father of <a href="http://www.nitrogenproject.com/">Nitrogen</a>, and the members of the Erlang/OTP development team.</p>
<p>There is still time to <a href="https://www.erlang-factory.com/conference/ErlangUserConference2009/register">register</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/10/12/erlang-user-conference-2009-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concurrency Track at JAOO 2009</title>
		<link>http://ulf.wiger.net/weblog/2009/10/07/concurrency-track-at-jaoo-2009/</link>
		<comments>http://ulf.wiger.net/weblog/2009/10/07/concurrency-track-at-jaoo-2009/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 17:43:36 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=161</guid>
		<description><![CDATA[I had the pleasure of being invited to sit on the Expert Panel in the Concurrency Challenge Track at JAOO 2009 in Aarhus. JAOO is an impressive event, and the venue was very pleasant. Unfortunately, I didn&#8217;t have time to experience the surroundings or indeed the conference, except for the Concurrency track. I did catch [...]]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure of being invited to sit on the Expert Panel in the <a href="http://jaoo.dk/aarhus-2009/tracks/show_track.jsp?trackOID=284">Concurrency Challenge Track</a> at <a href="http://jaoo.dk/aarhus-2009/">JAOO 2009 in Aarhus</a>. JAOO is an impressive event, and the venue was very pleasant. Unfortunately, I didn&#8217;t have time to experience the surroundings or indeed the conference, except for the Concurrency track.</p>
<p>I did catch Simon <a href="http://jaoo.dk/aarhus-2009/speaker/Simon+Peyton-Jones">Peyton Jones&#8217; keynote speech</a> in the morning. Simon is always entertaining, and as part of my background project to learn Haskell through osmosis, I wouldn&#8217;t miss a talk on Haskell type classes. </p>
<p>A large music auditorium is not the best for technical talks, though. I have had the experience of singing on such a stage, in which case the blinding spotlights can even have a focussing and reassuring effect. But for a technical talk, you really want to see the audience and sense whether they understand you. When singing you can&#8217;t well stop and ask &#8216;are you with me so far?&#8217;, so it&#8217;s better to just press on and do your thing &#8211; not always the right strategy for a tech talk. Simon, being a master of the podium, simply walked to the edge of the stage, shaded his eyes and asked the audience to wave as evidence that they understood. You don&#8217;t just learn Haskell when he is talking.</p>
<p>The Concurrency track was well stacked, with <a href="http://jaoo.dk/aarhus-2009/speaker/Brian+Goetz">Brian Goetz</a>, <a href="http://jaoo.dk/aarhus-2009/speaker/Kresten+Krab+Thorup">Kresten Krab Thorup</a>, <a href="http://jaoo.dk/aarhus-2009/speaker/Dave+Thomas">Dave Thomas</a>, <a href="http://jaoo.dk/aarhus-2009/speaker/Rich+Hickey">Rich Hickey</a> and Simon P-J as speakers, and me joining them on the panel.</p>
<p>Brian Goetz gave the obligatory &#8220;Free lunch is over&#8221; talk, explaining the reasons behind the current multicore trend. I&#8217;ll admit that I haven&#8217;t been to that many commercial conferences, but my former employer Ericsson had both the foresight and resources to arrange many seminars over the years, inviting leading experts from Sun, Intel, SICS et al, to ensure that every software developer in the company got the message loud and clear. I assume that many have been exposed to similar indoctrination. But it is necessary, and most of all interesting &#8211; at least to all who thrive on challenge and new opportunities. Brian kept a good pace, making sure to repeat the key points regularly to make sure they sunk in.</p>
<p>Kresten and Dave played tag and gave an overview of actor-style modeling. Kresten managed to demo how awkward (albeit doable) it is to work with actors without appropriate syntax, and how nicely it could be formulated with the right syntax. An important point, I think, as I firmly believe that we tend to be much more affected by the mental cues built into the language syntax than we perhaps realise. I overheard parts of a discussion at breakfast about whether languages should &#8220;lecture us&#8221; on the best way to write software, or whether it should simply get out of our way as much as possible. I personally prefer opinionated languages, and my experience with use of Erlang (a very opinionated language) in large commercial projects has reinforced that view.</p>
<p>Dave accounted for some of his experiences with modeling concurrency with actors, drawing on human analogies. I grew fond of this style of modeling while working with Command &#038; Control systems in Alaska. It&#8217;s tempting when trying to automate something to become a bit too theoretical and conceive strategies that look nothing like what humans would choose if solving the problem manually. My mentor back then, Col John (Shep) Shepherd, was a retired Air Force Colonel, former fighter pilot and AWACS Commander. He had no training on computers, but knew exactly what he wanted from a Command and Control system. And, like most who have not only trained for, but also seen combat, he had a fairly dramatic view on the consequences of failing to meet the requirements. Simple and intuitive strategies were favoured over the esotheric, and the results were nothing less than astounding.</p>
<p>Dave also mentioned a background in Command and Control, but we didn&#8217;t have time to compare notes in this regard. Some other time, maybe&#8230;</p>
<p>I will not say much about the panel, but the main criticism seems to have been that we did not disagree enough. Perhaps a few die-hard C++ and threading experts would have spiced it up a little? As it was, all members of the panel were advocates of functional programming and immutable data.</p>
<p>The afternoon session continued with Rich Hickey talking about Clojure&#8217;s strategy for handling values that change over time. A very well thought-out lecture with some very important lessons. Talking to some members of the Clojure Users&#8217; Group in Denmark, it appears as if Rich&#8217;s approach works very nicely in practice too.</p>
<p>Simon Peyton-Jones ended the track with a talk on nested data parallelism in Haskell &#8211; one of his favourite research projects. A great talk. In the words of <a href="http://twitter.com/olabini">Ola Bini</a>: &#8220;Neat, geeky stuff.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/10/07/concurrency-track-at-jaoo-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erlang Factory drawing near</title>
		<link>http://ulf.wiger.net/weblog/2009/05/29/erlang-factory-drawing-near/</link>
		<comments>http://ulf.wiger.net/weblog/2009/05/29/erlang-factory-drawing-near/#comments</comments>
		<pubDate>Fri, 29 May 2009 13:17:53 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=144</guid>
		<description><![CDATA[Those of you who couldn't come to Palo Alto, please sign up for the Factory in London. It is going to be a great conference.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had time to digest the impressions from the <a href="http://www.erlang-factory.com/conference/SFBayAreaErlangFactory2009">Bay Area Erlang Factory</a>, and now it is time for the <a href="http://www.erlang-factory.com/conference/London2009">London version</a>.</p>
<p>University: June 22nd &#8211; June 24th<br />
Conference: June 25th &#8211; June 26th</p>
<p>It was quite a thrill to sense the energy of the Erlang community in the U.S. When Americans grab hold of something, they don&#8217;t do it by half. Being part of the &#8220;old guard&#8221;, as someone put it, I find it extremely refreshing that people pick up Erlang simply because they think it&#8217;s a great tool, supported by a great community. I&#8217;m certain we&#8217;re only seeing the beginning of what looks to be a fun ride.</p>
<p><img src="http://www.erlang-factory.com/upload/conferenceimage/London2009/Westminsterbridge-small.jpg" alt="Erlang Factory London" /></p>
<p>Those of you who couldn&#8217;t come to Palo Alto, please sign up for the Factory in London. It is going to be a great conference.</p>
<p>Kenneth Lundin, head of the Erlang/OTP team, will be there &#8211; a rare chance to get the information straight from the source, and to offer feedback in return.</p>
<p>I am also eager to listen to keynote speaker <a href="http://www.erlang-factory.com/conference/London2009/speakers/SimonPeytonJones">Simon Peyton-Jones</a>, talking about the two childhood friends, Haskell and Erlang. Simon is a <a href="http://ulf.wiger.net/weblog/2008/02/29/peyton-jones-taming-effects-the-next-big-challenge/">great speaker</a>, and one of the great thought leaders of the functional programming community.</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/05/29/erlang-factory-drawing-near/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QCon London &#8211; Good Fun</title>
		<link>http://ulf.wiger.net/weblog/2009/03/20/qcon-london-good-fun/</link>
		<comments>http://ulf.wiger.net/weblog/2009/03/20/qcon-london-good-fun/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 09:00:43 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[erlang factory]]></category>
		<category><![CDATA[qcon]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=125</guid>
		<description><![CDATA[I had great fun at <a href="http://qconlondon.com/london-2009/">QCon</a>.]]></description>
			<content:encoded><![CDATA[<p>I had great fun at <a href="http://qconlondon.com/london-2009/">QCon</a>. This was one of my first &#8220;commercial&#8221; conferences &#8211; I&#8217;ve mainly frequented research conferences like ICFP and POPL before, partly because Erlang has enjoyed little commercial interest in the past. </p>
<p>I enjoyed <a href="http://steve.vinoski.net/blog/2009/03/18/qcon-london-the-best-one-yet/">Steve Vinosky&#8217;s account</a> of the conference, as well as <a href="http://olabini.com/blog/2009/03/qcon-london-friday/">Ola Bini&#8217;s</a>. I also enjoyed <a href="http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/SteveVinoski_RPCAndItsOffspringConvenientYetFundamentallyFlawed.pdf">Steve&#8217;s talk on RPC</a>, and <a href="http://qconlondon.com/london-2009/speaker/Paul+Downey">Paul Downey&#8217;s</a> on <a href="http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/PaulDowney_StandardsAreGreatButStandardisationIsAReallyBadIdea.pdf">standardization</a> in the Historically Bad Ideas track. And of course, listening to Sir Charles Anthony Hoare was a great treat. I&#8217;m a long-time fan of Hoare&#8217;s and warmly recommend his Turing Award Speech, <a href="http://www.cs.ucsb.edu/~ravenben/papers/coreos/Hoa81.pdf">&#8220;The Emperor&#8217;s Old Clothes&#8221;</a>. There are some great lessons in there.</p>
<p>On Thursday, I stuck with the <a href="http://qconlondon.com/london-2009/tracks/show_track.jsp?trackOID=225">&#8220;Functional and Concurrent Programming Languages Applied&#8221;</a> track, hosted by my friend and colleague <a href="http://qconlondon.com/london-2009/speaker/Francesco+Cesarini">Francesco Cesarini</a>. When speaking in a track, I want to have heard the talks before mine, and also want to stay to hear the remaining talks.</p>
<p>This time, I was preceded by <a href="http://qconlondon.com/london-2009/speaker/Rich+Hickey">Rich Hickey&#8217;s</a> talk on <a href="http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/RichHickey_PersistentDataStructuresAndManagedReferences.pdf">Persistent Data Structures and Managed References</a> in Clojure. I was greatly intrigued by this talk and made a note to take a closer look at Clojure. Interestingly, Rich stressed that Clojure Agents are not actors a la Scala or Erlang. Part of my talk was to illustrate how Erlang processes are not <a href="http://en.wikipedia.org/wiki/Fiber_(computer_science)">&#8220;fibers&#8221;</a>, and trying to use them for data-parallel algorithms can be problematic. Nice setup.</p>
<p>Friday ended with a few quick beers with Rich, Steve, Paul and <a href="http://qconlondon.com/london-2009/speaker/Joe+Armstrong">Joe Armstrong</a>, and then dinner at Francesco and Alison&#8217;s with Joe and Steve. Francesco is a great cook!</p>
<p>(Didn&#8217;t notice that Paul was taking <a href="http://www.flickr.com/photos/psd/sets/72157615233045568/">pictures</a> though. Judging by the angles, he was shooting from the hip&#8230;)</p>
<p><a href="http://www.erlang-factory.com/conference/SFBayAreaErlangFactory2009"><img src="http://ulf.wiger.net/weblog/wp-content/uploads/2009/03/bay-speak.gif" alt="I'm speaking at the Erlang Factory" /></a></p>
<p>I&#8217;ll give the same talk at <a href="http://www.erlang-factory.com/conference/SFBayAreaErlangFactory2009">SF Bay Area Erlang Factory, April 27-29</a>. I&#8217;m really looking forward to this conference. It should be the greatest Erlang conference yet, and I hope to see you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/03/20/qcon-london-good-fun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sourdough on the rise</title>
		<link>http://ulf.wiger.net/weblog/2009/03/15/sourdough-on-the-rise/</link>
		<comments>http://ulf.wiger.net/weblog/2009/03/15/sourdough-on-the-rise/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 10:49:09 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[erlang functional programming]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=117</guid>
		<description><![CDATA[Just having returned home from QCon in London, where there were some great talks about, and significant interest in, functional programming, I'm reminded of my own keynote from the <a href="http://www.erlang.se/workshop/2005/">ACM SIGPLAN Erlang Workshop in Tallinn 2005</a>. It was called "Sourdough and Erlang", and as much as I would like to flatter myself by calling it "prophetic", I'm sure it would just tempt others who were there to propose some other, more fitting descriptions.]]></description>
			<content:encoded><![CDATA[<p>A major Swedish newspaper had a <a href="http://www.e24.se/branscher/konsumentvaror/artikel_1172643.e24">feature about sourdough</a> today. Apparently, it&#8217;s becoming quite popular, with more and more small bakeries selling exclusive sourdough bread and giving courses on how to make your own sourdough.</p>
<p>Just having returned home from <a href="http://qconlondon.com/">QCon in London</a>, where there were some great talks about, and significant interest in, functional programming, I&#8217;m reminded of my own keynote from the <a href="http://www.erlang.se/workshop/2005/">ACM SIGPLAN Erlang Workshop in Tallinn 2005</a>. It was called &#8220;Sourdough and Erlang&#8221;, and as much as I would like to flatter myself by calling it &#8220;prophetic&#8221;, I&#8217;m sure it would just tempt others who were there to propose some other, more fitting descriptions. I feel this is as good a time as any to finally release <a href="http://ulf.wiger.net/weblog/wp-content/uploads/2009/03/sourdough-and-erlang.pdf">the slides</a>. Perhaps it&#8217;s at least good for a few laughs. I still think that &#8220;stalking the wild yeast&#8221; is an outstanding metaphore for creative software development, though&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/03/15/sourdough-on-the-rise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Micro-fiddling with erlhive</title>
		<link>http://ulf.wiger.net/weblog/2009/03/10/micro-fiddling-with-erlhive/</link>
		<comments>http://ulf.wiger.net/weblog/2009/03/10/micro-fiddling-with-erlhive/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 09:36:08 +0000</pubDate>
		<dc:creator>Ulf Wiger</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[erlang erlhive]]></category>

		<guid isPermaLink="false">http://ulf.wiger.net/weblog/?p=105</guid>
		<description><![CDATA[Clocking this with timer:tc() in coLinux/Vista on my 2.17GHz dual-core Pentium laptop (not using SMP erlang, though), I achieve 1450 article fetches/second. That's a lot better than I had expected. Erlhive, apparently, is not so slow after all.]]></description>
			<content:encoded><![CDATA[<p>Every once in a while, my thoughts touch upon <a href="http://erlhive.sourceforge.net">erlhive</a>. While it may seem that the project isn&#8217;t going anywhere, I&#8217;m still pretty comfortable with it. It&#8217;s not as if I started it for the money, anyway, and the problems it addresses are real and interesting.</p>
<p>Someone mentioned to me that erlhive had been dismissed in a discussion with the argument the benefits are not worth a throughput of 50 pages per second.</p>
<p>I&#8217;m not sure where the 50 pages per second comes from, and in honesty, I&#8217;ve cared so little about performance that I haven&#8217;t benchmarked it myself. So, just to satisfy my curiosity, I ran a little speed test&#8230;</p>
<p>I chose to benchmark only the blog back-end, partly because erlhive (oddly enough for a &#8220;web framework&#8221;) doesn&#8217;t really have any web front-end yet. However, the back-end does have a functional API, and the front-end part can be made arbitrarily fast or slow, depending on context anyway.</p>
<p>Here is my little benchmark program:</p>
<blockquote><p><code><span style="color: #000080;">fetch</span>(<span style="color: #993300;">N</span>) when <span style="color: #993300;">N</span> &gt; 0 -&gt;<br />
&nbsp;&nbsp;erlhive:with_user(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;<span style="color: #808000;">"user1"</span>&gt;&gt;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800080;">fun</span>(<span style="color: #993300;">M</span>) -&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #993300;">Id</span> = <span style="color: #993300;">M</span>:apply(erlhive.blog.flexiblog,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string_to_id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<span style="color: #808000;">"ba/user1/1/1"</span>]),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[_|_] = <span style="color: #993300;">M</span>:apply(erlhive.blog.flexiblog,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read_article, [<span style="color: #993300;">Id</span>])<br />
&nbsp;&nbsp;&nbsp;&nbsp;end),<br />
&nbsp;&nbsp;fetch(<span style="color: #993300;">N</span>-1);<br />
<span style="color: #000080;">fetch</span>(_) -&gt;<br />
&nbsp;&nbsp;done.</code></p></blockquote>
<p>Clocking this with timer:tc() in coLinux/Vista on my 2.17GHz dual-core Pentium laptop (not using SMP erlang, though), I achieve 1450 article fetches/second. That&#8217;s a lot better than I had expected. Erlhive, apparently, is not so slow after all.</p>
<p>To explain what the above does, I assume that the surrounding web framework has authenticated the user (<span style="color: #000080;">&lt;&lt;&#8221;user1&#8243;&gt;&gt;</span> in this case), and that there exists an article 1 in blog 1 of the user. All objects in erlhive can be given user-defined properties, so coming up with more creative names is perfectly possible. However, the blog example uses the following naming convention:</p>
<ul>
<li><span style="color: #000080;">[blogs,User,N]</span> to identify a blog</li>
<li><span style="color: #000080;">[ba,User,BlogN,ArticleN]</span> to identify an article</li>
<li><span style="color: #000080;">[bc,User,Blog,ArticleN,CommentN]</span> to identify a comment</li>
</ul>
<p>The call, <span style="color: #000080;">erlhive:with_user(User, Fun)</span> starts a database transaction, verifies that <span style="color: #000080;">User</span> is a known erlhive user, and creates an &#8220;access record&#8221; in the form of a parameterized module <span style="color: #000080;">M</span>. The user-provided fun is called with <span style="color: #000080;">Fun(M)</span>, and through the module M, the whole erlhive API is available. Any function called through <span style="color: #000080;">M</span> (e.g. using <span style="color: #000080;">M:apply(Mod,Func,Args)</span>) is subject to erlhive&#8217;s access control. Of course, anything else in <span style="color: #000080;">Fun/1</span> is still ordinary Erlang, and can be as &#8220;dirty&#8221; as you like. <span style="color: #000080;">M</span> is the entry point to erlhive, and <span style="color: #000080;">erlhive:with_user/2</span> creates the transaction context.</p>
<p>The first call, to <span style="color: #000080;">erlhive.blog.flexiblog:string_to_id(&#8220;ba/user1/1/1&#8243;)</span>, simply translates a web-friendly identifier to the internal form, <span style="color: #000080;">[ba,&lt;&lt;"user1"&gt;&gt;,1,1]</span>. The second call, to <span style="color: #000080;">erlhive.blog.flexiblog:read_article(Id)</span>, performs the following steps:</p>
<ul>
<li>Checks that the blog, <span style="color: #000080;">[blogs,&lt;&lt;"user1"&gt;&gt;,1]</span> exists and that the current user (<span style="color: #000080;">&lt;&lt;&#8221;user1&#8243;&gt;&gt;</span> in this case) has read access to it.</li>
<li>Reads the properties of the article, and verifies that the current user is authorized to perform the requested operation.</li>
<li>Returns the property list associated with the article. The actual article content is also a property, tagged <span style="color: #000080;">&#8216;content&#8217;</span>.</li>
</ul>
<p>The blog example is reasonably clever for a blog module. It allows users to be categorized as &#8216;admin&#8217;, &#8216;author&#8217;, &#8216;reviewer&#8217; and &#8216;reader&#8217;. A reviewer can read and comment on an article before it has been published. You can list blogs and articles by property &#8211; all properties are automatically indexed, and you can also clone an article, as a form of revision handling. It is also possible to view previous/next in a revision succession.</p>
<p>All this in less than <a title="flexiblog.erl" href="http://erlhive.svn.sourceforge.net/viewvc/erlhive/trunk/lib/erlhive/examples/blog/src/flexiblog.erl?revision=69&amp;view=markup">1000 lines of code</a>. I do feel pretty comfortable with that.</p>
<p>There is also a <a title="test_commands.txt" href="http://erlhive.svn.sourceforge.net/viewvc/erlhive/trunk/lib/erlhive/examples/blog/src/test_commands.txt?revision=69&amp;view=markup">short text file</a> that illustrates the blog interface through the interactive erlhive shell. Not exactly stellar documentation, but if I get some indication that there are potential users out there, I promise that it will improve.</p>
<p>BTW, in the course of this experiment, I noticed that the interactive shell was broken, and that the <span style="color: #000080;">read_article/1</span> function actually didn&#8217;t exist. Bug fixes have been committed to the repository. I never did promise that it was production-quality, did I?</p>
]]></content:encoded>
			<wfw:commentRss>http://ulf.wiger.net/weblog/2009/03/10/micro-fiddling-with-erlhive/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
